Skip to content

[remediate-2026-08-18] UX-M10 Shared primitives are re-implemented locally instead of imported #462

Description

@juan294

Evidence type: [evidence]
Time horizon: After launch
Files: frontend/src/pages/PasswordChange.tsx:20-45, frontend/src/App.tsx:64-78

What's happening: PasswordChange.tsx defines a local Switch component while ui/Switch.tsx already exists unimported; App.tsx defines two inline spinner variants while ui/LoadingSpinner exposes the same thing. The local Switch references Tailwind token classes (bg-input, ring-ring) that aren't defined in tailwind.config.js, so its unchecked state has no background.

Why it matters: With only 7 primitives against 19,200 lines of page code, the component library is already being bypassed rather than extended.

Recommendation: Import ui/Switch in PasswordChange and delete the local copy; replace the two App.tsx spinners with ui/LoadingSpinner.

Expected impact: Fewer divergent implementations; the broken off-state disappears.

Effort estimate: S

Finding ID: UX-M10

Source: docs/agents/pre-launch-report.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    mediumMedium-severity remediationuxUX and design systemwave-2-after-launchPost-launch remediation scope

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions