From db10bfbbca274f3a2db0c96adbac45a1a2540e4f Mon Sep 17 00:00:00 2001 From: npeter83 Date: Fri, 25 Sep 2026 00:05:31 +0200 Subject: [PATCH] feat(design): the header search is a 40 glass pill; a wrapper field dims for its input only (E28 S3c) --- docs/DESIGN.md | 6 +++- frontend/src/components/PlexPlayer.tsx | 6 ++-- frontend/src/components/PlexSearchBox.tsx | 2 +- frontend/src/components/SearchBar.tsx | 19 ++++++++---- frontend/src/components/UpNextCard.tsx | 4 +-- frontend/src/components/VideoCard.tsx | 6 ++-- frontend/src/components/VideoInfoCard.tsx | 6 ++-- .../src/components/plexPlayerControls.tsx | 2 +- frontend/src/components/ui/Button.tsx | 12 ++++---- frontend/src/components/ui/CommandPalette.tsx | 4 +-- frontend/src/components/ui/IconButton.tsx | 11 +++---- frontend/src/components/ui/Input.dom.test.tsx | 10 +++++++ frontend/src/components/ui/fieldStyles.ts | 29 ++++++++++++++----- 13 files changed, 78 insertions(+), 39 deletions(-) diff --git a/docs/DESIGN.md b/docs/DESIGN.md index b8c8c232..0a235778 100644 --- a/docs/DESIGN.md +++ b/docs/DESIGN.md @@ -112,7 +112,8 @@ The chosen rendering of each rule is in the lab under "Decided". The primitives the same 28, so the row lines up. Nothing goes under 24 (WCAG 2.5.8); touch grows it to 44 (A3). - **Icon buttons (A2):** two sizes (28 / 32), r8: the smaller in rows and dense toolbars, the larger on its own. On a picture, a round, dark translucent button, readable on any thumbnail. Round means "floats over something": - on media, or the one floating button over the page (back to top, a 48 glass circle, the FAB). A text + on media, or the one floating button over the page (back to top, a 48 glass circle, the FAB); a button + inside a pill field is round too, so the radii nest. A text button on a picture is a pill (the card's Resume in the accent, From the start dark translucent, C5), and the one 48px glyph is the Play in the middle of a not-started card (C5). - **Touch (A3):** on a coarse pointer every control primitive (`Button`, `SegmentedToggle`, `FilterSelect`, @@ -123,6 +124,8 @@ The chosen rendering of each rule is in the lab under "Decided". The primitives `color-mix(in srgb, var(--fg) 55%, var(--bg))`, ≥ 3:1 against the page in every scheme and mode; focus turns it into a 2px accent edge, `invalid` into the danger edge. A form field is r8 at the `md` height (32); a toolbar search, a field in a popover or an inline rename is `sm` (28), the toolbar search a pill; + the page's one hero field is `lg` (40): the header search, a glass pill floating over the page (the + YouTube/Gmail shape), and the command palette's field; a field in a table row or the pager `xs` (24); an inline rename of a page title keeps the heading's type (`heading`). Text is 1rem and the box 44 on a coarse pointer. [WCAG 1.4.11] - **Dropdown trigger (A5):** `ui/SelectTrigger`. A pill in a toolbar (where the pill means "a filter or a @@ -335,5 +338,6 @@ Wherever there is text, the user can select it and copy it, and no click action | 2026-09-24 | Glass tuner | Retired; the schemes are the only colour choice | Keep it with ranges clamped to the rules | Free tuning is the drift the constitution exists to stop (owner) | | 2026-09-24 | Matrix toned down | Moss #86a05a at Midnight's lightness, near-neutral greys; every white-on-accent part → `--accent-fg` | The B2 lime #a3e635 | The owner found the lime neon and tiring; it was the loudest accent (L 0.85, C 0.21), and fixed white parts sat on it at 1.5:1 | | 2026-09-24 | Field primitives | `Input` / `Textarea` / `InnerInput` + `fieldClass`, `SelectTrigger`, the native controls; the lint rule "no raw ``" | `inputCls` and ~40 hand-styled boxes | Six edges, four radii and two focus looks for one control; the ≥ 3:1 edge held nowhere | +| 2026-09-25 | Header search | A 40 glass pill with the field edge (`lg`); what sits inside it is round | 44, r16, a glass box with a faint edge | The one rounded box among pills, and its edge under 3:1; the hero search is the YouTube/Gmail pill | | 2026-09-24 | Chip family | One `Chip` (filter / token / tag / suggest / ghost) + `DismissibleChip`; nothing under 24; the lint rule "no raw `