/** * Grayscale color palette used throughout the application. * * @remarks * Provides a complete grayscale from near-white (50) to near-black (950). * Each shade has a specific semantic purpose in the dark-themed UI. * * Common usage: * - 50-400: Text colors (lighter is more prominent) * - 500-600: Interactive states and borders * - 700-950: Backgrounds and surfaces * * @example * ```ts * import { gray } from '@/lib/theme/colors' * * const textColor = gray[100] // Primary text * const cardBg = gray[800] // Card background * ``` * * @category Theme * @public */ export const gray = { /** Near-white, lightest shade - #f9fafb */ 50: '#f9fafb', /** Very light gray - Primary text on dark backgrounds - #f3f4f6 */ 100: '#f3f4f6', /** Light gray - Secondary headings - #e5e7eb */ 200: '#e5e7eb', /** Medium-light gray - Body text - #d1d5db */ 300: '#d1d5db', /** Medium gray - Muted text and descriptions - #9ca3af */ 400: '#9ca3af', /** Medium-dark gray - Disabled states - #6b7280 */ 500: '#6b7280', /** Dark gray - Hover states for borders - #4b5563 */ 600: '#4b5563', /** Darker gray - Default borders and cards - #374151 */ 700: '#374151', /** Very dark gray - Background gradient start - #1f2937 */ 800: '#1f2937', /** Near-black - Background gradient end - #111827 */ 900: '#111827', /** Deepest black - #030712 */ 950: '#030712', } as const /** * Background color tokens for page and surface backgrounds. * * @remarks * Provides consistent background colors with semantic naming: * - Page gradients for main background * - Surface colors for cards and interactive elements * - Hover states for transitions * * @example * ```tsx * import { backgrounds } from '@/lib/theme/colors' * *
*
* Card content *
*
* ``` * * @category Theme * @public */ export const backgrounds = { /** Page background gradient start color (gray-800) - rgb(31, 41, 55) */ pageGradientStart: 'rgb(31, 41, 55)', /** Page background gradient end color (gray-900) - rgb(17, 24, 39) */ pageGradientEnd: 'rgb(17, 24, 39)', /** Semi-transparent card background (gray-900/50) - rgba(31, 41, 55, 0.5) */ card: 'rgba(31, 41, 55, 0.5)', /** Solid card background (gray-800) - #1f2937 */ cardSolid: '#1f2937', /** Hover state background (gray-700 with opacity) - rgba(55, 65, 81, 0.6) */ hover: 'rgba(55, 65, 81, 0.6)', } as const /** * Border color tokens for consistent border styling. * * @remarks * Provides border colors with varying opacity levels: * - Default: Standard border for cards and sections * - Hover: Highlighted border on interactive elements * - Subtle/Muted: Lower-contrast borders for nested elements * * @example * ```tsx * import { borders } from '@/lib/theme/colors' * *
* // On hover *
* Interactive element *
*
* ``` * * @category Theme * @public */ export const borders = { /** Default border color (gray-700) - #374151 */ default: '#374151', /** Hover border color (gray-600) - #4b5563 */ hover: '#4b5563', /** Subtle border with low opacity - rgba(75, 85, 99, 0.3) */ subtle: 'rgba(75, 85, 99, 0.3)', /** Muted border with medium opacity - rgba(75, 85, 99, 0.5) */ muted: 'rgba(75, 85, 99, 0.5)', } as const /** * Text color tokens organized by semantic meaning and visual hierarchy. * * @remarks * Provides a consistent text color scale from most to least prominent: * - Primary: Most important text (headings, key info) * - Secondary: Subheadings and emphasized text * - Body: Standard paragraph text * - Muted: Less important text (descriptions, captions) * - Disabled: Inactive or unavailable text * - Inverse: Text on light backgrounds (opposite of normal) * * @example * ```tsx * import { text } from '@/lib/theme/colors' * *

Main Title

*

Subtitle

*

Paragraph text

* Caption * ``` * * @category Theme * @public */ export const text = { /** Primary text color - Highest contrast (gray-100) - #f3f4f6 */ primary: '#f3f4f6', /** Secondary text color - Headings and emphasis (gray-200) - #e5e7eb */ secondary: '#e5e7eb', /** Body text color - Standard paragraphs (gray-300) - #d1d5db */ body: '#d1d5db', /** Muted text color - Descriptions and captions (gray-400) - #9ca3af */ muted: '#9ca3af', /** Disabled text color - Inactive elements (gray-500) - #6b7280 */ disabled: '#6b7280', /** Inverse text color - For light backgrounds (gray-900) - #111827 */ inverse: '#111827', } as const /** * Accent color tokens for links, branding, and semantic states. * * @remarks * Organized into semantic categories: * - Link colors: Blue tones for hyperlinks * - AI theme: Orange/rust colors for Claude AI branding * - Type colors: Purple for documentation type references * - Semantic colors: Success, warning, error, info states * * Each accent color includes hover and background variants where applicable. * * @example * ```tsx * import { accents } from '@/lib/theme/colors' * * Link *
Badge
* Success! * ``` * * @category Theme * @public */ export const accents = { /** Link text color (blue-400) - #60a5fa */ link: '#60a5fa', /** Link hover color (blue-500) - #3b82f6 */ linkHover: '#3b82f6', /** Link badge background (blue-400/10) - rgba(96, 165, 250, 0.1) */ linkBg: 'rgba(96, 165, 250, 0.1)', /** AI/Claude primary brand color - #c15f3c */ ai: '#c15f3c', /** AI/Claude muted variant - #d68b6b */ aiMuted: '#d68b6b', /** AI/Claude high contrast background - #1a100d */ aiContrast: '#1a100d', /** Type/interface color for docs (purple-500) - #a855f7 */ type: '#a855f7', /** Type badge background (purple-500/10) - rgba(168, 85, 247, 0.1) */ typeBg: 'rgba(168, 85, 247, 0.1)', /** Documentation primary accent (blue-400) - #60a5fa */ docs: '#60a5fa', /** Documentation card background (blue-500/8) - rgba(59, 130, 246, 0.08) */ docsBg: 'rgba(59, 130, 246, 0.08)', /** Documentation border (blue-500/25) - rgba(59, 130, 246, 0.25) */ docsBorder: 'rgba(59, 130, 246, 0.25)', /** Documentation glow/shadow (blue-500/12) - rgba(59, 130, 246, 0.12) */ docsGlow: 'rgba(59, 130, 246, 0.12)', /** Documentation icon background (blue-500/20) - rgba(59, 130, 246, 0.2) */ docsIconBg: 'rgba(59, 130, 246, 0.2)', /** Documentation blur effect (blue-500 solid) - #3b82f6 */ docsBlur: '#3b82f6', /** Success state color (green) - #10b981 */ success: '#10b981', /** Warning state color (amber) - #f59e0b */ warning: '#f59e0b', /** Warning badge background (warning/10) - rgba(245, 158, 11, 0.1) */ warningBg: 'rgba(245, 158, 11, 0.1)', /** Error state color (red) - #ef4444 */ error: '#ef4444', /** Info state color (blue) - #3b82f6 */ info: '#3b82f6', } as const /** * Effect color tokens for glows, shadows, and other visual effects. * * @remarks * Provides colors specifically for CSS effects like text-shadow and box-shadow. * Used to create depth and emphasis in the UI. * * @example * ```tsx * import { effectColors } from '@/lib/theme/colors' * *

* Glowing Text *

*
* Card with shadow *
* ``` * * @category Theme * @public */ export const effectColors = { /** Standard text glow (80% opacity) - rgba(255, 255, 255, 0.8) */ textGlow: 'rgba(255, 255, 255, 0.8)', /** Hover text glow (90% opacity) - rgba(255, 255, 255, 0.9) */ textGlowHover: 'rgba(255, 255, 255, 0.9)', /** Intense text glow (100% opacity) - rgba(255, 255, 255, 1) */ textGlowIntense: 'rgba(255, 255, 255, 1)', /** Card box shadow color - rgba(0, 0, 0, 0.2) */ shadowCard: 'rgba(0, 0, 0, 0.2)', } as const /** * Complete color system combining all color token categories. * * @remarks * Central export containing all color tokens organized by purpose: * - {@link gray}: Grayscale palette * - {@link backgrounds}: Background colors * - {@link borders}: Border colors * - {@link text}: Text colors * - {@link accents}: Accent and semantic colors * - {@link effectColors}: Shadow and glow colors * * @example * ```ts * import { colors } from '@/lib/theme/colors' * * // Access any color token * const primaryText = colors.text.primary * const cardBg = colors.backgrounds.card * const linkColor = colors.accents.link * ``` * * @category Theme * @public */ export const colors = { gray, backgrounds, borders, text, accents, effectColors, } as const /** * TypeScript type representing all available color tokens. * * @remarks * Use this type for type-safe color access in components and utilities. * * @category Theme * @public */ export type ColorTokens = typeof colors