Files
life-echo/app-ios/constants/theme.ts
penghanyuan 748f252c2f add ios app
2026-01-31 21:20:50 +01:00

145 lines
3.8 KiB
TypeScript

import { createConfig } from '@gluestack-style/react';
import { config as defaultConfig } from '@gluestack-ui/config';
// Design System Colors - NO GRADIENTS, solid colors only
export const AppColors = {
// Primary colors
deepPurple: '#200028', // Primary text, titles, important content
slatePurple: '#8C8EA3', // Secondary text, placeholders, timestamps
mediumPurple: '#A177A6', // Brand color, buttons, headers, user chat bubbles
lavender: '#CEB0DA', // Highlights, AI avatar background, subtle emphasis
blushPink: '#DBBABA', // User avatar background, warm accents
cream: '#FAF7F8', // App background
white: '#FFFFFF', // Cards, chat bubbles, content containers
// Functional colors
transparent: 'transparent',
error: '#DC3545',
success: '#28A745',
};
// Create custom config extending default
export const gluestackConfig = createConfig({
...defaultConfig,
tokens: {
...defaultConfig.tokens,
colors: {
...defaultConfig.tokens.colors,
// App brand colors
deepPurple: AppColors.deepPurple,
slatePurple: AppColors.slatePurple,
mediumPurple: AppColors.mediumPurple,
lavender: AppColors.lavender,
blushPink: AppColors.blushPink,
cream: AppColors.cream,
// Override primary colors to use medium purple
primary0: '#FFFFFF',
primary50: '#F5EEF6',
primary100: '#E8D9EB',
primary200: '#D7C0DC',
primary300: '#C5A7CD',
primary400: '#B38FBD',
primary500: AppColors.mediumPurple, // Main brand color
primary600: '#8A6490',
primary700: '#73527A',
primary800: '#5C4164',
primary900: '#45304E',
primary950: AppColors.deepPurple,
// Background colors
backgroundLight0: AppColors.white,
backgroundLight50: AppColors.cream,
backgroundLight100: AppColors.cream,
backgroundDark0: AppColors.deepPurple,
backgroundDark50: '#2D0036',
backgroundDark100: '#3A004A',
// Text colors
textLight0: AppColors.deepPurple,
textLight50: AppColors.deepPurple,
textLight100: AppColors.deepPurple,
textLight400: AppColors.slatePurple,
textLight500: AppColors.slatePurple,
textDark0: AppColors.white,
textDark50: AppColors.white,
textDark100: AppColors.white,
textDark400: AppColors.lavender,
textDark500: AppColors.lavender,
},
space: {
...defaultConfig.tokens.space,
'px': '1px',
'0': 0,
'0.5': 2,
'1': 4,
'1.5': 6,
'2': 8,
'2.5': 10,
'3': 12,
'3.5': 14,
'4': 16,
'5': 20,
'6': 24,
'7': 28,
'8': 32,
'10': 40,
'12': 48,
'16': 64,
'20': 80,
'24': 96,
},
radii: {
...defaultConfig.tokens.radii,
'none': 0,
'xs': 4,
'sm': 6,
'md': 8,
'lg': 12,
'xl': 16,
'2xl': 20,
'3xl': 24,
'full': 9999,
},
fontSizes: {
...defaultConfig.tokens.fontSizes,
'2xs': 10,
'xs': 11,
'sm': 13,
'md': 15,
'lg': 17,
'xl': 20,
'2xl': 24,
'3xl': 28,
'4xl': 32,
},
},
} as const);
// Export type for TypeScript support
type ConfigType = typeof gluestackConfig;
declare module '@gluestack-style/react' {
interface ICustomConfig extends ConfigType {}
}
// Legacy Colors export for backward compatibility
export const Colors = {
light: {
text: AppColors.deepPurple,
background: AppColors.cream,
tint: AppColors.mediumPurple,
icon: AppColors.slatePurple,
tabIconDefault: AppColors.slatePurple,
tabIconSelected: AppColors.mediumPurple,
},
dark: {
text: AppColors.white,
background: AppColors.deepPurple,
tint: AppColors.lavender,
icon: AppColors.lavender,
tabIconDefault: AppColors.lavender,
tabIconSelected: AppColors.mediumPurple,
},
};