'use client' import * as React from 'react' import { Button } from '@/components/ui/button' import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from '@/components/ui/card' import { Separator } from '@/components/ui/separator' import { useTheme } from 'next-themes' export default function ThemePage() { const { theme, setTheme } = useTheme() const [mounted, setMounted] = React.useState(false) // Prevent hydration mismatch React.useEffect(() => { setMounted(true) }, []) if (!mounted) { return null } return (

Theme & Design Tokens

Explore the color system and design tokens

{/* Theme Switcher */} Theme Switcher Current theme: {theme}
{/* Color Tokens */}
Semantic Colors Colors that describe purpose, not appearance
{/* Component Variants */} Button Variants Different button styles using semantic colors
{/* Typography */} Typography Scale Text styles with proper hierarchy

Heading 1 (4xl)

text-4xl font-bold

Heading 2 (3xl)

text-3xl font-bold

Heading 3 (2xl)

text-2xl font-semibold

Heading 4 (xl)

text-xl font-semibold

Body text (base)

text-base

Small text (sm)

text-sm

Extra small (xs)

text-xs

{/* Customization Guide */} Customization How to customize your theme

1. Update CSS Variables

Edit app/globals.css:

                  {`:root {
  --primary: 270 80% 45%;  /* Change to your brand color */
  --radius: 0.75rem;        /* Adjust border radius */
}`}
                

2. Use HSL Color Picker

Find HSL values using:{' '} HSL Color Picker

3. Test Contrast

Ensure WCAG compliance using:{' '} WebAIM Contrast Checker

4. Test Both Themes

Always verify colors look good in both light and dark mode

) } function ColorSwatch({ label, description, className, }: { label: string description: string className: string }) { return (
{label}

{label}

{description}

) }