| j / k | Scroll down / up |
| gg | Scroll to top |
| G | Scroll to bottom |
| / | Open search |
| ? | Show this help |
| Esc | Close search / help |
| n / N | Next / previous section |
| h | Go to landing |
| d | Go to docs |
| : | Command mode — type section name |
Press ? or Esc to close
Full design token system. Runtime theme switching with zero refactor cost. All UI uses semantic tokens — never hardcoded values.
| Class | Role |
|---|---|
AppColors | Raw palette — never used directly in UI |
AppThemeColors | ThemeExtension with semantic properties. Access via context.colors.* |
AppTypography | TextStyle constants. Display · Heading · Body scales. Two font families. |
AppSpacing | Base scale s0–s1200. Aliases: xxs(4) xs(8) sm(12) md(16) lg(20) xl(24) xxl(32) xxxl(40) huge(48) |
AppShadows | Elevation shadow tokens |
class ThemeCubit extends Cubit{ void setLight() => emit(ThemeMode.light); void setDark() => emit(ThemeMode.dark); void toggle() => emit(state == ThemeMode.light ? ThemeMode.dark : ThemeMode.light); } BlocBuilder ( builder: (_, mode) => MaterialApp.router( theme: ThemeCubit.buildTheme(AppThemeColors.light()), darkTheme: ThemeCubit.buildTheme(AppThemeColors.dark()), themeMode: mode, ), );
AppColors.* directly in widgets. Always context.colors.* — the only API into the color system.