151 lines
3.1 KiB
TypeScript
151 lines
3.1 KiB
TypeScript
|
|
/**
|
||
|
|
* Phoenix Sankofa Cloud Design System
|
||
|
|
*
|
||
|
|
* Design tokens and utilities for the brand
|
||
|
|
*/
|
||
|
|
|
||
|
|
// Color Palette
|
||
|
|
export const colors = {
|
||
|
|
phoenix: {
|
||
|
|
fire: '#FF4500',
|
||
|
|
flame: '#FF8C00',
|
||
|
|
ember: '#FF6B35',
|
||
|
|
},
|
||
|
|
sankofa: {
|
||
|
|
gold: '#FFD700',
|
||
|
|
earth: '#8B4513',
|
||
|
|
},
|
||
|
|
sovereignty: {
|
||
|
|
purple: '#6A0DAD',
|
||
|
|
deep: '#4B0082',
|
||
|
|
},
|
||
|
|
ancestral: {
|
||
|
|
blue: '#1E3A8A',
|
||
|
|
deep: '#0F1B3D',
|
||
|
|
},
|
||
|
|
studio: {
|
||
|
|
black: '#0A0A0A',
|
||
|
|
dark: '#1A1A1A',
|
||
|
|
medium: '#2A2A2A',
|
||
|
|
},
|
||
|
|
neon: {
|
||
|
|
teal: '#00FFD1',
|
||
|
|
magenta: '#FF00FF',
|
||
|
|
cyan: '#00FFFF',
|
||
|
|
amber: '#FFB800',
|
||
|
|
},
|
||
|
|
status: {
|
||
|
|
success: '#00FF88',
|
||
|
|
warning: '#FFB800',
|
||
|
|
error: '#FF0040',
|
||
|
|
info: '#00B8FF',
|
||
|
|
},
|
||
|
|
} as const
|
||
|
|
|
||
|
|
// Typography Scale
|
||
|
|
export const typography = {
|
||
|
|
fontFamily: {
|
||
|
|
sans: 'var(--font-inter), system-ui, sans-serif',
|
||
|
|
mono: 'var(--font-mono), monospace',
|
||
|
|
},
|
||
|
|
fontSize: {
|
||
|
|
xs: '0.75rem', // 12px
|
||
|
|
sm: '0.875rem', // 14px
|
||
|
|
base: '1rem', // 16px
|
||
|
|
lg: '1.125rem', // 18px
|
||
|
|
xl: '1.25rem', // 20px
|
||
|
|
'2xl': '1.5rem', // 24px
|
||
|
|
'3xl': '2rem', // 32px
|
||
|
|
'4xl': '3rem', // 48px
|
||
|
|
'5xl': '4rem', // 64px
|
||
|
|
},
|
||
|
|
fontWeight: {
|
||
|
|
light: 300,
|
||
|
|
regular: 400,
|
||
|
|
medium: 500,
|
||
|
|
semibold: 600,
|
||
|
|
bold: 700,
|
||
|
|
},
|
||
|
|
} as const
|
||
|
|
|
||
|
|
// Spacing Scale (4px base unit)
|
||
|
|
export const spacing = {
|
||
|
|
xs: '4px',
|
||
|
|
sm: '8px',
|
||
|
|
md: '16px',
|
||
|
|
lg: '24px',
|
||
|
|
xl: '32px',
|
||
|
|
'2xl': '48px',
|
||
|
|
'3xl': '64px',
|
||
|
|
'4xl': '96px',
|
||
|
|
'5xl': '128px',
|
||
|
|
} as const
|
||
|
|
|
||
|
|
// Animation Durations
|
||
|
|
export const animation = {
|
||
|
|
fast: '150ms',
|
||
|
|
normal: '200ms',
|
||
|
|
slow: '300ms',
|
||
|
|
slower: '500ms',
|
||
|
|
} as const
|
||
|
|
|
||
|
|
// Well-Architected Framework Pillars
|
||
|
|
export const pillars = {
|
||
|
|
SECURITY: {
|
||
|
|
code: 'SECURITY',
|
||
|
|
name: 'Security',
|
||
|
|
color: colors.status.error,
|
||
|
|
},
|
||
|
|
RELIABILITY: {
|
||
|
|
code: 'RELIABILITY',
|
||
|
|
name: 'Reliability',
|
||
|
|
color: colors.status.success,
|
||
|
|
},
|
||
|
|
COST_OPTIMIZATION: {
|
||
|
|
code: 'COST_OPTIMIZATION',
|
||
|
|
name: 'Cost Optimization',
|
||
|
|
color: colors.neon.cyan,
|
||
|
|
},
|
||
|
|
PERFORMANCE_EFFICIENCY: {
|
||
|
|
code: 'PERFORMANCE_EFFICIENCY',
|
||
|
|
name: 'Performance Efficiency',
|
||
|
|
color: colors.neon.teal,
|
||
|
|
},
|
||
|
|
OPERATIONAL_EXCELLENCE: {
|
||
|
|
code: 'OPERATIONAL_EXCELLENCE',
|
||
|
|
name: 'Operational Excellence',
|
||
|
|
color: colors.neon.magenta,
|
||
|
|
},
|
||
|
|
SUSTAINABILITY: {
|
||
|
|
code: 'SUSTAINABILITY',
|
||
|
|
name: 'Sustainability',
|
||
|
|
color: colors.status.success,
|
||
|
|
},
|
||
|
|
} as const
|
||
|
|
|
||
|
|
// Health Score Colors
|
||
|
|
export const healthScoreColors = {
|
||
|
|
excellent: colors.status.success, // 90-100
|
||
|
|
good: colors.neon.amber, // 70-89
|
||
|
|
fair: colors.phoenix.flame, // 50-69
|
||
|
|
poor: colors.status.error, // 0-49
|
||
|
|
} as const
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Get health score color based on score (0-100)
|
||
|
|
*/
|
||
|
|
export function getHealthScoreColor(score: number): string {
|
||
|
|
if (score >= 90) return healthScoreColors.excellent
|
||
|
|
if (score >= 70) return healthScoreColors.good
|
||
|
|
if (score >= 50) return healthScoreColors.fair
|
||
|
|
return healthScoreColors.poor
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Get pillar color
|
||
|
|
*/
|
||
|
|
export function getPillarColor(pillarCode: keyof typeof pillars): string {
|
||
|
|
return pillars[pillarCode]?.color || colors.neon.cyan
|
||
|
|
}
|
||
|
|
|