/** * Design System Tokens * Shared design tokens across all platforms * * SLEEK DARK GAMING THEME * Inspired by: BitChat, Root, Discord Dark, Telegram */ export const colors = { // Brand colors (Cyan primary - modern gaming) primary: { 50: '#ecfeff', 100: '#cffafe', 200: '#a5f3fc', 300: '#67e8f9', 400: '#22d3ee', 500: '#00d9ff', // Primary cyan 600: '#00b8d9', 700: '#0097b3', 800: '#007a8f', 900: '#006073', }, // Accent colors (Neon green gaming) accent: { 50: '#f0fdf4', 100: '#dcfce7', 200: '#bbf7d0', 300: '#86efac', 400: '#4ade80', 500: '#00ff88', // Neon green 600: '#00e070', 700: '#00c05d', 800: '#009f4a', 900: '#00803b', }, // Secondary accent (Purple for premium) secondary: { 50: '#faf5ff', 100: '#f3e8ff', 200: '#e9d5ff', 300: '#d8b4fe', 400: '#c084fc', 500: '#a855f7', // Premium purple 600: '#9333ea', 700: '#7e22ce', 800: '#6b21a8', 900: '#581c87', }, // Neutral colors (OLED-friendly blacks) gray: { 50: '#fafafa', 100: '#f5f5f5', 200: '#e5e5e5', 300: '#d4d4d4', 400: '#a3a3a3', 500: '#737373', 600: '#525252', 700: '#404040', 800: '#262626', 900: '#171717', 950: '#0a0a0a', // Pure black for OLED }, // Semantic colors success: '#10b981', // Green warning: '#f59e0b', // Orange error: '#ef4444', // Red info: '#00d9ff', // Cyan (matches primary) // Background (OLED-optimized) background: { primary: '#000000', // Pure black for OLED battery saving secondary: '#0f0f0f', // Slightly elevated tertiary: '#1a1a1a', // Cards elevated: '#262626', // Modals/overlays }, // Text (High contrast for readability) text: { primary: '#ffffff', // White secondary: '#b0b0b0', // Light gray tertiary: '#707070', // Medium gray muted: '#505050', // Dark gray disabled: '#3a3a3a', // Very dark gray }, // Special effects effects: { glass: 'rgba(20, 20, 20, 0.7)', // Glassmorphism background glassBorder: 'rgba(255, 255, 255, 0.1)', // Glass border glow: 'rgba(0, 217, 255, 0.3)', // Cyan glow glowGreen: 'rgba(0, 255, 136, 0.3)', // Green glow glowPurple: 'rgba(168, 85, 247, 0.3)', // Purple glow overlay: 'rgba(0, 0, 0, 0.8)', // Dark overlay overlayLight: 'rgba(0, 0, 0, 0.5)', // Lighter overlay }, // Status indicators status: { online: '#3ba55c', // Discord green idle: '#faa61a', // Yellow dnd: '#ed4245', // Red offline: '#747f8d', // Gray }, }; export const spacing = { 0: '0', 1: '0.25rem', // 4px 2: '0.5rem', // 8px 3: '0.75rem', // 12px 4: '1rem', // 16px 5: '1.25rem', // 20px 6: '1.5rem', // 24px 8: '2rem', // 32px 10: '2.5rem', // 40px 12: '3rem', // 48px - Touch target minimum 14: '3.5rem', // 56px - Bottom nav height 16: '4rem', // 64px 20: '5rem', // 80px 24: '6rem', // 96px }; export const typography = { fontFamily: { // Use native system fonts for best mobile performance sans: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif', mono: 'ui-monospace, "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, monospace', }, fontSize: { xs: '0.75rem', // 12px - Captions, timestamps sm: '0.875rem', // 14px - Labels, secondary text base: '1rem', // 16px - Body text (mobile readable) lg: '1.125rem', // 18px - Emphasized text xl: '1.25rem', // 20px - Subheadings '2xl': '1.5rem', // 24px - Section headers '3xl': '1.75rem', // 28px - Screen titles '4xl': '2rem', // 32px - Hero text '5xl': '2.5rem', // 40px - Large hero }, fontWeight: { light: 300, normal: 400, medium: 500, semibold: 600, bold: 700, }, lineHeight: { none: 1, tight: 1.25, snug: 1.375, normal: 1.5, // Default for readability relaxed: 1.625, loose: 2, }, }; export const borderRadius = { none: '0', sm: '0.375rem', // 6px base: '0.5rem', // 8px md: '0.75rem', // 12px lg: '1rem', // 16px - Message bubbles xl: '1.125rem', // 18px - Message bubbles rounded '2xl': '1.5rem', // 24px - Cards full: '9999px', // Pills }; export const shadows = { // Subtle shadows for dark theme sm: '0 1px 2px 0 rgba(0, 0, 0, 0.3)', base: '0 2px 4px 0 rgba(0, 0, 0, 0.4)', md: '0 4px 8px -2px rgba(0, 0, 0, 0.5)', lg: '0 8px 16px -4px rgba(0, 0, 0, 0.6)', xl: '0 16px 32px -8px rgba(0, 0, 0, 0.7)', '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.8)', // Glow effects for gaming aesthetic glowCyan: '0 0 20px rgba(0, 217, 255, 0.4)', glowCyanStrong: '0 0 30px rgba(0, 217, 255, 0.6)', glowGreen: '0 0 20px rgba(0, 255, 136, 0.4)', glowPurple: '0 0 20px rgba(168, 85, 247, 0.4)', glowSubtle: '0 0 10px rgba(255, 255, 255, 0.1)', }; export const breakpoints = { // Mobile-first breakpoints xs: '375px', // Small phones sm: '640px', // Large phones md: '768px', // Tablets lg: '1024px', // Small laptops xl: '1280px', // Desktop '2xl': '1536px', // Large desktop }; export const zIndex = { base: 0, dropdown: 1000, sticky: 1100, fixed: 1200, modalBackdrop: 1300, modal: 1400, popover: 1500, tooltip: 1600, toast: 1700, }; export const transitions = { fast: '150ms cubic-bezier(0.4, 0, 0.2, 1)', base: '200ms cubic-bezier(0.4, 0, 0.2, 1)', slow: '300ms cubic-bezier(0.4, 0, 0.2, 1)', slower: '500ms cubic-bezier(0.4, 0, 0.2, 1)', // Easing functions easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)', easeOut: 'cubic-bezier(0, 0, 0.2, 1)', easeIn: 'cubic-bezier(0.4, 0, 1, 1)', spring: 'cubic-bezier(0.68, -0.55, 0.265, 1.55)', }; // Mobile-specific tokens export const mobile = { touchTarget: { minimum: '44px', // iOS HIG minimum comfortable: '48px', // Material Design large: '56px', // Bottom nav, FABs }, safeArea: { top: 'env(safe-area-inset-top)', bottom: 'env(safe-area-inset-bottom)', left: 'env(safe-area-inset-left)', right: 'env(safe-area-inset-right)', }, statusBar: { height: '44px', // iOS status bar heightAndroid: '24px', }, navbar: { height: '56px', // Standard mobile nav heightLarge: '64px', // Large title nav }, tabBar: { height: '56px', // Bottom tab bar heightSafe: 'calc(56px + env(safe-area-inset-bottom))', }, }; // Glassmorphism effect tokens export const glass = { blur: '20px', blurStrong: '30px', blurSubtle: '10px', background: { light: 'rgba(255, 255, 255, 0.05)', medium: 'rgba(255, 255, 255, 0.1)', dark: 'rgba(0, 0, 0, 0.3)', darker: 'rgba(0, 0, 0, 0.5)', }, border: 'rgba(255, 255, 255, 0.1)', borderBright: 'rgba(255, 255, 255, 0.2)', };