Context
The remaining operational pages share the same design language but use independent class strings: UsageStats summary cards and filters, UsageChart containers, LogsPage table/detail layout, ErrorsPage grouped cards, ProxyPool and ProxySettings forms/lists. Migrating these after the primitive layer will complete the page-level design-system consolidation.
Depends on #497 and #498. Recommended after #499 and #500 or in parallel if the shared primitive APIs are stable.
Scope
- Migrate UsageStats summary cards, filter chips, chart containers, legends, and empty/loading states.
- Migrate LogsPage list/table, detail panel, pagination controls, and state filters.
- Migrate ErrorsPage error group cards, unread badges, raw detail blocks, empty state, and clear/mark actions.
- Migrate ProxyPool and ProxySettings cards, import/add forms, list items, health badges, and action buttons.
- Preserve usage-history semantics: range/window cards must continue to show history-window data, not cumulative summary substitutes.
Acceptance criteria
Verification
Notes
If this issue grows too large during implementation, split by page family: usage/stats, logs/errors, proxy management.
Context
The remaining operational pages share the same design language but use independent class strings: UsageStats summary cards and filters, UsageChart containers, LogsPage table/detail layout, ErrorsPage grouped cards, ProxyPool and ProxySettings forms/lists. Migrating these after the primitive layer will complete the page-level design-system consolidation.
Depends on #497 and #498. Recommended after #499 and #500 or in parallel if the shared primitive APIs are stable.
Scope
Acceptance criteria
DESIGN.md.anyis introduced.Verification
npm test.npm run build.localhost:8080in light and dark mode.Notes
If this issue grows too large during implementation, split by page family: usage/stats, logs/errors, proxy management.