Files
submanager/doc/plan_color.md
2025-09-16 14:30:14 +09:00

3.9 KiB

Color & Theme Plan (Material 3)

Goals

  • Remove Glassmorphism. Use Material 3 ColorScheme/typography/shape/elevation consistently.
  • Ensure light/dark/system modes with accessible contrast; no dark-on-dark text.
  • Semantic colors: primary/secondary/info/success/warning/error.

Phases

  1. Audit + Baseline
  • Inventory AppColors and Glass usages; map to ColorScheme.
  • Set ColorScheme.error=#EF4444 (light/dark) and verify Snackbar uses.
  1. Core Components
  • Settings: unify to onSurface/onSurfaceVariant/primary and fix Switch deprecations.
  • Home Summary: surface/elevation + on-colors; badges use surfaceContainer variants.
  • Add Subscription: selectors/fields to M3; disable glass flags.
  1. Analysis & Lists
  • Charts: grid/labels to onSurfaceVariant; tooltips to inverseSurface.
  • Event/Detail sections: containers to surface + outline; text/icons to onSurface.
  1. Theme & Cleanup
  • Refactor app_theme.dart to remove glass defaults; prefer ColorScheme-driven themes.
  • Replace remaining hard-coded colors (AppColors.*) with scheme; keep gradients sparingly.
  • Resolve lints: const constructors, deprecated APIs (activeColor, scale).

Validation

  • Run scripts/check.sh every change.
  • Visual check in light/dark/system; confirm no low-contrast text.

Current Status (2025-09-10)

  • Settings screen updated to ColorScheme; Switch deprecations fixed.
  • AddSubscription selectors use M3 (glass flags off).
  • MainSummaryCard event-savings text = primary.
  • Monthly chart tooltips use inverseSurface/onInverseSurface.
  • Next: theme/app_theme.dart cleanup; remaining AppColors usages; chart palette alignment.

Current Status (2025-09-11)

  • Billing/Currency/Category selectors: use ColorScheme (selected=primary/onPrimary, unselected=surface+outline, text=onSurface). Glass/grad props deprecated and ignored.
  • AnalysisBadge: remove AppColors, use surface + outline + subtle shadow.
  • SubscriptionCard: header strip uses error/warning/category; price and badges use ColorScheme (error/primary/onSurfaceVariant); due-chip uses success/warning extension; removed hard-coded reds/grays.
  • Checks: scripts/check.sh passes (format/analyze/test).
  • Next: migrate remaining AppColors usages (detail sections, snackbars, splash), reduce hard-coded Colors in adaptive_theme.dart, optional: revisit success/warning harmonization.

Update (2025-09-11, PM)

  • DetailEventSection: replaced green constants with ColorScheme.success; onPrimary for pill text.
  • AddSubscriptionEventSection: info boxes use tertiary; removed AppColors.
  • SMS Scan widgets: progress/button now use ColorScheme.primary.
  • SubscriptionPieChartCard: no AppColors; chart palette uses scheme.success/warning; in-chart labels are white; exchange-rate chip uses primary soft background/border.
  • EventAnalysisCard: discount/current price and discount badge use scheme.success/error.
  • TotalExpenseSummaryCard: success icon uses scheme.success.
  • AppLock/Main screen SnackBars: unified to scheme.error/success with onPrimary text.
  • Splash: overlay/particles/title/subtitle/progress use ColorScheme; particle color bound to scheme.primary.
  • Checks: scripts/check.sh passes.

Update (2025-09-11, PM-2)

  • Dark Theme(adaptive_theme.dart): replaced hard-coded widget colors with ColorScheme-driven values.
    • Inputs: fill=surface, borders=outline/primary/error, labels/hints=onSurfaceVariant.
    • Buttons/Switch/Checkbox/Radio/Slider/TabBar/Divider: all use scheme tokens.
    • AppBar/Card: background=surface, foreground/on-colors from scheme.
    • OLED: inherits dark with surface override only.
  • Checks: scripts/check.sh passes (no issues).

Update (2025-09-11, PM-3)

  • Light Theme(app_theme.dart): AppColors 의존을 ColorScheme 사용으로 축소.
    • InputDecorationTheme: fill=surface, border=outline/primary/error, label/hint=onSurfaceVariant.
    • Buttons/FAB: primary/onPrimary, Outlined side=outline.
    • SnackBarTheme: primary/onPrimary.
    • Scaffold background 유지(#F1F5F9) — ColorScheme.background 대신 직접 지정.
  • Checks: scripts/check.sh passes.