@lukeashford/aurelius 2.6.0 → 2.8.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/dist/index.d.mts +21 -1
- package/dist/index.d.ts +21 -1
- package/dist/index.js +109 -10
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +108 -10
- package/dist/index.mjs.map +1 -1
- package/llms.md +1 -0
- package/package.json +5 -2
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../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","../src/index.ts"],"sourcesContent":["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 variant?: CardVariant\n interactive?: boolean\n selected?: boolean\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 title?: React.ReactNode\n subtitle?: React.ReactNode\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?: '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 src?: string\n alt?: string\n aspect?: 'video' | 'square' | 'wide'\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 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'\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 gutter?: RowGutter\n gutterX?: RowGutter\n gutterY?: RowGutter\n justify?: RowJustify\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\nconst GAP_MAP: Record<RowGutter, 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\nconst GAP_X_MAP: Record<RowGutter, string> = {\n 0: 'gap-x-0',\n 1: 'gap-x-1',\n 2: 'gap-x-2',\n 3: 'gap-x-3',\n 4: 'gap-x-4',\n 5: 'gap-x-5',\n 6: 'gap-x-6',\n 8: 'gap-x-8',\n 10: 'gap-x-10',\n 12: 'gap-x-12',\n}\n\nconst GAP_Y_MAP: Record<RowGutter, string> = {\n 0: 'gap-y-0',\n 1: 'gap-y-1',\n 2: 'gap-y-2',\n 3: 'gap-y-3',\n 4: 'gap-y-4',\n 5: 'gap-y-5',\n 6: 'gap-y-6',\n 8: 'gap-y-8',\n 10: 'gap-y-10',\n 12: 'gap-y-12',\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 ? GAP_MAP[gutter] : ''\n const gapXClass = gutterX !== undefined ? GAP_X_MAP[gutterX] : ''\n const gapYClass = gutterY !== undefined ? GAP_Y_MAP[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'\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\nexport interface ResponsiveValue<T> {\n base?: T\n sm?: T\n md?: T\n lg?: T\n xl?: T\n '2xl'?: T\n}\n\nexport interface ColProps extends React.HTMLAttributes<HTMLDivElement> {\n span?: ColSpan | ResponsiveValue<ColSpan>\n offset?: ColOffset | ResponsiveValue<ColOffset>\n order?: ColOrder | ResponsiveValue<ColOrder>\n}\n\ntype Breakpoint = 'base' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n\nconst SPAN_CLASS_MAP: Record<Breakpoint, Record<ColSpan, string>> = {\n base: {\n 1: 'col-span-1',\n 2: 'col-span-2',\n 3: 'col-span-3',\n 4: 'col-span-4',\n 5: 'col-span-5',\n 6: 'col-span-6',\n 7: 'col-span-7',\n 8: 'col-span-8',\n 9: 'col-span-9',\n 10: 'col-span-10',\n 11: 'col-span-11',\n 12: 'col-span-12',\n auto: 'col-auto',\n full: 'col-span-full',\n },\n sm: {\n 1: 'sm:col-span-1',\n 2: 'sm:col-span-2',\n 3: 'sm:col-span-3',\n 4: 'sm:col-span-4',\n 5: 'sm:col-span-5',\n 6: 'sm:col-span-6',\n 7: 'sm:col-span-7',\n 8: 'sm:col-span-8',\n 9: 'sm:col-span-9',\n 10: 'sm:col-span-10',\n 11: 'sm:col-span-11',\n 12: 'sm:col-span-12',\n auto: 'sm:col-auto',\n full: 'sm:col-span-full',\n },\n md: {\n 1: 'md:col-span-1',\n 2: 'md:col-span-2',\n 3: 'md:col-span-3',\n 4: 'md:col-span-4',\n 5: 'md:col-span-5',\n 6: 'md:col-span-6',\n 7: 'md:col-span-7',\n 8: 'md:col-span-8',\n 9: 'md:col-span-9',\n 10: 'md:col-span-10',\n 11: 'md:col-span-11',\n 12: 'md:col-span-12',\n auto: 'md:col-auto',\n full: 'md:col-span-full',\n },\n lg: {\n 1: 'lg:col-span-1',\n 2: 'lg:col-span-2',\n 3: 'lg:col-span-3',\n 4: 'lg:col-span-4',\n 5: 'lg:col-span-5',\n 6: 'lg:col-span-6',\n 7: 'lg:col-span-7',\n 8: 'lg:col-span-8',\n 9: 'lg:col-span-9',\n 10: 'lg:col-span-10',\n 11: 'lg:col-span-11',\n 12: 'lg:col-span-12',\n auto: 'lg:col-auto',\n full: 'lg:col-span-full',\n },\n xl: {\n 1: 'xl:col-span-1',\n 2: 'xl:col-span-2',\n 3: 'xl:col-span-3',\n 4: 'xl:col-span-4',\n 5: 'xl:col-span-5',\n 6: 'xl:col-span-6',\n 7: 'xl:col-span-7',\n 8: 'xl:col-span-8',\n 9: 'xl:col-span-9',\n 10: 'xl:col-span-10',\n 11: 'xl:col-span-11',\n 12: 'xl:col-span-12',\n auto: 'xl:col-auto',\n full: 'xl:col-span-full',\n },\n '2xl': {\n 1: '2xl:col-span-1',\n 2: '2xl:col-span-2',\n 3: '2xl:col-span-3',\n 4: '2xl:col-span-4',\n 5: '2xl:col-span-5',\n 6: '2xl:col-span-6',\n 7: '2xl:col-span-7',\n 8: '2xl:col-span-8',\n 9: '2xl:col-span-9',\n 10: '2xl:col-span-10',\n 11: '2xl:col-span-11',\n 12: '2xl:col-span-12',\n auto: '2xl:col-auto',\n full: '2xl:col-span-full',\n },\n}\n\nconst OFFSET_CLASS_MAP: Record<Breakpoint, Record<ColOffset, string>> = {\n base: {\n 0: '',\n 1: 'col-start-2',\n 2: 'col-start-3',\n 3: 'col-start-4',\n 4: 'col-start-5',\n 5: 'col-start-6',\n 6: 'col-start-7',\n 7: 'col-start-8',\n 8: 'col-start-9',\n 9: 'col-start-10',\n 10: 'col-start-11',\n 11: 'col-start-12',\n },\n sm: {\n 0: '',\n 1: 'sm:col-start-2',\n 2: 'sm:col-start-3',\n 3: 'sm:col-start-4',\n 4: 'sm:col-start-5',\n 5: 'sm:col-start-6',\n 6: 'sm:col-start-7',\n 7: 'sm:col-start-8',\n 8: 'sm:col-start-9',\n 9: 'sm:col-start-10',\n 10: 'sm:col-start-11',\n 11: 'sm:col-start-12',\n },\n md: {\n 0: '',\n 1: 'md:col-start-2',\n 2: 'md:col-start-3',\n 3: 'md:col-start-4',\n 4: 'md:col-start-5',\n 5: 'md:col-start-6',\n 6: 'md:col-start-7',\n 7: 'md:col-start-8',\n 8: 'md:col-start-9',\n 9: 'md:col-start-10',\n 10: 'md:col-start-11',\n 11: 'md:col-start-12',\n },\n lg: {\n 0: '',\n 1: 'lg:col-start-2',\n 2: 'lg:col-start-3',\n 3: 'lg:col-start-4',\n 4: 'lg:col-start-5',\n 5: 'lg:col-start-6',\n 6: 'lg:col-start-7',\n 7: 'lg:col-start-8',\n 8: 'lg:col-start-9',\n 9: 'lg:col-start-10',\n 10: 'lg:col-start-11',\n 11: 'lg:col-start-12',\n },\n xl: {\n 0: '',\n 1: 'xl:col-start-2',\n 2: 'xl:col-start-3',\n 3: 'xl:col-start-4',\n 4: 'xl:col-start-5',\n 5: 'xl:col-start-6',\n 6: 'xl:col-start-7',\n 7: 'xl:col-start-8',\n 8: 'xl:col-start-9',\n 9: 'xl:col-start-10',\n 10: 'xl:col-start-11',\n 11: 'xl:col-start-12',\n },\n '2xl': {\n 0: '',\n 1: '2xl:col-start-2',\n 2: '2xl:col-start-3',\n 3: '2xl:col-start-4',\n 4: '2xl:col-start-5',\n 5: '2xl:col-start-6',\n 6: '2xl:col-start-7',\n 7: '2xl:col-start-8',\n 8: '2xl:col-start-9',\n 9: '2xl:col-start-10',\n 10: '2xl:col-start-11',\n 11: '2xl:col-start-12',\n },\n}\n\nconst ORDER_CLASS_MAP: Record<Breakpoint, Record<ColOrder, string>> = {\n base: {\n first: 'order-first',\n last: 'order-last',\n none: 'order-none',\n 1: 'order-1',\n 2: 'order-2',\n 3: 'order-3',\n 4: 'order-4',\n 5: 'order-5',\n 6: 'order-6',\n 7: 'order-7',\n 8: 'order-8',\n 9: 'order-9',\n 10: 'order-10',\n 11: 'order-11',\n 12: 'order-12',\n },\n sm: {\n first: 'sm:order-first',\n last: 'sm:order-last',\n none: 'sm:order-none',\n 1: 'sm:order-1',\n 2: 'sm:order-2',\n 3: 'sm:order-3',\n 4: 'sm:order-4',\n 5: 'sm:order-5',\n 6: 'sm:order-6',\n 7: 'sm:order-7',\n 8: 'sm:order-8',\n 9: 'sm:order-9',\n 10: 'sm:order-10',\n 11: 'sm:order-11',\n 12: 'sm:order-12',\n },\n md: {\n first: 'md:order-first',\n last: 'md:order-last',\n none: 'md:order-none',\n 1: 'md:order-1',\n 2: 'md:order-2',\n 3: 'md:order-3',\n 4: 'md:order-4',\n 5: 'md:order-5',\n 6: 'md:order-6',\n 7: 'md:order-7',\n 8: 'md:order-8',\n 9: 'md:order-9',\n 10: 'md:order-10',\n 11: 'md:order-11',\n 12: 'md:order-12',\n },\n lg: {\n first: 'lg:order-first',\n last: 'lg:order-last',\n none: 'lg:order-none',\n 1: 'lg:order-1',\n 2: 'lg:order-2',\n 3: 'lg:order-3',\n 4: 'lg:order-4',\n 5: 'lg:order-5',\n 6: 'lg:order-6',\n 7: 'lg:order-7',\n 8: 'lg:order-8',\n 9: 'lg:order-9',\n 10: 'lg:order-10',\n 11: 'lg:order-11',\n 12: 'lg:order-12',\n },\n xl: {\n first: 'xl:order-first',\n last: 'xl:order-last',\n none: 'xl:order-none',\n 1: 'xl:order-1',\n 2: 'xl:order-2',\n 3: 'xl:order-3',\n 4: 'xl:order-4',\n 5: 'xl:order-5',\n 6: 'xl:order-6',\n 7: 'xl:order-7',\n 8: 'xl:order-8',\n 9: 'xl:order-9',\n 10: 'xl:order-10',\n 11: 'xl:order-11',\n 12: 'xl:order-12',\n },\n '2xl': {\n first: '2xl:order-first',\n last: '2xl:order-last',\n none: '2xl:order-none',\n 1: '2xl:order-1',\n 2: '2xl:order-2',\n 3: '2xl:order-3',\n 4: '2xl:order-4',\n 5: '2xl:order-5',\n 6: '2xl:order-6',\n 7: '2xl:order-7',\n 8: '2xl:order-8',\n 9: '2xl:order-9',\n 10: '2xl:order-10',\n 11: '2xl:order-11',\n 12: '2xl:order-12',\n },\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 extends string | number>(\n value: T | ResponsiveValue<T> | undefined,\n classMap: Record<Breakpoint, Record<T, string>>\n): string[] {\n if (value === undefined) {\n return []\n }\n\n if (!isResponsiveValue(value)) {\n const cls = classMap.base[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 cls = classMap[breakpoint]?.[val]\n if (cls) {\n classes.push(cls)\n }\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, SPAN_CLASS_MAP)\n const offsetClasses = buildResponsiveClasses(offset, OFFSET_CLASS_MAP)\n const orderClasses = buildResponsiveClasses(order, ORDER_CLASS_MAP)\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 direction?: StackDirection\n align?: StackAlign\n justify?: StackJustify\n gap?: StackGap\n wrap?: boolean\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?: DividerOrientation\n variant?: DividerVariant\n label?: React.ReactNode\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 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 hoverable?: boolean\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 sortable?: boolean\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 variant?: 'default' | 'bordered' | 'divided'\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 leading?: React.ReactNode\n trailing?: React.ReactNode\n interactive?: boolean\n selected?: boolean\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: React.ReactNode\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 value?: number\n defaultValue?: number\n min?: number\n max?: number\n step?: number\n onChange?: (value: number) => void\n onChangeEnd?: (value: number) => void\n disabled?: boolean\n showTooltip?: boolean\n formatValue?: (value: number) => string\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 value?: number\n max?: number\n size?: ProgressSize\n variant?: ProgressVariant\n showValue?: boolean\n formatValue?: (value: number, max: number) => string\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?: ToastPosition\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 isOpen: boolean\n onClose: () => void\n position?: DrawerPosition\n title?: string\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full'\n children: React.ReactNode\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?: React.ReactNode\n confirmText?: string\n cancelText?: string\n onConfirm: () => void | Promise<void>\n onCancel?: () => void\n confirmVariant?: 'primary' | 'important' | 'danger'\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?: React.ReactNode\n acknowledgeText?: string\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?: React.ReactNode\n placeholder?: string\n defaultValue?: string\n submitText?: string\n cancelText?: string\n onSubmit: (value: string) => void | Promise<void>\n onCancel?: () => void\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 open?: boolean\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 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 align?: 'start' | 'center' | 'end'\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?: React.ReactNode\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?: boolean\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?: '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?: 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?: 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'\n\n// Breadcrumb container\nexport interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {\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 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}\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 page: number\n totalPages: number\n onPageChange: (page: number) => void\n siblingCount?: number\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 /** Array of steps. Each requires: id (string | number), label (string). */\n steps: Step[]\n /** ID of the current step (must match a step.id from the steps array). */\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, {useEffect, useRef} 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 /** Array of chat messages. Each item requires: content (string), variant ('user' | 'assistant'). Optional: id, isStreaming. */\n messages: ChatHistoryItem[]\n}\n\nexport const ChatHistory: React.FC<ChatHistoryProps> = ({messages, className, ...rest}) => {\n const innerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const el = innerRef.current\n if (!el) {\n return\n }\n\n if (typeof el.scrollTo === 'function') {\n el.scrollTo({top: el.scrollHeight, behavior: 'smooth'})\n } else {\n el.scrollTop = el.scrollHeight\n }\n }, [messages])\n\n return (\n <div\n ref={innerRef}\n className={cx(\n 'flex flex-col gap-3 justify-end w-full h-96 bg-charcoal/50 border border-ash/40 p-4 overflow-y-auto',\n className\n )}\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\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","/**\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"],"mappings":"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","names":["React","React","React","React","React","React","React","React","React","React","React","ALIGN_MAP","JUSTIFY_MAP","GAP_MAP","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","useCallback","React","useCallback","React","useCallback","React","useCallback","React","useState","useRef","useCallback","React","useState","useRef","useCallback","e","React","React","React","React","React","React","React","React","React","VARIANT_MAP","React","React","useState","useCallback","CheckCircle","AlertTriangle","Info","useCallback","useState","React","VARIANT_STYLES","CheckCircle","AlertTriangle","Info","React","useEffect","useState","createPortal","X","useState","useEffect","React","X","createPortal","React","useEffect","useState","createPortal","X","SIZE_MAP","useState","useEffect","React","X","createPortal","React","useState","useRef","useEffect","useCallback","POSITION_CLASSES","useState","useRef","useCallback","useEffect","React","React","useCallback","useCallback","React","React","createContext","useContext","useState","useCallback","useId","createContext","useContext","React","useState","useId","useCallback","React","createContext","useContext","useState","useCallback","useId","createContext","useContext","React","useState","useCallback","useId","React","createContext","useContext","useState","useCallback","useRef","useEffect","useId","createContext","useContext","useState","useId","useCallback","React","useRef","useEffect","React","React","React","React","React","ChevronRight","React","ChevronRight","React","Check","React","Check","React","React","React","React","React","variantStyles","variantStyles","React","React","useEffect","useRef","useRef","useEffect","React","React","sizeMap","React","React","React","React","React","React","React"]}
|
|
1
|
+
{"version":3,"sources":["../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/VideoCard.tsx","../src/components/SectionHeading.tsx","../src/index.ts"],"sourcesContent":["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","import {twMerge} from 'tailwind-merge';\nimport {clsx, type ClassValue} from 'clsx';\n\n/**\n * Concatenates class names and merges Tailwind utility classes correctly.\n * Uses clsx for conditional classes and tailwind-merge to handle overrides.\n */\nexport function cx(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\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 ReactPlayer from 'react-player'\nimport {Check} from 'lucide-react'\nimport {cx} from '../utils'\n\nexport type CardVariant = 'default' | 'elevated' | 'outlined' | 'ghost' | 'featured'\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: CardVariant\n interactive?: boolean\n selected?: boolean\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\n 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 title?: React.ReactNode\n subtitle?: React.ReactNode\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}\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?: '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 src?: string\n alt?: string\n aspect?: 'video' | 'square' | 'wide'\n position?: 'top' | 'bottom'\n isVideo?: boolean\n}\n\nconst CardMedia = React.forwardRef<HTMLDivElement, CardMediaProps>(\n ({\n src,\n alt = '',\n aspect = 'video',\n position = 'top',\n isVideo = false,\n className,\n children,\n ...props\n }, 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 relative',\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 isVideo ? (\n <ReactPlayer\n src={src}\n width=\"100%\"\n height=\"100%\"\n className=\"absolute top-0 left-0\"\n controls\n />\n ) : (\n <img src={src} alt={alt} className=\"w-full h-full object-cover\"/>\n )\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 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'\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 gutter?: RowGutter\n gutterX?: RowGutter\n gutterY?: RowGutter\n justify?: RowJustify\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\nconst GAP_MAP: Record<RowGutter, 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\nconst GAP_X_MAP: Record<RowGutter, string> = {\n 0: 'gap-x-0',\n 1: 'gap-x-1',\n 2: 'gap-x-2',\n 3: 'gap-x-3',\n 4: 'gap-x-4',\n 5: 'gap-x-5',\n 6: 'gap-x-6',\n 8: 'gap-x-8',\n 10: 'gap-x-10',\n 12: 'gap-x-12',\n}\n\nconst GAP_Y_MAP: Record<RowGutter, string> = {\n 0: 'gap-y-0',\n 1: 'gap-y-1',\n 2: 'gap-y-2',\n 3: 'gap-y-3',\n 4: 'gap-y-4',\n 5: 'gap-y-5',\n 6: 'gap-y-6',\n 8: 'gap-y-8',\n 10: 'gap-y-10',\n 12: 'gap-y-12',\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 ? GAP_MAP[gutter] : ''\n const gapXClass = gutterX !== undefined ? GAP_X_MAP[gutterX] : ''\n const gapYClass = gutterY !== undefined ? GAP_Y_MAP[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'\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\nexport interface ResponsiveValue<T> {\n base?: T\n sm?: T\n md?: T\n lg?: T\n xl?: T\n '2xl'?: T\n}\n\nexport interface ColProps extends React.HTMLAttributes<HTMLDivElement> {\n span?: ColSpan | ResponsiveValue<ColSpan>\n offset?: ColOffset | ResponsiveValue<ColOffset>\n order?: ColOrder | ResponsiveValue<ColOrder>\n}\n\ntype Breakpoint = 'base' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n\nconst SPAN_CLASS_MAP: Record<Breakpoint, Record<ColSpan, string>> = {\n base: {\n 1: 'col-span-1',\n 2: 'col-span-2',\n 3: 'col-span-3',\n 4: 'col-span-4',\n 5: 'col-span-5',\n 6: 'col-span-6',\n 7: 'col-span-7',\n 8: 'col-span-8',\n 9: 'col-span-9',\n 10: 'col-span-10',\n 11: 'col-span-11',\n 12: 'col-span-12',\n auto: 'col-auto',\n full: 'col-span-full',\n },\n sm: {\n 1: 'sm:col-span-1',\n 2: 'sm:col-span-2',\n 3: 'sm:col-span-3',\n 4: 'sm:col-span-4',\n 5: 'sm:col-span-5',\n 6: 'sm:col-span-6',\n 7: 'sm:col-span-7',\n 8: 'sm:col-span-8',\n 9: 'sm:col-span-9',\n 10: 'sm:col-span-10',\n 11: 'sm:col-span-11',\n 12: 'sm:col-span-12',\n auto: 'sm:col-auto',\n full: 'sm:col-span-full',\n },\n md: {\n 1: 'md:col-span-1',\n 2: 'md:col-span-2',\n 3: 'md:col-span-3',\n 4: 'md:col-span-4',\n 5: 'md:col-span-5',\n 6: 'md:col-span-6',\n 7: 'md:col-span-7',\n 8: 'md:col-span-8',\n 9: 'md:col-span-9',\n 10: 'md:col-span-10',\n 11: 'md:col-span-11',\n 12: 'md:col-span-12',\n auto: 'md:col-auto',\n full: 'md:col-span-full',\n },\n lg: {\n 1: 'lg:col-span-1',\n 2: 'lg:col-span-2',\n 3: 'lg:col-span-3',\n 4: 'lg:col-span-4',\n 5: 'lg:col-span-5',\n 6: 'lg:col-span-6',\n 7: 'lg:col-span-7',\n 8: 'lg:col-span-8',\n 9: 'lg:col-span-9',\n 10: 'lg:col-span-10',\n 11: 'lg:col-span-11',\n 12: 'lg:col-span-12',\n auto: 'lg:col-auto',\n full: 'lg:col-span-full',\n },\n xl: {\n 1: 'xl:col-span-1',\n 2: 'xl:col-span-2',\n 3: 'xl:col-span-3',\n 4: 'xl:col-span-4',\n 5: 'xl:col-span-5',\n 6: 'xl:col-span-6',\n 7: 'xl:col-span-7',\n 8: 'xl:col-span-8',\n 9: 'xl:col-span-9',\n 10: 'xl:col-span-10',\n 11: 'xl:col-span-11',\n 12: 'xl:col-span-12',\n auto: 'xl:col-auto',\n full: 'xl:col-span-full',\n },\n '2xl': {\n 1: '2xl:col-span-1',\n 2: '2xl:col-span-2',\n 3: '2xl:col-span-3',\n 4: '2xl:col-span-4',\n 5: '2xl:col-span-5',\n 6: '2xl:col-span-6',\n 7: '2xl:col-span-7',\n 8: '2xl:col-span-8',\n 9: '2xl:col-span-9',\n 10: '2xl:col-span-10',\n 11: '2xl:col-span-11',\n 12: '2xl:col-span-12',\n auto: '2xl:col-auto',\n full: '2xl:col-span-full',\n },\n}\n\nconst OFFSET_CLASS_MAP: Record<Breakpoint, Record<ColOffset, string>> = {\n base: {\n 0: '',\n 1: 'col-start-2',\n 2: 'col-start-3',\n 3: 'col-start-4',\n 4: 'col-start-5',\n 5: 'col-start-6',\n 6: 'col-start-7',\n 7: 'col-start-8',\n 8: 'col-start-9',\n 9: 'col-start-10',\n 10: 'col-start-11',\n 11: 'col-start-12',\n },\n sm: {\n 0: '',\n 1: 'sm:col-start-2',\n 2: 'sm:col-start-3',\n 3: 'sm:col-start-4',\n 4: 'sm:col-start-5',\n 5: 'sm:col-start-6',\n 6: 'sm:col-start-7',\n 7: 'sm:col-start-8',\n 8: 'sm:col-start-9',\n 9: 'sm:col-start-10',\n 10: 'sm:col-start-11',\n 11: 'sm:col-start-12',\n },\n md: {\n 0: '',\n 1: 'md:col-start-2',\n 2: 'md:col-start-3',\n 3: 'md:col-start-4',\n 4: 'md:col-start-5',\n 5: 'md:col-start-6',\n 6: 'md:col-start-7',\n 7: 'md:col-start-8',\n 8: 'md:col-start-9',\n 9: 'md:col-start-10',\n 10: 'md:col-start-11',\n 11: 'md:col-start-12',\n },\n lg: {\n 0: '',\n 1: 'lg:col-start-2',\n 2: 'lg:col-start-3',\n 3: 'lg:col-start-4',\n 4: 'lg:col-start-5',\n 5: 'lg:col-start-6',\n 6: 'lg:col-start-7',\n 7: 'lg:col-start-8',\n 8: 'lg:col-start-9',\n 9: 'lg:col-start-10',\n 10: 'lg:col-start-11',\n 11: 'lg:col-start-12',\n },\n xl: {\n 0: '',\n 1: 'xl:col-start-2',\n 2: 'xl:col-start-3',\n 3: 'xl:col-start-4',\n 4: 'xl:col-start-5',\n 5: 'xl:col-start-6',\n 6: 'xl:col-start-7',\n 7: 'xl:col-start-8',\n 8: 'xl:col-start-9',\n 9: 'xl:col-start-10',\n 10: 'xl:col-start-11',\n 11: 'xl:col-start-12',\n },\n '2xl': {\n 0: '',\n 1: '2xl:col-start-2',\n 2: '2xl:col-start-3',\n 3: '2xl:col-start-4',\n 4: '2xl:col-start-5',\n 5: '2xl:col-start-6',\n 6: '2xl:col-start-7',\n 7: '2xl:col-start-8',\n 8: '2xl:col-start-9',\n 9: '2xl:col-start-10',\n 10: '2xl:col-start-11',\n 11: '2xl:col-start-12',\n },\n}\n\nconst ORDER_CLASS_MAP: Record<Breakpoint, Record<ColOrder, string>> = {\n base: {\n first: 'order-first',\n last: 'order-last',\n none: 'order-none',\n 1: 'order-1',\n 2: 'order-2',\n 3: 'order-3',\n 4: 'order-4',\n 5: 'order-5',\n 6: 'order-6',\n 7: 'order-7',\n 8: 'order-8',\n 9: 'order-9',\n 10: 'order-10',\n 11: 'order-11',\n 12: 'order-12',\n },\n sm: {\n first: 'sm:order-first',\n last: 'sm:order-last',\n none: 'sm:order-none',\n 1: 'sm:order-1',\n 2: 'sm:order-2',\n 3: 'sm:order-3',\n 4: 'sm:order-4',\n 5: 'sm:order-5',\n 6: 'sm:order-6',\n 7: 'sm:order-7',\n 8: 'sm:order-8',\n 9: 'sm:order-9',\n 10: 'sm:order-10',\n 11: 'sm:order-11',\n 12: 'sm:order-12',\n },\n md: {\n first: 'md:order-first',\n last: 'md:order-last',\n none: 'md:order-none',\n 1: 'md:order-1',\n 2: 'md:order-2',\n 3: 'md:order-3',\n 4: 'md:order-4',\n 5: 'md:order-5',\n 6: 'md:order-6',\n 7: 'md:order-7',\n 8: 'md:order-8',\n 9: 'md:order-9',\n 10: 'md:order-10',\n 11: 'md:order-11',\n 12: 'md:order-12',\n },\n lg: {\n first: 'lg:order-first',\n last: 'lg:order-last',\n none: 'lg:order-none',\n 1: 'lg:order-1',\n 2: 'lg:order-2',\n 3: 'lg:order-3',\n 4: 'lg:order-4',\n 5: 'lg:order-5',\n 6: 'lg:order-6',\n 7: 'lg:order-7',\n 8: 'lg:order-8',\n 9: 'lg:order-9',\n 10: 'lg:order-10',\n 11: 'lg:order-11',\n 12: 'lg:order-12',\n },\n xl: {\n first: 'xl:order-first',\n last: 'xl:order-last',\n none: 'xl:order-none',\n 1: 'xl:order-1',\n 2: 'xl:order-2',\n 3: 'xl:order-3',\n 4: 'xl:order-4',\n 5: 'xl:order-5',\n 6: 'xl:order-6',\n 7: 'xl:order-7',\n 8: 'xl:order-8',\n 9: 'xl:order-9',\n 10: 'xl:order-10',\n 11: 'xl:order-11',\n 12: 'xl:order-12',\n },\n '2xl': {\n first: '2xl:order-first',\n last: '2xl:order-last',\n none: '2xl:order-none',\n 1: '2xl:order-1',\n 2: '2xl:order-2',\n 3: '2xl:order-3',\n 4: '2xl:order-4',\n 5: '2xl:order-5',\n 6: '2xl:order-6',\n 7: '2xl:order-7',\n 8: '2xl:order-8',\n 9: '2xl:order-9',\n 10: '2xl:order-10',\n 11: '2xl:order-11',\n 12: '2xl:order-12',\n },\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 extends string | number>(\n value: T | ResponsiveValue<T> | undefined,\n classMap: Record<Breakpoint, Record<T, string>>\n): string[] {\n if (value === undefined) {\n return []\n }\n\n if (!isResponsiveValue(value)) {\n const cls = classMap.base[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 cls = classMap[breakpoint]?.[val]\n if (cls) {\n classes.push(cls)\n }\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, SPAN_CLASS_MAP)\n const offsetClasses = buildResponsiveClasses(offset, OFFSET_CLASS_MAP)\n const orderClasses = buildResponsiveClasses(order, ORDER_CLASS_MAP)\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 direction?: StackDirection\n align?: StackAlign\n justify?: StackJustify\n gap?: StackGap\n wrap?: boolean\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?: DividerOrientation\n variant?: DividerVariant\n label?: React.ReactNode\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 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 hoverable?: boolean\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 sortable?: boolean\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 variant?: 'default' | 'bordered' | 'divided'\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 leading?: React.ReactNode\n trailing?: React.ReactNode\n interactive?: boolean\n selected?: boolean\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: React.ReactNode\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 value?: number\n defaultValue?: number\n min?: number\n max?: number\n step?: number\n onChange?: (value: number) => void\n onChangeEnd?: (value: number) => void\n disabled?: boolean\n showTooltip?: boolean\n formatValue?: (value: number) => string\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 value?: number\n max?: number\n size?: ProgressSize\n variant?: ProgressVariant\n showValue?: boolean\n formatValue?: (value: number, max: number) => string\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?: ToastPosition\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 isOpen: boolean\n onClose: () => void\n position?: DrawerPosition\n title?: string\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full'\n children: React.ReactNode\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?: React.ReactNode\n confirmText?: string\n cancelText?: string\n onConfirm: () => void | Promise<void>\n onCancel?: () => void\n confirmVariant?: 'primary' | 'important' | 'danger'\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?: React.ReactNode\n acknowledgeText?: string\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?: React.ReactNode\n placeholder?: string\n defaultValue?: string\n submitText?: string\n cancelText?: string\n onSubmit: (value: string) => void | Promise<void>\n onCancel?: () => void\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 open?: boolean\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 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 align?: 'start' | 'center' | 'end'\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?: React.ReactNode\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?: boolean\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?: '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?: 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?: 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'\n\n// Breadcrumb container\nexport interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {\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 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}\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 page: number\n totalPages: number\n onPageChange: (page: number) => void\n siblingCount?: number\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 /** Array of steps. Each requires: id (string | number), label (string). */\n steps: Step[]\n /** ID of the current step (must match a step.id from the steps array). */\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, {useEffect, useRef} 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 /** Array of chat messages. Each item requires: content (string), variant ('user' | 'assistant'). Optional: id, isStreaming. */\n messages: ChatHistoryItem[]\n}\n\nexport const ChatHistory: React.FC<ChatHistoryProps> = ({messages, className, ...rest}) => {\n const innerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const el = innerRef.current\n if (!el) {\n return\n }\n\n if (typeof el.scrollTo === 'function') {\n el.scrollTo({top: el.scrollHeight, behavior: 'smooth'})\n } else {\n el.scrollTop = el.scrollHeight\n }\n }, [messages])\n\n return (\n <div\n ref={innerRef}\n className={cx(\n 'flex flex-col gap-3 justify-end w-full h-96 bg-charcoal/50 border border-ash/40 p-4 overflow-y-auto',\n className\n )}\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\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'\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 py-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 ReactPlayer from 'react-player'\nimport {Card, type CardProps} from './Card'\nimport {cx} from '../utils/cx'\n\nexport type VideoAspectRatioPreset = 'video' | 'cinema' | 'square'\nexport type VideoAspectRatio = VideoAspectRatioPreset | `${number}/${number}`\n\nexport interface VideoCardProps extends Omit<CardProps, 'title'> {\n src: string\n title?: React.ReactNode\n subtitle?: React.ReactNode\n aspectRatio?: VideoAspectRatio\n playing?: boolean\n controls?: boolean\n light?: boolean | string\n volume?: number\n muted?: boolean\n loop?: boolean\n mediaClassName?: string\n contentClassName?: string\n playerProps?: any\n}\n\nconst ASPECT_RATIO_PRESETS: Record<VideoAspectRatioPreset, string> = {\n video: '16 / 9',\n cinema: '21 / 9',\n square: '1 / 1',\n}\n\nfunction resolveAspectRatio(ratio: VideoAspectRatio): string {\n if (ratio in ASPECT_RATIO_PRESETS) {\n return ASPECT_RATIO_PRESETS[ratio as VideoAspectRatioPreset]\n }\n return ratio.replace('/', ' / ')\n}\n\nexport const VideoCard = React.forwardRef<HTMLDivElement, VideoCardProps>(\n (\n {\n src,\n title,\n subtitle,\n aspectRatio = 'video',\n playing = false,\n controls = true,\n light = false,\n volume,\n muted = false,\n loop = false,\n mediaClassName,\n contentClassName,\n className,\n children,\n playerProps,\n ...props\n },\n ref\n ) => {\n const hasAspectRatio = aspectRatio !== undefined\n\n return (\n <Card ref={ref} className={cx('p-0 overflow-hidden group w-full', className)} {...props}>\n {/* Media container */}\n <div\n className={cx(\n 'relative bg-black overflow-hidden',\n mediaClassName\n )}\n style={{aspectRatio: resolveAspectRatio(aspectRatio)}}\n >\n <ReactPlayer\n src={src}\n playing={playing}\n controls={controls}\n light={light}\n volume={volume}\n muted={muted}\n loop={loop}\n width=\"100%\"\n height=\"100%\"\n className=\"absolute top-0 left-0\"\n {...playerProps}\n />\n </div>\n\n {/* Content section */}\n {(title || subtitle || children) && (\n <div className={cx('px-4 py-4', contentClassName)}>\n {title && <h4 className=\"text-lg font-semibold leading-tight\">{title}</h4>}\n {subtitle && <p\n className=\"text-sm text-silver leading-normal mt-1\">{subtitle}</p>}\n {children}\n </div>\n )}\n </Card>\n )\n }\n)\n\nVideoCard.displayName = 'VideoCard'\n","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","/**\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"],"mappings":"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","names":["React","React","React","React","React","React","React","React","React","React","React","ALIGN_MAP","JUSTIFY_MAP","GAP_MAP","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","useCallback","React","useCallback","React","useCallback","React","useCallback","React","useState","useRef","useCallback","React","useState","useRef","useCallback","e","React","React","React","React","React","React","React","React","React","VARIANT_MAP","React","React","useState","useCallback","CheckCircle","AlertTriangle","Info","useCallback","useState","React","VARIANT_STYLES","CheckCircle","AlertTriangle","Info","React","useEffect","useState","createPortal","X","useState","useEffect","React","X","createPortal","React","useEffect","useState","createPortal","X","SIZE_MAP","useState","useEffect","React","X","createPortal","React","useState","useRef","useEffect","useCallback","POSITION_CLASSES","useState","useRef","useCallback","useEffect","React","React","useCallback","useCallback","React","React","createContext","useContext","useState","useCallback","useId","createContext","useContext","React","useState","useId","useCallback","React","createContext","useContext","useState","useCallback","useId","createContext","useContext","React","useState","useCallback","useId","React","createContext","useContext","useState","useCallback","useRef","useEffect","useId","createContext","useContext","useState","useId","useCallback","React","useRef","useEffect","React","React","React","React","React","ChevronRight","React","ChevronRight","React","Check","React","Check","React","React","React","React","React","variantStyles","variantStyles","React","React","useEffect","useRef","useRef","useEffect","React","React","sizeMap","React","React","React","React","React","React","ReactPlayer","ASPECT_RATIO_PRESETS","resolveAspectRatio","React","ReactPlayer","React","React"]}
|