fix(ui): R10 S4 review — guard .is-current against aria-current="false" + shadow transition

Follow-ups from the /code-review pass:
- .is-current[aria-current] now excludes aria-current="false" — the recipe is a
  shared primitive and a consumer using the common `x ? "true" : "false"` idiom
  would otherwise paint a non-current row as current.
- add box-shadow to the .pill/.is-current transition so the Tabs/SettingsPanel
  on-state shadow fades in instead of popping (it lost the utility `transition`).
- document that .chip-solid is intentionally paint-only (composes on a site's own
  geometry) so a truncating single-element chip isn't forced into inline-flex.

The 3 intentional visual changes (hover-border 55%, tag-filter transparent
resting, RemovableChip tint+border) were UAT-accepted as-is. PlexSidebar's facet
Chip (glass-card resting) deferred — wants a .pill soft-glass variant.
This commit is contained in:
2026-08-10 23:25:21 +02:00
parent dcb91066f5
commit 7ff1ec1db0
+13 -6
View File
@@ -438,7 +438,8 @@ body {
transition:
color 0.15s ease,
background-color 0.15s ease,
border-color 0.15s ease;
border-color 0.15s ease,
box-shadow 0.15s ease; /* so an on-state shadow (Tabs/SettingsPanel) fades in, not pops */
}
.pill:hover,
.is-current:hover {
@@ -450,9 +451,11 @@ body {
.is-current:hover {
background-color: var(--card);
}
/* selected / current — SOLID accent fill (the dominant idiom) */
/* selected / current — SOLID accent fill (the dominant idiom). The `:not([aria-current="false"])`
guard matters: `.is-current` is a shared primitive and a consumer using the common
`aria-current={x ? "true" : "false"}` idiom would otherwise paint a NON-current row as current. */
.pill[aria-pressed="true"],
.is-current[aria-current] {
.is-current[aria-current]:not([aria-current="false"]) {
background-color: var(--accent);
color: var(--accent-fg);
border-color: var(--accent);
@@ -465,9 +468,13 @@ body {
border-color: color-mix(in srgb, var(--accent) 40%, transparent);
}
/* .chip — an applied tag / filter token (rounded, tinted). The tint is the resting look (a filter
is "on" whenever the chip exists); removable variants add their own × button as a child.
.chip-solid = the strong-fill token (an applied tag colour, a picked channel). */
/* .chip — an applied tag / filter token (rounded, tinted, self-contained: display + geometry +
paint). The tint is the resting look (a filter is "on" whenever the chip exists); removable
variants add their own × button as a child.
.chip-solid is intentionally a PAINT-ONLY modifier (bg/text/border colour, no display or
geometry): it sits on a site's OWN chip geometry so a truncating single-element chip
(ChannelTags) isn't forced into inline-flex, which would break its text-overflow. Use it WITH a
site's `rounded-full`/`border` utilities (or on top of `.chip`), never bare. */
.chip {
display: inline-flex;
align-items: center;