CRITICAL: - SEC-001: Auth tokens now stored in SecureStore (Keychain/Keystore) - SEC-002: Biometric bypass removed - alerts user and disables when unavailable HIGH: - SEC-003: Push projectId moved to EXPO_PUBLIC_EAS_PROJECT_ID env var - SEC-004: Token refresh mechanism added with refreshSession/hydrateTokens - SEC-005: debug already gated on __DEV__ (confirmed) MEDIUM: - SEC-006: All PII stores (darkwatch, voiceprint, spamshield, settings, auth) now use encrypted AsyncStorage - SEC-007: Certificate pinning documented with TODO for production - SEC-008: Login brute force protection: 5 attempts then 5-minute lockout LOW: - SEC-009: Watch list input validation with format checks per entity type - SEC-010: Upgrade Plan button shows billing coming soon alert
96 lines
2.1 KiB
TypeScript
96 lines
2.1 KiB
TypeScript
export const COLORS = {
|
|
primary: '#4f8cff',
|
|
primaryDark: '#3a6fd8',
|
|
secondary: '#6c5ce7',
|
|
accent: '#00cec9',
|
|
success: '#00b894',
|
|
warning: '#fdcb6e',
|
|
danger: '#ff6b6b',
|
|
background: '#0a0e1a',
|
|
backgroundLight: '#111827',
|
|
card: '#1a2035',
|
|
cardLight: '#243049',
|
|
text: '#e8eaf0',
|
|
textSecondary: '#8b95a8',
|
|
textMuted: '#5a6577',
|
|
border: '#2a3550',
|
|
overlay: 'rgba(0, 0, 0, 0.6)',
|
|
} as const;
|
|
|
|
export const SPACING = {
|
|
xs: 4,
|
|
sm: 8,
|
|
md: 16,
|
|
lg: 24,
|
|
xl: 32,
|
|
xxl: 48,
|
|
} as const;
|
|
|
|
export const FONT_SIZES = {
|
|
xs: 12,
|
|
sm: 14,
|
|
md: 16,
|
|
lg: 18,
|
|
xl: 20,
|
|
xxl: 24,
|
|
xxxl: 32,
|
|
} as const;
|
|
|
|
export const BORDER_RADIUS = {
|
|
sm: 4,
|
|
md: 8,
|
|
lg: 12,
|
|
xl: 16,
|
|
round: 999,
|
|
} as const;
|
|
|
|
export const SHADOWS = {
|
|
sm: { shadowColor: '#000', shadowOffset: { width: 0, height: 1 }, shadowOpacity: 0.1, shadowRadius: 2, elevation: 2 },
|
|
md: { shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.15, shadowRadius: 4, elevation: 4 },
|
|
lg: { shadowColor: '#000', shadowOffset: { width: 0, height: 4 }, shadowOpacity: 0.2, shadowRadius: 8, elevation: 8 },
|
|
} as const;
|
|
|
|
export const API_URL = process.env.EXPO_PUBLIC_API_URL || 'https://api.shieldai.freno.me/api/v1';
|
|
|
|
export const EAS_PROJECT_ID = process.env.EXPO_PUBLIC_EAS_PROJECT_ID || '';
|
|
|
|
export const getSeverityColor = (severity: string): string => {
|
|
switch (severity) {
|
|
case 'critical': return COLORS.danger;
|
|
case 'high': return COLORS.warning;
|
|
case 'medium': return COLORS.accent;
|
|
default: return COLORS.textSecondary;
|
|
}
|
|
};
|
|
|
|
export const TIER_FEATURES = {
|
|
free: {
|
|
name: 'Free',
|
|
maxExposures: 5,
|
|
spamProtection: false,
|
|
voicePrint: false,
|
|
darkWatch: false,
|
|
},
|
|
basic: {
|
|
name: 'Basic',
|
|
maxExposures: 50,
|
|
spamProtection: true,
|
|
voicePrint: false,
|
|
darkWatch: true,
|
|
},
|
|
premium: {
|
|
name: 'Premium',
|
|
maxExposures: 200,
|
|
spamProtection: true,
|
|
voicePrint: true,
|
|
darkWatch: true,
|
|
},
|
|
enterprise: {
|
|
name: 'Enterprise',
|
|
maxExposures: -1,
|
|
spamProtection: true,
|
|
voicePrint: true,
|
|
darkWatch: true,
|
|
},
|
|
} as const;
|