From 56d0c3d4207133dd622071cbdc7b3d0a59f93281 Mon Sep 17 00:00:00 2001 From: Krzysztof kuhy Rudnicki Date: Sat, 15 Aug 2026 15:04:01 +0200 Subject: [PATCH] unified-design-system: record Phase 3 Documents why FilterBar was not extracted (a name collision over disjoint domains, not a duplicate), the categorical ramp decision, the npm-cannot-consume finding, and the index-vs-distinct-value bug that unit tests could not see. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01U4Rj3s7K2qzrLNgJqqPhno --- unified-design-system/nielsen-audit.md | 5 ++ unified-design-system/phase3-record.md | 113 +++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 unified-design-system/phase3-record.md diff --git a/unified-design-system/nielsen-audit.md b/unified-design-system/nielsen-audit.md index 717bb51..f6fcf38 100644 --- a/unified-design-system/nielsen-audit.md +++ b/unified-design-system/nielsen-audit.md @@ -14,6 +14,11 @@ more repos already contain a structurally similar implementation**. Written 2026-08-14, alongside `design_system` v0.1.0. +**Phase 3 (web, `@kuhyx/web-ui`) is recorded in `phase3-record.md`** — including +why `FilterBar` was *not* extracted (structurally disjoint despite the shared +name) and the new categorical ramp. Read it before re-proposing any web +component. + ## Scope Fourteen Flutter repos, seven web repos, four Python/Tk guard apps. Out of diff --git a/unified-design-system/phase3-record.md b/unified-design-system/phase3-record.md new file mode 100644 index 0000000..b3a1968 --- /dev/null +++ b/unified-design-system/phase3-record.md @@ -0,0 +1,113 @@ +# Phase 3 record — `~/utils/web_ui` (`@kuhyx/web-ui`) + +The web counterpart to Phase 1's Dart `design_system`. Companion to +`nielsen-audit.md`, which holds the grid and the deferred clusters. + +Shipped as `web_ui-v0.3.0`, consumed by **dufs-cloud** and +**awesome-mcp-explorer**. + +## What shipped + +| Item | Notes | +| --- | --- | +| `tokens.css` | Full palette, spacing, radius, type, shadow tiers, focus ring, and the global `:focus-visible` rule. | +| `RangeSlider` | Reconciled from the two drifted copies; keyboard-operable. | +| `quantile.ts` | `nth`, `clamp01`, `quantileValue`, `valueQuantile`, `fractionFromPointer`. | +| `fuzzyMatch` | Was `fuzzyMatch` in dufs-cloud and `matchesFuzzy` in amx. | +| Categorical ramp | `--cat-1…6`; see `tokens.md`. New token group, see below. | + +## FilterBar was NOT extracted — and should not be + +The phase brief listed `FilterBar` + `filter-sort.ts` as the third component, +to be "reconciled" between dufs-cloud (174 lines) and awesome-mcp-explorer +(225). Inspection says they are a **name collision, not a duplicate** — exactly +the Phase 1 trap the brief itself warns about, one level deeper than the three +`FilterSheet`s. + +They share a name and nothing else: + +| | dufs-cloud | awesome-mcp-explorer | +| --- | --- | --- | +| Shape | horizontal `
` strip | vertical `