@lukeashford/aurelius 2.1.0 → 2.3.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.
- package/README.md +1 -3
- package/dist/index.d.mts +577 -2
- package/dist/index.d.ts +577 -2
- package/dist/index.js +2683 -164
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2624 -162
- package/dist/index.mjs.map +1 -1
- package/dist/styles/base.css +4 -0
- package/dist/styles/prose.css +61 -0
- package/dist/styles/theme.css +230 -42
- package/llms.md +39 -3
- package/package.json +19 -5
- package/scripts/eslint.mjs +127 -117
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/components/Button.tsx","../src/components/Input.tsx","../src/components/Card.tsx","../src/components/Avatar.tsx","../src/components/Badge.tsx","../src/components/Tooltip.tsx","../src/components/Label.tsx","../src/components/HelperText.tsx","../src/components/Textarea.tsx","../src/components/Select.tsx","../src/components/Checkbox.tsx","../src/components/Radio.tsx","../src/components/Switch.tsx","../src/components/Alert.tsx","../src/components/Spinner.tsx","../src/components/Skeleton.tsx","../src/components/Modal.tsx"],"sourcesContent":["/**\n * Aurelius Design System\n *\n * A cohesive visual language for creative technologists.\n * Combines technical sophistication with artistic sensibility.\n *\n * CSS-first Tailwind v4 design system.\n * Import '@lukeashford/aurelius/styles/base.css' for complete styling.\n */\n\n// React components\nexport * from './components'\n\n// Version\nexport const version = '2.0.0'\n","import React from 'react'\n\nexport type ButtonVariant =\n | 'primary'\n | 'important'\n | 'elevated'\n | 'outlined'\n | 'featured'\n | 'ghost'\n | 'danger'\n\nexport type ButtonSize = 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant\n size?: ButtonSize\n loading?: boolean\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({variant = 'primary', size = 'md', loading = false, className, disabled, children, ...rest},\n ref) => {\n const isDisabled = disabled || loading\n\n // Base button styles - common to all variants\n const base =\n 'inline-flex items-center justify-center font-semibold tracking-wide ' +\n 'transition-all duration-fast ' +\n 'rounded-none ' +\n 'disabled:opacity-50 disabled:cursor-not-allowed'\n\n // Variant styles\n const variantClasses = {\n primary:\n 'bg-charcoal text-white border border-gold/30 ' +\n 'hover:border-gold hover:shadow-glow hover:text-gold-light ' +\n 'active:bg-white/5 ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n important:\n 'bg-gold text-obsidian border border-gold ' +\n 'hover:bg-gold-light hover:text-obsidian ' +\n 'active:bg-gold-bright ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n elevated:\n 'bg-charcoal text-white border-0 shadow-lg ' +\n 'hover:shadow-xl hover:text-gold-light ' +\n 'active:bg-white/5 ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n outlined:\n 'bg-transparent text-white border border-ash ' +\n 'hover:border-white hover:text-white ' +\n 'active:bg-white/5 ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n featured:\n 'bg-charcoal text-white border border-gold ' +\n 'shadow-[0_0_10px_rgba(201,162,39,0.2)] ' +\n 'hover:shadow-[0_0_15px_rgba(201,162,39,0.4)] hover:text-gold-light ' +\n 'active:bg-white/5 ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n ghost:\n 'bg-transparent text-gold border-0 ' +\n 'hover:text-gold-light ' +\n 'active:text-gold-bright ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n danger:\n 'bg-error text-white border-0 ' +\n 'hover:bg-error/90 ' +\n 'active:bg-error/80 ' +\n 'focus-visible:ring-2 focus-visible:ring-error focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n }\n\n // Size styles\n const sizeClasses = {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-4 text-sm',\n lg: 'h-12 px-6 text-base',\n xl: 'h-14 px-8 text-lg',\n }\n\n const variantClass = variantClasses[variant]\n const sizeClass = sizeClasses[size]\n\n return (\n <button\n ref={ref}\n className={cx(base, variantClass, sizeClass, loading && 'opacity-80', className)}\n disabled={isDisabled}\n {...rest}\n >\n {loading && (\n <span\n className=\"mr-2 inline-block h-4 w-4 animate-pulse rounded-full bg-gold\"\n aria-hidden\n />\n )}\n {children}\n </button>\n )\n }\n)\n\nButton.displayName = 'Button'\n\nexport default Button\n","import React from 'react'\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n error?: boolean\n leadingIcon?: React.ReactNode\n trailingIcon?: React.ReactNode\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ error = false, className, leadingIcon, trailingIcon, disabled, ...rest }, ref) => {\n // Base input styles\n const base =\n 'w-full h-10 px-3 bg-graphite border border-ash rounded-none ' +\n 'text-white placeholder:text-zinc ' +\n 'transition-all duration-fast ' +\n 'focus:border-gold focus:ring-1 focus:ring-gold focus:outline-none ' +\n 'disabled:bg-slate disabled:text-dim disabled:cursor-not-allowed'\n\n // Error styles\n const errorCls = error ? 'border-error focus:border-error focus:ring-error' : ''\n\n return (\n <div className={cx('relative', disabled && 'opacity-90')}>\n {leadingIcon && (\n <span className=\"pointer-events-none absolute inset-y-0 left-3 flex items-center text-silver\">\n {leadingIcon}\n </span>\n )}\n <input\n ref={ref}\n className={cx(\n base,\n errorCls,\n (leadingIcon || trailingIcon) ? 'pl-9 pr-9' : false,\n className\n )}\n disabled={disabled}\n {...rest}\n />\n {trailingIcon && (\n <span className=\"pointer-events-none absolute inset-y-0 right-3 flex items-center text-silver\">\n {trailingIcon}\n </span>\n )}\n </div>\n )\n }\n)\n\nInput.displayName = 'Input'\n\nexport default Input\n","import React from 'react'\n\nexport type CardVariant = 'default' | 'elevated' | 'outlined' | 'ghost' | 'featured'\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: CardVariant\n interactive?: boolean\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({variant = 'default', interactive = false, className, ...rest}, ref) => {\n // Base card styles\n const base = 'rounded-none p-6'\n\n // Variant styles\n const variantClasses = {\n default: 'bg-charcoal shadow-sm border border-gold/30',\n elevated: 'bg-charcoal shadow-lg border-0',\n outlined: 'bg-charcoal shadow-none border border-ash',\n ghost: 'bg-transparent shadow-none border-0',\n featured: 'bg-charcoal border border-gold shadow-[0_0_10px_rgba(201,162,39,0.2)]',\n }\n\n // Interactive styles\n const interactiveClass = interactive\n ? 'transition-all duration-200 hover:border-gold hover:shadow-glow cursor-pointer'\n : ''\n\n const variantClass = variantClasses[variant]\n\n return (\n <div\n ref={ref}\n className={cx(base, variantClass, interactiveClass, className)}\n {...rest}\n />\n )\n }\n)\n\nCard.displayName = 'Card'\n\nexport default Card\n","import React from 'react'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\nexport type AvatarStatus = 'online' | 'offline' | 'busy'\n\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n src?: string\n alt?: string\n name?: string\n size?: AvatarSize\n status?: AvatarStatus\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nconst sizeMap: Record<AvatarSize, string> = {\n xs: 'h-6 w-6 text-[10px]',\n sm: 'h-8 w-8 text-[11px]',\n md: 'h-10 w-10 text-xs',\n lg: 'h-12 w-12 text-sm',\n xl: 'h-16 w-16 text-base',\n '2xl': 'h-24 w-24 text-lg',\n}\n\nfunction initials(name?: string) {\n if (!name) return ''\n const parts = name.trim().split(/\\s+/)\n return parts.slice(0, 2).map(p => p[0]!.toUpperCase()).join('')\n}\n\nexport const Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n ({ src, alt = '', name, size = 'md', status, className, ...rest }, ref) => {\n const statusColor =\n status === 'online' ? 'bg-success' : status === 'busy' ? 'bg-warning' : 'bg-zinc'\n\n return (\n <div\n ref={ref}\n className={cx(\n 'relative inline-flex items-center justify-center rounded-full border-2 border-ash bg-slate text-silver font-semibold select-none overflow-hidden',\n sizeMap[size],\n className\n )}\n {...rest}\n >\n {src ? (\n <img src={src} alt={alt || name || 'Avatar'} className=\"h-full w-full object-cover\" />\n ) : (\n <span aria-hidden>{initials(name) || '·'}</span>\n )}\n {status && (\n <span\n className={cx(\n 'absolute bottom-0 right-0 rounded-full ring-2 ring-charcoal',\n // 25% of avatar size\n size === 'xs' ? 'h-1.5 w-1.5' :\n size === 'sm' ? 'h-2 w-2' :\n size === 'md' ? 'h-2.5 w-2.5' :\n size === 'lg' ? 'h-3 w-3' :\n size === 'xl' ? 'h-4 w-4' : 'h-5 w-5',\n statusColor\n )}\n />\n )}\n </div>\n )\n }\n)\n\nAvatar.displayName = 'Avatar'\n\nexport default Avatar\n","import React from 'react'\n\nexport type BadgeVariant = 'default' | 'gold' | 'success' | 'error' | 'warning' | 'info'\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ variant = 'default', className, ...rest }, ref) => {\n // Base badge styles\n const base = 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium border'\n\n // Variant styles\n const variantClasses = {\n default: 'bg-slate text-silver border-slate',\n gold: 'bg-gold/20 text-gold border-gold/30',\n success: 'bg-success/20 text-success border-success/30',\n error: 'bg-error/20 text-error border-error/30',\n warning: 'bg-warning/20 text-warning border-warning/30',\n info: 'bg-info/20 text-info border-info/30',\n }\n\n const variantClass = variantClasses[variant]\n\n return <span ref={ref} className={cx(base, variantClass, className)} {...rest} />\n }\n)\n\nBadge.displayName = 'Badge'\n\nexport default Badge\n","import React from 'react'\n\nexport type TooltipSide = 'top' | 'right' | 'bottom' | 'left'\n\nexport interface TooltipProps {\n content: React.ReactNode\n children: React.ReactElement\n open?: boolean\n side?: TooltipSide\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\n// Simple, controlled tooltip. Consumer handles open state.\nexport const Tooltip: React.FC<TooltipProps> = ({ content, children, open = false, side = 'top' }) => {\n return (\n <span className=\"relative inline-block\">\n {children}\n <span\n role=\"tooltip\"\n className={cx(\n 'pointer-events-none absolute z-50 whitespace-nowrap rounded-md border border-ash bg-graphite px-3 py-1.5 text-sm text-white shadow-lg transition-opacity duration-200 ease-out',\n open ? 'opacity-100' : 'opacity-0',\n side === 'top' && 'left-1/2 -translate-x-1/2 -top-2 -translate-y-full',\n side === 'bottom' && 'left-1/2 -translate-x-1/2 -bottom-2 translate-y-full',\n side === 'left' && 'top-1/2 -translate-y-1/2 -left-2 -translate-x-full',\n side === 'right' && 'top-1/2 -translate-y-1/2 -right-2 translate-x-full'\n )}\n >\n {content}\n </span>\n </span>\n )\n}\n\nexport default Tooltip\n","import React from 'react'\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n required?: boolean\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, required, children, ...rest }, ref) => {\n return (\n <label\n ref={ref}\n className={cx('block text-sm font-medium text-silver mb-1.5', className)}\n {...rest}\n >\n {children}\n {required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )\n }\n)\n\nLabel.displayName = 'Label'\n\nexport default Label\n","import React from 'react'\n\nexport interface HelperTextProps extends React.HTMLAttributes<HTMLParagraphElement> {\n error?: boolean\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const HelperText = React.forwardRef<HTMLParagraphElement, HelperTextProps>(\n ({ className, error, children, ...rest }, ref) => {\n return (\n <p\n ref={ref}\n className={cx('mt-1.5 text-xs', error ? 'text-error' : 'text-silver', className)}\n {...rest}\n >\n {children}\n </p>\n )\n }\n)\n\nHelperText.displayName = 'HelperText'\n\nexport default HelperText\n","import React from 'react'\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n error?: boolean\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ error = false, className, disabled, ...rest }, ref) => {\n // Base textarea styles\n const base =\n 'w-full px-3 py-2 bg-graphite border border-ash rounded-none ' +\n 'text-white placeholder:text-zinc min-h-[80px] ' +\n 'transition-all duration-fast ' +\n 'focus:border-gold focus:ring-1 focus:ring-gold focus:outline-none ' +\n 'disabled:bg-slate disabled:text-dim disabled:cursor-not-allowed'\n\n // Error styles\n const errorCls = error ? 'border-error focus:border-error focus:ring-error' : ''\n\n return (\n <textarea\n ref={ref}\n className={cx(base, errorCls, disabled && 'opacity-90', className)}\n disabled={disabled}\n {...rest}\n />\n )\n }\n)\n\nTextarea.displayName = 'Textarea'\n\nexport default Textarea\n","import React from 'react'\n\nexport interface SelectOption {\n label: string\n value: string | number\n}\n\nexport interface SelectProps extends React.SelectHTMLAttributes<HTMLSelectElement> {\n error?: boolean\n options?: SelectOption[]\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nconst selectBgImage = \"url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23C9A227' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\\\")\"\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ error = false, className, disabled, options, children, ...rest }, ref) => {\n return (\n <select\n ref={ref}\n className={cx(\n 'appearance-none bg-graphite border border-ash rounded-none text-white px-3 py-2 pr-8',\n 'focus:border-gold focus:ring-1 focus:ring-gold focus:outline-none',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n error && 'border-error focus:border-error focus:ring-error',\n className\n )}\n style={{\n backgroundImage: selectBgImage,\n backgroundPosition: 'right 0.5rem center',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '1.5em 1.5em',\n }}\n disabled={disabled}\n {...rest}\n >\n {options\n ? options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))\n : children}\n </select>\n )\n }\n)\n\nSelect.displayName = 'Select'\n\nexport default Select\n","import React, { useCallback } from 'react'\n\nexport interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nconst checkmarkSvg = \"url(\\\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='%231A1A1A' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\\\")\"\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, id, ...rest }, ref) => {\n const inputId = id || rest.name || Math.random().toString(36).substr(2, 9)\n\n const setRef = useCallback((node: HTMLInputElement | null) => {\n if (node) {\n // Set initial background image based on checked state\n if (node.checked) {\n node.style.backgroundImage = checkmarkSvg\n }\n }\n // Forward ref\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n }, [ref])\n\n return (\n <div className=\"flex items-center\">\n <input\n type=\"checkbox\"\n id={inputId}\n ref={setRef}\n className={cx(\n 'appearance-none h-4 w-4 border border-ash rounded-sm bg-graphite',\n 'checked:bg-gold checked:border-gold',\n 'focus:ring-1 focus:ring-gold focus:ring-offset-1 focus:ring-offset-obsidian',\n 'transition duration-200 ease-in-out cursor-pointer',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n className\n )}\n style={{\n backgroundPosition: 'center',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n }}\n onChange={(e) => {\n const input = e.currentTarget\n if (input.checked) {\n input.style.backgroundImage = checkmarkSvg\n } else {\n input.style.backgroundImage = 'none'\n }\n rest.onChange?.(e)\n }}\n {...rest}\n />\n {label && (\n <label htmlFor={inputId} className=\"ml-2 text-sm text-silver cursor-pointer select-none\">\n {label}\n </label>\n )}\n </div>\n )\n }\n)\n\nCheckbox.displayName = 'Checkbox'\n\nexport default Checkbox\n","import React, { useCallback } from 'react'\n\nexport interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nconst radioDotSvg = \"url(\\\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='%231A1A1A' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e\\\")\"\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n ({ className, label, id, ...rest }, ref) => {\n const inputId = id || rest.name || Math.random().toString(36).substr(2, 9)\n\n const setRef = useCallback((node: HTMLInputElement | null) => {\n if (node) {\n // Set initial background image based on checked state\n if (node.checked) {\n node.style.backgroundImage = radioDotSvg\n }\n }\n // Forward ref\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n }, [ref])\n\n return (\n <div className=\"flex items-center\">\n <input\n type=\"radio\"\n id={inputId}\n ref={setRef}\n className={cx(\n 'appearance-none h-4 w-4 border border-ash rounded-full bg-graphite',\n 'checked:bg-gold checked:border-gold',\n 'focus:ring-1 focus:ring-gold focus:ring-offset-1 focus:ring-offset-obsidian',\n 'transition duration-200 ease-in-out cursor-pointer',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n className\n )}\n style={{\n backgroundPosition: 'center',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n }}\n onChange={(e) => {\n const input = e.currentTarget\n if (input.checked) {\n input.style.backgroundImage = radioDotSvg\n // Clear other radios in the same group\n if (input.name) {\n const radios = document.querySelectorAll<HTMLInputElement>(`input[type=\"radio\"][name=\"${input.name}\"]`)\n radios.forEach((radio) => {\n if (radio !== input) {\n radio.style.backgroundImage = 'none'\n }\n })\n }\n } else {\n input.style.backgroundImage = 'none'\n }\n rest.onChange?.(e)\n }}\n {...rest}\n />\n {label && (\n <label htmlFor={inputId} className=\"ml-2 text-sm text-silver cursor-pointer select-none\">\n {label}\n </label>\n )}\n </div>\n )\n }\n)\n\nRadio.displayName = 'Radio'\n\nexport default Radio\n","import React, { useCallback, useRef, useState } from 'react'\n\nexport interface SwitchProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n checked?: boolean\n defaultChecked?: boolean\n onCheckedChange?: (checked: boolean) => void\n label?: string\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n ({ checked: controlledChecked, defaultChecked = false, onCheckedChange, disabled, className, label, ...rest }, ref) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked)\n const isControlled = controlledChecked !== undefined\n const checked = isControlled ? controlledChecked : internalChecked\n const buttonRef = useRef<HTMLButtonElement | null>(null)\n const setRefs = useCallback(\n (node: HTMLButtonElement | null) => {\n buttonRef.current = node\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n },\n [ref]\n )\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return\n const newChecked = !checked\n if (!isControlled) {\n setInternalChecked(newChecked)\n }\n onCheckedChange?.(newChecked)\n rest.onClick?.(e)\n }\n\n return (\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n data-state={checked ? 'checked' : 'unchecked'}\n disabled={disabled}\n ref={setRefs}\n onClick={handleClick}\n className={cx(\n 'relative inline-flex h-6 w-11 shrink-0 cursor-pointer rounded-full border-2 border-transparent',\n 'transition-colors duration-200 ease-in-out',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 focus-visible:ring-offset-obsidian',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n checked ? 'bg-gold' : 'bg-charcoal',\n className\n )}\n {...rest}\n >\n <span\n className={cx(\n 'pointer-events-none inline-block h-5 w-5 transform rounded-full bg-white shadow ring-0',\n 'transition duration-200 ease-in-out',\n checked ? 'translate-x-5' : 'translate-x-0'\n )}\n />\n </button>\n {label && (\n <span\n className=\"text-sm text-silver cursor-pointer\"\n onClick={() => {\n if (disabled) return\n buttonRef.current?.click()\n }}\n >\n {label}\n </span>\n )}\n </div>\n )\n }\n)\n\nSwitch.displayName = 'Switch'\n\nexport default Switch\n","import React from 'react'\nimport { Info, CheckCircle, AlertTriangle, XCircle } from 'lucide-react'\n\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'error'\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: AlertVariant\n title?: string\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nconst icons = {\n info: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n error: XCircle,\n}\n\nconst variantStyles = {\n info: 'bg-info/10 border-info text-info',\n success: 'bg-success/10 border-success text-success',\n warning: 'bg-warning/10 border-warning text-warning',\n error: 'bg-error/10 border-error text-error',\n}\n\nexport const Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n ({ variant = 'info', title, children, className, ...rest }, ref) => {\n const Icon = icons[variant]\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cx(\n 'relative w-full p-4 rounded-none border border-l-4 flex gap-3',\n variantStyles[variant],\n className\n )}\n {...rest}\n >\n <Icon className=\"h-5 w-5 shrink-0\" />\n <div className=\"flex-1\">\n {title && <h5 className=\"mb-1 font-medium leading-none tracking-tight text-current\">{title}</h5>}\n <div className=\"text-sm opacity-90\">{children}</div>\n </div>\n </div>\n )\n }\n)\n\nAlert.displayName = 'Alert'\n\nexport default Alert\n","import React from 'react'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\n\nexport interface SpinnerProps extends React.SVGAttributes<SVGElement> {\n size?: SpinnerSize\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Spinner = ({ className, size = 'md', ...rest }: SpinnerProps) => {\n const sizeClass =\n size === 'sm' ? 'h-4 w-4' : size === 'lg' ? 'h-8 w-8' : 'h-6 w-6'\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cx('animate-spin text-gold', sizeClass, className)}\n {...rest}\n >\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n )\n}\n\nSpinner.displayName = 'Spinner'\n\nexport default Spinner\n","import React from 'react'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cx('animate-pulse bg-ash rounded-sm', className)}\n {...rest}\n />\n )\n }\n)\n\nSkeleton.displayName = 'Skeleton'\n\nexport default Skeleton\n","import React, { useEffect, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { X } from 'lucide-react'\n\nexport interface ModalProps {\n isOpen: boolean\n onClose: () => void\n title?: string\n children: React.ReactNode\n className?: string\n}\n\nfunction cx(...classes: Array<string | number | false | null | undefined>) {\n return classes.filter(Boolean).join(' ')\n}\n\nexport const Modal = ({ isOpen, onClose, title, children, className }: ModalProps) => {\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n }, [])\n\n useEffect(() => {\n if (isOpen) {\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\n document.body.style.overflow = 'hidden'\n document.body.style.paddingRight = `${scrollbarWidth}px`\n } else {\n document.body.style.overflow = 'unset'\n document.body.style.paddingRight = '0px'\n }\n return () => {\n document.body.style.overflow = 'unset'\n document.body.style.paddingRight = '0px'\n }\n }, [isOpen])\n\n useEffect(() => {\n const handleEsc = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose()\n }\n window.addEventListener('keydown', handleEsc)\n return () => window.removeEventListener('keydown', handleEsc)\n }, [onClose])\n\n if (!mounted) return null\n\n // Don't render anything if closed, unless we want exit animations. \n // My CSS relies on data-state, but if I unmount immediately, exit animation won't play.\n // To support exit animations, I'd need a transition manager (like framer-motion or headlessui).\n // For this simple implementation, I'll render conditionally. \n // If I want animation, I need to keep it mounted until animation ends.\n // Given the prompt \"add all suggestions\" and \"premium\", a simple unmount is acceptable for v1 without heavy deps.\n // However, the CSS I wrote has `data-state=closed`. \n // Without a transition library, handling exit animation is tricky. \n // I'll just conditional render for now. The entry animation `animate-fade-in` will play.\n \n if (!isOpen) return null;\n\n const content = (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4 sm:p-6\" onClick={onClose}>\n <div className=\"fixed inset-0 z-40 bg-obsidian/80 backdrop-blur-sm\" aria-hidden=\"true\" />\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n className={cx(\n 'bg-charcoal border border-gold/30 shadow-2xl z-50 w-full max-w-lg p-6 rounded-none relative',\n className\n )}\n data-state=\"open\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"flex items-center justify-between mb-2\">\n {title ? <h3 className=\"text-xl font-semibold text-white m-0\">{title}</h3> : <div />}\n <button onClick={onClose} className=\"text-silver hover:text-white transition-colors ml-auto\">\n <X className=\"h-5 w-5\" />\n <span className=\"sr-only\">Close</span>\n </button>\n </div>\n <div>{children}</div>\n </div>\n </div>\n )\n\n return createPortal(content, document.body)\n}\n\nModal.displayName = 'Modal'\n\nexport default Modal\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAkB;AAmBlB,SAAS,MAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEO,IAAM,SAAS,aAAAA,QAAM;AAAA,EACxB,CAAC,EAAC,UAAU,WAAW,OAAO,MAAM,UAAU,OAAO,WAAW,UAAU,UAAU,GAAG,KAAI,GACvF,QAAQ;AACV,UAAM,aAAa,YAAY;AAG/B,UAAM,OACF;AAMJ,UAAM,iBAAiB;AAAA,MACrB,SACI;AAAA,MAMJ,WACI;AAAA,MAMJ,UACI;AAAA,MAMJ,UACI;AAAA,MAMJ,UACI;AAAA,MAOJ,OACI;AAAA,MAMJ,QACI;AAAA,IAKN;AAGA,UAAM,cAAc;AAAA,MAClB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAEA,UAAM,eAAe,eAAe,OAAO;AAC3C,UAAM,YAAY,YAAY,IAAI;AAElC,WACI,6BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA,WAAW,GAAG,MAAM,cAAc,WAAW,WAAW,cAAc,SAAS;AAAA,QAC/E,UAAU;AAAA,QACT,GAAG;AAAA;AAAA,MAEL,WACG,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACG,WAAU;AAAA,UACV,eAAW;AAAA;AAAA,MACf;AAAA,MAEH;AAAA,IACH;AAAA,EAEN;AACJ;AAEA,OAAO,cAAc;;;ACtHrB,IAAAC,gBAAkB;AAQlB,SAASC,OAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEO,IAAM,QAAQ,cAAAC,QAAM;AAAA,EACzB,CAAC,EAAE,QAAQ,OAAO,WAAW,aAAa,cAAc,UAAU,GAAG,KAAK,GAAG,QAAQ;AAEnF,UAAM,OACF;AAOJ,UAAM,WAAW,QAAQ,qDAAqD;AAE9E,WACE,8BAAAA,QAAA,cAAC,SAAI,WAAWD,IAAG,YAAY,YAAY,YAAY,KACpD,eACC,8BAAAC,QAAA,cAAC,UAAK,WAAU,iFACb,WACH,GAEF,8BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAWD;AAAA,UACT;AAAA,UACA;AAAA,UACC,eAAe,eAAgB,cAAc;AAAA,UAC9C;AAAA,QACF;AAAA,QACA;AAAA,QACC,GAAG;AAAA;AAAA,IACN,GACC,gBACC,8BAAAC,QAAA,cAAC,UAAK,WAAU,kFACb,YACH,CAEJ;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc;;;ACrDpB,IAAAC,gBAAkB;AASlB,SAASC,OAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEO,IAAM,OAAO,cAAAC,QAAM;AAAA,EACtB,CAAC,EAAC,UAAU,WAAW,cAAc,OAAO,WAAW,GAAG,KAAI,GAAG,QAAQ;AAEvE,UAAM,OAAO;AAGb,UAAM,iBAAiB;AAAA,MACrB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,MACV,OAAO;AAAA,MACP,UAAU;AAAA,IACZ;AAGA,UAAM,mBAAmB,cACnB,mFACA;AAEN,UAAM,eAAe,eAAe,OAAO;AAE3C,WACI,8BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA,WAAWD,IAAG,MAAM,cAAc,kBAAkB,SAAS;AAAA,QAC5D,GAAG;AAAA;AAAA,IACR;AAAA,EAEN;AACJ;AAEA,KAAK,cAAc;;;AC5CnB,IAAAE,gBAAkB;AAalB,SAASC,OAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEA,IAAM,UAAsC;AAAA,EAC1C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,OAAO;AACT;AAEA,SAAS,SAAS,MAAe;AAC/B,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,QAAQ,KAAK,KAAK,EAAE,MAAM,KAAK;AACrC,SAAO,MAAM,MAAM,GAAG,CAAC,EAAE,IAAI,OAAK,EAAE,CAAC,EAAG,YAAY,CAAC,EAAE,KAAK,EAAE;AAChE;AAEO,IAAM,SAAS,cAAAC,QAAM;AAAA,EAC1B,CAAC,EAAE,KAAK,MAAM,IAAI,MAAM,OAAO,MAAM,QAAQ,WAAW,GAAG,KAAK,GAAG,QAAQ;AACzE,UAAM,cACJ,WAAW,WAAW,eAAe,WAAW,SAAS,eAAe;AAE1E,WACE,8BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAWD;AAAA,UACT;AAAA,UACA,QAAQ,IAAI;AAAA,UACZ;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,MAEH,MACC,8BAAAC,QAAA,cAAC,SAAI,KAAU,KAAK,OAAO,QAAQ,UAAU,WAAU,8BAA6B,IAEpF,8BAAAA,QAAA,cAAC,UAAK,eAAW,QAAE,SAAS,IAAI,KAAK,MAAI;AAAA,MAE1C,UACC,8BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAWD;AAAA,YACT;AAAA;AAAA,YAEA,SAAS,OAAO,gBAChB,SAAS,OAAO,YAChB,SAAS,OAAO,gBAChB,SAAS,OAAO,YAChB,SAAS,OAAO,YAAY;AAAA,YAC5B;AAAA,UACF;AAAA;AAAA,MACF;AAAA,IAEJ;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;;;ACvErB,IAAAE,gBAAkB;AAQlB,SAASC,OAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEO,IAAM,QAAQ,cAAAC,QAAM;AAAA,EACzB,CAAC,EAAE,UAAU,WAAW,WAAW,GAAG,KAAK,GAAG,QAAQ;AAEpD,UAAM,OAAO;AAGb,UAAM,iBAAiB;AAAA,MACrB,SAAS;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAEA,UAAM,eAAe,eAAe,OAAO;AAE3C,WAAO,8BAAAA,QAAA,cAAC,UAAK,KAAU,WAAWD,IAAG,MAAM,cAAc,SAAS,GAAI,GAAG,MAAM;AAAA,EACjF;AACF;AAEA,MAAM,cAAc;;;ACjCpB,IAAAE,gBAAkB;AAWlB,SAASC,OAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAGO,IAAM,UAAkC,CAAC,EAAE,SAAS,UAAU,OAAO,OAAO,OAAO,MAAM,MAAM;AACpG,SACE,8BAAAC,QAAA,cAAC,UAAK,WAAU,2BACb,UACD,8BAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAWD;AAAA,QACT;AAAA,QACA,OAAO,gBAAgB;AAAA,QACvB,SAAS,SAAS;AAAA,QAClB,SAAS,YAAY;AAAA,QACrB,SAAS,UAAU;AAAA,QACnB,SAAS,WAAW;AAAA,MACtB;AAAA;AAAA,IAEC;AAAA,EACH,CACF;AAEJ;;;ACnCA,IAAAE,gBAAkB;AAMlB,SAASC,OAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEO,IAAM,QAAQ,cAAAC,QAAM;AAAA,EACzB,CAAC,EAAE,WAAW,UAAU,UAAU,GAAG,KAAK,GAAG,QAAQ;AACnD,WACE,8BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAWD,IAAG,gDAAgD,SAAS;AAAA,QACtE,GAAG;AAAA;AAAA,MAEH;AAAA,MACA,YAAY,8BAAAC,QAAA,cAAC,UAAK,WAAU,qBAAkB,GAAC;AAAA,IAClD;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc;;;ACzBpB,IAAAC,gBAAkB;AAMlB,SAASC,OAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEO,IAAM,aAAa,cAAAC,QAAM;AAAA,EAC9B,CAAC,EAAE,WAAW,OAAO,UAAU,GAAG,KAAK,GAAG,QAAQ;AAChD,WACE,8BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAWD,IAAG,kBAAkB,QAAQ,eAAe,eAAe,SAAS;AAAA,QAC9E,GAAG;AAAA;AAAA,MAEH;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,WAAW,cAAc;;;ACxBzB,IAAAE,gBAAkB;AAMlB,SAASC,OAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEO,IAAM,WAAW,cAAAC,QAAM;AAAA,EAC5B,CAAC,EAAE,QAAQ,OAAO,WAAW,UAAU,GAAG,KAAK,GAAG,QAAQ;AAExD,UAAM,OACF;AAOJ,UAAM,WAAW,QAAQ,qDAAqD;AAE9E,WACE,8BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAWD,IAAG,MAAM,UAAU,YAAY,cAAc,SAAS;AAAA,QACjE;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,SAAS,cAAc;;;AClCvB,IAAAE,iBAAkB;AAYlB,SAASC,QAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEA,IAAM,gBAAgB;AAEf,IAAM,SAAS,eAAAC,QAAM;AAAA,EAC1B,CAAC,EAAE,QAAQ,OAAO,WAAW,UAAU,SAAS,UAAU,GAAG,KAAK,GAAG,QAAQ;AAC3E,WACE,+BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAWD;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAS;AAAA,UACT;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL,iBAAiB;AAAA,UACjB,oBAAoB;AAAA,UACpB,kBAAkB;AAAA,UAClB,gBAAgB;AAAA,QAClB;AAAA,QACA;AAAA,QACC,GAAG;AAAA;AAAA,MAEH,UACG,QAAQ,IAAI,CAAC,QACX,+BAAAC,QAAA,cAAC,YAAO,KAAK,IAAI,OAAO,OAAO,IAAI,SAChC,IAAI,KACP,CACD,IACD;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;;;ACnDrB,IAAAC,iBAAmC;AAMnC,SAASC,QAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEA,IAAM,eAAe;AAEd,IAAM,WAAW,eAAAC,QAAM;AAAA,EAC5B,CAAC,EAAE,WAAW,OAAO,IAAI,GAAG,KAAK,GAAG,QAAQ;AAC1C,UAAM,UAAU,MAAM,KAAK,QAAQ,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC;AAEzE,UAAM,aAAS,4BAAY,CAAC,SAAkC;AAC5D,UAAI,MAAM;AAER,YAAI,KAAK,SAAS;AAChB,eAAK,MAAM,kBAAkB;AAAA,QAC/B;AAAA,MACF;AAEA,UAAI,OAAO,QAAQ,YAAY;AAC7B,YAAI,IAAI;AAAA,MACV,WAAW,KAAK;AACd,YAAI,UAAU;AAAA,MAChB;AAAA,IACF,GAAG,CAAC,GAAG,CAAC;AAER,WACE,+BAAAA,QAAA,cAAC,SAAI,WAAU,uBACb,+BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,WAAWD;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL,oBAAoB;AAAA,UACpB,gBAAgB;AAAA,UAChB,kBAAkB;AAAA,QACpB;AAAA,QACA,UAAU,CAAC,MAAM;AACf,gBAAM,QAAQ,EAAE;AAChB,cAAI,MAAM,SAAS;AACjB,kBAAM,MAAM,kBAAkB;AAAA,UAChC,OAAO;AACL,kBAAM,MAAM,kBAAkB;AAAA,UAChC;AACA,eAAK,WAAW,CAAC;AAAA,QACnB;AAAA,QACC,GAAG;AAAA;AAAA,IACN,GACC,SACC,+BAAAC,QAAA,cAAC,WAAM,SAAS,SAAS,WAAU,yDAChC,KACH,CAEJ;AAAA,EAEJ;AACF;AAEA,SAAS,cAAc;;;ACvEvB,IAAAC,iBAAmC;AAMnC,SAASC,QAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEA,IAAM,cAAc;AAEb,IAAM,QAAQ,eAAAC,QAAM;AAAA,EACzB,CAAC,EAAE,WAAW,OAAO,IAAI,GAAG,KAAK,GAAG,QAAQ;AAC1C,UAAM,UAAU,MAAM,KAAK,QAAQ,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC;AAEzE,UAAM,aAAS,4BAAY,CAAC,SAAkC;AAC5D,UAAI,MAAM;AAER,YAAI,KAAK,SAAS;AAChB,eAAK,MAAM,kBAAkB;AAAA,QAC/B;AAAA,MACF;AAEA,UAAI,OAAO,QAAQ,YAAY;AAC7B,YAAI,IAAI;AAAA,MACV,WAAW,KAAK;AACd,YAAI,UAAU;AAAA,MAChB;AAAA,IACF,GAAG,CAAC,GAAG,CAAC;AAER,WACE,+BAAAA,QAAA,cAAC,SAAI,WAAU,uBACb,+BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,WAAWD;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL,oBAAoB;AAAA,UACpB,gBAAgB;AAAA,UAChB,kBAAkB;AAAA,QACpB;AAAA,QACA,UAAU,CAAC,MAAM;AACf,gBAAM,QAAQ,EAAE;AAChB,cAAI,MAAM,SAAS;AACjB,kBAAM,MAAM,kBAAkB;AAE9B,gBAAI,MAAM,MAAM;AACd,oBAAM,SAAS,SAAS,iBAAmC,6BAA6B,MAAM,IAAI,IAAI;AACtG,qBAAO,QAAQ,CAAC,UAAU;AACxB,oBAAI,UAAU,OAAO;AACnB,wBAAM,MAAM,kBAAkB;AAAA,gBAChC;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF,OAAO;AACL,kBAAM,MAAM,kBAAkB;AAAA,UAChC;AACA,eAAK,WAAW,CAAC;AAAA,QACnB;AAAA,QACC,GAAG;AAAA;AAAA,IACN,GACC,SACC,+BAAAC,QAAA,cAAC,WAAM,SAAS,SAAS,WAAU,yDAChC,KACH,CAEJ;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc;;;AChFpB,IAAAC,iBAAqD;AASrD,SAASC,QAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEO,IAAM,SAAS,eAAAC,QAAM;AAAA,EAC1B,CAAC,EAAE,SAAS,mBAAmB,iBAAiB,OAAO,iBAAiB,UAAU,WAAW,OAAO,GAAG,KAAK,GAAG,QAAQ;AACrH,UAAM,CAAC,iBAAiB,kBAAkB,QAAI,yBAAS,cAAc;AACrE,UAAM,eAAe,sBAAsB;AAC3C,UAAM,UAAU,eAAe,oBAAoB;AACnD,UAAM,gBAAY,uBAAiC,IAAI;AACvD,UAAM,cAAU;AAAA,MACd,CAAC,SAAmC;AAClC,kBAAU,UAAU;AACpB,YAAI,OAAO,QAAQ,YAAY;AAC7B,cAAI,IAAI;AAAA,QACV,WAAW,KAAK;AACd,cAAI,UAAU;AAAA,QAChB;AAAA,MACF;AAAA,MACA,CAAC,GAAG;AAAA,IACN;AAEA,UAAM,cAAc,CAAC,MAA2C;AAC9D,UAAI,SAAU;AACd,YAAM,aAAa,CAAC;AACpB,UAAI,CAAC,cAAc;AACjB,2BAAmB,UAAU;AAAA,MAC/B;AACA,wBAAkB,UAAU;AAC5B,WAAK,UAAU,CAAC;AAAA,IAClB;AAEA,WACE,+BAAAA,QAAA,cAAC,SAAI,WAAU,6BACb,+BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,MAAK;AAAA,QACL,gBAAc;AAAA,QACd,cAAY,UAAU,YAAY;AAAA,QAClC;AAAA,QACA,KAAK;AAAA,QACL,SAAS;AAAA,QACT,WAAWD;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU,YAAY;AAAA,UACtB;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,MAEJ,+BAAAC,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAWD;AAAA,YACT;AAAA,YACA;AAAA,YACA,UAAU,kBAAkB;AAAA,UAC9B;AAAA;AAAA,MACF;AAAA,IACF,GACC,SACC,+BAAAC,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,MAAM;AACb,cAAI,SAAU;AACd,oBAAU,SAAS,MAAM;AAAA,QAC3B;AAAA;AAAA,MAEC;AAAA,IACH,CAEJ;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;;;ACrFrB,IAAAC,iBAAkB;AAClB,0BAA0D;AAS1D,SAASC,QAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEA,IAAM,QAAQ;AAAA,EACZ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT;AAEA,IAAM,gBAAgB;AAAA,EACpB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT;AAEO,IAAM,QAAQ,eAAAC,QAAM;AAAA,EACzB,CAAC,EAAE,UAAU,QAAQ,OAAO,UAAU,WAAW,GAAG,KAAK,GAAG,QAAQ;AAClE,UAAM,OAAO,MAAM,OAAO;AAE1B,WACE,+BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,WAAWD;AAAA,UACT;AAAA,UACA,cAAc,OAAO;AAAA,UACrB;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,MAEJ,+BAAAC,QAAA,cAAC,QAAK,WAAU,oBAAmB;AAAA,MACnC,+BAAAA,QAAA,cAAC,SAAI,WAAU,YACZ,SAAS,+BAAAA,QAAA,cAAC,QAAG,WAAU,+DAA6D,KAAM,GAC3F,+BAAAA,QAAA,cAAC,SAAI,WAAU,wBAAsB,QAAS,CAChD;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc;;;ACrDpB,IAAAC,iBAAkB;AAQlB,SAASC,QAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEO,IAAM,UAAU,CAAC,EAAE,WAAW,OAAO,MAAM,GAAG,KAAK,MAAoB;AAC5E,QAAM,YACJ,SAAS,OAAO,YAAY,SAAS,OAAO,YAAY;AAE1D,SACE,+BAAAC,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,WAAWD,KAAG,0BAA0B,WAAW,SAAS;AAAA,MAC3D,GAAG;AAAA;AAAA,IAEJ,+BAAAC,QAAA,cAAC,UAAK,GAAE,+BAA8B;AAAA,EACxC;AAEJ;AAEA,QAAQ,cAAc;;;ACjCtB,IAAAC,iBAAkB;AAIlB,SAASC,QAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEO,IAAM,WAAW,eAAAC,QAAM;AAAA,EAC5B,CAAC,EAAE,WAAW,GAAG,KAAK,GAAG,QAAQ;AAC/B,WACE,+BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAWD,KAAG,mCAAmC,SAAS;AAAA,QACzD,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,SAAS,cAAc;;;ACpBvB,IAAAE,iBAA2C;AAC3C,uBAA6B;AAC7B,IAAAC,uBAAkB;AAUlB,SAASC,QAAM,SAA4D;AACzE,SAAO,QAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAEO,IAAM,QAAQ,CAAC,EAAE,QAAQ,SAAS,OAAO,UAAU,UAAU,MAAkB;AACpF,QAAM,CAAC,SAAS,UAAU,QAAI,yBAAS,KAAK;AAE5C,gCAAU,MAAM;AACd,eAAW,IAAI;AAAA,EACjB,GAAG,CAAC,CAAC;AAEL,gCAAU,MAAM;AACd,QAAI,QAAQ;AACV,YAAM,iBAAiB,OAAO,aAAa,SAAS,gBAAgB;AACpE,eAAS,KAAK,MAAM,WAAW;AAC/B,eAAS,KAAK,MAAM,eAAe,GAAG,cAAc;AAAA,IACtD,OAAO;AACL,eAAS,KAAK,MAAM,WAAW;AAC/B,eAAS,KAAK,MAAM,eAAe;AAAA,IACrC;AACA,WAAO,MAAM;AACX,eAAS,KAAK,MAAM,WAAW;AAC/B,eAAS,KAAK,MAAM,eAAe;AAAA,IACrC;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,gCAAU,MAAM;AACZ,UAAM,YAAY,CAAC,MAAqB;AACpC,UAAI,EAAE,QAAQ,SAAU,SAAQ;AAAA,IACpC;AACA,WAAO,iBAAiB,WAAW,SAAS;AAC5C,WAAO,MAAM,OAAO,oBAAoB,WAAW,SAAS;AAAA,EAChE,GAAG,CAAC,OAAO,CAAC;AAEZ,MAAI,CAAC,QAAS,QAAO;AAYrB,MAAI,CAAC,OAAQ,QAAO;AAEpB,QAAM,UACJ,+BAAAC,QAAA,cAAC,SAAI,WAAU,kEAAiE,SAAS,WACvF,+BAAAA,QAAA,cAAC,SAAI,WAAU,sDAAqD,eAAY,QAAO,GACvF,+BAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,WAAWD;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,cAAW;AAAA,MACX,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA;AAAA,IAEjC,+BAAAC,QAAA,cAAC,SAAI,WAAU,4CACV,QAAQ,+BAAAA,QAAA,cAAC,QAAG,WAAU,0CAAwC,KAAM,IAAQ,+BAAAA,QAAA,cAAC,WAAI,GAClF,+BAAAA,QAAA,cAAC,YAAO,SAAS,SAAS,WAAU,4DACjC,+BAAAA,QAAA,cAAC,0BAAE,WAAU,WAAU,GACvB,+BAAAA,QAAA,cAAC,UAAK,WAAU,aAAU,OAAK,CAClC,CACJ;AAAA,IACD,+BAAAA,QAAA,cAAC,aAAK,QAAS;AAAA,EACjB,CACF;AAGF,aAAO,+BAAa,SAAS,SAAS,IAAI;AAC5C;AAEA,MAAM,cAAc;;;AjB1Eb,IAAM,UAAU;","names":["React","import_react","cx","React","import_react","cx","React","import_react","cx","React","import_react","cx","React","import_react","cx","React","import_react","cx","React","import_react","cx","React","import_react","cx","React","import_react","cx","React","import_react","cx","React","import_react","cx","React","import_react","cx","React","import_react","cx","React","import_react","cx","React","import_react","cx","React","import_react","import_lucide_react","cx","React"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components/Button.tsx","../src/utils/cx.ts","../src/components/Input.tsx","../src/components/Card.tsx","../src/components/Container.tsx","../src/components/Row.tsx","../src/components/Col.tsx","../src/components/Stack.tsx","../src/components/Divider.tsx","../src/components/Avatar.tsx","../src/components/Badge.tsx","../src/components/Tooltip.tsx","../src/components/Table.tsx","../src/components/List.tsx","../src/components/Label.tsx","../src/components/HelperText.tsx","../src/components/Textarea.tsx","../src/components/Select.tsx","../src/components/Checkbox.tsx","../src/components/Radio.tsx","../src/components/Switch.tsx","../src/components/Slider.tsx","../src/components/InputGroup.tsx","../src/components/Alert.tsx","../src/components/Spinner.tsx","../src/components/Skeleton.tsx","../src/components/Progress.tsx","../src/components/Toast.tsx","../src/components/Modal.tsx","../src/components/Drawer.tsx","../src/components/Popover.tsx","../src/components/Dialog.tsx","../src/components/Tabs.tsx","../src/components/Accordion.tsx","../src/components/Menu.tsx","../src/components/Navbar.tsx","../src/components/Breadcrumb.tsx","../src/components/Pagination.tsx","../src/components/Stepper.tsx","../src/components/Message.tsx","../src/components/MarkdownContent.tsx","../src/components/StreamingCursor.tsx","../src/components/ChatHistory.tsx","../src/components/BrandIcon.tsx","../src/components/ColorSwatch.tsx","../src/components/ImageCard.tsx","../src/components/SectionHeading.tsx"],"sourcesContent":["/**\n * Aurelius Design System\n *\n * A cohesive visual language for creative technologists.\n * Combines technical sophistication with artistic sensibility.\n *\n * CSS-first Tailwind v4 design system.\n * Import '@lukeashford/aurelius/styles/base.css' for complete styling.\n */\n\n// React components\nexport * from './components'\n\n// Version\nexport const version = '2.0.0'\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport type ButtonVariant =\n | 'primary'\n | 'important'\n | 'elevated'\n | 'outlined'\n | 'featured'\n | 'ghost'\n | 'danger'\n\nexport type ButtonSize = 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant\n size?: ButtonSize\n loading?: boolean\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({variant = 'primary', size = 'md', loading = false, className, disabled, children, ...rest},\n ref) => {\n const isDisabled = disabled || loading\n\n // Base button styles - common to all variants\n const base =\n 'inline-flex items-center justify-center font-semibold tracking-wide ' +\n 'transition-all duration-fast ' +\n 'rounded-none ' +\n 'disabled:opacity-50 disabled:cursor-not-allowed'\n\n // Variant styles\n const variantClasses = {\n primary:\n 'bg-charcoal text-white border border-gold/30 ' +\n 'hover:border-gold hover:shadow-glow hover:text-gold-light ' +\n 'active:bg-white/5 ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n important:\n 'bg-gold text-obsidian border border-gold ' +\n 'hover:bg-gold-light hover:text-obsidian ' +\n 'active:bg-gold-bright ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n elevated:\n 'bg-charcoal text-white border-0 shadow-lg ' +\n 'hover:shadow-xl hover:text-gold-light ' +\n 'active:bg-white/5 ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n outlined:\n 'bg-transparent text-white border border-ash ' +\n 'hover:border-white hover:text-white ' +\n 'active:bg-white/5 ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n featured:\n 'bg-charcoal text-white border border-gold ' +\n 'glow-sm ' +\n 'hover:glow-md hover:text-gold-light ' +\n 'active:bg-white/5 ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n ghost:\n 'bg-transparent text-gold border-0 ' +\n 'hover:text-gold-light ' +\n 'active:text-gold-bright ' +\n 'focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n\n danger:\n 'bg-error text-white border-0 ' +\n 'hover:bg-error/90 ' +\n 'active:bg-error/80 ' +\n 'focus-visible:ring-2 focus-visible:ring-error focus-visible:ring-offset-2 ' +\n 'focus-visible:ring-offset-obsidian',\n }\n\n // Size styles\n const sizeClasses = {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-4 text-sm',\n lg: 'h-12 px-6 text-base',\n xl: 'h-14 px-8 text-lg',\n }\n\n const variantClass = variantClasses[variant]\n const sizeClass = sizeClasses[size]\n\n return (\n <button\n ref={ref}\n className={cx(base, variantClass, sizeClass, loading && 'opacity-80', className)}\n disabled={isDisabled}\n {...rest}\n >\n {loading && (\n <span\n className=\"mr-2 inline-block h-4 w-4 animate-pulse rounded-full bg-gold\"\n aria-hidden\n />\n )}\n {children}\n </button>\n )\n }\n)\n\nButton.displayName = 'Button'\n\nexport default Button\n","/**\n * Concatenates class names, filtering out falsy values.\n * A lightweight alternative to clsx/classnames for internal use.\n */\nexport function cx(...classes: (string | false | null | undefined)[]): string {\n return classes.filter(Boolean).join(' ')\n}\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n error?: boolean\n leadingIcon?: React.ReactNode\n trailingIcon?: React.ReactNode\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ error = false, className, leadingIcon, trailingIcon, disabled, ...rest }, ref) => {\n const base =\n 'w-full h-10 px-3 bg-graphite border border-ash rounded-none ' +\n 'text-white placeholder:text-zinc ' +\n 'transition-all duration-fast ' +\n 'focus:border-gold focus:ring-1 focus:ring-gold focus:outline-none ' +\n 'disabled:bg-slate disabled:text-dim disabled:cursor-not-allowed'\n\n const errorCls = error ? 'border-error focus:border-error focus:ring-error' : ''\n\n return (\n <div className={cx('relative', disabled && 'opacity-90')}>\n {leadingIcon && (\n <span className=\"pointer-events-none absolute inset-y-0 left-3 flex items-center text-silver\">\n {leadingIcon}\n </span>\n )}\n <input\n ref={ref}\n className={cx(\n base,\n errorCls,\n leadingIcon ? 'pl-9' : false,\n trailingIcon ? 'pr-9' : false,\n className\n )}\n disabled={disabled}\n {...rest}\n />\n {trailingIcon && (\n <span className=\"pointer-events-none absolute inset-y-0 right-3 flex items-center text-silver\">\n {trailingIcon}\n </span>\n )}\n </div>\n )\n }\n)\n\nInput.displayName = 'Input'\n\nexport default Input\n","import React from 'react'\nimport { Check } from 'lucide-react'\nimport { cx } from '../utils/cx'\n\nexport type CardVariant = 'default' | 'elevated' | 'outlined' | 'ghost' | 'featured'\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Visual style variant */\n variant?: CardVariant\n /** Enables hover effects and cursor pointer */\n interactive?: boolean\n /** Shows selected state with checkmark */\n selected?: boolean\n /** Remove default padding (useful with compound components) */\n noPadding?: boolean\n}\n\nconst VARIANT_STYLES: Record<CardVariant, string> = {\n default: 'bg-charcoal shadow-sm border border-gold/30',\n elevated: 'bg-charcoal shadow-lg border-0',\n outlined: 'bg-charcoal shadow-none border border-ash',\n ghost: 'bg-transparent shadow-none border-0',\n featured: 'bg-charcoal border border-gold glow-sm',\n}\n\nconst CardBase = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n variant = 'default',\n interactive = false,\n selected = false,\n noPadding = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cx(\n 'rounded-none relative',\n !noPadding && 'p-6',\n VARIANT_STYLES[variant],\n interactive &&\n 'transition-all duration-200 hover:border-gold hover:shadow-glow cursor-pointer',\n selected && 'border-gold shadow-glow-md',\n className\n )}\n {...props}\n >\n {children}\n {selected && (\n <div className=\"absolute top-3 right-3 flex items-center justify-center h-6 w-6 rounded-full bg-gold text-obsidian\">\n <Check className=\"h-4 w-4\" />\n </div>\n )}\n </div>\n )\n }\n)\n\nCardBase.displayName = 'Card'\n\n// Card.Header - header section with title and optional actions\nexport interface CardHeaderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Card title */\n title?: React.ReactNode\n /** Subtitle or description */\n subtitle?: React.ReactNode\n /** Action elements (buttons, icons, etc.) */\n action?: React.ReactNode\n}\n\nconst CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ title, subtitle, action, className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cx('px-6 py-4 border-b border-ash', className)}\n {...props}\n >\n {(title || subtitle || action) ? (\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1 min-w-0\">\n {title && (\n <h3 className=\"text-lg font-semibold text-white m-0\">{title}</h3>\n )}\n {subtitle && (\n <p className=\"text-sm text-silver mt-1 m-0\">{subtitle}</p>\n )}\n </div>\n {action && <div className=\"shrink-0\">{action}</div>}\n </div>\n ) : (\n children\n )}\n </div>\n )\n }\n)\n\nCardHeader.displayName = 'CardHeader'\n\n// Card.Body - main content area\nexport interface CardBodyProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst CardBody = React.forwardRef<HTMLDivElement, CardBodyProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cx('px-6 py-4', className)} {...props}>\n {children}\n </div>\n )\n }\n)\n\nCardBody.displayName = 'CardBody'\n\n// Card.Footer - footer section, typically for actions\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Align content */\n align?: 'start' | 'center' | 'end' | 'between'\n}\n\nconst CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\n ({ align = 'end', className, children, ...props }, ref) => {\n const alignClass = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n }[align]\n\n return (\n <div\n ref={ref}\n className={cx(\n 'px-6 py-4 border-t border-ash flex items-center gap-3',\n alignClass,\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nCardFooter.displayName = 'CardFooter'\n\n// Card.Media - image or media section\nexport interface CardMediaProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Image source */\n src?: string\n /** Alt text for image */\n alt?: string\n /** Aspect ratio */\n aspect?: 'video' | 'square' | 'wide'\n /** Position in card */\n position?: 'top' | 'bottom'\n}\n\nconst CardMedia = React.forwardRef<HTMLDivElement, CardMediaProps>(\n ({ src, alt = '', aspect = 'video', position = 'top', className, children, ...props }, ref) => {\n const aspectClass = {\n video: 'aspect-video',\n square: 'aspect-square',\n wide: 'aspect-wide',\n }[aspect]\n\n return (\n <div\n ref={ref}\n className={cx(\n 'overflow-hidden',\n aspectClass,\n position === 'top' && 'border-b border-ash',\n position === 'bottom' && 'border-t border-ash',\n className\n )}\n {...props}\n >\n {src ? (\n <img src={src} alt={alt} className=\"w-full h-full object-cover\" />\n ) : (\n children\n )}\n </div>\n )\n }\n)\n\nCardMedia.displayName = 'CardMedia'\n\n// Compound component pattern\nexport const Card = Object.assign(CardBase, {\n Header: CardHeader,\n Body: CardBody,\n Footer: CardFooter,\n Media: CardMedia,\n})","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport type ContainerSize = 'sm' | 'md' | 'lg' | 'xl' | 'fluid' | 'responsive'\n\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Container size variant */\n size?: ContainerSize\n}\n\nconst SIZE_CLASSES: Record<ContainerSize, string> = {\n sm: 'container-sm',\n md: 'container-md',\n lg: 'container-lg',\n xl: 'container-xl',\n fluid: 'container-fluid',\n responsive: 'container',\n}\n\nexport const Container = React.forwardRef<HTMLDivElement, ContainerProps>(\n ({ size = 'responsive', className, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cx(SIZE_CLASSES[size], className)} {...props}>\n {children}\n </div>\n )\n }\n)\n\nContainer.displayName = 'Container'\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport type RowGutter = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12\nexport type RowJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly'\nexport type RowAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline'\n\nexport interface RowProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Gap between columns (both directions). Use gutterX/gutterY for independent control. */\n gutter?: RowGutter\n /** Horizontal gap between columns */\n gutterX?: RowGutter\n /** Vertical gap between rows */\n gutterY?: RowGutter\n /** Horizontal alignment of columns */\n justify?: RowJustify\n /** Vertical alignment of columns */\n align?: RowAlign\n}\n\nconst JUSTIFY_MAP: Record<RowJustify, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n}\n\nconst ALIGN_MAP: Record<RowAlign, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n}\n\nfunction getGapClass(value: RowGutter): string {\n return `gap-${value}`\n}\n\nfunction getGapXClass(value: RowGutter): string {\n return `gap-x-${value}`\n}\n\nfunction getGapYClass(value: RowGutter): string {\n return `gap-y-${value}`\n}\n\nexport const Row = React.forwardRef<HTMLDivElement, RowProps>(\n ({ gutter = 4, gutterX, gutterY, justify, align, className, children, ...props }, ref) => {\n // Directional gutters take precedence over uniform gutter\n const gapClass = gutterX === undefined && gutterY === undefined ? getGapClass(gutter) : ''\n const gapXClass = gutterX !== undefined ? getGapXClass(gutterX) : ''\n const gapYClass = gutterY !== undefined ? getGapYClass(gutterY) : ''\n\n return (\n <div\n ref={ref}\n className={cx(\n 'row',\n gapClass,\n gapXClass,\n gapYClass,\n justify && JUSTIFY_MAP[justify],\n align && ALIGN_MAP[align],\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nRow.displayName = 'Row'\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport type ColSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'auto' | 'full'\nexport type ColOffset = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11\nexport type ColOrder = 'first' | 'last' | 'none' | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12\n\n/** Responsive prop object for breakpoint-specific values */\nexport interface ResponsiveValue<T> {\n /** Base value (mobile-first) */\n base?: T\n /** Value at sm breakpoint (640px+) */\n sm?: T\n /** Value at md breakpoint (768px+) */\n md?: T\n /** Value at lg breakpoint (1024px+) */\n lg?: T\n /** Value at xl breakpoint (1280px+) */\n xl?: T\n /** Value at 2xl breakpoint (1536px+) */\n '2xl'?: T\n}\n\nexport interface ColProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Column span (1-12), 'auto' for content-based width, or 'full' for full row width.\n * Can be a single value or responsive object: { base: 12, md: 6, lg: 4 }\n */\n span?: ColSpan | ResponsiveValue<ColSpan>\n /**\n * Column offset (0-11) - shifts column to the right.\n * Can be a single value or responsive object.\n */\n offset?: ColOffset | ResponsiveValue<ColOffset>\n /**\n * Column order for reordering.\n * Can be a single value or responsive object.\n */\n order?: ColOrder | ResponsiveValue<ColOrder>\n}\n\ntype Breakpoint = 'base' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n\nconst BREAKPOINT_PREFIXES: Record<Breakpoint, string> = {\n base: '',\n sm: 'sm:',\n md: 'md:',\n lg: 'lg:',\n xl: 'xl:',\n '2xl': '2xl:',\n}\n\nfunction getSpanClass(value: ColSpan, prefix: string): string {\n if (value === 'auto') return `${prefix}col-auto`\n if (value === 'full') return `${prefix}col-span-full`\n return `${prefix}col-span-${value}`\n}\n\nfunction getOffsetClass(value: ColOffset, prefix: string): string {\n if (value === 0) return ''\n return `${prefix}col-start-${value + 1}`\n}\n\nfunction getOrderClass(value: ColOrder, prefix: string): string {\n if (value === 'first') return `${prefix}order-first`\n if (value === 'last') return `${prefix}order-last`\n if (value === 'none') return `${prefix}order-none`\n return `${prefix}order-${value}`\n}\n\nfunction isResponsiveValue<T>(value: T | ResponsiveValue<T>): value is ResponsiveValue<T> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction buildResponsiveClasses<T>(\n value: T | ResponsiveValue<T> | undefined,\n getClass: (val: T, prefix: string) => string\n): string[] {\n if (value === undefined) return []\n\n if (!isResponsiveValue(value)) {\n const cls = getClass(value, '')\n return cls ? [cls] : []\n }\n\n const classes: string[] = []\n for (const [breakpoint, val] of Object.entries(value) as [Breakpoint, T][]) {\n if (val !== undefined) {\n const prefix = BREAKPOINT_PREFIXES[breakpoint] ?? ''\n const cls = getClass(val, prefix)\n if (cls) classes.push(cls)\n }\n }\n return classes\n}\n\nexport const Col = React.forwardRef<HTMLDivElement, ColProps>(\n ({ span, offset, order, className, children, ...props }, ref) => {\n const spanClasses = buildResponsiveClasses(span, getSpanClass)\n const offsetClasses = buildResponsiveClasses(offset, getOffsetClass)\n const orderClasses = buildResponsiveClasses(order, getOrderClass)\n\n // Default to full width if no span specified\n const hasSpan = span !== undefined\n const defaultSpan = hasSpan ? '' : 'col-span-12'\n\n return (\n <div\n ref={ref}\n className={cx(\n defaultSpan,\n ...spanClasses,\n ...offsetClasses,\n ...orderClasses,\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nCol.displayName = 'Col'\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport type StackDirection = 'horizontal' | 'vertical'\nexport type StackAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline'\nexport type StackJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly'\nexport type StackGap = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Stack direction */\n direction?: StackDirection\n /** Alignment of items on the cross axis */\n align?: StackAlign\n /** Justification of items on the main axis */\n justify?: StackJustify\n /** Gap between items */\n gap?: StackGap\n /** Whether items should wrap */\n wrap?: boolean\n /** Render as a different element */\n as?: 'div' | 'section' | 'article' | 'nav' | 'aside' | 'header' | 'footer' | 'main'\n}\n\nconst ALIGN_MAP: Record<StackAlign, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n}\n\nconst JUSTIFY_MAP: Record<StackJustify, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n}\n\nconst GAP_MAP: Record<StackGap, string> = {\n 0: 'gap-0',\n 1: 'gap-1',\n 2: 'gap-2',\n 3: 'gap-3',\n 4: 'gap-4',\n 5: 'gap-5',\n 6: 'gap-6',\n 8: 'gap-8',\n 10: 'gap-10',\n 12: 'gap-12',\n}\n\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>(\n (\n {\n direction = 'vertical',\n align,\n justify,\n gap = 4,\n wrap = false,\n as: Component = 'div',\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <Component\n ref={ref}\n className={cx(\n 'flex',\n direction === 'horizontal' ? 'flex-row' : 'flex-col',\n align && ALIGN_MAP[align],\n justify && JUSTIFY_MAP[justify],\n GAP_MAP[gap],\n wrap && 'flex-wrap',\n className\n )}\n {...props}\n >\n {children}\n </Component>\n )\n }\n)\n\nStack.displayName = 'Stack'\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport type DividerOrientation = 'horizontal' | 'vertical'\nexport type DividerVariant = 'solid' | 'dashed' | 'dotted'\n\nexport interface DividerProps extends React.HTMLAttributes<HTMLHRElement> {\n /** Orientation of the divider */\n orientation?: DividerOrientation\n /** Visual style variant */\n variant?: DividerVariant\n /** Optional label to show in the center */\n label?: React.ReactNode\n /** Color variant */\n color?: 'default' | 'gold' | 'muted'\n}\n\nconst COLOR_MAP: Record<string, string> = {\n default: 'border-ash',\n gold: 'border-gold/50',\n muted: 'border-slate',\n}\n\nconst VARIANT_MAP: Record<DividerVariant, string> = {\n solid: 'border-solid',\n dashed: 'border-dashed',\n dotted: 'border-dotted',\n}\n\nexport const Divider = React.forwardRef<HTMLHRElement, DividerProps>(\n (\n {\n orientation = 'horizontal',\n variant = 'solid',\n label,\n color = 'default',\n className,\n ...props\n },\n ref\n ) => {\n const isHorizontal = orientation === 'horizontal'\n\n if (label && isHorizontal) {\n return (\n <div\n className={cx('flex items-center gap-4', className)}\n role=\"separator\"\n aria-orientation={orientation}\n >\n <div\n className={cx(\n 'flex-1 border-t',\n VARIANT_MAP[variant],\n COLOR_MAP[color]\n )}\n />\n <span className=\"text-sm text-silver shrink-0\">{label}</span>\n <div\n className={cx(\n 'flex-1 border-t',\n VARIANT_MAP[variant],\n COLOR_MAP[color]\n )}\n />\n </div>\n )\n }\n\n return (\n <hr\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cx(\n isHorizontal ? 'border-t w-full' : 'border-l h-full',\n VARIANT_MAP[variant],\n COLOR_MAP[color],\n 'border-0',\n isHorizontal ? 'border-t' : 'border-l',\n className\n )}\n {...props}\n />\n )\n }\n)\n\nDivider.displayName = 'Divider'\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\nexport type AvatarStatus = 'online' | 'offline' | 'busy'\n\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n src?: string\n alt?: string\n name?: string\n size?: AvatarSize\n status?: AvatarStatus\n}\n\nconst sizeMap: Record<AvatarSize, string> = {\n xs: 'h-6 w-6 text-[10px]',\n sm: 'h-8 w-8 text-[11px]',\n md: 'h-10 w-10 text-xs',\n lg: 'h-12 w-12 text-sm',\n xl: 'h-16 w-16 text-base',\n '2xl': 'h-24 w-24 text-lg',\n}\n\nfunction initials(name?: string) {\n if (!name) return ''\n const parts = name.trim().split(/\\s+/)\n return parts.slice(0, 2).map(p => p[0]!.toUpperCase()).join('')\n}\n\nexport const Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n ({ src, alt = '', name, size = 'md', status, className, ...rest }, ref) => {\n const statusColor =\n status === 'online' ? 'bg-success' : status === 'busy' ? 'bg-warning' : 'bg-zinc'\n\n return (\n <div\n ref={ref}\n className={cx(\n 'relative inline-flex items-center justify-center rounded-full border-2 border-ash bg-slate text-silver font-semibold select-none overflow-hidden',\n sizeMap[size],\n className\n )}\n {...rest}\n >\n {src ? (\n <img src={src} alt={alt || name || 'Avatar'} className=\"h-full w-full object-cover\" />\n ) : (\n <span aria-hidden>{initials(name) || '·'}</span>\n )}\n {status && (\n <span\n className={cx(\n 'absolute bottom-0 right-0 rounded-full ring-2 ring-charcoal',\n // 25% of avatar size\n size === 'xs' ? 'h-1.5 w-1.5' :\n size === 'sm' ? 'h-2 w-2' :\n size === 'md' ? 'h-2.5 w-2.5' :\n size === 'lg' ? 'h-3 w-3' :\n size === 'xl' ? 'h-4 w-4' : 'h-5 w-5',\n statusColor\n )}\n />\n )}\n </div>\n )\n }\n)\n\nAvatar.displayName = 'Avatar'\n\nexport default Avatar\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport type BadgeVariant = 'default' | 'gold' | 'success' | 'error' | 'warning' | 'info'\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant\n}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ variant = 'default', className, ...rest }, ref) => {\n // Base badge styles\n const base = 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium border'\n\n // Variant styles\n const variantClasses = {\n default: 'bg-slate text-silver border-slate',\n gold: 'bg-gold/20 text-gold border-gold/30',\n success: 'bg-success/20 text-success border-success/30',\n error: 'bg-error/20 text-error border-error/30',\n warning: 'bg-warning/20 text-warning border-warning/30',\n info: 'bg-info/20 text-info border-info/30',\n }\n\n const variantClass = variantClasses[variant]\n\n return <span ref={ref} className={cx(base, variantClass, className)} {...rest} />\n }\n)\n\nBadge.displayName = 'Badge'\n\nexport default Badge\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport type TooltipSide = 'top' | 'right' | 'bottom' | 'left'\n\nexport interface TooltipProps {\n content: React.ReactNode\n children: React.ReactElement\n open?: boolean\n side?: TooltipSide\n}\n\n// Simple, controlled tooltip. Consumer handles open state.\nexport const Tooltip: React.FC<TooltipProps> = ({ content, children, open = false, side = 'top' }) => {\n return (\n <span className=\"relative inline-block\">\n {children}\n <span\n role=\"tooltip\"\n className={cx(\n 'pointer-events-none absolute z-50 whitespace-nowrap rounded-md border border-ash bg-graphite px-3 py-1.5 text-sm text-white shadow-lg transition-opacity duration-200 ease-out',\n open ? 'opacity-100' : 'opacity-0',\n side === 'top' && 'left-1/2 -translate-x-1/2 -top-2 -translate-y-full',\n side === 'bottom' && 'left-1/2 -translate-x-1/2 -bottom-2 translate-y-full',\n side === 'left' && 'top-1/2 -translate-y-1/2 -left-2 -translate-x-full',\n side === 'right' && 'top-1/2 -translate-y-1/2 -right-2 translate-x-full'\n )}\n >\n {content}\n </span>\n </span>\n )\n}\n\nexport default Tooltip\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\n// Table container\nexport interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {\n /** Make the table horizontally scrollable */\n responsive?: boolean\n}\n\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n ({ responsive = true, className, children, ...props }, ref) => {\n const table = (\n <table\n ref={ref}\n className={cx('w-full text-sm', className)}\n {...props}\n >\n {children}\n </table>\n )\n\n if (responsive) {\n return <div className=\"w-full overflow-x-auto\">{table}</div>\n }\n\n return table\n }\n)\n\nTable.displayName = 'Table'\n\n// Table header\nexport interface TableHeaderProps extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nexport const TableHeader = React.forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n ({ className, children, ...props }, ref) => (\n <thead\n ref={ref}\n className={cx('bg-graphite', className)}\n {...props}\n >\n {children}\n </thead>\n )\n)\n\nTableHeader.displayName = 'TableHeader'\n\n// Table body\nexport interface TableBodyProps extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nexport const TableBody = React.forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ className, children, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cx('divide-y divide-ash', className)}\n {...props}\n >\n {children}\n </tbody>\n )\n)\n\nTableBody.displayName = 'TableBody'\n\n// Table footer\nexport interface TableFooterProps extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nexport const TableFooter = React.forwardRef<HTMLTableSectionElement, TableFooterProps>(\n ({ className, children, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cx('bg-graphite font-medium', className)}\n {...props}\n >\n {children}\n </tfoot>\n )\n)\n\nTableFooter.displayName = 'TableFooter'\n\n// Table row\nexport interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {\n /** Highlight row on hover */\n hoverable?: boolean\n /** Show selected state */\n selected?: boolean\n}\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n ({ hoverable = true, selected = false, className, children, ...props }, ref) => (\n <tr\n ref={ref}\n className={cx(\n 'transition-colors duration-fast',\n hoverable && 'hover:bg-graphite/50',\n selected && 'bg-gold/10',\n className\n )}\n {...props}\n >\n {children}\n </tr>\n )\n)\n\nTableRow.displayName = 'TableRow'\n\n// Table header cell\nexport interface TableHeadProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n /** Enable sorting indicator */\n sortable?: boolean\n /** Current sort direction */\n sortDirection?: 'asc' | 'desc' | null\n}\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ sortable, sortDirection, className, children, ...props }, ref) => (\n <th\n ref={ref}\n className={cx(\n 'px-4 py-3 text-left font-semibold text-silver',\n sortable && 'cursor-pointer hover:text-white select-none',\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n {children}\n {sortable && sortDirection && (\n <span className=\"text-gold\">\n {sortDirection === 'asc' ? '↑' : '↓'}\n </span>\n )}\n </div>\n </th>\n )\n)\n\nTableHead.displayName = 'TableHead'\n\n// Table data cell\nexport interface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {}\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, children, ...props }, ref) => (\n <td\n ref={ref}\n className={cx('px-4 py-3 text-white', className)}\n {...props}\n >\n {children}\n </td>\n )\n)\n\nTableCell.displayName = 'TableCell'\n\n// Table caption\nexport interface TableCaptionProps extends React.HTMLAttributes<HTMLTableCaptionElement> {}\n\nexport const TableCaption = React.forwardRef<HTMLTableCaptionElement, TableCaptionProps>(\n ({ className, children, ...props }, ref) => (\n <caption\n ref={ref}\n className={cx('mt-4 text-sm text-silver', className)}\n {...props}\n >\n {children}\n </caption>\n )\n)\n\nTableCaption.displayName = 'TableCaption'\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\n// List container\nexport interface ListProps extends React.HTMLAttributes<HTMLUListElement> {\n /** Visual style variant */\n variant?: 'default' | 'bordered' | 'divided'\n /** Ordered list (numbered) */\n ordered?: boolean\n}\n\nexport const List = React.forwardRef<HTMLUListElement, ListProps>(\n ({ variant = 'default', ordered = false, className, children, ...props }, ref) => {\n const Component = ordered ? 'ol' : 'ul'\n\n return (\n <Component\n ref={ref as any}\n className={cx(\n 'list-none m-0 p-0',\n variant === 'bordered' && 'border border-ash',\n variant === 'divided' && 'divide-y divide-ash',\n className\n )}\n {...props}\n >\n {children}\n </Component>\n )\n }\n)\n\nList.displayName = 'List'\n\n// ListItem\nexport interface ListItemProps extends React.LiHTMLAttributes<HTMLLIElement> {\n /** Icon or avatar on the left */\n leading?: React.ReactNode\n /** Action element on the right */\n trailing?: React.ReactNode\n /** Make the item interactive (clickable) */\n interactive?: boolean\n /** Selected state */\n selected?: boolean\n /** Disabled state */\n disabled?: boolean\n}\n\nexport const ListItem = React.forwardRef<HTMLLIElement, ListItemProps>(\n (\n {\n leading,\n trailing,\n interactive = false,\n selected = false,\n disabled = false,\n className,\n children,\n onClick,\n ...props\n },\n ref\n ) => {\n const handleClick = (e: React.MouseEvent<HTMLLIElement>) => {\n if (disabled) return\n onClick?.(e)\n }\n\n return (\n <li\n ref={ref}\n onClick={handleClick}\n className={cx(\n 'flex items-center gap-3 px-4 py-3',\n interactive && 'cursor-pointer transition-colors duration-fast',\n interactive && !disabled && 'hover:bg-graphite',\n selected && 'bg-gold/10',\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n {...props}\n >\n {leading && <div className=\"shrink-0\">{leading}</div>}\n <div className=\"flex-1 min-w-0\">{children}</div>\n {trailing && <div className=\"shrink-0\">{trailing}</div>}\n </li>\n )\n }\n)\n\nListItem.displayName = 'ListItem'\n\n// ListItemText - for structured text content\nexport interface ListItemTextProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Primary text */\n primary: React.ReactNode\n /** Secondary text */\n secondary?: React.ReactNode\n}\n\nexport const ListItemText = React.forwardRef<HTMLDivElement, ListItemTextProps>(\n ({ primary, secondary, className, ...props }, ref) => {\n return (\n <div ref={ref} className={cx('flex flex-col', className)} {...props}>\n <span className=\"text-sm font-medium text-white\">{primary}</span>\n {secondary && (\n <span className=\"text-xs text-silver mt-0.5\">{secondary}</span>\n )}\n </div>\n )\n }\n)\n\nListItemText.displayName = 'ListItemText'\n\n// ListSubheader - section header within a list\nexport interface ListSubheaderProps extends React.HTMLAttributes<HTMLLIElement> {}\n\nexport const ListSubheader = React.forwardRef<HTMLLIElement, ListSubheaderProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <li\n ref={ref}\n className={cx(\n 'px-4 py-2 text-xs font-semibold text-gold uppercase tracking-wider bg-graphite',\n className\n )}\n {...props}\n >\n {children}\n </li>\n )\n }\n)\n\nListSubheader.displayName = 'ListSubheader'\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n required?: boolean\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, required, children, ...rest }, ref) => {\n return (\n <label\n ref={ref}\n className={cx('block text-sm font-medium text-silver mb-1.5', className)}\n {...rest}\n >\n {children}\n {required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )\n }\n)\n\nLabel.displayName = 'Label'\n\nexport default Label\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport interface HelperTextProps extends React.HTMLAttributes<HTMLParagraphElement> {\n error?: boolean\n}\n\nexport const HelperText = React.forwardRef<HTMLParagraphElement, HelperTextProps>(\n ({ className, error, children, ...rest }, ref) => {\n return (\n <p\n ref={ref}\n className={cx('mt-1.5 text-xs', error ? 'text-error' : 'text-silver', className)}\n {...rest}\n >\n {children}\n </p>\n )\n }\n)\n\nHelperText.displayName = 'HelperText'\n\nexport default HelperText\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n error?: boolean\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ error = false, className, disabled, ...rest }, ref) => {\n // Base textarea styles\n const base =\n 'w-full px-3 py-2 bg-graphite border border-ash rounded-none ' +\n 'text-white placeholder:text-zinc min-h-[80px] ' +\n 'transition-all duration-fast ' +\n 'focus:border-gold focus:ring-1 focus:ring-gold focus:outline-none ' +\n 'disabled:bg-slate disabled:text-dim disabled:cursor-not-allowed'\n\n // Error styles\n const errorCls = error ? 'border-error focus:border-error focus:ring-error' : ''\n\n return (\n <textarea\n ref={ref}\n className={cx(base, errorCls, disabled && 'opacity-90', className)}\n disabled={disabled}\n {...rest}\n />\n )\n }\n)\n\nTextarea.displayName = 'Textarea'\n\nexport default Textarea\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport interface SelectOption {\n label: string\n value: string | number\n}\n\nexport interface SelectProps extends React.SelectHTMLAttributes<HTMLSelectElement> {\n error?: boolean\n options?: SelectOption[]\n}\n\nconst selectBgImage = \"url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23C9A227' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\\\")\"\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ error = false, className, disabled, options, children, ...rest }, ref) => {\n return (\n <select\n ref={ref}\n className={cx(\n 'appearance-none bg-graphite border border-ash rounded-none text-white px-3 py-2 pr-8',\n 'focus:border-gold focus:ring-1 focus:ring-gold focus:outline-none',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n error && 'border-error focus:border-error focus:ring-error',\n className\n )}\n style={{\n backgroundImage: selectBgImage,\n backgroundPosition: 'right 0.5rem center',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '1.5em 1.5em',\n }}\n disabled={disabled}\n {...rest}\n >\n {options\n ? options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))\n : children}\n </select>\n )\n }\n)\n\nSelect.displayName = 'Select'\n\nexport default Select\n","import React, { useCallback } from 'react'\nimport { cx } from '../utils/cx'\n\nexport interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string\n}\n\nconst checkmarkSvg = \"url(\\\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='%231A1A1A' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\\\")\"\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, id, ...rest }, ref) => {\n const inputId = id || rest.name || Math.random().toString(36).substr(2, 9)\n\n const setRef = useCallback((node: HTMLInputElement | null) => {\n if (node) {\n // Set initial background image based on checked state\n if (node.checked) {\n node.style.backgroundImage = checkmarkSvg\n }\n }\n // Forward ref\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n }, [ref])\n\n return (\n <div className=\"flex items-center\">\n <input\n type=\"checkbox\"\n id={inputId}\n ref={setRef}\n className={cx(\n 'appearance-none h-4 w-4 border border-ash rounded-sm bg-graphite',\n 'checked:bg-gold checked:border-gold',\n 'focus:ring-1 focus:ring-gold focus:ring-offset-1 focus:ring-offset-obsidian',\n 'transition duration-200 ease-in-out cursor-pointer',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n className\n )}\n style={{\n backgroundPosition: 'center',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n }}\n onChange={(e) => {\n const input = e.currentTarget\n if (input.checked) {\n input.style.backgroundImage = checkmarkSvg\n } else {\n input.style.backgroundImage = 'none'\n }\n rest.onChange?.(e)\n }}\n {...rest}\n />\n {label && (\n <label htmlFor={inputId} className=\"ml-2 text-sm text-silver cursor-pointer select-none\">\n {label}\n </label>\n )}\n </div>\n )\n }\n)\n\nCheckbox.displayName = 'Checkbox'\n\nexport default Checkbox\n","import React, { useCallback } from 'react'\nimport { cx } from '../utils/cx'\n\nexport interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string\n}\n\nconst radioDotSvg = \"url(\\\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='%231A1A1A' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e\\\")\"\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n ({ className, label, id, ...rest }, ref) => {\n const inputId = id || rest.name || Math.random().toString(36).substr(2, 9)\n\n const setRef = useCallback((node: HTMLInputElement | null) => {\n if (node) {\n // Set initial background image based on checked state\n if (node.checked) {\n node.style.backgroundImage = radioDotSvg\n }\n }\n // Forward ref\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n }, [ref])\n\n return (\n <div className=\"flex items-center\">\n <input\n type=\"radio\"\n id={inputId}\n ref={setRef}\n className={cx(\n 'appearance-none h-4 w-4 border border-ash rounded-full bg-graphite',\n 'checked:bg-gold checked:border-gold',\n 'focus:ring-1 focus:ring-gold focus:ring-offset-1 focus:ring-offset-obsidian',\n 'transition duration-200 ease-in-out cursor-pointer',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n className\n )}\n style={{\n backgroundPosition: 'center',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n }}\n onChange={(e) => {\n const input = e.currentTarget\n if (input.checked) {\n input.style.backgroundImage = radioDotSvg\n // Clear other radios in the same group\n if (input.name) {\n const radios = document.querySelectorAll<HTMLInputElement>(`input[type=\"radio\"][name=\"${input.name}\"]`)\n radios.forEach((radio) => {\n if (radio !== input) {\n radio.style.backgroundImage = 'none'\n }\n })\n }\n } else {\n input.style.backgroundImage = 'none'\n }\n rest.onChange?.(e)\n }}\n {...rest}\n />\n {label && (\n <label htmlFor={inputId} className=\"ml-2 text-sm text-silver cursor-pointer select-none\">\n {label}\n </label>\n )}\n </div>\n )\n }\n)\n\nRadio.displayName = 'Radio'\n\nexport default Radio\n","import React, { useCallback, useRef, useState } from 'react'\nimport { cx } from '../utils/cx'\n\nexport interface SwitchProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n checked?: boolean\n defaultChecked?: boolean\n onCheckedChange?: (checked: boolean) => void\n label?: string\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n ({ checked: controlledChecked, defaultChecked = false, onCheckedChange, disabled, className, label, ...rest }, ref) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked)\n const isControlled = controlledChecked !== undefined\n const checked = isControlled ? controlledChecked : internalChecked\n const buttonRef = useRef<HTMLButtonElement | null>(null)\n const setRefs = useCallback(\n (node: HTMLButtonElement | null) => {\n buttonRef.current = node\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n },\n [ref]\n )\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return\n const newChecked = !checked\n if (!isControlled) {\n setInternalChecked(newChecked)\n }\n onCheckedChange?.(newChecked)\n rest.onClick?.(e)\n }\n\n return (\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n data-state={checked ? 'checked' : 'unchecked'}\n disabled={disabled}\n ref={setRefs}\n onClick={handleClick}\n className={cx(\n 'relative inline-flex h-6 w-11 shrink-0 cursor-pointer rounded-full border-2 border-transparent',\n 'transition-colors duration-200 ease-in-out',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 focus-visible:ring-offset-obsidian',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n checked ? 'bg-gold' : 'bg-charcoal',\n className\n )}\n {...rest}\n >\n <span\n className={cx(\n 'pointer-events-none inline-block h-5 w-5 transform rounded-full bg-white shadow ring-0',\n 'transition duration-200 ease-in-out',\n checked ? 'translate-x-5' : 'translate-x-0'\n )}\n />\n </button>\n {label && (\n <span\n className=\"text-sm text-silver cursor-pointer\"\n onClick={() => {\n if (disabled) return\n buttonRef.current?.click()\n }}\n >\n {label}\n </span>\n )}\n </div>\n )\n }\n)\n\nSwitch.displayName = 'Switch'\n\nexport default Switch\n","import React, { useState, useRef, useCallback } from 'react'\nimport { cx } from '../utils/cx'\n\nexport interface SliderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current value */\n value?: number\n /** Default value for uncontrolled mode */\n defaultValue?: number\n /** Minimum value */\n min?: number\n /** Maximum value */\n max?: number\n /** Step increment */\n step?: number\n /** Callback when value changes */\n onChange?: (value: number) => void\n /** Callback when dragging ends */\n onChangeEnd?: (value: number) => void\n /** Whether the slider is disabled */\n disabled?: boolean\n /** Show value tooltip while dragging */\n showTooltip?: boolean\n /** Format the displayed value */\n formatValue?: (value: number) => string\n /** Size variant */\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst SIZE_TRACK: Record<string, string> = {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n}\n\nconst SIZE_THUMB: Record<string, string> = {\n sm: 'h-3 w-3',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n}\n\nexport const Slider = React.forwardRef<HTMLDivElement, SliderProps>(\n (\n {\n value: controlledValue,\n defaultValue = 0,\n min = 0,\n max = 100,\n step = 1,\n onChange,\n onChangeEnd,\n disabled = false,\n showTooltip = false,\n formatValue = (v) => String(v),\n size = 'md',\n className,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(defaultValue)\n const [isDragging, setIsDragging] = useState(false)\n const trackRef = useRef<HTMLDivElement>(null)\n\n const isControlled = controlledValue !== undefined\n const value = isControlled ? controlledValue : internalValue\n\n const percentage = ((value - min) / (max - min)) * 100\n\n const updateValue = useCallback(\n (clientX: number) => {\n if (!trackRef.current || disabled) return\n\n const rect = trackRef.current.getBoundingClientRect()\n const percent = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width))\n const rawValue = min + percent * (max - min)\n const steppedValue = Math.round(rawValue / step) * step\n const clampedValue = Math.max(min, Math.min(max, steppedValue))\n\n if (!isControlled) {\n setInternalValue(clampedValue)\n }\n onChange?.(clampedValue)\n },\n [min, max, step, disabled, isControlled, onChange]\n )\n\n const handleMouseDown = (e: React.MouseEvent) => {\n if (disabled) return\n setIsDragging(true)\n updateValue(e.clientX)\n\n const handleMouseMove = (e: MouseEvent) => {\n updateValue(e.clientX)\n }\n\n const handleMouseUp = (e: MouseEvent) => {\n setIsDragging(false)\n document.removeEventListener('mousemove', handleMouseMove)\n document.removeEventListener('mouseup', handleMouseUp)\n\n if (trackRef.current) {\n const rect = trackRef.current.getBoundingClientRect()\n const percent = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width))\n const rawValue = min + percent * (max - min)\n const steppedValue = Math.round(rawValue / step) * step\n const clampedValue = Math.max(min, Math.min(max, steppedValue))\n onChangeEnd?.(clampedValue)\n }\n }\n\n document.addEventListener('mousemove', handleMouseMove)\n document.addEventListener('mouseup', handleMouseUp)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return\n\n let newValue = value\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n newValue = Math.min(max, value + step)\n break\n case 'ArrowLeft':\n case 'ArrowDown':\n newValue = Math.max(min, value - step)\n break\n case 'Home':\n newValue = min\n break\n case 'End':\n newValue = max\n break\n default:\n return\n }\n\n e.preventDefault()\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n onChangeEnd?.(newValue)\n }\n\n return (\n <div\n ref={ref}\n className={cx('relative w-full py-2', disabled && 'opacity-50', className)}\n {...props}\n >\n <div\n ref={trackRef}\n className={cx(\n 'relative w-full bg-charcoal border border-ash cursor-pointer',\n SIZE_TRACK[size]\n )}\n onMouseDown={handleMouseDown}\n >\n {/* Filled track */}\n <div\n className={cx('absolute inset-y-0 left-0 bg-gold', SIZE_TRACK[size])}\n style={{ width: `${percentage}%` }}\n />\n\n {/* Thumb */}\n <div\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-disabled={disabled}\n onKeyDown={handleKeyDown}\n className={cx(\n 'absolute top-1/2 -translate-y-1/2 -translate-x-1/2',\n 'bg-gold border-2 border-gold-light rounded-full',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-offset-2 focus-visible:ring-offset-obsidian',\n 'transition-transform duration-fast',\n isDragging && 'scale-110',\n !disabled && 'cursor-grab active:cursor-grabbing',\n SIZE_THUMB[size]\n )}\n style={{ left: `${percentage}%` }}\n >\n {/* Tooltip */}\n {showTooltip && isDragging && (\n <div className=\"absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-graphite border border-ash text-xs text-white whitespace-nowrap\">\n {formatValue(value)}\n </div>\n )}\n </div>\n </div>\n </div>\n )\n }\n)\n\nSlider.displayName = 'Slider'\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\n// InputGroup container\nexport interface InputGroupProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cx('flex', className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nInputGroup.displayName = 'InputGroup'\n\n// InputLeftAddon - static text/icon on the left\nexport interface InputAddonProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const InputLeftAddon = React.forwardRef<HTMLDivElement, InputAddonProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cx(\n 'flex items-center px-3 bg-slate border border-r-0 border-ash',\n 'text-sm text-silver whitespace-nowrap',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nInputLeftAddon.displayName = 'InputLeftAddon'\n\n// InputRightAddon - static text/icon on the right\nexport const InputRightAddon = React.forwardRef<HTMLDivElement, InputAddonProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cx(\n 'flex items-center px-3 bg-slate border border-l-0 border-ash',\n 'text-sm text-silver whitespace-nowrap',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nInputRightAddon.displayName = 'InputRightAddon'\n\n// InputLeftElement - overlaid element on the left (like an icon inside the input)\nexport interface InputElementProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const InputLeftElement = React.forwardRef<HTMLDivElement, InputElementProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cx(\n 'absolute left-0 inset-y-0 flex items-center pl-3',\n 'pointer-events-none text-silver',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nInputLeftElement.displayName = 'InputLeftElement'\n\n// InputRightElement - overlaid element on the right (like a button inside the input)\nexport const InputRightElement = React.forwardRef<HTMLDivElement, InputElementProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cx(\n 'absolute right-0 inset-y-0 flex items-center pr-3',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nInputRightElement.displayName = 'InputRightElement'\n\n// InputWrapper - for relative positioning when using left/right elements\nexport interface InputWrapperProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const InputWrapper = React.forwardRef<HTMLDivElement, InputWrapperProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cx('relative flex-1', className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nInputWrapper.displayName = 'InputWrapper'\n","import React from 'react'\nimport { Info, CheckCircle, AlertTriangle, XCircle } from 'lucide-react'\nimport { cx } from '../utils/cx'\n\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'error'\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: AlertVariant\n title?: string\n}\n\nconst icons = {\n info: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n error: XCircle,\n}\n\nconst variantStyles = {\n info: 'bg-info/10 border-info text-info',\n success: 'bg-success/10 border-success text-success',\n warning: 'bg-warning/10 border-warning text-warning',\n error: 'bg-error/10 border-error text-error',\n}\n\nexport const Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n ({ variant = 'info', title, children, className, ...rest }, ref) => {\n const Icon = icons[variant]\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cx(\n 'relative w-full p-4 rounded-none border border-l-4 flex gap-3',\n variantStyles[variant],\n className\n )}\n {...rest}\n >\n <Icon className=\"h-5 w-5 shrink-0\" />\n <div className=\"flex-1\">\n {title && <h5 className=\"mb-1 font-medium leading-none tracking-tight text-current\">{title}</h5>}\n <div className=\"text-sm opacity-90\">{children}</div>\n </div>\n </div>\n )\n }\n)\n\nAlert.displayName = 'Alert'\n\nexport default Alert\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\n\nexport interface SpinnerProps extends React.SVGAttributes<SVGElement> {\n size?: SpinnerSize\n}\n\nexport const Spinner = ({ className, size = 'md', ...rest }: SpinnerProps) => {\n const sizeClass =\n size === 'sm' ? 'h-4 w-4' : size === 'lg' ? 'h-8 w-8' : 'h-6 w-6'\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cx('animate-spin text-gold', sizeClass, className)}\n {...rest}\n >\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n )\n}\n\nSpinner.displayName = 'Spinner'\n\nexport default Spinner\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cx('animate-pulse bg-ash rounded-sm', className)}\n {...rest}\n />\n )\n }\n)\n\nSkeleton.displayName = 'Skeleton'\n\nexport default Skeleton\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport type ProgressSize = 'sm' | 'md' | 'lg'\nexport type ProgressVariant = 'default' | 'success' | 'warning' | 'error'\n\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Current value (0-100) */\n value?: number\n /** Maximum value (defaults to 100) */\n max?: number\n /** Size variant */\n size?: ProgressSize\n /** Color variant */\n variant?: ProgressVariant\n /** Whether to show the value label */\n showValue?: boolean\n /** Custom label format function */\n formatValue?: (value: number, max: number) => string\n /** Whether the progress is indeterminate */\n indeterminate?: boolean\n}\n\nconst SIZE_MAP: Record<ProgressSize, string> = {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n}\n\nconst VARIANT_MAP: Record<ProgressVariant, string> = {\n default: 'bg-gold',\n success: 'bg-success',\n warning: 'bg-warning',\n error: 'bg-error',\n}\n\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n (\n {\n value = 0,\n max = 100,\n size = 'md',\n variant = 'default',\n showValue = false,\n formatValue,\n indeterminate = false,\n className,\n ...props\n },\n ref\n ) => {\n const percentage = Math.min(100, Math.max(0, (value / max) * 100))\n const displayValue = formatValue\n ? formatValue(value, max)\n : `${Math.round(percentage)}%`\n\n return (\n <div ref={ref} className={cx('w-full', className)} {...props}>\n {showValue && (\n <div className=\"flex justify-between mb-1\">\n <span className=\"text-sm text-silver\">Progress</span>\n <span className=\"text-sm text-white font-medium\">{displayValue}</span>\n </div>\n )}\n <div\n className={cx(\n 'w-full bg-charcoal border border-ash overflow-hidden rounded-none',\n SIZE_MAP[size]\n )}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={max}\n >\n <div\n className={cx(\n 'h-full transition-all duration-300 ease-out',\n VARIANT_MAP[variant],\n indeterminate && 'animate-pulse'\n )}\n style={{\n width: indeterminate ? '100%' : `${percentage}%`,\n }}\n />\n </div>\n </div>\n )\n }\n)\n\nProgress.displayName = 'Progress'\n","import React, { createContext, useContext, useState, useCallback, useEffect } from 'react'\nimport { createPortal } from 'react-dom'\nimport { X, CheckCircle, AlertCircle, AlertTriangle, Info } from 'lucide-react'\nimport { cx } from '../utils/cx'\n\nexport type ToastVariant = 'default' | 'success' | 'error' | 'warning' | 'info'\nexport type ToastPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center'\n\nexport interface ToastData {\n id: string\n title?: string\n description?: string\n variant?: ToastVariant\n duration?: number\n action?: React.ReactNode\n}\n\ninterface ToastContextValue {\n toasts: ToastData[]\n addToast: (toast: Omit<ToastData, 'id'>) => string\n removeToast: (id: string) => void\n position: ToastPosition\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null)\n\nexport function useToast() {\n const context = useContext(ToastContext)\n if (!context) {\n throw new Error('useToast must be used within a ToastProvider')\n }\n\n const toast = useCallback(\n (options: Omit<ToastData, 'id'>) => {\n return context.addToast(options)\n },\n [context]\n )\n\n return {\n toast,\n dismiss: context.removeToast,\n }\n}\n\n// ToastProvider - wrap your app with this\nexport interface ToastProviderProps {\n children: React.ReactNode\n /** Position of toasts on screen */\n position?: ToastPosition\n /** Default duration for toasts (ms) */\n defaultDuration?: number\n}\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({\n children,\n position = 'bottom-right',\n defaultDuration = 5000,\n}) => {\n const [toasts, setToasts] = useState<ToastData[]>([])\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n }, [])\n\n const addToast = useCallback(\n (toast: Omit<ToastData, 'id'>) => {\n const id = Math.random().toString(36).substr(2, 9)\n const newToast: ToastData = {\n ...toast,\n id,\n duration: toast.duration ?? defaultDuration,\n }\n setToasts((prev) => [...prev, newToast])\n return id\n },\n [defaultDuration]\n )\n\n const removeToast = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id))\n }, [])\n\n return (\n <ToastContext.Provider value={{ toasts, addToast, removeToast, position }}>\n {children}\n {mounted && <ToastViewport />}\n </ToastContext.Provider>\n )\n}\n\nToastProvider.displayName = 'ToastProvider'\n\n// ToastViewport - container for all toasts\nconst ToastViewport: React.FC = () => {\n const context = useContext(ToastContext)\n if (!context) return null\n\n const { toasts, position } = context\n\n const positionClasses: Record<ToastPosition, string> = {\n 'top-right': 'top-4 right-4',\n 'top-left': 'top-4 left-4',\n 'bottom-right': 'bottom-4 right-4',\n 'bottom-left': 'bottom-4 left-4',\n 'top-center': 'top-4 left-1/2 -translate-x-1/2',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2',\n }\n\n return createPortal(\n <div\n className={cx(\n 'fixed z-50 flex flex-col gap-2 pointer-events-none',\n positionClasses[position]\n )}\n >\n {toasts.map((toast) => (\n <Toast key={toast.id} {...toast} />\n ))}\n </div>,\n document.body\n )\n}\n\n// Individual Toast\ninterface ToastProps extends ToastData {}\n\nconst VARIANT_STYLES: Record<ToastVariant, string> = {\n default: 'bg-charcoal border-ash',\n success: 'bg-charcoal border-success/50',\n error: 'bg-charcoal border-error/50',\n warning: 'bg-charcoal border-warning/50',\n info: 'bg-charcoal border-info/50',\n}\n\nconst VARIANT_ICONS: Record<ToastVariant, React.ReactNode> = {\n default: null,\n success: <CheckCircle className=\"h-5 w-5 text-success\" />,\n error: <AlertCircle className=\"h-5 w-5 text-error\" />,\n warning: <AlertTriangle className=\"h-5 w-5 text-warning\" />,\n info: <Info className=\"h-5 w-5 text-info\" />,\n}\n\nconst Toast: React.FC<ToastProps> = ({\n id,\n title,\n description,\n variant = 'default',\n duration,\n action,\n}) => {\n const context = useContext(ToastContext)\n\n useEffect(() => {\n if (duration && duration > 0) {\n const timer = setTimeout(() => {\n context?.removeToast(id)\n }, duration)\n return () => clearTimeout(timer)\n }\n }, [id, duration, context])\n\n const icon = VARIANT_ICONS[variant]\n\n return (\n <div\n role=\"alert\"\n className={cx(\n 'pointer-events-auto w-80 p-4 border shadow-lg animate-slide-in-right',\n VARIANT_STYLES[variant]\n )}\n >\n <div className=\"flex gap-3\">\n {icon && <div className=\"shrink-0 mt-0.5\">{icon}</div>}\n <div className=\"flex-1 min-w-0\">\n {title && (\n <p className=\"text-sm font-medium text-white\">{title}</p>\n )}\n {description && (\n <p className=\"text-sm text-silver mt-1\">{description}</p>\n )}\n {action && <div className=\"mt-3\">{action}</div>}\n </div>\n <button\n onClick={() => context?.removeToast(id)}\n className=\"shrink-0 text-silver hover:text-white transition-colors\"\n >\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Dismiss</span>\n </button>\n </div>\n </div>\n )\n}\n\nToast.displayName = 'Toast'\n","import React, { useEffect, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { X } from 'lucide-react'\nimport { cx } from '../utils/cx'\n\nexport interface ModalProps {\n isOpen: boolean\n onClose: () => void\n title?: string\n children: React.ReactNode\n className?: string\n}\n\nexport const Modal = ({ isOpen, onClose, title, children, className }: ModalProps) => {\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n }, [])\n\n useEffect(() => {\n if (isOpen) {\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\n document.body.style.overflow = 'hidden'\n document.body.style.paddingRight = `${scrollbarWidth}px`\n } else {\n document.body.style.overflow = 'unset'\n document.body.style.paddingRight = '0px'\n }\n return () => {\n document.body.style.overflow = 'unset'\n document.body.style.paddingRight = '0px'\n }\n }, [isOpen])\n\n useEffect(() => {\n const handleEsc = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose()\n }\n window.addEventListener('keydown', handleEsc)\n return () => window.removeEventListener('keydown', handleEsc)\n }, [onClose])\n\n if (!mounted) return null\n\n // Don't render anything if closed, unless we want exit animations. \n // My CSS relies on data-state, but if I unmount immediately, exit animation won't play.\n // To support exit animations, I'd need a transition manager (like framer-motion or headlessui).\n // For this simple implementation, I'll render conditionally. \n // If I want animation, I need to keep it mounted until animation ends.\n // Given the prompt \"add all suggestions\" and \"premium\", a simple unmount is acceptable for v1 without heavy deps.\n // However, the CSS I wrote has `data-state=closed`. \n // Without a transition library, handling exit animation is tricky. \n // I'll just conditional render for now. The entry animation `animate-fade-in` will play.\n \n if (!isOpen) return null;\n\n const content = (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4 sm:p-6\" onClick={onClose}>\n <div className=\"fixed inset-0 z-40 bg-obsidian/80 backdrop-blur-sm\" aria-hidden=\"true\" />\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n className={cx(\n 'bg-charcoal border border-gold/30 shadow-2xl z-50 w-full max-w-lg p-6 rounded-none relative',\n className\n )}\n data-state=\"open\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"flex items-center justify-between mb-2\">\n {title ? <h3 className=\"text-xl font-semibold text-white m-0\">{title}</h3> : <div />}\n <button onClick={onClose} className=\"text-silver hover:text-white transition-colors ml-auto\">\n <X className=\"h-5 w-5\" />\n <span className=\"sr-only\">Close</span>\n </button>\n </div>\n <div>{children}</div>\n </div>\n </div>\n )\n\n return createPortal(content, document.body)\n}\n\nModal.displayName = 'Modal'\n\nexport default Modal\n","import React, { useEffect, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { X } from 'lucide-react'\nimport { cx } from '../utils/cx'\n\nexport type DrawerPosition = 'left' | 'right' | 'top' | 'bottom'\n\nexport interface DrawerProps {\n /** Whether the drawer is open */\n isOpen: boolean\n /** Callback when the drawer should close */\n onClose: () => void\n /** Position of the drawer */\n position?: DrawerPosition\n /** Title for the drawer header */\n title?: string\n /** Width/height of the drawer (depending on position) */\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full'\n /** Content */\n children: React.ReactNode\n /** Additional class name for the drawer panel */\n className?: string\n}\n\nconst SIZE_MAP: Record<string, Record<DrawerPosition, string>> = {\n sm: {\n left: 'w-64',\n right: 'w-64',\n top: 'h-48',\n bottom: 'h-48',\n },\n md: {\n left: 'w-80',\n right: 'w-80',\n top: 'h-64',\n bottom: 'h-64',\n },\n lg: {\n left: 'w-96',\n right: 'w-96',\n top: 'h-80',\n bottom: 'h-80',\n },\n xl: {\n left: 'w-[32rem]',\n right: 'w-[32rem]',\n top: 'h-96',\n bottom: 'h-96',\n },\n full: {\n left: 'w-full',\n right: 'w-full',\n top: 'h-full',\n bottom: 'h-full',\n },\n}\n\nconst POSITION_CLASSES: Record<DrawerPosition, string> = {\n left: 'left-0 top-0 h-full',\n right: 'right-0 top-0 h-full',\n top: 'top-0 left-0 w-full',\n bottom: 'bottom-0 left-0 w-full',\n}\n\nconst TRANSFORM_CLASSES: Record<DrawerPosition, { open: string; closed: string }> = {\n left: { open: 'translate-x-0', closed: '-translate-x-full' },\n right: { open: 'translate-x-0', closed: 'translate-x-full' },\n top: { open: 'translate-y-0', closed: '-translate-y-full' },\n bottom: { open: 'translate-y-0', closed: 'translate-y-full' },\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n isOpen,\n onClose,\n position = 'right',\n title,\n size = 'md',\n children,\n className,\n}) => {\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n }, [])\n\n useEffect(() => {\n if (isOpen) {\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\n document.body.style.overflow = 'hidden'\n document.body.style.paddingRight = `${scrollbarWidth}px`\n } else {\n document.body.style.overflow = 'unset'\n document.body.style.paddingRight = '0px'\n }\n return () => {\n document.body.style.overflow = 'unset'\n document.body.style.paddingRight = '0px'\n }\n }, [isOpen])\n\n useEffect(() => {\n const handleEsc = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose()\n }\n window.addEventListener('keydown', handleEsc)\n return () => window.removeEventListener('keydown', handleEsc)\n }, [onClose])\n\n if (!mounted) return null\n\n const content = (\n <div\n className={cx(\n 'fixed inset-0 z-50',\n isOpen ? 'pointer-events-auto' : 'pointer-events-none'\n )}\n >\n {/* Backdrop */}\n <div\n className={cx(\n 'fixed inset-0 bg-obsidian/80 backdrop-blur-sm transition-opacity duration-300',\n isOpen ? 'opacity-100' : 'opacity-0'\n )}\n onClick={onClose}\n aria-hidden=\"true\"\n />\n\n {/* Drawer panel */}\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n className={cx(\n 'fixed bg-charcoal border-ash shadow-2xl flex flex-col',\n 'transition-transform duration-300 ease-out',\n POSITION_CLASSES[position],\n SIZE_MAP[size][position],\n position === 'left' && 'border-r',\n position === 'right' && 'border-l',\n position === 'top' && 'border-b',\n position === 'bottom' && 'border-t',\n isOpen ? TRANSFORM_CLASSES[position].open : TRANSFORM_CLASSES[position].closed,\n className\n )}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between px-4 py-3 border-b border-ash\">\n {title ? (\n <h2 className=\"text-lg font-semibold text-white m-0\">{title}</h2>\n ) : (\n <div />\n )}\n <button\n onClick={onClose}\n className=\"text-silver hover:text-white transition-colors\"\n >\n <X className=\"h-5 w-5\" />\n <span className=\"sr-only\">Close</span>\n </button>\n </div>\n\n {/* Content */}\n <div className=\"flex-1 overflow-auto p-4\">{children}</div>\n </div>\n </div>\n )\n\n return createPortal(content, document.body)\n}\n\nDrawer.displayName = 'Drawer'\n","import React, { useState, useRef, useEffect, useCallback, useId } from 'react'\nimport { cx } from '../utils/cx'\n\nexport type PopoverPosition = 'top' | 'bottom' | 'left' | 'right'\nexport type PopoverAlign = 'start' | 'center' | 'end'\n\nexport interface PopoverProps {\n children: React.ReactNode\n /** The trigger element */\n trigger: React.ReactElement\n /** Position relative to trigger */\n position?: PopoverPosition\n /** Alignment along the position axis */\n align?: PopoverAlign\n /** Controlled open state */\n open?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Close when clicking outside */\n closeOnClickOutside?: boolean\n}\n\nconst POSITION_CLASSES: Record<PopoverPosition, Record<PopoverAlign, string>> = {\n top: {\n start: 'bottom-full left-0 mb-2',\n center: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\n end: 'bottom-full right-0 mb-2',\n },\n bottom: {\n start: 'top-full left-0 mt-2',\n center: 'top-full left-1/2 -translate-x-1/2 mt-2',\n end: 'top-full right-0 mt-2',\n },\n left: {\n start: 'right-full top-0 mr-2',\n center: 'right-full top-1/2 -translate-y-1/2 mr-2',\n end: 'right-full bottom-0 mr-2',\n },\n right: {\n start: 'left-full top-0 ml-2',\n center: 'left-full top-1/2 -translate-y-1/2 ml-2',\n end: 'left-full bottom-0 ml-2',\n },\n}\n\nexport const Popover: React.FC<PopoverProps> = ({\n children,\n trigger,\n position = 'bottom',\n align = 'center',\n open: controlledOpen,\n onOpenChange,\n closeOnClickOutside = true,\n}) => {\n const [internalOpen, setInternalOpen] = useState(false)\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const containerRef = useRef<HTMLDivElement>(null)\n const baseId = useId()\n\n const setIsOpen = useCallback(\n (newOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(newOpen)\n }\n onOpenChange?.(newOpen)\n },\n [isControlled, onOpenChange]\n )\n\n // Close on outside click\n useEffect(() => {\n if (!isOpen || !closeOnClickOutside) return\n\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false)\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [isOpen, closeOnClickOutside, setIsOpen])\n\n // Close on escape\n useEffect(() => {\n if (!isOpen) return\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n setIsOpen(false)\n }\n }\n\n document.addEventListener('keydown', handleEscape)\n return () => document.removeEventListener('keydown', handleEscape)\n }, [isOpen, setIsOpen])\n\n const handleTriggerClick = () => {\n setIsOpen(!isOpen)\n }\n\n const triggerElement = React.cloneElement(trigger as React.ReactElement<any>, {\n onClick: handleTriggerClick,\n 'aria-haspopup': 'dialog',\n 'aria-expanded': isOpen,\n 'aria-controls': `${baseId}-popover`,\n id: `${baseId}-trigger`,\n })\n\n return (\n <div ref={containerRef} className=\"relative inline-block\">\n {triggerElement}\n {isOpen && (\n <div\n id={`${baseId}-popover`}\n role=\"dialog\"\n aria-labelledby={`${baseId}-trigger`}\n className={cx(\n 'absolute z-50 min-w-48 p-4',\n 'bg-charcoal border border-ash shadow-lg',\n 'animate-fade-in',\n POSITION_CLASSES[position][align]\n )}\n >\n {children}\n </div>\n )}\n </div>\n )\n}\n\nPopover.displayName = 'Popover'\n","import React, { useCallback } from 'react'\nimport { Modal, type ModalProps } from './Modal'\nimport { Button } from './Button'\nimport { cx } from '../utils/cx'\n\n// ConfirmDialog - for confirmation actions\nexport interface ConfirmDialogProps extends Omit<ModalProps, 'children'> {\n /** Description text */\n description?: React.ReactNode\n /** Text for the confirm button */\n confirmText?: string\n /** Text for the cancel button */\n cancelText?: string\n /** Callback when confirmed */\n onConfirm: () => void | Promise<void>\n /** Callback when cancelled */\n onCancel?: () => void\n /** Variant of the confirm button */\n confirmVariant?: 'primary' | 'important' | 'danger'\n /** Whether the confirm action is loading */\n isLoading?: boolean\n}\n\nexport const ConfirmDialog: React.FC<ConfirmDialogProps> = ({\n title = 'Confirm',\n description,\n confirmText = 'Confirm',\n cancelText = 'Cancel',\n onConfirm,\n onCancel,\n onClose,\n confirmVariant = 'important',\n isLoading = false,\n ...props\n}) => {\n const handleCancel = useCallback(() => {\n onCancel?.()\n onClose()\n }, [onCancel, onClose])\n\n const handleConfirm = useCallback(async () => {\n await onConfirm()\n onClose()\n }, [onConfirm, onClose])\n\n return (\n <Modal title={title} onClose={onClose} {...props}>\n {description && (\n <p className=\"text-sm text-silver mb-6\">{description}</p>\n )}\n <div className=\"flex justify-end gap-3\">\n <Button variant=\"outlined\" onClick={handleCancel} disabled={isLoading}>\n {cancelText}\n </Button>\n <Button\n variant={confirmVariant}\n onClick={handleConfirm}\n loading={isLoading}\n >\n {confirmText}\n </Button>\n </div>\n </Modal>\n )\n}\n\nConfirmDialog.displayName = 'ConfirmDialog'\n\n// AlertDialog - for important alerts\nexport interface AlertDialogProps extends Omit<ModalProps, 'children'> {\n /** Description text */\n description?: React.ReactNode\n /** Text for the acknowledge button */\n acknowledgeText?: string\n /** Variant based on alert type */\n variant?: 'default' | 'warning' | 'error'\n}\n\nexport const AlertDialog: React.FC<AlertDialogProps> = ({\n title = 'Alert',\n description,\n acknowledgeText = 'OK',\n variant = 'default',\n onClose,\n ...props\n}) => {\n const titleClass = cx(\n variant === 'warning' && 'text-warning',\n variant === 'error' && 'text-error'\n )\n\n return (\n <Modal onClose={onClose} {...props}>\n <h3 className={cx('text-xl font-semibold mb-2', titleClass)}>{title}</h3>\n {description && (\n <p className=\"text-sm text-silver mb-6\">{description}</p>\n )}\n <div className=\"flex justify-end\">\n <Button variant=\"primary\" onClick={onClose}>\n {acknowledgeText}\n </Button>\n </div>\n </Modal>\n )\n}\n\nAlertDialog.displayName = 'AlertDialog'\n\n// PromptDialog - for user input\nexport interface PromptDialogProps extends Omit<ModalProps, 'children'> {\n /** Description text */\n description?: React.ReactNode\n /** Placeholder for the input */\n placeholder?: string\n /** Default value for the input */\n defaultValue?: string\n /** Text for the submit button */\n submitText?: string\n /** Text for the cancel button */\n cancelText?: string\n /** Callback with the input value when submitted */\n onSubmit: (value: string) => void | Promise<void>\n /** Callback when cancelled */\n onCancel?: () => void\n /** Whether the submit action is loading */\n isLoading?: boolean\n}\n\nexport const PromptDialog: React.FC<PromptDialogProps> = ({\n title = 'Enter Value',\n description,\n placeholder,\n defaultValue = '',\n submitText = 'Submit',\n cancelText = 'Cancel',\n onSubmit,\n onCancel,\n onClose,\n isLoading = false,\n ...props\n}) => {\n const [value, setValue] = React.useState(defaultValue)\n\n const handleCancel = useCallback(() => {\n onCancel?.()\n onClose()\n }, [onCancel, onClose])\n\n const handleSubmit = useCallback(\n async (e: React.FormEvent) => {\n e.preventDefault()\n await onSubmit(value)\n onClose()\n },\n [onSubmit, value, onClose]\n )\n\n return (\n <Modal title={title} onClose={onClose} {...props}>\n <form onSubmit={handleSubmit}>\n {description && (\n <p className=\"text-sm text-silver mb-4\">{description}</p>\n )}\n <input\n type=\"text\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n placeholder={placeholder}\n className={cx(\n 'w-full px-3 py-2 bg-graphite border border-ash',\n 'text-white placeholder:text-zinc',\n 'focus:border-gold focus:ring-1 focus:ring-gold focus:outline-none',\n 'mb-6'\n )}\n autoFocus\n />\n <div className=\"flex justify-end gap-3\">\n <Button\n type=\"button\"\n variant=\"outlined\"\n onClick={handleCancel}\n disabled={isLoading}\n >\n {cancelText}\n </Button>\n <Button type=\"submit\" variant=\"important\" loading={isLoading}>\n {submitText}\n </Button>\n </div>\n </form>\n </Modal>\n )\n}\n\nPromptDialog.displayName = 'PromptDialog'\n","import React, { createContext, useContext, useState, useCallback, useId } from 'react'\nimport { cx } from '../utils/cx'\n\n// Context for managing tab state\ninterface TabsContextValue {\n activeTab: string\n setActiveTab: (id: string) => void\n baseId: string\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null)\n\nfunction useTabsContext() {\n const context = useContext(TabsContext)\n if (!context) {\n throw new Error('Tabs components must be used within a Tabs provider')\n }\n return context\n}\n\n// Main Tabs container\nexport interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\n /** The id of the initially active tab */\n defaultValue?: string\n /** Controlled active tab value */\n value?: string\n /** Callback when active tab changes */\n onValueChange?: (value: string) => void\n}\n\nexport const Tabs = React.forwardRef<HTMLDivElement, TabsProps>(\n ({ defaultValue, value, onValueChange, children, className, ...props }, ref) => {\n const [internalValue, setInternalValue] = useState(defaultValue ?? '')\n const isControlled = value !== undefined\n const activeTab = isControlled ? value : internalValue\n const baseId = useId()\n\n const setActiveTab = useCallback(\n (id: string) => {\n if (!isControlled) {\n setInternalValue(id)\n }\n onValueChange?.(id)\n },\n [isControlled, onValueChange]\n )\n\n return (\n <TabsContext.Provider value={{ activeTab, setActiveTab, baseId }}>\n <div ref={ref} className={cx('w-full', className)} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n )\n }\n)\n\nTabs.displayName = 'Tabs'\n\n// TabList - container for Tab buttons\nexport interface TabListProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const TabList = React.forwardRef<HTMLDivElement, TabListProps>(\n ({ children, className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"tablist\"\n className={cx(\n 'flex border-b border-ash',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nTabList.displayName = 'TabList'\n\n// Tab - individual tab button\nexport interface TabProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Unique identifier for this tab */\n value: string\n}\n\nexport const Tab = React.forwardRef<HTMLButtonElement, TabProps>(\n ({ value, children, className, disabled, ...props }, ref) => {\n const { activeTab, setActiveTab, baseId } = useTabsContext()\n const isActive = activeTab === value\n const panelId = `${baseId}-panel-${value}`\n const tabId = `${baseId}-tab-${value}`\n\n return (\n <button\n ref={ref}\n id={tabId}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-controls={panelId}\n tabIndex={isActive ? 0 : -1}\n disabled={disabled}\n onClick={() => setActiveTab(value)}\n className={cx(\n 'px-4 py-2 text-sm font-medium transition-all duration-fast',\n 'border-b-2 -mb-px',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-inset',\n isActive\n ? 'border-gold text-gold'\n : 'border-transparent text-silver hover:text-white hover:border-ash',\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n {...props}\n >\n {children}\n </button>\n )\n }\n)\n\nTab.displayName = 'Tab'\n\n// TabPanel - content panel for a tab\nexport interface TabPanelProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Value matching the corresponding Tab */\n value: string\n /** Force the panel to stay mounted when inactive */\n forceMount?: boolean\n}\n\nexport const TabPanel = React.forwardRef<HTMLDivElement, TabPanelProps>(\n ({ value, forceMount = false, children, className, ...props }, ref) => {\n const { activeTab, baseId } = useTabsContext()\n const isActive = activeTab === value\n const panelId = `${baseId}-panel-${value}`\n const tabId = `${baseId}-tab-${value}`\n\n if (!isActive && !forceMount) {\n return null\n }\n\n return (\n <div\n ref={ref}\n id={panelId}\n role=\"tabpanel\"\n aria-labelledby={tabId}\n tabIndex={0}\n hidden={!isActive}\n className={cx(\n 'pt-4 focus-visible:outline-none',\n !isActive && 'hidden',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nTabPanel.displayName = 'TabPanel'\n","import React, { createContext, useContext, useState, useCallback, useId } from 'react'\nimport { ChevronDown } from 'lucide-react'\nimport { cx } from '../utils/cx'\n\n// Context for managing accordion state\ninterface AccordionContextValue {\n expandedItems: Set<string>\n toggleItem: (id: string) => void\n type: 'single' | 'multiple'\n}\n\nconst AccordionContext = createContext<AccordionContextValue | null>(null)\n\nfunction useAccordionContext() {\n const context = useContext(AccordionContext)\n if (!context) {\n throw new Error('Accordion components must be used within an Accordion provider')\n }\n return context\n}\n\n// Main Accordion container\nexport interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Allow multiple items to be open at once */\n type?: 'single' | 'multiple'\n /** Default expanded item(s) */\n defaultValue?: string | string[]\n /** Controlled expanded item(s) */\n value?: string | string[]\n /** Callback when expanded items change */\n onValueChange?: (value: string | string[]) => void\n}\n\nexport const Accordion = React.forwardRef<HTMLDivElement, AccordionProps>(\n (\n { type = 'single', defaultValue, value, onValueChange, children, className, ...props },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState<Set<string>>(() => {\n if (defaultValue) {\n return new Set(Array.isArray(defaultValue) ? defaultValue : [defaultValue])\n }\n return new Set()\n })\n\n const isControlled = value !== undefined\n const expandedItems = isControlled\n ? new Set(Array.isArray(value) ? value : [value])\n : internalValue\n\n const toggleItem = useCallback(\n (id: string) => {\n const newSet = new Set(expandedItems)\n\n if (newSet.has(id)) {\n newSet.delete(id)\n } else {\n if (type === 'single') {\n newSet.clear()\n }\n newSet.add(id)\n }\n\n if (!isControlled) {\n setInternalValue(newSet)\n }\n\n const newValue = Array.from(newSet)\n onValueChange?.(type === 'single' ? newValue[0] ?? '' : newValue)\n },\n [expandedItems, type, isControlled, onValueChange]\n )\n\n return (\n <AccordionContext.Provider value={{ expandedItems, toggleItem, type }}>\n <div\n ref={ref}\n className={cx('divide-y divide-ash border border-ash', className)}\n {...props}\n >\n {children}\n </div>\n </AccordionContext.Provider>\n )\n }\n)\n\nAccordion.displayName = 'Accordion'\n\n// AccordionItem - individual accordion section\nexport interface AccordionItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Unique identifier for this item */\n value: string\n /** Disable this item */\n disabled?: boolean\n}\n\nconst AccordionItemContext = createContext<{ value: string; disabled: boolean } | null>(null)\n\nexport const AccordionItem = React.forwardRef<HTMLDivElement, AccordionItemProps>(\n ({ value, disabled = false, children, className, ...props }, ref) => {\n return (\n <AccordionItemContext.Provider value={{ value, disabled }}>\n <div\n ref={ref}\n data-state={useAccordionContext().expandedItems.has(value) ? 'open' : 'closed'}\n className={cx('bg-charcoal', className)}\n {...props}\n >\n {children}\n </div>\n </AccordionItemContext.Provider>\n )\n }\n)\n\nAccordionItem.displayName = 'AccordionItem'\n\n// AccordionTrigger - clickable header\nexport interface AccordionTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const AccordionTrigger = React.forwardRef<HTMLButtonElement, AccordionTriggerProps>(\n ({ children, className, ...props }, ref) => {\n const { expandedItems, toggleItem } = useAccordionContext()\n const itemContext = useContext(AccordionItemContext)\n const baseId = useId()\n\n if (!itemContext) {\n throw new Error('AccordionTrigger must be used within an AccordionItem')\n }\n\n const { value, disabled } = itemContext\n const isExpanded = expandedItems.has(value)\n\n return (\n <h3 className=\"m-0\">\n <button\n ref={ref}\n type=\"button\"\n id={`${baseId}-trigger-${value}`}\n aria-expanded={isExpanded}\n aria-controls={`${baseId}-content-${value}`}\n disabled={disabled}\n onClick={() => toggleItem(value)}\n className={cx(\n 'flex w-full items-center justify-between px-4 py-3',\n 'text-left text-sm font-medium text-white',\n 'transition-colors duration-fast',\n 'hover:bg-graphite',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gold focus-visible:ring-inset',\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n {...props}\n >\n <span>{children}</span>\n <ChevronDown\n className={cx(\n 'h-4 w-4 text-silver transition-transform duration-200',\n isExpanded && 'rotate-180'\n )}\n />\n </button>\n </h3>\n )\n }\n)\n\nAccordionTrigger.displayName = 'AccordionTrigger'\n\n// AccordionContent - expandable content\nexport interface AccordionContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const AccordionContent = React.forwardRef<HTMLDivElement, AccordionContentProps>(\n ({ children, className, ...props }, ref) => {\n const { expandedItems } = useAccordionContext()\n const itemContext = useContext(AccordionItemContext)\n const baseId = useId()\n\n if (!itemContext) {\n throw new Error('AccordionContent must be used within an AccordionItem')\n }\n\n const { value } = itemContext\n const isExpanded = expandedItems.has(value)\n\n return (\n <div\n ref={ref}\n id={`${baseId}-content-${value}`}\n role=\"region\"\n aria-labelledby={`${baseId}-trigger-${value}`}\n hidden={!isExpanded}\n className={cx(\n 'overflow-hidden transition-all duration-200',\n isExpanded ? 'animate-fade-in' : 'hidden',\n className\n )}\n {...props}\n >\n <div className=\"px-4 pb-4 text-sm text-silver\">{children}</div>\n </div>\n )\n }\n)\n\nAccordionContent.displayName = 'AccordionContent'\n","import React, {\n createContext,\n useContext,\n useState,\n useCallback,\n useRef,\n useEffect,\n useId,\n} from 'react'\nimport { cx } from '../utils/cx'\n\n// Context for managing menu state\ninterface MenuContextValue {\n isOpen: boolean\n setIsOpen: (open: boolean) => void\n triggerId: string\n menuId: string\n}\n\nconst MenuContext = createContext<MenuContextValue | null>(null)\n\nfunction useMenuContext() {\n const context = useContext(MenuContext)\n if (!context) {\n throw new Error('Menu components must be used within a Menu provider')\n }\n return context\n}\n\n// Main Menu container\nexport interface MenuProps {\n children: React.ReactNode\n /** Controlled open state */\n open?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n}\n\nexport const Menu: React.FC<MenuProps> = ({ children, open, onOpenChange }) => {\n const [internalOpen, setInternalOpen] = useState(false)\n const isControlled = open !== undefined\n const isOpen = isControlled ? open : internalOpen\n const baseId = useId()\n\n const setIsOpen = useCallback(\n (newOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(newOpen)\n }\n onOpenChange?.(newOpen)\n },\n [isControlled, onOpenChange]\n )\n\n return (\n <MenuContext.Provider\n value={{\n isOpen,\n setIsOpen,\n triggerId: `${baseId}-trigger`,\n menuId: `${baseId}-menu`,\n }}\n >\n <div className=\"relative inline-block\">{children}</div>\n </MenuContext.Provider>\n )\n}\n\nMenu.displayName = 'Menu'\n\n// MenuTrigger - button that opens the menu\nexport interface MenuTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Render as a different element (using render props) */\n asChild?: boolean\n}\n\nexport const MenuTrigger = React.forwardRef<HTMLButtonElement, MenuTriggerProps>(\n ({ children, className, asChild, ...props }, ref) => {\n const { isOpen, setIsOpen, triggerId, menuId } = useMenuContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault()\n setIsOpen(!isOpen)\n props.onClick?.(e)\n }\n\n return (\n <button\n ref={ref}\n id={triggerId}\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n aria-controls={menuId}\n onClick={handleClick}\n className={cx(\n 'inline-flex items-center justify-center',\n className\n )}\n {...props}\n >\n {children}\n </button>\n )\n }\n)\n\nMenuTrigger.displayName = 'MenuTrigger'\n\n// MenuContent - the dropdown menu\nexport interface MenuContentProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Alignment of the menu */\n align?: 'start' | 'center' | 'end'\n /** Side of the trigger to render on */\n side?: 'top' | 'bottom'\n}\n\nexport const MenuContent = React.forwardRef<HTMLDivElement, MenuContentProps>(\n ({ children, className, align = 'start', side = 'bottom', ...props }, ref) => {\n const { isOpen, setIsOpen, triggerId, menuId } = useMenuContext()\n const menuRef = useRef<HTMLDivElement>(null)\n\n // Close on outside click\n useEffect(() => {\n if (!isOpen) return\n\n const handleClickOutside = (e: MouseEvent) => {\n const trigger = document.getElementById(triggerId)\n if (\n menuRef.current &&\n !menuRef.current.contains(e.target as Node) &&\n trigger &&\n !trigger.contains(e.target as Node)\n ) {\n setIsOpen(false)\n }\n }\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n setIsOpen(false)\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n document.addEventListener('keydown', handleEscape)\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n document.removeEventListener('keydown', handleEscape)\n }\n }, [isOpen, setIsOpen, triggerId])\n\n if (!isOpen) return null\n\n const alignmentClasses = {\n start: 'left-0',\n center: 'left-1/2 -translate-x-1/2',\n end: 'right-0',\n }\n\n const sideClasses = {\n top: 'bottom-full mb-1',\n bottom: 'top-full mt-1',\n }\n\n return (\n <div\n ref={(node) => {\n menuRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) ref.current = node\n }}\n id={menuId}\n role=\"menu\"\n aria-labelledby={triggerId}\n className={cx(\n 'absolute z-50 min-w-40 py-1',\n 'bg-charcoal border border-ash shadow-lg',\n 'animate-fade-in',\n alignmentClasses[align],\n sideClasses[side],\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nMenuContent.displayName = 'MenuContent'\n\n// MenuItem - individual menu option\nexport interface MenuItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Icon to display before the label */\n icon?: React.ReactNode\n /** Show destructive styling */\n destructive?: boolean\n}\n\nexport const MenuItem = React.forwardRef<HTMLButtonElement, MenuItemProps>(\n ({ children, className, icon, destructive, disabled, onClick, ...props }, ref) => {\n const { setIsOpen } = useMenuContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return\n onClick?.(e)\n setIsOpen(false)\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"menuitem\"\n disabled={disabled}\n onClick={handleClick}\n className={cx(\n 'flex w-full items-center gap-2 px-3 py-2 text-sm text-left',\n 'transition-colors duration-fast',\n destructive\n ? 'text-error hover:bg-error/10'\n : 'text-white hover:bg-graphite',\n 'focus-visible:outline-none focus-visible:bg-graphite',\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n {...props}\n >\n {icon && <span className=\"w-4 h-4 shrink-0\">{icon}</span>}\n {children}\n </button>\n )\n }\n)\n\nMenuItem.displayName = 'MenuItem'\n\n// MenuSeparator - divider between menu items\nexport const MenuSeparator = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"separator\"\n className={cx('my-1 h-px bg-ash', className)}\n {...props}\n />\n))\n\nMenuSeparator.displayName = 'MenuSeparator'\n\n// MenuLabel - non-interactive label\nexport const MenuLabel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cx('px-3 py-1.5 text-xs font-medium text-silver', className)}\n {...props}\n >\n {children}\n </div>\n))\n\nMenuLabel.displayName = 'MenuLabel'\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\n// Main Navbar container\nexport interface NavbarProps extends React.HTMLAttributes<HTMLElement> {\n /** Fixed to top of viewport */\n fixed?: boolean\n /** Add border at bottom */\n bordered?: boolean\n}\n\nexport const Navbar = React.forwardRef<HTMLElement, NavbarProps>(\n ({ fixed = false, bordered = true, className, children, ...props }, ref) => {\n return (\n <nav\n ref={ref}\n className={cx(\n 'w-full bg-charcoal px-4 py-3',\n bordered && 'border-b border-ash',\n fixed && 'fixed top-0 left-0 right-0 z-40',\n className\n )}\n {...props}\n >\n <div className=\"flex items-center justify-between\">{children}</div>\n </nav>\n )\n }\n)\n\nNavbar.displayName = 'Navbar'\n\n// NavbarBrand - logo/brand section\nexport interface NavbarBrandProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const NavbarBrand = React.forwardRef<HTMLDivElement, NavbarBrandProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cx('flex items-center gap-2', className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nNavbarBrand.displayName = 'NavbarBrand'\n\n// NavbarContent - center or end content area\nexport interface NavbarContentProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Position of the content */\n position?: 'start' | 'center' | 'end'\n}\n\nexport const NavbarContent = React.forwardRef<HTMLDivElement, NavbarContentProps>(\n ({ position = 'center', className, children, ...props }, ref) => {\n const positionClasses = {\n start: 'mr-auto',\n center: 'mx-auto',\n end: 'ml-auto',\n }\n\n return (\n <div\n ref={ref}\n className={cx(\n 'flex items-center gap-4',\n positionClasses[position],\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nNavbarContent.displayName = 'NavbarContent'\n\n// NavbarItem - individual navigation item\nexport interface NavbarItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Active state */\n active?: boolean\n}\n\nexport const NavbarItem = React.forwardRef<HTMLDivElement, NavbarItemProps>(\n ({ active = false, className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cx(\n 'flex items-center',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nNavbarItem.displayName = 'NavbarItem'\n\n// NavbarLink - navigation link\nexport interface NavbarLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Active state */\n active?: boolean\n}\n\nexport const NavbarLink = React.forwardRef<HTMLAnchorElement, NavbarLinkProps>(\n ({ active = false, className, children, ...props }, ref) => {\n return (\n <a\n ref={ref}\n className={cx(\n 'text-sm font-medium transition-colors duration-fast',\n active ? 'text-gold' : 'text-silver hover:text-white',\n className\n )}\n {...props}\n >\n {children}\n </a>\n )\n }\n)\n\nNavbarLink.displayName = 'NavbarLink'\n\n// NavbarDivider - vertical separator\nexport const NavbarDivider = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cx('h-6 w-px bg-ash mx-2', className)}\n {...props}\n />\n))\n\nNavbarDivider.displayName = 'NavbarDivider'\n","import React from 'react'\nimport { ChevronRight } from 'lucide-react'\nimport { cx } from '../utils/cx'\n\n// Breadcrumb container\nexport interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {\n /** Custom separator element */\n separator?: React.ReactNode\n}\n\nexport const Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n ({ separator, className, children, ...props }, ref) => {\n const items = React.Children.toArray(children)\n const defaultSeparator = <ChevronRight className=\"h-4 w-4 text-ash\" />\n\n return (\n <nav ref={ref} aria-label=\"Breadcrumb\" className={className} {...props}>\n <ol className=\"flex items-center gap-2\">\n {items.map((child, index) => (\n <li key={index} className=\"flex items-center gap-2\">\n {child}\n {index < items.length - 1 && (\n <span aria-hidden=\"true\">{separator ?? defaultSeparator}</span>\n )}\n </li>\n ))}\n </ol>\n </nav>\n )\n }\n)\n\nBreadcrumb.displayName = 'Breadcrumb'\n\n// BreadcrumbItem - individual breadcrumb item\nexport interface BreadcrumbItemProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Whether this is the current page */\n current?: boolean\n}\n\nexport const BreadcrumbItem = React.forwardRef<HTMLSpanElement, BreadcrumbItemProps>(\n ({ current = false, className, children, ...props }, ref) => {\n return (\n <span\n ref={ref}\n aria-current={current ? 'page' : undefined}\n className={cx(\n 'text-sm',\n current ? 'text-white font-medium' : 'text-silver',\n className\n )}\n {...props}\n >\n {children}\n </span>\n )\n }\n)\n\nBreadcrumbItem.displayName = 'BreadcrumbItem'\n\n// BreadcrumbLink - clickable breadcrumb link\nexport interface BreadcrumbLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {}\n\nexport const BreadcrumbLink = React.forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <a\n ref={ref}\n className={cx(\n 'text-sm text-silver hover:text-gold transition-colors duration-fast',\n className\n )}\n {...props}\n >\n {children}\n </a>\n )\n }\n)\n\nBreadcrumbLink.displayName = 'BreadcrumbLink'\n","import React from 'react'\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react'\nimport { cx } from '../utils/cx'\n\nexport interface PaginationProps extends React.HTMLAttributes<HTMLElement> {\n /** Current page (1-indexed) */\n page: number\n /** Total number of pages */\n totalPages: number\n /** Callback when page changes */\n onPageChange: (page: number) => void\n /** Number of sibling pages to show */\n siblingCount?: number\n /** Show first/last page buttons */\n showEdges?: boolean\n}\n\nfunction generatePagination(\n currentPage: number,\n totalPages: number,\n siblingCount: number\n): (number | 'ellipsis')[] {\n const totalSlots = siblingCount * 2 + 5 // siblings + current + 2 edges + 2 ellipses max\n\n if (totalPages <= totalSlots) {\n return Array.from({ length: totalPages }, (_, i) => i + 1)\n }\n\n const leftSiblingIndex = Math.max(currentPage - siblingCount, 1)\n const rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages)\n\n const showLeftEllipsis = leftSiblingIndex > 2\n const showRightEllipsis = rightSiblingIndex < totalPages - 1\n\n if (!showLeftEllipsis && showRightEllipsis) {\n const leftItemCount = 3 + 2 * siblingCount\n const leftRange = Array.from({ length: leftItemCount }, (_, i) => i + 1)\n return [...leftRange, 'ellipsis', totalPages]\n }\n\n if (showLeftEllipsis && !showRightEllipsis) {\n const rightItemCount = 3 + 2 * siblingCount\n const rightRange = Array.from(\n { length: rightItemCount },\n (_, i) => totalPages - rightItemCount + i + 1\n )\n return [1, 'ellipsis', ...rightRange]\n }\n\n const middleRange = Array.from(\n { length: rightSiblingIndex - leftSiblingIndex + 1 },\n (_, i) => leftSiblingIndex + i\n )\n return [1, 'ellipsis', ...middleRange, 'ellipsis', totalPages]\n}\n\nexport const Pagination = React.forwardRef<HTMLElement, PaginationProps>(\n (\n {\n page,\n totalPages,\n onPageChange,\n siblingCount = 1,\n showEdges = true,\n className,\n ...props\n },\n ref\n ) => {\n const pages = generatePagination(page, totalPages, siblingCount)\n\n const buttonBaseClass =\n 'flex items-center justify-center h-8 min-w-8 px-2 text-sm ' +\n 'border border-ash transition-colors duration-fast ' +\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gold'\n\n return (\n <nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"Pagination\"\n className={cx('flex items-center gap-1', className)}\n {...props}\n >\n {/* Previous button */}\n <button\n type=\"button\"\n onClick={() => onPageChange(page - 1)}\n disabled={page <= 1}\n aria-label=\"Go to previous page\"\n className={cx(\n buttonBaseClass,\n 'text-silver hover:text-white hover:border-gold',\n page <= 1 && 'opacity-50 cursor-not-allowed hover:border-ash'\n )}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n\n {/* Page numbers */}\n {pages.map((pageNum, index) =>\n pageNum === 'ellipsis' ? (\n <span\n key={`ellipsis-${index}`}\n className=\"flex items-center justify-center h-8 w-8 text-silver\"\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n </span>\n ) : (\n <button\n key={pageNum}\n type=\"button\"\n onClick={() => onPageChange(pageNum)}\n aria-label={`Go to page ${pageNum}`}\n aria-current={page === pageNum ? 'page' : undefined}\n className={cx(\n buttonBaseClass,\n page === pageNum\n ? 'bg-gold text-obsidian border-gold font-medium'\n : 'text-silver hover:text-white hover:border-gold'\n )}\n >\n {pageNum}\n </button>\n )\n )}\n\n {/* Next button */}\n <button\n type=\"button\"\n onClick={() => onPageChange(page + 1)}\n disabled={page >= totalPages}\n aria-label=\"Go to next page\"\n className={cx(\n buttonBaseClass,\n 'text-silver hover:text-white hover:border-gold',\n page >= totalPages && 'opacity-50 cursor-not-allowed hover:border-ash'\n )}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </button>\n </nav>\n )\n }\n)\n\nPagination.displayName = 'Pagination'\n","import React from 'react'\nimport { Check } from 'lucide-react'\nimport { cx } from '../utils/cx'\n\nexport type StepStatus = 'complete' | 'error'\n\nexport interface Step {\n id: string | number\n label: string\n}\n\nexport interface StepperProps extends React.HTMLAttributes<HTMLDivElement> {\n steps: Step[]\n currentStep: string | number\n status?: StepStatus\n}\n\nexport const Stepper = React.forwardRef<HTMLDivElement, StepperProps>(\n ({steps, currentStep, status, className, ...rest}, ref) => {\n const currentIndex = steps.findIndex(step => step.id === currentStep)\n\n const getStepState = (index: number) => {\n if (index < currentIndex) {\n return 'complete'\n }\n if (index === currentIndex) {\n return status || 'current'\n }\n return 'future'\n }\n\n return (\n <div\n ref={ref}\n className={cx('flex items-center w-full', className)}\n {...rest}\n >\n {steps.map((step, index) => {\n const state = getStepState(index)\n const isLast = index === steps.length - 1\n\n return (\n <React.Fragment key={step.id}>\n <div className=\"flex flex-col items-center\">\n <div\n className={cx(\n 'flex items-center justify-center w-10 h-10 rounded-full border-2 font-semibold text-sm transition-all duration-200',\n state === 'complete' && 'bg-gold border-gold text-obsidian',\n state === 'current' && 'bg-charcoal border-gold text-gold',\n state === 'error' && 'bg-error border-error text-white',\n state === 'future' && 'bg-charcoal border-ash text-silver'\n )}\n >\n {state === 'complete' ? (\n <Check className=\"h-5 w-5\"/>\n ) : (\n <span>{index + 1}</span>\n )}\n </div>\n <span\n className={cx(\n 'mt-2 text-xs font-medium',\n state === 'complete' && 'text-gold',\n state === 'current' && 'text-white',\n state === 'error' && 'text-error',\n state === 'future' && 'text-silver'\n )}\n >\n {step.label}\n </span>\n </div>\n {!isLast && (\n <div\n className={cx(\n 'flex-1 h-0.5 mx-4 transition-all duration-200',\n index < currentIndex ? 'bg-gold' : 'bg-ash'\n )}\n />\n )}\n </React.Fragment>\n )\n })}\n </div>\n )\n }\n)\n\nStepper.displayName = 'Stepper'\n\nexport default Stepper\n","import React from 'react'\nimport { MarkdownContent } from './MarkdownContent'\nimport { StreamingCursor } from './StreamingCursor'\nimport { cx } from '../utils/cx'\n\nexport type MessageVariant = 'user' | 'assistant'\n\nexport interface MessageProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: MessageVariant\n content: string\n isStreaming?: boolean\n}\n\nconst variantStyles: Record<MessageVariant, string> = {\n user: 'bg-gold text-obsidian ml-auto',\n assistant: 'bg-charcoal border border-ash text-white mr-auto',\n}\n\nexport const Message = React.forwardRef<HTMLDivElement, MessageProps>(\n ({variant = 'assistant', className, content, isStreaming, ...rest},\n ref) => {\n const isUser = variant === 'user'\n\n return (\n <div\n ref={ref}\n className={cx(\n 'px-3 py-2 w-fit',\n variantStyles[variant],\n className\n )}\n {...rest}\n >\n <MarkdownContent\n content={content}\n className={cx('prose-sm', isUser ? 'prose-inherit' : 'prose-invert')}\n />\n {isStreaming && <StreamingCursor className=\"ml-0.5\"/>}\n </div>\n )\n }\n)\n\nMessage.displayName = 'Message'\n\nexport default Message","import React, { useMemo } from 'react'\nimport DOMPurify, { type Config } from 'dompurify'\nimport { cx } from '../utils/cx'\n\nexport interface MarkdownContentProps extends React.HTMLAttributes<HTMLDivElement> {\n content: string\n sanitizeConfig?: Config\n}\n\nconst DEFAULT_SANITIZE_CONFIG: Config = {\n ALLOWED_TAGS: [\n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',\n 'p', 'br', 'hr',\n 'strong', 'b', 'em', 'i', 'u', 's', 'strike', 'del', 'ins',\n 'sup', 'sub', 'mark', 'small',\n 'ul', 'ol', 'li',\n 'a',\n 'code', 'pre', 'kbd', 'samp', 'var',\n 'blockquote', 'q', 'cite', 'abbr',\n 'table', 'thead', 'tbody', 'tfoot', 'tr', 'th', 'td', 'caption', 'colgroup', 'col',\n 'div', 'span', 'details', 'summary',\n ],\n ALLOWED_ATTR: [\n 'href', 'title', 'target', 'rel',\n 'class', 'id',\n 'colspan', 'rowspan', 'scope',\n 'open',\n ],\n ADD_ATTR: ['target', 'rel'],\n ALLOWED_URI_REGEXP: /^(?:(?:https?|mailto|tel):|[^a-z]|[a-z+.-]+(?:[^a-z+.\\-:]|$))/i,\n}\n\nfunction useDOMPurifySetup() {\n useMemo(() => {\n DOMPurify.addHook('afterSanitizeAttributes', (node) => {\n if (node.tagName === 'A') {\n node.setAttribute('target', '_blank')\n node.setAttribute('rel', 'noopener noreferrer')\n }\n })\n }, [])\n}\n\nexport const MarkdownContent = React.forwardRef<HTMLDivElement, MarkdownContentProps>(\n ({className, content, sanitizeConfig, ...rest}, ref) => {\n useDOMPurifySetup()\n\n const sanitizedHtml = useMemo(() => {\n if (!content) {\n return ''\n }\n const config = sanitizeConfig ?? DEFAULT_SANITIZE_CONFIG\n return DOMPurify.sanitize(content, config)\n }, [content, sanitizeConfig])\n\n return (\n <div\n ref={ref}\n className={cx('prose', className)}\n dangerouslySetInnerHTML={{__html: sanitizedHtml}}\n {...rest}\n />\n )\n }\n)\n\nMarkdownContent.displayName = 'MarkdownContent'\n\nexport default MarkdownContent","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport interface StreamingCursorProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: 'block' | 'line' | 'underscore'\n}\n\nexport const StreamingCursor = React.forwardRef<HTMLSpanElement, StreamingCursorProps>(\n ({className, variant = 'line', ...rest}, ref) => {\n const variantStyles = {\n block: 'w-2.5 h-cursor translate-y-cursor-offset',\n line: 'w-0.5 h-cursor translate-y-cursor-offset',\n underscore: 'w-2.5 h-0.5 self-end mb-0.5'\n }\n\n return (\n <span\n ref={ref}\n className={cx(\n 'inline-block bg-current animate-cursor-blink',\n variantStyles[variant],\n className\n )}\n aria-hidden=\"true\"\n {...rest}\n />\n )\n }\n)\n\nStreamingCursor.displayName = 'StreamingCursor'\n\nexport default StreamingCursor\n","import React from 'react'\nimport { Message, type MessageProps, type MessageVariant } from './Message'\nimport { cx } from '../utils/cx'\n\nexport interface ChatHistoryItem extends Omit<MessageProps, 'variant' | 'children'> {\n id?: string\n variant?: MessageVariant\n}\n\nexport interface ChatHistoryProps extends React.HTMLAttributes<HTMLDivElement> {\n messages: ChatHistoryItem[]\n}\n\nexport const ChatHistory = React.forwardRef<HTMLDivElement, ChatHistoryProps>(\n ({messages, className, ...rest}, ref) => {\n return (\n <div\n ref={ref}\n className={cx('flex flex-col gap-3 w-full', className)}\n {...rest}\n >\n {messages.map(({id, variant, className: messageClassName, ...messageProps}, index) => (\n <Message\n key={id ?? index}\n variant={variant}\n className={messageClassName}\n {...messageProps}\n />\n ))}\n </div>\n )\n }\n)\n\nChatHistory.displayName = 'ChatHistory'\n\nexport default ChatHistory","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport type BrandIconSize = 'sm' | 'md' | 'lg'\nexport type BrandIconVariant = 'solid' | 'outline'\n\nexport interface BrandIconProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: BrandIconSize\n variant?: BrandIconVariant\n}\n\nconst sizeMap: Record<BrandIconSize, string> = {\n sm: 'h-8 w-8 text-sm',\n md: 'h-12 w-12 text-base',\n lg: 'h-16 w-16 text-lg',\n}\n\nexport const BrandIcon = React.forwardRef<HTMLDivElement, BrandIconProps>(\n ({size = 'md', variant = 'solid', children, className, ...rest}, ref) => {\n const variantClasses =\n variant === 'solid'\n ? 'bg-gold text-obsidian border-2 border-gold'\n : 'bg-transparent text-gold border-2 border-gold'\n\n return (\n <div\n ref={ref}\n className={cx(\n 'inline-flex items-center justify-center rounded-none font-bold select-none overflow-hidden',\n sizeMap[size],\n variantClasses,\n className\n )}\n {...rest}\n >\n {children}\n </div>\n )\n }\n)\n\nBrandIcon.displayName = 'BrandIcon'\n\nexport default BrandIcon\n","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport interface ColorSwatchProps extends React.HTMLAttributes<HTMLDivElement> {\n color: string\n label?: string\n}\n\nexport const ColorSwatch = React.forwardRef<HTMLDivElement, ColorSwatchProps>(\n ({color, label, className, ...rest}, ref) => {\n return (\n <div\n ref={ref}\n className={cx('flex flex-col items-center gap-2', className)}\n {...rest}\n >\n <div\n className=\"h-16 w-16 border-2 border-ash rounded-none shadow-sm\"\n style={{backgroundColor: color}}\n aria-label={label || color}\n />\n {label && (\n <span className=\"text-xs text-silver font-medium\">{label}</span>\n )}\n </div>\n )\n }\n)\n\nColorSwatch.displayName = 'ColorSwatch'\n\nexport default ColorSwatch\n","import React from 'react'\nimport { Card, type CardProps } from './Card'\nimport { cx } from '../utils/cx'\n\nexport type AspectRatioPreset = 'landscape' | 'portrait' | 'square'\nexport type AspectRatio = AspectRatioPreset | `${number}/${number}`\n\nexport interface ImageCardProps extends Omit<CardProps, 'title'> {\n src: string\n alt: string\n title?: React.ReactNode\n subtitle?: React.ReactNode\n aspectRatio?: AspectRatio\n objectFit?: 'cover' | 'contain'\n overlay?: React.ReactNode\n mediaClassName?: string\n contentClassName?: string\n}\n\nconst ASPECT_RATIO_PRESETS: Record<AspectRatioPreset, string> = {\n landscape: '3 / 2',\n portrait: '2 / 3',\n square: '1 / 1',\n}\n\nfunction resolveAspectRatio(ratio: AspectRatio): string {\n if (ratio in ASPECT_RATIO_PRESETS) {\n return ASPECT_RATIO_PRESETS[ratio as AspectRatioPreset]\n }\n return ratio.replace('/', ' / ')\n}\n\nexport const ImageCard = React.forwardRef<HTMLDivElement, ImageCardProps>(\n (\n {\n src,\n alt,\n title,\n subtitle,\n aspectRatio,\n objectFit = 'cover',\n overlay,\n mediaClassName,\n contentClassName,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const hasAspectRatio = aspectRatio !== undefined\n const isContain = objectFit === 'contain'\n\n return (\n <Card ref={ref} className={cx('p-0 overflow-hidden group w-fit', className)} {...props}>\n {/* Media container */}\n <div\n className={cx(\n 'relative',\n hasAspectRatio && 'overflow-hidden',\n mediaClassName\n )}\n style={hasAspectRatio ? {aspectRatio: resolveAspectRatio(aspectRatio)} : undefined}\n >\n <img\n src={src}\n alt={alt}\n className={cx(\n 'block max-w-full',\n hasAspectRatio && 'w-full h-full',\n hasAspectRatio && (isContain ? 'object-contain' : 'object-cover'),\n !hasAspectRatio && 'h-auto'\n )}\n />\n\n {/* Hover overlay */}\n {overlay && (\n <div\n className=\"absolute inset-0 bg-obsidian/80 opacity-0 group-hover:opacity-100 transition-opacity duration-200 flex items-center justify-center\">\n {overlay}\n </div>\n )}\n </div>\n\n {/* Content section */}\n {(title || subtitle || children) && (\n <div className={cx('px-4 pt-4', contentClassName)}>\n {title && <h4 className=\"text-lg font-semibold leading-tight\">{title}</h4>}\n {subtitle && <p className=\"text-sm text-silver leading-normal\">{subtitle}</p>}\n {children}\n </div>\n )}\n </Card>\n )\n }\n)\n\nImageCard.displayName = 'ImageCard'","import React from 'react'\nimport { cx } from '../utils/cx'\n\nexport type SectionHeadingLevel = 'h2' | 'h3'\n\nexport interface SectionHeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {\n level?: SectionHeadingLevel\n}\n\nconst levelStyles = {\n h2: 'text-2xl mb-4',\n h3: 'text-xl mb-3',\n}\n\nexport const SectionHeading = React.forwardRef<HTMLHeadingElement, SectionHeadingProps>(\n ({level = 'h2', children, className, ...rest}, ref) => {\n const Component = level\n\n return (\n <Component\n ref={ref as any}\n className={cx(\n 'text-gold font-semibold tracking-tight',\n levelStyles[level],\n className\n )}\n {...rest}\n >\n {children}\n </Component>\n )\n }\n)\n\nSectionHeading.displayName = 'SectionHeading'\n\nexport default SectionHeading\n"],"mappings":"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","names":["React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","ALIGN_MAP","JUSTIFY_MAP","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","e","import_react","React","import_react","import_lucide_react","React","import_react","React","import_react","React","import_react","VARIANT_MAP","React","import_react","import_lucide_react","React","VARIANT_STYLES","import_react","import_react_dom","import_lucide_react","React","import_react","import_react_dom","import_lucide_react","SIZE_MAP","React","import_react","POSITION_CLASSES","React","import_react","React","import_react","React","import_react","import_lucide_react","React","import_react","React","import_react","React","import_react","import_lucide_react","React","import_react","import_lucide_react","React","import_react","import_lucide_react","React","import_react","import_react","DOMPurify","React","import_react","React","variantStyles","variantStyles","React","import_react","React","import_react","sizeMap","React","import_react","React","import_react","React","import_react","React"]}
|