@refraction-ui/tailwind-config 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/colors.ts","../src/animations.ts","../src/preset.ts","../src/utilities.ts","../src/themes/glassa.ts","../src/contrast.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/** Semantic color tokens mapped to CSS custom properties */\nexport const colors = {\n background: 'hsl(var(--background))',\n foreground: 'hsl(var(--foreground))',\n card: { DEFAULT: 'hsl(var(--card))', foreground: 'hsl(var(--card-foreground))' },\n popover: { DEFAULT: 'hsl(var(--popover))', foreground: 'hsl(var(--popover-foreground))' },\n primary: { DEFAULT: 'hsl(var(--primary))', foreground: 'hsl(var(--primary-foreground))' },\n secondary: { DEFAULT: 'hsl(var(--secondary))', foreground: 'hsl(var(--secondary-foreground))' },\n muted: { DEFAULT: 'hsl(var(--muted))', foreground: 'hsl(var(--muted-foreground))' },\n accent: { DEFAULT: 'hsl(var(--accent))', foreground: 'hsl(var(--accent-foreground))' },\n destructive: { DEFAULT: 'hsl(var(--destructive))', foreground: 'hsl(var(--destructive-foreground))' },\n border: 'hsl(var(--border))',\n input: 'hsl(var(--input))',\n ring: 'hsl(var(--ring))',\n chart: {\n 1: 'hsl(var(--chart-1))',\n 2: 'hsl(var(--chart-2))',\n 3: 'hsl(var(--chart-3))',\n 4: 'hsl(var(--chart-4))',\n 5: 'hsl(var(--chart-5))',\n },\n sidebar: {\n DEFAULT: 'hsl(var(--sidebar-background))',\n foreground: 'hsl(var(--sidebar-foreground))',\n primary: 'hsl(var(--sidebar-primary))',\n 'primary-foreground': 'hsl(var(--sidebar-primary-foreground))',\n accent: 'hsl(var(--sidebar-accent))',\n 'accent-foreground': 'hsl(var(--sidebar-accent-foreground))',\n border: 'hsl(var(--sidebar-border))',\n ring: 'hsl(var(--sidebar-ring))',\n },\n}\n","/**\n * Keyframe definitions consolidated from all elloloop projects.\n *\n * Accessibility: Users who prefer reduced motion should see instant transitions.\n * Apply the `.motion-reduce` utility (from utilities.ts) to animated elements,\n * or use Tailwind's built-in `motion-reduce:` variant on individual elements.\n * The `.motion-safe` / `.motion-reduce` utilities in utilities.ts provide\n * global prefers-reduced-motion support via CSS media queries.\n */\nexport const keyframes = {\n 'fade-in': {\n from: { opacity: '0' },\n to: { opacity: '1' },\n },\n 'fade-in-up': {\n from: { opacity: '0', transform: 'translateY(8px)' },\n to: { opacity: '1', transform: 'translateY(0)' },\n },\n 'fade-in-scale': {\n from: { opacity: '0', transform: 'scale(0.95)' },\n to: { opacity: '1', transform: 'scale(1)' },\n },\n 'slide-up': {\n from: { transform: 'translateY(100%)' },\n to: { transform: 'translateY(0)' },\n },\n 'slide-in-right': {\n from: { opacity: '0', transform: 'translateX(20px)' },\n to: { opacity: '1', transform: 'translateX(0)' },\n },\n 'toast-in': {\n from: { opacity: '0', transform: 'translateY(16px) scale(0.95)' },\n to: { opacity: '1', transform: 'translateY(0) scale(1)' },\n },\n 'toast-out': {\n from: { opacity: '1', transform: 'translateY(0) scale(1)' },\n to: { opacity: '0', transform: 'translateY(16px) scale(0.95)' },\n },\n 'accordion-down': {\n from: { height: '0' },\n to: { height: 'var(--radix-accordion-content-height)' },\n },\n 'accordion-up': {\n from: { height: 'var(--radix-accordion-content-height)' },\n to: { height: '0' },\n },\n 'scale-in': {\n from: { opacity: '0', transform: 'scale(0.9)' },\n to: { opacity: '1', transform: 'scale(1)' },\n },\n}\n\n/** Animation utility classes */\nexport const animation = {\n 'fade-in': 'fade-in 0.4s ease-out',\n 'fade-in-up': 'fade-in-up 0.4s ease-out',\n 'fade-in-scale': 'fade-in-scale 0.3s ease-out',\n 'slide-up': 'slide-up 0.35s cubic-bezier(0.16, 1, 0.3, 1)',\n 'slide-in-right': 'slide-in-right 0.3s ease-out',\n 'toast-in': 'toast-in 0.3s ease-out',\n 'toast-out': 'toast-out 0.2s ease-in',\n 'accordion-down': 'accordion-down 0.2s ease-out',\n 'accordion-up': 'accordion-up 0.2s ease-out',\n 'scale-in': 'scale-in 0.2s ease-out',\n}\n","/**\n * Refraction UI Tailwind preset — shared configuration for all projects.\n * Works with Tailwind v3 (via presets) and v4 (via @import).\n *\n * Usage (Tailwind v3):\n * const { refractionPreset } = require('@refraction-ui/tailwind-config')\n * module.exports = { presets: [refractionPreset] }\n *\n * Usage (Tailwind v4):\n * @import '@refraction-ui/tailwind-config/css';\n */\n\nimport { colors } from './colors.js'\nimport { keyframes, animation } from './animations.js'\n\nexport const refractionPreset = {\n darkMode: 'class' as const,\n theme: {\n container: {\n center: true,\n padding: '2rem',\n screens: {\n '2xl': '1400px',\n },\n },\n extend: {\n colors,\n borderRadius: {\n lg: 'var(--radius)',\n md: 'calc(var(--radius) - 2px)',\n sm: 'calc(var(--radius) - 4px)',\n },\n fontFamily: {\n sans: ['var(--font-sans)', 'system-ui', '-apple-system', 'sans-serif'],\n mono: ['var(--font-mono)', 'ui-monospace', 'SFMono-Regular', 'monospace'],\n serif: ['var(--font-serif)', 'Georgia', '\"Times New Roman\"', 'serif'],\n heading: ['var(--font-heading)', 'var(--font-sans)', 'system-ui', 'sans-serif'],\n },\n fontSize: {\n xs: 'var(--font-size-xs)',\n sm: 'var(--font-size-sm)',\n base: 'var(--font-size-base)',\n lg: 'var(--font-size-lg)',\n xl: 'var(--font-size-xl)',\n '2xl': 'var(--font-size-2xl)',\n '3xl': 'var(--font-size-3xl)',\n '4xl': 'var(--font-size-4xl)',\n '5xl': 'var(--font-size-5xl)',\n },\n boxShadow: {\n sm: 'var(--shadow-sm)',\n md: 'var(--shadow-md)',\n lg: 'var(--shadow-lg)',\n xl: 'var(--shadow-xl)',\n },\n letterSpacing: {\n tighter: 'var(--letter-spacing-tighter)',\n tight: 'var(--letter-spacing-tight)',\n normal: 'var(--letter-spacing-normal)',\n wide: 'var(--letter-spacing-wide)',\n wider: 'var(--letter-spacing-wider)',\n },\n lineHeight: {\n tight: 'var(--line-height-tight)',\n normal: 'var(--line-height-normal)',\n relaxed: 'var(--line-height-relaxed)',\n },\n transitionDuration: {\n DEFAULT: 'var(--transition-duration)',\n },\n transitionTimingFunction: {\n DEFAULT: 'var(--transition-easing)',\n },\n backdropBlur: {\n DEFAULT: 'var(--backdrop-blur)',\n },\n keyframes,\n animation,\n },\n },\n}\n","/**\n * Custom Tailwind utility classes consolidated from all projects.\n * These are registered as a Tailwind plugin.\n */\n\nimport type { PluginCreator } from './plugin-types.js'\n\nexport const utilitiesPlugin: PluginCreator = ({ addUtilities }) => {\n addUtilities({\n '.scrollbar-hide': {\n '-ms-overflow-style': 'none',\n 'scrollbar-width': 'none',\n '&::-webkit-scrollbar': { display: 'none' },\n },\n '.safe-top': {\n 'padding-top': 'env(safe-area-inset-top)',\n },\n '.safe-bottom': {\n 'padding-bottom': 'env(safe-area-inset-bottom)',\n },\n '.snap-lane': {\n 'scroll-snap-type': 'x mandatory',\n '& > *': { 'scroll-snap-align': 'start' },\n },\n '.momentum-scroll': {\n '-webkit-overflow-scrolling': 'touch',\n },\n '.press-scale': {\n '&:active': { transform: 'scale(0.97)' },\n },\n '.drag-handle': {\n width: '36px',\n height: '4px',\n 'border-radius': '2px',\n 'background-color': 'hsl(var(--muted-foreground) / 0.3)',\n margin: '8px auto',\n },\n '.text-gradient': {\n 'background-image': 'linear-gradient(to right, hsl(var(--primary)), hsl(var(--accent)))',\n '-webkit-background-clip': 'text',\n '-webkit-text-fill-color': 'transparent',\n 'background-clip': 'text',\n },\n '.glass': {\n background: 'hsl(var(--background) / 0.8)',\n '-webkit-backdrop-filter': 'blur(12px)',\n 'backdrop-filter': 'blur(12px)',\n },\n '.motion-safe': {\n '@media (prefers-reduced-motion: no-preference)': {\n 'animation-duration': 'var(--animation-duration, inherit)',\n },\n },\n '.motion-reduce': {\n '@media (prefers-reduced-motion: reduce)': {\n 'animation-duration': '0.01ms !important',\n 'animation-iteration-count': '1 !important',\n 'transition-duration': '0.01ms !important',\n },\n },\n })\n}\n","/**\n * Refraction UI Theme System\n *\n * Product-inspired themes drawn from real, successful design systems.\n * Every color is a researched, intentional choice — not arbitrary.\n *\n * All color values are HSL (hue saturation% lightness%) without the hsl()\n * wrapper, because components use them as: hsl(var(--primary))\n *\n * Run `validateThemeContrast(theme.colors)` from contrast.ts to verify\n * WCAG compliance for any theme.\n *\n * Inspirations:\n * Refraction — Linear.app + Vercel (calm violet, crisp, professional)\n * Luxe — Apple.com product pages (premium blue, spacious, precise)\n * Warm — Airbnb + Notion (coral, inviting, warm off-white)\n * Signal — Slack + Linear (teal, dense, productive)\n * Pulse — Spotify + Discord (blurple, bold, playful)\n * Mono — Stripe docs + GitHub (slate, technical, code-first)\n */\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface ThemeDefinition {\n name: string\n displayName: string\n description: string\n\n // ═══════════════════════════════════════════\n // COLORS\n // ═══════════════════════════════════════════\n colors: {\n light: Record<string, string>\n dark: Record<string, string>\n }\n\n // ═══════════════════════════════════════════\n // TYPOGRAPHY\n // ═══════════════════════════════════════════\n fonts: { sans: string; heading: string; mono: string }\n headingWeight: string\n headingLetterSpacing: string\n headingLineHeight: string\n fontSizeBase: string\n\n // ═══════════════════════════════════════════\n // SHAPE LANGUAGE\n // ═══════════════════════════════════════════\n radius: string\n avatarRadius: string\n badgeRadius: string\n buttonRadius: string\n cardRadius: string\n\n // ═══════════════════════════════════════════\n // DEPTH & ELEVATION\n // ═══════════════════════════════════════════\n shadows: { sm: string; md: string; lg: string }\n cardShadow: string\n buttonShadow: string\n\n // ═══════════════════════════════════════════\n // TRANSPARENCY & GLASS\n // ═══════════════════════════════════════════\n overlayOpacity: string\n backdropBlur: string\n glassBackground: string\n\n // ═══════════════════════════════════════════\n // SPACING & DENSITY\n // ═══════════════════════════════════════════\n spacingScale: number\n containerMaxWidth: string\n cardPadding: string\n inputHeight: string\n\n // ═══════════════════════════════════════════\n // BORDERS\n // ═══════════════════════════════════════════\n borderWidth: string\n\n // ═══════════════════════════════════════════\n // COMPONENT STYLES\n // ═══════════════════════════════════════════\n inputStyle: 'bordered' | 'filled' | 'underline'\n buttonStyle: 'filled' | 'outline' | 'ghost-default'\n hoverEffect: 'darken' | 'lighten' | 'shadow-lift' | 'scale'\n disabledOpacity: string\n linkStyle: 'underline' | 'color-only' | 'underline-on-hover'\n focusRingStyle: 'ring' | 'outline' | 'shadow'\n iconStyle: 'outlined' | 'filled' | 'duotone'\n iconStrokeWidth: string\n scrollbarStyle: 'thin' | 'hidden' | 'default'\n selectionBackground: string\n selectionForeground: string\n tooltipStyle: 'dark' | 'light' | 'primary'\n tableStyle: 'striped' | 'clean' | 'bordered'\n}\n\n// ---------------------------------------------------------------------------\n// (No shared helpers needed — standard scales use hardcoded defaults)\n// ---------------------------------------------------------------------------\n\n// ---------------------------------------------------------------------------\n// 1. Refraction — the DEFAULT theme\n// Inspired by Linear.app + Vercel\n//\n// Linear: #FCFCFC background, muted violet-blue #5E6AD2 primary,\n// barely-there borders, Inter font, 6px radius, ultra-subtle shadows\n// Vercel: High-contrast black/white, Geist font, minimal whitespace\n//\n// Blend: Linear's calm violet with Vercel's crispness.\n// Primary is a muted, sophisticated violet — not bright or screaming.\n//\n// WCAG 2.1 Contrast Ratios (light, against --background 0 0% 99%):\n// --foreground (240 10% 10%) -> ~17.5:1 AAA\n// --primary (250 50% 50%) -> ~7.2:1 AAA (muted violet ~#6366F1)\n// --muted-foreground (240 4% 44%) -> ~5.1:1 AA\n// --destructive-fg on destructive -> ~4.5:1 AA\n//\n// Dark mode (against --background 240 10% 4%):\n// --foreground (0 0% 98%) -> ~19.0:1 AAA\n// --primary (250 50% 65%) -> ~5.4:1 AA\n// ---------------------------------------------------------------------------\n\nexport const refractionTheme: ThemeDefinition = {\n name: 'refraction',\n displayName: 'Refraction',\n description: 'Calm, professional, no visual noise. Inspired by Linear and Vercel.',\n colors: {\n light: {\n '--background': '0 0% 99%',\n '--foreground': '240 10% 10%',\n '--card': '0 0% 99%',\n '--card-foreground': '240 10% 10%',\n '--popover': '0 0% 100%',\n '--popover-foreground': '240 10% 10%',\n\n '--primary': '250 50% 50%',\n '--primary-foreground': '0 0% 100%',\n '--secondary': '240 5% 96%',\n '--secondary-foreground': '240 4% 44%',\n '--accent': '250 30% 95%',\n '--accent-foreground': '250 50% 40%',\n\n '--muted': '240 5% 96%',\n '--muted-foreground': '240 4% 44%',\n '--destructive': '0 84% 50%',\n '--destructive-foreground': '0 0% 100%',\n\n '--success': '142 71% 35%',\n '--success-foreground': '0 0% 100%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '240 10% 10%',\n\n '--border': '240 6% 92%',\n '--input': '240 6% 92%',\n '--ring': '250 50% 50%',\n\n '--radius': '0.375rem',\n\n // Charts — colorblind-safe, spread across spectrum\n '--chart-1': '250 50% 50%',\n '--chart-2': '173 80% 36%',\n '--chart-3': '38 92% 50%',\n '--chart-4': '330 65% 50%',\n '--chart-5': '201 96% 42%',\n\n // Sidebar\n '--sidebar-background': '0 0% 98%',\n '--sidebar-foreground': '240 10% 10%',\n '--sidebar-primary': '250 50% 50%',\n '--sidebar-primary-foreground': '0 0% 100%',\n '--sidebar-accent': '250 30% 95%',\n '--sidebar-accent-foreground': '250 50% 40%',\n '--sidebar-border': '240 6% 92%',\n '--sidebar-ring': '250 50% 50%',\n },\n dark: {\n '--background': '240 10% 4%',\n '--foreground': '0 0% 98%',\n '--card': '240 10% 8%',\n '--card-foreground': '0 0% 98%',\n '--popover': '240 10% 8%',\n '--popover-foreground': '0 0% 98%',\n\n '--primary': '250 50% 65%',\n '--primary-foreground': '240 10% 4%',\n '--secondary': '240 5% 16%',\n '--secondary-foreground': '240 5% 65%',\n '--accent': '250 30% 20%',\n '--accent-foreground': '250 60% 80%',\n\n '--muted': '240 5% 16%',\n '--muted-foreground': '240 5% 65%',\n '--destructive': '0 63% 31%',\n '--destructive-foreground': '0 0% 98%',\n\n '--success': '142 71% 45%',\n '--success-foreground': '0 0% 98%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '240 10% 4%',\n\n '--border': '240 5% 16%',\n '--input': '240 5% 16%',\n '--ring': '250 50% 65%',\n\n '--radius': '0.375rem',\n\n '--chart-1': '250 50% 65%',\n '--chart-2': '173 70% 50%',\n '--chart-3': '38 92% 60%',\n '--chart-4': '330 60% 65%',\n '--chart-5': '201 90% 55%',\n\n '--sidebar-background': '240 10% 4%',\n '--sidebar-foreground': '0 0% 98%',\n '--sidebar-primary': '250 50% 65%',\n '--sidebar-primary-foreground': '240 10% 4%',\n '--sidebar-accent': '250 30% 20%',\n '--sidebar-accent-foreground': '250 60% 80%',\n '--sidebar-border': '240 5% 16%',\n '--sidebar-ring': '250 50% 65%',\n },\n },\n fonts: {\n sans: \"'Inter', system-ui, sans-serif\",\n heading: \"'Inter', system-ui, sans-serif\",\n mono: \"'JetBrains Mono', ui-monospace, monospace\",\n },\n headingWeight: '600',\n headingLetterSpacing: '-0.02em',\n headingLineHeight: '1.2',\n fontSizeBase: '1rem',\n\n radius: '0.375rem',\n avatarRadius: '9999px',\n badgeRadius: '9999px',\n buttonRadius: '0.375rem',\n cardRadius: '0.5rem',\n\n shadows: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.03)',\n md: '0 2px 4px -1px rgb(0 0 0 / 0.04), 0 1px 2px -1px rgb(0 0 0 / 0.03)',\n lg: '0 6px 10px -2px rgb(0 0 0 / 0.05), 0 2px 4px -2px rgb(0 0 0 / 0.03)',\n },\n cardShadow: '0 1px 2px 0 rgb(0 0 0 / 0.03)',\n buttonShadow: 'none',\n\n overlayOpacity: '0.5',\n backdropBlur: '8px',\n glassBackground: 'rgba(252, 252, 253, 0.8)',\n\n spacingScale: 1.0,\n containerMaxWidth: '1280px',\n cardPadding: '1.5rem',\n inputHeight: '2.5rem',\n\n borderWidth: '1px',\n\n inputStyle: 'bordered',\n buttonStyle: 'filled',\n hoverEffect: 'darken',\n disabledOpacity: '0.5',\n linkStyle: 'color-only',\n focusRingStyle: 'ring',\n iconStyle: 'outlined',\n iconStrokeWidth: '1.5',\n scrollbarStyle: 'thin',\n selectionBackground: '250 50% 50%',\n selectionForeground: '0 0% 100%',\n tooltipStyle: 'dark',\n tableStyle: 'clean',\n}\n\n// ---------------------------------------------------------------------------\n// 2. Luxe — inspired by Apple.com product pages\n//\n// Apple: #1d1d1f warm black text, #0071E3 blue primary,\n// SF Pro Display font, 12-18px radius, no visible borders,\n// shadows + background shifts, generous spacing, premium feel.\n//\n// WCAG 2.1 Contrast Ratios (light, against --background 0 0% 100%):\n// --foreground (0 0% 12%) -> ~16.6:1 AAA\n// --primary (220 90% 45%) -> ~6.6:1 AA (Apple blue #0071E3)\n// --muted-foreground (220 5% 40%) -> ~5.9:1 AA\n//\n// Dark mode (against --background 0 0% 7%):\n// --foreground (0 0% 98%) -> ~18.0:1 AAA\n// --primary (220 85% 60%) -> ~4.8:1 AA\n// ---------------------------------------------------------------------------\n\nexport const luxeTheme: ThemeDefinition = {\n name: 'luxe',\n displayName: 'Luxe',\n description: 'Premium, spacious, every pixel matters. Inspired by Apple product pages.',\n colors: {\n light: {\n '--background': '0 0% 100%',\n '--foreground': '0 0% 12%',\n '--card': '0 0% 100%',\n '--card-foreground': '0 0% 12%',\n '--popover': '0 0% 100%',\n '--popover-foreground': '0 0% 12%',\n\n '--primary': '220 90% 45%',\n '--primary-foreground': '0 0% 100%',\n '--secondary': '220 5% 96%',\n '--secondary-foreground': '220 5% 40%',\n '--accent': '220 30% 95%',\n '--accent-foreground': '220 60% 35%',\n\n '--muted': '220 5% 96%',\n '--muted-foreground': '220 5% 40%',\n '--destructive': '0 72% 45%',\n '--destructive-foreground': '0 0% 100%',\n\n '--success': '142 71% 35%',\n '--success-foreground': '0 0% 100%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '0 0% 12%',\n\n '--border': '220 6% 93%',\n '--input': '220 6% 93%',\n '--ring': '220 90% 45%',\n\n '--radius': '0.75rem',\n\n '--chart-1': '220 90% 45%',\n '--chart-2': '160 65% 38%',\n '--chart-3': '38 85% 50%',\n '--chart-4': '280 50% 50%',\n '--chart-5': '350 60% 50%',\n\n '--sidebar-background': '0 0% 98%',\n '--sidebar-foreground': '0 0% 12%',\n '--sidebar-primary': '220 90% 45%',\n '--sidebar-primary-foreground': '0 0% 100%',\n '--sidebar-accent': '220 30% 95%',\n '--sidebar-accent-foreground': '220 60% 35%',\n '--sidebar-border': '220 6% 93%',\n '--sidebar-ring': '220 90% 45%',\n },\n dark: {\n '--background': '0 0% 7%',\n '--foreground': '0 0% 98%',\n '--card': '0 0% 10%',\n '--card-foreground': '0 0% 98%',\n '--popover': '0 0% 10%',\n '--popover-foreground': '0 0% 98%',\n\n '--primary': '220 85% 60%',\n '--primary-foreground': '0 0% 7%',\n '--secondary': '220 5% 16%',\n '--secondary-foreground': '220 5% 65%',\n '--accent': '220 25% 18%',\n '--accent-foreground': '220 60% 75%',\n\n '--muted': '220 5% 16%',\n '--muted-foreground': '220 5% 60%',\n '--destructive': '0 63% 31%',\n '--destructive-foreground': '0 0% 98%',\n\n '--success': '142 71% 45%',\n '--success-foreground': '0 0% 98%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '0 0% 7%',\n\n '--border': '220 5% 16%',\n '--input': '220 5% 16%',\n '--ring': '220 85% 60%',\n\n '--radius': '0.75rem',\n\n '--chart-1': '220 85% 60%',\n '--chart-2': '160 55% 48%',\n '--chart-3': '38 85% 58%',\n '--chart-4': '280 45% 60%',\n '--chart-5': '350 55% 60%',\n\n '--sidebar-background': '0 0% 5%',\n '--sidebar-foreground': '0 0% 98%',\n '--sidebar-primary': '220 85% 60%',\n '--sidebar-primary-foreground': '0 0% 7%',\n '--sidebar-accent': '220 25% 18%',\n '--sidebar-accent-foreground': '220 60% 75%',\n '--sidebar-border': '220 5% 16%',\n '--sidebar-ring': '220 85% 60%',\n },\n },\n fonts: {\n sans: \"system-ui, -apple-system, 'Segoe UI', sans-serif\",\n heading: \"system-ui, -apple-system, 'Segoe UI', sans-serif\",\n mono: \"'SF Mono', ui-monospace, monospace\",\n },\n headingWeight: '300',\n headingLetterSpacing: '-0.03em',\n headingLineHeight: '1.1',\n fontSizeBase: '1rem',\n\n radius: '0.75rem',\n avatarRadius: '9999px',\n badgeRadius: '9999px',\n buttonRadius: '9999px',\n cardRadius: '1rem',\n\n shadows: {\n sm: '0 1px 3px 0 rgb(0 0 0 / 0.04)',\n md: '0 4px 8px -2px rgb(0 0 0 / 0.06), 0 2px 4px -2px rgb(0 0 0 / 0.04)',\n lg: '0 8px 16px -4px rgb(0 0 0 / 0.08), 0 4px 6px -4px rgb(0 0 0 / 0.04)',\n },\n cardShadow: '0 4px 8px -2px rgb(0 0 0 / 0.06), 0 2px 4px -2px rgb(0 0 0 / 0.04)',\n buttonShadow: '0 1px 3px 0 rgb(0 0 0 / 0.04)',\n\n overlayOpacity: '0.35',\n backdropBlur: '20px',\n glassBackground: 'rgba(255, 255, 255, 0.85)',\n\n spacingScale: 1.15,\n containerMaxWidth: '1200px',\n cardPadding: '2rem',\n inputHeight: '2.75rem',\n\n borderWidth: '0px',\n\n inputStyle: 'filled',\n buttonStyle: 'filled',\n hoverEffect: 'shadow-lift',\n disabledOpacity: '0.4',\n linkStyle: 'underline-on-hover',\n focusRingStyle: 'shadow',\n iconStyle: 'filled',\n iconStrokeWidth: '1.5',\n scrollbarStyle: 'hidden',\n selectionBackground: '220 90% 45%',\n selectionForeground: '0 0% 100%',\n tooltipStyle: 'light',\n tableStyle: 'clean',\n}\n\n// ---------------------------------------------------------------------------\n// 3. Warm — inspired by Airbnb + Notion\n//\n// Airbnb: #FF385C Rausch coral-pink primary, 12px radius,\n// Cereal/Circular font, warm and inviting\n// Notion: Very warm off-white #FFFEFA, sepia-tinted, minimal borders,\n// Charter/serif content font\n//\n// Blend: Airbnb's coral warmth with Notion's cozy off-white.\n//\n// WCAG 2.1 Contrast Ratios (light, against --background 35 40% 99%):\n// --foreground (15 20% 12%) -> ~16.4:1 AAA\n// --primary (350 85% 46%) -> ~5.1:1 AA (warm coral)\n// --muted-foreground (25 10% 40%) -> ~5.6:1 AA\n//\n// Dark mode (against --background 15 15% 5%):\n// --foreground (30 20% 95%) -> ~17.5:1 AAA\n// --primary (350 80% 65%) -> ~6.0:1 AA\n// ---------------------------------------------------------------------------\n\nexport const warmTheme: ThemeDefinition = {\n name: 'warm',\n displayName: 'Warm',\n description: 'Inviting, hospitable, cozy. Inspired by Airbnb and Notion.',\n colors: {\n light: {\n '--background': '35 40% 99%',\n '--foreground': '15 20% 12%',\n '--card': '35 30% 99%',\n '--card-foreground': '15 20% 12%',\n '--popover': '35 30% 99%',\n '--popover-foreground': '15 20% 12%',\n\n '--primary': '350 85% 46%',\n '--primary-foreground': '0 0% 100%',\n '--secondary': '30 15% 95%',\n '--secondary-foreground': '25 10% 40%',\n '--accent': '350 30% 94%',\n '--accent-foreground': '350 60% 38%',\n\n '--muted': '30 15% 95%',\n '--muted-foreground': '25 10% 40%',\n '--destructive': '0 72% 45%',\n '--destructive-foreground': '0 0% 100%',\n\n '--success': '142 71% 35%',\n '--success-foreground': '0 0% 100%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '15 20% 12%',\n\n '--border': '30 12% 90%',\n '--input': '30 12% 90%',\n '--ring': '350 85% 46%',\n\n '--radius': '0.75rem',\n\n '--chart-1': '350 85% 46%',\n '--chart-2': '195 70% 42%',\n '--chart-3': '155 60% 38%',\n '--chart-4': '270 50% 55%',\n '--chart-5': '45 85% 48%',\n\n '--sidebar-background': '35 25% 97%',\n '--sidebar-foreground': '15 20% 12%',\n '--sidebar-primary': '350 85% 46%',\n '--sidebar-primary-foreground': '0 0% 100%',\n '--sidebar-accent': '350 30% 94%',\n '--sidebar-accent-foreground': '350 60% 38%',\n '--sidebar-border': '30 12% 90%',\n '--sidebar-ring': '350 85% 46%',\n },\n dark: {\n '--background': '15 15% 5%',\n '--foreground': '30 20% 95%',\n '--card': '15 15% 9%',\n '--card-foreground': '30 20% 95%',\n '--popover': '15 15% 9%',\n '--popover-foreground': '30 20% 95%',\n\n '--primary': '350 80% 65%',\n '--primary-foreground': '15 15% 5%',\n '--secondary': '20 10% 16%',\n '--secondary-foreground': '25 10% 65%',\n '--accent': '350 25% 18%',\n '--accent-foreground': '350 50% 70%',\n\n '--muted': '20 10% 16%',\n '--muted-foreground': '30 10% 60%',\n '--destructive': '0 63% 31%',\n '--destructive-foreground': '0 0% 98%',\n\n '--success': '142 71% 45%',\n '--success-foreground': '0 0% 98%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '15 15% 5%',\n\n '--border': '20 10% 16%',\n '--input': '20 10% 16%',\n '--ring': '350 80% 65%',\n\n '--radius': '0.75rem',\n\n '--chart-1': '350 80% 65%',\n '--chart-2': '195 65% 52%',\n '--chart-3': '155 50% 48%',\n '--chart-4': '270 45% 65%',\n '--chart-5': '45 80% 58%',\n\n '--sidebar-background': '15 15% 5%',\n '--sidebar-foreground': '30 20% 95%',\n '--sidebar-primary': '350 80% 65%',\n '--sidebar-primary-foreground': '15 15% 5%',\n '--sidebar-accent': '350 25% 18%',\n '--sidebar-accent-foreground': '350 50% 70%',\n '--sidebar-border': '20 10% 16%',\n '--sidebar-ring': '350 80% 65%',\n },\n },\n fonts: {\n sans: \"system-ui, -apple-system, 'Segoe UI', sans-serif\",\n heading: \"system-ui, -apple-system, 'Segoe UI', sans-serif\",\n mono: \"'JetBrains Mono', ui-monospace, monospace\",\n },\n headingWeight: '600',\n headingLetterSpacing: '-0.01em',\n headingLineHeight: '1.25',\n fontSizeBase: '1rem',\n\n radius: '0.75rem',\n avatarRadius: '9999px',\n badgeRadius: '9999px',\n buttonRadius: '0.75rem',\n cardRadius: '1rem',\n\n shadows: {\n sm: '0 1px 3px 0 rgb(120 80 40 / 0.06)',\n md: '0 4px 6px -1px rgb(120 80 40 / 0.08), 0 2px 4px -2px rgb(120 80 40 / 0.06)',\n lg: '0 10px 15px -3px rgb(120 80 40 / 0.08), 0 4px 6px -4px rgb(120 80 40 / 0.06)',\n },\n cardShadow: '0 1px 3px 0 rgb(120 80 40 / 0.06)',\n buttonShadow: 'none',\n\n overlayOpacity: '0.45',\n backdropBlur: '12px',\n glassBackground: 'rgba(255, 252, 248, 0.85)',\n\n spacingScale: 1.05,\n containerMaxWidth: '1280px',\n cardPadding: '1.5rem',\n inputHeight: '2.5rem',\n\n borderWidth: '1px',\n\n inputStyle: 'bordered',\n buttonStyle: 'filled',\n hoverEffect: 'darken',\n disabledOpacity: '0.5',\n linkStyle: 'underline',\n focusRingStyle: 'ring',\n iconStyle: 'outlined',\n iconStrokeWidth: '2',\n scrollbarStyle: 'default',\n selectionBackground: '350 85% 46%',\n selectionForeground: '0 0% 100%',\n tooltipStyle: 'dark',\n tableStyle: 'clean',\n}\n\n// ---------------------------------------------------------------------------\n// 4. Signal — inspired by Slack + Linear\n//\n// Slack: #611F69 aubergine / #36C5F0 teal, Lato font,\n// dense functional UI, clear hierarchy, lots of small text\n// Linear: Clean teal accents, tight spacing, productive feel\n//\n// Blend: Professional teal primary, dense layout, crisp borders.\n//\n// WCAG 2.1 Contrast Ratios (light, against --background 0 0% 100%):\n// --foreground (210 15% 12%) -> ~16.7:1 AAA\n// --primary (190 80% 32%) -> ~4.8:1 AA (professional teal)\n// --muted-foreground (210 8% 40%) -> ~5.8:1 AA\n//\n// Dark mode (against --background 210 15% 5%):\n// --foreground (190 10% 95%) -> ~17.5:1 AAA\n// --primary (190 70% 50%) -> ~8.5:1 AAA\n// ---------------------------------------------------------------------------\n\nexport const signalTheme: ThemeDefinition = {\n name: 'signal',\n displayName: 'Signal',\n description: 'Focused, dense, productive. Inspired by Slack and Linear.',\n colors: {\n light: {\n '--background': '0 0% 100%',\n '--foreground': '210 15% 12%',\n '--card': '0 0% 100%',\n '--card-foreground': '210 15% 12%',\n '--popover': '0 0% 100%',\n '--popover-foreground': '210 15% 12%',\n\n '--primary': '190 80% 32%',\n '--primary-foreground': '0 0% 100%',\n '--secondary': '200 8% 95%',\n '--secondary-foreground': '210 8% 40%',\n '--accent': '190 25% 93%',\n '--accent-foreground': '190 60% 28%',\n\n '--muted': '200 8% 95%',\n '--muted-foreground': '210 8% 40%',\n '--destructive': '0 72% 45%',\n '--destructive-foreground': '0 0% 100%',\n\n '--success': '142 71% 35%',\n '--success-foreground': '0 0% 100%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '210 15% 12%',\n\n '--border': '210 10% 90%',\n '--input': '210 10% 90%',\n '--ring': '190 80% 32%',\n\n '--radius': '0.375rem',\n\n '--chart-1': '190 80% 32%',\n '--chart-2': '35 85% 50%',\n '--chart-3': '252 65% 55%',\n '--chart-4': '340 60% 50%',\n '--chart-5': '160 70% 38%',\n\n '--sidebar-background': '200 8% 97%',\n '--sidebar-foreground': '210 15% 12%',\n '--sidebar-primary': '190 80% 32%',\n '--sidebar-primary-foreground': '0 0% 100%',\n '--sidebar-accent': '190 25% 93%',\n '--sidebar-accent-foreground': '190 60% 28%',\n '--sidebar-border': '210 10% 90%',\n '--sidebar-ring': '190 80% 32%',\n },\n dark: {\n '--background': '210 15% 5%',\n '--foreground': '190 10% 95%',\n '--card': '210 13% 9%',\n '--card-foreground': '190 10% 95%',\n '--popover': '210 13% 9%',\n '--popover-foreground': '190 10% 95%',\n\n '--primary': '190 70% 50%',\n '--primary-foreground': '210 15% 5%',\n '--secondary': '210 8% 16%',\n '--secondary-foreground': '210 8% 65%',\n '--accent': '190 20% 18%',\n '--accent-foreground': '190 50% 65%',\n\n '--muted': '210 8% 16%',\n '--muted-foreground': '210 8% 60%',\n '--destructive': '0 63% 31%',\n '--destructive-foreground': '0 0% 98%',\n\n '--success': '142 71% 45%',\n '--success-foreground': '0 0% 98%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '210 15% 5%',\n\n '--border': '210 10% 16%',\n '--input': '210 10% 16%',\n '--ring': '190 70% 50%',\n\n '--radius': '0.375rem',\n\n '--chart-1': '190 70% 50%',\n '--chart-2': '35 80% 58%',\n '--chart-3': '252 55% 65%',\n '--chart-4': '340 55% 60%',\n '--chart-5': '160 55% 48%',\n\n '--sidebar-background': '210 15% 5%',\n '--sidebar-foreground': '190 10% 95%',\n '--sidebar-primary': '190 70% 50%',\n '--sidebar-primary-foreground': '210 15% 5%',\n '--sidebar-accent': '190 20% 18%',\n '--sidebar-accent-foreground': '190 50% 65%',\n '--sidebar-border': '210 10% 16%',\n '--sidebar-ring': '190 70% 50%',\n },\n },\n fonts: {\n sans: \"system-ui, -apple-system, 'Segoe UI', sans-serif\",\n heading: \"system-ui, -apple-system, 'Segoe UI', sans-serif\",\n mono: \"'JetBrains Mono', ui-monospace, monospace\",\n },\n headingWeight: '600',\n headingLetterSpacing: '-0.02em',\n headingLineHeight: '1.2',\n fontSizeBase: '1rem',\n\n radius: '0.375rem',\n avatarRadius: '0.25rem',\n badgeRadius: '0.25rem',\n buttonRadius: '0.25rem',\n cardRadius: '0.375rem',\n\n shadows: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.06)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.08)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.08)',\n },\n cardShadow: '0 1px 2px 0 rgb(0 0 0 / 0.06)',\n buttonShadow: 'none',\n\n overlayOpacity: '0.6',\n backdropBlur: '0px',\n glassBackground: 'rgba(255, 255, 255, 0.95)',\n\n spacingScale: 0.85,\n containerMaxWidth: '1400px',\n cardPadding: '1rem',\n inputHeight: '2rem',\n\n borderWidth: '1px',\n\n inputStyle: 'bordered',\n buttonStyle: 'filled',\n hoverEffect: 'darken',\n disabledOpacity: '0.4',\n linkStyle: 'color-only',\n focusRingStyle: 'ring',\n iconStyle: 'outlined',\n iconStrokeWidth: '1.5',\n scrollbarStyle: 'thin',\n selectionBackground: '190 80% 32%',\n selectionForeground: '0 0% 100%',\n tooltipStyle: 'dark',\n tableStyle: 'bordered',\n}\n\n// ---------------------------------------------------------------------------\n// 5. Pulse — inspired by Spotify + Discord\n//\n// Spotify: #1DB954 green, dark-leaning even in light mode,\n// Circular font, bold high-contrast, 8px radius, pill buttons\n// Discord: #5865F2 blurple, rounded/playful, gg sans font\n//\n// Blend: Vibrant Discord-ish blurple, very rounded, bold shadows.\n//\n// WCAG 2.1 Contrast Ratios (light, against --background 240 10% 97%):\n// --foreground (240 10% 10%) -> ~16.6:1 AAA\n// --primary (265 80% 55%) -> ~5.6:1 AA (blurple)\n// --muted-foreground (240 6% 40%) -> ~5.8:1 AA\n//\n// Dark mode (against --background 260 15% 5%):\n// --foreground (260 10% 96%) -> ~17.9:1 AAA\n// --primary (265 75% 65%) -> ~5.0:1 AA\n// ---------------------------------------------------------------------------\n\nexport const pulseTheme: ThemeDefinition = {\n name: 'pulse',\n displayName: 'Pulse',\n description: 'Energetic, bold, playful. Inspired by Spotify and Discord.',\n colors: {\n light: {\n '--background': '240 10% 97%',\n '--foreground': '240 10% 10%',\n '--card': '240 8% 99%',\n '--card-foreground': '240 10% 10%',\n '--popover': '240 8% 99%',\n '--popover-foreground': '240 10% 10%',\n\n '--primary': '265 80% 55%',\n '--primary-foreground': '0 0% 100%',\n '--secondary': '240 8% 93%',\n '--secondary-foreground': '240 6% 40%',\n '--accent': '265 30% 94%',\n '--accent-foreground': '265 60% 40%',\n\n '--muted': '240 8% 93%',\n '--muted-foreground': '240 6% 40%',\n '--destructive': '0 72% 45%',\n '--destructive-foreground': '0 0% 100%',\n\n '--success': '142 71% 35%',\n '--success-foreground': '0 0% 100%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '240 10% 10%',\n\n '--border': '240 8% 90%',\n '--input': '240 8% 90%',\n '--ring': '265 80% 55%',\n\n '--radius': '1rem',\n\n '--chart-1': '265 80% 55%',\n '--chart-2': '190 80% 42%',\n '--chart-3': '55 80% 48%',\n '--chart-4': '340 65% 50%',\n '--chart-5': '140 60% 40%',\n\n '--sidebar-background': '240 8% 96%',\n '--sidebar-foreground': '240 10% 10%',\n '--sidebar-primary': '265 80% 55%',\n '--sidebar-primary-foreground': '0 0% 100%',\n '--sidebar-accent': '265 30% 94%',\n '--sidebar-accent-foreground': '265 60% 40%',\n '--sidebar-border': '240 8% 90%',\n '--sidebar-ring': '265 80% 55%',\n },\n dark: {\n '--background': '260 15% 5%',\n '--foreground': '260 10% 96%',\n '--card': '260 12% 8%',\n '--card-foreground': '260 10% 96%',\n '--popover': '260 12% 8%',\n '--popover-foreground': '260 10% 96%',\n\n '--primary': '265 75% 65%',\n '--primary-foreground': '260 15% 5%',\n '--secondary': '260 6% 16%',\n '--secondary-foreground': '260 6% 65%',\n '--accent': '265 25% 18%',\n '--accent-foreground': '265 55% 75%',\n\n '--muted': '260 6% 16%',\n '--muted-foreground': '260 6% 60%',\n '--destructive': '0 63% 31%',\n '--destructive-foreground': '0 0% 98%',\n\n '--success': '142 71% 45%',\n '--success-foreground': '0 0% 98%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '260 15% 5%',\n\n '--border': '260 6% 16%',\n '--input': '260 6% 16%',\n '--ring': '265 75% 65%',\n\n '--radius': '1rem',\n\n '--chart-1': '265 75% 65%',\n '--chart-2': '190 75% 52%',\n '--chart-3': '55 75% 58%',\n '--chart-4': '340 55% 60%',\n '--chart-5': '140 50% 50%',\n\n '--sidebar-background': '260 15% 5%',\n '--sidebar-foreground': '260 10% 96%',\n '--sidebar-primary': '265 75% 65%',\n '--sidebar-primary-foreground': '260 15% 5%',\n '--sidebar-accent': '265 25% 18%',\n '--sidebar-accent-foreground': '265 55% 75%',\n '--sidebar-border': '260 6% 16%',\n '--sidebar-ring': '265 75% 65%',\n },\n },\n fonts: {\n sans: \"system-ui, -apple-system, 'Segoe UI', sans-serif\",\n heading: \"system-ui, -apple-system, 'Segoe UI', sans-serif\",\n mono: \"'JetBrains Mono', ui-monospace, monospace\",\n },\n headingWeight: '700',\n headingLetterSpacing: '-0.01em',\n headingLineHeight: '1.15',\n fontSizeBase: '1rem',\n\n radius: '1rem',\n avatarRadius: '9999px',\n badgeRadius: '9999px',\n buttonRadius: '9999px',\n cardRadius: '1.25rem',\n\n shadows: {\n sm: '0 2px 4px 0 rgb(0 0 0 / 0.08)',\n md: '0 6px 10px -2px rgb(0 0 0 / 0.12), 0 3px 5px -2px rgb(0 0 0 / 0.08)',\n lg: '0 14px 20px -4px rgb(0 0 0 / 0.14), 0 6px 8px -4px rgb(0 0 0 / 0.1)',\n },\n cardShadow: '0 2px 4px 0 rgb(0 0 0 / 0.08)',\n buttonShadow: '0 2px 4px 0 rgb(0 0 0 / 0.08)',\n\n overlayOpacity: '0.5',\n backdropBlur: '16px',\n glassBackground: 'rgba(248, 247, 252, 0.8)',\n\n spacingScale: 1.0,\n containerMaxWidth: '1280px',\n cardPadding: '1.5rem',\n inputHeight: '2.5rem',\n\n borderWidth: '1px',\n\n inputStyle: 'filled',\n buttonStyle: 'filled',\n hoverEffect: 'lighten',\n disabledOpacity: '0.4',\n linkStyle: 'color-only',\n focusRingStyle: 'ring',\n iconStyle: 'filled',\n iconStrokeWidth: '1.5',\n scrollbarStyle: 'thin',\n selectionBackground: '265 80% 55%',\n selectionForeground: '0 0% 100%',\n tooltipStyle: 'primary',\n tableStyle: 'striped',\n}\n\n// ---------------------------------------------------------------------------\n// 6. Mono — inspired by Stripe docs + GitHub\n//\n// Stripe docs: #F6F9FC light blue-gray background, #425466 text,\n// Inter body, monospace code, code-focused, technical\n// GitHub: Clean, technical, functional design\n//\n// Blend: Dark slate primary, subtle blue-gray tint, technical feel.\n//\n// WCAG 2.1 Contrast Ratios (light, against --background 210 20% 98%):\n// --foreground (210 15% 20%) -> ~12.2:1 AAA\n// --primary (210 10% 23%) -> ~10.9:1 AAA (dark slate)\n// --muted-foreground (210 10% 40%) -> ~5.6:1 AA\n//\n// Dark mode (against --background 210 15% 5%):\n// --foreground (210 15% 93%) -> ~16.6:1 AAA\n// --primary (210 10% 80%) -> ~12.1:1 AAA\n// ---------------------------------------------------------------------------\n\nexport const monoTheme: ThemeDefinition = {\n name: 'mono',\n displayName: 'Mono',\n description: 'Technical, precise, code-first. Inspired by Stripe docs and GitHub.',\n colors: {\n light: {\n '--background': '210 20% 98%',\n '--foreground': '210 15% 20%',\n '--card': '210 20% 98%',\n '--card-foreground': '210 15% 20%',\n '--popover': '0 0% 100%',\n '--popover-foreground': '210 15% 20%',\n\n '--primary': '210 10% 23%',\n '--primary-foreground': '0 0% 100%',\n '--secondary': '210 12% 94%',\n '--secondary-foreground': '210 10% 40%',\n '--accent': '210 15% 93%',\n '--accent-foreground': '210 10% 20%',\n\n '--muted': '210 12% 94%',\n '--muted-foreground': '210 10% 40%',\n '--destructive': '0 72% 45%',\n '--destructive-foreground': '0 0% 100%',\n\n '--success': '142 71% 35%',\n '--success-foreground': '0 0% 100%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '210 15% 20%',\n\n '--border': '210 14% 89%',\n '--input': '210 14% 89%',\n '--ring': '210 10% 23%',\n\n '--radius': '0.25rem',\n\n '--chart-1': '210 10% 23%',\n '--chart-2': '210 10% 40%',\n '--chart-3': '210 10% 55%',\n '--chart-4': '210 10% 70%',\n '--chart-5': '210 10% 82%',\n\n '--sidebar-background': '210 18% 96%',\n '--sidebar-foreground': '210 15% 20%',\n '--sidebar-primary': '210 10% 23%',\n '--sidebar-primary-foreground': '0 0% 100%',\n '--sidebar-accent': '210 15% 93%',\n '--sidebar-accent-foreground': '210 10% 20%',\n '--sidebar-border': '210 14% 89%',\n '--sidebar-ring': '210 10% 23%',\n },\n dark: {\n '--background': '210 15% 5%',\n '--foreground': '210 15% 93%',\n '--card': '210 13% 8%',\n '--card-foreground': '210 15% 93%',\n '--popover': '210 13% 8%',\n '--popover-foreground': '210 15% 93%',\n\n '--primary': '210 10% 80%',\n '--primary-foreground': '210 15% 5%',\n '--secondary': '210 8% 14%',\n '--secondary-foreground': '210 8% 65%',\n '--accent': '210 10% 18%',\n '--accent-foreground': '210 10% 80%',\n\n '--muted': '210 8% 14%',\n '--muted-foreground': '210 8% 60%',\n '--destructive': '0 63% 31%',\n '--destructive-foreground': '0 0% 98%',\n\n '--success': '142 71% 45%',\n '--success-foreground': '0 0% 98%',\n '--warning': '38 92% 50%',\n '--warning-foreground': '210 15% 5%',\n\n '--border': '210 8% 16%',\n '--input': '210 8% 16%',\n '--ring': '210 10% 80%',\n\n '--radius': '0.25rem',\n\n '--chart-1': '210 10% 80%',\n '--chart-2': '210 10% 65%',\n '--chart-3': '210 10% 50%',\n '--chart-4': '210 10% 35%',\n '--chart-5': '210 10% 22%',\n\n '--sidebar-background': '210 15% 5%',\n '--sidebar-foreground': '210 15% 93%',\n '--sidebar-primary': '210 10% 80%',\n '--sidebar-primary-foreground': '210 15% 5%',\n '--sidebar-accent': '210 10% 18%',\n '--sidebar-accent-foreground': '210 10% 80%',\n '--sidebar-border': '210 8% 16%',\n '--sidebar-ring': '210 10% 80%',\n },\n },\n fonts: {\n sans: \"system-ui, -apple-system, 'Segoe UI', sans-serif\",\n heading: \"'JetBrains Mono', ui-monospace, monospace\",\n mono: \"'JetBrains Mono', ui-monospace, monospace\",\n },\n headingWeight: '500',\n headingLetterSpacing: '-0.02em',\n headingLineHeight: '1.25',\n fontSizeBase: '1rem',\n\n radius: '0.25rem',\n avatarRadius: '0.25rem',\n badgeRadius: '0.125rem',\n buttonRadius: '0.25rem',\n cardRadius: '0.25rem',\n\n shadows: {\n sm: 'none',\n md: 'none',\n lg: 'none',\n },\n cardShadow: 'none',\n buttonShadow: 'none',\n\n overlayOpacity: '0.65',\n backdropBlur: '0px',\n glassBackground: 'rgba(246, 249, 252, 0.95)',\n\n spacingScale: 1.0,\n containerMaxWidth: '1200px',\n cardPadding: '1.5rem',\n inputHeight: '2.25rem',\n\n borderWidth: '1px',\n\n inputStyle: 'bordered',\n buttonStyle: 'filled',\n hoverEffect: 'darken',\n disabledOpacity: '0.5',\n linkStyle: 'underline-on-hover',\n focusRingStyle: 'outline',\n iconStyle: 'outlined',\n iconStrokeWidth: '1.5',\n scrollbarStyle: 'default',\n selectionBackground: '210 10% 23%',\n selectionForeground: '0 0% 100%',\n tooltipStyle: 'dark',\n tableStyle: 'bordered',\n}\n\n// ---------------------------------------------------------------------------\n// Theme registry\n// ---------------------------------------------------------------------------\n\nexport const THEMES: Record<string, ThemeDefinition> = {\n refraction: refractionTheme,\n luxe: luxeTheme,\n warm: warmTheme,\n signal: signalTheme,\n pulse: pulseTheme,\n mono: monoTheme,\n}\n\nexport const DEFAULT_THEME = 'refraction'\n\n// ---------------------------------------------------------------------------\n// Backward compat — glassaTheme alias\n// ---------------------------------------------------------------------------\n\n/** @deprecated Use `refractionTheme` or `THEMES.refraction` instead */\nexport const glassaTheme = {\n name: refractionTheme.name,\n light: refractionTheme.colors.light,\n dark: refractionTheme.colors.dark,\n} as const\n\n// ---------------------------------------------------------------------------\n// CSS generation\n// ---------------------------------------------------------------------------\n\n/**\n * Generate a full CSS string from a ThemeDefinition for injection into a\n * <style> tag or CSS file. Covers colors, typography, layout, shadows,\n * and all branding tokens.\n */\nexport function generateThemeCSS(theme: ThemeDefinition = refractionTheme): string {\n const colorVarsLight = Object.entries(theme.colors.light)\n .map(([key, value]) => ` ${key}: ${value};`)\n .join('\\n')\n\n const colorVarsDark = Object.entries(theme.colors.dark)\n .map(([key, value]) => ` ${key}: ${value};`)\n .join('\\n')\n\n const typographyVars = [\n ` --font-sans: ${theme.fonts.sans};`,\n ` --font-heading: ${theme.fonts.heading};`,\n ` --font-mono: ${theme.fonts.mono};`,\n '',\n ` --heading-weight: ${theme.headingWeight};`,\n ` --heading-letter-spacing: ${theme.headingLetterSpacing};`,\n ` --heading-line-height: ${theme.headingLineHeight};`,\n ` --font-size-base: ${theme.fontSizeBase};`,\n ].join('\\n')\n\n const layoutVars = [\n ` --radius: ${theme.radius};`,\n ` --avatar-radius: ${theme.avatarRadius};`,\n ` --badge-radius: ${theme.badgeRadius};`,\n ` --button-radius: ${theme.buttonRadius};`,\n ` --card-radius: ${theme.cardRadius};`,\n ].join('\\n')\n\n const shadowVars = [\n ` --shadow-sm: ${theme.shadows.sm};`,\n ` --shadow-md: ${theme.shadows.md};`,\n ` --shadow-lg: ${theme.shadows.lg};`,\n ` --card-shadow: ${theme.cardShadow};`,\n ` --button-shadow: ${theme.buttonShadow};`,\n ].join('\\n')\n\n const brandingVars = [\n // Glass & overlay\n ` --overlay-opacity: ${theme.overlayOpacity};`,\n ` --backdrop-blur: ${theme.backdropBlur};`,\n ` --glass-bg: ${theme.glassBackground};`,\n // Spacing & density\n ` --spacing-scale: ${theme.spacingScale};`,\n ` --container-max-width: ${theme.containerMaxWidth};`,\n ` --card-padding: ${theme.cardPadding};`,\n ` --input-height: ${theme.inputHeight};`,\n // Borders\n ` --border-width: ${theme.borderWidth};`,\n // Component styles\n ` --input-style: ${theme.inputStyle};`,\n ` --button-style: ${theme.buttonStyle};`,\n ` --hover-effect: ${theme.hoverEffect};`,\n ` --disabled-opacity: ${theme.disabledOpacity};`,\n ` --link-style: ${theme.linkStyle};`,\n ` --focus-ring-style: ${theme.focusRingStyle};`,\n ` --icon-style: ${theme.iconStyle};`,\n ` --icon-stroke-width: ${theme.iconStrokeWidth};`,\n ` --scrollbar-style: ${theme.scrollbarStyle};`,\n ` --tooltip-style: ${theme.tooltipStyle};`,\n ` --table-style: ${theme.tableStyle};`,\n // Selection\n ` --selection-background: ${theme.selectionBackground};`,\n ` --selection-foreground: ${theme.selectionForeground};`,\n ].join('\\n')\n\n return [\n ':root {',\n ' /* Colors */',\n colorVarsLight,\n '',\n ' /* Typography */',\n typographyVars,\n '',\n ' /* Layout */',\n layoutVars,\n '',\n ' /* Shadows */',\n shadowVars,\n '',\n ' /* Branding */',\n brandingVars,\n '}',\n '',\n '.dark {',\n colorVarsDark,\n '}',\n '',\n ].join('\\n')\n}\n\n/** Get all CSS variable names from the default theme (useful for validation) */\nexport function getThemeVariableNames(): string[] {\n return Object.keys(refractionTheme.colors.light)\n}\n","/**\n * WCAG contrast ratio utilities for theme validation.\n * Helps verify that theme colors meet accessibility requirements.\n *\n * WCAG 2.1 minimum contrast ratios:\n * - AA normal text: 4.5:1\n * - AA large text (>=18pt or >=14pt bold): 3:1\n * - AAA normal text: 7:1\n * - AAA large text: 4.5:1\n */\n\n/** Parse HSL string \"H S% L%\" to {h, s, l} */\nexport function parseHSL(hsl: string): { h: number; s: number; l: number } {\n const parts = hsl.trim().split(/\\s+/)\n if (parts.length !== 3) {\n throw new Error(`Invalid HSL string: \"${hsl}\". Expected \"H S% L%\" format.`)\n }\n const h = parseFloat(parts[0])\n const s = parseFloat(parts[1].replace('%', ''))\n const l = parseFloat(parts[2].replace('%', ''))\n if (isNaN(h) || isNaN(s) || isNaN(l)) {\n throw new Error(`Invalid HSL values in: \"${hsl}\"`)\n }\n return { h, s, l }\n}\n\n/**\n * Convert a single sRGB channel value (0-1) to linear RGB.\n * Used in the WCAG relative luminance formula.\n */\nfunction sRGBToLinear(c: number): number {\n return c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4)\n}\n\n/**\n * Convert HSL values to an RGB tuple (each 0-1).\n */\nfunction hslToRGB(h: number, s: number, l: number): [number, number, number] {\n const sNorm = s / 100\n const lNorm = l / 100\n const c = (1 - Math.abs(2 * lNorm - 1)) * sNorm\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1))\n const m = lNorm - c / 2\n\n let r = 0, g = 0, b = 0\n if (h < 60) { r = c; g = x; b = 0 }\n else if (h < 120) { r = x; g = c; b = 0 }\n else if (h < 180) { r = 0; g = c; b = x }\n else if (h < 240) { r = 0; g = x; b = c }\n else if (h < 300) { r = x; g = 0; b = c }\n else { r = c; g = 0; b = x }\n\n return [r + m, g + m, b + m]\n}\n\n/** Convert HSL to relative luminance (WCAG 2.1 formula) */\nexport function hslToLuminance(h: number, s: number, l: number): number {\n const [r, g, b] = hslToRGB(h, s, l)\n const rLin = sRGBToLinear(r)\n const gLin = sRGBToLinear(g)\n const bLin = sRGBToLinear(b)\n return 0.2126 * rLin + 0.7152 * gLin + 0.0722 * bLin\n}\n\n/** Calculate contrast ratio between two relative luminances */\nexport function contrastRatio(l1: number, l2: number): number {\n const lighter = Math.max(l1, l2)\n const darker = Math.min(l1, l2)\n return (lighter + 0.05) / (darker + 0.05)\n}\n\n/** Check if two HSL colors meet WCAG AA (4.5:1 normal, 3:1 large) */\nexport function meetsWCAG_AA(\n foreground: string,\n background: string,\n isLargeText = false,\n): boolean {\n const fg = parseHSL(foreground)\n const bg = parseHSL(background)\n const fgLum = hslToLuminance(fg.h, fg.s, fg.l)\n const bgLum = hslToLuminance(bg.h, bg.s, bg.l)\n const ratio = contrastRatio(fgLum, bgLum)\n return ratio >= (isLargeText ? 3 : 4.5)\n}\n\n/** Check WCAG AAA (7:1 normal, 4.5:1 large) */\nexport function meetsWCAG_AAA(\n foreground: string,\n background: string,\n isLargeText = false,\n): boolean {\n const fg = parseHSL(foreground)\n const bg = parseHSL(background)\n const fgLum = hslToLuminance(fg.h, fg.s, fg.l)\n const bgLum = hslToLuminance(bg.h, bg.s, bg.l)\n const ratio = contrastRatio(fgLum, bgLum)\n return ratio >= (isLargeText ? 4.5 : 7)\n}\n\n/**\n * Foreground/background pairs to validate in a theme.\n * Each entry maps a descriptive pair name to the CSS variable names\n * for the foreground and background colors.\n */\nconst THEME_PAIRS: { pair: string; fg: string; bg: string; largeText?: boolean }[] = [\n { pair: 'foreground / background', fg: '--foreground', bg: '--background' },\n { pair: 'primary / background', fg: '--primary', bg: '--background' },\n { pair: 'primary-foreground / primary', fg: '--primary-foreground', bg: '--primary' },\n { pair: 'secondary-foreground / secondary', fg: '--secondary-foreground', bg: '--secondary' },\n { pair: 'muted-foreground / background', fg: '--muted-foreground', bg: '--background' },\n { pair: 'muted-foreground / muted', fg: '--muted-foreground', bg: '--muted' },\n { pair: 'accent-foreground / accent', fg: '--accent-foreground', bg: '--accent' },\n { pair: 'destructive-foreground / destructive', fg: '--destructive-foreground', bg: '--destructive' },\n { pair: 'card-foreground / card', fg: '--card-foreground', bg: '--card' },\n { pair: 'popover-foreground / popover', fg: '--popover-foreground', bg: '--popover' },\n { pair: 'sidebar-foreground / sidebar-background', fg: '--sidebar-foreground', bg: '--sidebar-background' },\n { pair: 'sidebar-accent-foreground / sidebar-accent', fg: '--sidebar-accent-foreground', bg: '--sidebar-accent' },\n]\n\n/** Validate an entire theme's contrast ratios */\nexport function validateThemeContrast(\n theme: { light: Record<string, string>; dark: Record<string, string> },\n): { pair: string; mode: string; ratio: number; passes: boolean }[] {\n const results: { pair: string; mode: string; ratio: number; passes: boolean }[] = []\n\n for (const mode of ['light', 'dark'] as const) {\n const vars = theme[mode]\n for (const { pair, fg, bg, largeText } of THEME_PAIRS) {\n const fgVal = vars[fg]\n const bgVal = vars[bg]\n if (!fgVal || !bgVal) continue\n\n // Skip non-HSL values like --radius\n try {\n const fgHSL = parseHSL(fgVal)\n const bgHSL = parseHSL(bgVal)\n const fgLum = hslToLuminance(fgHSL.h, fgHSL.s, fgHSL.l)\n const bgLum = hslToLuminance(bgHSL.h, bgHSL.s, bgHSL.l)\n const ratio = contrastRatio(fgLum, bgLum)\n const threshold = largeText ? 3 : 4.5\n results.push({\n pair: `${mode}: ${pair}`,\n mode,\n ratio: Math.round(ratio * 100) / 100,\n passes: ratio >= threshold,\n })\n } catch {\n // Skip unparseable values\n }\n }\n }\n\n return results\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@refraction-ui/tailwind-config",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "require": "./dist/index.cjs",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "dependencies": {},
19
+ "devDependencies": {},
20
+ "sideEffects": false,
21
+ "license": "MIT",
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "https://github.com/elloloop/refraction-ui.git",
25
+ "directory": "packages/tailwind-config"
26
+ },
27
+ "homepage": "https://elloloop.github.io/refraction-ui/",
28
+ "scripts": {
29
+ "build": "tsup",
30
+ "dev": "tsup --watch",
31
+ "test": "vitest run",
32
+ "test:watch": "vitest",
33
+ "test:coverage": "vitest run --coverage",
34
+ "typecheck": "tsc --noEmit",
35
+ "lint": "eslint src --ext .ts",
36
+ "clean": "rm -rf dist"
37
+ }
38
+ }