diff --git a/.convoys/migrate-button-input-mobilenav-to-glass-primitive.md b/.convoys/migrate-button-input-mobilenav-to-glass-primitive.md new file mode 100644 index 0000000..5ec467e --- /dev/null +++ b/.convoys/migrate-button-input-mobilenav-to-glass-primitive.md @@ -0,0 +1,132 @@ +--- +status: queued +classification: server-only-no-actually-just-frontend-styles-cleanup +parent_convoy: unify-glass-panel-surfaces +blocked_by: [] +size: small +budget_hours: 2-3 +--- + +# migrate-button-input-mobilenav-to-glass-primitive + +## Why + +The `unify-glass-panel-surfaces` convoy's Brief 7 added a CI gate that +forbids bespoke `var(--glass-surface-*)` inline-style usage outside a +documented allowlist. When the gate was being added, three files +turned out to still handroll their own glass surfaces and had to be +admitted to the allowlist to ship the gate now: + +- `components/ui/Button.js` — the `secondary` variant carries + `style={{ background: 'var(--glass-surface-high)', backdropFilter: + '...' }}` and a Tailwind arbitrary class + `hover:bg-[var(--glass-surface-mid)]`. +- `components/ui/Input.js` — the input fill is `style={{ background: + 'var(--glass-surface-high)', backdropFilter: '...' }}` on the + outer wrapper of the input control. +- `components/MobileNavigation.js` — the bottom-nav background + layer is `style={{ background: 'var(--glass-surface-mid)', + backdropFilter: '...' }}`. + +The pattern (inline `background: var(--glass-surface-X)` + inline +`backdropFilter`) is exactly what the convoy spent six briefs +eliminating elsewhere. These three are the residual. + +## Goal (1 sentence) + +Migrate `components/ui/Button.js`'s `secondary` variant, +`components/ui/Input.js`, and `components/MobileNavigation.js` to +compose `` (with the right `cornerLights` + `blur` + +`tint` props from Brief 1) or the appropriate `.glass-panel-*` / +`.page-header-glass` class, then **delete** the three entries from +the `forbidden-bespoke-glass-surface` allowlist in +`.github/workflows/ci.yml` so the gate covers them too. + +## Files in scope + +- `components/ui/Button.js` — the `secondary` variant block only; + leave `primary`, `danger`, `ghost`, etc. as-is unless they + legitimately need the same migration (they don't today). +- `components/ui/Input.js` — the outer wrapper style only. +- `components/MobileNavigation.js` — the bottom-nav backdrop layer + only. +- `.github/workflows/ci.yml` — the `forbidden-bespoke-glass-surface` + check (now Check 7/7 of the consolidated `forbidden-patterns` + job). Delete the three pending entries from `GLASS_ALLOWLIST`, + leaving only the 3 chrome blocks. + +## Open questions for the architect + +1. **`