refactor(glass): migrate Button.secondary + Input + MobileNav off bespoke glass-surface #131
No reviewers
Labels
No labels
agent-context-drift
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: rstillwell/deckhearth#131
Loading…
Reference in a new issue
No description provided.
Delete branch "migrate-button-input-mobilenav-to-glass-primitive"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Closes the
migrate-button-input-mobilenav-to-glass-primitiveconvoy (seeded by PR #127). All 3 residual handrolledvar(--glass-surface-*)inline-style usages migrated. CI allowlist reduced from 6 entries to 3 (chrome only).This also closes the parent convoy
unify-glass-panel-surfacesfor-real-this-time — no residual handrolled glass-surface usage anywhere outside the 3 chrome blocks (Layout, TopSearchBar, GlassSurface primitive).Architect decisions
Button.jssecondary.btn-glass-secondaryutility class<GlassSurface>setsbackgroundinline; CSS:hovercan't override without!important. Pure-CSS hover swap is cleaner.Input.js.glass-inpututility class<GlassSurface>'s gradient-border trick requiresborder: 1px solid transparent, which conflicts with<Input>'s conditional1px solid #dc2626error border swap.MobileNavigation.js<GlassSurface tint="mid" blur="mid" rim="subtle" cornerLights="chrome">.page-header-glassbut that's wrong tint (high vs mid) and adds a misplaced bottom-border separator.<GlassSurface>is the better fit AND brings chrome-tier corner-light bleed for free.Why a single PR (not 3 parallel briefs)
The seed suggested 3 small parallel-safe briefs. On execution, D1 and D2 both add new utility classes to
styles/globals.css— they can't run truly in parallel without merge conflicts. With the CI billing block still active, each PR also costs an admin-merge cycle. Single PR is faster, easier end-to-end review, and the natural shape for a 2-3 hour convoy with tightly-coupled artifacts.Files changed
styles/globals.css.btn-glass-secondary(with:hovervariant) +.glass-input. Both classes documented inline.components/ui/Button.jsvariant === 'secondary'block: inline style + Tailwind hover arbitrary class →variantClass = 'btn-glass-secondary font-medium'. Other variants untouched.components/ui/Input.jsglass-inputclassName; removes inlinebackground+backdropFilter. Conditional error border stays in JSX.components/MobileNavigation.js<GlassSurface>from./ui; backdrop<div>swapped for<GlassSurface as="div" ...>..github/workflows/ci.ymlGLASS_ALLOWLISTshrunk 6 → 3 entries (the 3 pending-migration entries removed, TODO comments deleted)..convoys/migrate-button-input-mobilenav-to-glass-primitive.mdNet diff: +157 / -44.
Verification
grep -lE "var\\(--glass-surface-(low|mid|high)\\)" pages components -r --include='*.js'returns onlycomponents/Layout.js+components/ui/TopSearchBar.js. GlassSurface.js doesn't match because its\var(--glass-surface-${tint})`template literal doesn't match the static(low|mid|high)` regex — intentional; the allowlist entry is forward-compat.npm run lintpasses (1 pre-existing unrelated warning).npm run test:run: 118/118 tests pass.Test plan (manual — both themes critical)
var(--border)1px border in BOTH themes.Convoy closeout
This PR closes the
migrate-button-input-mobilenav-to-glass-primitiveconvoy AND closes the gap inunify-glass-panel-surfaces. The full glass-surface unification is now end-to-end:.glass-panel*/<GlassSurface>/.page-header-glass.<GlassSurface cornerLights="chrome">or the inline gradient-border pattern (3 documented sites only).forbidden-patternsCheck 7/7) enforces "no new bespokevar(--glass-surface-*)inline styles" with a 3-entry allowlist.Related
.convoys/migrate-button-input-mobilenav-to-glass-primitive.md.convoys/unify-glass-panel-surfaces.md(alreadyclosed).Made with Cursor
The latest updates on your projects. Learn more about Vercel for GitHub.