style(ui): use solid sidebar pills instead of accent gradients

Active and nested nav rows are rounded-md with neutral selected fills
and a left accent rail. Remove purple/yellow gradient washes and update
the redesign notes to match.
This commit is contained in:
Andras Bacsai committed 2026-08-04 00:22:33 +02:00
1 parent 1bb54c0ca1
commit ff0590137d
3 files changed
+18 -34

No files matched your search

+6 -6
View File
@@ -38,9 +38,8 @@ The interface is compact and product-focused:
- outline Reicon glyphs through `<x-reicon>`; - outline Reicon glyphs through `<x-reicon>`;
- the Coolify purple brand accent in light mode; - the Coolify purple brand accent in light mode;
- the readable Coolify yellow accent in dark mode; - the readable Coolify yellow accent in dark mode;
- subtle active-item gradients that fade completely into the surrounding - solid active-item fills (neutral black/white opacity), not accent gradients;
background at the far edge, with the active pill rounded only on the left active state is the left accent rail plus a flat selected surface;
(square on the right so it bleeds into the content edge);
- sentence-case labels and headings; - sentence-case labels and headings;
- never use the em dash (`—`) in UI copy. Prefer a period, colon, comma, or - never use the em dash (`—`) in UI copy. Prefer a period, colon, comma, or
ASCII hyphen (`-`) for empty cells and separators. ASCII hyphen (`-`) for empty cells and separators.
@@ -124,9 +123,10 @@ opacity rather than a fully saturated fill.
- Main sidebar groups are compact, use outline Reicons, and keep a 32px row - Main sidebar groups are compact, use outline Reicons, and keep a 32px row
height. height.
- Active sidebar rows have a curved accent rail and a subtle horizontal - Active sidebar rows are rounded pills (`rounded-md`) with an accent rail on
gradient. The gradient must fade to the exact sidebar background at the the left plus a solid neutral selected fill (`bg-black/5` light,
right edge in both themes. `bg-white/6` dark). Hover rows use the same radius. Do not use accent-tinted
gradients on nav rows; yellow washes look muddy on dark UI.
- Nested items use a thin guide line with a visible active segment, not a thick - Nested items use a thin guide line with a visible active segment, not a thick
box border. box border.
- The update badge sits on the version row and uses a tiny fully rounded - The update badge sits on the version row and uses a tiny fully rounded
+7 -24
View File
@@ -75,7 +75,7 @@
@apply min-h-10 rounded-md border border-white/10 bg-white/10 px-2 py-2 text-sm font-semibold text-white shadow-inner active:bg-white/25; @apply min-h-10 rounded-md border border-white/10 bg-white/10 px-2 py-2 text-sm font-semibold text-white shadow-inner active:bg-white/25;
} }
/* Accent bar on the active sidebar item (Linear/Wave-style) */ /* Accent rail on the active rounded pill (sits flush on the left edge) */
.menu-item-active::before { .menu-item-active::before {
content: ""; content: "";
position: absolute; position: absolute;
@@ -84,7 +84,7 @@
left: 0; left: 0;
width: 3px; width: 3px;
background: var(--color-accent); background: var(--color-accent);
border-radius: 0; border-radius: 0.375rem 0 0 0.375rem;
pointer-events: none; pointer-events: none;
} }
.menu-subitem-active::before { .menu-subitem-active::before {
@@ -92,16 +92,13 @@
position: absolute; position: absolute;
top: 0; top: 0;
bottom: 0; bottom: 0;
left: calc(-0.25rem - 4px); left: 0;
z-index: 1; z-index: 1;
width: 3px; width: 3px;
border-radius: 0; border-radius: 0.375rem 0 0 0.375rem;
background: var(--color-accent); background: var(--color-accent);
pointer-events: none; pointer-events: none;
} }
.menu-subitem-active {
overflow: visible !important;
}
.sidebar-collapsed .menu-item-active::before { .sidebar-collapsed .menu-item-active::before {
display: none; display: none;
} }
@@ -111,26 +108,12 @@
opacity: 1; opacity: 1;
} }
/* Kill any legacy accent wash; fill is solid via menu-item-active utility. */
.menu-item-active, .menu-item-active,
.menu-subitem-active { .menu-subitem-active,
background-image: linear-gradient(
90deg,
rgba(107, 22, 237, 0.2) 0%,
rgba(107, 22, 237, 0.1) 42%,
rgba(107, 22, 237, 0.035) 76%,
transparent 100%
);
}
.dark .menu-item-active, .dark .menu-item-active,
.dark .menu-subitem-active { .dark .menu-subitem-active {
background-image: linear-gradient( background-image: none;
90deg,
rgba(252, 212, 82, 0.2) 0%,
rgba(252, 212, 82, 0.1) 42%,
rgba(252, 212, 82, 0.035) 76%,
transparent 100%
);
} }
/* vertical connector line for a nested nav group */ /* vertical connector line for a nested nav group */
+5 -4
View File
@@ -205,7 +205,7 @@
} }
@utility menu-item { @utility menu-item {
@apply relative flex gap-2.5 items-center h-8 px-2.5 w-full text-[13px] font-medium rounded-none truncate min-w-0 transition-colors text-neutral-500 dark:text-fg-faint hover:bg-neutral-100 hover:text-black dark:hover:bg-white/[0.05] dark:hover:text-fg; @apply relative flex gap-2.5 items-center h-8 px-2.5 w-full text-[13px] font-medium rounded-md truncate min-w-0 transition-colors text-neutral-500 dark:text-fg-faint hover:bg-neutral-100 hover:text-black dark:hover:bg-white/[0.05] dark:hover:text-fg;
} }
@utility menu-item-icon { @utility menu-item-icon {
@apply shrink-0 size-[18px] opacity-90; @apply shrink-0 size-[18px] opacity-90;
@@ -216,7 +216,8 @@
} }
@utility menu-item-active { @utility menu-item-active {
@apply overflow-visible rounded-none bg-transparent text-black hover:bg-transparent dark:bg-transparent dark:text-fg dark:hover:bg-transparent; /* Solid selected pill + accent rail (app.css ::before). No accent gradient. */
@apply overflow-hidden rounded-md bg-black/[0.05] text-black hover:bg-black/[0.05] dark:bg-white/[0.06] dark:text-fg dark:hover:bg-white/[0.06];
} }
/* Subtle Title-Case section header */ /* Subtle Title-Case section header */
@@ -226,10 +227,10 @@
/* Indented child rows in a collapsible nav group */ /* Indented child rows in a collapsible nav group */
@utility menu-subitem { @utility menu-subitem {
@apply relative flex gap-2.5 items-center h-8 pl-3 pr-2.5 w-full text-[13px] font-medium rounded-none truncate min-w-0 transition-colors text-neutral-500 dark:text-fg-faint hover:bg-neutral-100 hover:text-black dark:hover:bg-white/[0.05] dark:hover:text-fg; @apply relative flex gap-2.5 items-center h-8 pl-3 pr-2.5 w-full text-[13px] font-medium rounded-md truncate min-w-0 transition-colors text-neutral-500 dark:text-fg-faint hover:bg-neutral-100 hover:text-black dark:hover:bg-white/[0.05] dark:hover:text-fg;
} }
@utility menu-subitem-active { @utility menu-subitem-active {
@apply rounded-none bg-transparent text-black hover:bg-transparent dark:bg-transparent dark:text-fg dark:hover:bg-transparent; @apply overflow-hidden rounded-md bg-black/[0.05] text-black hover:bg-black/[0.05] dark:bg-white/[0.06] dark:text-fg dark:hover:bg-white/[0.06];
} }
@utility sub-menu-wrapper { @utility sub-menu-wrapper {