feat: ThemeContext + Settings tabs (Interface / App / Sync)
- ThemeContext: dynamic palette (Default/Giro/Tour/Vuelta), font size (small/medium/large), bold labels — all persisted to AsyncStorage - Settings: three top tabs; Interface tab has palette picker + font size pills + bold labels toggle; App tab has km notifications; Sync tab has bincio instance login + autarchive placeholder - RecordingScreen: stat labels now use theme accent colour and scale with fontSize; font weight follows boldLabels setting - All accent/accentDim usages migrated from static colors to useTheme()
This commit is contained in:
+16
-4
@@ -9,16 +9,28 @@ export const colors = {
|
||||
textMuted: '#71717a',
|
||||
placeholder: '#52525b',
|
||||
|
||||
accent: '#60a5fa',
|
||||
accentDim: 'rgba(96,165,250,0.15)',
|
||||
|
||||
success: '#86efac',
|
||||
successBg: '#14532d',
|
||||
error: '#fca5a5',
|
||||
errorBg: '#7f1d1d',
|
||||
|
||||
// recording action buttons
|
||||
btnStart: '#16a34a',
|
||||
btnPause: '#d97706',
|
||||
btnStop: '#dc2626',
|
||||
} as const;
|
||||
|
||||
export type PaletteKey = 'default' | 'giro' | 'tour' | 'vuelta';
|
||||
export type FontSizeKey = 'small' | 'medium' | 'large';
|
||||
|
||||
export const PALETTES: Record<PaletteKey, { accent: string; accentDim: string; label: string }> = {
|
||||
default: { accent: '#60a5fa', accentDim: 'rgba(96,165,250,0.15)', label: 'Default' },
|
||||
giro: { accent: '#f472b6', accentDim: 'rgba(244,114,182,0.15)', label: "Giro d'Italia" },
|
||||
tour: { accent: '#facc15', accentDim: 'rgba(250,204,21,0.15)', label: 'Tour de France' },
|
||||
vuelta: { accent: '#ef4444', accentDim: 'rgba(239,68,68,0.15)', label: 'Vuelta a España' },
|
||||
};
|
||||
|
||||
export const FONT_SCALE: Record<FontSizeKey, number> = {
|
||||
small: 0.88,
|
||||
medium: 1.00,
|
||||
large: 1.15,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user