ui updates

This commit is contained in:
Andras Bacsai 2023-06-07 21:44:16 +02:00
parent 5abe308a97
commit 774b8d987b
29 changed files with 505 additions and 392 deletions

View File

@ -27,7 +27,7 @@ input[type="text"],
[type="number"], [type="number"],
[type="email"], [type="email"],
[type="password"] { [type="password"] {
@apply read-only:opacity-40; @apply read-only:bg-coolgray-200/50 read-only:text-opacity-25;
} }
.label-text, .label-text,
label { label {
@ -40,9 +40,6 @@ textarea {
select { select {
@apply select select-sm text-sm disabled:bg-coolgray-200 border-none disabled:opacity-50 font-normal placeholder:text-neutral-700 text-white rounded-none; @apply select select-sm text-sm disabled:bg-coolgray-200 border-none disabled:opacity-50 font-normal placeholder:text-neutral-700 text-white rounded-none;
} }
.breadcrumbs > ul > li::before {
@apply text-warning opacity-100;
}
.loading { .loading {
@apply w-4 text-warning; @apply w-4 text-warning;
} }

View File

@ -1,6 +1,6 @@
<template> <template>
<Transition name="fade"> <Transition name="fade">
<div class="z-10"> <div>
<div class="flex items-center p-1 px-2 overflow-hidden transition-all transform rounded cursor-pointer bg-coolgray-200" <div class="flex items-center p-1 px-2 overflow-hidden transition-all transform rounded cursor-pointer bg-coolgray-200"
@click="showCommandPalette = true"> @click="showCommandPalette = true">
<svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 icon" viewBox="0 0 24 24" stroke-width="2" <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 icon" viewBox="0 0 24 24" stroke-width="2"
@ -12,9 +12,9 @@
<span class="ml-2 kbd-custom">/</span> <span class="ml-2 kbd-custom">/</span>
</div> </div>
<div class="relative" role="dialog" aria-modal="true" v-if="showCommandPalette" @keyup.esc="resetState"> <div class="relative" role="dialog" aria-modal="true" v-if="showCommandPalette" @keyup.esc="resetState">
<div class="fixed inset-0 transition-opacity bg-opacity-75 bg-coolgray-100" @click.self="resetState"> <div class="fixed inset-0 transition-opacity bg-opacity-90 bg-coolgray-100" @click.self="resetState">
</div> </div>
<div class="fixed inset-0 w-3/5 p-4 mx-auto overflow-y-auto sm:p-6 md:px-20 min-w-fit" <div class="fixed inset-0 p-4 mx-auto overflow-y-auto md:w-[70rem] sm:p-10 md:px-20"
@click.self="resetState"> @click.self="resetState">
<div class="overflow-hidden transition-all transform bg-coolgray-200 ring-1 ring-black ring-opacity-5"> <div class="overflow-hidden transition-all transform bg-coolgray-200 ring-1 ring-black ring-opacity-5">
<div class="relative"> <div class="relative">
@ -31,8 +31,8 @@
aria-expanded="false" aria-controls="options"> aria-expanded="false" aria-controls="options">
</div> </div>
<ul class="px-4 pb-2 overflow-y-auto lg:max-h-screen max-h-80 scroll-py-10 scroll-pb-2 scrollbar" <ul class="px-4 pb-2 overflow-y-auto max-h-96 scroll-py-10 scroll-pb-2 scrollbar" id="options"
id="options" role="listbox"> role="listbox">
<li v-if="sequenceState.sequence.length !== 0"> <li v-if="sequenceState.sequence.length !== 0">
<h2 v-if="sequenceState.sequence[sequenceState.currentActionIndex] && possibleSequences[sequenceState.sequence[sequenceState.currentActionIndex]]" <h2 v-if="sequenceState.sequence[sequenceState.currentActionIndex] && possibleSequences[sequenceState.sequence[sequenceState.currentActionIndex]]"
class="mt-4 mb-2 text-xs font-semibold text-neutral-500">{{ class="mt-4 mb-2 text-xs font-semibold text-neutral-500">{{

View File

@ -1,37 +1,38 @@
<x-layout-simple> <x-layout-simple>
<div class="flex items-center justify-center h-screen"> <div class="flex items-center justify-center h-screen">
<div class="w-1/2 min-w-fit"> <div class="w-96 min-w-fit">
<div class="flex flex-col items-center pb-8"> <div class="flex flex-col items-center pb-8">
<div class="text-5xl font-bold tracking-tight text-center text-white">Coolify</div> <div class="text-5xl font-extrabold tracking-tight text-center text-white">Coolify</div>
<x-version /> <x-version />
</div> </div>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<h1>{{ __('auth.login') }}</h1> <h1>{{ __('auth.login') }}</h1>
@if ($is_registration_enabled)
<a href="/register"
class="text-xs text-center text-white normal-case bg-transparent border-none rounded no-animation hover:no-underline btn btn-sm bg-coollabs-gradient">
{{ __('auth.register_now') }}
</a>
@endif
</div> </div>
<div> <div>
<form action="/login" method="POST" class="flex flex-col gap-2"> <form action="/login" method="POST" class="flex flex-col gap-2">
@csrf @csrf
@env('local') @env('local')
<x-forms.input required value="test@example.com" type="email" name="email" <x-forms.input value="test@example.com" type="email" name="email" label="{{ __('input.email') }}"
label="{{ __('input.email') }}" autofocus /> autofocus />
<x-forms.input value="password" type="password" name="password"
label="{{ __('input.password') }}" />
<a href="/forgot-password" class="text-xs"> <a href="/forgot-password" class="text-xs">
{{ __('auth.forgot_password') }}? {{ __('auth.forgot_password') }}?
</a> </a>
<x-forms.input required value="password" type="password" name="password"
label="{{ __('input.password') }}" />
@else @else
<x-forms.input required type="email" name="email" label="{{ __('input.email') }}" autofocus /> <x-forms.input type="email" name="email" label="{{ __('input.email') }}" autofocus />
<x-forms.input required type="password" name="password" label="{{ __('input.password') }}" /> <x-forms.input type="password" name="password" label="{{ __('input.password') }}" />
@endenv @endenv
<x-forms.button type="submit">{{ __('auth.login') }}</x-forms.button> <x-forms.button type="submit">{{ __('auth.login') }}</x-forms.button>
@if (!$is_registration_enabled) @if ($is_registration_enabled)
<a href="/register"
class="text-xs text-center text-white normal-case bg-transparent border-none rounded no-animation hover:no-underline btn btn-sm bg-coollabs-gradient">
{{ __('auth.register_now') }}
</a>
@else
<div class="text-sm text-center">{{ __('auth.registration_disabled') }}</div> <div class="text-sm text-center">{{ __('auth.registration_disabled') }}</div>
@endif @endif
@if ($errors->any()) @if ($errors->any())

View File

@ -1,12 +1,12 @@
<x-layout> <x-layout>
<h1>Command Center</h1> <h1>Command Center</h1>
<div class="pb-10 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li> <li class="inline-flex items-center">
Execute commands on your servers without leaving the browser. Execute commands on your servers without leaving the browser.
</li> </li>
</ul> </ol>
</div> </nav>
@if ($servers->count() > 0) @if ($servers->count() > 0)
<livewire:run-command :servers="$servers" /> <livewire:run-command :servers="$servers" />
@else @else

View File

@ -16,63 +16,64 @@
<button>Deployments</button> <button>Deployments</button>
</a> </a>
<div class="flex-1"></div> <div class="flex-1"></div>
<div class="dropdown dropdown-bottom dropdown-hover"> <div class="group">
<label tabindex="0" class="flex items-center gap-2 text-sm cursor-pointer hover:text-white"> Links <label tabindex="0" class="flex items-center gap-2 text-sm cursor-pointer hover:text-white"> Links
<x-chevron-down /> <x-chevron-down />
</label> </label>
<ul tabindex="0" <div class="absolute hidden group-hover:block ">
class="text-xs text-white normal-case rounded min-w-max dropdown-content menu bg-coolgray-200"> <ul tabindex="0" class="text-xs text-white normal-case rounded min-w-max menu bg-coolgray-200">
<li>
<a target="_blank" class="text-xs text-white rounded-none hover:no-underline hover:bg-coollabs"
href="{{ $application->gitBranchLocation }}">
<x-git-icon git="{{ $application->source->getMorphClass() }}" />
Git Repository
</a>
</li>
@if (data_get($application, 'fqdn'))
<li> <li>
<a class="text-xs text-white rounded-none hover:no-underline hover:bg-coollabs" target="_blank" <a target="_blank" class="text-xs text-white rounded-none hover:no-underline hover:bg-coollabs"
href="{{ $application->fqdn }}"> href="{{ $application->gitBranchLocation }}">
<svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24" stroke-width="1.5" <x-git-icon git="{{ $application->source->getMorphClass() }}" />
stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> Git Repository
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M9 15l6 -6" />
<path d="M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464" />
<path
d="M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463" />
</svg>{{ $application->fqdn }}
</a> </a>
</li> </li>
@endif @if (data_get($application, 'fqdn'))
@if (data_get($application, 'ports_mappings_array')) <li>
@foreach ($application->ports_mappings_array as $port) <a class="text-xs text-white rounded-none hover:no-underline hover:bg-coollabs" target="_blank"
@if (config('app.env') === 'local') href="{{ $application->fqdn }}">
<li> <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24"
<a class="text-xs text-white rounded-none hover:no-underline hover:bg-coollabs" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
target="_blank" href="http://localhost:{{ explode(':', $port)[0] }}"> stroke-linejoin="round">
<svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24" <path stroke="none" d="M0 0h24v24H0z" fill="none" />
stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" <path d="M9 15l6 -6" />
stroke-linejoin="round"> <path d="M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464" />
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path
<path d="M9 15l6 -6" /> d="M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463" />
<path d="M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464" /> </svg>{{ $application->fqdn }}
<path </a>
d="M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463" /> </li>
</svg>{{ $port }} @endif
</a> @if (data_get($application, 'ports_mappings_array'))
</li> @foreach ($application->ports_mappings_array as $port)
@else @if (config('app.env') === 'local')
<li> <li>
<a class="text-xs hover:no-underline hover:bg-coollabs" target="_blank" <a class="text-xs text-white rounded-none hover:no-underline hover:bg-coollabs"
href="http://{{ $application->destination->server->ip }}:{{ explode(':', $port)[0] }}">Port target="_blank" href="http://localhost:{{ explode(':', $port)[0] }}">
{{ $port }} <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24"
</a> stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
</li> stroke-linejoin="round">
@endif <path stroke="none" d="M0 0h24v24H0z" fill="none" />
@endforeach <path d="M9 15l6 -6" />
@endif <path d="M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464" />
</ul> <path
</div> d="M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463" />
</svg>{{ $port }}
</a>
</li>
@else
<li>
<a class="text-xs hover:no-underline hover:bg-coollabs" target="_blank"
href="http://{{ $application->destination->server->ip }}:{{ explode(':', $port)[0] }}">Port
{{ $port }}
</a>
</li>
@endif
@endforeach
@endif
</ul>
</div>
</div> </div>
<livewire:project.application.deploy :applicationId="$application->id" /> <livewire:project.application.deploy :applicationId="$application->id" />
</nav> </nav>

View File

@ -9,24 +9,23 @@
'disabled' => null, 'disabled' => null,
]) ])
<label {{ $attributes->merge(['class' => 'flex cursor-pointer w-64 label']) }}> <label {{ $attributes->merge(['class' => 'flex cursor-pointer w-64 label']) }}>
<div class="label-text"> <div class="flex gap-1 label-text">
@if ($label) @if ($label)
{{ $label }} {{ $label }}
@else @else
{{ $id }} {{ $id }}
@endif @endif
@if ($helper) @if ($helper)
<div class="-mb-1 dropdown dropdown-right dropdown-hover"> <div class="group">
<label tabindex="0" class="cursor-pointer text-warning"> <div class="cursor-pointer text-warning">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
class="w-4 h-4 stroke-current"> class="w-4 h-4 stroke-current">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path> d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg> </svg>
</label> </div>
<div tabindex="0" <div class="absolute hidden text-xs group-hover:block border-coolgray-400 bg-coolgray-500">
class="border rounded shadow border-coolgray-400 card compact dropdown-content bg-coolgray-200 w-96"> <div class="p-4 card-body">
<div class="card-body">
{!! $helper !!} {!! $helper !!}
</div> </div>
</div> </div>

View File

@ -2,6 +2,7 @@
'id' => $attributes->has('id'), 'id' => $attributes->has('id'),
'type' => $attributes->get('type') ?? 'text', 'type' => $attributes->get('type') ?? 'text',
'label' => $attributes->has('label'), 'label' => $attributes->has('label'),
'readonly' => null,
'required' => null, 'required' => null,
'disabled' => null, 'disabled' => null,
'helper' => $attributes->has('helper'), 'helper' => $attributes->has('helper'),
@ -10,23 +11,22 @@
<div {{ $attributes->merge(['class' => 'w-full form-control']) }}> <div {{ $attributes->merge(['class' => 'w-full form-control']) }}>
@if ($label) @if ($label)
<label class="label"> <label class="label">
<span class="label-text"> <span class="flex gap-1 label-text">
{{ $label }} {{ $label }}
@if ($required) @if ($required)
<span class="text-warning">*</span> <span class="text-warning">*</span>
@endif @endif
@if ($helper) @if ($helper)
<div class="-mb-1 dropdown dropdown-right dropdown-hover"> <div class="group">
<label tabindex="0" class="cursor-pointer text-warning"> <div class="cursor-pointer text-warning">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
class="w-4 h-4 stroke-current"> class="w-4 h-4 stroke-current">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path> d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg> </svg>
</label> </div>
<div tabindex="0" <div class="absolute hidden text-xs group-hover:block border-coolgray-400 bg-coolgray-500">
class="border rounded shadow border-coolgray-400 card compact dropdown-content bg-coolgray-200 w-96"> <div class="p-4 card-body">
<div class="card-body">
{!! $helper !!} {!! $helper !!}
</div> </div>
</div> </div>
@ -38,7 +38,7 @@ class="border rounded shadow border-coolgray-400 card compact dropdown-content b
<input type={{ $type }} <input type={{ $type }}
@if ($id) name={{ $id }} wire:model.defer={{ $id }} @endisset @if ($id) name={{ $id }} wire:model.defer={{ $id }} @endisset
@if ($disabled !== null) disabled @endif @if ($disabled !== null) disabled @endif
@if ($required !== null) required @endif @if ($required !== null) required @endif @if ($readonly !== null) readonly @endif
@if (!$noDirty && $id) wire:dirty.class="input-warning" @endif {{ $attributes }} /> @if (!$noDirty && $id) wire:dirty.class="input-warning" @endif {{ $attributes }} />
@error($id) @error($id)
<label class="label"> <label class="label">

View File

@ -17,17 +17,16 @@
<span class="text-warning">*</span> <span class="text-warning">*</span>
@endif @endif
@if ($helper) @if ($helper)
<div class="-mb-1 dropdown dropdown-right dropdown-hover"> <div class="group">
<label tabindex="0" class="cursor-pointer text-warning"> <div class="cursor-pointer text-warning">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
class="w-4 h-4 stroke-current"> class="w-4 h-4 stroke-current">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path> d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg> </svg>
</label> </div>
<div tabindex="0" <div class="absolute hidden text-xs group-hover:block border-coolgray-400 bg-coolgray-500">
class="border rounded shadow border-coolgray-400 card compact dropdown-content bg-coolgray-200 w-96"> <div class="p-4 card-body">
<div class="card-body">
{!! $helper !!} {!! $helper !!}
</div> </div>
</div> </div>

View File

@ -20,18 +20,17 @@
<span class="text-warning">*</span> <span class="text-warning">*</span>
@endif @endif
@if ($helper) @if ($helper)
<div class="dropdown dropdown-right"> <div class="group">
<label tabindex="0" class="btn btn-circle btn-ghost btn-xs text-warning"> <div class="cursor-pointer text-warning">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
class="w-4 h-4 stroke-current"> class="w-4 h-4 stroke-current">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path> d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg> </svg>
</label> </div>
<div tabindex="0" <div class="absolute hidden text-xs group-hover:block border-coolgray-400 bg-coolgray-500">
class="w-64 border-2 shadow border-coolgray-500 card compact dropdown-content bg-coolgray-200 "> <div class="p-4 card-body">
<div class="card-body"> {!! $helper !!}
{{ $helper }}
</div> </div>
</div> </div>
</div> </div>

View File

@ -38,14 +38,6 @@
<x-version class="fixed left-2 bottom-1" /> <x-version class="fixed left-2 bottom-1" />
@auth @auth
<script> <script>
window.addEventListener("keydown", function(event) {
if (event.target.nodeName === 'BODY') {
if (event.key === '/') {
event.preventDefault();
window.dispatchEvent(new CustomEvent('slash'));
}
}
})
Livewire.on('reloadWindow', () => { Livewire.on('reloadWindow', () => {
window.location.reload(); window.location.reload();
}) })

View File

@ -71,8 +71,9 @@ class="{{ request()->is('settings') ? 'text-warning icon' : 'icon' }}" viewBox="
</ul> </ul>
</nav> </nav>
<div class="fixed top-0 right-0 p-2"> <div class="fixed top-0 right-0 p-2">
<div class="dropdown dropdown-left dropdown-hover"> <div class="group">
<label tabindex="0" class="btn btn-ghost no-animation hover:bg-transparent hover:text-warning"> <label tabindex="0"
class="absolute top-0 right-0 p-2 m-2 cursor-pointer hover:bg-transparent hover:text-warning">
<div class="flex items-center justify-center gap-2 placeholder"> <div class="flex items-center justify-center gap-2 placeholder">
<svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24" stroke-width="1.5" <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24" stroke-width="1.5"
stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
@ -83,47 +84,52 @@ class="{{ request()->is('settings') ? 'text-warning icon' : 'icon' }}" viewBox="
</svg> </svg>
</div> </div>
</label> </label>
<ul tabindex="0" class="p-2 mt-3 rounded shadow menu menu-compact dropdown-content bg-coolgray-200 w-52"> <div class="hidden p-4 px-8 group-hover:block">
<li> <ul tabindex="0" class="p-2 mt-3 rounded shadow menu menu-compact dropdown-content bg-coolgray-200 w-52">
<a class="text-white rounded-none hover:no-underline hover:bg-coollabs" href="/profile">
<svg xmlns="http://www.w3.org/2000/svg" class="icon" viewBox="0 0 24 24" stroke-width="1.5"
stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0" />
<path d="M12 10m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" />
<path d="M6.168 18.849a4 4 0 0 1 3.832 -2.849h4a4 4 0 0 1 3.834 2.855" />
</svg> Profile
</a>
</li>
<li>
<a class="text-white rounded-none hover:no-underline hover:bg-coollabs" href="/profile/team">
<svg xmlns="http://www.w3.org/2000/svg" class="icon" viewBox="0 0 24 24" stroke-width="1.5"
stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 13a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M8 21v-1a2 2 0 0 1 2 -2h4a2 2 0 0 1 2 2v1" />
<path d="M15 5a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M17 10h2a2 2 0 0 1 2 2v1" />
<path d="M5 5a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M3 13v-1a2 2 0 0 1 2 -2h2" />
</svg> Team
</a>
</li>
<form action="/logout" method="POST">
<li> <li>
@csrf <a class="text-white rounded-none hover:no-underline hover:bg-coollabs" href="/profile">
<button class="text-sm text-white rounded-none hover:bg-coollabs"> <svg <svg xmlns="http://www.w3.org/2000/svg" class="icon" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg" class="icon" viewBox="0 0 24 24" stroke-width="1.5" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M13 12v.01" /> <path d="M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0" />
<path d="M3 21h18" /> <path d="M12 10m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" />
<path d="M5 21v-16a2 2 0 0 1 2 -2h7.5m2.5 10.5v7.5" /> <path d="M6.168 18.849a4 4 0 0 1 3.832 -2.849h4a4 4 0 0 1 3.834 2.855" />
<path d="M14 7h7m-3 -3l3 3l-3 3" /> </svg> Profile
</svg>Logout</button> </a>
</li> </li>
</form> <li>
</ul> <a class="text-white rounded-none hover:no-underline hover:bg-coollabs" href="/profile/team">
<svg xmlns="http://www.w3.org/2000/svg" class="icon" viewBox="0 0 24 24"
stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 13a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M8 21v-1a2 2 0 0 1 2 -2h4a2 2 0 0 1 2 2v1" />
<path d="M15 5a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M17 10h2a2 2 0 0 1 2 2v1" />
<path d="M5 5a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M3 13v-1a2 2 0 0 1 2 -2h2" />
</svg> Team
</a>
</li>
<form action="/logout" method="POST">
<li>
@csrf
<button class="text-sm text-white rounded-none hover:bg-coollabs"> <svg
xmlns="http://www.w3.org/2000/svg" class="icon" viewBox="0 0 24 24"
stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M13 12v.01" />
<path d="M3 21h18" />
<path d="M5 21v-16a2 2 0 0 1 2 -2h7.5m2.5 10.5v7.5" />
<path d="M14 7h7m-3 -3l3 3l-3 3" />
</svg>Logout</button>
</li>
</form>
</ul>
</div>
</div> </div>
</div> </div>
@endauth @endauth

View File

@ -1,10 +1,13 @@
<div class="pb-6"> <div class="pb-6">
<h1>Server</h1> <h1>Server</h1>
<div class="pb-10 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li>{{ data_get($server, 'name') }}</li> <li class="inline-flex items-center">
</ul> {{ data_get($server, 'name') }}
</div> </li>
</ol>
</nav>
<nav class="flex items-center h-12 gap-4 py-2 border-b-2 border-solid border-coolgray-200"> <nav class="flex items-center h-12 gap-4 py-2 border-b-2 border-solid border-coolgray-200">
<a class="{{ request()->routeIs('server.show') ? 'text-white' : '' }}" <a class="{{ request()->routeIs('server.show') ? 'text-white' : '' }}"
href="{{ route('server.show', [ href="{{ route('server.show', [

View File

@ -1,11 +1,34 @@
<div class="pb-6"> <div class="pb-6">
<h1>Team</h1> <h1>Team</h1>
<div class="text-sm breadcrumbs pb-11"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li>Currently Active Team</li> <li class="inline-flex items-center">
<li class="font-bold">{{ session('currentTeam.name') }}</li> Currently Active Team
</ul> </li>
</div> <li>
<div class="flex items-center">
<svg aria-hidden="true" class="w-4 h-4 mx-1 font-bold text-warning" fill="currentColor"
viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd"
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
clip-rule="evenodd"></path>
</svg>
{{ session('currentTeam.name') }}
</div>
</li>
<li>
<div class="flex items-center">
<svg aria-hidden="true" class="w-4 h-4 mx-1 font-bold text-warning" fill="currentColor"
viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd"
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
clip-rule="evenodd"></path>
</svg>
<span>{{ data_get($application, 'name') }}</span>
</div>
</li>
</ol>
</nav>
<nav class="flex items-center gap-4 py-2 border-b-2 border-solid border-coolgray-200"> <nav class="flex items-center gap-4 py-2 border-b-2 border-solid border-coolgray-200">
<a class="{{ request()->routeIs('team.show') ? 'text-white' : '' }}" href="{{ route('team.show') }}"> <a class="{{ request()->routeIs('team.show') ? 'text-white' : '' }}" href="{{ route('team.show') }}">
<button>Members</button> <button>Members</button>

View File

@ -1,12 +1,13 @@
<x-layout> <x-layout>
<h1>Dashboard</h1> <h1>Dashboard</h1>
<div class="pb-10 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li> <li class="inline-flex items-center">
Something (more) useful will be here. Something (more) useful will be here.
</li> </li>
</ul>
</div> </ol>
</nav>
<div class="w-full rounded shadow stats stats-vertical lg:stats-horizontal"> <div class="w-full rounded shadow stats stats-vertical lg:stats-horizontal">
<div class="stat"> <div class="stat">
<div class="stat-title">Servers</div> <div class="stat-title">Servers</div>

View File

@ -1,12 +1,12 @@
<div> <div>
<h1>Create a new Destination</h1> <h1>Create a new Destination</h1>
<div class="pb-5 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li> <li class="inline-flex items-center">
Destinations are used to separate resources in a server. Destinations are used to separate resources in a server.
</li> </li>
</ul> </ol>
</div> </nav>
<form class="flex flex-col gap-4" wire:submit.prevent='submit'> <form class="flex flex-col gap-4" wire:submit.prevent='submit'>
<div class="flex gap-2"> <div class="flex gap-2">
<x-forms.input id="name" label="Name" required /> <x-forms.input id="name" label="Name" required />

View File

@ -1,114 +1,119 @@
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<div class="dropdown dropdown-bottom dropdown-hover"> <div class="group">
<label tabindex="0" class="flex items-center gap-2 cursor-pointer hover:text-white"> Actions <label tabindex="0" class="flex items-center gap-2 cursor-pointer hover:text-white"> Actions
<x-chevron-down /> <x-chevron-down />
</label> </label>
@if ($application->status === 'running') <div class="absolute hidden group-hover:block ">
<ul tabindex="0" @if ($application->status === 'running')
class="text-xs text-white normal-case rounded min-w-max dropdown-content menu bg-coolgray-200"> <ul tabindex="0" class="text-xs text-white normal-case rounded min-w-max menu bg-coolgray-200">
<li> <li>
<div class="rounded-none hover:bg-coollabs" wire:click='deploy'><svg xmlns="http://www.w3.org/2000/svg" <div class="rounded-none hover:bg-coollabs" wire:click='deploy'><svg
class="w-6 h-6" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24" stroke-width="1.5"
stroke-linecap="round" stroke-linejoin="round"> stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4" /> <path d="M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4" />
<path d="M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4" /> <path d="M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4" />
<path d="M12 9l0 3" /> <path d="M12 9l0 3" />
<path d="M12 15l.01 0" /> <path d="M12 15l.01 0" />
</svg>Restart</div> </svg>Restart</div>
</li> </li>
<li> <li>
<div class="rounded-none hover:bg-coollabs" wire:click='deploy(true, true)'><svg <div class="rounded-none hover:bg-coollabs" wire:click='deploy(true, true)'><svg
xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24" stroke-width="1.5" xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24"
stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> stroke-linejoin="round">
<path d="M9 9v-1a3 3 0 0 1 6 0v1" /> <path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M8 9h8a6 6 0 0 1 1 3v3a5 5 0 0 1 -10 0v-3a6 6 0 0 1 1 -3" /> <path d="M9 9v-1a3 3 0 0 1 6 0v1" />
<path d="M3 13l4 0" /> <path d="M8 9h8a6 6 0 0 1 1 3v3a5 5 0 0 1 -10 0v-3a6 6 0 0 1 1 -3" />
<path d="M17 13l4 0" /> <path d="M3 13l4 0" />
<path d="M12 20l0 -6" /> <path d="M17 13l4 0" />
<path d="M4 19l3.35 -2" /> <path d="M12 20l0 -6" />
<path d="M20 19l-3.35 -2" /> <path d="M4 19l3.35 -2" />
<path d="M4 7l3.75 2.4" /> <path d="M20 19l-3.35 -2" />
<path d="M20 7l-3.75 2.4" /> <path d="M4 7l3.75 2.4" />
</svg>Force deploy (with <path d="M20 7l-3.75 2.4" />
debug) </svg>Force deploy (with
</div> debug)
</li> </div>
<li> </li>
<div class="rounded-none hover:bg-coollabs" wire:click='deploy(true)'><svg <li>
xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24" stroke-width="1.5" <div class="rounded-none hover:bg-coollabs" wire:click='deploy(true)'><svg
stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24"
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
<path stroke-linejoin="round">
d="M12.983 8.978c3.955 -.182 7.017 -1.446 7.017 -2.978c0 -1.657 -3.582 -3 -8 -3c-1.661 0 -3.204 .19 -4.483 .515m-2.783 1.228c-.471 .382 -.734 .808 -.734 1.257c0 1.22 1.944 2.271 4.734 2.74" /> <path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path <path
d="M4 6v6c0 1.657 3.582 3 8 3c.986 0 1.93 -.067 2.802 -.19m3.187 -.82c1.251 -.53 2.011 -1.228 2.011 -1.99v-6" /> d="M12.983 8.978c3.955 -.182 7.017 -1.446 7.017 -2.978c0 -1.657 -3.582 -3 -8 -3c-1.661 0 -3.204 .19 -4.483 .515m-2.783 1.228c-.471 .382 -.734 .808 -.734 1.257c0 1.22 1.944 2.271 4.734 2.74" />
<path d="M4 12v6c0 1.657 3.582 3 8 3c3.217 0 5.991 -.712 7.261 -1.74m.739 -3.26v-4" /> <path
<path d="M3 3l18 18" /> d="M4 6v6c0 1.657 3.582 3 8 3c.986 0 1.93 -.067 2.802 -.19m3.187 -.82c1.251 -.53 2.011 -1.228 2.011 -1.99v-6" />
</svg>Force deploy (without <path d="M4 12v6c0 1.657 3.582 3 8 3c3.217 0 5.991 -.712 7.261 -1.74m.739 -3.26v-4" />
cache) <path d="M3 3l18 18" />
</div> </svg>Force deploy (without
</li> cache)
<li> </div>
<div class="rounded-none hover:bg-red-500" wire:click='stop'><svg xmlns="http://www.w3.org/2000/svg" </li>
class="w-6 h-6" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" <li>
stroke-linecap="round" stroke-linejoin="round"> <div class="rounded-none hover:bg-red-500" wire:click='stop'><svg
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24"
<path d="M8 13v-7.5a1.5 1.5 0 0 1 3 0v6.5" /> stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
<path d="M11 5.5v-2a1.5 1.5 0 1 1 3 0v8.5" /> stroke-linejoin="round">
<path d="M14 5.5a1.5 1.5 0 0 1 3 0v6.5" /> <path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path <path d="M8 13v-7.5a1.5 1.5 0 0 1 3 0v6.5" />
d="M17 7.5a1.5 1.5 0 0 1 3 0v8.5a6 6 0 0 1 -6 6h-2h.208a6 6 0 0 1 -5.012 -2.7a69.74 69.74 0 0 1 -.196 -.3c-.312 -.479 -1.407 -2.388 -3.286 -5.728a1.5 1.5 0 0 1 .536 -2.022a1.867 1.867 0 0 1 2.28 .28l1.47 1.47" /> <path d="M11 5.5v-2a1.5 1.5 0 1 1 3 0v8.5" />
</svg>Stop</div> <path d="M14 5.5a1.5 1.5 0 0 1 3 0v6.5" />
</li> <path
</ul> d="M17 7.5a1.5 1.5 0 0 1 3 0v8.5a6 6 0 0 1 -6 6h-2h.208a6 6 0 0 1 -5.012 -2.7a69.74 69.74 0 0 1 -.196 -.3c-.312 -.479 -1.407 -2.388 -3.286 -5.728a1.5 1.5 0 0 1 .536 -2.022a1.867 1.867 0 0 1 2.28 .28l1.47 1.47" />
@else </svg>Stop</div>
<ul tabindex="0" </li>
class="text-xs text-white normal-case rounded min-w-max dropdown-content menu bg-coolgray-200"> </ul>
<li> @else
<div class="rounded-none hover:bg-coollabs" wire:click='deploy'><svg <ul tabindex="0" class="text-xs text-white normal-case rounded min-w-max menu bg-coolgray-200">
xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24" stroke-width="1.5" <li>
stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <div class="rounded-none hover:bg-coollabs" wire:click='deploy'><svg
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24"
<path d="M7 4v16l13 -8z" /> stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
</svg>Deploy</div> stroke-linejoin="round">
</li> <path stroke="none" d="M0 0h24v24H0z" fill="none" />
<li> <path d="M7 4v16l13 -8z" />
<div class="rounded-none hover:bg-coollabs" wire:click='deploy(true, true)'><svg </svg>Deploy</div>
xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24" stroke-width="1.5" </li>
stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <li>
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> <div class="rounded-none hover:bg-coollabs" wire:click='deploy(true, true)'><svg
<path d="M9 9v-1a3 3 0 0 1 6 0v1" /> xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24"
<path d="M8 9h8a6 6 0 0 1 1 3v3a5 5 0 0 1 -10 0v-3a6 6 0 0 1 1 -3" /> stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
<path d="M3 13l4 0" /> stroke-linejoin="round">
<path d="M17 13l4 0" /> <path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M12 20l0 -6" /> <path d="M9 9v-1a3 3 0 0 1 6 0v1" />
<path d="M4 19l3.35 -2" /> <path d="M8 9h8a6 6 0 0 1 1 3v3a5 5 0 0 1 -10 0v-3a6 6 0 0 1 1 -3" />
<path d="M20 19l-3.35 -2" /> <path d="M3 13l4 0" />
<path d="M4 7l3.75 2.4" /> <path d="M17 13l4 0" />
<path d="M20 7l-3.75 2.4" /> <path d="M12 20l0 -6" />
</svg>Force deploy (with <path d="M4 19l3.35 -2" />
debug) <path d="M20 19l-3.35 -2" />
</div> <path d="M4 7l3.75 2.4" />
</li> <path d="M20 7l-3.75 2.4" />
<li> </svg>Force deploy (with
<div class="rounded-none hover:bg-coollabs" wire:click='deploy(true)'><svg debug)
xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24" </div>
stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" </li>
stroke-linejoin="round"> <li>
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> <div class="rounded-none hover:bg-coollabs" wire:click='deploy(true)'><svg
<path xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24"
d="M12.983 8.978c3.955 -.182 7.017 -1.446 7.017 -2.978c0 -1.657 -3.582 -3 -8 -3c-1.661 0 -3.204 .19 -4.483 .515m-2.783 1.228c-.471 .382 -.734 .808 -.734 1.257c0 1.22 1.944 2.271 4.734 2.74" /> stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
<path stroke-linejoin="round">
d="M4 6v6c0 1.657 3.582 3 8 3c.986 0 1.93 -.067 2.802 -.19m3.187 -.82c1.251 -.53 2.011 -1.228 2.011 -1.99v-6" /> <path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M4 12v6c0 1.657 3.582 3 8 3c3.217 0 5.991 -.712 7.261 -1.74m.739 -3.26v-4" /> <path
<path d="M3 3l18 18" /> d="M12.983 8.978c3.955 -.182 7.017 -1.446 7.017 -2.978c0 -1.657 -3.582 -3 -8 -3c-1.661 0 -3.204 .19 -4.483 .515m-2.783 1.228c-.471 .382 -.734 .808 -.734 1.257c0 1.22 1.944 2.271 4.734 2.74" />
</svg>Force deploy (without <path
cache) d="M4 6v6c0 1.657 3.582 3 8 3c.986 0 1.93 -.067 2.802 -.19m3.187 -.82c1.251 -.53 2.011 -1.228 2.011 -1.99v-6" />
</div> <path d="M4 12v6c0 1.657 3.582 3 8 3c3.217 0 5.991 -.712 7.261 -1.74m.739 -3.26v-4" />
</li> <path d="M3 3l18 18" />
</ul> </svg>Force deploy (without
@endif cache)
</div>
</li>
</ul>
@endif
</div>
</div> </div>
</div> </div>

View File

@ -1,12 +1,12 @@
<div> <div>
<h1>Create a new Server</h1> <h1>Create a new Server</h1>
<div class="pb-5 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li> <li class="inline-flex items-center">
Servers are the main blocks of your infrastructure. Servers are the main blocks of your infrastructure.
</li> </li>
</ul> </ol>
</div> </nav>
<form class="flex flex-col gap-2" wire:submit.prevent='submit'> <form class="flex flex-col gap-2" wire:submit.prevent='submit'>
<div class="flex gap-2"> <div class="flex gap-2">
<x-forms.input id="name" label="Name" required /> <x-forms.input id="name" label="Name" required />

View File

@ -1,37 +1,39 @@
<div> <div>
@if ($server->settings->is_validated) @if ($server->settings->is_validated)
@if ($server->extra_attributes->proxy_status === 'running') @if ($server->extra_attributes->proxy_status === 'running')
<div class="dropdown dropdown-bottom"> <div class="group">
<label tabindex="0" class="flex items-center gap-2 cursor-pointer hover:text-white"> Actions <label tabindex="0" class="flex items-center gap-2 cursor-pointer hover:text-white"> Actions
<x-chevron-down /> <x-chevron-down />
</label> </label>
<ul tabindex="0" <div class="absolute hidden group-hover:block ">
class="mt-1 text-xs text-white normal-case rounded min-w-max dropdown-content menu bg-coolgray-200"> <ul tabindex="0" class="mt-1 text-xs text-white normal-case rounded min-w-max menu bg-coolgray-200">
<li> <li>
<div class="rounded-none hover:bg-coollabs" wire:click='deploy'><svg <div class="rounded-none hover:bg-coollabs" wire:click='deploy'><svg
xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24" stroke-width="1.5" xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24"
stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> stroke-linejoin="round">
<path d="M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4" /> <path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4" /> <path d="M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4" />
<path d="M12 9l0 3" /> <path d="M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4" />
<path d="M12 15l.01 0" /> <path d="M12 9l0 3" />
</svg>Restart</div> <path d="M12 15l.01 0" />
</li> </svg>Restart</div>
<li> </li>
<div class="rounded-none hover:bg-red-500" wire:click='stop'><svg <li>
xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24" <div class="rounded-none hover:bg-red-500" wire:click='stop'><svg
stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" viewBox="0 0 24 24"
stroke-linejoin="round"> stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> stroke-linejoin="round">
<path d="M8 13v-7.5a1.5 1.5 0 0 1 3 0v6.5" /> <path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M11 5.5v-2a1.5 1.5 0 1 1 3 0v8.5" /> <path d="M8 13v-7.5a1.5 1.5 0 0 1 3 0v6.5" />
<path d="M14 5.5a1.5 1.5 0 0 1 3 0v6.5" /> <path d="M11 5.5v-2a1.5 1.5 0 1 1 3 0v8.5" />
<path <path d="M14 5.5a1.5 1.5 0 0 1 3 0v6.5" />
d="M17 7.5a1.5 1.5 0 0 1 3 0v8.5a6 6 0 0 1 -6 6h-2h.208a6 6 0 0 1 -5.012 -2.7a69.74 69.74 0 0 1 -.196 -.3c-.312 -.479 -1.407 -2.388 -3.286 -5.728a1.5 1.5 0 0 1 .536 -2.022a1.867 1.867 0 0 1 2.28 .28l1.47 1.47" /> <path
</svg>Stop</div> d="M17 7.5a1.5 1.5 0 0 1 3 0v8.5a6 6 0 0 1 -6 6h-2h.208a6 6 0 0 1 -5.012 -2.7a69.74 69.74 0 0 1 -.196 -.3c-.312 -.479 -1.407 -2.388 -3.286 -5.728a1.5 1.5 0 0 1 .536 -2.022a1.867 1.867 0 0 1 2.28 .28l1.47 1.47" />
</li> </svg>Stop</div>
</ul> </li>
</ul>
</div>
</div> </div>
@else @else
<x-forms.button wire:click='deploy'> <svg xmlns="http://www.w3.org/2000/svg" class="icon" width="44" <x-forms.button wire:click='deploy'> <svg xmlns="http://www.w3.org/2000/svg" class="icon" width="44"

View File

@ -1,13 +1,13 @@
<div> <div>
<form wire:submit.prevent='submit' class="flex flex-col"> <form wire:submit.prevent='submit' class="flex flex-col">
<h1>Settings</h1> <h1>Settings</h1>
<div class="pb-10 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li> <li class="inline-flex items-center">
Instance wide settings for Coolify. Instance wide settings for Coolify.
</li> </li>
</ul> </ol>
</div> </nav>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<h3>General</h3> <h3>General</h3>
<x-forms.button type="submit"> <x-forms.button type="submit">

View File

@ -1,11 +1,11 @@
<x-layout> <x-layout>
<h1>Create a new Private Key</h1> <h1>Create a new Private Key</h1>
<div class="pb-5 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li> <li class="inline-flex items-center">
Private Keys are used for connection to servers. Private Keys are used for connection to servers.
</li> </li>
</ul> </ol>
</div> </nav>
<livewire:private-key.create /> <livewire:private-key.create />
</x-layout> </x-layout>

View File

@ -1,12 +1,13 @@
<x-layout> <x-layout>
<h1>Profile</h1> <h1>Profile</h1>
<div class="pb-10 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li> <li class="inline-flex items-center">
Your user profile settings. Your user profile settings.
</li> </li>
</ul>
</div> </ol>
</nav>
<livewire:profile.form :request="$request" /> <livewire:profile.form :request="$request" />
<h3 class="py-4">Two-factor Authentication</h3> <h3 class="py-4">Two-factor Authentication</h3>
@if (session('status') == 'two-factor-authentication-enabled') @if (session('status') == 'two-factor-authentication-enabled')

View File

@ -1,19 +1,37 @@
<x-layout> <x-layout>
<h1>Configuration</h1> <h1>Configuration</h1>
<div class="pb-10 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li><a href="{{ route('project.show', ['project_uuid' => request()->route('project_uuid')]) }}"> <li class="inline-flex items-center">
<a href="{{ route('project.show', ['project_uuid' => request()->route('project_uuid')]) }}">
{{ $application->environment->project->name }}</a> {{ $application->environment->project->name }}</a>
</li> </li>
<li><a
href="{{ route('project.resources', ['environment_name' => request()->route('environment_name'), 'project_uuid' => request()->route('project_uuid')]) }}">{{ request()->route('environment_name') }}</a>
</li>
<li>{{ data_get($application, 'name') }}</li>
<li> <li>
<livewire:project.application.status :application="$application" /> <div class="flex items-center">
<svg aria-hidden="true" class="w-4 h-4 mx-1 font-bold text-warning" fill="currentColor"
viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd"
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
clip-rule="evenodd"></path>
</svg>
<a
href="{{ route('project.resources', ['environment_name' => request()->route('environment_name'), 'project_uuid' => request()->route('project_uuid')]) }}">{{ request()->route('environment_name') }}</a>
</div>
</li> </li>
</ul> <li>
</div> <div class="flex items-center">
<svg aria-hidden="true" class="w-4 h-4 mx-1 font-bold text-warning" fill="currentColor"
viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd"
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
clip-rule="evenodd"></path>
</svg>
<span>{{ data_get($application, 'name') }}</span>
</div>
</li>
</ol>
</nav>
<x-applications.navbar :application="$application" /> <x-applications.navbar :application="$application" />
<div x-data="{ activeTab: window.location.hash ? window.location.hash.substring(1) : 'general' }" class="flex h-full pt-6"> <div x-data="{ activeTab: window.location.hash ? window.location.hash.substring(1) : 'general' }" class="flex h-full pt-6">
<div class="flex flex-col gap-4 min-w-fit"> <div class="flex flex-col gap-4 min-w-fit">

View File

@ -1,19 +1,49 @@
<x-layout> <x-layout>
<h1 class="py-0">Deployment</h1> <h1 class="py-0">Deployment</h1>
<div class="pb-10 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li><a <li class="inline-flex items-center">
<a
href="{{ route('project.show', ['project_uuid' => request()->route('project_uuid')]) }}">{{ $application->environment->project->name }}</a> href="{{ route('project.show', ['project_uuid' => request()->route('project_uuid')]) }}">{{ $application->environment->project->name }}</a>
</li> </li>
<li><a
href="{{ route('project.resources', ['environment_name' => request()->route('environment_name'), 'project_uuid' => request()->route('project_uuid')]) }}">{{ request()->route('environment_name') }}</a>
</li>
<li>{{ data_get($application, 'name') }}</li>
<li> <li>
<livewire:project.application.status :application="$application" /> <div class="flex items-center">
<svg aria-hidden="true" class="w-4 h-4 mx-1 font-bold text-warning" fill="currentColor"
viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd"
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
clip-rule="evenodd"></path>
</svg>
<a
href="{{ route('project.resources', ['environment_name' => request()->route('environment_name'), 'project_uuid' => request()->route('project_uuid')]) }}">{{ request()->route('environment_name') }}</a>
</div>
</li> </li>
</ul> <li>
</div> <div class="flex items-center">
<svg aria-hidden="true" class="w-4 h-4 mx-1 font-bold text-warning" fill="currentColor"
viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd"
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
clip-rule="evenodd"></path>
</svg>
<span>{{ data_get($application, 'name') }}</span>
</div>
</li>
<li>
<div class="flex items-center">
<svg aria-hidden="true" class="w-4 h-4 mx-1 font-bold text-warning" fill="currentColor"
viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd"
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
clip-rule="evenodd"></path>
</svg>
<span>
<livewire:project.application.status :application="$application" />
</span>
</div>
</li>
</ol>
</nav>
<x-applications.navbar :application="$application" /> <x-applications.navbar :application="$application" />
<livewire:project.application.deployment-logs :activity="$activity" :application="$application" :deployment_uuid="$deployment_uuid" /> <livewire:project.application.deployment-logs :activity="$activity" :application="$application" :deployment_uuid="$deployment_uuid" />
</x-layout> </x-layout>

View File

@ -1,19 +1,47 @@
<x-layout> <x-layout>
<h1>Deployments</h1> <h1>Deployments</h1>
<div class="pb-10 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li><a <li class="inline-flex items-center">
<a
href="{{ route('project.show', ['project_uuid' => request()->route('project_uuid')]) }}">{{ $application->environment->project->name }}</a> href="{{ route('project.show', ['project_uuid' => request()->route('project_uuid')]) }}">{{ $application->environment->project->name }}</a>
</li> </li>
<li><a
href="{{ route('project.resources', ['environment_name' => request()->route('environment_name'), 'project_uuid' => request()->route('project_uuid')]) }}">{{ request()->route('environment_name') }}</a>
</li>
<li>{{ data_get($application, 'name') }}</li>
<li> <li>
<livewire:project.application.status :application="$application" /> <div class="flex items-center">
<svg aria-hidden="true" class="w-4 h-4 mx-1 font-bold text-warning" fill="currentColor"
viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd"
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
clip-rule="evenodd"></path>
</svg>
<a
href="{{ route('project.resources', ['environment_name' => request()->route('environment_name'), 'project_uuid' => request()->route('project_uuid')]) }}">{{ request()->route('environment_name') }}</a>
</div>
</li> </li>
</ul> <li>
</div> <div class="flex items-center">
<svg aria-hidden="true" class="w-4 h-4 mx-1 font-bold text-warning" fill="currentColor"
viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd"
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
clip-rule="evenodd"></path>
</svg>
<span>{{ data_get($application, 'name') }}</span>
</div>
</li>
<li>
<div class="flex items-center">
<svg aria-hidden="true" class="w-4 h-4 mx-1 font-bold text-warning" fill="currentColor"
viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd"
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
clip-rule="evenodd"></path>
</svg>
<livewire:project.application.status :application="$application" />
</div>
</li>
</ol>
</nav>
<x-applications.navbar :application="$application" /> <x-applications.navbar :application="$application" />
<livewire:project.application.deployments :application_id="$application->id" /> <livewire:project.application.deployments :application_id="$application->id" />
</x-layout> </x-layout>

View File

@ -4,18 +4,26 @@
<h1>Resources</h1> <h1>Resources</h1>
<livewire:project.delete-environment :environment_id="$environment->id" :resource_count="$environment->applications->count()" /> <livewire:project.delete-environment :environment_id="$environment->id" :resource_count="$environment->applications->count()" />
</div> </div>
<div class="pb-10 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li> <li class="inline-flex items-center">
<a href="{{ route('project.show', ['project_uuid' => request()->route('project_uuid')]) }}"> <a href="{{ route('project.show', ['project_uuid' => request()->route('project_uuid')]) }}">
{{ $project->name }} {{ $project->name }}
</a> </a>
</li> </li>
<li> <li>
{{ request()->route('environment_name') }} <div class="flex items-center">
<svg aria-hidden="true" class="w-4 h-4 mx-1 font-bold text-warning" fill="currentColor"
viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd"
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
clip-rule="evenodd"></path>
</svg>
{{ request()->route('environment_name') }}
</div>
</li> </li>
</ul> </ol>
</div> </nav>
</div> </div>
@if ($environment->applications->count() === 0) @if ($environment->applications->count() === 0)
<p>No resources found.</p> <p>No resources found.</p>

View File

@ -3,11 +3,13 @@
<h1>Environments</h1> <h1>Environments</h1>
<livewire:project.delete-project :project_id="$project->id" :resource_count="$project->applications->count()" /> <livewire:project.delete-project :project_id="$project->id" :resource_count="$project->applications->count()" />
</div> </div>
<div class="pb-10 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li>{{ $project->name }} </li> <li class="inline-flex items-center">
</ul> {{ $project->name }}
</div> </li>
</ol>
</nav>
<div class="grid grid-cols-2 gap-2"> <div class="grid grid-cols-2 gap-2">
@forelse ($project->environments as $environment) @forelse ($project->environments as $environment)
<a class="box" href="{{ route('project.resources', [$project->uuid, $environment->name]) }}"> <a class="box" href="{{ route('project.resources', [$project->uuid, $environment->name]) }}">

View File

@ -1,12 +1,13 @@
<x-layout> <x-layout>
<h1>Projects</h1> <h1>Projects</h1>
<div class="pb-10 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li> <li class="inline-flex items-center">
All Projects All Projects
</li> </li>
</ul>
</div> </ol>
</nav>
<div class="grid grid-cols-2 gap-2"> <div class="grid grid-cols-2 gap-2">
@forelse ($projects as $project) @forelse ($projects as $project)
<a href="{{ route('project.show', ['project_uuid' => data_get($project, 'uuid')]) }}" <a href="{{ route('project.show', ['project_uuid' => data_get($project, 'uuid')]) }}"

View File

@ -1,12 +1,12 @@
<x-layout> <x-layout>
<h1>Servers</h1> <h1>Servers</h1>
<div class="pb-10 text-sm breadcrumbs"> <nav class="flex pt-2 pb-10 text-sm">
<ul> <ol class="inline-flex items-center">
<li> <li class="inline-flex items-center">
All Servers All Servers
</li> </li>
</ul> </ol>
</div> </nav>
<div class="grid grid-cols-2 gap-2"> <div class="grid grid-cols-2 gap-2">
@forelse ($servers as $server) @forelse ($servers as $server)
<a class="text-center hover:no-underline box group" <a class="text-center hover:no-underline box group"

View File

@ -1,6 +1,6 @@
import { defineConfig } from 'vite'; import { defineConfig } from "vite";
import laravel from 'laravel-vite-plugin'; import laravel from "laravel-vite-plugin";
import vue from '@vitejs/plugin-vue'; import vue from "@vitejs/plugin-vue";
export default defineConfig({ export default defineConfig({
server: { server: {
@ -23,10 +23,7 @@ export default defineConfig({
}, },
plugins: [ plugins: [
laravel({ laravel({
input: [ input: ["resources/css/app.css", "resources/js/app.js"],
'resources/css/app.css',
'resources/js/app.js',
],
refresh: true, refresh: true,
}), }),
vue({ vue({
@ -40,7 +37,7 @@ export default defineConfig({
], ],
resolve: { resolve: {
alias: { alias: {
vue: 'vue/dist/vue.esm-bundler.js', vue: "vue/dist/vue.esm-bundler.js",
}, },
}, },
}); });