refactor(ui): R10 S4 — complete the selection-paint sweep (all pill idioms)
The first S4 pass migrated a subset, which left same-idiom selection pills hand-rolled and made adjacent controls inconsistent (a /code-review finding). This completes the sweep so every selected-among-options control shares the recipe: - plain pills → .pill (+ aria-pressed): Channels status filters + view tabs, Sidebar filter-tag chips + date presets + custom-dates, Stats tabs + ranges. - glass-card-resting pills → .pill with the resting `glass-card glass-hover` kept in the non-pressed branch (solid accent when pressed): PlexSidebar library scope + the facet Chip (retired the round-1 "deferred" note — the recipe already expresses this via the resting branch, no new variant needed). - custom-dates aria-pressed is coerced with !! so a date string can't leak into the attribute and miss the [aria-pressed="true"] paint. - drop the dead `border` on ChannelTags' chip-solid (accent border on accent bg). Out of scope (a separate concern, NOT selection-among-options): primary/action buttons that share the accent fill — Banner action, ConfirmProvider primary, PlexBrowse primary, PlayerModal watched-toggle — these want a future .btn-primary recipe. Left by-design: tableHeader filter options (PopoverItem + keepSelectedPaint, owned by the popover platform).
This commit is contained in:
@@ -46,11 +46,8 @@ function TagChip({
|
||||
data-tag={tag.name}
|
||||
onClick={onClick}
|
||||
title={t("sidebar.channelCount", { count })}
|
||||
className={`inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-full border shadow-xs hover:shadow-sm active:translate-y-px transition ${
|
||||
active
|
||||
? "bg-accent text-accent-fg border-accent"
|
||||
: "bg-card border-border text-fg hover:border-accent"
|
||||
}`}
|
||||
aria-pressed={active}
|
||||
className="pill inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-full border shadow-xs hover:shadow-sm active:translate-y-px"
|
||||
>
|
||||
<span>{tag.name}</span>
|
||||
<span
|
||||
@@ -169,11 +166,8 @@ export default function Sidebar({
|
||||
dateTo: undefined,
|
||||
})
|
||||
}
|
||||
className={`text-xs px-2.5 py-1 rounded-full border shadow-xs active:translate-y-px transition ${
|
||||
activePreset
|
||||
? "bg-accent text-accent-fg border-accent"
|
||||
: "bg-card border-border hover:border-accent"
|
||||
}`}
|
||||
aria-pressed={activePreset}
|
||||
className="pill text-xs px-2.5 py-1 rounded-full border shadow-xs active:translate-y-px"
|
||||
>
|
||||
{t("sidebar.datePreset." + p.key)}
|
||||
</button>
|
||||
@@ -185,11 +179,8 @@ export default function Sidebar({
|
||||
setCustomDates(next);
|
||||
if (next) setFilters({ ...filters, maxAgeDays: undefined });
|
||||
}}
|
||||
className={`text-xs px-2.5 py-1 rounded-full border shadow-xs active:translate-y-px transition ${
|
||||
customDates || filters.dateFrom || filters.dateTo
|
||||
? "bg-accent text-accent-fg border-accent"
|
||||
: "bg-card border-border hover:border-accent"
|
||||
}`}
|
||||
aria-pressed={!!(customDates || filters.dateFrom || filters.dateTo)}
|
||||
className="pill text-xs px-2.5 py-1 rounded-full border shadow-xs active:translate-y-px"
|
||||
>
|
||||
{t("sidebar.custom")}
|
||||
</button>
|
||||
|
||||
Reference in New Issue
Block a user