9bf4c20f11
Use dynamic viewport sizing and keyboard-aware spacing to keep new-game inputs and navigation reachable in PWA landscape mode on Android tablets. Refs #30. Made-with: Cursor
Feature Bundles (@lib/features)
Feature directories compose domain, data, state, and UI primitives into end-user flows. Each folder exports React/Preact components that can be dropped into any host application.
Available Features
game-listGameListcomponent that renders filters + game cards.
game-detailGameDetailscoreboard with break tracking, undo triggers, and finish controls.
game-lifecycleGameCompletionModalsummarising winners + rematch CTA.
new-game- Wizard step components (
Player1Step,BreakOrderStep, etc.) and modal pickers.
- Wizard step components (
Usage Example
import { GameList, GameCompletionModal } from '@lib/features/game-list';
// or, via umbrella export:
import { GameDetail, GameCompletionModal } from '@lib';
Conventions
- Feature components accept plain props (typically typed with
@lib/domaintypes) and delegate callbacks to the consumer. - State management lives in
@lib/state. Features should remain stateless except for local UI state (e.g. input fields). - Keep CSS modules inside the feature folder to avoid cross-feature leakage.