- Replace all 'patient' terminology with 'beneficiary' - Add Voice AI screen (voice.tsx) with voice_ask API integration - Optimize getAllBeneficiaries() to use single deployments_list API call - Rename PatientDashboardData to BeneficiaryDashboardData - Update UI components: BeneficiaryCard, beneficiary picker modal - Update all error messages and comments 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
123 lines
2.4 KiB
TypeScript
123 lines
2.4 KiB
TypeScript
/**
|
|
* WellNuo Theme Configuration
|
|
* Colors and typography based on design system
|
|
*/
|
|
|
|
import { Platform } from 'react-native';
|
|
|
|
// WellNuo Brand Colors
|
|
export const AppColors = {
|
|
// Primary
|
|
primary: '#4A90D9',
|
|
primaryDark: '#2E5C8A',
|
|
primaryLight: '#6BA8E8',
|
|
|
|
// Status
|
|
success: '#5AC8A8',
|
|
warning: '#F5A623',
|
|
error: '#D0021B',
|
|
|
|
// Neutral
|
|
white: '#FFFFFF',
|
|
background: '#FFFFFF',
|
|
surface: '#F5F7FA',
|
|
border: '#E5E7EB',
|
|
|
|
// Text
|
|
textPrimary: '#333333',
|
|
textSecondary: '#666666',
|
|
textMuted: '#999999',
|
|
textLight: '#FFFFFF',
|
|
|
|
// Beneficiary Status
|
|
online: '#5AC8A8',
|
|
offline: '#999999',
|
|
};
|
|
|
|
const tintColorLight = AppColors.primary;
|
|
const tintColorDark = '#fff';
|
|
|
|
export const Colors = {
|
|
light: {
|
|
text: AppColors.textPrimary,
|
|
background: AppColors.background,
|
|
tint: tintColorLight,
|
|
icon: '#687076',
|
|
tabIconDefault: '#687076',
|
|
tabIconSelected: tintColorLight,
|
|
surface: AppColors.surface,
|
|
border: AppColors.border,
|
|
primary: AppColors.primary,
|
|
error: AppColors.error,
|
|
success: AppColors.success,
|
|
},
|
|
dark: {
|
|
text: '#ECEDEE',
|
|
background: '#151718',
|
|
tint: tintColorDark,
|
|
icon: '#9BA1A6',
|
|
tabIconDefault: '#9BA1A6',
|
|
tabIconSelected: tintColorDark,
|
|
surface: '#1E2022',
|
|
border: '#2D3135',
|
|
primary: AppColors.primaryLight,
|
|
error: '#FF6B6B',
|
|
success: '#6BD9B9',
|
|
},
|
|
};
|
|
|
|
export const Spacing = {
|
|
xs: 4,
|
|
sm: 8,
|
|
md: 16,
|
|
lg: 24,
|
|
xl: 32,
|
|
xxl: 48,
|
|
};
|
|
|
|
export const BorderRadius = {
|
|
sm: 4,
|
|
md: 8,
|
|
lg: 12,
|
|
xl: 16,
|
|
full: 9999,
|
|
};
|
|
|
|
export const FontSizes = {
|
|
xs: 12,
|
|
sm: 14,
|
|
base: 16,
|
|
lg: 18,
|
|
xl: 20,
|
|
'2xl': 24,
|
|
'3xl': 30,
|
|
};
|
|
|
|
export const FontWeights = {
|
|
normal: '400' as const,
|
|
medium: '500' as const,
|
|
semibold: '600' as const,
|
|
bold: '700' as const,
|
|
};
|
|
|
|
export const Fonts = Platform.select({
|
|
ios: {
|
|
sans: 'system-ui',
|
|
serif: 'ui-serif',
|
|
rounded: 'ui-rounded',
|
|
mono: 'ui-monospace',
|
|
},
|
|
default: {
|
|
sans: 'normal',
|
|
serif: 'serif',
|
|
rounded: 'normal',
|
|
mono: 'monospace',
|
|
},
|
|
web: {
|
|
sans: "system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif",
|
|
serif: "Georgia, 'Times New Roman', serif",
|
|
rounded: "'SF Pro Rounded', 'Hiragino Maru Gothic ProN', Meiryo, 'MS PGothic', sans-serif",
|
|
mono: "SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace",
|
|
},
|
|
});
|