style(ui): remove description placeholders and normalize control heights

This commit is contained in:
Andras Bacsai
2026-09-15 12:28:16 +02:00
parent 776c56f947
commit 8ab54da2ac
9 changed files with 31 additions and 14 deletions
+1 -1
View File
@@ -59,7 +59,7 @@
/* input, select before */
@utility input-select {
@apply block h-9 px-3 py-1.5 w-full text-sm text-black rounded-md border border-neutral-200 bg-[var(--coollabs-recessed)] dark:text-fg dark:border-white/[0.08] transition-colors disabled:bg-neutral-100 disabled:text-neutral-400 dark:disabled:bg-white/[0.03] dark:disabled:text-fg-faint;
@apply block h-8 px-3 py-1.5 w-full text-sm text-black rounded-md border border-neutral-200 bg-[var(--coollabs-recessed)] dark:text-fg dark:border-white/[0.08] transition-colors disabled:bg-neutral-100 disabled:text-neutral-400 dark:disabled:bg-white/[0.03] dark:disabled:text-fg-faint;
box-shadow: none;
&:where(.dark, .dark *) {
+2 -2
View File
@@ -66,7 +66,7 @@
{{ $project->name }}
</h3>
<p class="mt-0.5 truncate text-[11px] text-neutral-500 dark:text-fg-faint">
{{ $project->description ?: 'No description' }}
{{ $project->description }}
</p>
</div>
</div>
@@ -181,7 +181,7 @@
{{ $server->name }}
</h3>
<p class="mt-0.5 truncate text-[11px] text-neutral-500 dark:text-fg-faint">
{{ $server->description ?: 'No description' }}
{{ $server->description }}
</p>
</div>
@if ($serverStatusType !== 'success')
@@ -121,7 +121,7 @@
class="truncate text-[13px]! leading-4! font-semibold! text-black dark:text-fg"
x-text="project.name"></h2>
<p class="mt-0.5 truncate text-[11px] text-neutral-500 dark:text-fg-faint"
x-text="project.description || 'No description'"></p>
x-text="project.description || ''"></p>
</div>
</div>
@@ -55,7 +55,7 @@
return [
'uuid' => $server->uuid,
'name' => $server->name,
'description' => $server->description ?: 'No description',
'description' => $server->description,
'href' => route('server.show', ['server_uuid' => $server->uuid]),
'status' => $status,
'statusType' => $statusType,
@@ -78,7 +78,7 @@
@endif
</div>
<p class="mt-1 text-xs text-neutral-500 dark:text-fg-dim">
{{ $privateKey->description ?: 'No description provided.' }}
{{ $privateKey->description }}
</p>
</div>
</div>
@@ -33,7 +33,7 @@
href="{{ route('shared-variables.environment.show', ['project_uuid' => $project->uuid, 'environment_uuid' => $environment->uuid]) }}" {{ wireNavigate() }}>
<div class="flex items-start gap-3">
<div class="flex size-8 shrink-0 items-center justify-center rounded-lg border border-neutral-200 bg-neutral-50 text-neutral-500 dark:border-white/[0.08] dark:bg-white/[0.04] dark:text-fg-dim"><x-reicon name="layers" class="size-4" /></div>
<div class="min-w-0 flex-1"><h3 class="truncate text-[13px]! leading-4! font-semibold! text-black dark:text-fg">{{ $environment->name }}</h3><p class="mt-0.5 truncate text-[11px] text-neutral-500 dark:text-fg-faint">{{ $environment->description ?: 'No description' }}</p></div>
<div class="min-w-0 flex-1"><h3 class="truncate text-[13px]! leading-4! font-semibold! text-black dark:text-fg">{{ $environment->name }}</h3><p class="mt-0.5 truncate text-[11px] text-neutral-500 dark:text-fg-faint">{{ $environment->description }}</p></div>
</div>
</a>
@endforeach
@@ -50,7 +50,7 @@
href="{{ route('shared-variables.environment.show', ['project_uuid' => $project->uuid, 'environment_uuid' => $environment->uuid]) }}" {{ wireNavigate() }}
class="flex min-h-14 items-center gap-3 border-b border-neutral-200 px-4 py-2.5 last:border-b-0 hover:bg-neutral-50 hover:no-underline dark:border-white/[0.07] dark:hover:bg-white/[0.025]">
<x-reicon name="layers" class="size-4 shrink-0 text-neutral-500 dark:text-fg-dim" />
<div class="min-w-0 flex-1"><div class="truncate text-[13px] font-medium">{{ $environment->name }}</div><div class="truncate text-[11px] text-neutral-500 dark:text-fg-faint">{{ $environment->description ?: 'No description' }}</div></div>
<div class="min-w-0 flex-1"><div class="truncate text-[13px] font-medium">{{ $environment->name }}</div><div class="truncate text-[11px] text-neutral-500 dark:text-fg-faint">{{ $environment->description }}</div></div>
<span class="shrink-0 text-[11px] text-neutral-500 dark:text-fg-dim">{{ $project->name }}</span>
</a>
@endforeach
@@ -33,7 +33,7 @@
</div>
<div class="min-w-0 flex-1">
<h2 class="truncate text-[13px]! leading-4! font-semibold! text-black dark:text-fg">{{ $project->name }}</h2>
<p class="mt-0.5 truncate text-[11px] text-neutral-500 dark:text-fg-faint">{{ $project->description ?: 'No description' }}</p>
<p class="mt-0.5 truncate text-[11px] text-neutral-500 dark:text-fg-faint">{{ $project->description }}</p>
</div>
</div>
<div class="mt-auto pt-4 text-[11px] text-neutral-500 dark:text-fg-dim">
@@ -54,7 +54,7 @@
@else
<x-reicon name="projects" class="size-4 shrink-0 text-neutral-500 dark:text-fg-dim" />
@endif
<div class="min-w-0 flex-1"><div class="truncate text-[13px] font-medium">{{ $project->name }}</div><div class="truncate text-[11px] text-neutral-500 dark:text-fg-faint">{{ $project->description ?: 'No description' }}</div></div>
<div class="min-w-0 flex-1"><div class="truncate text-[13px] font-medium">{{ $project->name }}</div><div class="truncate text-[11px] text-neutral-500 dark:text-fg-faint">{{ $project->description }}</div></div>
<span class="shrink-0 text-[11px] text-neutral-500 dark:text-fg-dim">{{ $project->environment_variables()->count() }} {{ Str::plural('variable', $project->environment_variables()->count()) }}</span>
</a>
@endforeach
+5 -4
View File
@@ -11,12 +11,13 @@ test('default form buttons and inputs share the same control height', function (
preg_match('/@utility button \{[^}]*\}/s', $utilities, $button);
expect($inputSelect[0] ?? '')
->toContain('h-9')
->and($button[0] ?? '')->toContain('h-9')
->and($button[0] ?? '')->toContain('min-h-9')
->toContain('h-8')
->not->toContain('h-9')
->and($button[0] ?? '')->toContain('h-8')
->and($button[0] ?? '')->toContain('min-h-8')
->and($button[0] ?? '')->toContain('whitespace-nowrap')
->and($button[0] ?? '')->toContain('shrink-0')
->and($button[0] ?? '')->not->toContain('h-8');
->and($button[0] ?? '')->not->toContain('h-9');
});
test('settings form surfaces keep input and button heights equal', function () {
@@ -0,0 +1,16 @@
<?php
it('does not show placeholder copy when a description is empty', function () {
$views = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator(__DIR__.'/../../resources/views')
);
$viewContents = '';
foreach ($views as $view) {
if ($view->isFile() && $view->getExtension() === 'php') {
$viewContents .= file_get_contents($view->getPathname());
}
}
expect($viewContents)->not->toContain('No description');
});