ui: add image name to service stack + better options visibility
This commit is contained in:
@@ -5,25 +5,32 @@
|
|||||||
html {
|
html {
|
||||||
@apply text-neutral-400;
|
@apply text-neutral-400;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
@apply text-sm antialiased scrollbar;
|
@apply text-sm antialiased scrollbar;
|
||||||
}
|
}
|
||||||
|
|
||||||
button[isError] {
|
button[isError] {
|
||||||
@apply bg-red-600 hover:bg-red-700;
|
@apply bg-red-600 hover:bg-red-700;
|
||||||
}
|
}
|
||||||
|
|
||||||
.scrollbar {
|
.scrollbar {
|
||||||
@apply scrollbar-thumb-coollabs-100 scrollbar-track-coolgray-200 scrollbar-w-2;
|
@apply scrollbar-thumb-coollabs-100 scrollbar-track-coolgray-200 scrollbar-w-2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main {
|
.main {
|
||||||
@apply pt-4 pl-24 pr-10 mx-auto;
|
@apply pt-4 pl-24 pr-10 mx-auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-modal {
|
.custom-modal {
|
||||||
@apply flex flex-col gap-2 px-8 py-4 border bg-base-100 border-coolgray-200;
|
@apply flex flex-col gap-2 px-8 py-4 border bg-base-100 border-coolgray-200;
|
||||||
}
|
}
|
||||||
|
|
||||||
.label-text,
|
.label-text,
|
||||||
label {
|
label {
|
||||||
@apply text-neutral-400;
|
@apply text-neutral-400;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-main {
|
.navbar-main {
|
||||||
@apply flex items-end gap-6 py-2 border-b-2 border-solid border-coolgray-200;
|
@apply flex items-end gap-6 py-2 border-b-2 border-solid border-coolgray-200;
|
||||||
}
|
}
|
||||||
@@ -31,89 +38,117 @@ label {
|
|||||||
.loading {
|
.loading {
|
||||||
@apply w-4 text-warning;
|
@apply w-4 text-warning;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
@apply text-3xl font-bold text-white;
|
@apply text-3xl font-bold text-white;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
@apply text-2xl font-bold text-white;
|
@apply text-2xl font-bold text-white;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
@apply text-xl font-bold text-white;
|
@apply text-xl font-bold text-white;
|
||||||
}
|
}
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
@apply text-base font-bold text-white;
|
@apply text-base font-bold text-white;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@apply text-neutral-400 hover:text-white link link-hover hover:bg-transparent;
|
@apply text-neutral-400 hover:text-white link link-hover hover:bg-transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.kbd-custom {
|
.kbd-custom {
|
||||||
@apply px-2 text-xs border border-dashed rounded border-neutral-700 text-warning;
|
@apply px-2 text-xs border border-dashed rounded border-neutral-700 text-warning;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
@apply w-6 h-6;
|
@apply w-6 h-6;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon:hover {
|
.icon:hover {
|
||||||
@apply text-white;
|
@apply text-white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.box {
|
.box {
|
||||||
@apply flex p-2 transition-colors cursor-pointer min-h-[4rem] bg-coolgray-100 hover:bg-coollabs-100 hover:text-white hover:no-underline min-w-[24rem];
|
@apply flex p-2 transition-colors cursor-pointer min-h-[4rem] bg-coolgray-100 hover:bg-coollabs-100 hover:text-white hover:no-underline min-w-[24rem];
|
||||||
}
|
}
|
||||||
|
|
||||||
.box-without-bg {
|
.box-without-bg {
|
||||||
@apply flex p-2 transition-colors h-16 min-h-full hover:text-white hover:no-underline min-h-[4rem];
|
@apply flex p-2 transition-colors min-h-full hover:text-white hover:no-underline min-h-[4rem];
|
||||||
}
|
}
|
||||||
|
|
||||||
.description {
|
.description {
|
||||||
@apply pt-2 text-xs font-bold text-neutral-500 group-hover:text-white;
|
@apply pt-2 text-xs font-bold text-neutral-500 group-hover:text-white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lds-heart {
|
.lds-heart {
|
||||||
animation: lds-heart 1.2s infinite cubic-bezier(0.215, 0.61, 0.355, 1);
|
animation: lds-heart 1.2s infinite cubic-bezier(0.215, 0.61, 0.355, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes lds-heart {
|
@keyframes lds-heart {
|
||||||
0% {
|
0% {
|
||||||
transform: scale(1);
|
transform: scale(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
5% {
|
5% {
|
||||||
transform: scale(1.2);
|
transform: scale(1.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
39% {
|
39% {
|
||||||
transform: scale(0.85);
|
transform: scale(0.85);
|
||||||
}
|
}
|
||||||
|
|
||||||
45% {
|
45% {
|
||||||
transform: scale(1);
|
transform: scale(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
60% {
|
60% {
|
||||||
transform: scale(0.95);
|
transform: scale(0.95);
|
||||||
}
|
}
|
||||||
|
|
||||||
100% {
|
100% {
|
||||||
transform: scale(0.9);
|
transform: scale(0.9);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg-coollabs-gradient {
|
.bg-coollabs-gradient {
|
||||||
@apply text-transparent text-white bg-gradient-to-r from-purple-500 via-pink-500 to-red-500;
|
@apply text-transparent text-white bg-gradient-to-r from-purple-500 via-pink-500 to-red-500;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text-helper {
|
.text-helper {
|
||||||
@apply inline-block font-bold text-warning;
|
@apply inline-block font-bold text-warning;
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
@apply min-w-full divide-y divide-coolgray-200;
|
@apply min-w-full divide-y divide-coolgray-200;
|
||||||
}
|
}
|
||||||
|
|
||||||
thead {
|
thead {
|
||||||
@apply uppercase;
|
@apply uppercase;
|
||||||
}
|
}
|
||||||
|
|
||||||
tbody {
|
tbody {
|
||||||
@apply divide-y divide-coolgray-200;
|
@apply divide-y divide-coolgray-200;
|
||||||
}
|
}
|
||||||
|
|
||||||
tr {
|
tr {
|
||||||
@apply text-neutral-400;
|
@apply text-neutral-400;
|
||||||
}
|
}
|
||||||
|
|
||||||
tr th {
|
tr th {
|
||||||
@apply px-3 py-3.5 text-left text-white;
|
@apply px-3 py-3.5 text-left text-white;
|
||||||
}
|
}
|
||||||
|
|
||||||
tr th:first-child {
|
tr th:first-child {
|
||||||
@apply py-3.5 pl-4 pr-3 sm:pl-6;
|
@apply py-3.5 pl-4 pr-3 sm:pl-6;
|
||||||
}
|
}
|
||||||
|
|
||||||
tr td {
|
tr td {
|
||||||
@apply px-3 py-4 whitespace-nowrap;
|
@apply px-3 py-4 whitespace-nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
tr td:first-child {
|
tr td:first-child {
|
||||||
@apply pl-4 pr-3 font-bold sm:pl-6;
|
@apply pl-4 pr-3 font-bold sm:pl-6;
|
||||||
}
|
}
|
||||||
@@ -121,12 +156,15 @@ tr td:first-child {
|
|||||||
.buyme {
|
.buyme {
|
||||||
@apply block px-3 py-2 mt-10 text-sm font-semibold leading-6 text-center text-white rounded-md shadow-sm bg-coolgray-200 hover:bg-coolgray-300 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-coolgray-200 hover:no-underline;
|
@apply block px-3 py-2 mt-10 text-sm font-semibold leading-6 text-center text-white rounded-md shadow-sm bg-coolgray-200 hover:bg-coolgray-300 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-coolgray-200 hover:no-underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
.subtitle {
|
.subtitle {
|
||||||
@apply pt-2 pb-10;
|
@apply pt-2 pb-10;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fullscreen {
|
.fullscreen {
|
||||||
@apply fixed top-0 left-0 w-full h-full z-[9999] bg-coolgray-100 overflow-y-auto scrollbar pb-4 ;
|
@apply fixed top-0 left-0 w-full h-full z-[9999] bg-coolgray-100 overflow-y-auto scrollbar pb-4;
|
||||||
}
|
}
|
||||||
|
|
||||||
input.input-sm {
|
input.input-sm {
|
||||||
@apply pr-10;
|
@apply pr-10;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,26 +44,44 @@
|
|||||||
$application->status)->contains(['running']),
|
$application->status)->contains(['running']),
|
||||||
'border-l border-dashed border-warning' => Str::of(
|
'border-l border-dashed border-warning' => Str::of(
|
||||||
$application->status)->contains(['starting']),
|
$application->status)->contains(['starting']),
|
||||||
'flex gap-2 box group',
|
'flex gap-2 box-without-bg bg-coolgray-100 hover:text-neutral-300 group',
|
||||||
])>
|
])>
|
||||||
<a wire:navigate class="flex flex-col flex-1 group-hover:text-white hover:no-underline"
|
<div class="flex flex-row w-full">
|
||||||
href="{{ route('project.service.show', [...$parameters, 'service_name' => $application->name]) }}">
|
<div class="flex flex-col flex-1">
|
||||||
@if ($application->human_name)
|
<div class="pb-2">
|
||||||
{{ Str::headline($application->human_name) }}
|
@if ($application->human_name)
|
||||||
@else
|
{{ Str::headline($application->human_name) }}
|
||||||
{{ Str::headline($application->name) }}
|
@else
|
||||||
@endif
|
{{ Str::headline($application->name) }}
|
||||||
@if ($application->configuration_required)
|
@endif
|
||||||
<span class="text-xs text-error">(configuration required)</span>
|
<span class="text-xs">({{ $application->image }})</span>
|
||||||
@endif
|
</div>
|
||||||
@if ($application->description)
|
@if ($application->configuration_required)
|
||||||
<span class="text-xs">{{ Str::limit($application->description, 60) }}</span>
|
<span class="text-xs text-error">(configuration required)</span>
|
||||||
@endif
|
@endif
|
||||||
@if ($application->fqdn)
|
@if ($application->description)
|
||||||
<span class="text-xs">{{ Str::limit($application->fqdn, 60) }}</span>
|
<span class="text-xs">{{ Str::limit($application->description, 60) }}</span>
|
||||||
@endif
|
@endif
|
||||||
<div class="text-xs">{{ $application->status }}</div>
|
@if ($application->fqdn)
|
||||||
</a>
|
<span class="text-xs">{{ Str::limit($application->fqdn, 60) }}</span>
|
||||||
|
@endif
|
||||||
|
<div class="text-xs">{{ $application->status }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center px-4">
|
||||||
|
<a wire:navigate
|
||||||
|
class="flex flex-col flex-1 group-hover:text-white hover:no-underline"
|
||||||
|
href="{{ route('project.service.show', [...$parameters, 'service_name' => $application->name]) }}">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" class="icon hover:text-warning"
|
||||||
|
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.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z" />
|
||||||
|
<path d="M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
@foreach ($databases as $database)
|
@foreach ($databases as $database)
|
||||||
@@ -74,23 +92,43 @@
|
|||||||
$database->status)->contains(['running']),
|
$database->status)->contains(['running']),
|
||||||
'border-l border-dashed border-warning' => Str::of(
|
'border-l border-dashed border-warning' => Str::of(
|
||||||
$database->status)->contains(['restarting']),
|
$database->status)->contains(['restarting']),
|
||||||
'flex gap-2 box group',
|
'flex gap-2 box-without-bg bg-coolgray-100 hover:text-neutral-300 group',
|
||||||
])>
|
])>
|
||||||
<a wire:navigate class="flex flex-col flex-1 group-hover:text-white hover:no-underline"
|
|
||||||
href="{{ route('project.service.show', [...$parameters, 'service_name' => $database->name]) }}">
|
|
||||||
@if ($database->human_name)
|
<div class="flex flex-row w-full">
|
||||||
{{ Str::headline($database->human_name) }}
|
<div class="flex flex-col flex-1">
|
||||||
@else
|
<div class="pb-2">
|
||||||
{{ Str::headline($database->name) }}
|
@if ($database->human_name)
|
||||||
@endif
|
{{ Str::headline($database->human_name) }}
|
||||||
@if ($database->configuration_required)
|
@else
|
||||||
<span class="text-xs text-error">(configuration required)</span>
|
{{ Str::headline($database->name) }}
|
||||||
@endif
|
@endif
|
||||||
@if ($database->description)
|
<span class="text-xs">({{ $database->image }})</span>
|
||||||
<span class="text-xs">{{ Str::limit($database->description, 60) }}</span>
|
</div>
|
||||||
@endif
|
@if ($database->configuration_required)
|
||||||
<div class="text-xs">{{ $database->status }}</div>
|
<span class="text-xs text-error">(configuration required)</span>
|
||||||
</a>
|
@endif
|
||||||
|
@if ($database->description)
|
||||||
|
<span class="text-xs">{{ Str::limit($database->description, 60) }}</span>
|
||||||
|
@endif
|
||||||
|
<div class="text-xs">{{ $database->status }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center px-4">
|
||||||
|
<a wire:navigate
|
||||||
|
class="flex flex-col flex-1 group-hover:text-white hover:no-underline"
|
||||||
|
href="{{ route('project.service.show', [...$parameters, 'service_name' => $database->name]) }}">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" class="icon hover:text-warning"
|
||||||
|
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.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z" />
|
||||||
|
<path d="M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user