Last updated: 2026-03-05
WhatShouldIPlay adopts project design tokens + app-specific React feature components as the current component system baseline for the web app.
- Visual language: tokenized CSS in src/styles.css
- Composition style: app-specific feature components and controller hooks
- Accessibility model: semantic HTML, explicit ARIA wiring, focused utility components, and CI accessibility gates
- Keeps the existing visual identity without introducing a heavyweight UI framework.
- Supports incremental UX modernization while preserving current feature velocity.
- Reduces abstraction drift by documenting what the repo actually uses today.
- Workspace navigation uses custom semantic tab buttons in the header.
- Advanced settings use project-owned disclosure/collapse patterns.
App.tsxhas been reduced to a thin shell that delegates to controller and feature modules.
- Shared form-field wrappers with consistent labels, help text, and status/error presentation.
- Stronger layout primitives for page stage, summary strips, and grouped settings sections.
- Better web/desktop parity through shared UI contracts and documented design tokens.
Heroremains the highest-contrast product surface in both targets and must contain brand kicker, current status, and primary utility actions.Play stageis the primary panel in both targets and uses elevated framing compared with surrounding panels.Settingsdefault to hidden/collapsed so the first view is always content-first.Settings sectionsuse the same three-way grouping model:Sources,Rules,Advancedon web;Sources,Rules,Libraryon desktop until advanced parity is completed.Secondary panelssuch as library/history should read quieter than the wheel stage through lower contrast and less decorative treatment.Control languageshould prefer segmented selectors, compact cards, and action rows over repeating pill buttons for every interaction.Spacing rhythmshould preserve the same hierarchy: masthead spacing > panel spacing > control spacing.Motionshould stay functional and celebratory, but never block input; reduced-motion handling is required on both targets.
- Web masthead and workspace navigation: src/features/layout/AppHeader.tsx
- Web play stage and winner flow: src/features/play/PlayPanel.tsx
- Web token source of truth: src/styles.css
- Desktop masthead, grouped settings, and wheel stage: apps/desktop/src/main.rs
- No wholesale migration to Material UI or Tailwind component kits.
- No Storybook adoption.
- No visual redesign reset; tokens remain the source of truth.