@onesaz/ui 0.3.10 → 0.3.11
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.ts +2 -0
- package/dist/index.js +19 -11
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme/provider.tsx","../src/theme/context.ts","../src/theme/use-theme.ts","../src/utils/cn.ts","../src/components/box.tsx","../src/components/stack.tsx","../src/components/grid.tsx","../src/components/typography.tsx","../src/components/button.tsx","../src/components/input.tsx","../src/components/input-adornment.tsx","../src/components/textarea.tsx","../src/components/text-field.tsx","../src/components/label.tsx","../src/components/checkbox.tsx","../src/components/switch.tsx","../src/components/radio.tsx","../src/components/form.tsx","../src/components/slider.tsx","../src/components/card.tsx","../src/components/badge.tsx","../src/components/separator.tsx","../src/components/accordion.tsx","../src/components/select/index.tsx","../src/components/dialog/index.tsx","../src/components/alert-dialog.tsx","../src/components/spinner.tsx","../src/components/alert.tsx","../src/components/tabs.tsx","../src/components/tooltip.tsx","../src/components/progress.tsx","../src/components/table.tsx","../src/components/avatar.tsx","../src/components/skeleton.tsx","../src/components/pagination.tsx","../src/components/combobox/index.tsx","../src/components/data-grid/index.tsx","../src/components/list.tsx","../src/components/charts.tsx","../src/components/breadcrumbs.tsx","../src/components/dropdown-menu.tsx","../src/components/drawer.tsx","../src/components/topbar.tsx","../src/components/sidebar.tsx","../src/components/sidebar-rail.tsx","../src/playground.tsx"],"sourcesContent":["import * as React from 'react'\nimport {\n accentColors,\n grayColors,\n radiusPresets,\n lightTheme,\n darkTheme,\n type AccentColor,\n type GrayColor,\n type RadiusPreset,\n type Theme,\n} from '@onesaz/tokens'\nimport { ThemeContext } from './context'\n\nexport interface ThemeProviderProps {\n children: React.ReactNode\n defaultTheme?: Theme\n accentColor?: AccentColor\n grayColor?: GrayColor\n radius?: RadiusPreset\n storageKey?: string\n}\n\nfunction getSystemTheme(): 'light' | 'dark' {\n if (typeof window === 'undefined') return 'light'\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n}\n\nexport function ThemeProvider({\n children,\n defaultTheme = 'system',\n accentColor: defaultAccent = 'purple',\n grayColor: defaultGray = 'slate',\n radius: defaultRadius = 'medium',\n storageKey = 'onesaz-theme',\n}: ThemeProviderProps) {\n const [theme, setThemeState] = React.useState<Theme>(defaultTheme)\n const [accentColor, setAccentColorState] = React.useState<AccentColor>(defaultAccent)\n const [grayColor, setGrayColorState] = React.useState<GrayColor>(defaultGray)\n const [radius, setRadiusState] = React.useState<RadiusPreset>(defaultRadius)\n\n const [resolvedTheme, setResolvedTheme] = React.useState<'light' | 'dark'>(() =>\n defaultTheme === 'system' ? getSystemTheme() : defaultTheme === 'dark' ? 'dark' : 'light'\n )\n\n // Sync state with props when they change (important for Storybook controls)\n React.useEffect(() => {\n setThemeState(defaultTheme)\n }, [defaultTheme])\n\n React.useEffect(() => {\n setAccentColorState(defaultAccent)\n }, [defaultAccent])\n\n React.useEffect(() => {\n setGrayColorState(defaultGray)\n }, [defaultGray])\n\n React.useEffect(() => {\n setRadiusState(defaultRadius)\n }, [defaultRadius])\n\n // Listen for system theme changes\n React.useEffect(() => {\n if (theme !== 'system') {\n setResolvedTheme(theme)\n return\n }\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n setResolvedTheme(mediaQuery.matches ? 'dark' : 'light')\n\n const handler = (e: MediaQueryListEvent) => {\n setResolvedTheme(e.matches ? 'dark' : 'light')\n }\n\n mediaQuery.addEventListener('change', handler)\n return () => mediaQuery.removeEventListener('change', handler)\n }, [theme])\n\n // Generate CSS variables\n React.useEffect(() => {\n const root = document.documentElement\n const themeTokens = resolvedTheme === 'dark' ? darkTheme : lightTheme\n const accent = accentColors[accentColor]\n const gray = grayColors[grayColor]\n const radiusValues = radiusPresets[radius]\n\n // Set theme attribute\n root.setAttribute('data-theme', resolvedTheme)\n root.setAttribute('data-accent', accentColor)\n\n // Set gray-based semantic tokens\n root.style.setProperty('--background', gray[themeTokens.background])\n root.style.setProperty('--foreground', gray[themeTokens.foreground])\n root.style.setProperty('--card', gray[themeTokens.card])\n root.style.setProperty('--card-foreground', gray[themeTokens.cardForeground])\n root.style.setProperty('--popover', gray[themeTokens.popover])\n root.style.setProperty('--popover-foreground', gray[themeTokens.popoverForeground])\n root.style.setProperty('--muted', gray[themeTokens.muted])\n root.style.setProperty('--muted-foreground', gray[themeTokens.mutedForeground])\n root.style.setProperty('--border', gray[themeTokens.border])\n root.style.setProperty('--input', gray[themeTokens.input])\n\n // Set accent colors\n root.style.setProperty('--accent', accent[6])\n root.style.setProperty('--accent-foreground', '#ffffff')\n root.style.setProperty('--accent-hover', accent[7])\n root.style.setProperty('--ring', accent[6])\n\n // Set all accent scale values\n Object.entries(accent).forEach(([step, value]) => {\n root.style.setProperty(`--accent-${step}`, value)\n })\n\n // Set destructive colors\n root.style.setProperty('--destructive', resolvedTheme === 'dark' ? '#ef4444' : '#dc2626')\n root.style.setProperty('--destructive-foreground', '#ffffff')\n\n // Set radius\n root.style.setProperty('--radius', radiusValues.md)\n root.style.setProperty('--radius-sm', radiusValues.sm)\n root.style.setProperty('--radius-lg', radiusValues.lg)\n }, [resolvedTheme, accentColor, grayColor, radius])\n\n const setTheme = React.useCallback((newTheme: Theme) => {\n localStorage.setItem(`${storageKey}-mode`, newTheme)\n setThemeState(newTheme)\n }, [storageKey])\n\n const setAccentColor = React.useCallback((color: AccentColor) => {\n localStorage.setItem(`${storageKey}-accent`, color)\n setAccentColorState(color)\n }, [storageKey])\n\n const setGrayColor = React.useCallback((color: GrayColor) => {\n localStorage.setItem(`${storageKey}-gray`, color)\n setGrayColorState(color)\n }, [storageKey])\n\n const setRadius = React.useCallback((newRadius: RadiusPreset) => {\n localStorage.setItem(`${storageKey}-radius`, newRadius)\n setRadiusState(newRadius)\n }, [storageKey])\n\n const value = React.useMemo(\n () => ({\n theme,\n resolvedTheme,\n accentColor,\n grayColor,\n radius,\n setTheme,\n setAccentColor,\n setGrayColor,\n setRadius,\n }),\n [theme, resolvedTheme, accentColor, grayColor, radius, setTheme, setAccentColor, setGrayColor, setRadius]\n )\n\n return (\n <ThemeContext.Provider value={value}>\n {children}\n </ThemeContext.Provider>\n )\n}\n\nThemeProvider.displayName = 'ThemeProvider'\n","import { createContext } from 'react'\nimport type { AccentColor, GrayColor, RadiusPreset, Theme } from '@onesaz/tokens'\n\nexport interface ThemeContextValue {\n theme: Theme\n resolvedTheme: 'light' | 'dark'\n accentColor: AccentColor\n grayColor: GrayColor\n radius: RadiusPreset\n setTheme: (theme: Theme) => void\n setAccentColor: (color: AccentColor) => void\n setGrayColor: (color: GrayColor) => void\n setRadius: (radius: RadiusPreset) => void\n}\n\nexport const ThemeContext = createContext<ThemeContextValue | undefined>(undefined)\n","import { useContext } from 'react'\nimport { ThemeContext, type ThemeContextValue } from './context'\n\nexport function useTheme(): ThemeContextValue {\n const context = useContext(ThemeContext)\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider')\n }\n return context\n}\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Render as a different element */\n as?: React.ElementType\n /** Display type */\n display?: 'block' | 'inline-block' | 'inline' | 'flex' | 'inline-flex' | 'grid' | 'inline-grid' | 'none'\n /** Flex direction */\n flexDirection?: 'row' | 'row-reverse' | 'column' | 'column-reverse'\n /** Align items */\n alignItems?: 'start' | 'end' | 'center' | 'baseline' | 'stretch'\n /** Justify content */\n justifyContent?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly'\n /** Flex wrap */\n flexWrap?: 'wrap' | 'nowrap' | 'wrap-reverse'\n /** Gap */\n gap?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16\n /** Padding */\n p?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16\n /** Padding X */\n px?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16\n /** Padding Y */\n py?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16\n /** Margin */\n m?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 'auto'\n /** Margin X */\n mx?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 'auto'\n /** Margin Y */\n my?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 'auto'\n /** Border radius */\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full'\n /** Shadow */\n shadow?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n /** Background color */\n bg?: 'background' | 'foreground' | 'muted' | 'accent' | 'card' | 'popover' | 'destructive' | 'transparent'\n /** Text color */\n color?: 'foreground' | 'muted-foreground' | 'accent' | 'accent-foreground' | 'destructive' | 'destructive-foreground'\n /** Border */\n border?: boolean\n /** Border color */\n borderColor?: 'border' | 'input' | 'ring' | 'transparent'\n /** Width */\n w?: 'full' | 'auto' | 'screen' | 'min' | 'max' | 'fit'\n /** Height */\n h?: 'full' | 'auto' | 'screen' | 'min' | 'max' | 'fit'\n /** Position */\n position?: 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'\n /** Overflow */\n overflow?: 'auto' | 'hidden' | 'visible' | 'scroll'\n}\n\nconst displayClasses: Record<string, string> = {\n block: 'block',\n 'inline-block': 'inline-block',\n inline: 'inline',\n flex: 'flex',\n 'inline-flex': 'inline-flex',\n grid: 'grid',\n 'inline-grid': 'inline-grid',\n none: 'hidden',\n}\n\nconst flexDirectionClasses: Record<string, string> = {\n row: 'flex-row',\n 'row-reverse': 'flex-row-reverse',\n column: 'flex-col',\n 'column-reverse': 'flex-col-reverse',\n}\n\nconst alignItemsClasses: Record<string, string> = {\n start: 'items-start',\n end: 'items-end',\n center: 'items-center',\n baseline: 'items-baseline',\n stretch: 'items-stretch',\n}\n\nconst justifyContentClasses: Record<string, string> = {\n start: 'justify-start',\n end: 'justify-end',\n center: 'justify-center',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n}\n\nconst flexWrapClasses: Record<string, string> = {\n wrap: 'flex-wrap',\n nowrap: 'flex-nowrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n}\n\nconst gapClasses: Record<number, 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 16: 'gap-16',\n}\n\nconst paddingClasses: Record<number, string> = {\n 0: 'p-0',\n 1: 'p-1',\n 2: 'p-2',\n 3: 'p-3',\n 4: 'p-4',\n 5: 'p-5',\n 6: 'p-6',\n 8: 'p-8',\n 10: 'p-10',\n 12: 'p-12',\n 16: 'p-16',\n}\n\nconst paddingXClasses: Record<number, string> = {\n 0: 'px-0',\n 1: 'px-1',\n 2: 'px-2',\n 3: 'px-3',\n 4: 'px-4',\n 5: 'px-5',\n 6: 'px-6',\n 8: 'px-8',\n 10: 'px-10',\n 12: 'px-12',\n 16: 'px-16',\n}\n\nconst paddingYClasses: Record<number, string> = {\n 0: 'py-0',\n 1: 'py-1',\n 2: 'py-2',\n 3: 'py-3',\n 4: 'py-4',\n 5: 'py-5',\n 6: 'py-6',\n 8: 'py-8',\n 10: 'py-10',\n 12: 'py-12',\n 16: 'py-16',\n}\n\nconst marginClasses: Record<number | 'auto', string> = {\n 0: 'm-0',\n 1: 'm-1',\n 2: 'm-2',\n 3: 'm-3',\n 4: 'm-4',\n 5: 'm-5',\n 6: 'm-6',\n 8: 'm-8',\n 10: 'm-10',\n 12: 'm-12',\n 16: 'm-16',\n auto: 'm-auto',\n}\n\nconst marginXClasses: Record<number | 'auto', string> = {\n 0: 'mx-0',\n 1: 'mx-1',\n 2: 'mx-2',\n 3: 'mx-3',\n 4: 'mx-4',\n 5: 'mx-5',\n 6: 'mx-6',\n 8: 'mx-8',\n 10: 'mx-10',\n 12: 'mx-12',\n 16: 'mx-16',\n auto: 'mx-auto',\n}\n\nconst marginYClasses: Record<number | 'auto', string> = {\n 0: 'my-0',\n 1: 'my-1',\n 2: 'my-2',\n 3: 'my-3',\n 4: 'my-4',\n 5: 'my-5',\n 6: 'my-6',\n 8: 'my-8',\n 10: 'my-10',\n 12: 'my-12',\n 16: 'my-16',\n auto: 'my-auto',\n}\n\nconst roundedClasses: Record<string, string> = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n full: 'rounded-full',\n}\n\nconst shadowClasses: Record<string, string> = {\n none: 'shadow-none',\n sm: 'shadow-sm',\n md: 'shadow-md',\n lg: 'shadow-lg',\n xl: 'shadow-xl',\n '2xl': 'shadow-2xl',\n}\n\nconst bgClasses: Record<string, string> = {\n background: 'bg-background',\n foreground: 'bg-foreground',\n muted: 'bg-muted',\n accent: 'bg-accent',\n card: 'bg-card',\n popover: 'bg-popover',\n destructive: 'bg-destructive',\n transparent: 'bg-transparent',\n}\n\nconst colorClasses: Record<string, string> = {\n foreground: 'text-foreground',\n 'muted-foreground': 'text-muted-foreground',\n accent: 'text-accent',\n 'accent-foreground': 'text-accent-foreground',\n destructive: 'text-destructive',\n 'destructive-foreground': 'text-destructive-foreground',\n}\n\nconst borderColorClasses: Record<string, string> = {\n border: 'border-border',\n input: 'border-input',\n ring: 'border-ring',\n transparent: 'border-transparent',\n}\n\nconst widthClasses: Record<string, string> = {\n full: 'w-full',\n auto: 'w-auto',\n screen: 'w-screen',\n min: 'w-min',\n max: 'w-max',\n fit: 'w-fit',\n}\n\nconst heightClasses: Record<string, string> = {\n full: 'h-full',\n auto: 'h-auto',\n screen: 'h-screen',\n min: 'h-min',\n max: 'h-max',\n fit: 'h-fit',\n}\n\nconst positionClasses: Record<string, string> = {\n static: 'static',\n relative: 'relative',\n absolute: 'absolute',\n fixed: 'fixed',\n sticky: 'sticky',\n}\n\nconst overflowClasses: Record<string, string> = {\n auto: 'overflow-auto',\n hidden: 'overflow-hidden',\n visible: 'overflow-visible',\n scroll: 'overflow-scroll',\n}\n\nconst Box = React.forwardRef<HTMLDivElement, BoxProps>(\n (\n {\n as: Component = 'div',\n className,\n display,\n flexDirection,\n alignItems,\n justifyContent,\n flexWrap,\n gap,\n p,\n px,\n py,\n m,\n mx,\n my,\n rounded,\n shadow,\n bg,\n color,\n border,\n borderColor,\n w,\n h,\n position,\n overflow,\n ...props\n },\n ref\n ) => {\n const classes = cn(\n display && displayClasses[display],\n flexDirection && flexDirectionClasses[flexDirection],\n alignItems && alignItemsClasses[alignItems],\n justifyContent && justifyContentClasses[justifyContent],\n flexWrap && flexWrapClasses[flexWrap],\n gap !== undefined && gapClasses[gap],\n p !== undefined && paddingClasses[p],\n px !== undefined && paddingXClasses[px],\n py !== undefined && paddingYClasses[py],\n m !== undefined && marginClasses[m],\n mx !== undefined && marginXClasses[mx],\n my !== undefined && marginYClasses[my],\n rounded && roundedClasses[rounded],\n shadow && shadowClasses[shadow],\n bg && bgClasses[bg],\n color && colorClasses[color],\n border && 'border',\n borderColor && borderColorClasses[borderColor],\n w && widthClasses[w],\n h && heightClasses[h],\n position && positionClasses[position],\n overflow && overflowClasses[overflow],\n className\n )\n\n return <Component ref={ref} className={classes} {...props} />\n }\n)\nBox.displayName = 'Box'\n\nexport { Box }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Stack direction */\n direction?: 'row' | 'row-reverse' | 'column' | 'column-reverse'\n /** Spacing between items */\n spacing?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16\n /** Align items */\n align?: 'start' | 'end' | 'center' | 'baseline' | 'stretch'\n /** Justify content */\n justify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly'\n /** Wrap items */\n wrap?: 'wrap' | 'nowrap' | 'wrap-reverse'\n /** Divider between items */\n divider?: React.ReactNode\n /** Render as a different element */\n as?: React.ElementType\n}\n\nconst directionClasses: Record<string, string> = {\n row: 'flex-row',\n 'row-reverse': 'flex-row-reverse',\n column: 'flex-col',\n 'column-reverse': 'flex-col-reverse',\n}\n\nconst spacingClasses: Record<number, 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 16: 'gap-16',\n}\n\nconst alignClasses: Record<string, string> = {\n start: 'items-start',\n end: 'items-end',\n center: 'items-center',\n baseline: 'items-baseline',\n stretch: 'items-stretch',\n}\n\nconst justifyClasses: Record<string, string> = {\n start: 'justify-start',\n end: 'justify-end',\n center: 'justify-center',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n}\n\nconst wrapClasses: Record<string, string> = {\n wrap: 'flex-wrap',\n nowrap: 'flex-nowrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n}\n\nconst Stack = React.forwardRef<HTMLDivElement, StackProps>(\n (\n {\n as: Component = 'div',\n className,\n direction = 'column',\n spacing = 0,\n align,\n justify,\n wrap,\n divider,\n children,\n ...props\n },\n ref\n ) => {\n const classes = cn(\n 'flex',\n directionClasses[direction],\n spacingClasses[spacing],\n align && alignClasses[align],\n justify && justifyClasses[justify],\n wrap && wrapClasses[wrap],\n className\n )\n\n // If divider is provided, insert it between children\n if (divider) {\n const childArray = React.Children.toArray(children).filter(Boolean)\n const childrenWithDividers = childArray.reduce<React.ReactNode[]>(\n (acc, child, index) => {\n if (index === 0) {\n return [child]\n }\n return [...acc, React.cloneElement(divider as React.ReactElement, { key: `divider-${index}` }), child]\n },\n []\n )\n\n return (\n <Component ref={ref} className={classes} {...props}>\n {childrenWithDividers}\n </Component>\n )\n }\n\n return (\n <Component ref={ref} className={classes} {...props}>\n {children}\n </Component>\n )\n }\n)\nStack.displayName = 'Stack'\n\n// HStack - Horizontal Stack helper\nconst HStack = React.forwardRef<HTMLDivElement, Omit<StackProps, 'direction'>>(\n (props, ref) => <Stack ref={ref} direction=\"row\" {...props} />\n)\nHStack.displayName = 'HStack'\n\n// VStack - Vertical Stack helper\nconst VStack = React.forwardRef<HTMLDivElement, Omit<StackProps, 'direction'>>(\n (props, ref) => <Stack ref={ref} direction=\"column\" {...props} />\n)\nVStack.displayName = 'VStack'\n\nexport { Stack, HStack, VStack }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\ntype GridSize = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'auto'\ntype GridSpacing = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n /** If true, the component will be a container (uses display: grid) */\n container?: boolean\n /** If true, the component will be a grid item */\n item?: boolean\n /** Number of columns the item spans (1-12) or 'auto' */\n xs?: GridSize\n /** Columns at sm breakpoint (640px) */\n sm?: GridSize\n /** Columns at md breakpoint (768px) */\n md?: GridSize\n /** Columns at lg breakpoint (1024px) */\n lg?: GridSize\n /** Columns at xl breakpoint (1280px) */\n xl?: GridSize\n /** Columns at 2xl breakpoint (1536px) */\n xxl?: GridSize\n /** Gap between grid items */\n spacing?: GridSpacing\n /** Row gap */\n rowSpacing?: GridSpacing\n /** Column gap */\n columnSpacing?: GridSpacing\n /** Number of columns in the grid (for container) */\n columns?: 1 | 2 | 3 | 4 | 5 | 6 | 12\n /** Align items */\n alignItems?: 'start' | 'end' | 'center' | 'baseline' | 'stretch'\n /** Justify items */\n justifyItems?: 'start' | 'end' | 'center' | 'stretch'\n /** Justify content */\n justifyContent?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly'\n}\n\nconst spacingClasses: Record<GridSpacing, 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 16: 'gap-16',\n}\n\nconst rowSpacingClasses: Record<GridSpacing, 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 16: 'gap-y-16',\n}\n\nconst columnSpacingClasses: Record<GridSpacing, 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 16: 'gap-x-16',\n}\n\nconst columnsClasses: Record<number, string> = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n 4: 'grid-cols-4',\n 5: 'grid-cols-5',\n 6: 'grid-cols-6',\n 12: 'grid-cols-12',\n}\n\nconst alignItemsClasses: Record<string, string> = {\n start: 'items-start',\n end: 'items-end',\n center: 'items-center',\n baseline: 'items-baseline',\n stretch: 'items-stretch',\n}\n\nconst justifyItemsClasses: Record<string, string> = {\n start: 'justify-items-start',\n end: 'justify-items-end',\n center: 'justify-items-center',\n stretch: 'justify-items-stretch',\n}\n\nconst justifyContentClasses: Record<string, string> = {\n start: 'justify-start',\n end: 'justify-end',\n center: 'justify-center',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n}\n\n// Column span classes for different breakpoints\nconst colSpanClasses: Record<string, Record<GridSize, string>> = {\n xs: {\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 },\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 },\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 },\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 },\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 },\n xxl: {\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 },\n}\n\nconst Grid = React.forwardRef<HTMLDivElement, GridProps>(\n (\n {\n className,\n container,\n item,\n xs,\n sm,\n md,\n lg,\n xl,\n xxl,\n spacing,\n rowSpacing,\n columnSpacing,\n columns = 12,\n alignItems,\n justifyItems,\n justifyContent,\n children,\n ...props\n },\n ref\n ) => {\n const classes = cn(\n // Container styles\n container && 'grid',\n container && columnsClasses[columns],\n container && spacing !== undefined && spacingClasses[spacing],\n container && rowSpacing !== undefined && rowSpacingClasses[rowSpacing],\n container && columnSpacing !== undefined && columnSpacingClasses[columnSpacing],\n container && alignItems && alignItemsClasses[alignItems],\n container && justifyItems && justifyItemsClasses[justifyItems],\n container && justifyContent && justifyContentClasses[justifyContent],\n // Item styles (column spans)\n item && xs && colSpanClasses.xs[xs],\n item && sm && colSpanClasses.sm[sm],\n item && md && colSpanClasses.md[md],\n item && lg && colSpanClasses.lg[lg],\n item && xl && colSpanClasses.xl[xl],\n item && xxl && colSpanClasses.xxl[xxl],\n className\n )\n\n return (\n <div ref={ref} className={classes} {...props}>\n {children}\n </div>\n )\n }\n)\nGrid.displayName = 'Grid'\n\nexport { Grid }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\ntype TypographyVariant =\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | 'subtitle1'\n | 'subtitle2'\n | 'body1'\n | 'body2'\n | 'caption'\n | 'overline'\n | 'inherit'\n\ntype TypographyColor =\n | 'inherit'\n | 'primary'\n | 'secondary'\n | 'success'\n | 'warning'\n | 'error'\n | 'info'\n | 'muted'\n | 'white'\n | 'dark'\n\ntype FontWeight = 'light' | 'regular' | 'medium' | 'semibold' | 'bold'\n\nexport interface TypographyProps extends React.HTMLAttributes<HTMLElement> {\n /** Typography variant */\n variant?: TypographyVariant\n /** Text color */\n color?: TypographyColor\n /** Font weight override */\n fontWeight?: FontWeight\n /** Text transform */\n textTransform?: 'none' | 'uppercase' | 'lowercase' | 'capitalize'\n /** Text alignment */\n align?: 'left' | 'center' | 'right' | 'justify'\n /** Vertical alignment */\n verticalAlign?: 'top' | 'middle' | 'bottom' | 'baseline'\n /** Enable text gradient effect */\n textGradient?: boolean\n /** Gradient color (when textGradient is true) */\n gradientColor?: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error' | 'dark'\n /** Opacity */\n opacity?: number\n /** Render as a different element */\n as?: React.ElementType\n /** Disable bottom margin */\n gutterBottom?: boolean\n /** Prevent text wrap */\n noWrap?: boolean\n /** Paragraph mode (adds bottom margin) */\n paragraph?: boolean\n}\n\nconst variantMapping: Record<TypographyVariant, React.ElementType> = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n subtitle1: 'h6',\n subtitle2: 'h6',\n body1: 'p',\n body2: 'p',\n caption: 'span',\n overline: 'span',\n inherit: 'span',\n}\n\nconst variantClasses: Record<TypographyVariant, string> = {\n h1: 'text-4xl font-bold leading-tight tracking-tight',\n h2: 'text-3xl font-bold leading-tight tracking-tight',\n h3: 'text-2xl font-semibold leading-snug',\n h4: 'text-xl font-semibold leading-snug',\n h5: 'text-lg font-medium leading-normal',\n h6: 'text-base font-medium leading-normal',\n subtitle1: 'text-base font-normal leading-relaxed',\n subtitle2: 'text-sm font-medium leading-relaxed',\n body1: 'text-base font-normal leading-relaxed',\n body2: 'text-sm font-normal leading-relaxed',\n caption: 'text-xs font-normal leading-normal',\n overline: 'text-xs font-medium uppercase tracking-widest leading-relaxed',\n inherit: '',\n}\n\nconst colorClasses: Record<TypographyColor, string> = {\n inherit: '',\n primary: 'text-accent',\n secondary: 'text-muted-foreground',\n success: 'text-green-600 dark:text-green-400',\n warning: 'text-orange-600 dark:text-orange-400',\n error: 'text-destructive',\n info: 'text-blue-600 dark:text-blue-400',\n muted: 'text-muted-foreground',\n white: 'text-white',\n dark: 'text-foreground',\n}\n\nconst fontWeightClasses: Record<FontWeight, string> = {\n light: 'font-light',\n regular: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n}\n\nconst textTransformClasses: Record<string, string> = {\n none: 'normal-case',\n uppercase: 'uppercase',\n lowercase: 'lowercase',\n capitalize: 'capitalize',\n}\n\nconst alignClasses: Record<string, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n justify: 'text-justify',\n}\n\nconst verticalAlignClasses: Record<string, string> = {\n top: 'align-top',\n middle: 'align-middle',\n bottom: 'align-bottom',\n baseline: 'align-baseline',\n}\n\nconst gradientClasses: Record<string, string> = {\n primary: 'from-purple-5 to-purple-8',\n secondary: 'from-slate-5 to-slate-8',\n info: 'from-blue-4 to-blue-7',\n success: 'from-green-4 to-green-7',\n warning: 'from-orange-4 to-orange-7',\n error: 'from-red-4 to-red-7',\n dark: 'from-slate-7 to-slate-10',\n}\n\nconst Typography = React.forwardRef<HTMLElement, TypographyProps>(\n (\n {\n className,\n variant = 'body1',\n color = 'inherit',\n fontWeight,\n textTransform,\n align,\n verticalAlign,\n textGradient = false,\n gradientColor = 'primary',\n opacity,\n as,\n gutterBottom = false,\n noWrap = false,\n paragraph = false,\n style,\n ...props\n },\n ref\n ) => {\n const Component = as || variantMapping[variant]\n\n const classes = cn(\n variantClasses[variant],\n color !== 'inherit' && !textGradient && colorClasses[color],\n fontWeight && fontWeightClasses[fontWeight],\n textTransform && textTransformClasses[textTransform],\n align && alignClasses[align],\n verticalAlign && verticalAlignClasses[verticalAlign],\n gutterBottom && 'mb-2',\n noWrap && 'truncate',\n paragraph && 'mb-4',\n // Text gradient styles\n textGradient && [\n 'bg-gradient-to-r bg-clip-text text-transparent',\n gradientClasses[gradientColor],\n ],\n className\n )\n\n const combinedStyle = opacity !== undefined ? { ...style, opacity } : style\n\n return (\n <Component\n ref={ref}\n className={classes}\n style={combinedStyle}\n {...props}\n />\n )\n }\n)\nTypography.displayName = 'Typography'\n\n// Convenience components\nconst H1 = React.forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"h1\" {...props} />\n)\nH1.displayName = 'H1'\n\nconst H2 = React.forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"h2\" {...props} />\n)\nH2.displayName = 'H2'\n\nconst H3 = React.forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"h3\" {...props} />\n)\nH3.displayName = 'H3'\n\nconst H4 = React.forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"h4\" {...props} />\n)\nH4.displayName = 'H4'\n\nconst H5 = React.forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"h5\" {...props} />\n)\nH5.displayName = 'H5'\n\nconst H6 = React.forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"h6\" {...props} />\n)\nH6.displayName = 'H6'\n\nconst Text = React.forwardRef<HTMLParagraphElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"body1\" {...props} />\n)\nText.displayName = 'Text'\n\nconst Caption = React.forwardRef<HTMLSpanElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"caption\" {...props} />\n)\nCaption.displayName = 'Caption'\n\nexport { Typography, H1, H2, H3, H4, H5, H6, Text, Caption }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'\n size?: 'default' | 'sm' | 'lg' | 'icon'\n /** Whether the button should take the full width of its container */\n fullWidth?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant = 'default', size = 'default', fullWidth = false, ...props }, ref) => {\n return (\n <button\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors cursor-pointer',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed',\n {\n 'bg-accent text-accent-foreground hover:bg-accent-hover':\n variant === 'default',\n 'bg-destructive text-destructive-foreground hover:bg-destructive/90':\n variant === 'destructive',\n 'border border-input bg-background hover:bg-muted hover:text-foreground':\n variant === 'outline',\n 'bg-muted text-foreground hover:bg-muted/80':\n variant === 'secondary',\n 'hover:bg-muted hover:text-foreground':\n variant === 'ghost',\n 'text-accent underline-offset-4 hover:underline':\n variant === 'link',\n },\n {\n 'h-10 px-4 py-2': size === 'default',\n 'h-9 rounded-md px-3': size === 'sm',\n 'h-11 rounded-md px-8': size === 'lg',\n 'h-10 w-10': size === 'icon',\n },\n fullWidth && 'w-full',\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = 'Button'\n\n// ============================================================================\n// IconButton - Specialized button for icons\n// ============================================================================\n\nexport interface IconButtonProps extends Omit<ButtonProps, 'size'> {\n /** Size of the icon button */\n size?: 'xs' | 'sm' | 'md' | 'lg'\n /** Whether the button is rounded (circular) */\n rounded?: boolean\n /** Aria label for accessibility (required for icon-only buttons) */\n 'aria-label': string\n}\n\nconst iconButtonSizes = {\n xs: 'h-7 w-7',\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12',\n}\n\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ className, variant = 'ghost', size = 'md', rounded = false, ...props }, ref) => {\n return (\n <button\n className={cn(\n 'inline-flex items-center justify-center transition-colors cursor-pointer',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed',\n {\n 'bg-accent text-accent-foreground hover:bg-accent-hover':\n variant === 'default',\n 'bg-destructive text-destructive-foreground hover:bg-destructive/90':\n variant === 'destructive',\n 'border border-input bg-background hover:bg-muted hover:text-foreground':\n variant === 'outline',\n 'bg-muted text-foreground hover:bg-muted/80':\n variant === 'secondary',\n 'hover:bg-muted hover:text-foreground':\n variant === 'ghost',\n 'text-accent underline-offset-4 hover:underline':\n variant === 'link',\n },\n iconButtonSizes[size],\n rounded ? 'rounded-full' : 'rounded-md',\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nIconButton.displayName = 'IconButton'\n\nexport { Button, IconButton }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** Input size variant */\n inputSize?: 'sm' | 'md' | 'lg'\n /** Error state */\n error?: boolean\n /** Start adornment */\n startAdornment?: React.ReactNode\n /** End adornment */\n endAdornment?: React.ReactNode\n /** Wrapper class (when using adornments) */\n containerClassName?: string\n}\n\nconst sizeClasses = {\n sm: 'h-8 text-sm px-2.5',\n md: 'h-10 text-sm px-3',\n lg: 'h-12 text-base px-4',\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n type,\n inputSize = 'md',\n error,\n startAdornment,\n endAdornment,\n containerClassName,\n ...props\n },\n ref\n ) => {\n const hasAdornment = startAdornment || endAdornment\n\n if (hasAdornment) {\n return (\n <div\n className={cn(\n 'flex items-center w-full rounded-md border',\n 'bg-background',\n error\n ? 'border-destructive focus-within:ring-2 focus-within:ring-destructive/20'\n : 'border-input focus-within:ring-2 focus-within:ring-ring/20 focus-within:border-ring',\n 'transition-colors',\n props.disabled && 'opacity-50 cursor-not-allowed bg-muted',\n containerClassName\n )}\n >\n {startAdornment && (\n <div className=\"flex items-center pl-3 text-muted-foreground\">\n {startAdornment}\n </div>\n )}\n <input\n type={type}\n className={cn(\n 'flex w-full bg-transparent py-2',\n 'text-foreground',\n 'placeholder:text-muted-foreground',\n 'focus:outline-none',\n 'disabled:cursor-not-allowed',\n 'file:border-0 file:bg-transparent file:text-sm file:font-medium',\n sizeClasses[inputSize],\n startAdornment && 'pl-2',\n endAdornment && 'pr-2',\n className\n )}\n ref={ref}\n {...props}\n />\n {endAdornment && (\n <div className=\"flex items-center pr-3 text-muted-foreground\">\n {endAdornment}\n </div>\n )}\n </div>\n )\n }\n\n return (\n <input\n type={type}\n className={cn(\n 'flex w-full rounded-md border',\n 'bg-background text-foreground',\n 'placeholder:text-muted-foreground',\n error\n ? 'border-destructive focus:ring-2 focus:ring-destructive/20'\n : 'border-input focus:ring-2 focus:ring-ring/20 focus:border-ring',\n 'focus:outline-none',\n 'disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-muted',\n 'transition-colors',\n 'file:border-0 file:bg-transparent file:text-sm file:font-medium',\n sizeClasses[inputSize],\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nInput.displayName = 'Input'\n\nexport { Input }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface InputAdornmentProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Position of the adornment */\n position?: 'start' | 'end'\n /** Disable pointer events (useful for icons) */\n disablePointerEvents?: boolean\n}\n\n/**\n * InputAdornment - A wrapper component for input adornments (icons, text, etc.)\n *\n * Can be used standalone or with Input/TextField components.\n *\n * @example\n * ```tsx\n * <Input\n * startAdornment={\n * <InputAdornment position=\"start\">\n * <SearchIcon className=\"h-4 w-4\" />\n * </InputAdornment>\n * }\n * />\n *\n * // Or with text\n * <Input\n * startAdornment={\n * <InputAdornment position=\"start\">$</InputAdornment>\n * }\n * />\n * ```\n */\nconst InputAdornment = React.forwardRef<HTMLDivElement, InputAdornmentProps>(\n ({ className, position = 'start', disablePointerEvents = false, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center',\n 'text-muted-foreground',\n '[&>svg]:h-4 [&>svg]:w-4',\n disablePointerEvents && 'pointer-events-none',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nInputAdornment.displayName = 'InputAdornment'\n\nexport { InputAdornment }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n 'flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm',\n 'ring-offset-background',\n 'placeholder:text-muted-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = 'Textarea'\n\nexport { Textarea }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\nimport { Input, type InputProps } from './input'\nimport { Label } from './label'\n\nexport interface TextFieldProps extends Omit<InputProps, 'inputSize' | 'size'> {\n /** Label text */\n label?: React.ReactNode\n /** Helper text shown below input */\n helperText?: React.ReactNode\n /** Error message (also sets error state) */\n errorMessage?: React.ReactNode\n /** Required indicator */\n required?: boolean\n /** Size of the text field */\n size?: 'sm' | 'md' | 'lg' | 'small' | 'medium'\n /** Full width mode */\n fullWidth?: boolean\n /** Start adornment (icon, text, etc.) */\n startAdornment?: React.ReactNode\n /** End adornment (icon, text, etc.) */\n endAdornment?: React.ReactNode\n /** Input element props (MUI-compatible) */\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>\n /** Input container/slot props (MUI-compatible) */\n InputProps?: {\n startAdornment?: React.ReactNode\n endAdornment?: React.ReactNode\n className?: string\n containerClassName?: string\n }\n /** Input label props (MUI-compatible) */\n InputLabelProps?: React.LabelHTMLAttributes<HTMLLabelElement>\n /** Input ref (MUI-compatible) */\n inputRef?: React.Ref<HTMLInputElement>\n}\n\nconst TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n className,\n label,\n helperText,\n errorMessage,\n required,\n size = 'md',\n fullWidth,\n id: idProp,\n error,\n startAdornment,\n endAdornment,\n inputProps,\n InputProps,\n InputLabelProps,\n inputRef,\n ...props\n },\n ref\n ) => {\n const generatedId = React.useId()\n const id = idProp || generatedId\n const helperId = `${id}-helper`\n const hasError = error || !!errorMessage\n const mergedRef = (node: HTMLInputElement | null) => {\n if (typeof ref === 'function') ref(node)\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = node\n if (typeof inputRef === 'function') inputRef(node)\n else if (inputRef) (inputRef as React.MutableRefObject<HTMLInputElement | null>).current = node\n }\n\n const { className: inputPropsClassName, ...restInputProps } = inputProps ?? {}\n const {\n className: inputSlotClassName,\n containerClassName,\n startAdornment: inputSlotStart,\n endAdornment: inputSlotEnd,\n ...restInputSlotProps\n } = InputProps ?? {}\n const resolvedStartAdornment = inputSlotStart ? (\n <>\n {inputSlotStart}\n {startAdornment}\n </>\n ) : (\n startAdornment\n )\n const resolvedEndAdornment = inputSlotEnd ? (\n <>\n {endAdornment}\n {inputSlotEnd}\n </>\n ) : (\n endAdornment\n )\n\n const resolvedSize =\n size === 'small' ? 'sm' : size === 'medium' ? 'md' : size\n\n return (\n <div className={cn('grid gap-1.5', fullWidth && 'w-full', className)}>\n {label && (\n <Label\n htmlFor={id}\n className={cn(\n 'text-sm font-medium',\n hasError && 'text-destructive'\n )}\n {...InputLabelProps}\n >\n {label}\n {required && (\n <span className=\"text-destructive ml-0.5\" aria-hidden=\"true\">\n *\n </span>\n )}\n </Label>\n )}\n <Input\n ref={mergedRef}\n id={id}\n inputSize={resolvedSize}\n error={hasError}\n startAdornment={resolvedStartAdornment}\n endAdornment={resolvedEndAdornment}\n aria-describedby={helperText || errorMessage ? helperId : undefined}\n aria-invalid={hasError}\n className={cn(inputSlotClassName, inputPropsClassName)}\n containerClassName={containerClassName}\n {...props}\n {...restInputSlotProps}\n {...restInputProps}\n />\n {(helperText || errorMessage) && (\n <p\n id={helperId}\n className={cn(\n 'text-sm',\n hasError\n ? 'text-destructive'\n : 'text-muted-foreground'\n )}\n >\n {errorMessage || helperText}\n </p>\n )}\n </div>\n )\n }\n)\nTextField.displayName = 'TextField'\n\nexport { TextField }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {}\n\nconst Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, ...props }, ref) => (\n <label\n ref={ref}\n className={cn(\n 'text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n className\n )}\n {...props}\n />\n )\n)\nLabel.displayName = 'Label'\n\nexport { Label }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, ...props }, ref) => (\n <input\n type=\"checkbox\"\n ref={ref}\n className={cn(\n 'h-4 w-4 shrink-0 rounded-sm border border-accent cursor-pointer',\n 'ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'accent-accent',\n className\n )}\n {...props}\n />\n )\n)\nCheckbox.displayName = 'Checkbox'\n\nexport { Checkbox }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface SwitchProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {}\n\nconst Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n ({ className, ...props }, ref) => (\n <label className={cn('relative inline-flex items-center cursor-pointer', className)}>\n <input\n type=\"checkbox\"\n ref={ref}\n className=\"sr-only peer\"\n {...props}\n />\n <div\n className={cn(\n 'w-11 h-6 rounded-full transition-colors',\n 'bg-input peer-checked:bg-accent',\n 'peer-focus-visible:outline-none peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2 peer-focus-visible:ring-offset-background',\n 'peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n 'after:content-[\"\"] after:absolute after:top-[2px] after:left-[2px]',\n 'after:bg-background after:rounded-full after:h-5 after:w-5',\n 'after:transition-transform after:shadow-lg',\n 'peer-checked:after:translate-x-5'\n )}\n />\n </label>\n )\n)\nSwitch.displayName = 'Switch'\n\nexport { Switch }\n","import * as React from 'react'\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport { cn } from '../utils/cn'\n\n// RadioGroup\nexport interface RadioGroupProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {\n /** Orientation of the radio group */\n orientation?: 'horizontal' | 'vertical'\n /** Size of radio items */\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst RadioGroupContext = React.createContext<{ size?: 'sm' | 'md' | 'lg' }>({})\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(({ className, orientation = 'vertical', size = 'md', ...props }, ref) => {\n return (\n <RadioGroupContext.Provider value={{ size }}>\n <RadioGroupPrimitive.Root\n ref={ref}\n className={cn(\n 'grid gap-2',\n orientation === 'horizontal' && 'grid-flow-col auto-cols-max gap-4',\n className\n )}\n {...props}\n />\n </RadioGroupContext.Provider>\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\n// RadioGroupItem\nexport interface RadioGroupItemProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> {\n /** Size override for individual item */\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst sizeClasses = {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n}\n\nconst indicatorSizeClasses = {\n sm: 'h-2 w-2',\n md: 'h-2.5 w-2.5',\n lg: 'h-3 w-3',\n}\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(({ className, size: sizeProp, ...props }, ref) => {\n const { size: contextSize } = React.useContext(RadioGroupContext)\n const size = sizeProp || contextSize || 'md'\n\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'aspect-square rounded-full',\n 'border-2 border-input',\n 'ring-offset-background',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:border-accent',\n 'transition-colors',\n sizeClasses[size],\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <div\n className={cn(\n 'rounded-full bg-accent',\n indicatorSizeClasses[size]\n )}\n />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\n// Radio - Convenience component with label\nexport interface RadioProps extends RadioGroupItemProps {\n /** Label for the radio */\n label?: React.ReactNode\n /** Description text */\n description?: React.ReactNode\n /** ID for accessibility */\n id?: string\n}\n\nconst Radio = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioProps\n>(({ className, label, description, id: idProp, value, size, ...props }, ref) => {\n const generatedId = React.useId()\n const id = idProp || generatedId\n\n if (!label && !description) {\n return <RadioGroupItem ref={ref} value={value} size={size} {...props} />\n }\n\n return (\n <div className={cn('flex items-start gap-3', className)}>\n <RadioGroupItem ref={ref} id={id} value={value} size={size} {...props} />\n <div className=\"grid gap-1\">\n {label && (\n <label\n htmlFor={id}\n className=\"text-sm font-medium leading-none text-foreground cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n </div>\n )\n})\nRadio.displayName = 'Radio'\n\nexport { RadioGroup, RadioGroupItem, Radio }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\n// Form Context\ninterface FormControlContextValue {\n id?: string\n error?: boolean\n disabled?: boolean\n required?: boolean\n}\n\nconst FormControlContext = React.createContext<FormControlContextValue>({})\n\nexport function useFormControl() {\n return React.useContext(FormControlContext)\n}\n\n// FormControl\nexport interface FormControlProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Error state */\n error?: boolean\n /** Disabled state */\n disabled?: boolean\n /** Required state */\n required?: boolean\n /** Full width mode */\n fullWidth?: boolean\n /** Margin */\n margin?: 'none' | 'dense' | 'normal'\n /** Orientation */\n orientation?: 'vertical' | 'horizontal'\n}\n\nconst marginClasses = {\n none: '',\n dense: 'my-1',\n normal: 'my-2',\n}\n\nconst FormControl = React.forwardRef<HTMLDivElement, FormControlProps>(\n (\n {\n className,\n children,\n error,\n disabled,\n required,\n fullWidth,\n margin = 'none',\n orientation = 'vertical',\n ...props\n },\n ref\n ) => {\n const id = React.useId()\n\n return (\n <FormControlContext.Provider value={{ id, error, disabled, required }}>\n <div\n ref={ref}\n className={cn(\n 'inline-flex',\n orientation === 'vertical' ? 'flex-col gap-1.5' : 'flex-row items-center gap-3',\n fullWidth && 'w-full',\n marginClasses[margin],\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </FormControlContext.Provider>\n )\n }\n)\nFormControl.displayName = 'FormControl'\n\n// FormLabel\nexport interface FormLabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n /** Error state (auto-inherited from FormControl) */\n error?: boolean\n /** Disabled state (auto-inherited from FormControl) */\n disabled?: boolean\n /** Required indicator */\n required?: boolean\n}\n\nconst FormLabel = React.forwardRef<HTMLLabelElement, FormLabelProps>(\n ({ className, children, error: errorProp, disabled: disabledProp, required: requiredProp, htmlFor, ...props }, ref) => {\n const context = useFormControl()\n const error = errorProp ?? context.error\n const disabled = disabledProp ?? context.disabled\n const required = requiredProp ?? context.required\n const id = htmlFor ?? context.id\n\n return (\n <label\n ref={ref}\n htmlFor={id}\n className={cn(\n 'text-sm font-medium leading-none',\n 'text-foreground',\n error && 'text-destructive',\n disabled && 'cursor-not-allowed opacity-70',\n className\n )}\n {...props}\n >\n {children}\n {required && (\n <span className=\"text-destructive ml-0.5\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )\n }\n)\nFormLabel.displayName = 'FormLabel'\n\n// FormHelperText\nexport interface FormHelperTextProps extends React.HTMLAttributes<HTMLParagraphElement> {\n /** Error state (auto-inherited from FormControl) */\n error?: boolean\n /** Disabled state (auto-inherited from FormControl) */\n disabled?: boolean\n}\n\nconst FormHelperText = React.forwardRef<HTMLParagraphElement, FormHelperTextProps>(\n ({ className, children, error: errorProp, disabled: disabledProp, id, ...props }, ref) => {\n const context = useFormControl()\n const error = errorProp ?? context.error\n const disabled = disabledProp ?? context.disabled\n const helperId = id ?? (context.id ? `${context.id}-helper` : undefined)\n\n return (\n <p\n ref={ref}\n id={helperId}\n className={cn(\n 'text-sm',\n error\n ? 'text-destructive'\n : 'text-muted-foreground',\n disabled && 'opacity-70',\n className\n )}\n {...props}\n >\n {children}\n </p>\n )\n }\n)\nFormHelperText.displayName = 'FormHelperText'\n\n// FormGroup - for grouping checkboxes/radios\nexport interface FormGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Group orientation */\n row?: boolean\n}\n\nconst FormGroup = React.forwardRef<HTMLDivElement, FormGroupProps>(\n ({ className, row, ...props }, ref) => (\n <div\n ref={ref}\n role=\"group\"\n className={cn(\n 'flex',\n row ? 'flex-row flex-wrap gap-4' : 'flex-col gap-2',\n className\n )}\n {...props}\n />\n )\n)\nFormGroup.displayName = 'FormGroup'\n\nexport { FormControl, FormLabel, FormHelperText, FormGroup }\n","import * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { cn } from \"../utils/cn\";\n\nexport interface SliderProps extends Omit<\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>,\n \"onValueChange\" | \"value\" | \"defaultValue\" | \"onChange\"\n> {\n /** Current value */\n value?: number;\n /** Default value */\n defaultValue?: number;\n /** Change handler */\n onChange?: (value: number) => void;\n /** Show value label */\n showValue?: boolean;\n /** Value label position */\n valuePosition?: \"top\" | \"bottom\" | \"left\" | \"right\";\n /** Custom value formatter */\n valueFormatter?: (value: number) => string;\n /** Additional CSS classes */\n className?: string;\n}\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n SliderProps\n>(({\n className,\n min = 0,\n max = 100,\n step = 1,\n value,\n defaultValue,\n onChange,\n showValue = false,\n valuePosition = \"top\",\n valueFormatter,\n disabled = false,\n ...props\n}, ref) => {\n const [internalValue, setInternalValue] = React.useState<number[]>(\n value !== undefined ? [value] : defaultValue !== undefined ? [defaultValue] : [50]\n );\n\n // Sync with external value prop\n React.useEffect(() => {\n if (value !== undefined) {\n setInternalValue([value]);\n }\n }, [value]);\n\n const handleValueChange = (newValue: number[]) => {\n setInternalValue(newValue);\n onChange?.(newValue[0]);\n };\n\n const currentValue = internalValue[0];\n const displayValue = valueFormatter\n ? valueFormatter(currentValue)\n : currentValue.toString();\n\n const sliderElement = (\n <SliderPrimitive.Root\n ref={ref}\n min={min}\n max={max}\n step={step}\n value={internalValue}\n onValueChange={handleValueChange}\n disabled={disabled}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-muted\">\n <SliderPrimitive.Range className=\"absolute h-full bg-accent\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-accent bg-background shadow-lg ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent/10 active:bg-accent/20\" />\n </SliderPrimitive.Root>\n );\n\n if (!showValue) {\n return sliderElement;\n }\n\n const valueElement = (\n <div className=\"text-sm font-medium text-foreground whitespace-nowrap\">\n {displayValue}\n </div>\n );\n\n const containerClasses = {\n top: \"flex flex-col items-center gap-2\",\n bottom: \"flex flex-col items-center gap-2\",\n left: \"flex items-center gap-3\",\n right: \"flex items-center gap-3\",\n };\n\n const orderMap = {\n top: (\n <>\n {valueElement}\n {sliderElement}\n </>\n ),\n bottom: (\n <>\n {sliderElement}\n {valueElement}\n </>\n ),\n left: (\n <>\n {valueElement}\n {sliderElement}\n </>\n ),\n right: (\n <>\n {sliderElement}\n {valueElement}\n </>\n ),\n };\n\n return (\n <div className={containerClasses[valuePosition]}>\n {orderMap[valuePosition]}\n </div>\n );\n});\n\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'rounded-lg border border-border bg-card text-card-foreground shadow-sm',\n className\n )}\n {...props}\n />\n )\n)\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col space-y-1.5 p-6', className)}\n {...props}\n />\n )\n)\nCardHeader.displayName = 'CardHeader'\n\nconst CardTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn('text-2xl font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n )\n)\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n )\n)\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n )\n)\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center p-6 pt-0', className)}\n {...props}\n />\n )\n)\nCardFooter.displayName = 'CardFooter'\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?\n : 'default'\n | 'secondary'\n | 'destructive'\n | 'outline'\n | 'success'\n | 'warning'\n | 'info'\n}\n\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n ({ className, variant = 'default', ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-semibold transition-colors',\n 'focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n 'border-transparent bg-accent text-accent-foreground':\n variant === 'default',\n 'border-transparent bg-muted text-foreground':\n variant === 'secondary',\n 'border-transparent bg-destructive text-destructive-foreground':\n variant === 'destructive',\n 'border border-border text-foreground':\n variant === 'outline',\n 'border border-green-300 bg-green-100 text-green-800':\n variant === 'success',\n 'border border-yellow-300 bg-yellow-100 text-yellow-800':\n variant === 'warning',\n 'border border-blue-300 bg-blue-100 text-blue-800':\n variant === 'info',\n },\n className\n )}\n {...props}\n />\n )\n }\n)\nBadge.displayName = 'Badge'\n\nexport { Badge }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface SeparatorProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical'\n}\n\nconst Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(\n ({ className, orientation = 'horizontal', ...props }, ref) => (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = 'Separator'\n\nexport { Separator }\n","import * as React from 'react'\nimport * as AccordionPrimitive from '@radix-ui/react-accordion'\nimport { cn } from '../utils/cn'\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\n 'border border-border rounded-xl overflow-hidden',\n className\n )}\n {...props}\n />\n))\nAccordionItem.displayName = 'AccordionItem'\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex w-full items-center justify-between bg-muted/50 px-4 py-3 text-left text-sm font-medium transition-colors',\n 'hover:bg-muted',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'data-[state=open]:bg-muted',\n className\n )}\n {...props}\n >\n <span className=\"flex-1\">{children}</span>\n <svg\n className=\"ml-2 h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200 data-[state=open]:rotate-180\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = 'AccordionTrigger'\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(\n 'overflow-hidden text-sm',\n 'data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down',\n className\n )}\n {...props}\n >\n <div className=\"border-t border-border p-4\">{children}</div>\n </AccordionPrimitive.Content>\n))\nAccordionContent.displayName = 'AccordionContent'\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import * as React from 'react'\nimport * as SelectPrimitive from '@radix-ui/react-select'\nimport { cn } from '../../utils/cn'\n\n// Icons\nconst ChevronDownIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n)\n\nconst ChevronUpIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m18 15-6-6-6 6\" />\n </svg>\n)\n\nconst CheckIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n)\n\n// Root\nconst Select = SelectPrimitive.Root\n\n// Group\nconst SelectGroup = SelectPrimitive.Group\n\n// Value\nconst SelectValue = SelectPrimitive.Value\n\n// Trigger\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex h-10 w-full items-center justify-between rounded-md border px-3 py-2 text-sm',\n 'border-input bg-background text-foreground',\n 'ring-offset-background',\n 'placeholder:text-muted-foreground',\n 'focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n '[&>span]:line-clamp-1',\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\n// ScrollUpButton\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className\n )}\n {...props}\n >\n <ChevronUpIcon />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\n// ScrollDownButton\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className\n )}\n {...props}\n >\n <ChevronDownIcon />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName\n\n// Content\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = 'popper', ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n 'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md',\n 'border-border bg-popover text-popover-foreground',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]'\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\n// Label\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn('py-1.5 pl-8 pr-2 text-sm font-semibold', className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\n// Item\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none',\n 'focus:bg-accent focus:text-accent-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\n// Separator\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 my-1 h-px bg-muted', className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\n// Compound component pattern\nconst SelectNamespace = Object.assign(Select, {\n Group: SelectGroup,\n Value: SelectValue,\n Trigger: SelectTrigger,\n Content: SelectContent,\n Label: SelectLabel,\n Item: SelectItem,\n Separator: SelectSeparator,\n ScrollUpButton: SelectScrollUpButton,\n ScrollDownButton: SelectScrollDownButton,\n})\n\nexport {\n SelectNamespace as Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n\n// ============================================\n// Native Select (for simple use cases)\n// ============================================\n\nexport interface NativeSelectProps extends React.SelectHTMLAttributes<HTMLSelectElement> {}\n\nconst NativeSelect = React.forwardRef<HTMLSelectElement, NativeSelectProps>(\n ({ className, children, ...props }, ref) => (\n <select\n ref={ref}\n className={cn(\n 'flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm',\n 'ring-offset-background',\n 'focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n {children}\n </select>\n )\n)\nNativeSelect.displayName = 'NativeSelect'\n\nexport interface NativeSelectOptionProps extends React.OptionHTMLAttributes<HTMLOptionElement> {}\n\nconst NativeSelectOption = React.forwardRef<HTMLOptionElement, NativeSelectOptionProps>(\n ({ className, ...props }, ref) => (\n <option ref={ref} className={cn('py-1.5', className)} {...props} />\n )\n)\nNativeSelectOption.displayName = 'NativeSelectOption'\n\nexport { NativeSelect, NativeSelectOption }\n","import * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { cn } from '../../utils/cn'\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/80',\n 'data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out',\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\ntype DialogSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full'\n\ninterface DialogContentProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n hideCloseButton?: boolean\n size?: DialogSize\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(({ className, children, hideCloseButton = false, size = 'lg', ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-1/2 top-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 p-6 shadow-lg',\n 'bg-popover border border-border text-popover-foreground',\n 'rounded-lg',\n 'data-[state=open]:animate-zoom-in data-[state=closed]:animate-zoom-out',\n 'duration-200',\n size === 'sm' && 'max-w-sm',\n size === 'md' && 'max-w-md',\n size === 'lg' && 'max-w-lg',\n size === 'xl' && 'max-w-xl',\n size === '2xl' && 'max-w-2xl',\n size === 'full' && 'max-w-full',\n className\n )}\n {...props}\n >\n {children}\n {!hideCloseButton && (\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)}\n {...props}\n />\n)\nDialogHeader.displayName = 'DialogHeader'\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n {...props}\n />\n)\nDialogFooter.displayName = 'DialogFooter'\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold leading-none tracking-tight text-foreground', className)}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\n// Compound component pattern\nconst DialogNamespace = Object.assign(Dialog, {\n Trigger: DialogTrigger,\n Portal: DialogPortal,\n Close: DialogClose,\n Overlay: DialogOverlay,\n Content: DialogContent,\n Header: DialogHeader,\n Footer: DialogFooter,\n Title: DialogTitle,\n Description: DialogDescription,\n})\n\nexport {\n DialogNamespace as Dialog,\n DialogTrigger,\n DialogPortal,\n DialogClose,\n DialogOverlay,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","import * as React from 'react'\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// AlertDialog Root\n// ============================================================================\n\nconst AlertDialog = AlertDialogPrimitive.Root\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\n\n// ============================================================================\n// AlertDialog Overlay\n// ============================================================================\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/50',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n />\n))\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\n// ============================================================================\n// AlertDialog Content\n// ============================================================================\n\nexport interface AlertDialogContentProps\n extends React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content> {\n /** Visual variant of the alert dialog */\n variant?: 'default' | 'destructive' | 'success' | 'warning' | 'info'\n /** Whether to show an icon */\n showIcon?: boolean\n}\n\nconst variantStyles = {\n default: {\n icon: 'text-muted-foreground',\n border: '',\n },\n destructive: {\n icon: 'text-red-500',\n border: 'border-l-4 border-l-red-500',\n },\n success: {\n icon: 'text-green-500',\n border: 'border-l-4 border-l-green-500',\n },\n warning: {\n icon: 'text-yellow-500',\n border: 'border-l-4 border-l-yellow-500',\n },\n info: {\n icon: 'text-blue-500',\n border: 'border-l-4 border-l-blue-500',\n },\n}\n\nconst VariantIcons: Record<string, React.FC<{ className?: string }>> = {\n default: ({ className }) => (\n <svg className={className} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4M12 8h.01\" />\n </svg>\n ),\n destructive: ({ className }) => (\n <svg className={className} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m15 9-6 6M9 9l6 6\" />\n </svg>\n ),\n success: ({ className }) => (\n <svg className={className} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m9 12 2 2 4-4\" />\n </svg>\n ),\n warning: ({ className }) => (\n <svg className={className} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <path d=\"M12 9v4M12 17h.01\" />\n </svg>\n ),\n info: ({ className }) => (\n <svg className={className} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4M12 8h.01\" />\n </svg>\n ),\n}\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n AlertDialogContentProps\n>(({ className, variant = 'default', showIcon = true, children, ...props }, ref) => {\n const IconComponent = VariantIcons[variant]\n const styles = variantStyles[variant]\n\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 p-6',\n 'bg-background border border-border shadow-lg rounded-lg',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]',\n 'data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]',\n 'duration-200',\n styles.border,\n className\n )}\n {...props}\n >\n <div className=\"flex gap-4 items-start\">\n {showIcon && (\n <div className={cn('shrink-0 mt-1', styles.icon)}>\n <IconComponent className=\"h-6 w-6\" />\n </div>\n )}\n <div className=\"flex-1\">{children}</div>\n </div>\n </AlertDialogPrimitive.Content>\n </AlertDialogPortal>\n )\n})\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\n// ============================================================================\n// AlertDialog Header\n// ============================================================================\n\nexport interface AlertDialogHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst AlertDialogHeader = React.forwardRef<HTMLDivElement, AlertDialogHeaderProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col space-y-2', className)}\n {...props}\n />\n )\n)\nAlertDialogHeader.displayName = 'AlertDialogHeader'\n\n// ============================================================================\n// AlertDialog Footer\n// ============================================================================\n\nexport interface AlertDialogFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst AlertDialogFooter = React.forwardRef<HTMLDivElement, AlertDialogFooterProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'mt-4 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\n className\n )}\n {...props}\n />\n )\n)\nAlertDialogFooter.displayName = 'AlertDialogFooter'\n\n// ============================================================================\n// AlertDialog Title\n// ============================================================================\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold text-foreground', className)}\n {...props}\n />\n))\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\n// ============================================================================\n// AlertDialog Description\n// ============================================================================\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName\n\n// ============================================================================\n// AlertDialog Action\n// ============================================================================\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium',\n 'ring-offset-background transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'bg-accent text-accent-foreground hover:bg-accent-hover',\n 'h-10 px-4 py-2',\n className\n )}\n {...props}\n />\n))\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\n// ============================================================================\n// AlertDialog Cancel\n// ============================================================================\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium',\n 'ring-offset-background transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'border border-input bg-background hover:bg-muted hover:text-foreground',\n 'h-10 px-4 py-2',\n className\n )}\n {...props}\n />\n))\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\nexport {\n AlertDialog,\n AlertDialogTrigger,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: 'sm' | 'default' | 'lg'\n}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size = 'default', ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\n 'inline-block animate-spin rounded-full border-2 border-solid border-current border-r-transparent motion-reduce:animate-[spin_1.5s_linear_infinite]',\n {\n 'h-4 w-4': size === 'sm',\n 'h-6 w-6': size === 'default',\n 'h-8 w-8': size === 'lg',\n },\n 'text-accent',\n className\n )}\n {...props}\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n )\n }\n)\nSpinner.displayName = 'Spinner'\n\nexport { Spinner }\n","import * as React from \"react\";\nimport { cn } from \"../utils/cn\";\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?:\n | \"default\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"destructive\";\n duration?: number | null; // null = stay until manually closed\n onClose?: () => void;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Variants */\n/* -------------------------------------------------------------------------- */\n\nconst variants = {\n default: {\n iconBg: \"bg-zinc-900\",\n progress: \"bg-zinc-900\",\n textColor: \"text-zinc-900\",\n },\n info: {\n iconBg: \"bg-blue-600\",\n progress: \"bg-blue-600\",\n textColor: \"text-blue-600\",\n },\n success: {\n iconBg: \"bg-emerald-600\",\n progress: \"bg-emerald-600\",\n textColor: \"text-emerald-600\",\n },\n warning: {\n iconBg: \"bg-amber-500\",\n progress: \"bg-amber-500\",\n textColor: \"text-amber-500\",\n },\n error: {\n iconBg: \"bg-rose-600\",\n progress: \"bg-rose-600\",\n textColor: \"text-rose-600\",\n },\n destructive: {\n iconBg: \"bg-rose-700\",\n progress: \"bg-rose-700\",\n textColor: \"text-rose-700\",\n },\n};\n\n/* -------------------------------------------------------------------------- */\n/* Icons */\n/* -------------------------------------------------------------------------- */\n\nconst CheckIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"m5 13 4 4L19 7\" />\n </svg>\n);\n\nconst InfoIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4M12 8h.01\" />\n </svg>\n);\n\nconst WarningIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <path d=\"M12 9v4M12 17h.01\" />\n </svg>\n);\n\nconst XCircleIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m15 9-6 6M9 9l6 6\" />\n </svg>\n);\n\nconst CloseIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n);\n\nconst iconMap = {\n default: InfoIcon,\n info: InfoIcon,\n success: CheckIcon,\n warning: WarningIcon,\n error: XCircleIcon,\n destructive: XCircleIcon,\n};\n\n/* -------------------------------------------------------------------------- */\n/* Alert */\n/* -------------------------------------------------------------------------- */\n\nexport const Alert: React.FC<AlertProps> = ({\n variant = \"default\",\n duration = 100000000000000, // default 4000ms\n onClose,\n className,\n children,\n ...props\n}) => {\n const [visible, setVisible] = React.useState(true);\n const [progress, setProgress] = React.useState(100);\n\n const styles = variants[variant];\n const Icon = iconMap[variant];\n\n // Check if there's an AlertDescription\n const hasDescription = React.Children.toArray(children).some(\n (child) => React.isValidElement(child) && child.type === AlertDescription,\n );\n\n React.useEffect(() => {\n if (duration === null) return; // stay until user closes\n\n const start = Date.now();\n\n const interval = setInterval(() => {\n const elapsed = Date.now() - start;\n const percent = 100 - (elapsed / duration) * 100;\n setProgress(percent);\n\n if (elapsed >= duration) {\n clearInterval(interval);\n handleClose();\n }\n }, 16);\n\n return () => clearInterval(interval);\n }, [duration]);\n\n const handleClose = () => {\n setVisible(false);\n onClose?.();\n };\n\n if (!visible) return null;\n\n return (\n <div\n role=\"alert\"\n className={cn(\n \"relative w-[380px] rounded-xl bg-background border border-border shadow-lg p-4 flex gap-4 items-start overflow-hidden\",\n className,\n )}\n {...props}\n >\n {/* Icon */}\n <div\n className={cn(\n \"flex items-center justify-center h-10 w-10 rounded-full text-white shrink-0\",\n styles.iconBg,\n )}\n >\n <Icon className=\"h-5 w-5\" />\n </div>\n\n {/* Content */}\n <div className={cn(\"flex-1\", !hasDescription && \"flex items-center mt-2\")}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === AlertTitle) {\n return React.cloneElement(child, {\n hasDescription,\n variant,\n } as any);\n }\n return child;\n })}\n </div>\n\n {/* Close Button */}\n <button\n onClick={handleClose}\n className=\"absolute top-3 right-3 text-muted-foreground hover:text-foreground transition\"\n >\n <CloseIcon className=\"h-4 w-4\" />\n </button>\n\n {/* Progress Bar */}\n {duration !== null && (\n <div className=\"absolute bottom-0 left-0 h-1 w-full bg-muted\">\n <div\n className={cn(\"h-full transition-all\", styles.progress)}\n style={{ width: `${progress}%` }}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport interface AlertTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {\n hasDescription?: boolean;\n variant?: string;\n}\n\nexport const AlertTitle: React.FC<AlertTitleProps> = ({\n className,\n children,\n hasDescription = true,\n variant = \"default\",\n ...props\n}) => {\n const styles = variants[variant as keyof typeof variants];\n\n return (\n <h4\n className={cn(\"font-semibold text-sm\", styles.textColor, className)}\n {...props}\n >\n {children}\n </h4>\n );\n};\n\nexport interface AlertDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nexport const AlertDescription: React.FC<AlertDescriptionProps> = ({\n className,\n children,\n ...props\n}) => {\n return (\n <p className={cn(\"text-sm text-muted-foreground mt-1\", className)} {...props}>\n {children}\n </p>\n );\n};\n","import * as React from 'react'\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cn } from '../utils/cn'\n\n// Root\nconst Tabs = TabsPrimitive.Root\n\n// ============================================================================\n// Default (pill) variant\n// ============================================================================\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'inline-flex h-10 items-center justify-center rounded-md p-1',\n 'bg-muted text-muted-foreground',\n className\n )}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium transition-all',\n 'ring-offset-background',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'mt-2',\n 'ring-offset-background',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\n// ============================================================================\n// Underline variant (GitHub-style)\n// ============================================================================\n\nconst UnderlineTabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'inline-flex items-center gap-0 border-b border-border',\n className\n )}\n {...props}\n />\n))\nUnderlineTabsList.displayName = 'UnderlineTabsList'\n\nexport interface UnderlineTabsTriggerProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> {\n /** Optional count badge displayed next to the label */\n count?: number\n}\n\nconst UnderlineTabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n UnderlineTabsTriggerProps\n>(({ className, children, count, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'inline-flex items-center gap-2 whitespace-nowrap px-4 py-2 text-sm font-medium transition-colors',\n 'border-b-2 border-transparent -mb-px',\n 'text-muted-foreground',\n 'hover:text-foreground hover:border-border',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'data-[state=active]:text-foreground data-[state=active]:border-accent',\n className\n )}\n {...props}\n >\n {children}\n {count !== undefined && (\n <span\n className={cn(\n 'inline-flex items-center justify-center rounded-full px-2 py-0.5 text-xs font-medium min-w-[1.25rem]',\n 'bg-muted text-muted-foreground'\n )}\n >\n {count}\n </span>\n )}\n </TabsPrimitive.Trigger>\n))\nUnderlineTabsTrigger.displayName = 'UnderlineTabsTrigger'\n\nconst UnderlineTabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'pt-4',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n )}\n {...props}\n />\n))\nUnderlineTabsContent.displayName = 'UnderlineTabsContent'\n\n// ============================================================================\n// Vertical variant (GitHub Settings sidebar)\n// ============================================================================\n\nconst VerticalTabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Root\n ref={ref}\n orientation=\"vertical\"\n className={cn('flex gap-8', className)}\n {...props}\n />\n))\nVerticalTabs.displayName = 'VerticalTabs'\n\nconst VerticalTabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn('flex flex-col gap-0.5 w-[220px] shrink-0', className)}\n {...props}\n />\n))\nVerticalTabsList.displayName = 'VerticalTabsList'\n\nexport interface VerticalTabsTriggerProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> {\n /** Icon element rendered before the label */\n icon?: React.ReactNode\n}\n\nconst VerticalTabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n VerticalTabsTriggerProps\n>(({ className, children, icon, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex items-center gap-3 rounded-md px-3 py-1.5 text-sm transition-colors text-left w-full',\n 'text-muted-foreground',\n 'border-l-2 border-transparent -ml-px',\n 'hover:bg-muted hover:text-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'data-[state=active]:text-foreground data-[state=active]:font-medium data-[state=active]:bg-muted data-[state=active]:border-l-2 data-[state=active]:border-accent',\n className\n )}\n {...props}\n >\n {icon && <span className=\"size-4 shrink-0 [&>svg]:size-4\">{icon}</span>}\n {children}\n </TabsPrimitive.Trigger>\n))\nVerticalTabsTrigger.displayName = 'VerticalTabsTrigger'\n\nconst VerticalTabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'flex-1 min-w-0',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n )}\n {...props}\n />\n))\nVerticalTabsContent.displayName = 'VerticalTabsContent'\n\n/** Non-interactive section label for grouping vertical tabs */\nexport interface VerticalTabsGroupLabelProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst VerticalTabsGroupLabel = React.forwardRef<HTMLDivElement, VerticalTabsGroupLabelProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'px-3 pt-4 pb-1 text-xs font-semibold text-muted-foreground first:pt-0',\n className\n )}\n {...props}\n />\n )\n)\nVerticalTabsGroupLabel.displayName = 'VerticalTabsGroupLabel'\n\nexport {\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n UnderlineTabsList,\n UnderlineTabsTrigger,\n UnderlineTabsContent,\n VerticalTabs,\n VerticalTabsList,\n VerticalTabsTrigger,\n VerticalTabsContent,\n VerticalTabsGroupLabel,\n}\n","import * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\nimport { cn } from '../utils/cn'\n\n// Tooltip Provider - wrap your app or section with this\nconst TooltipProvider = TooltipPrimitive.Provider\n\n// Tooltip Root\nconst TooltipRoot = TooltipPrimitive.Root\n\n// Tooltip Trigger\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\n// Tooltip Portal\nconst TooltipPortal = TooltipPrimitive.Portal\n\n// Tooltip Arrow\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitive.Arrow\n ref={ref}\n className={cn('fill-popover', className)}\n {...props}\n />\n))\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName\n\n// Tooltip Content\nexport interface TooltipContentProps\n extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> {\n /** Whether to show an arrow pointing to the trigger */\n showArrow?: boolean\n}\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, sideOffset = 4, showArrow = false, children, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 overflow-hidden rounded-md bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md',\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n >\n {children}\n {showArrow && <TooltipArrow />}\n </TooltipPrimitive.Content>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\n// ============================================================================\n// Simple Tooltip - A convenience wrapper for common use cases\n// ============================================================================\n\nexport interface TooltipProps {\n /** The content to show in the tooltip */\n content: React.ReactNode\n /** The element that triggers the tooltip */\n children: React.ReactNode\n /** Side where the tooltip appears */\n side?: 'top' | 'right' | 'bottom' | 'left'\n /** Alignment of the tooltip */\n align?: 'start' | 'center' | 'end'\n /** Delay before showing (ms) */\n delayDuration?: number\n /** Whether the tooltip is open (controlled) */\n open?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Whether the tooltip should be disabled */\n disabled?: boolean\n /** Whether to show an arrow */\n showArrow?: boolean\n /** Additional className for the content */\n className?: string\n}\n\nconst Tooltip = React.forwardRef<HTMLButtonElement, TooltipProps>(\n (\n {\n content,\n children,\n side = 'top',\n align = 'center',\n delayDuration = 200,\n open,\n onOpenChange,\n disabled = false,\n showArrow = false,\n className,\n },\n ref\n ) => {\n if (disabled) {\n return <>{children}</>\n }\n\n return (\n <TooltipProvider>\n <TooltipRoot\n delayDuration={delayDuration}\n open={open}\n onOpenChange={onOpenChange}\n >\n <TooltipTrigger ref={ref} asChild>\n {children}\n </TooltipTrigger>\n <TooltipPortal>\n <TooltipContent\n side={side}\n align={align}\n showArrow={showArrow}\n className={className}\n >\n {content}\n </TooltipContent>\n </TooltipPortal>\n </TooltipRoot>\n </TooltipProvider>\n )\n }\n)\nTooltip.displayName = 'Tooltip'\n\nexport {\n Tooltip,\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipContent,\n TooltipPortal,\n TooltipArrow,\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// Linear Progress\n// ============================================================================\n\nexport interface LinearProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Progress value (0-100). If undefined, shows indeterminate state */\n value?: number\n /** Color variant */\n variant?: 'default' | 'success' | 'warning' | 'error' | 'info'\n /** Size of the progress bar */\n size?: 'sm' | 'md' | 'lg'\n /** Whether to show the value label */\n showValue?: boolean\n /** Custom label format */\n formatValue?: (value: number) => string\n /** Whether to animate (only for determinate progress) */\n animated?: boolean\n}\n\nconst linearSizeClasses = {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n}\n\nconst variantClasses = {\n default: 'bg-primary-500',\n success: 'bg-green-500',\n warning: 'bg-yellow-500',\n error: 'bg-red-500',\n info: 'bg-blue-500',\n}\n\nconst LinearProgress = React.forwardRef<HTMLDivElement, LinearProgressProps>(\n (\n {\n value,\n variant = 'default',\n size = 'md',\n showValue = false,\n formatValue = (v) => `${Math.round(v)}%`,\n animated = true,\n className,\n ...props\n },\n ref\n ) => {\n const isIndeterminate = value === undefined\n\n return (\n <div ref={ref} className={cn('w-full', className)} {...props}>\n <div\n className={cn(\n 'w-full overflow-hidden rounded-full bg-muted',\n linearSizeClasses[size]\n )}\n role=\"progressbar\"\n aria-valuenow={isIndeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n className={cn(\n 'h-full rounded-full',\n variantClasses[variant],\n animated && !isIndeterminate && 'transition-all duration-300 ease-out',\n isIndeterminate && 'animate-indeterminate-progress w-1/3'\n )}\n style={\n !isIndeterminate\n ? { width: `${Math.min(100, Math.max(0, value))}%` }\n : undefined\n }\n />\n </div>\n {showValue && !isIndeterminate && (\n <span className=\"mt-1 text-sm text-muted-foreground\">\n {formatValue(value!)}\n </span>\n )}\n </div>\n )\n }\n)\nLinearProgress.displayName = 'LinearProgress'\n\n// ============================================================================\n// Circular Progress\n// ============================================================================\n\nexport interface CircularProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Progress value (0-100). If undefined, shows indeterminate state */\n value?: number\n /** Color variant */\n variant?: 'default' | 'success' | 'warning' | 'error' | 'info'\n /** Size of the circular progress */\n size?: 'sm' | 'md' | 'lg' | 'xl' | number\n /** Thickness of the progress ring */\n thickness?: number\n /** Whether to show the value in the center */\n showValue?: boolean\n /** Custom label format */\n formatValue?: (value: number) => string\n /** Content to show in the center */\n children?: React.ReactNode\n}\n\nconst circularSizeValues = {\n sm: 24,\n md: 40,\n lg: 56,\n xl: 72,\n}\n\nconst strokeColors = {\n default: 'stroke-primary-500',\n success: 'stroke-green-500',\n warning: 'stroke-yellow-500',\n error: 'stroke-red-500',\n info: 'stroke-blue-500',\n}\n\nconst CircularProgress = React.forwardRef<HTMLDivElement, CircularProgressProps>(\n (\n {\n value,\n variant = 'default',\n size = 'md',\n thickness = 4,\n showValue = false,\n formatValue = (v) => `${Math.round(v)}%`,\n children,\n className,\n ...props\n },\n ref\n ) => {\n const isIndeterminate = value === undefined\n const sizeValue = typeof size === 'number' ? size : circularSizeValues[size]\n const radius = (sizeValue - thickness) / 2\n const circumference = 2 * Math.PI * radius\n const strokeDashoffset = isIndeterminate\n ? 0\n : circumference - (Math.min(100, Math.max(0, value)) / 100) * circumference\n\n return (\n <div\n ref={ref}\n className={cn('relative inline-flex items-center justify-center', className)}\n style={{ width: sizeValue, height: sizeValue }}\n role=\"progressbar\"\n aria-valuenow={isIndeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={100}\n {...props}\n >\n <svg\n className={cn(isIndeterminate && 'animate-spin')}\n width={sizeValue}\n height={sizeValue}\n viewBox={`0 0 ${sizeValue} ${sizeValue}`}\n >\n {/* Background circle */}\n <circle\n className=\"stroke-muted\"\n fill=\"none\"\n strokeWidth={thickness}\n cx={sizeValue / 2}\n cy={sizeValue / 2}\n r={radius}\n />\n {/* Progress circle */}\n <circle\n className={cn(\n strokeColors[variant],\n !isIndeterminate && 'transition-all duration-300 ease-out'\n )}\n fill=\"none\"\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n cx={sizeValue / 2}\n cy={sizeValue / 2}\n r={radius}\n strokeDasharray={circumference}\n strokeDashoffset={isIndeterminate ? circumference * 0.75 : strokeDashoffset}\n transform={`rotate(-90 ${sizeValue / 2} ${sizeValue / 2})`}\n />\n </svg>\n {/* Center content */}\n {(showValue || children) && !isIndeterminate && (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n {children || (\n <span\n className=\"text-foreground font-medium\"\n style={{ fontSize: sizeValue * 0.25 }}\n >\n {formatValue(value!)}\n </span>\n )}\n </div>\n )}\n </div>\n )\n }\n)\nCircularProgress.displayName = 'CircularProgress'\n\n// ============================================================================\n// Progress (alias that defaults to Linear)\n// ============================================================================\n\nexport interface ProgressProps extends LinearProgressProps {}\n\nconst Progress = React.forwardRef<HTMLDivElement, ProgressProps>((props, ref) => (\n <LinearProgress ref={ref} {...props} />\n))\nProgress.displayName = 'Progress'\n\nexport { LinearProgress, CircularProgress, Progress }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn('w-full caption-bottom text-sm', className)}\n {...props}\n />\n </div>\n))\nTable.displayName = 'Table'\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />\n))\nTableHeader.displayName = 'TableHeader'\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n))\nTableBody.displayName = 'TableBody'\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n 'border-t bg-muted/50 font-medium [&>tr]:last:border-b-0',\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = 'TableFooter'\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'border-b border-border transition-colors',\n 'hover:bg-muted/50',\n 'data-[state=selected]:bg-muted',\n className\n )}\n {...props}\n />\n))\nTableRow.displayName = 'TableRow'\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-12 px-4 text-left align-middle font-medium text-muted-foreground',\n '[&:has([role=checkbox])]:pr-0',\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = 'TableHead'\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n 'p-4 align-middle [&:has([role=checkbox])]:pr-0',\n className\n )}\n {...props}\n />\n))\nTableCell.displayName = 'TableCell'\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn('mt-4 text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nTableCaption.displayName = 'TableCaption'\n\n// Compound component pattern\nconst TableNamespace = Object.assign(Table, {\n Header: TableHeader,\n Body: TableBody,\n Footer: TableFooter,\n Row: TableRow,\n Head: TableHead,\n Cell: TableCell,\n Caption: TableCaption,\n})\n\nexport {\n TableNamespace as Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Image source URL */\n src?: string\n /** Alt text for the image */\n alt?: string\n /** Size of the avatar */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n /** Fallback text (usually initials) when no image */\n fallback?: string\n /** Shape of the avatar */\n shape?: 'circle' | 'square'\n /** Whether to show a border */\n bordered?: boolean\n /** Custom fallback element */\n fallbackElement?: React.ReactNode\n}\n\nconst sizeClasses = {\n xs: 'h-6 w-6 text-xs',\n sm: 'h-8 w-8 text-sm',\n md: 'h-10 w-10 text-base',\n lg: 'h-12 w-12 text-lg',\n xl: 'h-16 w-16 text-xl',\n '2xl': 'h-20 w-20 text-2xl',\n}\n\nconst Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n (\n {\n src,\n alt,\n size = 'md',\n fallback,\n shape = 'circle',\n bordered = false,\n fallbackElement,\n className,\n ...props\n },\n ref\n ) => {\n const [imageError, setImageError] = React.useState(false)\n\n // Reset error state when src changes\n React.useEffect(() => {\n setImageError(false)\n }, [src])\n\n const showFallback = !src || imageError\n\n // Generate initials from fallback text\n const getInitials = (text: string) => {\n const words = text.trim().split(' ')\n if (words.length >= 2) {\n return (words[0][0] + words[words.length - 1][0]).toUpperCase()\n }\n return text.slice(0, 2).toUpperCase()\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'relative inline-flex items-center justify-center overflow-hidden bg-muted text-muted-foreground shrink-0',\n sizeClasses[size],\n shape === 'circle' ? 'rounded-full' : 'rounded-md',\n bordered && 'ring-2 ring-background',\n className\n )}\n {...props}\n >\n {!showFallback ? (\n <img\n src={src}\n alt={alt}\n onError={() => setImageError(true)}\n className=\"h-full w-full object-cover\"\n />\n ) : fallbackElement ? (\n fallbackElement\n ) : fallback ? (\n <span className=\"font-medium\">{getInitials(fallback)}</span>\n ) : (\n // Default user icon\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=\"h-1/2 w-1/2\"\n >\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" />\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n )}\n </div>\n )\n }\n)\nAvatar.displayName = 'Avatar'\n\n// Avatar Group for stacking multiple avatars\nexport interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Maximum number of avatars to show */\n max?: number\n /** Size for all avatars in the group */\n size?: AvatarProps['size']\n /** Children should be Avatar components */\n children: React.ReactNode\n}\n\nconst AvatarGroup = React.forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ max, size = 'md', children, className, ...props }, ref) => {\n const childArray = React.Children.toArray(children)\n const visibleChildren = max ? childArray.slice(0, max) : childArray\n const remainingCount = max ? childArray.length - max : 0\n\n return (\n <div\n ref={ref}\n className={cn('flex -space-x-2', className)}\n {...props}\n >\n {visibleChildren.map((child, index) => {\n if (React.isValidElement<AvatarProps>(child)) {\n return React.cloneElement(child, {\n key: index,\n size: child.props.size || size,\n bordered: true,\n className: cn('ring-2 ring-background', child.props.className),\n })\n }\n return child\n })}\n {remainingCount > 0 && (\n <Avatar\n size={size}\n bordered\n fallback={`+${remainingCount}`}\n className=\"bg-muted\"\n />\n )}\n </div>\n )\n }\n)\nAvatarGroup.displayName = 'AvatarGroup'\n\nexport { Avatar, AvatarGroup }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Variant of the skeleton shape */\n variant?: 'text' | 'circular' | 'rectangular' | 'rounded'\n /** Width of the skeleton (can be number for px or string for any CSS value) */\n width?: number | string\n /** Height of the skeleton (can be number for px or string for any CSS value) */\n height?: number | string\n /** Whether to animate the skeleton */\n animation?: 'pulse' | 'wave' | 'none'\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n variant = 'text',\n width,\n height,\n animation = 'pulse',\n className,\n style,\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n text: 'rounded-md',\n circular: 'rounded-full',\n rectangular: 'rounded-none',\n rounded: 'rounded-lg',\n }\n\n const animationClasses = {\n pulse: 'animate-pulse',\n wave: 'animate-shimmer bg-gradient-to-r from-muted via-muted/50 to-muted bg-[length:200%_100%]',\n none: '',\n }\n\n // Default heights based on variant\n const defaultHeight = variant === 'text' ? '1em' : undefined\n\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-muted',\n variantClasses[variant],\n animationClasses[animation],\n className\n )}\n style={{\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : (height ?? defaultHeight),\n ...style,\n }}\n {...props}\n />\n )\n }\n)\nSkeleton.displayName = 'Skeleton'\n\n// Skeleton Text - Multiple lines of text skeleton\nexport interface SkeletonTextProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Number of lines */\n lines?: number\n /** Width of the last line (percentage or 'full') */\n lastLineWidth?: number | 'full'\n /** Gap between lines */\n gap?: 'sm' | 'md' | 'lg'\n /** Animation type */\n animation?: SkeletonProps['animation']\n}\n\nconst SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n (\n {\n lines = 3,\n lastLineWidth = 60,\n gap = 'md',\n animation = 'pulse',\n className,\n ...props\n },\n ref\n ) => {\n const gapClasses = {\n sm: 'space-y-1',\n md: 'space-y-2',\n lg: 'space-y-3',\n }\n\n return (\n <div ref={ref} className={cn(gapClasses[gap], className)} {...props}>\n {Array.from({ length: lines }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"text\"\n animation={animation}\n style={{\n width:\n index === lines - 1 && lastLineWidth !== 'full'\n ? `${lastLineWidth}%`\n : '100%',\n }}\n />\n ))}\n </div>\n )\n }\n)\nSkeletonText.displayName = 'SkeletonText'\n\n// Skeleton Avatar\nexport interface SkeletonAvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Size of the avatar skeleton */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Animation type */\n animation?: SkeletonProps['animation']\n}\n\nconst sizeMap = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 64,\n}\n\nconst SkeletonAvatar = React.forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n ({ size = 'md', animation = 'pulse', className, ...props }, ref) => {\n const sizeValue = sizeMap[size]\n return (\n <Skeleton\n ref={ref}\n variant=\"circular\"\n width={sizeValue}\n height={sizeValue}\n animation={animation}\n className={className}\n {...props}\n />\n )\n }\n)\nSkeletonAvatar.displayName = 'SkeletonAvatar'\n\n// Skeleton Card - Common card skeleton pattern\nexport interface SkeletonCardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Whether to show an image placeholder */\n hasImage?: boolean\n /** Image height */\n imageHeight?: number\n /** Number of text lines */\n lines?: number\n /** Animation type */\n animation?: SkeletonProps['animation']\n}\n\nconst SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n hasImage = true,\n imageHeight = 200,\n lines = 3,\n animation = 'pulse',\n className,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn('rounded-lg border border-border p-4 space-y-4', className)}\n {...props}\n >\n {hasImage && (\n <Skeleton\n variant=\"rounded\"\n height={imageHeight}\n animation={animation}\n />\n )}\n <div className=\"space-y-2\">\n <Skeleton variant=\"text\" width=\"60%\" animation={animation} />\n <SkeletonText lines={lines} animation={animation} />\n </div>\n </div>\n )\n }\n)\nSkeletonCard.displayName = 'SkeletonCard'\n\n// Skeleton Table Row\nexport interface SkeletonTableRowProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Number of columns */\n columns?: number\n /** Animation type */\n animation?: SkeletonProps['animation']\n}\n\nconst SkeletonTableRow = React.forwardRef<HTMLDivElement, SkeletonTableRowProps>(\n ({ columns = 4, animation = 'pulse', className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('flex items-center gap-4 py-3', className)}\n {...props}\n >\n {Array.from({ length: columns }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"text\"\n animation={animation}\n className=\"flex-1\"\n />\n ))}\n </div>\n )\n }\n)\nSkeletonTableRow.displayName = 'SkeletonTableRow'\n\nexport { Skeleton, SkeletonText, SkeletonAvatar, SkeletonCard, SkeletonTableRow }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\nimport { Button } from './button'\n\nexport interface PaginationProps extends React.HTMLAttributes<HTMLElement> {}\n\nconst Pagination = React.forwardRef<HTMLElement, PaginationProps>(\n ({ className, ...props }, ref) => (\n <nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n {...props}\n />\n )\n)\nPagination.displayName = 'Pagination'\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.HTMLAttributes<HTMLUListElement>\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn('flex flex-row items-center gap-1', className)}\n {...props}\n />\n))\nPaginationContent.displayName = 'PaginationContent'\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.LiHTMLAttributes<HTMLLIElement>\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn('', className)} {...props} />\n))\nPaginationItem.displayName = 'PaginationItem'\n\nexport interface PaginationLinkProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n isActive?: boolean\n}\n\nconst PaginationLink = React.forwardRef<HTMLButtonElement, PaginationLinkProps>(\n ({ className, isActive, ...props }, ref) => (\n <Button\n ref={ref}\n variant={isActive ? 'default' : 'outline'}\n size=\"icon\"\n className={cn('h-9 w-9', className)}\n {...props}\n />\n )\n)\nPaginationLink.displayName = 'PaginationLink'\n\nconst PaginationPrevious = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement>\n>(({ className, ...props }, ref) => (\n <Button\n ref={ref}\n variant=\"outline\"\n size=\"default\"\n className={cn('gap-1 pl-2.5', className)}\n {...props}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n <span>Previous</span>\n </Button>\n))\nPaginationPrevious.displayName = 'PaginationPrevious'\n\nconst PaginationNext = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement>\n>(({ className, ...props }, ref) => (\n <Button\n ref={ref}\n variant=\"outline\"\n size=\"default\"\n className={cn('gap-1 pr-2.5', className)}\n {...props}\n >\n <span>Next</span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </Button>\n))\nPaginationNext.displayName = 'PaginationNext'\n\nconst PaginationEllipsis = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n aria-hidden\n className={cn('flex h-9 w-9 items-center justify-center', className)}\n {...props}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"19\" cy=\"12\" r=\"1\" />\n <circle cx=\"5\" cy=\"12\" r=\"1\" />\n </svg>\n <span className=\"sr-only\">More pages</span>\n </span>\n))\nPaginationEllipsis.displayName = 'PaginationEllipsis'\n\n// Compound component pattern\nconst PaginationNamespace = Object.assign(Pagination, {\n Content: PaginationContent,\n Item: PaginationItem,\n Link: PaginationLink,\n Previous: PaginationPrevious,\n Next: PaginationNext,\n Ellipsis: PaginationEllipsis,\n})\n\nexport {\n PaginationNamespace as Pagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n}\n","import * as React from 'react'\nimport { cn } from '../../utils/cn'\n\nexport interface ComboboxOption {\n value: string\n label: string\n disabled?: boolean\n}\n\ntype ComboboxPrimitiveOption = string\ntype ComboboxObjectOption = object\ntype ComboboxOptionInput = ComboboxPrimitiveOption | ComboboxObjectOption\ntype NormalizedOption<T> = {\n value: string\n label: string\n disabled?: boolean\n raw: T\n}\n\n// ============================================================================\n// Single Select Combobox Props\n// ============================================================================\nexport interface ComboboxSingleProps<T extends ComboboxOptionInput = ComboboxOptionInput> {\n options: T[]\n value?: T | null\n defaultValue?: T | null\n onChange?: (value: T | null) => void\n placeholder?: string\n searchPlaceholder?: string\n emptyMessage?: string\n disabled?: boolean\n className?: string\n multiple?: false\n clearable?: boolean\n openOnFocus?: boolean\n inputValue?: string\n onInputChange?: (value: string) => void\n simpleOptions?: boolean\n labelKey?: string\n valueKey?: string\n}\n\n// ============================================================================\n// Multi Select Combobox Props\n// ============================================================================\nexport interface ComboboxMultipleProps<T extends ComboboxOptionInput = ComboboxOptionInput> {\n options: T[]\n value?: T[]\n defaultValue?: T[]\n onChange?: (value: T[]) => void\n placeholder?: string\n searchPlaceholder?: string\n emptyMessage?: string\n disabled?: boolean\n className?: string\n multiple: true\n clearable?: boolean\n openOnFocus?: boolean\n inputValue?: string\n onInputChange?: (value: string) => void\n /** Show select-all option */\n selectAll?: boolean\n /** Label for select-all option */\n selectAllLabel?: string\n simpleOptions?: boolean\n labelKey?: string\n valueKey?: string\n /** Maximum number of items to display as chips before showing \"+N more\" */\n maxDisplayItems?: number\n}\n\nexport type ComboboxProps =\n | ComboboxSingleProps\n | ComboboxMultipleProps\n\n// Type guard to check if props are for multi-select\nfunction isMultipleProps(props: ComboboxProps): props is ComboboxMultipleProps {\n return props.multiple === true\n}\n\nconst Combobox = React.forwardRef<HTMLInputElement, ComboboxProps>(\n (props, ref) => {\n const {\n options,\n placeholder = 'Select option...',\n searchPlaceholder = 'Search...',\n emptyMessage = 'No results found.',\n disabled = false,\n clearable = true,\n openOnFocus = true,\n className,\n } = props\n\n const labelKey = props.labelKey ?? 'label'\n const valueKey = props.valueKey ?? 'value'\n\n const getOptionLabel = React.useCallback(\n (option: ComboboxOptionInput) => {\n if (typeof option === 'string') return option\n const record = option as Record<string, unknown>\n const maybeLabel = record[labelKey]\n return typeof maybeLabel === 'string' ? maybeLabel : String(maybeLabel ?? '')\n },\n [labelKey]\n )\n\n const getOptionValue = React.useCallback(\n (option: ComboboxOptionInput) => {\n if (typeof option === 'string') return option\n const record = option as Record<string, unknown>\n const maybeValue = record[valueKey]\n if (maybeValue !== undefined && maybeValue !== null) {\n return String(maybeValue)\n }\n return getOptionLabel(option)\n },\n [valueKey, getOptionLabel]\n )\n\n const normalizedOptions = React.useMemo<NormalizedOption<ComboboxOptionInput>[]>(\n () =>\n (options ?? []).map((option) => ({\n raw: option,\n label: getOptionLabel(option),\n value: getOptionValue(option),\n disabled: Boolean((option as { disabled?: boolean }).disabled),\n })),\n [options, getOptionLabel, getOptionValue]\n )\n\n const [open, setOpen] = React.useState(false)\n const [internalSearch, setInternalSearch] = React.useState('')\n const containerRef = React.useRef<HTMLDivElement>(null)\n const searchInputRef = React.useRef<HTMLInputElement | null>(null)\n\n // Handle single vs multiple value state\n const isMultiple = isMultipleProps(props)\n const selectAll = isMultiple ? (props.selectAll ?? false) : false\n const selectAllLabel = isMultiple ? (props.selectAllLabel ?? 'Select all') : 'Select all'\n\n // Single select state\n const [internalSingleValue, setInternalSingleValue] = React.useState<\n ComboboxOptionInput | null\n >(!isMultiple ? (props.defaultValue ?? null) : null)\n\n // Multi select state\n const [internalMultiValue, setInternalMultiValue] = React.useState<\n ComboboxOptionInput[]\n >(isMultiple ? (props.defaultValue ?? []) : [])\n\n // Get current value(s)\n const singleValue = !isMultiple\n ? (props.value !== undefined ? (props.value as ComboboxOptionInput | null) : internalSingleValue)\n : null\n const multiValue = isMultiple\n ? (props.value !== undefined ? (props.value as ComboboxOptionInput[]) : internalMultiValue)\n : []\n\n const search = props.inputValue !== undefined ? props.inputValue : internalSearch\n\n const filteredOptions = React.useMemo(() => {\n if (!search) return normalizedOptions\n return normalizedOptions.filter((option) =>\n option.label.toLowerCase().includes(search.toLowerCase())\n )\n }, [normalizedOptions, search])\n\n // Single select: get selected option\n // Multi select: get selected options\n const selectedOptions = isMultiple ? multiValue : []\n const selectedValueKeys = React.useMemo(\n () => new Set(selectedOptions.map((option) => getOptionValue(option))),\n [selectedOptions, getOptionValue]\n )\n const singleValueKey = singleValue ? getOptionValue(singleValue) : null\n const selectableOptions = React.useMemo(\n () => normalizedOptions.filter((option) => !option.disabled),\n [normalizedOptions]\n )\n const allSelected =\n isMultiple &&\n selectableOptions.length > 0 &&\n selectableOptions.every((option) => selectedValueKeys.has(option.value))\n\n const handleSingleSelect = (option: ComboboxOptionInput) => {\n if (!isMultiple) {\n if (props.value === undefined) {\n setInternalSingleValue(option)\n }\n props.onChange?.(option as never)\n setOpen(false)\n if (props.inputValue === undefined) {\n setInternalSearch('')\n }\n }\n }\n\n const handleMultiSelect = (option: ComboboxOptionInput) => {\n if (isMultiple) {\n const optionKey = getOptionValue(option)\n const exists = multiValue.some((item) => getOptionValue(item) === optionKey)\n const newValue = exists\n ? multiValue.filter((item) => getOptionValue(item) !== optionKey)\n : [...multiValue, option]\n\n if (props.value === undefined) {\n setInternalMultiValue(newValue)\n }\n props.onChange?.(newValue as never)\n }\n }\n\n const handleRemoveItem = (optionValue: string, e: React.MouseEvent) => {\n e.stopPropagation()\n if (isMultiple) {\n const newValue = multiValue.filter((v) => getOptionValue(v) !== optionValue)\n if (props.value === undefined) {\n setInternalMultiValue(newValue)\n }\n props.onChange?.(newValue as never)\n }\n }\n\n const handleClearAll = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (isMultiple) {\n if (props.value === undefined) {\n setInternalMultiValue([])\n }\n props.onChange?.([] as never)\n }\n }\n\n const handleSelectAll = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (!isMultiple) return\n const nextValue = allSelected ? [] : selectableOptions\n if (props.value === undefined) {\n setInternalMultiValue(nextValue.map((option) => option.raw))\n }\n props.onChange?.(nextValue.map((option) => option.raw) as never)\n }\n\n const handleClearSingle = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (!isMultiple) {\n if (props.value === undefined) {\n setInternalSingleValue(null)\n }\n props.onChange?.(null)\n if (props.inputValue === undefined) {\n setInternalSearch('')\n }\n }\n }\n\n // Close on click outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [])\n\n React.useEffect(() => {\n if (open) {\n searchInputRef.current?.focus()\n }\n }, [open])\n\n React.useImperativeHandle(\n ref,\n () => searchInputRef.current as HTMLInputElement,\n []\n )\n\n const setSearchRef = (node: HTMLInputElement | null) => {\n searchInputRef.current = node\n }\n\n const maxDisplayItems = isMultiple ? (props.maxDisplayItems ?? 3) : 0\n const displayedOptions = selectedOptions.slice(0, maxDisplayItems)\n const remainingCount = selectedOptions.length - maxDisplayItems\n\n return (\n <div ref={containerRef} className=\"relative\">\n <button\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n onClick={() => setOpen(!open)}\n className={cn(\n 'flex min-h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm',\n 'ring-offset-background',\n 'focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n isMultiple && selectedOptions.length > 0 && 'h-auto',\n className\n )}\n >\n {isMultiple ? (\n <div className=\"flex flex-1 flex-wrap items-center gap-1\">\n {selectedOptions.length === 0 ? (\n <span className=\"text-muted-foreground\">{placeholder}</span>\n ) : (\n <>\n {displayedOptions.map((option) => (\n <span\n key={getOptionValue(option)}\n className=\"inline-flex items-center gap-1 rounded-md bg-muted px-2 py-0.5 text-xs font-medium\"\n >\n {getOptionLabel(option)}\n <button\n type=\"button\"\n onClick={(e) => handleRemoveItem(getOptionValue(option), e)}\n className=\"ml-1 rounded-full hover:bg-background/50\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n </span>\n ))}\n {remainingCount > 0 && (\n <span className=\"text-xs text-muted-foreground\">\n +{remainingCount} more\n </span>\n )}\n </>\n )}\n </div>\n ) : (\n <span className={cn(!singleValue && 'text-muted-foreground')}>\n {singleValue ? getOptionLabel(singleValue) : placeholder}\n </span>\n )}\n\n <div className=\"flex items-center gap-1\">\n {/* Clear all button for multi-select */}\n {isMultiple && selectedOptions.length > 0 && (\n <button\n type=\"button\"\n onClick={handleClearAll}\n className=\"rounded p-0.5 hover:bg-muted\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"opacity-50 hover:opacity-100\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n {!isMultiple && clearable && singleValue && (\n <button\n type=\"button\"\n onClick={handleClearSingle}\n className=\"rounded p-0.5 hover:bg-muted\"\n aria-label=\"Clear selection\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"opacity-50 hover:opacity-100\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\n 'h-4 w-4 shrink-0 opacity-50 transition-transform',\n open && 'rotate-180'\n )}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </div>\n </button>\n\n {open && (\n <div className=\"absolute z-50 mt-1 w-full overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md\">\n <div className=\"flex items-center border-b border-border px-3\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"mr-2 h-4 w-4 shrink-0 opacity-50\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n <input\n ref={setSearchRef}\n className=\"flex h-10 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground\"\n placeholder={searchPlaceholder}\n value={search}\n onChange={(e) => {\n if (props.inputValue === undefined) {\n setInternalSearch(e.target.value)\n }\n props.onInputChange?.(e.target.value)\n }}\n onFocus={() => {\n if (openOnFocus && !disabled) setOpen(true)\n }}\n />\n </div>\n <div className=\"max-h-[300px] overflow-y-auto p-1\">\n {filteredOptions.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n {emptyMessage}\n </div>\n ) : (\n <>\n {isMultiple && selectAll && (\n <button\n type=\"button\"\n onClick={handleSelectAll}\n className={cn(\n 'relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none',\n 'hover:bg-muted hover:text-foreground',\n 'focus:bg-muted focus:text-foreground',\n allSelected && 'bg-muted'\n )}\n >\n <span className=\"absolute left-2 flex h-4 w-4 items-center justify-center\">\n <div\n className={cn(\n 'flex h-4 w-4 items-center justify-center rounded border border-input',\n allSelected && 'bg-accent border-accent'\n )}\n >\n {allSelected && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-3 w-3\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </div>\n </span>\n {selectAllLabel}\n </button>\n )}\n {filteredOptions.map((option) => {\n const isSelected = isMultiple\n ? selectedValueKeys.has(option.value)\n : option.value === singleValueKey\n\n return (\n <button\n key={option.value}\n type=\"button\"\n disabled={option.disabled}\n onClick={() =>\n isMultiple\n ? handleMultiSelect(option.raw)\n : handleSingleSelect(option.raw)\n }\n className={cn(\n 'relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none',\n 'hover:bg-muted hover:text-foreground',\n 'focus:bg-muted focus:text-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n isSelected && 'bg-muted'\n )}\n >\n <span className=\"absolute left-2 flex h-4 w-4 items-center justify-center\">\n {isMultiple ? (\n // Checkbox for multi-select\n <div\n className={cn(\n 'flex h-4 w-4 items-center justify-center rounded border border-input',\n isSelected && 'bg-accent border-accent'\n )}\n >\n {isSelected && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-3 w-3\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </div>\n ) : (\n // Checkmark for single-select\n isSelected && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )\n )}\n </span>\n {option.label}\n </button>\n )\n })}\n </>\n )}\n </div>\n </div>\n )}\n </div>\n )\n }\n)\nCombobox.displayName = 'Combobox'\n\nexport { Combobox }\n","import * as React from 'react'\nimport {\n useReactTable,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n getFilteredRowModel,\n flexRender,\n type ColumnDef,\n type SortingState,\n type RowSelectionState,\n type PaginationState,\n type VisibilityState,\n type ColumnSizingState,\n} from '@tanstack/react-table'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport { cn } from '../../utils/cn'\nimport { Checkbox } from '../checkbox'\nimport { Input } from '../input'\nimport { Button } from '../button'\nimport { Spinner } from '../spinner'\nimport {\n Pagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationEllipsis,\n} from '../pagination'\n\n// MUI DataGrid-compatible column definition\nexport interface GridColDef<TData = any> {\n field: string\n headerName?: string\n width?: number\n minWidth?: number\n maxWidth?: number\n flex?: number\n sortable?: boolean\n filterable?: boolean\n editable?: boolean\n hide?: boolean\n hideable?: boolean // Can this column be hidden by user?\n align?: 'left' | 'center' | 'right'\n headerAlign?: 'left' | 'center' | 'right'\n renderCell?: (params: GridRenderCellParams<TData>) => React.ReactNode\n renderHeader?: (params: GridRenderHeaderParams) => React.ReactNode\n valueGetter?: (params: GridValueGetterParams<TData>) => any\n valueFormatter?: (params: GridValueFormatterParams) => string\n type?: 'string' | 'number' | 'date' | 'dateTime' | 'boolean'\n // Cell content handling\n wrapText?: boolean // If true, text wraps instead of truncating (default: false)\n cellClassName?: string // Custom className for cell content\n // For export exclusion\n export?: boolean\n hideExport?: boolean\n disableExport?: boolean\n}\n\nexport interface GridRenderCellParams<TData = any> {\n row: TData\n value: any\n field: string\n rowIndex: number\n}\n\nexport interface GridRenderHeaderParams {\n field: string\n colDef: GridColDef\n}\n\nexport interface GridValueGetterParams<TData = any> {\n row: TData\n field: string\n}\n\nexport interface GridValueFormatterParams {\n value: any\n}\n\nexport interface PaginationModel {\n page: number\n pageSize: number\n}\n\nexport interface GridRowSelectionModel {\n [key: string]: boolean\n}\n\nexport interface ColumnVisibilityModel {\n [key: string]: boolean\n}\n\n// Density affects row height\ntype GridDensity = 'compact' | 'standard' | 'comfortable'\n\nexport interface DataGridProps<TData = any> {\n // Required\n rows: TData[]\n columns: GridColDef<TData>[]\n\n // Row identification\n getRowId?: (row: TData) => string | number\n\n // Loading state\n loading?: boolean\n\n // Title and toolbar\n title?: string\n toolBar?: boolean\n\n // Selection\n checkboxSelection?: boolean\n rowSelectionModel?: GridRowSelectionModel\n onRowSelectionModelChange?: (model: GridRowSelectionModel) => void\n disableRowSelectionOnClick?: boolean\n\n // Column visibility\n columnVisibilityModel?: ColumnVisibilityModel\n onColumnVisibilityModelChange?: (model: ColumnVisibilityModel) => void\n\n // Pagination\n paginationMode?: 'client' | 'server'\n paginationModel?: PaginationModel\n onPaginationModelChange?: (model: PaginationModel) => void\n rowCount?: number\n pageSizeOptions?: number[]\n\n // Sorting\n sortingMode?: 'client' | 'server'\n /** Initial sort model - array of { field: string, sort: 'asc' | 'desc' } */\n initialSortModel?: { field: string; sort: 'asc' | 'desc' }[]\n /** If true, sorts by createdAt descending (latest first). Requires a 'createdAt' field in rows. */\n sortLatestFirst?: boolean\n\n // Filtering\n filterMode?: 'client' | 'server'\n\n // Appearance\n height?: number | string\n minHeight?: number | string\n maxHeight?: number | string\n density?: GridDensity\n showCellVerticalBorder?: boolean\n showColumnVerticalBorder?: boolean\n hideFooter?: boolean\n hideFooterPagination?: boolean\n\n // Virtualization\n virtualized?: boolean // Enable row virtualization for large datasets\n overscan?: number // Number of rows to render outside visible area (default: 5)\n\n // Cell content handling\n wrapText?: boolean // If true, text wraps instead of truncating (global default, can be overridden per column)\n\n // Row styling\n getRowClassName?: (params: { row: TData; rowIndex: number }) => string\n\n // Custom slot props (for toolbar customization)\n slotProps?: {\n toolbar?: {\n getExportedColumns?: (columns: GridColDef[]) => GridColDef[]\n showQuickFilter?: boolean\n showColumnSelector?: boolean\n showExport?: boolean\n customButtons?: React.ReactNode\n moreOptions?: {\n label: string\n onClick: () => void\n icon?: React.ReactNode\n }[]\n }\n }\n\n // Export configuration\n onExport?: (data: TData[], columns: GridColDef<TData>[]) => void\n exportFileName?: string\n\n // Column resizing\n resizableColumns?: boolean\n onColumnResize?: (columnId: string, width: number) => void\n\n // Custom styles\n className?: string\n sx?: React.CSSProperties\n\n // Actions (edit/delete) - simplified for V0\n actions?: {\n edit?: boolean\n del?: boolean\n }\n\n // Sensitive info - affects export\n sensitiveInfo?: boolean\n\n // Other MUI compatibility props\n autoHeight?: boolean\n disableColumnMenu?: boolean\n disableColumnFilter?: boolean\n disableColumnSelector?: boolean\n disableDensitySelector?: boolean\n}\n\n// Convert MUI column def to TanStack column def\nfunction convertColumns<TData>(\n columns: GridColDef<TData>[],\n checkboxSelection?: boolean\n): ColumnDef<TData>[] {\n const tanstackColumns: ColumnDef<TData>[] = []\n\n // Add checkbox column if enabled\n if (checkboxSelection) {\n tanstackColumns.push({\n id: '__select__',\n header: ({ table }) => (\n <div className=\"flex items-center justify-center\">\n <Checkbox\n checked={table.getIsAllPageRowsSelected()}\n onChange={(e) => table.toggleAllPageRowsSelected(e.target.checked)}\n aria-label=\"Select all\"\n />\n </div>\n ),\n cell: ({ row }) => (\n <div className=\"flex items-center justify-center\">\n <Checkbox\n checked={row.getIsSelected()}\n onChange={(e) => row.toggleSelected(e.target.checked)}\n aria-label=\"Select row\"\n />\n </div>\n ),\n size: 50,\n enableSorting: false,\n enableColumnFilter: false,\n enableHiding: false,\n })\n }\n\n // Convert each MUI column\n columns.forEach((col) => {\n // Skip if column is initially hidden via hide prop\n if (col.hide) return\n\n const tanstackCol: ColumnDef<TData> = {\n id: col.field,\n accessorFn: (row) => {\n if (col.valueGetter) {\n return col.valueGetter({ row, field: col.field })\n }\n return (row as any)[col.field]\n },\n header: col.renderHeader\n ? () => col.renderHeader!({ field: col.field, colDef: col })\n : col.headerName || col.field,\n cell: ({ row, getValue }) => {\n const value = getValue()\n if (col.renderCell) {\n return col.renderCell({\n row: row.original,\n value,\n field: col.field,\n rowIndex: row.index,\n })\n }\n if (col.valueFormatter) {\n return col.valueFormatter({ value })\n }\n return value\n },\n enableSorting: col.sortable !== false,\n enableHiding: col.hideable !== false,\n size: col.width,\n minSize: col.minWidth,\n maxSize: col.maxWidth,\n meta: {\n align: col.align,\n headerAlign: col.headerAlign,\n flex: col.flex,\n headerName: col.headerName || col.field,\n wrapText: col.wrapText,\n cellClassName: col.cellClassName,\n },\n }\n\n tanstackColumns.push(tanstackCol)\n })\n\n return tanstackColumns\n}\n\n// Density to height mapping\nconst densityRowHeights: Record<GridDensity, number> = {\n compact: 36,\n standard: 52,\n comfortable: 68,\n}\n\n// Calculate initial column widths based on flex, width, minWidth, maxWidth (like MUI DataGrid)\n// This only calculates initial widths - resized widths are handled by TanStack Table's columnSizing state\ninterface CalculatedColumnWidth {\n id: string\n width: number\n minWidth: number\n maxWidth: number\n flex?: number\n}\n\nfunction calculateInitialColumnWidths(\n columns: GridColDef[],\n containerWidth: number,\n checkboxSelection: boolean,\n columnSizing: ColumnSizingState // Already resized columns\n): Map<string, CalculatedColumnWidth> {\n const widthMap = new Map<string, CalculatedColumnWidth>()\n\n if (containerWidth <= 0) return widthMap\n\n let remainingWidth = containerWidth\n\n // Reserve space for checkbox column\n if (checkboxSelection) {\n widthMap.set('__select__', { id: '__select__', width: 50, minWidth: 50, maxWidth: 50 })\n remainingWidth -= 50\n }\n\n // First pass: handle fixed width columns and manually resized columns\n const flexColumns: { col: GridColDef; flex: number; minWidth: number; maxWidth: number }[] = []\n let totalFlex = 0\n\n columns.forEach((col) => {\n if (col.hide) return\n\n const minWidth = col.minWidth || 50\n const maxWidth = col.maxWidth || 9999\n\n // If column was manually resized, use that width (it becomes fixed)\n if (columnSizing[col.field]) {\n const resizedWidth = columnSizing[col.field]\n widthMap.set(col.field, {\n id: col.field,\n width: resizedWidth,\n minWidth,\n maxWidth,\n })\n remainingWidth -= resizedWidth\n return\n }\n\n if (col.flex && col.flex > 0) {\n // Flex column - calculate later\n flexColumns.push({ col, flex: col.flex, minWidth, maxWidth })\n totalFlex += col.flex\n remainingWidth -= minWidth // Reserve minimum width\n } else {\n // Fixed width column\n const width = col.width || 100\n const finalWidth = Math.max(minWidth, Math.min(width, maxWidth))\n widthMap.set(col.field, {\n id: col.field,\n width: finalWidth,\n minWidth,\n maxWidth,\n })\n remainingWidth -= finalWidth\n }\n })\n\n // Second pass: distribute remaining width to flex columns (only non-resized ones)\n if (flexColumns.length > 0 && totalFlex > 0) {\n const extraWidth = Math.max(0, remainingWidth)\n\n flexColumns.forEach(({ col, flex, minWidth, maxWidth }) => {\n const proportionalExtra = (flex / totalFlex) * extraWidth\n const calculatedWidth = minWidth + proportionalExtra\n const finalWidth = Math.max(minWidth, Math.min(calculatedWidth, maxWidth))\n widthMap.set(col.field, {\n id: col.field,\n width: finalWidth,\n minWidth,\n maxWidth,\n flex,\n })\n })\n }\n\n return widthMap\n}\n\n// Memoized hook for column widths\nfunction useColumnWidths(\n columns: GridColDef[],\n containerWidth: number,\n checkboxSelection: boolean,\n columnSizing: ColumnSizingState\n): Map<string, CalculatedColumnWidth> {\n return React.useMemo(\n () => calculateInitialColumnWidths(columns, containerWidth, checkboxSelection, columnSizing),\n [columns, containerWidth, checkboxSelection, columnSizing]\n )\n}\n\n// Column resize handle component - uses TanStack Table's resize handler\nconst ColumnResizeHandle = ({\n header,\n isResizing,\n}: {\n header: any\n isResizing: boolean\n}) => {\n return (\n <div\n className={cn(\n // Wider hit area (8px) for easier clicking, but visually narrow\n 'absolute right-0 top-0 h-full w-2 cursor-col-resize select-none touch-none z-10',\n // Visual indicator using pseudo-element\n 'after:absolute after:right-0 after:top-0 after:h-full after:w-[2px]',\n 'hover:after:bg-primary-500',\n isResizing && 'after:bg-primary-500'\n )}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onClick={(e) => e.stopPropagation()}\n />\n )\n}\n\n// Sort icon component\nconst SortIcon = ({ direction }: { direction: 'asc' | 'desc' | false }) => {\n if (!direction) {\n return (\n <svg className=\"ml-1 h-4 w-4 text-muted-foreground/50\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M7 15l5 5 5-5M7 9l5-5 5 5\" />\n </svg>\n )\n }\n return (\n <svg className=\"ml-1 h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n {direction === 'asc' ? <path d=\"M7 14l5-5 5 5\" /> : <path d=\"M7 10l5 5 5-5\" />}\n </svg>\n )\n}\n\n// Column visibility dropdown\nconst ColumnVisibilityDropdown = ({\n table,\n}: {\n table: any\n}) => {\n const [open, setOpen] = React.useState(false)\n const dropdownRef = React.useRef<HTMLDivElement>(null)\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [])\n\n const allColumns = table.getAllLeafColumns().filter((col: any) => col.id !== '__select__')\n\n return (\n <div className=\"relative\" ref={dropdownRef}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setOpen(!open)}\n className=\"h-9 gap-2\"\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M12 3v18M3 12h18\" />\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M3 9h18M3 15h18M9 3v18M15 3v18\" />\n </svg>\n Columns\n </Button>\n\n {open && (\n <div className=\"absolute right-0 top-full mt-1 z-50 min-w-[180px] rounded-md border border-border bg-popover p-2 shadow-md\">\n <div className=\"text-sm font-medium text-foreground mb-2 px-2\">Show/Hide Columns</div>\n <div className=\"max-h-[300px] overflow-auto\">\n {allColumns.map((column: any) => {\n const meta = column.columnDef.meta as any\n const headerName = meta?.headerName || column.id\n\n return (\n <label\n key={column.id}\n className=\"flex items-center gap-2 px-2 py-1.5 hover:bg-muted rounded cursor-pointer\"\n >\n <Checkbox\n checked={column.getIsVisible()}\n onChange={(e) => column.toggleVisibility(e.target.checked)}\n />\n <span className=\"text-sm\">{headerName}</span>\n </label>\n )\n })}\n </div>\n <div className=\"border-t border-border mt-2 pt-2 flex gap-2 px-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"flex-1 h-7 text-xs\"\n onClick={() => table.toggleAllColumnsVisible(true)}\n >\n Show All\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"flex-1 h-7 text-xs\"\n onClick={() => table.toggleAllColumnsVisible(false)}\n >\n Hide All\n </Button>\n </div>\n </div>\n )}\n </div>\n )\n}\n\n// Pagination component using existing Pagination primitives\nconst DataGridPagination = ({\n table,\n pageSizeOptions = [10, 25, 50, 100],\n rowCount,\n paginationMode,\n}: {\n table: any\n pageSizeOptions?: number[]\n rowCount?: number\n paginationMode?: 'client' | 'server'\n}) => {\n const pageCount = paginationMode === 'server' && rowCount\n ? Math.ceil(rowCount / table.getState().pagination.pageSize)\n : table.getPageCount()\n\n const currentPage = table.getState().pagination.pageIndex\n const totalRows = paginationMode === 'server' && rowCount ? rowCount : table.getFilteredRowModel().rows.length\n const pageSize = table.getState().pagination.pageSize\n\n // Generate page numbers to display\n const getPageNumbers = () => {\n const pages: (number | 'ellipsis')[] = []\n const maxVisible = 5\n\n if (pageCount <= maxVisible) {\n for (let i = 0; i < pageCount; i++) pages.push(i)\n } else {\n // Always show first page\n pages.push(0)\n\n if (currentPage > 2) {\n pages.push('ellipsis')\n }\n\n // Show pages around current\n const start = Math.max(1, currentPage - 1)\n const end = Math.min(pageCount - 2, currentPage + 1)\n\n for (let i = start; i <= end; i++) {\n if (!pages.includes(i)) pages.push(i)\n }\n\n if (currentPage < pageCount - 3) {\n pages.push('ellipsis')\n }\n\n // Always show last page\n if (!pages.includes(pageCount - 1)) {\n pages.push(pageCount - 1)\n }\n }\n\n return pages\n }\n\n const startRow = currentPage * pageSize + 1\n const endRow = Math.min((currentPage + 1) * pageSize, totalRows)\n\n return (\n <div className=\"flex items-center justify-end gap-4 px-4 py-3 border-t border-border bg-background\">\n {/* Rows per page */}\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground whitespace-nowrap\">\n <span>Rows per page:</span>\n <select\n value={pageSize}\n onChange={(e) => table.setPageSize(Number(e.target.value))}\n className=\"h-8 rounded-md border border-border bg-background px-2 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-ring\"\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n\n {/* Row count info */}\n <span className=\"text-sm text-muted-foreground whitespace-nowrap\">\n {startRow}-{endRow} of {totalRows}\n </span>\n\n {/* Pagination controls using existing components */}\n <Pagination className=\"mx-0 w-auto\">\n <PaginationContent>\n {/* First page */}\n <PaginationItem>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M11 17l-5-5 5-5M18 17l-5-5 5-5\" />\n </svg>\n </Button>\n </PaginationItem>\n\n {/* Previous page */}\n <PaginationItem>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M15 18l-6-6 6-6\" />\n </svg>\n </Button>\n </PaginationItem>\n\n {/* Page numbers */}\n {getPageNumbers().map((page, idx) =>\n page === 'ellipsis' ? (\n <PaginationItem key={`ellipsis-${idx}`}>\n <PaginationEllipsis />\n </PaginationItem>\n ) : (\n <PaginationItem key={page}>\n <PaginationLink\n isActive={page === currentPage}\n onClick={() => table.setPageIndex(page)}\n >\n {page + 1}\n </PaginationLink>\n </PaginationItem>\n )\n )}\n\n {/* Next page */}\n <PaginationItem>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n </Button>\n </PaginationItem>\n\n {/* Last page */}\n <PaginationItem>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.setPageIndex(pageCount - 1)}\n disabled={!table.getCanNextPage()}\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M13 17l5-5-5-5M6 17l5-5-5-5\" />\n </svg>\n </Button>\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n </div>\n )\n}\n\n// Export dropdown component\nconst ExportDropdown = ({\n onExport,\n rows,\n columns,\n fileName = 'data-export',\n}: {\n onExport?: (data: any[], columns: GridColDef[]) => void\n rows: any[]\n columns: GridColDef[]\n fileName?: string\n}) => {\n const [open, setOpen] = React.useState(false)\n const dropdownRef = React.useRef<HTMLDivElement>(null)\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [])\n\n const exportToCSV = () => {\n const visibleColumns = columns.filter(col => !col.hide && !col.disableExport && !col.hideExport)\n const headers = visibleColumns.map(col => col.headerName || col.field)\n const csvRows = [headers.join(',')]\n\n rows.forEach(row => {\n const values = visibleColumns.map(col => {\n // Use valueGetter if available, otherwise use direct field access\n let value;\n if (col.valueGetter) {\n value = col.valueGetter({ row, field: col.field });\n } else {\n value = row[col.field];\n }\n // Escape quotes and wrap in quotes if contains comma\n const stringValue = String(value ?? '')\n if (stringValue.includes(',') || stringValue.includes('\"') || stringValue.includes('\\n')) {\n return `\"${stringValue.replace(/\"/g, '\"\"')}\"`\n }\n return stringValue\n })\n csvRows.push(values.join(','))\n })\n\n const csvContent = csvRows.join('\\n')\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.download = `${fileName}.csv`\n link.click()\n URL.revokeObjectURL(link.href)\n setOpen(false)\n }\n\n const handleCustomExport = () => {\n if (onExport) {\n onExport(rows, columns)\n }\n setOpen(false)\n }\n\n return (\n <div className=\"relative\" ref={dropdownRef}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setOpen(!open)}\n className=\"h-9 gap-2\"\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"7 10 12 15 17 10\" />\n <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\" />\n </svg>\n Export\n </Button>\n\n {open && (\n <div className=\"absolute right-0 top-full mt-1 z-50 min-w-[140px] rounded-md border border-border bg-popover p-1 shadow-md\">\n <button\n className=\"flex w-full items-center gap-2 rounded px-3 py-2 text-sm hover:bg-muted\"\n onClick={exportToCSV}\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n </svg>\n Export CSV\n </button>\n {onExport && (\n <button\n className=\"flex w-full items-center gap-2 rounded px-3 py-2 text-sm hover:bg-muted\"\n onClick={handleCustomExport}\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\" />\n </svg>\n Custom Export\n </button>\n )}\n </div>\n )}\n </div>\n )\n}\n\n// More options dropdown component\nconst MoreOptionsDropdown = ({\n options,\n}: {\n options: { label: string; onClick: () => void; icon?: React.ReactNode }[]\n}) => {\n const [open, setOpen] = React.useState(false)\n const dropdownRef = React.useRef<HTMLDivElement>(null)\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [])\n\n if (options.length === 0) return null\n\n return (\n <div className=\"relative\" ref={dropdownRef}>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => setOpen(!open)}\n className=\"h-9 w-9\"\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"12\" cy=\"5\" r=\"1\" />\n <circle cx=\"12\" cy=\"19\" r=\"1\" />\n </svg>\n </Button>\n\n {open && (\n <div className=\"absolute right-0 top-full mt-1 z-50 min-w-[160px] rounded-md border border-border bg-popover p-1 shadow-md\">\n {options.map((option, index) => (\n <button\n key={index}\n className=\"flex w-full items-center gap-2 rounded px-3 py-2 text-sm hover:bg-muted\"\n onClick={() => {\n option.onClick()\n setOpen(false)\n }}\n >\n {option.icon}\n {option.label}\n </button>\n ))}\n </div>\n )}\n </div>\n )\n}\n\n// Toolbar component\nconst DataGridToolbar = ({\n title,\n globalFilter,\n setGlobalFilter,\n showQuickFilter = true,\n showColumnSelector = true,\n showExport = true,\n table,\n rows,\n columns,\n onExport,\n exportFileName,\n customButtons,\n moreOptions = [],\n}: {\n title?: string\n globalFilter: string\n setGlobalFilter: (value: string) => void\n showQuickFilter?: boolean\n showColumnSelector?: boolean\n showExport?: boolean\n table: any\n rows: any[]\n columns: GridColDef[]\n onExport?: (data: any[], columns: GridColDef[]) => void\n exportFileName?: string\n customButtons?: React.ReactNode\n moreOptions?: { label: string; onClick: () => void; icon?: React.ReactNode }[]\n}) => {\n return (\n <div className=\"flex items-center justify-between px-4 py-3 border-b border-border bg-background\">\n {title && (\n <h3 className=\"text-lg font-semibold text-foreground\">{title}</h3>\n )}\n <div className=\"flex items-center gap-2 ml-auto\">\n {showQuickFilter && (\n <Input\n placeholder=\"Search...\"\n value={globalFilter ?? ''}\n onChange={(e) => setGlobalFilter(e.target.value)}\n className=\"h-9 w-64\"\n />\n )}\n {showColumnSelector && (\n <ColumnVisibilityDropdown table={table} />\n )}\n {showExport && (\n <ExportDropdown\n onExport={onExport}\n rows={rows}\n columns={columns}\n fileName={exportFileName}\n />\n )}\n {customButtons}\n {moreOptions.length > 0 && (\n <MoreOptionsDropdown options={moreOptions} />\n )}\n </div>\n </div>\n )\n}\n\n// Row renderer component for both virtualized and non-virtualized modes\ninterface RowRendererProps {\n row: any\n rowIndex: number\n rowHeight: number\n showCellVerticalBorder: boolean\n checkboxSelection: boolean\n disableRowSelectionOnClick: boolean\n getRowClassName?: (params: { row: any; rowIndex: number }) => string\n style?: React.CSSProperties\n globalWrapText?: boolean\n columnWidths: Map<string, CalculatedColumnWidth>\n}\n\nconst RowRenderer = ({\n row,\n rowIndex,\n rowHeight,\n showCellVerticalBorder,\n checkboxSelection,\n disableRowSelectionOnClick,\n getRowClassName,\n style,\n globalWrapText = false,\n columnWidths,\n}: RowRendererProps) => {\n const customClassName = getRowClassName?.({ row: row.original, rowIndex })\n\n return (\n <tr\n key={row.id}\n className={cn(\n 'border-b border-border transition-colors hover:bg-muted/50',\n row.getIsSelected() && 'bg-accent/10',\n customClassName\n )}\n data-state={row.getIsSelected() ? 'selected' : undefined}\n style={style}\n onClick={() => {\n if (!disableRowSelectionOnClick && checkboxSelection) {\n row.toggleSelected()\n }\n }}\n >\n {row.getVisibleCells().map((cell: any) => {\n const meta = cell.column.columnDef.meta as any\n const align = meta?.align || 'left'\n // Column-level wrapText overrides global setting\n const wrapText = meta?.wrapText !== undefined ? meta.wrapText : globalWrapText\n const cellClassName = meta?.cellClassName\n\n // columnWidths already incorporates resized widths from columnSizing\n const colWidth = columnWidths.get(cell.column.id)\n const width = colWidth?.width || cell.column.getSize()\n\n return (\n <td\n key={cell.id}\n className={cn(\n 'px-4 overflow-hidden',\n showCellVerticalBorder && 'border-r last:border-r-0 border-border'\n )}\n style={{\n height: wrapText ? 'auto' : rowHeight,\n minHeight: rowHeight,\n textAlign: align,\n width,\n maxWidth: colWidth?.maxWidth || width,\n minWidth: colWidth?.minWidth || cell.column.columnDef.minSize,\n }}\n >\n <div\n className={cn(\n wrapText ? 'whitespace-normal break-words' : 'truncate',\n cellClassName\n )}\n title={\n // Show tooltip for truncated simple text values\n !wrapText && (typeof cell.getValue() === 'string' || typeof cell.getValue() === 'number')\n ? String(cell.getValue())\n : undefined\n }\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </div>\n </td>\n )\n })}\n </tr>\n )\n}\n\n// Virtualized table body component\ninterface VirtualizedTableBodyProps {\n table: any\n rowHeight: number\n showCellVerticalBorder: boolean\n checkboxSelection: boolean\n disableRowSelectionOnClick: boolean\n getRowClassName?: (params: { row: any; rowIndex: number }) => string\n overscan: number\n parentRef: React.RefObject<HTMLDivElement>\n globalWrapText?: boolean\n columnWidths: Map<string, CalculatedColumnWidth>\n}\n\nconst VirtualizedTableBody = ({\n table,\n rowHeight,\n showCellVerticalBorder,\n checkboxSelection,\n disableRowSelectionOnClick,\n getRowClassName,\n overscan,\n parentRef,\n globalWrapText = false,\n columnWidths,\n}: VirtualizedTableBodyProps) => {\n const rows = table.getRowModel().rows\n\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement: () => parentRef.current,\n estimateSize: () => rowHeight,\n overscan,\n })\n\n const virtualRows = virtualizer.getVirtualItems()\n\n if (rows.length === 0) {\n return (\n <tbody>\n <tr>\n <td\n colSpan={table.getVisibleLeafColumns().length}\n className=\"h-32 text-center text-muted-foreground\"\n >\n No data available\n </td>\n </tr>\n </tbody>\n )\n }\n\n // Calculate padding for virtual scroll\n const paddingTop = virtualRows.length > 0 ? virtualRows[0].start : 0\n const paddingBottom = virtualRows.length > 0\n ? virtualizer.getTotalSize() - (virtualRows[virtualRows.length - 1].end)\n : 0\n\n return (\n <tbody>\n {/* Top spacer row */}\n {paddingTop > 0 && (\n <tr>\n <td\n colSpan={table.getVisibleLeafColumns().length}\n style={{ height: paddingTop, padding: 0, border: 'none' }}\n />\n </tr>\n )}\n {/* Visible rows */}\n {virtualRows.map((virtualRow) => {\n const row = rows[virtualRow.index]\n return (\n <RowRenderer\n key={row.id}\n row={row}\n rowIndex={virtualRow.index}\n rowHeight={rowHeight}\n showCellVerticalBorder={showCellVerticalBorder}\n checkboxSelection={checkboxSelection}\n disableRowSelectionOnClick={disableRowSelectionOnClick}\n getRowClassName={getRowClassName}\n globalWrapText={globalWrapText}\n columnWidths={columnWidths}\n />\n )\n })}\n {/* Bottom spacer row */}\n {paddingBottom > 0 && (\n <tr>\n <td\n colSpan={table.getVisibleLeafColumns().length}\n style={{ height: paddingBottom, padding: 0, border: 'none' }}\n />\n </tr>\n )}\n </tbody>\n )\n}\n\n// Standard table body component\ninterface StandardTableBodyProps {\n table: any\n rowHeight: number\n showCellVerticalBorder: boolean\n checkboxSelection: boolean\n disableRowSelectionOnClick: boolean\n getRowClassName?: (params: { row: any; rowIndex: number }) => string\n globalWrapText?: boolean\n columnWidths: Map<string, CalculatedColumnWidth>\n}\n\nconst StandardTableBody = ({\n table,\n rowHeight,\n showCellVerticalBorder,\n checkboxSelection,\n disableRowSelectionOnClick,\n getRowClassName,\n globalWrapText = false,\n columnWidths,\n}: StandardTableBodyProps) => {\n const rows = table.getRowModel().rows\n\n if (rows.length === 0) {\n return (\n <tbody>\n <tr>\n <td\n colSpan={table.getVisibleLeafColumns().length}\n className=\"h-32 text-center text-muted-foreground\"\n >\n No data available\n </td>\n </tr>\n </tbody>\n )\n }\n\n return (\n <tbody>\n {rows.map((row: any, rowIndex: number) => (\n <RowRenderer\n key={row.id}\n row={row}\n rowIndex={rowIndex}\n rowHeight={rowHeight}\n showCellVerticalBorder={showCellVerticalBorder}\n checkboxSelection={checkboxSelection}\n disableRowSelectionOnClick={disableRowSelectionOnClick}\n getRowClassName={getRowClassName}\n globalWrapText={globalWrapText}\n columnWidths={columnWidths}\n />\n ))}\n </tbody>\n )\n}\n\nexport function DataGrid<TData extends Record<string, any>>({\n rows,\n columns,\n getRowId,\n loading = false,\n title,\n toolBar = false,\n checkboxSelection = false,\n rowSelectionModel,\n onRowSelectionModelChange,\n disableRowSelectionOnClick = false,\n columnVisibilityModel,\n onColumnVisibilityModelChange,\n paginationMode = 'client',\n paginationModel,\n onPaginationModelChange,\n rowCount,\n pageSizeOptions = [10, 25, 50, 100],\n sortingMode = 'client',\n initialSortModel,\n sortLatestFirst = false,\n filterMode = 'client',\n height = 400,\n minHeight,\n maxHeight,\n density = 'standard',\n showCellVerticalBorder = false,\n showColumnVerticalBorder = false,\n hideFooter = false,\n hideFooterPagination = false,\n virtualized = false,\n overscan = 5,\n wrapText = false,\n getRowClassName,\n slotProps,\n className,\n sx,\n autoHeight = false,\n disableColumnSelector = false,\n onExport,\n exportFileName = 'data-export',\n resizableColumns = false,\n onColumnResize,\n}: DataGridProps<TData>) {\n // Refs\n const tableContainerRef = React.useRef<HTMLDivElement>(null)\n\n // Compute initial sorting state\n const computedInitialSort = React.useMemo<SortingState>(() => {\n if (initialSortModel && initialSortModel.length > 0) {\n return initialSortModel.map((s) => ({ id: s.field, desc: s.sort === 'desc' }))\n }\n if (sortLatestFirst) {\n return [{ id: 'createdAt', desc: true }]\n }\n return []\n }, []) // Only compute once on mount\n\n // State\n const [sorting, setSorting] = React.useState<SortingState>(computedInitialSort)\n const [globalFilter, setGlobalFilter] = React.useState('')\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>(\n rowSelectionModel || {}\n )\n const [pagination, setPagination] = React.useState<PaginationState>({\n pageIndex: paginationModel?.page || 0,\n pageSize: paginationModel?.pageSize || 10,\n })\n const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>(\n columnVisibilityModel || {}\n )\n const [containerWidth, setContainerWidth] = React.useState(0)\n // TanStack Table's column sizing state - stores resized column widths\n const [columnSizing, setColumnSizing] = React.useState<ColumnSizingState>({})\n\n // Observe container width for flex column calculations\n React.useEffect(() => {\n const container = tableContainerRef.current\n if (!container) return\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerWidth(entry.contentRect.width)\n }\n })\n\n resizeObserver.observe(container)\n // Set initial width\n setContainerWidth(container.clientWidth)\n\n return () => resizeObserver.disconnect()\n }, [])\n\n // Calculate column widths based on flex, width, minWidth, maxWidth\n // Pass columnSizing so resized columns become fixed and don't affect flex distribution\n const columnWidths = useColumnWidths(columns, containerWidth, checkboxSelection, columnSizing)\n\n // Convert MUI columns to TanStack columns\n const tanstackColumns = React.useMemo(\n () => convertColumns(columns, checkboxSelection),\n [columns, checkboxSelection]\n )\n\n // Sync external pagination model\n React.useEffect(() => {\n if (paginationModel) {\n setPagination({\n pageIndex: paginationModel.page,\n pageSize: paginationModel.pageSize,\n })\n }\n }, [paginationModel?.page, paginationModel?.pageSize])\n\n // Sync external row selection\n React.useEffect(() => {\n if (rowSelectionModel) {\n setRowSelection(rowSelectionModel)\n }\n }, [rowSelectionModel])\n\n // Sync external column visibility\n React.useEffect(() => {\n if (columnVisibilityModel) {\n setColumnVisibility(columnVisibilityModel)\n }\n }, [columnVisibilityModel])\n\n // Create table instance\n // When virtualized, disable pagination to show all rows\n const table = useReactTable({\n data: rows,\n columns: tanstackColumns,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: virtualized ? undefined : (paginationMode === 'client' ? getPaginationRowModel() : undefined),\n getSortedRowModel: sortingMode === 'client' ? getSortedRowModel() : undefined,\n getFilteredRowModel: filterMode === 'client' ? getFilteredRowModel() : undefined,\n getRowId: getRowId ? (row) => String(getRowId(row)) : undefined,\n state: {\n sorting,\n globalFilter,\n rowSelection,\n pagination: virtualized ? undefined : pagination,\n columnVisibility,\n columnSizing,\n },\n onSortingChange: setSorting,\n onGlobalFilterChange: setGlobalFilter,\n onRowSelectionChange: (updater) => {\n const newValue = typeof updater === 'function' ? updater(rowSelection) : updater\n setRowSelection(newValue)\n onRowSelectionModelChange?.(newValue)\n },\n onPaginationChange: virtualized ? undefined : (updater) => {\n const newValue = typeof updater === 'function' ? updater(pagination) : updater\n setPagination(newValue)\n onPaginationModelChange?.({ page: newValue.pageIndex, pageSize: newValue.pageSize })\n },\n onColumnVisibilityChange: (updater) => {\n const newValue = typeof updater === 'function' ? updater(columnVisibility) : updater\n setColumnVisibility(newValue)\n onColumnVisibilityModelChange?.(newValue)\n },\n // Column resizing - use TanStack Table's built-in handling\n enableColumnResizing: resizableColumns,\n columnResizeMode: 'onChange', // Real-time resize (vs 'onEnd' which only updates on mouse up)\n onColumnSizingChange: (updater) => {\n const newValue = typeof updater === 'function' ? updater(columnSizing) : updater\n setColumnSizing(newValue)\n // Notify external callback of resize changes\n if (onColumnResize) {\n Object.entries(newValue).forEach(([columnId, width]) => {\n if (columnSizing[columnId] !== width) {\n onColumnResize(columnId, width)\n }\n })\n }\n },\n enableRowSelection: checkboxSelection,\n manualPagination: virtualized ? true : paginationMode === 'server',\n manualSorting: sortingMode === 'server',\n manualFiltering: filterMode === 'server',\n pageCount: virtualized ? undefined : (paginationMode === 'server' && rowCount\n ? Math.ceil(rowCount / pagination.pageSize)\n : undefined),\n })\n\n const rowHeight = densityRowHeights[density]\n const showQuickFilter = slotProps?.toolbar?.showQuickFilter !== false\n const showColumnSelector = !disableColumnSelector && slotProps?.toolbar?.showColumnSelector !== false\n const showExport = slotProps?.toolbar?.showExport !== false\n const customButtons = slotProps?.toolbar?.customButtons\n const moreOptions = slotProps?.toolbar?.moreOptions || []\n\n // Calculate container style\n const containerStyle: React.CSSProperties = {\n ...sx,\n }\n\n if (!autoHeight) {\n containerStyle.height = height\n if (minHeight) containerStyle.minHeight = minHeight\n if (maxHeight) containerStyle.maxHeight = maxHeight\n }\n\n return (\n <div\n className={cn(\n 'rounded-lg border border-border bg-background overflow-hidden flex flex-col',\n className\n )}\n style={containerStyle}\n >\n {/* Toolbar */}\n {toolBar && (\n <DataGridToolbar\n title={title}\n globalFilter={globalFilter}\n setGlobalFilter={setGlobalFilter}\n showQuickFilter={showQuickFilter}\n showColumnSelector={showColumnSelector}\n showExport={showExport}\n table={table}\n rows={rows}\n columns={columns}\n onExport={onExport}\n exportFileName={exportFileName}\n customButtons={customButtons}\n moreOptions={moreOptions}\n />\n )}\n\n {/* Table container */}\n <div\n ref={tableContainerRef}\n className=\"relative flex-1 overflow-auto\"\n >\n {/* Loading overlay */}\n {loading && (\n <div className=\"absolute inset-0 bg-background/80 flex items-center justify-center z-10\">\n <Spinner size=\"lg\" />\n </div>\n )}\n\n <table className=\"w-full border-collapse table-fixed\">\n {/* Column group for width control */}\n <colgroup>\n {table.getVisibleLeafColumns().map((column) => {\n // columnWidths already incorporates columnSizing (resized widths)\n const colWidth = columnWidths.get(column.id)\n return (\n <col\n key={column.id}\n style={{\n width: colWidth?.width || column.getSize(),\n minWidth: colWidth?.minWidth || column.columnDef.minSize,\n maxWidth: colWidth?.maxWidth || column.columnDef.maxSize,\n }}\n />\n )\n })}\n </colgroup>\n <thead className=\"sticky top-0 z-[1]\">\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id} className=\"bg-muted\">\n {headerGroup.headers.map((header) => {\n const meta = header.column.columnDef.meta as any\n const align = meta?.headerAlign || meta?.align || 'left'\n const colWidth = columnWidths.get(header.column.id)\n // columnWidths already incorporates columnSizing (resized widths)\n const effectiveWidth = colWidth?.width || header.getSize()\n\n return (\n <th\n key={header.id}\n className={cn(\n 'px-4 text-left font-medium text-muted-foreground border-b border-border bg-muted overflow-hidden relative',\n showColumnVerticalBorder && 'border-r last:border-r-0',\n header.column.getCanSort() && 'cursor-pointer select-none hover:bg-muted/80',\n // Add cursor class when resizing\n header.column.getIsResizing() && 'cursor-col-resize'\n )}\n style={{\n height: rowHeight,\n width: effectiveWidth,\n minWidth: colWidth?.minWidth || header.column.columnDef.minSize,\n maxWidth: colWidth?.maxWidth || header.column.columnDef.maxSize,\n textAlign: align,\n }}\n onClick={header.column.getToggleSortingHandler()}\n >\n <div className={cn(\n 'flex items-center gap-1 truncate',\n align === 'center' && 'justify-center',\n align === 'right' && 'justify-end'\n )}>\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n {header.column.getCanSort() && (\n <SortIcon direction={header.column.getIsSorted()} />\n )}\n </div>\n {resizableColumns && header.column.id !== '__select__' && (\n <ColumnResizeHandle\n header={header}\n isResizing={header.column.getIsResizing()}\n />\n )}\n </th>\n )\n })}\n </tr>\n ))}\n </thead>\n\n {virtualized ? (\n <VirtualizedTableBody\n table={table}\n rowHeight={rowHeight}\n showCellVerticalBorder={showCellVerticalBorder}\n checkboxSelection={checkboxSelection}\n disableRowSelectionOnClick={disableRowSelectionOnClick}\n getRowClassName={getRowClassName}\n overscan={overscan}\n parentRef={tableContainerRef as React.RefObject<HTMLDivElement>}\n globalWrapText={wrapText}\n columnWidths={columnWidths}\n />\n ) : (\n <StandardTableBody\n table={table}\n rowHeight={rowHeight}\n showCellVerticalBorder={showCellVerticalBorder}\n checkboxSelection={checkboxSelection}\n disableRowSelectionOnClick={disableRowSelectionOnClick}\n getRowClassName={getRowClassName}\n globalWrapText={wrapText}\n columnWidths={columnWidths}\n />\n )}\n </table>\n </div>\n\n {/* Footer with pagination - only show when not virtualized */}\n {!virtualized && !hideFooter && !hideFooterPagination && (\n <DataGridPagination\n table={table}\n pageSizeOptions={pageSizeOptions}\n rowCount={rowCount}\n paginationMode={paginationMode}\n />\n )}\n\n {/* Footer info for virtualized mode */}\n {virtualized && !hideFooter && (\n <div className=\"flex items-center justify-end gap-4 px-4 py-3 border-t border-border bg-background\">\n <span className=\"text-sm text-muted-foreground whitespace-nowrap\">\n {table.getFilteredRowModel().rows.length} total rows (virtualized)\n </span>\n </div>\n )}\n </div>\n )\n}\n\nDataGrid.displayName = 'DataGrid'\n\n// Also export as DataGridV0 for clarity\nexport { DataGrid as DataGridV0 }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// List - Container for list items\n// ============================================================================\n\nexport interface ListProps extends React.HTMLAttributes<HTMLUListElement> {\n /** Whether the list has dividers between items */\n dividers?: boolean\n /** Padding for each list item */\n dense?: boolean\n /** Whether items are clickable (adds hover styles) */\n clickable?: boolean\n}\n\nconst List = React.forwardRef<HTMLUListElement, ListProps>(\n ({ dividers = false, dense = false, clickable = false, className, ...props }, ref) => (\n <ul\n ref={ref}\n role=\"list\"\n data-dividers={dividers}\n data-dense={dense}\n data-clickable={clickable}\n className={cn('flex flex-col', className)}\n {...props}\n />\n )\n)\nList.displayName = 'List'\n\n// ============================================================================\n// ListItem - Individual item in a list\n// ============================================================================\n\nexport interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {\n /** Whether this item is selected/active */\n selected?: boolean\n /** Whether this item is disabled */\n disabled?: boolean\n /** Whether this item is clickable */\n clickable?: boolean\n /** Leading element (icon, avatar, etc.) */\n leading?: React.ReactNode\n /** Trailing element (icon, action, etc.) */\n trailing?: React.ReactNode\n /** Secondary action element */\n secondaryAction?: React.ReactNode\n}\n\nconst ListItem = React.forwardRef<HTMLLIElement, ListItemProps>(\n (\n {\n selected = false,\n disabled = false,\n clickable = false,\n leading,\n trailing,\n secondaryAction,\n className,\n children,\n ...props\n },\n ref\n ) => (\n <li\n ref={ref}\n role={clickable ? 'button' : undefined}\n tabIndex={clickable && !disabled ? 0 : undefined}\n aria-selected={selected}\n aria-disabled={disabled}\n className={cn(\n 'flex items-center gap-3 px-4 py-3',\n 'border-b border-border last:border-b-0',\n '[ul[data-dividers=\"false\"]_&]:border-b-0',\n '[ul[data-dense=\"true\"]_&]:py-2 [ul[data-dense=\"true\"]_&]:px-3',\n clickable && !disabled && [\n 'cursor-pointer',\n 'hover:bg-muted',\n 'focus:outline-none focus:bg-muted',\n ],\n '[ul[data-clickable=\"true\"]_&]:cursor-pointer [ul[data-clickable=\"true\"]_&]:hover:bg-muted',\n selected && 'bg-muted',\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 {secondaryAction && <div className=\"shrink-0 ml-2\">{secondaryAction}</div>}\n </li>\n )\n)\nListItem.displayName = 'ListItem'\n\n// ============================================================================\n// ListItemText - Text content for a list item\n// ============================================================================\n\nexport interface ListItemTextProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Primary text */\n primary?: React.ReactNode\n /** Secondary text */\n secondary?: React.ReactNode\n /** Whether to prevent text wrapping */\n noWrap?: boolean\n}\n\nconst ListItemText = React.forwardRef<HTMLDivElement, ListItemTextProps>(\n ({ primary, secondary, noWrap = false, className, children, ...props }, ref) => (\n <div ref={ref} className={cn('min-w-0', className)} {...props}>\n {primary && (\n <div\n className={cn(\n 'text-sm font-medium text-foreground',\n noWrap && 'truncate'\n )}\n >\n {primary}\n </div>\n )}\n {secondary && (\n <div\n className={cn(\n 'text-sm text-muted-foreground',\n noWrap && 'truncate'\n )}\n >\n {secondary}\n </div>\n )}\n {!primary && !secondary && children}\n </div>\n )\n)\nListItemText.displayName = 'ListItemText'\n\n// ============================================================================\n// ListItemIcon - Icon wrapper for list items\n// ============================================================================\n\nexport interface ListItemIconProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst ListItemIcon = React.forwardRef<HTMLDivElement, ListItemIconProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('shrink-0 text-muted-foreground', className)}\n {...props}\n />\n )\n)\nListItemIcon.displayName = 'ListItemIcon'\n\n// ============================================================================\n// ListItemAvatar - Avatar wrapper for list items\n// ============================================================================\n\nexport interface ListItemAvatarProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst ListItemAvatar = React.forwardRef<HTMLDivElement, ListItemAvatarProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('shrink-0', className)} {...props} />\n )\n)\nListItemAvatar.displayName = 'ListItemAvatar'\n\n// ============================================================================\n// ListSubheader - Section header for lists\n// ============================================================================\n\nexport interface ListSubheaderProps extends React.HTMLAttributes<HTMLLIElement> {\n /** Whether the subheader is sticky */\n sticky?: boolean\n}\n\nconst ListSubheader = React.forwardRef<HTMLLIElement, ListSubheaderProps>(\n ({ sticky = false, className, ...props }, ref) => (\n <li\n ref={ref}\n role=\"presentation\"\n className={cn(\n 'px-4 py-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground bg-background',\n sticky && 'sticky top-0 z-10',\n className\n )}\n {...props}\n />\n )\n)\nListSubheader.displayName = 'ListSubheader'\n\n// ============================================================================\n// ListDivider - Divider between list items\n// ============================================================================\n\nexport interface ListDividerProps extends React.HTMLAttributes<HTMLLIElement> {\n /** Whether the divider is inset (indented) */\n inset?: boolean\n}\n\nconst ListDivider = React.forwardRef<HTMLLIElement, ListDividerProps>(\n ({ inset = false, className, ...props }, ref) => (\n <li\n ref={ref}\n role=\"separator\"\n className={cn(\n 'border-t border-border my-1',\n inset && 'ml-14',\n className\n )}\n {...props}\n />\n )\n)\nListDivider.displayName = 'ListDivider'\n\nexport {\n List,\n ListItem,\n ListItemText,\n ListItemIcon,\n ListItemAvatar,\n ListSubheader,\n ListDivider,\n}\n","import * as React from 'react'\nimport {\n BarChart as RechartsBarChart,\n Bar,\n LineChart as RechartsLineChart,\n Line,\n PieChart as RechartsPieChart,\n Pie,\n Cell,\n AreaChart as RechartsAreaChart,\n Area,\n ScatterChart as RechartsScatterChart,\n Scatter,\n RadarChart as RechartsRadarChart,\n Radar,\n PolarGrid,\n PolarAngleAxis,\n PolarRadiusAxis,\n CartesianGrid,\n XAxis,\n YAxis,\n Tooltip,\n Legend,\n ResponsiveContainer,\n LabelList,\n} from 'recharts'\nimport { cn } from '../utils/cn'\nimport { useTheme } from '../theme/use-theme'\nimport { accentColors } from '@onesaz/tokens'\n\n// ============================================================================\n// Bar Chart\n// ============================================================================\n\n// ============================================================================\n// Bar Chart\n// ============================================================================\n\nexport interface BarChartProps {\n /** Chart data */\n data: any[]\n /** Data key for the bars */\n dataKey: string\n /** Multiple data keys for grouped bars */\n dataKeys?: Array<{\n dataKey: string\n fill?: string\n name?: string\n }>\n /** Fill color for single bar */\n fill?: string\n /** Bar name for legend */\n name?: string\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Margin around the chart */\n margin?: {\n top?: number\n right?: number\n bottom?: number\n left?: number\n }\n /** Show grid lines */\n showGrid?: boolean\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** X-axis configuration */\n xAxis?: {\n dataKey?: string\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n angle?: number\n textAnchor?: 'start' | 'middle' | 'end'\n height?: number\n interval?: number | 'preserveStartEnd' | 'preserveStart' | 'preserveEnd'\n tick?: {\n fontSize?: number\n fontWeight?: string | number\n fill?: string\n }\n }\n /** Y-axis configuration */\n yAxis?: {\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n angle?: number\n position?: 'insideLeft' | 'insideRight' | 'left' | 'right'\n tick?: {\n fontSize?: number\n fontWeight?: string | number\n fill?: string\n }\n }\n /** Bar styling */\n barProps?: {\n radius?: number | [number, number, number, number]\n maxBarSize?: number\n minPointSize?: number\n barCategoryGap?: number | string\n barGap?: number | string\n }\n /** Label list configuration */\n labelList?: {\n dataKey?: string\n position?: 'top' | 'bottom' | 'left' | 'right' | 'center' | 'inside' | 'outside'\n style?: React.CSSProperties\n formatter?: (value: any, entry: any, index: number) => React.ReactNode\n }\n /** Custom colors array */\n colors?: string[]\n /** Tooltip configuration */\n tooltip?: {\n formatter?: (value: any, name: string, props: any) => [React.ReactNode, string]\n labelFormatter?: (label: any, payload: any[]) => React.ReactNode\n labelStyle?: React.CSSProperties\n contentStyle?: React.CSSProperties\n }\n /** Additional CSS classes */\n className?: string\n}\n\nexport const BarChart: React.FC<BarChartProps> = ({\n data,\n dataKey,\n dataKeys,\n fill,\n name,\n width = '100%',\n height = 300,\n margin = { top: 20, right: 30, left: 20, bottom: 5 },\n showGrid = true,\n showTooltip = true,\n showLegend = false,\n xAxis,\n yAxis,\n barProps = {},\n labelList,\n colors,\n tooltip,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n // Default colors using theme\n const defaultColors = [\n accentColors[accentColor as keyof typeof accentColors][6],\n accentColors[accentColor as keyof typeof accentColors][7],\n accentColors[accentColor as keyof typeof accentColors][8],\n accentColors[accentColor as keyof typeof accentColors][9],\n accentColors[accentColor as keyof typeof accentColors][10],\n accentColors[accentColor as keyof typeof accentColors][11],\n accentColors[accentColor as keyof typeof accentColors][12],\n accentColors[accentColor as keyof typeof accentColors][1],\n ]\n\n const chartColors = colors || defaultColors\n\n const bars = dataKeys ? (\n dataKeys.map((keyConfig, index) => (\n <Bar\n key={keyConfig.dataKey}\n dataKey={keyConfig.dataKey}\n fill={keyConfig.fill || chartColors[index % chartColors.length]}\n name={keyConfig.name || keyConfig.dataKey}\n radius={barProps.radius}\n maxBarSize={barProps.maxBarSize}\n minPointSize={barProps.minPointSize}\n >\n {labelList && (\n <LabelList\n dataKey={labelList.dataKey || keyConfig.dataKey}\n position={labelList.position || 'top'}\n style={labelList.style}\n formatter={labelList.formatter}\n />\n )}\n </Bar>\n ))\n ) : (\n <Bar\n dataKey={dataKey}\n fill={fill || chartColors[0]}\n name={name || dataKey}\n radius={barProps.radius}\n maxBarSize={barProps.maxBarSize}\n minPointSize={barProps.minPointSize}\n >\n {labelList && (\n <LabelList\n dataKey={labelList.dataKey || dataKey}\n position={labelList.position || 'top'}\n style={labelList.style}\n formatter={labelList.formatter}\n />\n )}\n {data.map((_entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={chartColors[index % chartColors.length]}\n />\n ))}\n </Bar>\n )\n\n const customTooltip = tooltip ? (\n <Tooltip\n formatter={tooltip.formatter}\n labelFormatter={tooltip.labelFormatter}\n labelStyle={tooltip.labelStyle}\n contentStyle={tooltip.contentStyle}\n />\n ) : showTooltip ? (\n <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />\n ) : null\n\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsBarChart\n data={data}\n margin={margin}\n barCategoryGap={barProps.barCategoryGap}\n barGap={barProps.barGap}\n >\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke=\"hsl(var(--muted-foreground))\" opacity={0.3} />}\n {xAxis && !xAxis.hide && (\n <XAxis\n dataKey={xAxis.dataKey}\n type={xAxis.type}\n angle={xAxis.angle}\n textAnchor={xAxis.textAnchor}\n height={xAxis.height}\n interval={xAxis.interval}\n className=\"text-xs\"\n tick={xAxis.tick || { fontSize: 12 }}\n label={xAxis.label ? { value: xAxis.label, position: 'insideBottom', offset: -5 } : undefined}\n />\n )}\n {yAxis && !yAxis.hide && (\n <YAxis\n type={yAxis.type}\n orientation={yAxis.position === 'right' ? 'right' : 'left'}\n className=\"text-xs\"\n tick={yAxis.tick || { fontSize: 12 }}\n label={yAxis.label ? { value: yAxis.label, angle: -90, position: yAxis.position || 'insideLeft' } : undefined}\n />\n )}\n {customTooltip}\n {showLegend && <Legend />}\n {bars}\n </RechartsBarChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Line Chart\n// ============================================================================\n\nexport interface LineChartProps {\n /** Chart data */\n data: any[]\n /** Data key for the line */\n dataKey: string\n /** Multiple data keys for multiple lines */\n dataKeys?: Array<{\n dataKey: string\n stroke?: string\n name?: string\n }>\n /** Stroke color for single line */\n stroke?: string\n /** Line name for legend */\n name?: string\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Margin around the chart */\n margin?: {\n top?: number\n right?: number\n bottom?: number\n left?: number\n }\n /** Show grid lines */\n showGrid?: boolean\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** X-axis configuration */\n xAxis?: {\n dataKey?: string\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n }\n /** Y-axis configuration */\n yAxis?: {\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n }\n /** Additional CSS classes */\n className?: string\n}\n\nexport const LineChart: React.FC<LineChartProps> = ({\n data,\n dataKey,\n dataKeys,\n stroke,\n name,\n width = '100%',\n height = 300,\n margin = { top: 20, right: 30, left: 20, bottom: 5 },\n showGrid = true,\n showTooltip = true,\n showLegend = false,\n xAxis,\n yAxis,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n // Default colors using theme\n const defaultColors = [\n accentColors[accentColor as keyof typeof accentColors][6],\n accentColors[accentColor as keyof typeof accentColors][7],\n accentColors[accentColor as keyof typeof accentColors][8],\n accentColors[accentColor as keyof typeof accentColors][9],\n accentColors[accentColor as keyof typeof accentColors][10],\n accentColors[accentColor as keyof typeof accentColors][11],\n accentColors[accentColor as keyof typeof accentColors][12],\n accentColors[accentColor as keyof typeof accentColors][1],\n ]\n\n const lines = dataKeys ? (\n dataKeys.map((keyConfig, index) => (\n <Line\n key={keyConfig.dataKey}\n type=\"monotone\"\n dataKey={keyConfig.dataKey}\n stroke={keyConfig.stroke || defaultColors[index % defaultColors.length]}\n strokeWidth={2}\n name={keyConfig.name || keyConfig.dataKey}\n />\n ))\n ) : (\n <Line\n type=\"monotone\"\n dataKey={dataKey}\n stroke={stroke || defaultColors[0]}\n strokeWidth={2}\n name={name || dataKey}\n />\n )\n\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsLineChart data={data} margin={margin}>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke=\"hsl(var(--muted-foreground))\" opacity={0.3} />}\n {xAxis && !xAxis.hide && (\n <XAxis\n dataKey={xAxis.dataKey}\n type={xAxis.type}\n className=\"text-xs\"\n tick={{ fontSize: 12 }}\n label={xAxis.label ? { value: xAxis.label, position: 'insideBottom', offset: -5 } : undefined}\n />\n )}\n {yAxis && !yAxis.hide && (\n <YAxis\n type={yAxis.type}\n className=\"text-xs\"\n tick={{ fontSize: 12 }}\n label={yAxis.label ? { value: yAxis.label, angle: -90, position: 'insideLeft' } : undefined}\n />\n )}\n {showTooltip && <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />}\n {showLegend && <Legend />}\n {lines}\n </RechartsLineChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Pie Chart\n// ============================================================================\n\nexport interface PieChartProps {\n /** Chart data */\n data: any[]\n /** Data key for the pie slices */\n dataKey: string\n /** Name key for labels */\n nameKey?: string\n /** Colors for pie slices */\n colors?: string[]\n /** Inner radius for donut effect (set to create donut chart) */\n innerRadius?: number\n /** Outer radius */\n outerRadius?: number\n /** Center coordinates */\n cx?: number | string\n cy?: number | string\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** Additional CSS classes */\n className?: string\n}\n\nexport const PieChart: React.FC<PieChartProps> = ({\n data,\n dataKey,\n nameKey,\n colors,\n innerRadius,\n outerRadius,\n cx = '50%',\n cy = '50%',\n width = '100%',\n height = 300,\n showTooltip = true,\n showLegend = false,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n // Default colors using theme\n const defaultColors = [\n accentColors[accentColor as keyof typeof accentColors][6],\n accentColors[accentColor as keyof typeof accentColors][7],\n accentColors[accentColor as keyof typeof accentColors][8],\n accentColors[accentColor as keyof typeof accentColors][9],\n accentColors[accentColor as keyof typeof accentColors][10],\n accentColors[accentColor as keyof typeof accentColors][11],\n accentColors[accentColor as keyof typeof accentColors][12],\n accentColors[accentColor as keyof typeof accentColors][1],\n ]\n\n const chartColors = colors || defaultColors\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsPieChart>\n <Pie\n data={data}\n cx={cx}\n cy={cy}\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n fill=\"#8884d8\"\n dataKey={dataKey}\n nameKey={nameKey}\n >\n {data.map((_entry, index) => (\n <Cell key={`cell-${index}`} fill={chartColors[index % chartColors.length]} />\n ))}\n </Pie>\n {showTooltip && <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />}\n {showLegend && <Legend />}\n </RechartsPieChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Area Chart\n// ============================================================================\n\nexport interface AreaChartProps {\n /** Chart data */\n data: any[]\n /** Data key for the area */\n dataKey: string\n /** Multiple data keys for stacked areas */\n dataKeys?: Array<{\n dataKey: string\n fill?: string\n stroke?: string\n name?: string\n }>\n /** Fill color for single area */\n fill?: string\n /** Stroke color for single area */\n stroke?: string\n /** Area name for legend */\n name?: string\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Margin around the chart */\n margin?: {\n top?: number\n right?: number\n bottom?: number\n left?: number\n }\n /** Show grid lines */\n showGrid?: boolean\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** Stack areas on top of each other */\n stack?: boolean\n /** X-axis configuration */\n xAxis?: {\n dataKey?: string\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n }\n /** Y-axis configuration */\n yAxis?: {\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n }\n /** Additional CSS classes */\n className?: string\n}\n\nexport const AreaChart: React.FC<AreaChartProps> = ({\n data,\n dataKey,\n dataKeys,\n fill,\n stroke,\n name,\n width = '100%',\n height = 300,\n margin = { top: 20, right: 30, left: 20, bottom: 5 },\n showGrid = true,\n showTooltip = true,\n showLegend = false,\n stack = false,\n xAxis,\n yAxis,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n // Default colors using theme\n const defaultColors = [\n accentColors[accentColor as keyof typeof accentColors][6],\n accentColors[accentColor as keyof typeof accentColors][7],\n accentColors[accentColor as keyof typeof accentColors][8],\n accentColors[accentColor as keyof typeof accentColors][9],\n accentColors[accentColor as keyof typeof accentColors][10],\n accentColors[accentColor as keyof typeof accentColors][11],\n accentColors[accentColor as keyof typeof accentColors][12],\n accentColors[accentColor as keyof typeof accentColors][1],\n ]\n\n const areas = dataKeys ? (\n dataKeys.map((keyConfig, index) => (\n <Area\n key={keyConfig.dataKey}\n type=\"monotone\"\n dataKey={keyConfig.dataKey}\n stackId={stack ? '1' : undefined}\n stroke={keyConfig.stroke || defaultColors[index % defaultColors.length]}\n fill={keyConfig.fill || defaultColors[index % defaultColors.length]}\n name={keyConfig.name || keyConfig.dataKey}\n />\n ))\n ) : (\n <Area\n type=\"monotone\"\n dataKey={dataKey}\n stroke={stroke || defaultColors[0]}\n fill={fill || defaultColors[0]}\n name={name || dataKey}\n />\n )\n\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsAreaChart data={data} margin={margin}>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke=\"hsl(var(--muted-foreground))\" opacity={0.3} />}\n {xAxis && !xAxis.hide && (\n <XAxis\n dataKey={xAxis.dataKey}\n type={xAxis.type}\n className=\"text-xs\"\n tick={{ fontSize: 12 }}\n label={xAxis.label ? { value: xAxis.label, position: 'insideBottom', offset: -5 } : undefined}\n />\n )}\n {yAxis && !yAxis.hide && (\n <YAxis\n type={yAxis.type}\n className=\"text-xs\"\n tick={{ fontSize: 12 }}\n label={yAxis.label ? { value: yAxis.label, angle: -90, position: 'insideLeft' } : undefined}\n />\n )}\n {showTooltip && <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />}\n {showLegend && <Legend />}\n {areas}\n </RechartsAreaChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Scatter Chart\n// ============================================================================\n\nexport interface ScatterChartProps {\n /** Chart data */\n data: any[]\n /** X-axis data key */\n xDataKey: string\n /** Y-axis data key */\n yDataKey: string\n /** Fill color for points */\n fill?: string\n /** Point name for legend */\n name?: string\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Margin around the chart */\n margin?: {\n top?: number\n right?: number\n bottom?: number\n left?: number\n }\n /** Show grid lines */\n showGrid?: boolean\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** X-axis configuration */\n xAxis?: {\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n }\n /** Y-axis configuration */\n yAxis?: {\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n }\n /** Additional CSS classes */\n className?: string\n}\n\nexport const ScatterChart: React.FC<ScatterChartProps> = ({\n data,\n xDataKey,\n yDataKey,\n fill,\n name = 'Point',\n width = '100%',\n height = 300,\n margin = { top: 20, right: 30, left: 20, bottom: 5 },\n showGrid = true,\n showTooltip = true,\n showLegend = false,\n xAxis,\n yAxis,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsScatterChart data={data} margin={margin}>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke=\"hsl(var(--muted-foreground))\" opacity={0.3} />}\n {xAxis && !xAxis.hide && (\n <XAxis\n dataKey={xDataKey}\n type={xAxis.type}\n className=\"text-xs\"\n tick={{ fontSize: 12 }}\n label={xAxis.label ? { value: xAxis.label, position: 'insideBottom', offset: -5 } : undefined}\n />\n )}\n {yAxis && !yAxis.hide && (\n <YAxis\n dataKey={yDataKey}\n type={yAxis.type}\n className=\"text-xs\"\n tick={{ fontSize: 12 }}\n label={yAxis.label ? { value: yAxis.label, angle: -90, position: 'insideLeft' } : undefined}\n />\n )}\n {showTooltip && <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />}\n {showLegend && <Legend />}\n <Scatter name={name} dataKey={yDataKey} fill={fill || accentColors[accentColor as keyof typeof accentColors][6]} />\n </RechartsScatterChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Radar Chart\n// ============================================================================\n\nexport interface RadarChartProps {\n /** Chart data */\n data: any[]\n /** Data key for the radar values */\n dataKey: string\n /** Name key for labels */\n nameKey: string\n /** Fill color */\n fill?: string\n /** Stroke color */\n stroke?: string\n /** Radar name for legend */\n name?: string\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** Additional CSS classes */\n className?: string\n}\n\nexport const RadarChart: React.FC<RadarChartProps> = ({\n data,\n dataKey,\n nameKey,\n fill,\n stroke,\n name,\n width = '100%',\n height = 300,\n showTooltip = true,\n showLegend = false,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsRadarChart data={data}>\n <PolarGrid />\n <PolarAngleAxis dataKey={nameKey} />\n <PolarRadiusAxis />\n <Radar\n name={name || dataKey}\n dataKey={dataKey}\n stroke={stroke || accentColors[accentColor as keyof typeof accentColors][6]}\n fill={fill || accentColors[accentColor as keyof typeof accentColors][6]}\n fillOpacity={0.6}\n />\n {showTooltip && <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />}\n {showLegend && <Legend />}\n </RechartsRadarChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Donut Chart\n// ============================================================================\n\n// ============================================================================\n// Donut Chart\n// ============================================================================\n\nexport interface DonutChartProps {\n /** Chart data */\n data: any[]\n /** Data key for the donut slices */\n dataKey: string\n /** Name key for labels */\n nameKey?: string\n /** Colors for donut slices */\n colors?: string[]\n /** Inner radius */\n innerRadius?: number\n /** Outer radius */\n outerRadius?: number\n /** Center coordinates */\n cx?: number | string\n cy?: number | string\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** Advanced styling options */\n advancedStyling?: {\n /** Enable gradient effects */\n enableGradients?: boolean\n /** Enable shadow effects */\n enableShadows?: boolean\n /** Custom gradient definitions */\n gradients?: Array<{\n id: string\n colors: [string, string]\n x1?: string\n y1?: string\n x2?: string\n y2?: string\n }>\n /** Background circle styling */\n backgroundCircle?: {\n stroke?: string\n strokeWidth?: number\n filter?: string\n }\n /** Progress arc styling */\n progressArc?: {\n strokeLinecap?: 'butt' | 'round' | 'square'\n filter?: string\n }\n }\n /** Tooltip configuration */\n tooltip?: {\n formatter?: (value: any, name: string, props: any) => [React.ReactNode, string]\n labelFormatter?: (label: any, payload: any[]) => React.ReactNode\n labelStyle?: React.CSSProperties\n contentStyle?: React.CSSProperties\n }\n /** Additional CSS classes */\n className?: string\n}\n\nexport const DonutChart: React.FC<DonutChartProps> = ({\n data,\n dataKey,\n nameKey,\n colors,\n innerRadius = 60,\n outerRadius,\n cx = '50%',\n cy = '50%',\n width = '100%',\n height = 300,\n showTooltip = true,\n showLegend = false,\n advancedStyling,\n tooltip,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n // Default colors using theme\n const defaultColors = [\n accentColors[accentColor as keyof typeof accentColors][6],\n accentColors[accentColor as keyof typeof accentColors][7],\n accentColors[accentColor as keyof typeof accentColors][8],\n accentColors[accentColor as keyof typeof accentColors][9],\n accentColors[accentColor as keyof typeof accentColors][10],\n accentColors[accentColor as keyof typeof accentColors][11],\n accentColors[accentColor as keyof typeof accentColors][12],\n accentColors[accentColor as keyof typeof accentColors][1],\n ]\n\n const chartColors = colors || defaultColors\n\n // Default advanced styling\n const defaultAdvancedStyling = {\n enableGradients: false,\n enableShadows: false,\n gradients: [],\n backgroundCircle: {\n stroke: 'hsl(var(--border))',\n strokeWidth: 14,\n filter: 'url(#deepInsetShadow)',\n },\n progressArc: {\n strokeLinecap: 'round' as const,\n filter: 'url(#dropShadow)',\n },\n }\n\n const styling = { ...defaultAdvancedStyling, ...advancedStyling }\n\n // Generate gradient IDs if gradients are enabled\n const gradientDefs = styling.enableGradients ? (\n <defs>\n {/* Deep inset shadow for the background circle */}\n {styling.enableShadows && (\n <filter\n id=\"deepInsetShadow\"\n x=\"-50%\"\n y=\"-50%\"\n width=\"200%\"\n height=\"200%\"\n >\n <feOffset dx=\"0\" dy=\"2\" />\n <feGaussianBlur stdDeviation=\"2\" result=\"offsetBlur\" />\n <feComposite\n in=\"SourceAlpha\"\n in2=\"offsetBlur\"\n operator=\"out\"\n result=\"innerShadow\"\n />\n <feFlood floodColor=\"hsl(var(--muted))\" floodOpacity=\"0.9\" result=\"color\" />\n <feComposite\n in=\"color\"\n in2=\"innerShadow\"\n operator=\"in\"\n result=\"shadow\"\n />\n <feComposite\n in=\"shadow\"\n in2=\"SourceGraphic\"\n operator=\"over\"\n />\n </filter>\n )}\n\n {/* Drop shadow for the colored progress arc */}\n {styling.enableShadows && (\n <filter\n id=\"dropShadow\"\n x=\"-10%\"\n y=\"-10%\"\n width=\"120%\"\n height=\"120%\"\n >\n <feDropShadow\n dx=\"0\"\n dy=\"1\"\n stdDeviation=\"1\"\n floodColor=\"hsl(var(--muted-foreground))\"\n floodOpacity=\"0.5\"\n />\n </filter>\n )}\n\n {/* Custom gradients */}\n {styling.gradients?.map((gradient) => (\n <linearGradient\n key={gradient.id}\n id={gradient.id}\n x1={gradient.x1 || \"0%\"}\n y1={gradient.y1 || \"0%\"}\n x2={gradient.x2 || \"100%\"}\n y2={gradient.y2 || \"100%\"}\n >\n <stop offset=\"0%\" stopColor={gradient.colors[0]} />\n <stop offset=\"100%\" stopColor={gradient.colors[1]} />\n </linearGradient>\n ))}\n </defs>\n ) : null\n\n const customTooltip = tooltip ? (\n <Tooltip\n formatter={tooltip.formatter}\n labelFormatter={tooltip.labelFormatter}\n labelStyle={tooltip.labelStyle}\n contentStyle={tooltip.contentStyle}\n />\n ) : showTooltip ? (\n <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />\n ) : null\n\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsPieChart>\n {gradientDefs}\n <Pie\n data={data}\n cx={cx}\n cy={cy}\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n fill=\"#8884d8\"\n dataKey={dataKey}\n nameKey={nameKey}\n strokeLinecap={styling.progressArc.strokeLinecap}\n filter={styling.progressArc.filter}\n >\n {data.map((_entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={chartColors[index % chartColors.length]}\n />\n ))}\n </Pie>\n {customTooltip}\n {showLegend && <Legend />}\n </RechartsPieChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Progress Card (Individual Progress Indicator)\n// ============================================================================\n\nexport interface ProgressCardProps {\n /** Question number or identifier */\n questionNum: string | number\n /** Percentage value (0-100) */\n percentage: number\n /** Optional click handler */\n onClick?: (questionNum: string | number) => void\n /** Size of the donut chart */\n donutSize?: number\n /** Stroke width for the progress arc */\n strokeWidth?: number\n /** Background stroke color */\n backgroundColor?: string\n /** Custom color logic based on percentage */\n getColor?: (percentage: number) => [string, string]\n /** Enable shadows */\n enableShadows?: boolean\n /** Enable gradients */\n enableGradients?: boolean\n /** Typography options */\n typography?: {\n questionFontSize?: string\n percentageFontSize?: string\n questionColor?: string\n percentageColorAuto?: boolean\n }\n /** Additional CSS classes */\n className?: string\n}\n\nexport const ProgressCard: React.FC<ProgressCardProps> = ({\n questionNum,\n percentage,\n onClick,\n donutSize = 50,\n strokeWidth = 7,\n backgroundColor = '#E0E4E8',\n getColor,\n enableShadows = true,\n enableGradients = true,\n typography = {\n questionFontSize: 'text-sm',\n percentageFontSize: 'text-base',\n questionColor: 'text-gray-700 dark:text-gray-300',\n percentageColorAuto: true,\n },\n className,\n}) => {\n // Default color logic matching your example\n const defaultGetColor = (percentage: number): [string, string] => {\n if (percentage <= 30) {\n return ['rgb(132, 249, 169)', '#46AB87'] // Green for success\n } else if (percentage <= 50) {\n return ['#3366cc', '#0066cc'] // Blue for info \n } else {\n return ['#ff3300', '#cc3300'] // Red for error\n }\n }\n\n const colorFn = getColor || defaultGetColor\n const normalizedPercentage = Math.min(100, Math.max(0, percentage))\n const gradientId = `progress-gradient-${Math.random().toString(36).substr(2, 9)}`\n const shadowId = `progress-shadow-${Math.random().toString(36).substr(2, 9)}`\n const bgShadowId = `progress-bg-shadow-${Math.random().toString(36).substr(2, 9)}`\n const [startColor, endColor] = colorFn(normalizedPercentage)\n\n // Get percentage text color if auto-coloring is enabled\n const percentageTextColor = typography.percentageColorAuto\n ? normalizedPercentage <= 30\n ? 'text-green-600'\n : normalizedPercentage <= 50\n ? 'text-blue-600'\n : 'text-red-600'\n : 'text-gray-900 dark:text-gray-100'\n\n return (\n <div\n className={cn(\n 'flex items-center justify-between p-3',\n onClick && 'cursor-pointer',\n className\n )}\n onClick={() => onClick?.(questionNum)}\n >\n {/* Left side: Question Number and Percentage */}\n <div className=\"flex flex-col items-center\">\n <span className={cn('font-bold', typography.questionFontSize, typography.questionColor)}>\n {questionNum}\n </span>\n <span className={cn('font-bold', typography.percentageFontSize, percentageTextColor)}>\n {normalizedPercentage.toFixed(1)}%\n </span>\n </div>\n\n {/* Right side: Donut Chart */}\n <div className=\"flex items-center\" style={{ width: `${donutSize + 10}px`, height: `${donutSize + 10}px` }}>\n <svg width={donutSize + 10} height={donutSize + 10} viewBox=\"0 0 100 100\">\n <defs>\n {enableGradients && (\n <linearGradient\n id={gradientId}\n x1=\"0%\"\n y1=\"0%\"\n x2=\"100%\"\n y2=\"100%\"\n >\n <stop offset=\"0%\" stopColor={startColor} />\n <stop offset=\"100%\" stopColor={endColor} />\n </linearGradient>\n )}\n\n {enableShadows && (\n <>\n {/* Deep inset shadow for background circle */}\n <filter\n id={bgShadowId}\n x=\"-50%\"\n y=\"-50%\"\n width=\"200%\"\n height=\"200%\"\n >\n <feOffset dx=\"0\" dy=\"2\" />\n <feGaussianBlur stdDeviation=\"2\" result=\"offsetBlur\" />\n <feComposite\n in=\"SourceAlpha\"\n in2=\"offsetBlur\"\n operator=\"out\"\n result=\"innerShadow\"\n />\n <feFlood floodColor=\"#c0c0c0\" floodOpacity=\"0.9\" result=\"color\" />\n <feComposite\n in=\"color\"\n in2=\"innerShadow\"\n operator=\"in\"\n result=\"shadow\"\n />\n <feComposite\n in=\"shadow\"\n in2=\"SourceGraphic\"\n operator=\"over\"\n />\n </filter>\n\n {/* Drop shadow for progress arc */}\n <filter\n id={shadowId}\n x=\"-10%\"\n y=\"-10%\"\n width=\"120%\"\n height=\"120%\"\n >\n <feDropShadow\n dx=\"0\"\n dy=\"1\"\n stdDeviation=\"1\"\n floodColor=\"#bbb\"\n floodOpacity=\"0.5\"\n />\n </filter>\n </>\n )}\n </defs>\n\n {/* Background circle */}\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"40\"\n fill=\"transparent\"\n stroke={backgroundColor}\n strokeWidth={strokeWidth * 2}\n filter={enableShadows ? `url(#${bgShadowId})` : undefined}\n />\n\n {/* Progress arc */}\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"40\"\n fill=\"transparent\"\n stroke={enableGradients ? `url(#${gradientId})` : startColor}\n strokeWidth={strokeWidth * 2}\n strokeLinecap=\"round\"\n strokeDasharray={`${2 * Math.PI * 40}`}\n strokeDashoffset={`${2 * Math.PI * 40 * (1 - normalizedPercentage / 100)}`}\n transform=\"rotate(-90 50 50)\"\n filter={enableShadows ? `url(#${shadowId})` : undefined}\n />\n </svg>\n </div>\n </div>\n )\n}\n\n// ============================================================================\n// Progress Donut (Single Donut with Multiple Segments)\n// ============================================================================\n\nexport interface ProgressDonutProps {\n /** Array of data items with value and label */\n data?: Array<{\n value: number\n label?: string\n [key: string]: any\n }>\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Inner radius for donut effect */\n innerRadius?: number\n /** Outer radius */\n outerRadius?: number\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** Custom color logic based on value */\n getColor?: (value: number) => string\n /** Additional CSS classes */\n className?: string\n}\n\nexport const ProgressDonut: React.FC<ProgressDonutProps> = ({\n data = [],\n width = 300,\n height = 300,\n innerRadius = 60,\n outerRadius = 80,\n showTooltip = true,\n showLegend = false,\n getColor,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n // Default color logic based on percentage\n const defaultGetColor = (percentage: number): string => {\n if (percentage <= 30) {\n return '#22c55e' // Green for success\n } else if (percentage <= 50) {\n return '#3b82f6' // Blue for info\n } else {\n return '#ef4444' // Red for error\n }\n }\n\n const colorFn = getColor || defaultGetColor\n\n // Default colors using theme\n const defaultColors = [\n accentColors[accentColor as keyof typeof accentColors][6],\n accentColors[accentColor as keyof typeof accentColors][7],\n accentColors[accentColor as keyof typeof accentColors][8],\n accentColors[accentColor as keyof typeof accentColors][9],\n accentColors[accentColor as keyof typeof accentColors][10],\n accentColors[accentColor as keyof typeof accentColors][11],\n accentColors[accentColor as keyof typeof accentColors][12],\n accentColors[accentColor as keyof typeof accentColors][1],\n ]\n\n // If no data provided, return empty\n if (!data || data.length === 0) {\n return <div className={cn('text-gray-500', className)}>No data provided</div>\n }\n\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsPieChart>\n <Pie\n data={data}\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n fill=\"#8884d8\"\n dataKey=\"value\"\n nameKey=\"label\"\n >\n {data.map((_entry, index) => {\n const percentage = Math.min(100, Math.max(0, _entry.value))\n const fillColor = colorFn(percentage) || defaultColors[index % defaultColors.length]\n return <Cell key={`cell-${index}`} fill={fillColor} />\n })}\n </Pie>\n {showTooltip && <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />}\n {showLegend && <Legend />}\n </RechartsPieChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Multi Progress Donut (Multiple Separate Donut Charts)\n// ============================================================================\n\nexport interface MultiProgressDonutProps {\n /** Array of data items with value and label */\n data?: Array<{\n value: number\n label?: string\n [key: string]: any\n }>\n /** Size of each donut chart */\n size?: number\n /** Outer radius */\n outerRadius?: number\n /** Stroke width for the progress arc */\n strokeWidth?: number\n /** Background stroke color */\n backgroundColor?: string\n /** Background stroke width */\n backgroundStrokeWidth?: number\n /** Show percentage text in center */\n showPercentage?: boolean\n /** Custom color logic based on value */\n getColor?: (value: number) => [string, string]\n /** Enable shadows */\n enableShadows?: boolean\n /** Enable gradients */\n enableGradients?: boolean\n /** Additional CSS classes */\n className?: string\n}\n\nexport const MultiProgressDonut: React.FC<MultiProgressDonutProps> = ({\n data = [],\n size = 80,\n outerRadius = 35,\n strokeWidth = 8,\n backgroundColor = '#E0E4E8',\n backgroundStrokeWidth = 8,\n showPercentage = true,\n getColor,\n enableShadows = true,\n enableGradients = true,\n className,\n}) => {\n // Default color logic based on percentage\n const defaultGetColor = (percentage: number): [string, string] => {\n if (percentage <= 30) {\n return ['#22c55e', '#16a34a'] // Green for success\n } else if (percentage <= 50) {\n return ['#3b82f6', '#2563eb'] // Blue for info\n } else {\n return ['#ef4444', '#dc2626'] // Red for error\n }\n }\n\n const colorFn = getColor || defaultGetColor\n\n // If no data provided, return empty\n if (!data || data.length === 0) {\n return <div className={cn('text-gray-500', className)}>No data provided</div>\n }\n\n return (\n <div className={cn('flex flex-wrap gap-4', className)}>\n {data.map((item, index) => {\n const percentage = Math.min(100, Math.max(0, item.value))\n const gradientId = `progress-gradient-${index}`\n const shadowId = `progress-shadow-${index}`\n const bgShadowId = `progress-bg-shadow-${index}`\n const [startColor, endColor] = colorFn(percentage)\n\n return (\n <div key={index} className=\"flex flex-col items-center gap-2\">\n {item.label && (\n <div className=\"text-sm font-medium text-gray-700 dark:text-gray-300\">\n {item.label}\n </div>\n )}\n <div className=\"relative\">\n <svg width={size} height={size} viewBox=\"0 0 100 100\">\n <defs>\n {enableGradients && (\n <linearGradient\n id={gradientId}\n x1=\"0%\"\n y1=\"0%\"\n x2=\"100%\"\n y2=\"100%\"\n >\n <stop offset=\"0%\" stopColor={startColor} />\n <stop offset=\"100%\" stopColor={endColor} />\n </linearGradient>\n )}\n\n {enableShadows && (\n <>\n {/* Deep inset shadow for background circle */}\n <filter\n id={bgShadowId}\n x=\"-50%\"\n y=\"-50%\"\n width=\"200%\"\n height=\"200%\"\n >\n <feOffset dx=\"0\" dy=\"2\" />\n <feGaussianBlur stdDeviation=\"2\" result=\"offsetBlur\" />\n <feComposite\n in=\"SourceAlpha\"\n in2=\"offsetBlur\"\n operator=\"out\"\n result=\"innerShadow\"\n />\n <feFlood floodColor=\"#c0c0c0\" floodOpacity=\"0.9\" result=\"color\" />\n <feComposite\n in=\"color\"\n in2=\"innerShadow\"\n operator=\"in\"\n result=\"shadow\"\n />\n <feComposite\n in=\"shadow\"\n in2=\"SourceGraphic\"\n operator=\"over\"\n />\n </filter>\n\n {/* Drop shadow for progress arc */}\n <filter\n id={shadowId}\n x=\"-10%\"\n y=\"-10%\"\n width=\"120%\"\n height=\"120%\"\n >\n <feDropShadow\n dx=\"0\"\n dy=\"1\"\n stdDeviation=\"1\"\n floodColor=\"#bbb\"\n floodOpacity=\"0.5\"\n />\n </filter>\n </>\n )}\n </defs>\n\n {/* Background circle */}\n <circle\n cx=\"50\"\n cy=\"50\"\n r={outerRadius}\n fill=\"transparent\"\n stroke={backgroundColor}\n strokeWidth={backgroundStrokeWidth}\n filter={enableShadows ? `url(#${bgShadowId})` : undefined}\n />\n\n {/* Progress arc */}\n <circle\n cx=\"50\"\n cy=\"50\"\n r={outerRadius}\n fill=\"transparent\"\n stroke={enableGradients ? `url(#${gradientId})` : startColor}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeDasharray={`${2 * Math.PI * outerRadius}`}\n strokeDashoffset={`${2 * Math.PI * outerRadius * (1 - percentage / 100)}`}\n transform=\"rotate(-90 50 50)\"\n filter={enableShadows ? `url(#${shadowId})` : undefined}\n />\n </svg>\n\n {showPercentage && (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <span className=\"text-xs font-bold text-gray-700 dark:text-gray-300\">\n {percentage.toFixed(1)}%\n </span>\n </div>\n )}\n </div>\n </div>\n )\n })}\n </div>\n )\n}","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// Breadcrumbs - Navigation breadcrumb trail\n// ============================================================================\n\nexport interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {\n /** Custom separator element */\n separator?: React.ReactNode\n /** Maximum number of items to display before collapsing */\n maxItems?: number\n /** Number of items to show at the beginning when collapsed */\n itemsBeforeCollapse?: number\n /** Number of items to show at the end when collapsed */\n itemsAfterCollapse?: number\n}\n\nconst Breadcrumbs = React.forwardRef<HTMLElement, BreadcrumbsProps>(\n (\n {\n separator,\n maxItems,\n itemsBeforeCollapse = 1,\n itemsAfterCollapse = 2,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const childArray = React.Children.toArray(children)\n const totalItems = childArray.length\n\n // Default separator\n const separatorElement = separator ?? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-muted-foreground\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n )\n\n // Determine if we need to collapse\n const shouldCollapse = maxItems && totalItems > maxItems\n\n let displayedItems: React.ReactNode[]\n\n if (shouldCollapse) {\n const startItems = childArray.slice(0, itemsBeforeCollapse)\n const endItems = childArray.slice(-itemsAfterCollapse)\n\n displayedItems = [\n ...startItems,\n <BreadcrumbEllipsis key=\"ellipsis\" />,\n ...endItems,\n ]\n } else {\n displayedItems = childArray\n }\n\n return (\n <nav ref={ref} aria-label=\"Breadcrumb\" className={className} {...props}>\n <ol className=\"flex items-center gap-1.5 flex-wrap\">\n {displayedItems.map((child, index) => (\n <li key={index} className=\"flex items-center gap-1.5\">\n {index > 0 && (\n <span className=\"flex items-center\" aria-hidden=\"true\">\n {separatorElement}\n </span>\n )}\n {child}\n </li>\n ))}\n </ol>\n </nav>\n )\n }\n)\nBreadcrumbs.displayName = 'Breadcrumbs'\n\n// ============================================================================\n// BreadcrumbItem - Individual breadcrumb item\n// ============================================================================\n\nexport interface BreadcrumbItemProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Whether this is the current/active page */\n current?: boolean\n /** Href for the breadcrumb link */\n href?: string\n /** Click handler */\n onClick?: React.MouseEventHandler<HTMLAnchorElement | HTMLSpanElement>\n}\n\nconst BreadcrumbItem = React.forwardRef<HTMLSpanElement, BreadcrumbItemProps>(\n ({ current = false, href, onClick, className, children, ...props }, ref) => {\n const baseClasses = cn(\n 'text-sm transition-colors',\n current\n ? 'font-medium text-foreground'\n : 'text-muted-foreground hover:text-foreground',\n !current && (href || onClick) && 'cursor-pointer',\n className\n )\n\n if (current) {\n return (\n <span\n ref={ref}\n aria-current=\"page\"\n className={baseClasses}\n {...props}\n >\n {children}\n </span>\n )\n }\n\n if (href) {\n return (\n <a\n href={href}\n onClick={onClick}\n className={baseClasses}\n >\n {children}\n </a>\n )\n }\n\n return (\n <span\n ref={ref}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n onClick={onClick}\n onKeyDown={onClick ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as unknown as React.MouseEvent<HTMLSpanElement>)\n }\n } : undefined}\n className={baseClasses}\n {...props}\n >\n {children}\n </span>\n )\n }\n)\nBreadcrumbItem.displayName = 'BreadcrumbItem'\n\n// ============================================================================\n// BreadcrumbLink - Styled link for breadcrumbs (alias for convenience)\n// ============================================================================\n\nexport interface BreadcrumbLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {}\n\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n ({ className, ...props }, ref) => (\n <a\n ref={ref}\n className={cn(\n 'text-sm text-muted-foreground hover:text-foreground transition-colors',\n className\n )}\n {...props}\n />\n )\n)\nBreadcrumbLink.displayName = 'BreadcrumbLink'\n\n// ============================================================================\n// BreadcrumbSeparator - Custom separator component\n// ============================================================================\n\nexport interface BreadcrumbSeparatorProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nconst BreadcrumbSeparator = React.forwardRef<HTMLSpanElement, BreadcrumbSeparatorProps>(\n ({ className, children, ...props }, ref) => (\n <span\n ref={ref}\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('text-muted-foreground', className)}\n {...props}\n >\n {children ?? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n )}\n </span>\n )\n)\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator'\n\n// ============================================================================\n// BreadcrumbEllipsis - Ellipsis for collapsed breadcrumbs\n// ============================================================================\n\nexport interface BreadcrumbEllipsisProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nconst BreadcrumbEllipsis = React.forwardRef<HTMLSpanElement, BreadcrumbEllipsisProps>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"19\" cy=\"12\" r=\"1\" />\n <circle cx=\"5\" cy=\"12\" r=\"1\" />\n </svg>\n </span>\n )\n)\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis'\n\n// ============================================================================\n// BreadcrumbPage - Current page indicator\n// ============================================================================\n\nexport interface BreadcrumbPageProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, BreadcrumbPageProps>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n aria-current=\"page\"\n className={cn('text-sm font-medium text-foreground', className)}\n {...props}\n />\n )\n)\nBreadcrumbPage.displayName = 'BreadcrumbPage'\n\nexport {\n Breadcrumbs,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n BreadcrumbPage,\n}\n","import * as React from 'react'\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// DropdownMenu Root\n// ============================================================================\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\n// ============================================================================\n// DropdownMenu SubTrigger\n// ============================================================================\n\nexport interface DropdownMenuSubTriggerProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> {\n inset?: boolean\n}\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n DropdownMenuSubTriggerProps\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n 'flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none',\n 'focus:bg-muted data-[state=open]:bg-muted',\n 'text-foreground',\n inset && 'pl-8',\n className\n )}\n {...props}\n >\n {children}\n <svg\n className=\"ml-auto h-4 w-4\"\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 >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName\n\n// ============================================================================\n// DropdownMenu SubContent\n// ============================================================================\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-lg',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName\n\n// ============================================================================\n// DropdownMenu Content\n// ============================================================================\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\n// ============================================================================\n// DropdownMenu Item\n// ============================================================================\n\nexport interface DropdownMenuItemProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> {\n inset?: boolean\n}\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n DropdownMenuItemProps\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors',\n 'focus:bg-muted focus:text-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n '[&>svg]:h-4 [&>svg]:w-4 [&>svg]:shrink-0',\n inset && 'pl-8',\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\n// ============================================================================\n// DropdownMenu CheckboxItem\n// ============================================================================\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n 'relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors',\n 'focus:bg-muted focus:text-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <svg\n className=\"h-4 w-4\"\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 >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName\n\n// ============================================================================\n// DropdownMenu RadioItem\n// ============================================================================\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n 'relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors',\n 'focus:bg-muted focus:text-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <svg\n className=\"h-2 w-2 fill-current\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n </svg>\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\n// ============================================================================\n// DropdownMenu Label\n// ============================================================================\n\nexport interface DropdownMenuLabelProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> {\n inset?: boolean\n}\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n DropdownMenuLabelProps\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n 'px-2 py-1.5 text-sm font-semibold text-foreground',\n inset && 'pl-8',\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\n// ============================================================================\n// DropdownMenu Separator\n// ============================================================================\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\n// ============================================================================\n// DropdownMenu Shortcut\n// ============================================================================\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut'\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","import * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// Drawer / Sheet - Slide-out panel component\n// ============================================================================\n\nconst Drawer = DialogPrimitive.Root\nconst DrawerTrigger = DialogPrimitive.Trigger\nconst DrawerClose = DialogPrimitive.Close\nconst DrawerPortal = DialogPrimitive.Portal\n\n// ============================================================================\n// DrawerOverlay\n// ============================================================================\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/50',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n />\n))\nDrawerOverlay.displayName = DialogPrimitive.Overlay.displayName\n\n// ============================================================================\n// DrawerContent\n// ============================================================================\n\nexport interface DrawerContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n /** Side from which the drawer slides in */\n side?: 'left' | 'right' | 'top' | 'bottom'\n /** Whether to show the close button */\n showClose?: boolean\n}\n\nconst slideVariants = {\n left: 'inset-y-0 left-0 h-full w-3/4 max-w-sm data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left',\n right: 'inset-y-0 right-0 h-full w-3/4 max-w-sm data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right',\n top: 'inset-x-0 top-0 w-full data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom: 'inset-x-0 bottom-0 w-full data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n}\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DrawerContentProps\n>(({ side = 'right', showClose = true, className, children, ...props }, ref) => (\n <DrawerPortal>\n <DrawerOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed z-50 bg-background shadow-lg',\n 'flex flex-col',\n 'duration-300 data-[state=open]:animate-in data-[state=closed]:animate-out',\n slideVariants[side],\n className\n )}\n {...props}\n >\n {children}\n {showClose && (\n <DrawerClose\n className={cn(\n 'absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity',\n 'hover:opacity-100',\n 'focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n 'disabled:pointer-events-none'\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n <span className=\"sr-only\">Close</span>\n </DrawerClose>\n )}\n </DialogPrimitive.Content>\n </DrawerPortal>\n))\nDrawerContent.displayName = 'DrawerContent'\n\n// ============================================================================\n// DrawerHeader\n// ============================================================================\n\nexport interface DrawerHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst DrawerHeader = React.forwardRef<HTMLDivElement, DrawerHeaderProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col gap-1.5 p-6 pb-0', className)}\n {...props}\n />\n )\n)\nDrawerHeader.displayName = 'DrawerHeader'\n\n// ============================================================================\n// DrawerTitle\n// ============================================================================\n\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold text-foreground', className)}\n {...props}\n />\n))\nDrawerTitle.displayName = DialogPrimitive.Title.displayName\n\n// ============================================================================\n// DrawerDescription\n// ============================================================================\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nDrawerDescription.displayName = DialogPrimitive.Description.displayName\n\n// ============================================================================\n// DrawerBody\n// ============================================================================\n\nexport interface DrawerBodyProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst DrawerBody = React.forwardRef<HTMLDivElement, DrawerBodyProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex-1 overflow-auto p-6', className)}\n {...props}\n />\n )\n)\nDrawerBody.displayName = 'DrawerBody'\n\n// ============================================================================\n// DrawerFooter\n// ============================================================================\n\nexport interface DrawerFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst DrawerFooter = React.forwardRef<HTMLDivElement, DrawerFooterProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col-reverse gap-2 p-6 pt-0 sm:flex-row sm:justify-end',\n className\n )}\n {...props}\n />\n )\n)\nDrawerFooter.displayName = 'DrawerFooter'\n\n// ============================================================================\n// Sheet - Alias for Drawer (common alternative name)\n// ============================================================================\n\nconst Sheet = Drawer\nconst SheetTrigger = DrawerTrigger\nconst SheetClose = DrawerClose\nconst SheetPortal = DrawerPortal\nconst SheetOverlay = DrawerOverlay\nconst SheetContent = DrawerContent\nconst SheetHeader = DrawerHeader\nconst SheetTitle = DrawerTitle\nconst SheetDescription = DrawerDescription\nconst SheetBody = DrawerBody\nconst SheetFooter = DrawerFooter\n\nexport {\n // Drawer exports\n Drawer,\n DrawerTrigger,\n DrawerClose,\n DrawerPortal,\n DrawerOverlay,\n DrawerContent,\n DrawerHeader,\n DrawerTitle,\n DrawerDescription,\n DrawerBody,\n DrawerFooter,\n // Sheet exports (aliases)\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetPortal,\n SheetOverlay,\n SheetContent,\n SheetHeader,\n SheetTitle,\n SheetDescription,\n SheetBody,\n SheetFooter,\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// TopBar Root\n// ============================================================================\n\nexport interface TopBarProps extends React.HTMLAttributes<HTMLElement> {\n /** Whether the topbar has a bottom border */\n bordered?: boolean\n /** Whether the topbar is sticky at the top */\n sticky?: boolean\n /** Height variant */\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst sizeClasses = {\n sm: 'h-12',\n md: 'h-14',\n lg: 'h-16',\n}\n\nconst TopBar = React.forwardRef<HTMLElement, TopBarProps>(\n ({ className, bordered = true, sticky = false, size = 'md', children, ...props }, ref) => {\n return (\n <header\n ref={ref}\n className={cn(\n 'flex items-center px-4 bg-card text-foreground',\n sizeClasses[size],\n bordered && 'border-b border-border',\n sticky && 'sticky top-0 z-40',\n className\n )}\n {...props}\n >\n {children}\n </header>\n )\n }\n)\nTopBar.displayName = 'TopBar'\n\n// ============================================================================\n// TopBar Brand\n// ============================================================================\n\nexport interface TopBarBrandProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Logo element or image */\n logo?: React.ReactNode\n /** Brand name text */\n name?: string\n /** Link href for the brand */\n href?: string\n}\n\nconst TopBarBrand = React.forwardRef<HTMLDivElement, TopBarBrandProps>(\n ({ className, logo, name, href, children, ...props }, ref) => {\n const content = (\n <>\n {logo && <span className=\"shrink-0\">{logo}</span>}\n {name && <span className=\"font-semibold text-lg\">{name}</span>}\n {children}\n </>\n )\n\n if (href) {\n return (\n <div ref={ref} className={cn('flex items-center gap-2', className)} {...props}>\n <a href={href} className=\"flex items-center gap-2 hover:opacity-80 transition-opacity\">\n {content}\n </a>\n </div>\n )\n }\n\n return (\n <div ref={ref} className={cn('flex items-center gap-2', className)} {...props}>\n {content}\n </div>\n )\n }\n)\nTopBarBrand.displayName = 'TopBarBrand'\n\n// ============================================================================\n// TopBar Nav\n// ============================================================================\n\nexport interface TopBarNavProps extends React.HTMLAttributes<HTMLElement> {}\n\nconst TopBarNav = React.forwardRef<HTMLElement, TopBarNavProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <nav\n ref={ref}\n className={cn('flex items-center gap-1', className)}\n {...props}\n >\n {children}\n </nav>\n )\n }\n)\nTopBarNav.displayName = 'TopBarNav'\n\n// ============================================================================\n// TopBar NavItem\n// ============================================================================\n\nexport interface TopBarNavItemProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Whether this nav item is active */\n active?: boolean\n}\n\nconst TopBarNavItem = React.forwardRef<HTMLAnchorElement, TopBarNavItemProps>(\n ({ className, active, children, ...props }, ref) => {\n return (\n <a\n ref={ref}\n className={cn(\n 'px-3 py-2 text-sm font-medium rounded-md transition-colors cursor-pointer',\n active\n ? 'bg-muted text-foreground'\n : 'text-muted-foreground hover:text-foreground hover:bg-muted/50',\n className\n )}\n {...props}\n >\n {children}\n </a>\n )\n }\n)\nTopBarNavItem.displayName = 'TopBarNavItem'\n\n// ============================================================================\n// TopBar Section\n// ============================================================================\n\nexport interface TopBarSectionProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Alignment of the section */\n align?: 'left' | 'center' | 'right'\n}\n\nconst TopBarSection = React.forwardRef<HTMLDivElement, TopBarSectionProps>(\n ({ className, align = 'left', children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center gap-2',\n {\n 'mr-auto': align === 'left',\n 'mx-auto': align === 'center',\n 'ml-auto': align === 'right',\n },\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nTopBarSection.displayName = 'TopBarSection'\n\n// ============================================================================\n// TopBar Divider\n// ============================================================================\n\nexport interface TopBarDividerProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst TopBarDivider = React.forwardRef<HTMLDivElement, TopBarDividerProps>(\n ({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('h-6 w-px bg-border mx-2', className)}\n {...props}\n />\n )\n }\n)\nTopBarDivider.displayName = 'TopBarDivider'\n\nexport {\n TopBar,\n TopBarBrand,\n TopBarNav,\n TopBarNavItem,\n TopBarSection,\n TopBarDivider,\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// Sidebar Context\n// ============================================================================\n\ninterface SidebarContextValue {\n collapsed: boolean\n setCollapsed: (collapsed: boolean) => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextValue | undefined>(undefined)\n\nconst useSidebar = () => {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a Sidebar')\n }\n return context\n}\n\n// ============================================================================\n// Sidebar Root\n// ============================================================================\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n /** Whether the sidebar is collapsed */\n collapsed?: boolean\n /** Callback when collapsed state changes */\n onCollapsedChange?: (collapsed: boolean) => void\n /** Default collapsed state (uncontrolled) */\n defaultCollapsed?: boolean\n /** Width when expanded */\n width?: number | string\n /** Width when collapsed */\n collapsedWidth?: number | string\n /** Whether the sidebar has a right border */\n bordered?: boolean\n}\n\nconst Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n (\n {\n className,\n collapsed: controlledCollapsed,\n onCollapsedChange,\n defaultCollapsed = false,\n width = 256,\n collapsedWidth = 64,\n bordered = true,\n children,\n ...props\n },\n ref\n ) => {\n const [uncontrolledCollapsed, setUncontrolledCollapsed] = React.useState(defaultCollapsed)\n\n const isControlled = controlledCollapsed !== undefined\n const collapsed = isControlled ? controlledCollapsed : uncontrolledCollapsed\n\n const setCollapsed = React.useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setUncontrolledCollapsed(value)\n }\n onCollapsedChange?.(value)\n },\n [isControlled, onCollapsedChange]\n )\n\n return (\n <SidebarContext.Provider value={{ collapsed, setCollapsed }}>\n <aside\n ref={ref}\n className={cn(\n 'flex flex-col bg-card text-foreground transition-all duration-300 ease-in-out h-full',\n bordered && 'border-r border-border',\n className\n )}\n style={{\n width: collapsed ? collapsedWidth : width,\n minWidth: collapsed ? collapsedWidth : width,\n }}\n {...props}\n >\n {children}\n </aside>\n </SidebarContext.Provider>\n )\n }\n)\nSidebar.displayName = 'Sidebar'\n\n// ============================================================================\n// Sidebar Header\n// ============================================================================\n\nexport interface SidebarHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, SidebarHeaderProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('flex items-center h-14 px-4 border-b border-border shrink-0', className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nSidebarHeader.displayName = 'SidebarHeader'\n\n// ============================================================================\n// Sidebar Content\n// ============================================================================\n\nexport interface SidebarContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, SidebarContentProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('flex-1 overflow-y-auto py-2', className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nSidebarContent.displayName = 'SidebarContent'\n\n// ============================================================================\n// Sidebar Footer\n// ============================================================================\n\nexport interface SidebarFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, SidebarFooterProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('mt-auto border-t border-border p-4 shrink-0', className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nSidebarFooter.displayName = 'SidebarFooter'\n\n// ============================================================================\n// Sidebar Group\n// ============================================================================\n\nexport interface SidebarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Group label */\n label?: string\n}\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, SidebarGroupProps>(\n ({ className, label, children, ...props }, ref) => {\n const { collapsed } = useSidebar()\n\n return (\n <div ref={ref} className={cn('px-2 py-2', className)} {...props}>\n {label && !collapsed && (\n <div className=\"px-2 py-1.5 text-xs font-semibold text-muted-foreground uppercase tracking-wider\">\n {label}\n </div>\n )}\n {label && collapsed && (\n <div className=\"flex justify-center py-1.5\">\n <div className=\"h-px w-4 bg-border\" />\n </div>\n )}\n <div className=\"space-y-1\">{children}</div>\n </div>\n )\n }\n)\nSidebarGroup.displayName = 'SidebarGroup'\n\n// ============================================================================\n// Sidebar Item\n// ============================================================================\n\nexport interface SidebarItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Icon element */\n icon?: React.ReactNode\n /** Whether this item is active */\n active?: boolean\n /** Whether this item is disabled */\n disabled?: boolean\n /** Badge or count to show */\n badge?: React.ReactNode\n /** Click handler */\n onClick?: () => void\n /** Link href */\n href?: string\n}\n\nconst SidebarItem = React.forwardRef<HTMLDivElement, SidebarItemProps>(\n ({ className, icon, active, disabled, badge, onClick, href, children, ...props }, ref) => {\n const { collapsed } = useSidebar()\n\n const content = (\n <>\n {icon && (\n <span className={cn('shrink-0', collapsed ? 'mx-auto' : '')}>\n {icon}\n </span>\n )}\n {!collapsed && (\n <>\n <span className=\"flex-1 truncate\">{children}</span>\n {badge && <span className=\"shrink-0\">{badge}</span>}\n </>\n )}\n </>\n )\n\n const itemClasses = cn(\n 'flex items-center gap-3 px-3 py-2 rounded-md text-sm font-medium transition-colors cursor-pointer',\n active\n ? 'bg-accent text-accent-foreground'\n : 'text-muted-foreground hover:text-foreground hover:bg-muted',\n disabled && 'opacity-50 pointer-events-none',\n collapsed && 'justify-center px-2',\n className\n )\n\n if (href) {\n return (\n <div ref={ref} {...props}>\n <a href={href} className={itemClasses}>\n {content}\n </a>\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n className={itemClasses}\n onClick={disabled ? undefined : onClick}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n {...props}\n >\n {content}\n </div>\n )\n }\n)\nSidebarItem.displayName = 'SidebarItem'\n\n// ============================================================================\n// Sidebar SubMenu\n// ============================================================================\n\nexport interface SidebarSubMenuProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Icon element */\n icon?: React.ReactNode\n /** Label text */\n label: string\n /** Whether the submenu is open by default */\n defaultOpen?: boolean\n}\n\nconst SidebarSubMenu = React.forwardRef<HTMLDivElement, SidebarSubMenuProps>(\n ({ className, icon, label, defaultOpen = false, children, ...props }, ref) => {\n const [open, setOpen] = React.useState(defaultOpen)\n const { collapsed } = useSidebar()\n\n // Close submenu when sidebar collapses\n React.useEffect(() => {\n if (collapsed) {\n setOpen(false)\n }\n }, [collapsed])\n\n if (collapsed) {\n return (\n <SidebarItem icon={icon} className={className}>\n {label}\n </SidebarItem>\n )\n }\n\n return (\n <div ref={ref} className={className} {...props}>\n <div\n className={cn(\n 'flex items-center gap-3 px-3 py-2 rounded-md text-sm font-medium transition-colors cursor-pointer',\n 'text-muted-foreground hover:text-foreground hover:bg-muted'\n )}\n onClick={() => setOpen(!open)}\n role=\"button\"\n tabIndex={0}\n >\n {icon && <span className=\"shrink-0\">{icon}</span>}\n <span className=\"flex-1 truncate\">{label}</span>\n <svg\n className={cn('h-4 w-4 shrink-0 transition-transform', open && 'rotate-90')}\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 >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </div>\n {open && (\n <div className=\"ml-4 pl-3 border-l border-border space-y-1 mt-1\">\n {children}\n </div>\n )}\n </div>\n )\n }\n)\nSidebarSubMenu.displayName = 'SidebarSubMenu'\n\n// ============================================================================\n// Sidebar Toggle\n// ============================================================================\n\nexport interface SidebarToggleProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nconst SidebarToggle = React.forwardRef<HTMLButtonElement, SidebarToggleProps>(\n ({ className, children, ...props }, ref) => {\n const { collapsed, setCollapsed } = useSidebar()\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={() => setCollapsed(!collapsed)}\n className={cn(\n 'inline-flex items-center justify-center rounded-md p-2 transition-colors cursor-pointer',\n 'text-muted-foreground hover:text-foreground hover:bg-muted',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className\n )}\n aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n {...props}\n >\n {children || (\n <svg\n className={cn('h-5 w-5 transition-transform', collapsed && 'rotate-180')}\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 >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n <path d=\"m14 9 3 3-3 3\" />\n </svg>\n )}\n </button>\n )\n }\n)\nSidebarToggle.displayName = 'SidebarToggle'\n\nexport {\n Sidebar,\n SidebarHeader,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarItem,\n SidebarSubMenu,\n SidebarToggle,\n useSidebar,\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// SidebarRail Context\n// ============================================================================\n\ninterface SidebarRailContextValue {\n activeRail: string | null\n setActiveRail: (rail: string | null) => void\n expanded: boolean\n setExpanded: (expanded: boolean) => void\n hoverExpand: boolean\n railExpanded: boolean\n setRailExpanded: (expanded: boolean) => void\n overlayRail: boolean\n expandableRail: boolean\n}\n\nconst SidebarRailContext = React.createContext<SidebarRailContextValue | undefined>(undefined)\n\nconst useSidebarRail = () => {\n const context = React.useContext(SidebarRailContext)\n if (!context) {\n throw new Error('useSidebarRail must be used within a SidebarRail')\n }\n return context\n}\n\n// ============================================================================\n// SidebarRail Root\n// ============================================================================\n\nexport interface SidebarRailProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Default active rail */\n defaultActiveRail?: string | null\n /** Controlled active rail */\n activeRail?: string | null\n /** Callback when active rail changes */\n onActiveRailChange?: (rail: string | null) => void\n /** Whether the panel expands on hover (vs click) */\n hoverExpand?: boolean\n /** Width of the icon rail */\n railWidth?: number\n /** Width of the expanded panel */\n panelWidth?: number\n /** Whether the icon rail can expand to show labels */\n expandableRail?: boolean\n /** Default rail expanded state (uncontrolled) */\n defaultRailExpanded?: boolean\n /** Controlled rail expanded state */\n railExpanded?: boolean\n /** Callback when rail expanded state changes */\n onRailExpandedChange?: (expanded: boolean) => void\n /** Width of expanded rail (labels visible) */\n railExpandedWidth?: number\n /** Overlay expanded rail on top of secondary panel instead of taking layout space */\n overlayRail?: boolean\n}\n\nconst SidebarRail = React.forwardRef<HTMLDivElement, SidebarRailProps>(\n (\n {\n className,\n defaultActiveRail = null,\n activeRail: controlledActiveRail,\n onActiveRailChange,\n hoverExpand = false,\n railWidth = 56,\n panelWidth = 240,\n expandableRail = false,\n defaultRailExpanded = false,\n railExpanded: controlledRailExpanded,\n onRailExpandedChange,\n railExpandedWidth = 220,\n overlayRail = false,\n children,\n ...props\n },\n ref\n ) => {\n const [uncontrolledActiveRail, setUncontrolledActiveRail] = React.useState(defaultActiveRail)\n const [expanded, setExpanded] = React.useState(!!defaultActiveRail)\n const [uncontrolledRailExpanded, setUncontrolledRailExpanded] =\n React.useState(defaultRailExpanded)\n\n const isControlled = controlledActiveRail !== undefined\n const activeRail = isControlled ? controlledActiveRail : uncontrolledActiveRail\n const isRailControlled = controlledRailExpanded !== undefined\n const railExpanded = isRailControlled ? controlledRailExpanded : uncontrolledRailExpanded\n\n const setActiveRail = React.useCallback(\n (rail: string | null) => {\n if (!isControlled) {\n setUncontrolledActiveRail(rail)\n }\n onActiveRailChange?.(rail)\n setExpanded(rail !== null)\n },\n [isControlled, onActiveRailChange]\n )\n\n const setRailExpanded = React.useCallback(\n (value: boolean) => {\n if (!isRailControlled) {\n setUncontrolledRailExpanded(value)\n }\n onRailExpandedChange?.(value)\n },\n [isRailControlled, onRailExpandedChange]\n )\n\n return (\n <SidebarRailContext.Provider\n value={{\n activeRail,\n setActiveRail,\n expanded,\n setExpanded,\n hoverExpand,\n railExpanded,\n setRailExpanded,\n overlayRail: overlayRail && expandableRail,\n expandableRail,\n }}\n >\n <div\n ref={ref}\n className={cn(\n 'flex h-full',\n overlayRail && expandableRail && 'relative',\n className\n )}\n style={\n {\n '--rail-width': `${railWidth}px`,\n '--rail-expanded-width': `${railExpandedWidth}px`,\n '--panel-width': `${panelWidth}px`,\n } as React.CSSProperties\n }\n {...props}\n >\n {children}\n </div>\n </SidebarRailContext.Provider>\n )\n }\n)\nSidebarRail.displayName = 'SidebarRail'\n\n// ============================================================================\n// IconRail - The narrow always-visible rail with icons\n// ============================================================================\n\nexport interface IconRailProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst IconRail = React.forwardRef<HTMLDivElement, IconRailProps>(\n ({ className, children, ...props }, ref) => {\n const { railExpanded, overlayRail, expandableRail } = useSidebarRail()\n const isExpanded = expandableRail && railExpanded\n\n return (\n <div\n ref={ref}\n className={cn(\n 'relative h-full shrink-0',\n isExpanded && !overlayRail ? 'w-[var(--rail-expanded-width)]' : 'w-[var(--rail-width)]'\n )}\n {...props}\n >\n <div\n className={cn(\n 'flex flex-col bg-card border-r border-border h-full',\n 'transition-[width] duration-200',\n overlayRail && isExpanded\n ? 'absolute left-0 top-0 z-30 w-[var(--rail-expanded-width)] shadow-lg'\n : 'w-full',\n className\n )}\n >\n {children}\n </div>\n </div>\n )\n }\n)\nIconRail.displayName = 'IconRail'\n\n// ============================================================================\n// IconRail Header\n// ============================================================================\n\nexport interface IconRailHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst IconRailHeader = React.forwardRef<HTMLDivElement, IconRailHeaderProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center justify-center h-14 border-b border-border shrink-0',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nIconRailHeader.displayName = 'IconRailHeader'\n\n// ============================================================================\n// IconRail Content\n// ============================================================================\n\nexport interface IconRailContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst IconRailContent = React.forwardRef<HTMLDivElement, IconRailContentProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('flex-1 flex flex-col items-center py-2 px-2 gap-1 overflow-y-auto', className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nIconRailContent.displayName = 'IconRailContent'\n\n// ============================================================================\n// IconRail Footer\n// ============================================================================\n\nexport interface IconRailFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst IconRailFooter = React.forwardRef<HTMLDivElement, IconRailFooterProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'mt-auto flex flex-col items-center py-2 gap-1 border-t border-border',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nIconRailFooter.displayName = 'IconRailFooter'\n\n// ============================================================================\n// IconRail Item - Icon button that toggles a panel\n// ============================================================================\n\nexport interface IconRailItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Unique identifier for this rail item */\n railId?: string\n /** Icon to display */\n icon: React.ReactNode\n /** Tooltip label */\n label?: string\n /** Whether this is just a button (no panel) */\n asButton?: boolean\n /** Toggle rail expansion when clicked */\n toggleRail?: boolean\n}\n\nconst IconRailItem = React.forwardRef<HTMLButtonElement, IconRailItemProps>(\n ({ className, railId, icon, label, asButton = false, toggleRail = false, onClick, ...props }, ref) => {\n const {\n activeRail,\n setActiveRail,\n hoverExpand,\n railExpanded,\n setRailExpanded,\n expandableRail,\n } =\n useSidebarRail()\n const isActive = railId ? activeRail === railId : false\n const isRailExpanded = expandableRail && railExpanded\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!asButton && railId) {\n setActiveRail(isActive ? null : railId)\n }\n if (toggleRail && expandableRail) {\n setRailExpanded(!railExpanded)\n }\n onClick?.(e)\n }\n\n const handleMouseEnter = () => {\n if (hoverExpand && !asButton && railId) {\n setActiveRail(railId)\n }\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n className={cn(\n 'flex items-center rounded-md transition-colors cursor-pointer',\n isRailExpanded\n ? 'h-10 px-3 justify-start gap-3 w-full'\n : 'w-10 h-10 justify-center',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n isActive\n ? 'bg-accent text-accent-foreground'\n : 'text-muted-foreground hover:text-foreground hover:bg-muted',\n className\n )}\n title={label}\n aria-label={label}\n {...props}\n >\n {icon}\n {isRailExpanded && label && (\n <span className=\"text-sm font-medium truncate\">{label}</span>\n )}\n </button>\n )\n }\n)\nIconRailItem.displayName = 'IconRailItem'\n\n// ============================================================================\n// RailPanel - The expandable panel\n// ============================================================================\n\nexport interface RailPanelProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Which rail this panel belongs to */\n railId: string\n /** Panel title */\n title?: string\n}\n\nconst RailPanel = React.forwardRef<HTMLDivElement, RailPanelProps>(\n ({ className, railId, title, children, ...props }, ref) => {\n const { activeRail, setActiveRail, hoverExpand } = useSidebarRail()\n const isVisible = activeRail === railId\n\n const handleMouseLeave = () => {\n if (hoverExpand) {\n setActiveRail(null)\n }\n }\n\n if (!isVisible) return null\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col bg-card border-r border-border h-full shrink-0',\n 'w-[var(--panel-width)]',\n 'animate-in slide-in-from-left-2 duration-200',\n className\n )}\n onMouseLeave={handleMouseLeave}\n {...props}\n >\n {title && (\n <div className=\"flex items-center justify-between h-14 px-4 border-b border-border shrink-0\">\n <span className=\"font-semibold text-sm\">{title}</span>\n <button\n type=\"button\"\n onClick={() => setActiveRail(null)}\n className=\"p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground cursor-pointer\"\n aria-label=\"Close panel\"\n >\n <svg\n className=\"h-4 w-4\"\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 >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n </div>\n )}\n <div className=\"flex-1 overflow-y-auto\">{children}</div>\n </div>\n )\n }\n)\nRailPanel.displayName = 'RailPanel'\n\n// ============================================================================\n// RailPanelGroup - Group items within a panel\n// ============================================================================\n\nexport interface RailPanelGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Group label */\n label?: string\n}\n\nconst RailPanelGroup = React.forwardRef<HTMLDivElement, RailPanelGroupProps>(\n ({ className, label, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('px-2 py-2', className)} {...props}>\n {label && (\n <div className=\"px-2 py-1.5 text-xs font-semibold text-muted-foreground uppercase tracking-wider\">\n {label}\n </div>\n )}\n <div className=\"space-y-1\">{children}</div>\n </div>\n )\n }\n)\nRailPanelGroup.displayName = 'RailPanelGroup'\n\n// ============================================================================\n// RailPanelItem - Item within a panel\n// ============================================================================\n\nexport interface RailPanelItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Icon element */\n icon?: React.ReactNode\n /** Whether this item is active */\n active?: boolean\n /** Whether this item is disabled */\n disabled?: boolean\n /** Badge or count */\n badge?: React.ReactNode\n /** Link href */\n href?: string\n}\n\nconst RailPanelItem = React.forwardRef<HTMLDivElement, RailPanelItemProps>(\n ({ className, icon, active, disabled, badge, href, children, onClick, ...props }, ref) => {\n const content = (\n <>\n {icon && <span className=\"shrink-0\">{icon}</span>}\n <span className=\"flex-1 truncate\">{children}</span>\n {badge && <span className=\"shrink-0\">{badge}</span>}\n </>\n )\n\n const itemClasses = cn(\n 'flex items-center gap-3 px-3 py-2 rounded-md text-sm transition-colors cursor-pointer',\n active\n ? 'bg-accent text-accent-foreground'\n : 'text-muted-foreground hover:text-foreground hover:bg-muted',\n disabled && 'opacity-50 pointer-events-none',\n className\n )\n\n if (href) {\n return (\n <div ref={ref} {...props}>\n <a href={href} className={itemClasses}>\n {content}\n </a>\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n className={itemClasses}\n onClick={disabled ? undefined : onClick}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n {...props}\n >\n {content}\n </div>\n )\n }\n)\nRailPanelItem.displayName = 'RailPanelItem'\n\nexport {\n SidebarRail,\n IconRail,\n IconRailHeader,\n IconRailContent,\n IconRailFooter,\n IconRailItem,\n RailPanel,\n RailPanelGroup,\n RailPanelItem,\n useSidebarRail,\n}\n","import * as React from 'react'\n\n// Import all components\nimport { ThemeProvider } from './theme/provider'\nimport { useTheme } from './theme/use-theme'\nimport { Button } from './components/button'\nimport { Input } from './components/input'\nimport { Textarea } from './components/textarea'\nimport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n} from './components/card'\nimport { Badge } from './components/badge'\nimport { Label } from './components/label'\nimport { Checkbox } from './components/checkbox'\nimport { Switch } from './components/switch'\nimport { Separator } from './components/separator'\nimport { Select, SelectTrigger, SelectValue, SelectContent, SelectItem, SelectGroup, SelectLabel } from './components/select'\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n} from './components/dialog'\nimport { Spinner } from './components/spinner'\nimport {\n Table,\n TableHeader,\n TableBody,\n TableRow,\n TableHead,\n TableCell,\n TableCaption,\n} from './components/table'\nimport {\n Pagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n} from './components/pagination'\nimport { Combobox } from './components/combobox'\n\n// Section wrapper component\nconst Section = ({ title, children }: { title: string; children: React.ReactNode }) => (\n <div className=\"mb-8\">\n <h2 className=\"text-xl font-semibold mb-4 text-foreground\">{title}</h2>\n <div className=\"p-4 border border-border rounded-lg bg-background\">{children}</div>\n </div>\n)\n\n// Theme toggle component\nconst ThemeToggle = () => {\n const { theme, setTheme } = useTheme()\n return (\n <div className=\"flex items-center gap-2\">\n <Label>Theme:</Label>\n <Select value={theme} onValueChange={(value) => setTheme(value as 'light' | 'dark' | 'system')}>\n <SelectTrigger className=\"w-32\">\n <SelectValue placeholder=\"Select theme\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"light\">Light</SelectItem>\n <SelectItem value=\"dark\">Dark</SelectItem>\n <SelectItem value=\"system\">System</SelectItem>\n </SelectContent>\n </Select>\n </div>\n )\n}\n\n// Main Playground Component\nconst PlaygroundContent = () => {\n const [dialogOpen, setDialogOpen] = React.useState(false)\n const [checkboxChecked, setCheckboxChecked] = React.useState(false)\n const [switchChecked, setSwitchChecked] = React.useState(false)\n const [inputValue, setInputValue] = React.useState('')\n const [textareaValue, setTextareaValue] = React.useState('')\n const [selectValue, setSelectValue] = React.useState('')\n const [comboboxValue, setComboboxValue] = React.useState<\n string | Record<string, unknown> | null\n >(null)\n\n const comboboxOptions = [\n { value: 'react', label: 'React' },\n { value: 'vue', label: 'Vue' },\n { value: 'angular', label: 'Angular' },\n { value: 'svelte', label: 'Svelte' },\n { value: 'solid', label: 'SolidJS' },\n ]\n\n return (\n <div className=\"min-h-screen bg-background p-8\">\n <div className=\"max-w-4xl mx-auto\">\n <div className=\"flex items-center justify-between mb-8\">\n <h1 className=\"text-3xl font-bold text-foreground\">@onesaz/ui Playground</h1>\n <ThemeToggle />\n </div>\n\n {/* Buttons */}\n <Section title=\"Button\">\n <div className=\"flex flex-wrap gap-4\">\n <Button variant=\"default\">Default</Button>\n <Button variant=\"destructive\">Destructive</Button>\n <Button variant=\"outline\">Outline</Button>\n <Button variant=\"secondary\">Secondary</Button>\n <Button variant=\"ghost\">Ghost</Button>\n <Button variant=\"link\">Link</Button>\n </div>\n <div className=\"flex flex-wrap gap-4 mt-4\">\n <Button size=\"sm\">Small</Button>\n <Button size=\"default\">Default</Button>\n <Button size=\"lg\">Large</Button>\n <Button size=\"icon\">🔔</Button>\n </div>\n <div className=\"flex flex-wrap gap-4 mt-4\">\n <Button disabled>Disabled</Button>\n <Button variant=\"outline\" disabled>Disabled Outline</Button>\n </div>\n </Section>\n\n {/* Input */}\n <Section title=\"Input\">\n <div className=\"space-y-4 max-w-md\">\n <div>\n <Label htmlFor=\"input-default\">Default Input</Label>\n <Input\n id=\"input-default\"\n placeholder=\"Enter text...\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n />\n </div>\n <div>\n <Label htmlFor=\"input-disabled\">Disabled Input</Label>\n <Input id=\"input-disabled\" placeholder=\"Disabled...\" disabled />\n </div>\n <div>\n <Label htmlFor=\"input-type\">Email Input</Label>\n <Input id=\"input-type\" type=\"email\" placeholder=\"email@example.com\" />\n </div>\n </div>\n </Section>\n\n {/* Textarea */}\n <Section title=\"Textarea\">\n <div className=\"space-y-4 max-w-md\">\n <div>\n <Label htmlFor=\"textarea-default\">Default Textarea</Label>\n <Textarea\n id=\"textarea-default\"\n placeholder=\"Enter long text...\"\n value={textareaValue}\n onChange={(e) => setTextareaValue(e.target.value)}\n />\n </div>\n <div>\n <Label htmlFor=\"textarea-disabled\">Disabled Textarea</Label>\n <Textarea id=\"textarea-disabled\" placeholder=\"Disabled...\" disabled />\n </div>\n </div>\n </Section>\n\n {/* Select */}\n <Section title=\"Select\">\n <div className=\"space-y-4 max-w-md\">\n <div>\n <Label>Default Select</Label>\n <Select value={selectValue} onValueChange={setSelectValue}>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select an option...\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"option1\">Option 1</SelectItem>\n <SelectItem value=\"option2\">Option 2</SelectItem>\n <SelectItem value=\"option3\">Option 3</SelectItem>\n </SelectContent>\n </Select>\n </div>\n <div>\n <Label>Grouped Select</Label>\n <Select>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select a food...\" />\n </SelectTrigger>\n <SelectContent>\n <SelectGroup>\n <SelectLabel>Fruits</SelectLabel>\n <SelectItem value=\"apple\">Apple</SelectItem>\n <SelectItem value=\"banana\">Banana</SelectItem>\n </SelectGroup>\n <SelectGroup>\n <SelectLabel>Vegetables</SelectLabel>\n <SelectItem value=\"carrot\">Carrot</SelectItem>\n <SelectItem value=\"potato\">Potato</SelectItem>\n </SelectGroup>\n </SelectContent>\n </Select>\n </div>\n <div>\n <Label>Disabled Select</Label>\n <Select disabled>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Disabled...\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"none\">None</SelectItem>\n </SelectContent>\n </Select>\n </div>\n </div>\n </Section>\n\n {/* Combobox */}\n <Section title=\"Combobox (Searchable Select)\">\n <div className=\"space-y-4 max-w-md\">\n <div>\n <Label>Framework</Label>\n <Combobox\n options={comboboxOptions}\n value={comboboxValue}\n onChange={(nextValue) => {\n setComboboxValue(nextValue as string | Record<string, unknown> | null)\n }}\n placeholder=\"Search frameworks...\"\n />\n </div>\n </div>\n </Section>\n\n {/* Checkbox & Switch */}\n <Section title=\"Checkbox & Switch\">\n <div className=\"space-y-4\">\n <div className=\"flex items-center gap-2\">\n <Checkbox\n id=\"checkbox\"\n checked={checkboxChecked}\n onChange={(e) => setCheckboxChecked(e.target.checked)}\n />\n <Label htmlFor=\"checkbox\">Accept terms and conditions</Label>\n </div>\n <div className=\"flex items-center gap-2\">\n <Checkbox id=\"checkbox-disabled\" disabled />\n <Label htmlFor=\"checkbox-disabled\">Disabled checkbox</Label>\n </div>\n <Separator />\n <div className=\"flex items-center gap-2\">\n <Switch\n id=\"switch\"\n checked={switchChecked}\n onChange={(e) => setSwitchChecked(e.target.checked)}\n />\n <Label htmlFor=\"switch\">Enable notifications</Label>\n </div>\n <div className=\"flex items-center gap-2\">\n <Switch id=\"switch-disabled\" disabled />\n <Label htmlFor=\"switch-disabled\">Disabled switch</Label>\n </div>\n </div>\n </Section>\n\n {/* Badge */}\n <Section title=\"Badge\">\n <div className=\"flex flex-wrap gap-4\">\n <Badge>Default</Badge>\n <Badge variant=\"secondary\">Secondary</Badge>\n <Badge variant=\"destructive\">Destructive</Badge>\n <Badge variant=\"outline\">Outline</Badge>\n </div>\n </Section>\n\n {/* Card */}\n <Section title=\"Card\">\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Card>\n <CardHeader>\n <CardTitle>Card Title</CardTitle>\n <CardDescription>Card description goes here</CardDescription>\n </CardHeader>\n <CardContent>\n <p className=\"text-foreground\">This is the card content area.</p>\n </CardContent>\n <CardFooter>\n <Button variant=\"outline\" className=\"mr-2\">Cancel</Button>\n <Button>Submit</Button>\n </CardFooter>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Another Card</CardTitle>\n <CardDescription>With different content</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2\">\n <Label htmlFor=\"card-input\">Name</Label>\n <Input id=\"card-input\" placeholder=\"Enter name...\" />\n </div>\n </CardContent>\n <CardFooter>\n <Button className=\"w-full\">Save</Button>\n </CardFooter>\n </Card>\n </div>\n </Section>\n\n {/* Dialog */}\n <Section title=\"Dialog\">\n <Button onClick={() => setDialogOpen(true)}>Open Dialog</Button>\n <Dialog open={dialogOpen} onOpenChange={setDialogOpen}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Create New Zone</DialogTitle>\n <DialogDescription>\n Fill in the details below to create a new zone.\n </DialogDescription>\n </DialogHeader>\n <div className=\"space-y-4 py-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <Label htmlFor=\"zone-name\">Zone Name *</Label>\n <Input id=\"zone-name\" placeholder=\"eg:hyderabad\" />\n </div>\n <div>\n <Label htmlFor=\"zone-code\">Zone Code *</Label>\n <Input id=\"zone-code\" placeholder=\"eg :hyd022\" />\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <Label>State *</Label>\n <Select>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select state\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"telangana\">TELANGANA</SelectItem>\n <SelectItem value=\"andhra\">ANDHRA PRADESH</SelectItem>\n </SelectContent>\n </Select>\n </div>\n <div>\n <Label>District *</Label>\n <Select>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select District\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"hyderabad\">HYDERABAD</SelectItem>\n <SelectItem value=\"rangareddy\">RANGAREDDY</SelectItem>\n </SelectContent>\n </Select>\n </div>\n </div>\n </div>\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => setDialogOpen(false)}>\n CANCEL\n </Button>\n <Button onClick={() => setDialogOpen(false)}>Create</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </Section>\n\n {/* Table */}\n <Section title=\"Table\">\n <Table>\n <TableCaption>A list of recent invoices</TableCaption>\n <TableHeader>\n <TableRow>\n <TableHead>Invoice</TableHead>\n <TableHead>Status</TableHead>\n <TableHead>Method</TableHead>\n <TableHead className=\"text-right\">Amount</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n <TableRow>\n <TableCell>INV001</TableCell>\n <TableCell><Badge>Paid</Badge></TableCell>\n <TableCell>Credit Card</TableCell>\n <TableCell className=\"text-right\">$250.00</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>INV002</TableCell>\n <TableCell><Badge variant=\"secondary\">Pending</Badge></TableCell>\n <TableCell>PayPal</TableCell>\n <TableCell className=\"text-right\">$150.00</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>INV003</TableCell>\n <TableCell><Badge variant=\"destructive\">Failed</Badge></TableCell>\n <TableCell>Bank Transfer</TableCell>\n <TableCell className=\"text-right\">$350.00</TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </Section>\n\n {/* Pagination */}\n <Section title=\"Pagination\">\n <Pagination>\n <PaginationContent>\n <PaginationItem>\n <PaginationPrevious onClick={() => console.log('Previous')} />\n </PaginationItem>\n <PaginationItem>\n <PaginationLink isActive>1</PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationLink>2</PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationLink>3</PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationEllipsis />\n </PaginationItem>\n <PaginationItem>\n <PaginationNext onClick={() => console.log('Next')} />\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n </Section>\n\n {/* Spinner */}\n <Section title=\"Spinner\">\n <div className=\"flex items-center gap-8\">\n <div className=\"text-center\">\n <Spinner size=\"sm\" />\n <p className=\"text-sm text-muted-foreground mt-2\">Small</p>\n </div>\n <div className=\"text-center\">\n <Spinner size=\"default\" />\n <p className=\"text-sm text-muted-foreground mt-2\">Default</p>\n </div>\n <div className=\"text-center\">\n <Spinner size=\"lg\" />\n <p className=\"text-sm text-muted-foreground mt-2\">Large</p>\n </div>\n </div>\n </Section>\n\n {/* Separator */}\n <Section title=\"Separator\">\n <div className=\"space-y-4\">\n <p className=\"text-foreground\">Content above separator</p>\n <Separator />\n <p className=\"text-foreground\">Content below separator</p>\n <div className=\"flex items-center h-10\">\n <span className=\"text-foreground\">Left</span>\n <Separator orientation=\"vertical\" className=\"mx-4\" />\n <span className=\"text-foreground\">Right</span>\n </div>\n </div>\n </Section>\n\n {/* Typography Colors */}\n <Section title=\"Typography & Colors\">\n <div className=\"space-y-2\">\n <p className=\"text-foreground\">text-foreground - Primary text color</p>\n <p className=\"text-muted-foreground\">text-muted-foreground - Muted text color</p>\n <p className=\"text-accent\">text-accent - Accent color</p>\n <p className=\"text-destructive\">text-destructive - Destructive color</p>\n </div>\n </Section>\n </div>\n </div>\n )\n}\n\n// Exported Playground wrapped with ThemeProvider\nexport const Playground = () => (\n <ThemeProvider defaultTheme=\"light\">\n <PlaygroundContent />\n </ThemeProvider>\n)\n\nexport default Playground\n"],"mappings":"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","names":["value","React","jsx","React","jsx","React","jsx","spacingClasses","alignItemsClasses","justifyContentClasses","React","jsx","colorClasses","alignClasses","React","jsx","React","jsx","React","jsx","React","jsx","React","React","jsx","jsx","jsxs","React","jsx","React","jsx","jsxs","React","jsx","jsxs","sizeClasses","React","jsx","jsxs","marginClasses","React","Fragment","jsx","jsxs","React","jsx","React","jsx","React","jsx","React","jsx","jsxs","React","jsx","jsxs","jsx","React","jsx","jsxs","React","jsx","jsxs","React","jsx","React","jsx","jsxs","CheckIcon","Icon","React","jsx","jsxs","React","Fragment","jsx","jsxs","React","jsx","jsxs","variantClasses","React","jsx","React","jsx","jsxs","sizeClasses","React","jsx","jsxs","variantClasses","gapClasses","React","jsx","jsxs","React","Fragment","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","List","Tooltip","accentColors","Fragment","jsx","jsxs","Tooltip","percentage","React","jsx","jsxs","React","jsx","jsxs","React","DialogPrimitive","jsx","jsxs","React","Fragment","jsx","jsxs","sizeClasses","React","Fragment","jsx","jsxs","React","Fragment","jsx","jsxs","React","jsx","jsxs"]}
|
|
1
|
+
{"version":3,"sources":["../src/theme/provider.tsx","../src/theme/context.ts","../src/theme/use-theme.ts","../src/utils/cn.ts","../src/components/box.tsx","../src/components/stack.tsx","../src/components/grid.tsx","../src/components/typography.tsx","../src/components/button.tsx","../src/components/input.tsx","../src/components/input-adornment.tsx","../src/components/textarea.tsx","../src/components/text-field.tsx","../src/components/label.tsx","../src/components/checkbox.tsx","../src/components/switch.tsx","../src/components/radio.tsx","../src/components/form.tsx","../src/components/slider.tsx","../src/components/card.tsx","../src/components/badge.tsx","../src/components/separator.tsx","../src/components/accordion.tsx","../src/components/select/index.tsx","../src/components/dialog/index.tsx","../src/components/alert-dialog.tsx","../src/components/spinner.tsx","../src/components/alert.tsx","../src/components/tabs.tsx","../src/components/tooltip.tsx","../src/components/progress.tsx","../src/components/table.tsx","../src/components/avatar.tsx","../src/components/skeleton.tsx","../src/components/pagination.tsx","../src/components/combobox/index.tsx","../src/components/data-grid/index.tsx","../src/components/list.tsx","../src/components/charts.tsx","../src/components/breadcrumbs.tsx","../src/components/dropdown-menu.tsx","../src/components/drawer.tsx","../src/components/topbar.tsx","../src/components/sidebar.tsx","../src/components/sidebar-rail.tsx","../src/playground.tsx"],"sourcesContent":["import * as React from 'react'\nimport {\n accentColors,\n grayColors,\n radiusPresets,\n lightTheme,\n darkTheme,\n type AccentColor,\n type GrayColor,\n type RadiusPreset,\n type Theme,\n} from '@onesaz/tokens'\nimport { ThemeContext } from './context'\n\nexport interface ThemeProviderProps {\n children: React.ReactNode\n defaultTheme?: Theme\n accentColor?: AccentColor\n grayColor?: GrayColor\n radius?: RadiusPreset\n storageKey?: string\n}\n\nfunction getSystemTheme(): 'light' | 'dark' {\n if (typeof window === 'undefined') return 'light'\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n}\n\nexport function ThemeProvider({\n children,\n defaultTheme = 'system',\n accentColor: defaultAccent = 'purple',\n grayColor: defaultGray = 'slate',\n radius: defaultRadius = 'medium',\n storageKey = 'onesaz-theme',\n}: ThemeProviderProps) {\n const [theme, setThemeState] = React.useState<Theme>(defaultTheme)\n const [accentColor, setAccentColorState] = React.useState<AccentColor>(defaultAccent)\n const [grayColor, setGrayColorState] = React.useState<GrayColor>(defaultGray)\n const [radius, setRadiusState] = React.useState<RadiusPreset>(defaultRadius)\n\n const [resolvedTheme, setResolvedTheme] = React.useState<'light' | 'dark'>(() =>\n defaultTheme === 'system' ? getSystemTheme() : defaultTheme === 'dark' ? 'dark' : 'light'\n )\n\n // Sync state with props when they change (important for Storybook controls)\n React.useEffect(() => {\n setThemeState(defaultTheme)\n }, [defaultTheme])\n\n React.useEffect(() => {\n setAccentColorState(defaultAccent)\n }, [defaultAccent])\n\n React.useEffect(() => {\n setGrayColorState(defaultGray)\n }, [defaultGray])\n\n React.useEffect(() => {\n setRadiusState(defaultRadius)\n }, [defaultRadius])\n\n // Listen for system theme changes\n React.useEffect(() => {\n if (theme !== 'system') {\n setResolvedTheme(theme)\n return\n }\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n setResolvedTheme(mediaQuery.matches ? 'dark' : 'light')\n\n const handler = (e: MediaQueryListEvent) => {\n setResolvedTheme(e.matches ? 'dark' : 'light')\n }\n\n mediaQuery.addEventListener('change', handler)\n return () => mediaQuery.removeEventListener('change', handler)\n }, [theme])\n\n // Generate CSS variables\n React.useEffect(() => {\n const root = document.documentElement\n const themeTokens = resolvedTheme === 'dark' ? darkTheme : lightTheme\n const accent = accentColors[accentColor]\n const gray = grayColors[grayColor]\n const radiusValues = radiusPresets[radius]\n\n // Set theme attribute\n root.setAttribute('data-theme', resolvedTheme)\n root.setAttribute('data-accent', accentColor)\n\n // Set gray-based semantic tokens\n root.style.setProperty('--background', gray[themeTokens.background])\n root.style.setProperty('--foreground', gray[themeTokens.foreground])\n root.style.setProperty('--card', gray[themeTokens.card])\n root.style.setProperty('--card-foreground', gray[themeTokens.cardForeground])\n root.style.setProperty('--popover', gray[themeTokens.popover])\n root.style.setProperty('--popover-foreground', gray[themeTokens.popoverForeground])\n root.style.setProperty('--muted', gray[themeTokens.muted])\n root.style.setProperty('--muted-foreground', gray[themeTokens.mutedForeground])\n root.style.setProperty('--border', gray[themeTokens.border])\n root.style.setProperty('--input', gray[themeTokens.input])\n\n // Set accent colors\n root.style.setProperty('--accent', accent[6])\n root.style.setProperty('--accent-foreground', '#ffffff')\n root.style.setProperty('--accent-hover', accent[7])\n root.style.setProperty('--ring', accent[6])\n\n // Set all accent scale values\n Object.entries(accent).forEach(([step, value]) => {\n root.style.setProperty(`--accent-${step}`, value)\n })\n\n // Set destructive colors\n root.style.setProperty('--destructive', resolvedTheme === 'dark' ? '#ef4444' : '#dc2626')\n root.style.setProperty('--destructive-foreground', '#ffffff')\n\n // Set radius\n root.style.setProperty('--radius', radiusValues.md)\n root.style.setProperty('--radius-sm', radiusValues.sm)\n root.style.setProperty('--radius-lg', radiusValues.lg)\n }, [resolvedTheme, accentColor, grayColor, radius])\n\n const setTheme = React.useCallback((newTheme: Theme) => {\n localStorage.setItem(`${storageKey}-mode`, newTheme)\n setThemeState(newTheme)\n }, [storageKey])\n\n const setAccentColor = React.useCallback((color: AccentColor) => {\n localStorage.setItem(`${storageKey}-accent`, color)\n setAccentColorState(color)\n }, [storageKey])\n\n const setGrayColor = React.useCallback((color: GrayColor) => {\n localStorage.setItem(`${storageKey}-gray`, color)\n setGrayColorState(color)\n }, [storageKey])\n\n const setRadius = React.useCallback((newRadius: RadiusPreset) => {\n localStorage.setItem(`${storageKey}-radius`, newRadius)\n setRadiusState(newRadius)\n }, [storageKey])\n\n const value = React.useMemo(\n () => ({\n theme,\n resolvedTheme,\n accentColor,\n grayColor,\n radius,\n setTheme,\n setAccentColor,\n setGrayColor,\n setRadius,\n }),\n [theme, resolvedTheme, accentColor, grayColor, radius, setTheme, setAccentColor, setGrayColor, setRadius]\n )\n\n return (\n <ThemeContext.Provider value={value}>\n {children}\n </ThemeContext.Provider>\n )\n}\n\nThemeProvider.displayName = 'ThemeProvider'\n","import { createContext } from 'react'\nimport type { AccentColor, GrayColor, RadiusPreset, Theme } from '@onesaz/tokens'\n\nexport interface ThemeContextValue {\n theme: Theme\n resolvedTheme: 'light' | 'dark'\n accentColor: AccentColor\n grayColor: GrayColor\n radius: RadiusPreset\n setTheme: (theme: Theme) => void\n setAccentColor: (color: AccentColor) => void\n setGrayColor: (color: GrayColor) => void\n setRadius: (radius: RadiusPreset) => void\n}\n\nexport const ThemeContext = createContext<ThemeContextValue | undefined>(undefined)\n","import { useContext } from 'react'\nimport { ThemeContext, type ThemeContextValue } from './context'\n\nexport function useTheme(): ThemeContextValue {\n const context = useContext(ThemeContext)\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider')\n }\n return context\n}\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Render as a different element */\n as?: React.ElementType\n /** Display type */\n display?: 'block' | 'inline-block' | 'inline' | 'flex' | 'inline-flex' | 'grid' | 'inline-grid' | 'none'\n /** Flex direction */\n flexDirection?: 'row' | 'row-reverse' | 'column' | 'column-reverse'\n /** Align items */\n alignItems?: 'start' | 'end' | 'center' | 'baseline' | 'stretch'\n /** Justify content */\n justifyContent?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly'\n /** Flex wrap */\n flexWrap?: 'wrap' | 'nowrap' | 'wrap-reverse'\n /** Gap */\n gap?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16\n /** Padding */\n p?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16\n /** Padding X */\n px?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16\n /** Padding Y */\n py?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16\n /** Margin */\n m?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 'auto'\n /** Margin X */\n mx?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 'auto'\n /** Margin Y */\n my?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 'auto'\n /** Border radius */\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full'\n /** Shadow */\n shadow?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n /** Background color */\n bg?: 'background' | 'foreground' | 'muted' | 'accent' | 'card' | 'popover' | 'destructive' | 'transparent'\n /** Text color */\n color?: 'foreground' | 'muted-foreground' | 'accent' | 'accent-foreground' | 'destructive' | 'destructive-foreground'\n /** Border */\n border?: boolean\n /** Border color */\n borderColor?: 'border' | 'input' | 'ring' | 'transparent'\n /** Width */\n w?: 'full' | 'auto' | 'screen' | 'min' | 'max' | 'fit'\n /** Height */\n h?: 'full' | 'auto' | 'screen' | 'min' | 'max' | 'fit'\n /** Position */\n position?: 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'\n /** Overflow */\n overflow?: 'auto' | 'hidden' | 'visible' | 'scroll'\n}\n\nconst displayClasses: Record<string, string> = {\n block: 'block',\n 'inline-block': 'inline-block',\n inline: 'inline',\n flex: 'flex',\n 'inline-flex': 'inline-flex',\n grid: 'grid',\n 'inline-grid': 'inline-grid',\n none: 'hidden',\n}\n\nconst flexDirectionClasses: Record<string, string> = {\n row: 'flex-row',\n 'row-reverse': 'flex-row-reverse',\n column: 'flex-col',\n 'column-reverse': 'flex-col-reverse',\n}\n\nconst alignItemsClasses: Record<string, string> = {\n start: 'items-start',\n end: 'items-end',\n center: 'items-center',\n baseline: 'items-baseline',\n stretch: 'items-stretch',\n}\n\nconst justifyContentClasses: Record<string, string> = {\n start: 'justify-start',\n end: 'justify-end',\n center: 'justify-center',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n}\n\nconst flexWrapClasses: Record<string, string> = {\n wrap: 'flex-wrap',\n nowrap: 'flex-nowrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n}\n\nconst gapClasses: Record<number, 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 16: 'gap-16',\n}\n\nconst paddingClasses: Record<number, string> = {\n 0: 'p-0',\n 1: 'p-1',\n 2: 'p-2',\n 3: 'p-3',\n 4: 'p-4',\n 5: 'p-5',\n 6: 'p-6',\n 8: 'p-8',\n 10: 'p-10',\n 12: 'p-12',\n 16: 'p-16',\n}\n\nconst paddingXClasses: Record<number, string> = {\n 0: 'px-0',\n 1: 'px-1',\n 2: 'px-2',\n 3: 'px-3',\n 4: 'px-4',\n 5: 'px-5',\n 6: 'px-6',\n 8: 'px-8',\n 10: 'px-10',\n 12: 'px-12',\n 16: 'px-16',\n}\n\nconst paddingYClasses: Record<number, string> = {\n 0: 'py-0',\n 1: 'py-1',\n 2: 'py-2',\n 3: 'py-3',\n 4: 'py-4',\n 5: 'py-5',\n 6: 'py-6',\n 8: 'py-8',\n 10: 'py-10',\n 12: 'py-12',\n 16: 'py-16',\n}\n\nconst marginClasses: Record<number | 'auto', string> = {\n 0: 'm-0',\n 1: 'm-1',\n 2: 'm-2',\n 3: 'm-3',\n 4: 'm-4',\n 5: 'm-5',\n 6: 'm-6',\n 8: 'm-8',\n 10: 'm-10',\n 12: 'm-12',\n 16: 'm-16',\n auto: 'm-auto',\n}\n\nconst marginXClasses: Record<number | 'auto', string> = {\n 0: 'mx-0',\n 1: 'mx-1',\n 2: 'mx-2',\n 3: 'mx-3',\n 4: 'mx-4',\n 5: 'mx-5',\n 6: 'mx-6',\n 8: 'mx-8',\n 10: 'mx-10',\n 12: 'mx-12',\n 16: 'mx-16',\n auto: 'mx-auto',\n}\n\nconst marginYClasses: Record<number | 'auto', string> = {\n 0: 'my-0',\n 1: 'my-1',\n 2: 'my-2',\n 3: 'my-3',\n 4: 'my-4',\n 5: 'my-5',\n 6: 'my-6',\n 8: 'my-8',\n 10: 'my-10',\n 12: 'my-12',\n 16: 'my-16',\n auto: 'my-auto',\n}\n\nconst roundedClasses: Record<string, string> = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n full: 'rounded-full',\n}\n\nconst shadowClasses: Record<string, string> = {\n none: 'shadow-none',\n sm: 'shadow-sm',\n md: 'shadow-md',\n lg: 'shadow-lg',\n xl: 'shadow-xl',\n '2xl': 'shadow-2xl',\n}\n\nconst bgClasses: Record<string, string> = {\n background: 'bg-background',\n foreground: 'bg-foreground',\n muted: 'bg-muted',\n accent: 'bg-accent',\n card: 'bg-card',\n popover: 'bg-popover',\n destructive: 'bg-destructive',\n transparent: 'bg-transparent',\n}\n\nconst colorClasses: Record<string, string> = {\n foreground: 'text-foreground',\n 'muted-foreground': 'text-muted-foreground',\n accent: 'text-accent',\n 'accent-foreground': 'text-accent-foreground',\n destructive: 'text-destructive',\n 'destructive-foreground': 'text-destructive-foreground',\n}\n\nconst borderColorClasses: Record<string, string> = {\n border: 'border-border',\n input: 'border-input',\n ring: 'border-ring',\n transparent: 'border-transparent',\n}\n\nconst widthClasses: Record<string, string> = {\n full: 'w-full',\n auto: 'w-auto',\n screen: 'w-screen',\n min: 'w-min',\n max: 'w-max',\n fit: 'w-fit',\n}\n\nconst heightClasses: Record<string, string> = {\n full: 'h-full',\n auto: 'h-auto',\n screen: 'h-screen',\n min: 'h-min',\n max: 'h-max',\n fit: 'h-fit',\n}\n\nconst positionClasses: Record<string, string> = {\n static: 'static',\n relative: 'relative',\n absolute: 'absolute',\n fixed: 'fixed',\n sticky: 'sticky',\n}\n\nconst overflowClasses: Record<string, string> = {\n auto: 'overflow-auto',\n hidden: 'overflow-hidden',\n visible: 'overflow-visible',\n scroll: 'overflow-scroll',\n}\n\nconst Box = React.forwardRef<HTMLDivElement, BoxProps>(\n (\n {\n as: Component = 'div',\n className,\n display,\n flexDirection,\n alignItems,\n justifyContent,\n flexWrap,\n gap,\n p,\n px,\n py,\n m,\n mx,\n my,\n rounded,\n shadow,\n bg,\n color,\n border,\n borderColor,\n w,\n h,\n position,\n overflow,\n ...props\n },\n ref\n ) => {\n const classes = cn(\n display && displayClasses[display],\n flexDirection && flexDirectionClasses[flexDirection],\n alignItems && alignItemsClasses[alignItems],\n justifyContent && justifyContentClasses[justifyContent],\n flexWrap && flexWrapClasses[flexWrap],\n gap !== undefined && gapClasses[gap],\n p !== undefined && paddingClasses[p],\n px !== undefined && paddingXClasses[px],\n py !== undefined && paddingYClasses[py],\n m !== undefined && marginClasses[m],\n mx !== undefined && marginXClasses[mx],\n my !== undefined && marginYClasses[my],\n rounded && roundedClasses[rounded],\n shadow && shadowClasses[shadow],\n bg && bgClasses[bg],\n color && colorClasses[color],\n border && 'border',\n borderColor && borderColorClasses[borderColor],\n w && widthClasses[w],\n h && heightClasses[h],\n position && positionClasses[position],\n overflow && overflowClasses[overflow],\n className\n )\n\n return <Component ref={ref} className={classes} {...props} />\n }\n)\nBox.displayName = 'Box'\n\nexport { Box }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Stack direction */\n direction?: 'row' | 'row-reverse' | 'column' | 'column-reverse'\n /** Spacing between items */\n spacing?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16\n /** Align items */\n align?: 'start' | 'end' | 'center' | 'baseline' | 'stretch'\n /** Justify content */\n justify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly'\n /** Wrap items */\n wrap?: 'wrap' | 'nowrap' | 'wrap-reverse'\n /** Divider between items */\n divider?: React.ReactNode\n /** Render as a different element */\n as?: React.ElementType\n}\n\nconst directionClasses: Record<string, string> = {\n row: 'flex-row',\n 'row-reverse': 'flex-row-reverse',\n column: 'flex-col',\n 'column-reverse': 'flex-col-reverse',\n}\n\nconst spacingClasses: Record<number, 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 16: 'gap-16',\n}\n\nconst alignClasses: Record<string, string> = {\n start: 'items-start',\n end: 'items-end',\n center: 'items-center',\n baseline: 'items-baseline',\n stretch: 'items-stretch',\n}\n\nconst justifyClasses: Record<string, string> = {\n start: 'justify-start',\n end: 'justify-end',\n center: 'justify-center',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n}\n\nconst wrapClasses: Record<string, string> = {\n wrap: 'flex-wrap',\n nowrap: 'flex-nowrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n}\n\nconst Stack = React.forwardRef<HTMLDivElement, StackProps>(\n (\n {\n as: Component = 'div',\n className,\n direction = 'column',\n spacing = 0,\n align,\n justify,\n wrap,\n divider,\n children,\n ...props\n },\n ref\n ) => {\n const classes = cn(\n 'flex',\n directionClasses[direction],\n spacingClasses[spacing],\n align && alignClasses[align],\n justify && justifyClasses[justify],\n wrap && wrapClasses[wrap],\n className\n )\n\n // If divider is provided, insert it between children\n if (divider) {\n const childArray = React.Children.toArray(children).filter(Boolean)\n const childrenWithDividers = childArray.reduce<React.ReactNode[]>(\n (acc, child, index) => {\n if (index === 0) {\n return [child]\n }\n return [...acc, React.cloneElement(divider as React.ReactElement, { key: `divider-${index}` }), child]\n },\n []\n )\n\n return (\n <Component ref={ref} className={classes} {...props}>\n {childrenWithDividers}\n </Component>\n )\n }\n\n return (\n <Component ref={ref} className={classes} {...props}>\n {children}\n </Component>\n )\n }\n)\nStack.displayName = 'Stack'\n\n// HStack - Horizontal Stack helper\nconst HStack = React.forwardRef<HTMLDivElement, Omit<StackProps, 'direction'>>(\n (props, ref) => <Stack ref={ref} direction=\"row\" {...props} />\n)\nHStack.displayName = 'HStack'\n\n// VStack - Vertical Stack helper\nconst VStack = React.forwardRef<HTMLDivElement, Omit<StackProps, 'direction'>>(\n (props, ref) => <Stack ref={ref} direction=\"column\" {...props} />\n)\nVStack.displayName = 'VStack'\n\nexport { Stack, HStack, VStack }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\ntype GridSize = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'auto'\ntype GridSpacing = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n /** If true, the component will be a container (uses display: grid) */\n container?: boolean\n /** If true, the component will be a grid item */\n item?: boolean\n /** Number of columns the item spans (1-12) or 'auto' */\n xs?: GridSize\n /** Columns at sm breakpoint (640px) */\n sm?: GridSize\n /** Columns at md breakpoint (768px) */\n md?: GridSize\n /** Columns at lg breakpoint (1024px) */\n lg?: GridSize\n /** Columns at xl breakpoint (1280px) */\n xl?: GridSize\n /** Columns at 2xl breakpoint (1536px) */\n xxl?: GridSize\n /** Gap between grid items */\n spacing?: GridSpacing\n /** Row gap */\n rowSpacing?: GridSpacing\n /** Column gap */\n columnSpacing?: GridSpacing\n /** Number of columns in the grid (for container) */\n columns?: 1 | 2 | 3 | 4 | 5 | 6 | 12\n /** Align items */\n alignItems?: 'start' | 'end' | 'center' | 'baseline' | 'stretch'\n /** Justify items */\n justifyItems?: 'start' | 'end' | 'center' | 'stretch'\n /** Justify content */\n justifyContent?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly'\n}\n\nconst spacingClasses: Record<GridSpacing, 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 16: 'gap-16',\n}\n\nconst rowSpacingClasses: Record<GridSpacing, 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 16: 'gap-y-16',\n}\n\nconst columnSpacingClasses: Record<GridSpacing, 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 16: 'gap-x-16',\n}\n\nconst columnsClasses: Record<number, string> = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n 4: 'grid-cols-4',\n 5: 'grid-cols-5',\n 6: 'grid-cols-6',\n 12: 'grid-cols-12',\n}\n\nconst alignItemsClasses: Record<string, string> = {\n start: 'items-start',\n end: 'items-end',\n center: 'items-center',\n baseline: 'items-baseline',\n stretch: 'items-stretch',\n}\n\nconst justifyItemsClasses: Record<string, string> = {\n start: 'justify-items-start',\n end: 'justify-items-end',\n center: 'justify-items-center',\n stretch: 'justify-items-stretch',\n}\n\nconst justifyContentClasses: Record<string, string> = {\n start: 'justify-start',\n end: 'justify-end',\n center: 'justify-center',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n}\n\n// Column span classes for different breakpoints\nconst colSpanClasses: Record<string, Record<GridSize, string>> = {\n xs: {\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 },\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 },\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 },\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 },\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 },\n xxl: {\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 },\n}\n\nconst Grid = React.forwardRef<HTMLDivElement, GridProps>(\n (\n {\n className,\n container,\n item,\n xs,\n sm,\n md,\n lg,\n xl,\n xxl,\n spacing,\n rowSpacing,\n columnSpacing,\n columns = 12,\n alignItems,\n justifyItems,\n justifyContent,\n children,\n ...props\n },\n ref\n ) => {\n const classes = cn(\n // Container styles\n container && 'grid',\n container && columnsClasses[columns],\n container && spacing !== undefined && spacingClasses[spacing],\n container && rowSpacing !== undefined && rowSpacingClasses[rowSpacing],\n container && columnSpacing !== undefined && columnSpacingClasses[columnSpacing],\n container && alignItems && alignItemsClasses[alignItems],\n container && justifyItems && justifyItemsClasses[justifyItems],\n container && justifyContent && justifyContentClasses[justifyContent],\n // Item styles (column spans)\n item && xs && colSpanClasses.xs[xs],\n item && sm && colSpanClasses.sm[sm],\n item && md && colSpanClasses.md[md],\n item && lg && colSpanClasses.lg[lg],\n item && xl && colSpanClasses.xl[xl],\n item && xxl && colSpanClasses.xxl[xxl],\n className\n )\n\n return (\n <div ref={ref} className={classes} {...props}>\n {children}\n </div>\n )\n }\n)\nGrid.displayName = 'Grid'\n\nexport { Grid }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\ntype TypographyVariant =\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | 'subtitle1'\n | 'subtitle2'\n | 'body1'\n | 'body2'\n | 'caption'\n | 'overline'\n | 'inherit'\n\ntype TypographyColor =\n | 'inherit'\n | 'primary'\n | 'secondary'\n | 'success'\n | 'warning'\n | 'error'\n | 'info'\n | 'muted'\n | 'white'\n | 'dark'\n\ntype FontWeight = 'light' | 'regular' | 'medium' | 'semibold' | 'bold'\n\nexport interface TypographyProps extends React.HTMLAttributes<HTMLElement> {\n /** Typography variant */\n variant?: TypographyVariant\n /** Text color */\n color?: TypographyColor\n /** Font weight override */\n fontWeight?: FontWeight\n /** Text transform */\n textTransform?: 'none' | 'uppercase' | 'lowercase' | 'capitalize'\n /** Text alignment */\n align?: 'left' | 'center' | 'right' | 'justify'\n /** Vertical alignment */\n verticalAlign?: 'top' | 'middle' | 'bottom' | 'baseline'\n /** Enable text gradient effect */\n textGradient?: boolean\n /** Gradient color (when textGradient is true) */\n gradientColor?: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error' | 'dark'\n /** Opacity */\n opacity?: number\n /** Render as a different element */\n as?: React.ElementType\n /** Disable bottom margin */\n gutterBottom?: boolean\n /** Prevent text wrap */\n noWrap?: boolean\n /** Paragraph mode (adds bottom margin) */\n paragraph?: boolean\n}\n\nconst variantMapping: Record<TypographyVariant, React.ElementType> = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n subtitle1: 'h6',\n subtitle2: 'h6',\n body1: 'p',\n body2: 'p',\n caption: 'span',\n overline: 'span',\n inherit: 'span',\n}\n\nconst variantClasses: Record<TypographyVariant, string> = {\n h1: 'text-4xl font-bold leading-tight tracking-tight',\n h2: 'text-3xl font-bold leading-tight tracking-tight',\n h3: 'text-2xl font-semibold leading-snug',\n h4: 'text-xl font-semibold leading-snug',\n h5: 'text-lg font-medium leading-normal',\n h6: 'text-base font-medium leading-normal',\n subtitle1: 'text-base font-normal leading-relaxed',\n subtitle2: 'text-sm font-medium leading-relaxed',\n body1: 'text-base font-normal leading-relaxed',\n body2: 'text-sm font-normal leading-relaxed',\n caption: 'text-xs font-normal leading-normal',\n overline: 'text-xs font-medium uppercase tracking-widest leading-relaxed',\n inherit: '',\n}\n\nconst colorClasses: Record<TypographyColor, string> = {\n inherit: '',\n primary: 'text-accent',\n secondary: 'text-muted-foreground',\n success: 'text-green-600 dark:text-green-400',\n warning: 'text-orange-600 dark:text-orange-400',\n error: 'text-destructive',\n info: 'text-blue-600 dark:text-blue-400',\n muted: 'text-muted-foreground',\n white: 'text-white',\n dark: 'text-foreground',\n}\n\nconst fontWeightClasses: Record<FontWeight, string> = {\n light: 'font-light',\n regular: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n}\n\nconst textTransformClasses: Record<string, string> = {\n none: 'normal-case',\n uppercase: 'uppercase',\n lowercase: 'lowercase',\n capitalize: 'capitalize',\n}\n\nconst alignClasses: Record<string, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n justify: 'text-justify',\n}\n\nconst verticalAlignClasses: Record<string, string> = {\n top: 'align-top',\n middle: 'align-middle',\n bottom: 'align-bottom',\n baseline: 'align-baseline',\n}\n\nconst gradientClasses: Record<string, string> = {\n primary: 'from-purple-5 to-purple-8',\n secondary: 'from-slate-5 to-slate-8',\n info: 'from-blue-4 to-blue-7',\n success: 'from-green-4 to-green-7',\n warning: 'from-orange-4 to-orange-7',\n error: 'from-red-4 to-red-7',\n dark: 'from-slate-7 to-slate-10',\n}\n\nconst Typography = React.forwardRef<HTMLElement, TypographyProps>(\n (\n {\n className,\n variant = 'body1',\n color = 'inherit',\n fontWeight,\n textTransform,\n align,\n verticalAlign,\n textGradient = false,\n gradientColor = 'primary',\n opacity,\n as,\n gutterBottom = false,\n noWrap = false,\n paragraph = false,\n style,\n ...props\n },\n ref\n ) => {\n const Component = as || variantMapping[variant]\n\n const classes = cn(\n variantClasses[variant],\n color !== 'inherit' && !textGradient && colorClasses[color],\n fontWeight && fontWeightClasses[fontWeight],\n textTransform && textTransformClasses[textTransform],\n align && alignClasses[align],\n verticalAlign && verticalAlignClasses[verticalAlign],\n gutterBottom && 'mb-2',\n noWrap && 'truncate',\n paragraph && 'mb-4',\n // Text gradient styles\n textGradient && [\n 'bg-gradient-to-r bg-clip-text text-transparent',\n gradientClasses[gradientColor],\n ],\n className\n )\n\n const combinedStyle = opacity !== undefined ? { ...style, opacity } : style\n\n return (\n <Component\n ref={ref}\n className={classes}\n style={combinedStyle}\n {...props}\n />\n )\n }\n)\nTypography.displayName = 'Typography'\n\n// Convenience components\nconst H1 = React.forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"h1\" {...props} />\n)\nH1.displayName = 'H1'\n\nconst H2 = React.forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"h2\" {...props} />\n)\nH2.displayName = 'H2'\n\nconst H3 = React.forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"h3\" {...props} />\n)\nH3.displayName = 'H3'\n\nconst H4 = React.forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"h4\" {...props} />\n)\nH4.displayName = 'H4'\n\nconst H5 = React.forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"h5\" {...props} />\n)\nH5.displayName = 'H5'\n\nconst H6 = React.forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"h6\" {...props} />\n)\nH6.displayName = 'H6'\n\nconst Text = React.forwardRef<HTMLParagraphElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"body1\" {...props} />\n)\nText.displayName = 'Text'\n\nconst Caption = React.forwardRef<HTMLSpanElement, Omit<TypographyProps, 'variant'>>(\n (props, ref) => <Typography ref={ref} variant=\"caption\" {...props} />\n)\nCaption.displayName = 'Caption'\n\nexport { Typography, H1, H2, H3, H4, H5, H6, Text, Caption }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'\n size?: 'default' | 'sm' | 'lg' | 'icon'\n /** Whether the button should take the full width of its container */\n fullWidth?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant = 'default', size = 'default', fullWidth = false, ...props }, ref) => {\n return (\n <button\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors cursor-pointer',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed',\n {\n 'bg-accent text-accent-foreground hover:bg-accent-hover':\n variant === 'default',\n 'bg-destructive text-destructive-foreground hover:bg-destructive/90':\n variant === 'destructive',\n 'border border-input bg-background hover:bg-muted hover:text-foreground':\n variant === 'outline',\n 'bg-muted text-foreground hover:bg-muted/80':\n variant === 'secondary',\n 'hover:bg-muted hover:text-foreground':\n variant === 'ghost',\n 'text-accent underline-offset-4 hover:underline':\n variant === 'link',\n },\n {\n 'h-10 px-4 py-2': size === 'default',\n 'h-9 rounded-md px-3': size === 'sm',\n 'h-11 rounded-md px-8': size === 'lg',\n 'h-10 w-10': size === 'icon',\n },\n fullWidth && 'w-full',\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = 'Button'\n\n// ============================================================================\n// IconButton - Specialized button for icons\n// ============================================================================\n\nexport interface IconButtonProps extends Omit<ButtonProps, 'size'> {\n /** Size of the icon button */\n size?: 'xs' | 'sm' | 'md' | 'lg'\n /** Whether the button is rounded (circular) */\n rounded?: boolean\n /** Aria label for accessibility (required for icon-only buttons) */\n 'aria-label': string\n}\n\nconst iconButtonSizes = {\n xs: 'h-7 w-7',\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12',\n}\n\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ className, variant = 'ghost', size = 'md', rounded = false, ...props }, ref) => {\n return (\n <button\n className={cn(\n 'inline-flex items-center justify-center transition-colors cursor-pointer',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed',\n {\n 'bg-accent text-accent-foreground hover:bg-accent-hover':\n variant === 'default',\n 'bg-destructive text-destructive-foreground hover:bg-destructive/90':\n variant === 'destructive',\n 'border border-input bg-background hover:bg-muted hover:text-foreground':\n variant === 'outline',\n 'bg-muted text-foreground hover:bg-muted/80':\n variant === 'secondary',\n 'hover:bg-muted hover:text-foreground':\n variant === 'ghost',\n 'text-accent underline-offset-4 hover:underline':\n variant === 'link',\n },\n iconButtonSizes[size],\n rounded ? 'rounded-full' : 'rounded-md',\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nIconButton.displayName = 'IconButton'\n\nexport { Button, IconButton }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** Input size variant */\n inputSize?: 'sm' | 'md' | 'lg'\n /** Error state */\n error?: boolean\n /** Start adornment */\n startAdornment?: React.ReactNode\n /** End adornment */\n endAdornment?: React.ReactNode\n /** Wrapper class (when using adornments) */\n containerClassName?: string\n}\n\nconst sizeClasses = {\n sm: 'h-8 text-sm px-2.5',\n md: 'h-10 text-sm px-3',\n lg: 'h-12 text-base px-4',\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n type,\n inputSize = 'md',\n error,\n startAdornment,\n endAdornment,\n containerClassName,\n ...props\n },\n ref\n ) => {\n const hasAdornment = startAdornment || endAdornment\n\n if (hasAdornment) {\n return (\n <div\n className={cn(\n 'flex items-center w-full rounded-md border',\n 'bg-background',\n error\n ? 'border-destructive focus-within:ring-2 focus-within:ring-destructive/20'\n : 'border-input focus-within:ring-2 focus-within:ring-ring/20 focus-within:border-ring',\n 'transition-colors',\n props.disabled && 'opacity-50 cursor-not-allowed bg-muted',\n containerClassName\n )}\n >\n {startAdornment && (\n <div className=\"flex items-center pl-3 text-muted-foreground\">\n {startAdornment}\n </div>\n )}\n <input\n type={type}\n className={cn(\n 'flex w-full bg-transparent py-2',\n 'text-foreground',\n 'placeholder:text-muted-foreground',\n 'focus:outline-none',\n 'disabled:cursor-not-allowed',\n 'file:border-0 file:bg-transparent file:text-sm file:font-medium',\n sizeClasses[inputSize],\n startAdornment && 'pl-2',\n endAdornment && 'pr-2',\n className\n )}\n ref={ref}\n {...props}\n />\n {endAdornment && (\n <div className=\"flex items-center pr-3 text-muted-foreground\">\n {endAdornment}\n </div>\n )}\n </div>\n )\n }\n\n return (\n <input\n type={type}\n className={cn(\n 'flex w-full rounded-md border',\n 'bg-background text-foreground',\n 'placeholder:text-muted-foreground',\n error\n ? 'border-destructive focus:ring-2 focus:ring-destructive/20'\n : 'border-input focus:ring-2 focus:ring-ring/20 focus:border-ring',\n 'focus:outline-none',\n 'disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-muted',\n 'transition-colors',\n 'file:border-0 file:bg-transparent file:text-sm file:font-medium',\n sizeClasses[inputSize],\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nInput.displayName = 'Input'\n\nexport { Input }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface InputAdornmentProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Position of the adornment */\n position?: 'start' | 'end'\n /** Disable pointer events (useful for icons) */\n disablePointerEvents?: boolean\n}\n\n/**\n * InputAdornment - A wrapper component for input adornments (icons, text, etc.)\n *\n * Can be used standalone or with Input/TextField components.\n *\n * @example\n * ```tsx\n * <Input\n * startAdornment={\n * <InputAdornment position=\"start\">\n * <SearchIcon className=\"h-4 w-4\" />\n * </InputAdornment>\n * }\n * />\n *\n * // Or with text\n * <Input\n * startAdornment={\n * <InputAdornment position=\"start\">$</InputAdornment>\n * }\n * />\n * ```\n */\nconst InputAdornment = React.forwardRef<HTMLDivElement, InputAdornmentProps>(\n ({ className, position = 'start', disablePointerEvents = false, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center',\n 'text-muted-foreground',\n '[&>svg]:h-4 [&>svg]:w-4',\n disablePointerEvents && 'pointer-events-none',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nInputAdornment.displayName = 'InputAdornment'\n\nexport { InputAdornment }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n 'flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm',\n 'ring-offset-background',\n 'placeholder:text-muted-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = 'Textarea'\n\nexport { Textarea }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\nimport { Input, type InputProps } from './input'\nimport { Label } from './label'\n\nexport interface TextFieldProps extends Omit<InputProps, 'inputSize' | 'size'> {\n /** Label text */\n label?: React.ReactNode\n /** Helper text shown below input */\n helperText?: React.ReactNode\n /** Error message (also sets error state) */\n errorMessage?: React.ReactNode\n /** Required indicator */\n required?: boolean\n /** Size of the text field */\n size?: 'sm' | 'md' | 'lg' | 'small' | 'medium'\n /** Full width mode */\n fullWidth?: boolean\n /** Start adornment (icon, text, etc.) */\n startAdornment?: React.ReactNode\n /** End adornment (icon, text, etc.) */\n endAdornment?: React.ReactNode\n /** Input element props (MUI-compatible) */\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>\n /** Input container/slot props (MUI-compatible) */\n InputProps?: {\n startAdornment?: React.ReactNode\n endAdornment?: React.ReactNode\n className?: string\n containerClassName?: string\n }\n /** Input label props (MUI-compatible) */\n InputLabelProps?: React.LabelHTMLAttributes<HTMLLabelElement>\n /** Input ref (MUI-compatible) */\n inputRef?: React.Ref<HTMLInputElement>\n}\n\nconst TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n className,\n label,\n helperText,\n errorMessage,\n required,\n size = 'md',\n fullWidth,\n id: idProp,\n error,\n startAdornment,\n endAdornment,\n inputProps,\n InputProps,\n InputLabelProps,\n inputRef,\n ...props\n },\n ref\n ) => {\n const generatedId = React.useId()\n const id = idProp || generatedId\n const helperId = `${id}-helper`\n const hasError = error || !!errorMessage\n const mergedRef = (node: HTMLInputElement | null) => {\n if (typeof ref === 'function') ref(node)\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = node\n if (typeof inputRef === 'function') inputRef(node)\n else if (inputRef) (inputRef as React.MutableRefObject<HTMLInputElement | null>).current = node\n }\n\n const { className: inputPropsClassName, ...restInputProps } = inputProps ?? {}\n const {\n className: inputSlotClassName,\n containerClassName,\n startAdornment: inputSlotStart,\n endAdornment: inputSlotEnd,\n ...restInputSlotProps\n } = InputProps ?? {}\n const resolvedStartAdornment = inputSlotStart ? (\n <>\n {inputSlotStart}\n {startAdornment}\n </>\n ) : (\n startAdornment\n )\n const resolvedEndAdornment = inputSlotEnd ? (\n <>\n {endAdornment}\n {inputSlotEnd}\n </>\n ) : (\n endAdornment\n )\n\n const resolvedSize =\n size === 'small' ? 'sm' : size === 'medium' ? 'md' : size\n\n return (\n <div className={cn('grid gap-1.5', fullWidth && 'w-full', className)}>\n {label && (\n <Label\n htmlFor={id}\n className={cn(\n 'text-sm font-medium',\n hasError && 'text-destructive'\n )}\n {...InputLabelProps}\n >\n {label}\n {required && (\n <span className=\"text-destructive ml-0.5\" aria-hidden=\"true\">\n *\n </span>\n )}\n </Label>\n )}\n <Input\n ref={mergedRef}\n id={id}\n inputSize={resolvedSize}\n error={hasError}\n startAdornment={resolvedStartAdornment}\n endAdornment={resolvedEndAdornment}\n aria-describedby={helperText || errorMessage ? helperId : undefined}\n aria-invalid={hasError}\n className={cn(inputSlotClassName, inputPropsClassName)}\n containerClassName={containerClassName}\n {...props}\n {...restInputSlotProps}\n {...restInputProps}\n />\n {(helperText || errorMessage) && (\n <p\n id={helperId}\n className={cn(\n 'text-sm',\n hasError\n ? 'text-destructive'\n : 'text-muted-foreground'\n )}\n >\n {errorMessage || helperText}\n </p>\n )}\n </div>\n )\n }\n)\nTextField.displayName = 'TextField'\n\nexport { TextField }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {}\n\nconst Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, ...props }, ref) => (\n <label\n ref={ref}\n className={cn(\n 'text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n className\n )}\n {...props}\n />\n )\n)\nLabel.displayName = 'Label'\n\nexport { Label }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, ...props }, ref) => (\n <input\n type=\"checkbox\"\n ref={ref}\n className={cn(\n 'h-4 w-4 shrink-0 rounded-sm border border-accent cursor-pointer',\n 'ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'accent-accent',\n className\n )}\n {...props}\n />\n )\n)\nCheckbox.displayName = 'Checkbox'\n\nexport { Checkbox }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface SwitchProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {}\n\nconst Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n ({ className, ...props }, ref) => (\n <label className={cn('relative inline-flex items-center cursor-pointer', className)}>\n <input\n type=\"checkbox\"\n ref={ref}\n className=\"sr-only peer\"\n {...props}\n />\n <div\n className={cn(\n 'w-11 h-6 rounded-full transition-colors',\n 'bg-input peer-checked:bg-accent',\n 'peer-focus-visible:outline-none peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2 peer-focus-visible:ring-offset-background',\n 'peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n 'after:content-[\"\"] after:absolute after:top-[2px] after:left-[2px]',\n 'after:bg-background after:rounded-full after:h-5 after:w-5',\n 'after:transition-transform after:shadow-lg',\n 'peer-checked:after:translate-x-5'\n )}\n />\n </label>\n )\n)\nSwitch.displayName = 'Switch'\n\nexport { Switch }\n","import * as React from 'react'\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport { cn } from '../utils/cn'\n\n// RadioGroup\nexport interface RadioGroupProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {\n /** Orientation of the radio group */\n orientation?: 'horizontal' | 'vertical'\n /** Size of radio items */\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst RadioGroupContext = React.createContext<{ size?: 'sm' | 'md' | 'lg' }>({})\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(({ className, orientation = 'vertical', size = 'md', ...props }, ref) => {\n return (\n <RadioGroupContext.Provider value={{ size }}>\n <RadioGroupPrimitive.Root\n ref={ref}\n className={cn(\n 'grid gap-2',\n orientation === 'horizontal' && 'grid-flow-col auto-cols-max gap-4',\n className\n )}\n {...props}\n />\n </RadioGroupContext.Provider>\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\n// RadioGroupItem\nexport interface RadioGroupItemProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> {\n /** Size override for individual item */\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst sizeClasses = {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n}\n\nconst indicatorSizeClasses = {\n sm: 'h-2 w-2',\n md: 'h-2.5 w-2.5',\n lg: 'h-3 w-3',\n}\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(({ className, size: sizeProp, ...props }, ref) => {\n const { size: contextSize } = React.useContext(RadioGroupContext)\n const size = sizeProp || contextSize || 'md'\n\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'aspect-square rounded-full',\n 'border-2 border-input',\n 'ring-offset-background',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:border-accent',\n 'transition-colors',\n sizeClasses[size],\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <div\n className={cn(\n 'rounded-full bg-accent',\n indicatorSizeClasses[size]\n )}\n />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\n// Radio - Convenience component with label\nexport interface RadioProps extends RadioGroupItemProps {\n /** Label for the radio */\n label?: React.ReactNode\n /** Description text */\n description?: React.ReactNode\n /** ID for accessibility */\n id?: string\n}\n\nconst Radio = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioProps\n>(({ className, label, description, id: idProp, value, size, ...props }, ref) => {\n const generatedId = React.useId()\n const id = idProp || generatedId\n\n if (!label && !description) {\n return <RadioGroupItem ref={ref} value={value} size={size} {...props} />\n }\n\n return (\n <div className={cn('flex items-start gap-3', className)}>\n <RadioGroupItem ref={ref} id={id} value={value} size={size} {...props} />\n <div className=\"grid gap-1\">\n {label && (\n <label\n htmlFor={id}\n className=\"text-sm font-medium leading-none text-foreground cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n </div>\n )\n})\nRadio.displayName = 'Radio'\n\nexport { RadioGroup, RadioGroupItem, Radio }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\n// Form Context\ninterface FormControlContextValue {\n id?: string\n error?: boolean\n disabled?: boolean\n required?: boolean\n}\n\nconst FormControlContext = React.createContext<FormControlContextValue>({})\n\nexport function useFormControl() {\n return React.useContext(FormControlContext)\n}\n\n// FormControl\nexport interface FormControlProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Error state */\n error?: boolean\n /** Disabled state */\n disabled?: boolean\n /** Required state */\n required?: boolean\n /** Full width mode */\n fullWidth?: boolean\n /** Margin */\n margin?: 'none' | 'dense' | 'normal'\n /** Orientation */\n orientation?: 'vertical' | 'horizontal'\n}\n\nconst marginClasses = {\n none: '',\n dense: 'my-1',\n normal: 'my-2',\n}\n\nconst FormControl = React.forwardRef<HTMLDivElement, FormControlProps>(\n (\n {\n className,\n children,\n error,\n disabled,\n required,\n fullWidth,\n margin = 'none',\n orientation = 'vertical',\n ...props\n },\n ref\n ) => {\n const id = React.useId()\n\n return (\n <FormControlContext.Provider value={{ id, error, disabled, required }}>\n <div\n ref={ref}\n className={cn(\n 'inline-flex',\n orientation === 'vertical' ? 'flex-col gap-1.5' : 'flex-row items-center gap-3',\n fullWidth && 'w-full',\n marginClasses[margin],\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </FormControlContext.Provider>\n )\n }\n)\nFormControl.displayName = 'FormControl'\n\n// FormLabel\nexport interface FormLabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n /** Error state (auto-inherited from FormControl) */\n error?: boolean\n /** Disabled state (auto-inherited from FormControl) */\n disabled?: boolean\n /** Required indicator */\n required?: boolean\n}\n\nconst FormLabel = React.forwardRef<HTMLLabelElement, FormLabelProps>(\n ({ className, children, error: errorProp, disabled: disabledProp, required: requiredProp, htmlFor, ...props }, ref) => {\n const context = useFormControl()\n const error = errorProp ?? context.error\n const disabled = disabledProp ?? context.disabled\n const required = requiredProp ?? context.required\n const id = htmlFor ?? context.id\n\n return (\n <label\n ref={ref}\n htmlFor={id}\n className={cn(\n 'text-sm font-medium leading-none',\n 'text-foreground',\n error && 'text-destructive',\n disabled && 'cursor-not-allowed opacity-70',\n className\n )}\n {...props}\n >\n {children}\n {required && (\n <span className=\"text-destructive ml-0.5\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )\n }\n)\nFormLabel.displayName = 'FormLabel'\n\n// FormHelperText\nexport interface FormHelperTextProps extends React.HTMLAttributes<HTMLParagraphElement> {\n /** Error state (auto-inherited from FormControl) */\n error?: boolean\n /** Disabled state (auto-inherited from FormControl) */\n disabled?: boolean\n}\n\nconst FormHelperText = React.forwardRef<HTMLParagraphElement, FormHelperTextProps>(\n ({ className, children, error: errorProp, disabled: disabledProp, id, ...props }, ref) => {\n const context = useFormControl()\n const error = errorProp ?? context.error\n const disabled = disabledProp ?? context.disabled\n const helperId = id ?? (context.id ? `${context.id}-helper` : undefined)\n\n return (\n <p\n ref={ref}\n id={helperId}\n className={cn(\n 'text-sm',\n error\n ? 'text-destructive'\n : 'text-muted-foreground',\n disabled && 'opacity-70',\n className\n )}\n {...props}\n >\n {children}\n </p>\n )\n }\n)\nFormHelperText.displayName = 'FormHelperText'\n\n// FormGroup - for grouping checkboxes/radios\nexport interface FormGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Group orientation */\n row?: boolean\n}\n\nconst FormGroup = React.forwardRef<HTMLDivElement, FormGroupProps>(\n ({ className, row, ...props }, ref) => (\n <div\n ref={ref}\n role=\"group\"\n className={cn(\n 'flex',\n row ? 'flex-row flex-wrap gap-4' : 'flex-col gap-2',\n className\n )}\n {...props}\n />\n )\n)\nFormGroup.displayName = 'FormGroup'\n\nexport { FormControl, FormLabel, FormHelperText, FormGroup }\n","import * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { cn } from \"../utils/cn\";\n\nexport interface SliderProps extends Omit<\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>,\n \"onValueChange\" | \"value\" | \"defaultValue\" | \"onChange\"\n> {\n /** Current value */\n value?: number;\n /** Default value */\n defaultValue?: number;\n /** Change handler */\n onChange?: (value: number) => void;\n /** Show value label */\n showValue?: boolean;\n /** Value label position */\n valuePosition?: \"top\" | \"bottom\" | \"left\" | \"right\";\n /** Custom value formatter */\n valueFormatter?: (value: number) => string;\n /** Additional CSS classes */\n className?: string;\n}\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n SliderProps\n>(({\n className,\n min = 0,\n max = 100,\n step = 1,\n value,\n defaultValue,\n onChange,\n showValue = false,\n valuePosition = \"top\",\n valueFormatter,\n disabled = false,\n ...props\n}, ref) => {\n const [internalValue, setInternalValue] = React.useState<number[]>(\n value !== undefined ? [value] : defaultValue !== undefined ? [defaultValue] : [50]\n );\n\n // Sync with external value prop\n React.useEffect(() => {\n if (value !== undefined) {\n setInternalValue([value]);\n }\n }, [value]);\n\n const handleValueChange = (newValue: number[]) => {\n setInternalValue(newValue);\n onChange?.(newValue[0]);\n };\n\n const currentValue = internalValue[0];\n const displayValue = valueFormatter\n ? valueFormatter(currentValue)\n : currentValue.toString();\n\n const sliderElement = (\n <SliderPrimitive.Root\n ref={ref}\n min={min}\n max={max}\n step={step}\n value={internalValue}\n onValueChange={handleValueChange}\n disabled={disabled}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-muted\">\n <SliderPrimitive.Range className=\"absolute h-full bg-accent\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-accent bg-background shadow-lg ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent/10 active:bg-accent/20\" />\n </SliderPrimitive.Root>\n );\n\n if (!showValue) {\n return sliderElement;\n }\n\n const valueElement = (\n <div className=\"text-sm font-medium text-foreground whitespace-nowrap\">\n {displayValue}\n </div>\n );\n\n const containerClasses = {\n top: \"flex flex-col items-center gap-2\",\n bottom: \"flex flex-col items-center gap-2\",\n left: \"flex items-center gap-3\",\n right: \"flex items-center gap-3\",\n };\n\n const orderMap = {\n top: (\n <>\n {valueElement}\n {sliderElement}\n </>\n ),\n bottom: (\n <>\n {sliderElement}\n {valueElement}\n </>\n ),\n left: (\n <>\n {valueElement}\n {sliderElement}\n </>\n ),\n right: (\n <>\n {sliderElement}\n {valueElement}\n </>\n ),\n };\n\n return (\n <div className={containerClasses[valuePosition]}>\n {orderMap[valuePosition]}\n </div>\n );\n});\n\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'rounded-lg border border-border bg-card text-card-foreground shadow-sm',\n className\n )}\n {...props}\n />\n )\n)\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col space-y-1.5 p-6', className)}\n {...props}\n />\n )\n)\nCardHeader.displayName = 'CardHeader'\n\nconst CardTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn('text-2xl font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n )\n)\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n )\n)\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n )\n)\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center p-6 pt-0', className)}\n {...props}\n />\n )\n)\nCardFooter.displayName = 'CardFooter'\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?\n : 'default'\n | 'secondary'\n | 'destructive'\n | 'outline'\n | 'success'\n | 'warning'\n | 'info'\n}\n\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n ({ className, variant = 'default', ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-semibold transition-colors',\n 'focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n 'border-transparent bg-accent text-accent-foreground':\n variant === 'default',\n 'border-transparent bg-muted text-foreground':\n variant === 'secondary',\n 'border-transparent bg-destructive text-destructive-foreground':\n variant === 'destructive',\n 'border border-border text-foreground':\n variant === 'outline',\n 'border border-green-300 bg-green-100 text-green-800':\n variant === 'success',\n 'border border-yellow-300 bg-yellow-100 text-yellow-800':\n variant === 'warning',\n 'border border-blue-300 bg-blue-100 text-blue-800':\n variant === 'info',\n },\n className\n )}\n {...props}\n />\n )\n }\n)\nBadge.displayName = 'Badge'\n\nexport { Badge }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface SeparatorProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical'\n}\n\nconst Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(\n ({ className, orientation = 'horizontal', ...props }, ref) => (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = 'Separator'\n\nexport { Separator }\n","import * as React from 'react'\nimport * as AccordionPrimitive from '@radix-ui/react-accordion'\nimport { cn } from '../utils/cn'\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\n 'border border-border rounded-xl overflow-hidden',\n className\n )}\n {...props}\n />\n))\nAccordionItem.displayName = 'AccordionItem'\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex w-full items-center justify-between bg-muted/50 px-4 py-3 text-left text-sm font-medium transition-colors',\n 'hover:bg-muted',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'data-[state=open]:bg-muted',\n className\n )}\n {...props}\n >\n <span className=\"flex-1\">{children}</span>\n <svg\n className=\"ml-2 h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200 data-[state=open]:rotate-180\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = 'AccordionTrigger'\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(\n 'overflow-hidden text-sm',\n 'data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down',\n className\n )}\n {...props}\n >\n <div className=\"border-t border-border p-4\">{children}</div>\n </AccordionPrimitive.Content>\n))\nAccordionContent.displayName = 'AccordionContent'\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import * as React from 'react'\nimport * as SelectPrimitive from '@radix-ui/react-select'\nimport { cn } from '../../utils/cn'\n\n// Icons\nconst ChevronDownIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n)\n\nconst ChevronUpIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m18 15-6-6-6 6\" />\n </svg>\n)\n\nconst CheckIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n)\n\n// Root\nconst Select = SelectPrimitive.Root\n\n// Group\nconst SelectGroup = SelectPrimitive.Group\n\n// Value\nconst SelectValue = SelectPrimitive.Value\n\n// Trigger\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex h-10 w-full items-center justify-between rounded-md border px-3 py-2 text-sm',\n 'border-input bg-background text-foreground',\n 'ring-offset-background',\n 'placeholder:text-muted-foreground',\n 'focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n '[&>span]:line-clamp-1',\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\n// ScrollUpButton\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className\n )}\n {...props}\n >\n <ChevronUpIcon />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\n// ScrollDownButton\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className\n )}\n {...props}\n >\n <ChevronDownIcon />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName\n\n// Content\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = 'popper', ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n 'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md',\n 'border-border bg-popover text-popover-foreground',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]'\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\n// Label\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn('py-1.5 pl-8 pr-2 text-sm font-semibold', className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\n// Item\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none',\n 'focus:bg-accent focus:text-accent-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\n// Separator\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 my-1 h-px bg-muted', className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\n// Compound component pattern\nconst SelectNamespace = Object.assign(Select, {\n Group: SelectGroup,\n Value: SelectValue,\n Trigger: SelectTrigger,\n Content: SelectContent,\n Label: SelectLabel,\n Item: SelectItem,\n Separator: SelectSeparator,\n ScrollUpButton: SelectScrollUpButton,\n ScrollDownButton: SelectScrollDownButton,\n})\n\nexport {\n SelectNamespace as Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n\n// ============================================\n// Native Select (for simple use cases)\n// ============================================\n\nexport interface NativeSelectProps extends React.SelectHTMLAttributes<HTMLSelectElement> {}\n\nconst NativeSelect = React.forwardRef<HTMLSelectElement, NativeSelectProps>(\n ({ className, children, ...props }, ref) => (\n <select\n ref={ref}\n className={cn(\n 'flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm',\n 'ring-offset-background',\n 'focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n {children}\n </select>\n )\n)\nNativeSelect.displayName = 'NativeSelect'\n\nexport interface NativeSelectOptionProps extends React.OptionHTMLAttributes<HTMLOptionElement> {}\n\nconst NativeSelectOption = React.forwardRef<HTMLOptionElement, NativeSelectOptionProps>(\n ({ className, ...props }, ref) => (\n <option ref={ref} className={cn('py-1.5', className)} {...props} />\n )\n)\nNativeSelectOption.displayName = 'NativeSelectOption'\n\nexport { NativeSelect, NativeSelectOption }\n","import * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { cn } from '../../utils/cn'\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/80',\n 'data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out',\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\ntype DialogSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full'\n\ninterface DialogContentProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n hideCloseButton?: boolean\n size?: DialogSize\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(({ className, children, hideCloseButton = false, size = 'lg', ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed z-50 grid w-full gap-4 p-6 shadow-lg',\n 'bg-popover border border-border text-popover-foreground',\n 'rounded-lg',\n 'data-[state=open]:animate-zoom-in data-[state=closed]:animate-zoom-out',\n 'duration-200',\n size === 'sm' && 'left-1/2 top-1/2 max-w-sm -translate-x-1/2 -translate-y-1/2',\n size === 'md' && 'left-1/2 top-1/2 max-w-md -translate-x-1/2 -translate-y-1/2',\n size === 'lg' && 'left-1/2 top-1/2 max-w-lg -translate-x-1/2 -translate-y-1/2',\n size === 'xl' && 'left-1/2 top-1/2 max-w-xl -translate-x-1/2 -translate-y-1/2',\n size === '2xl' && 'left-1/2 top-1/2 max-w-2xl -translate-x-1/2 -translate-y-1/2',\n size === 'full' && 'inset-0 h-full w-full max-w-full rounded-none',\n className\n )}\n {...props}\n >\n {children}\n {!hideCloseButton && (\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)}\n {...props}\n />\n)\nDialogHeader.displayName = 'DialogHeader'\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n {...props}\n />\n)\nDialogFooter.displayName = 'DialogFooter'\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold leading-none tracking-tight text-foreground', className)}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\n// Compound component pattern\nconst DialogNamespace = Object.assign(Dialog, {\n Trigger: DialogTrigger,\n Portal: DialogPortal,\n Close: DialogClose,\n Overlay: DialogOverlay,\n Content: DialogContent,\n Header: DialogHeader,\n Footer: DialogFooter,\n Title: DialogTitle,\n Description: DialogDescription,\n})\n\nexport {\n DialogNamespace as Dialog,\n DialogTrigger,\n DialogPortal,\n DialogClose,\n DialogOverlay,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","import * as React from 'react'\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// AlertDialog Root\n// ============================================================================\n\nconst AlertDialog = AlertDialogPrimitive.Root\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\n\n// ============================================================================\n// AlertDialog Overlay\n// ============================================================================\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/50',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n />\n))\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\n// ============================================================================\n// AlertDialog Content\n// ============================================================================\n\nexport interface AlertDialogContentProps\n extends React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content> {\n /** Visual variant of the alert dialog */\n variant?: 'default' | 'destructive' | 'success' | 'warning' | 'info'\n /** Whether to show an icon */\n showIcon?: boolean\n}\n\nconst variantStyles = {\n default: {\n icon: 'text-muted-foreground',\n border: '',\n },\n destructive: {\n icon: 'text-red-500',\n border: 'border-l-4 border-l-red-500',\n },\n success: {\n icon: 'text-green-500',\n border: 'border-l-4 border-l-green-500',\n },\n warning: {\n icon: 'text-yellow-500',\n border: 'border-l-4 border-l-yellow-500',\n },\n info: {\n icon: 'text-blue-500',\n border: 'border-l-4 border-l-blue-500',\n },\n}\n\nconst VariantIcons: Record<string, React.FC<{ className?: string }>> = {\n default: ({ className }) => (\n <svg className={className} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4M12 8h.01\" />\n </svg>\n ),\n destructive: ({ className }) => (\n <svg className={className} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m15 9-6 6M9 9l6 6\" />\n </svg>\n ),\n success: ({ className }) => (\n <svg className={className} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m9 12 2 2 4-4\" />\n </svg>\n ),\n warning: ({ className }) => (\n <svg className={className} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <path d=\"M12 9v4M12 17h.01\" />\n </svg>\n ),\n info: ({ className }) => (\n <svg className={className} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4M12 8h.01\" />\n </svg>\n ),\n}\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n AlertDialogContentProps\n>(({ className, variant = 'default', showIcon = true, children, ...props }, ref) => {\n const IconComponent = VariantIcons[variant]\n const styles = variantStyles[variant]\n\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 p-6',\n 'bg-background border border-border shadow-lg rounded-lg',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]',\n 'data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]',\n 'duration-200',\n styles.border,\n className\n )}\n {...props}\n >\n <div className=\"flex gap-4 items-start\">\n {showIcon && (\n <div className={cn('shrink-0 mt-1', styles.icon)}>\n <IconComponent className=\"h-6 w-6\" />\n </div>\n )}\n <div className=\"flex-1\">{children}</div>\n </div>\n </AlertDialogPrimitive.Content>\n </AlertDialogPortal>\n )\n})\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\n// ============================================================================\n// AlertDialog Header\n// ============================================================================\n\nexport interface AlertDialogHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst AlertDialogHeader = React.forwardRef<HTMLDivElement, AlertDialogHeaderProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col space-y-2', className)}\n {...props}\n />\n )\n)\nAlertDialogHeader.displayName = 'AlertDialogHeader'\n\n// ============================================================================\n// AlertDialog Footer\n// ============================================================================\n\nexport interface AlertDialogFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst AlertDialogFooter = React.forwardRef<HTMLDivElement, AlertDialogFooterProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'mt-4 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\n className\n )}\n {...props}\n />\n )\n)\nAlertDialogFooter.displayName = 'AlertDialogFooter'\n\n// ============================================================================\n// AlertDialog Title\n// ============================================================================\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold text-foreground', className)}\n {...props}\n />\n))\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\n// ============================================================================\n// AlertDialog Description\n// ============================================================================\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName\n\n// ============================================================================\n// AlertDialog Action\n// ============================================================================\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium',\n 'ring-offset-background transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'bg-accent text-accent-foreground hover:bg-accent-hover',\n 'h-10 px-4 py-2',\n className\n )}\n {...props}\n />\n))\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\n// ============================================================================\n// AlertDialog Cancel\n// ============================================================================\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium',\n 'ring-offset-background transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'border border-input bg-background hover:bg-muted hover:text-foreground',\n 'h-10 px-4 py-2',\n className\n )}\n {...props}\n />\n))\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\nexport {\n AlertDialog,\n AlertDialogTrigger,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: 'sm' | 'default' | 'lg'\n}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size = 'default', ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\n 'inline-block animate-spin rounded-full border-2 border-solid border-current border-r-transparent motion-reduce:animate-[spin_1.5s_linear_infinite]',\n {\n 'h-4 w-4': size === 'sm',\n 'h-6 w-6': size === 'default',\n 'h-8 w-8': size === 'lg',\n },\n 'text-accent',\n className\n )}\n {...props}\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n )\n }\n)\nSpinner.displayName = 'Spinner'\n\nexport { Spinner }\n","import * as React from \"react\";\nimport { cn } from \"../utils/cn\";\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?:\n | \"default\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"destructive\";\n duration?: number | null; // null = stay until manually closed\n onClose?: () => void;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Variants */\n/* -------------------------------------------------------------------------- */\n\nconst variants = {\n default: {\n iconBg: \"bg-zinc-900\",\n progress: \"bg-zinc-900\",\n textColor: \"text-zinc-900\",\n },\n info: {\n iconBg: \"bg-blue-600\",\n progress: \"bg-blue-600\",\n textColor: \"text-blue-600\",\n },\n success: {\n iconBg: \"bg-emerald-600\",\n progress: \"bg-emerald-600\",\n textColor: \"text-emerald-600\",\n },\n warning: {\n iconBg: \"bg-amber-500\",\n progress: \"bg-amber-500\",\n textColor: \"text-amber-500\",\n },\n error: {\n iconBg: \"bg-rose-600\",\n progress: \"bg-rose-600\",\n textColor: \"text-rose-600\",\n },\n destructive: {\n iconBg: \"bg-rose-700\",\n progress: \"bg-rose-700\",\n textColor: \"text-rose-700\",\n },\n};\n\n/* -------------------------------------------------------------------------- */\n/* Icons */\n/* -------------------------------------------------------------------------- */\n\nconst CheckIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"m5 13 4 4L19 7\" />\n </svg>\n);\n\nconst InfoIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4M12 8h.01\" />\n </svg>\n);\n\nconst WarningIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <path d=\"M12 9v4M12 17h.01\" />\n </svg>\n);\n\nconst XCircleIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m15 9-6 6M9 9l6 6\" />\n </svg>\n);\n\nconst CloseIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n);\n\nconst iconMap = {\n default: InfoIcon,\n info: InfoIcon,\n success: CheckIcon,\n warning: WarningIcon,\n error: XCircleIcon,\n destructive: XCircleIcon,\n};\n\n/* -------------------------------------------------------------------------- */\n/* Alert */\n/* -------------------------------------------------------------------------- */\n\nexport const Alert: React.FC<AlertProps> = ({\n variant = \"default\",\n duration = 100000000000000, // default 4000ms\n onClose,\n className,\n children,\n ...props\n}) => {\n const [visible, setVisible] = React.useState(true);\n const [progress, setProgress] = React.useState(100);\n\n const styles = variants[variant];\n const Icon = iconMap[variant];\n\n // Check if there's an AlertDescription\n const hasDescription = React.Children.toArray(children).some(\n (child) => React.isValidElement(child) && child.type === AlertDescription,\n );\n\n React.useEffect(() => {\n if (duration === null) return; // stay until user closes\n\n const start = Date.now();\n\n const interval = setInterval(() => {\n const elapsed = Date.now() - start;\n const percent = 100 - (elapsed / duration) * 100;\n setProgress(percent);\n\n if (elapsed >= duration) {\n clearInterval(interval);\n handleClose();\n }\n }, 16);\n\n return () => clearInterval(interval);\n }, [duration]);\n\n const handleClose = () => {\n setVisible(false);\n onClose?.();\n };\n\n if (!visible) return null;\n\n return (\n <div\n role=\"alert\"\n className={cn(\n \"relative w-[380px] rounded-xl bg-background border border-border shadow-lg p-4 flex gap-4 items-start overflow-hidden\",\n className,\n )}\n {...props}\n >\n {/* Icon */}\n <div\n className={cn(\n \"flex items-center justify-center h-10 w-10 rounded-full text-white shrink-0\",\n styles.iconBg,\n )}\n >\n <Icon className=\"h-5 w-5\" />\n </div>\n\n {/* Content */}\n <div className={cn(\"flex-1\", !hasDescription && \"flex items-center mt-2\")}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === AlertTitle) {\n return React.cloneElement(child, {\n hasDescription,\n variant,\n } as any);\n }\n return child;\n })}\n </div>\n\n {/* Close Button */}\n <button\n onClick={handleClose}\n className=\"absolute top-3 right-3 text-muted-foreground hover:text-foreground transition\"\n >\n <CloseIcon className=\"h-4 w-4\" />\n </button>\n\n {/* Progress Bar */}\n {duration !== null && (\n <div className=\"absolute bottom-0 left-0 h-1 w-full bg-muted\">\n <div\n className={cn(\"h-full transition-all\", styles.progress)}\n style={{ width: `${progress}%` }}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport interface AlertTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {\n hasDescription?: boolean;\n variant?: string;\n}\n\nexport const AlertTitle: React.FC<AlertTitleProps> = ({\n className,\n children,\n hasDescription = true,\n variant = \"default\",\n ...props\n}) => {\n const styles = variants[variant as keyof typeof variants];\n\n return (\n <h4\n className={cn(\"font-semibold text-sm\", styles.textColor, className)}\n {...props}\n >\n {children}\n </h4>\n );\n};\n\nexport interface AlertDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nexport const AlertDescription: React.FC<AlertDescriptionProps> = ({\n className,\n children,\n ...props\n}) => {\n return (\n <p className={cn(\"text-sm text-muted-foreground mt-1\", className)} {...props}>\n {children}\n </p>\n );\n};\n","import * as React from 'react'\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cn } from '../utils/cn'\n\n// Root\nconst Tabs = TabsPrimitive.Root\n\n// ============================================================================\n// Default (pill) variant\n// ============================================================================\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'inline-flex h-10 items-center justify-center rounded-md p-1',\n 'bg-muted text-muted-foreground',\n className\n )}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium transition-all',\n 'ring-offset-background',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'mt-2',\n 'ring-offset-background',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\n// ============================================================================\n// Underline variant (GitHub-style)\n// ============================================================================\n\nconst UnderlineTabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'inline-flex items-center gap-0 border-b border-border',\n className\n )}\n {...props}\n />\n))\nUnderlineTabsList.displayName = 'UnderlineTabsList'\n\nexport interface UnderlineTabsTriggerProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> {\n /** Optional count badge displayed next to the label */\n count?: number\n}\n\nconst UnderlineTabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n UnderlineTabsTriggerProps\n>(({ className, children, count, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'inline-flex items-center gap-2 whitespace-nowrap px-4 py-2 text-sm font-medium transition-colors',\n 'border-b-2 border-transparent -mb-px',\n 'text-muted-foreground',\n 'hover:text-foreground hover:border-border',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'data-[state=active]:text-foreground data-[state=active]:border-accent',\n className\n )}\n {...props}\n >\n {children}\n {count !== undefined && (\n <span\n className={cn(\n 'inline-flex items-center justify-center rounded-full px-2 py-0.5 text-xs font-medium min-w-[1.25rem]',\n 'bg-muted text-muted-foreground'\n )}\n >\n {count}\n </span>\n )}\n </TabsPrimitive.Trigger>\n))\nUnderlineTabsTrigger.displayName = 'UnderlineTabsTrigger'\n\nconst UnderlineTabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'pt-4',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n )}\n {...props}\n />\n))\nUnderlineTabsContent.displayName = 'UnderlineTabsContent'\n\n// ============================================================================\n// Vertical variant (GitHub Settings sidebar)\n// ============================================================================\n\nconst VerticalTabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Root\n ref={ref}\n orientation=\"vertical\"\n className={cn('flex gap-8', className)}\n {...props}\n />\n))\nVerticalTabs.displayName = 'VerticalTabs'\n\nconst VerticalTabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn('flex flex-col gap-0.5 w-[220px] shrink-0', className)}\n {...props}\n />\n))\nVerticalTabsList.displayName = 'VerticalTabsList'\n\nexport interface VerticalTabsTriggerProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> {\n /** Icon element rendered before the label */\n icon?: React.ReactNode\n}\n\nconst VerticalTabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n VerticalTabsTriggerProps\n>(({ className, children, icon, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex items-center gap-3 rounded-md px-3 py-1.5 text-sm transition-colors text-left w-full',\n 'text-muted-foreground',\n 'border-l-2 border-transparent -ml-px',\n 'hover:bg-muted hover:text-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'data-[state=active]:text-foreground data-[state=active]:font-medium data-[state=active]:bg-muted data-[state=active]:border-l-2 data-[state=active]:border-accent',\n className\n )}\n {...props}\n >\n {icon && <span className=\"size-4 shrink-0 [&>svg]:size-4\">{icon}</span>}\n {children}\n </TabsPrimitive.Trigger>\n))\nVerticalTabsTrigger.displayName = 'VerticalTabsTrigger'\n\nconst VerticalTabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'flex-1 min-w-0',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n )}\n {...props}\n />\n))\nVerticalTabsContent.displayName = 'VerticalTabsContent'\n\n/** Non-interactive section label for grouping vertical tabs */\nexport interface VerticalTabsGroupLabelProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst VerticalTabsGroupLabel = React.forwardRef<HTMLDivElement, VerticalTabsGroupLabelProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'px-3 pt-4 pb-1 text-xs font-semibold text-muted-foreground first:pt-0',\n className\n )}\n {...props}\n />\n )\n)\nVerticalTabsGroupLabel.displayName = 'VerticalTabsGroupLabel'\n\nexport {\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n UnderlineTabsList,\n UnderlineTabsTrigger,\n UnderlineTabsContent,\n VerticalTabs,\n VerticalTabsList,\n VerticalTabsTrigger,\n VerticalTabsContent,\n VerticalTabsGroupLabel,\n}\n","import * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\nimport { cn } from '../utils/cn'\n\n// Tooltip Provider - wrap your app or section with this\nconst TooltipProvider = TooltipPrimitive.Provider\n\n// Tooltip Root\nconst TooltipRoot = TooltipPrimitive.Root\n\n// Tooltip Trigger\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\n// Tooltip Portal\nconst TooltipPortal = TooltipPrimitive.Portal\n\n// Tooltip Arrow\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitive.Arrow\n ref={ref}\n className={cn('fill-popover', className)}\n {...props}\n />\n))\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName\n\n// Tooltip Content\nexport interface TooltipContentProps\n extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> {\n /** Whether to show an arrow pointing to the trigger */\n showArrow?: boolean\n}\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, sideOffset = 4, showArrow = false, children, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 overflow-hidden rounded-md bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md',\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n >\n {children}\n {showArrow && <TooltipArrow />}\n </TooltipPrimitive.Content>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\n// ============================================================================\n// Simple Tooltip - A convenience wrapper for common use cases\n// ============================================================================\n\nexport interface TooltipProps {\n /** The content to show in the tooltip */\n content: React.ReactNode\n /** The element that triggers the tooltip */\n children: React.ReactNode\n /** Side where the tooltip appears */\n side?: 'top' | 'right' | 'bottom' | 'left'\n /** Alignment of the tooltip */\n align?: 'start' | 'center' | 'end'\n /** Delay before showing (ms) */\n delayDuration?: number\n /** Whether the tooltip is open (controlled) */\n open?: boolean\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void\n /** Whether the tooltip should be disabled */\n disabled?: boolean\n /** Whether to show an arrow */\n showArrow?: boolean\n /** Additional className for the content */\n className?: string\n}\n\nconst Tooltip = React.forwardRef<HTMLButtonElement, TooltipProps>(\n (\n {\n content,\n children,\n side = 'top',\n align = 'center',\n delayDuration = 200,\n open,\n onOpenChange,\n disabled = false,\n showArrow = false,\n className,\n },\n ref\n ) => {\n if (disabled) {\n return <>{children}</>\n }\n\n return (\n <TooltipProvider>\n <TooltipRoot\n delayDuration={delayDuration}\n open={open}\n onOpenChange={onOpenChange}\n >\n <TooltipTrigger ref={ref} asChild>\n {children}\n </TooltipTrigger>\n <TooltipPortal>\n <TooltipContent\n side={side}\n align={align}\n showArrow={showArrow}\n className={className}\n >\n {content}\n </TooltipContent>\n </TooltipPortal>\n </TooltipRoot>\n </TooltipProvider>\n )\n }\n)\nTooltip.displayName = 'Tooltip'\n\nexport {\n Tooltip,\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipContent,\n TooltipPortal,\n TooltipArrow,\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// Linear Progress\n// ============================================================================\n\nexport interface LinearProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Progress value (0-100). If undefined, shows indeterminate state */\n value?: number\n /** Color variant */\n variant?: 'default' | 'success' | 'warning' | 'error' | 'info'\n /** Size of the progress bar */\n size?: 'sm' | 'md' | 'lg'\n /** Whether to show the value label */\n showValue?: boolean\n /** Custom label format */\n formatValue?: (value: number) => string\n /** Whether to animate (only for determinate progress) */\n animated?: boolean\n}\n\nconst linearSizeClasses = {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n}\n\nconst variantClasses = {\n default: 'bg-primary-500',\n success: 'bg-green-500',\n warning: 'bg-yellow-500',\n error: 'bg-red-500',\n info: 'bg-blue-500',\n}\n\nconst LinearProgress = React.forwardRef<HTMLDivElement, LinearProgressProps>(\n (\n {\n value,\n variant = 'default',\n size = 'md',\n showValue = false,\n formatValue = (v) => `${Math.round(v)}%`,\n animated = true,\n className,\n ...props\n },\n ref\n ) => {\n const isIndeterminate = value === undefined\n\n return (\n <div ref={ref} className={cn('w-full', className)} {...props}>\n <div\n className={cn(\n 'w-full overflow-hidden rounded-full bg-muted',\n linearSizeClasses[size]\n )}\n role=\"progressbar\"\n aria-valuenow={isIndeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n className={cn(\n 'h-full rounded-full',\n variantClasses[variant],\n animated && !isIndeterminate && 'transition-all duration-300 ease-out',\n isIndeterminate && 'animate-indeterminate-progress w-1/3'\n )}\n style={\n !isIndeterminate\n ? { width: `${Math.min(100, Math.max(0, value))}%` }\n : undefined\n }\n />\n </div>\n {showValue && !isIndeterminate && (\n <span className=\"mt-1 text-sm text-muted-foreground\">\n {formatValue(value!)}\n </span>\n )}\n </div>\n )\n }\n)\nLinearProgress.displayName = 'LinearProgress'\n\n// ============================================================================\n// Circular Progress\n// ============================================================================\n\nexport interface CircularProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Progress value (0-100). If undefined, shows indeterminate state */\n value?: number\n /** Color variant */\n variant?: 'default' | 'success' | 'warning' | 'error' | 'info'\n /** Size of the circular progress */\n size?: 'sm' | 'md' | 'lg' | 'xl' | number\n /** Thickness of the progress ring */\n thickness?: number\n /** Whether to show the value in the center */\n showValue?: boolean\n /** Custom label format */\n formatValue?: (value: number) => string\n /** Content to show in the center */\n children?: React.ReactNode\n}\n\nconst circularSizeValues = {\n sm: 24,\n md: 40,\n lg: 56,\n xl: 72,\n}\n\nconst strokeColors = {\n default: 'stroke-primary-500',\n success: 'stroke-green-500',\n warning: 'stroke-yellow-500',\n error: 'stroke-red-500',\n info: 'stroke-blue-500',\n}\n\nconst CircularProgress = React.forwardRef<HTMLDivElement, CircularProgressProps>(\n (\n {\n value,\n variant = 'default',\n size = 'md',\n thickness = 4,\n showValue = false,\n formatValue = (v) => `${Math.round(v)}%`,\n children,\n className,\n ...props\n },\n ref\n ) => {\n const isIndeterminate = value === undefined\n const sizeValue = typeof size === 'number' ? size : circularSizeValues[size]\n const radius = (sizeValue - thickness) / 2\n const circumference = 2 * Math.PI * radius\n const strokeDashoffset = isIndeterminate\n ? 0\n : circumference - (Math.min(100, Math.max(0, value)) / 100) * circumference\n\n return (\n <div\n ref={ref}\n className={cn('relative inline-flex items-center justify-center', className)}\n style={{ width: sizeValue, height: sizeValue }}\n role=\"progressbar\"\n aria-valuenow={isIndeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={100}\n {...props}\n >\n <svg\n className={cn(isIndeterminate && 'animate-spin')}\n width={sizeValue}\n height={sizeValue}\n viewBox={`0 0 ${sizeValue} ${sizeValue}`}\n >\n {/* Background circle */}\n <circle\n className=\"stroke-muted\"\n fill=\"none\"\n strokeWidth={thickness}\n cx={sizeValue / 2}\n cy={sizeValue / 2}\n r={radius}\n />\n {/* Progress circle */}\n <circle\n className={cn(\n strokeColors[variant],\n !isIndeterminate && 'transition-all duration-300 ease-out'\n )}\n fill=\"none\"\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n cx={sizeValue / 2}\n cy={sizeValue / 2}\n r={radius}\n strokeDasharray={circumference}\n strokeDashoffset={isIndeterminate ? circumference * 0.75 : strokeDashoffset}\n transform={`rotate(-90 ${sizeValue / 2} ${sizeValue / 2})`}\n />\n </svg>\n {/* Center content */}\n {(showValue || children) && !isIndeterminate && (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n {children || (\n <span\n className=\"text-foreground font-medium\"\n style={{ fontSize: sizeValue * 0.25 }}\n >\n {formatValue(value!)}\n </span>\n )}\n </div>\n )}\n </div>\n )\n }\n)\nCircularProgress.displayName = 'CircularProgress'\n\n// ============================================================================\n// Progress (alias that defaults to Linear)\n// ============================================================================\n\nexport interface ProgressProps extends LinearProgressProps {}\n\nconst Progress = React.forwardRef<HTMLDivElement, ProgressProps>((props, ref) => (\n <LinearProgress ref={ref} {...props} />\n))\nProgress.displayName = 'Progress'\n\nexport { LinearProgress, CircularProgress, Progress }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn('w-full caption-bottom text-sm', className)}\n {...props}\n />\n </div>\n))\nTable.displayName = 'Table'\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />\n))\nTableHeader.displayName = 'TableHeader'\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n))\nTableBody.displayName = 'TableBody'\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n 'border-t bg-muted/50 font-medium [&>tr]:last:border-b-0',\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = 'TableFooter'\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'border-b border-border transition-colors',\n 'hover:bg-muted/50',\n 'data-[state=selected]:bg-muted',\n className\n )}\n {...props}\n />\n))\nTableRow.displayName = 'TableRow'\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-12 px-4 text-left align-middle font-medium text-muted-foreground',\n '[&:has([role=checkbox])]:pr-0',\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = 'TableHead'\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n 'p-4 align-middle [&:has([role=checkbox])]:pr-0',\n className\n )}\n {...props}\n />\n))\nTableCell.displayName = 'TableCell'\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn('mt-4 text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nTableCaption.displayName = 'TableCaption'\n\n// Compound component pattern\nconst TableNamespace = Object.assign(Table, {\n Header: TableHeader,\n Body: TableBody,\n Footer: TableFooter,\n Row: TableRow,\n Head: TableHead,\n Cell: TableCell,\n Caption: TableCaption,\n})\n\nexport {\n TableNamespace as Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Image source URL */\n src?: string\n /** Alt text for the image */\n alt?: string\n /** Size of the avatar */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n /** Fallback text (usually initials) when no image */\n fallback?: string\n /** Shape of the avatar */\n shape?: 'circle' | 'square'\n /** Whether to show a border */\n bordered?: boolean\n /** Custom fallback element */\n fallbackElement?: React.ReactNode\n}\n\nconst sizeClasses = {\n xs: 'h-6 w-6 text-xs',\n sm: 'h-8 w-8 text-sm',\n md: 'h-10 w-10 text-base',\n lg: 'h-12 w-12 text-lg',\n xl: 'h-16 w-16 text-xl',\n '2xl': 'h-20 w-20 text-2xl',\n}\n\nconst Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n (\n {\n src,\n alt,\n size = 'md',\n fallback,\n shape = 'circle',\n bordered = false,\n fallbackElement,\n className,\n ...props\n },\n ref\n ) => {\n const [imageError, setImageError] = React.useState(false)\n\n // Reset error state when src changes\n React.useEffect(() => {\n setImageError(false)\n }, [src])\n\n const showFallback = !src || imageError\n\n // Generate initials from fallback text\n const getInitials = (text: string) => {\n const words = text.trim().split(' ')\n if (words.length >= 2) {\n return (words[0][0] + words[words.length - 1][0]).toUpperCase()\n }\n return text.slice(0, 2).toUpperCase()\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'relative inline-flex items-center justify-center overflow-hidden bg-muted text-muted-foreground shrink-0',\n sizeClasses[size],\n shape === 'circle' ? 'rounded-full' : 'rounded-md',\n bordered && 'ring-2 ring-background',\n className\n )}\n {...props}\n >\n {!showFallback ? (\n <img\n src={src}\n alt={alt}\n onError={() => setImageError(true)}\n className=\"h-full w-full object-cover\"\n />\n ) : fallbackElement ? (\n fallbackElement\n ) : fallback ? (\n <span className=\"font-medium\">{getInitials(fallback)}</span>\n ) : (\n // Default user icon\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=\"h-1/2 w-1/2\"\n >\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" />\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n )}\n </div>\n )\n }\n)\nAvatar.displayName = 'Avatar'\n\n// Avatar Group for stacking multiple avatars\nexport interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Maximum number of avatars to show */\n max?: number\n /** Size for all avatars in the group */\n size?: AvatarProps['size']\n /** Children should be Avatar components */\n children: React.ReactNode\n}\n\nconst AvatarGroup = React.forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ max, size = 'md', children, className, ...props }, ref) => {\n const childArray = React.Children.toArray(children)\n const visibleChildren = max ? childArray.slice(0, max) : childArray\n const remainingCount = max ? childArray.length - max : 0\n\n return (\n <div\n ref={ref}\n className={cn('flex -space-x-2', className)}\n {...props}\n >\n {visibleChildren.map((child, index) => {\n if (React.isValidElement<AvatarProps>(child)) {\n return React.cloneElement(child, {\n key: index,\n size: child.props.size || size,\n bordered: true,\n className: cn('ring-2 ring-background', child.props.className),\n })\n }\n return child\n })}\n {remainingCount > 0 && (\n <Avatar\n size={size}\n bordered\n fallback={`+${remainingCount}`}\n className=\"bg-muted\"\n />\n )}\n </div>\n )\n }\n)\nAvatarGroup.displayName = 'AvatarGroup'\n\nexport { Avatar, AvatarGroup }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Variant of the skeleton shape */\n variant?: 'text' | 'circular' | 'rectangular' | 'rounded'\n /** Width of the skeleton (can be number for px or string for any CSS value) */\n width?: number | string\n /** Height of the skeleton (can be number for px or string for any CSS value) */\n height?: number | string\n /** Whether to animate the skeleton */\n animation?: 'pulse' | 'wave' | 'none'\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n variant = 'text',\n width,\n height,\n animation = 'pulse',\n className,\n style,\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n text: 'rounded-md',\n circular: 'rounded-full',\n rectangular: 'rounded-none',\n rounded: 'rounded-lg',\n }\n\n const animationClasses = {\n pulse: 'animate-pulse',\n wave: 'animate-shimmer bg-gradient-to-r from-muted via-muted/50 to-muted bg-[length:200%_100%]',\n none: '',\n }\n\n // Default heights based on variant\n const defaultHeight = variant === 'text' ? '1em' : undefined\n\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-muted',\n variantClasses[variant],\n animationClasses[animation],\n className\n )}\n style={{\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : (height ?? defaultHeight),\n ...style,\n }}\n {...props}\n />\n )\n }\n)\nSkeleton.displayName = 'Skeleton'\n\n// Skeleton Text - Multiple lines of text skeleton\nexport interface SkeletonTextProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Number of lines */\n lines?: number\n /** Width of the last line (percentage or 'full') */\n lastLineWidth?: number | 'full'\n /** Gap between lines */\n gap?: 'sm' | 'md' | 'lg'\n /** Animation type */\n animation?: SkeletonProps['animation']\n}\n\nconst SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n (\n {\n lines = 3,\n lastLineWidth = 60,\n gap = 'md',\n animation = 'pulse',\n className,\n ...props\n },\n ref\n ) => {\n const gapClasses = {\n sm: 'space-y-1',\n md: 'space-y-2',\n lg: 'space-y-3',\n }\n\n return (\n <div ref={ref} className={cn(gapClasses[gap], className)} {...props}>\n {Array.from({ length: lines }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"text\"\n animation={animation}\n style={{\n width:\n index === lines - 1 && lastLineWidth !== 'full'\n ? `${lastLineWidth}%`\n : '100%',\n }}\n />\n ))}\n </div>\n )\n }\n)\nSkeletonText.displayName = 'SkeletonText'\n\n// Skeleton Avatar\nexport interface SkeletonAvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Size of the avatar skeleton */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Animation type */\n animation?: SkeletonProps['animation']\n}\n\nconst sizeMap = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 64,\n}\n\nconst SkeletonAvatar = React.forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n ({ size = 'md', animation = 'pulse', className, ...props }, ref) => {\n const sizeValue = sizeMap[size]\n return (\n <Skeleton\n ref={ref}\n variant=\"circular\"\n width={sizeValue}\n height={sizeValue}\n animation={animation}\n className={className}\n {...props}\n />\n )\n }\n)\nSkeletonAvatar.displayName = 'SkeletonAvatar'\n\n// Skeleton Card - Common card skeleton pattern\nexport interface SkeletonCardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Whether to show an image placeholder */\n hasImage?: boolean\n /** Image height */\n imageHeight?: number\n /** Number of text lines */\n lines?: number\n /** Animation type */\n animation?: SkeletonProps['animation']\n}\n\nconst SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n hasImage = true,\n imageHeight = 200,\n lines = 3,\n animation = 'pulse',\n className,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn('rounded-lg border border-border p-4 space-y-4', className)}\n {...props}\n >\n {hasImage && (\n <Skeleton\n variant=\"rounded\"\n height={imageHeight}\n animation={animation}\n />\n )}\n <div className=\"space-y-2\">\n <Skeleton variant=\"text\" width=\"60%\" animation={animation} />\n <SkeletonText lines={lines} animation={animation} />\n </div>\n </div>\n )\n }\n)\nSkeletonCard.displayName = 'SkeletonCard'\n\n// Skeleton Table Row\nexport interface SkeletonTableRowProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Number of columns */\n columns?: number\n /** Animation type */\n animation?: SkeletonProps['animation']\n}\n\nconst SkeletonTableRow = React.forwardRef<HTMLDivElement, SkeletonTableRowProps>(\n ({ columns = 4, animation = 'pulse', className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('flex items-center gap-4 py-3', className)}\n {...props}\n >\n {Array.from({ length: columns }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"text\"\n animation={animation}\n className=\"flex-1\"\n />\n ))}\n </div>\n )\n }\n)\nSkeletonTableRow.displayName = 'SkeletonTableRow'\n\nexport { Skeleton, SkeletonText, SkeletonAvatar, SkeletonCard, SkeletonTableRow }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\nimport { Button } from './button'\n\nexport interface PaginationProps extends React.HTMLAttributes<HTMLElement> {}\n\nconst Pagination = React.forwardRef<HTMLElement, PaginationProps>(\n ({ className, ...props }, ref) => (\n <nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n {...props}\n />\n )\n)\nPagination.displayName = 'Pagination'\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.HTMLAttributes<HTMLUListElement>\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn('flex flex-row items-center gap-1', className)}\n {...props}\n />\n))\nPaginationContent.displayName = 'PaginationContent'\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.LiHTMLAttributes<HTMLLIElement>\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn('', className)} {...props} />\n))\nPaginationItem.displayName = 'PaginationItem'\n\nexport interface PaginationLinkProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n isActive?: boolean\n}\n\nconst PaginationLink = React.forwardRef<HTMLButtonElement, PaginationLinkProps>(\n ({ className, isActive, ...props }, ref) => (\n <Button\n ref={ref}\n variant={isActive ? 'default' : 'outline'}\n size=\"icon\"\n className={cn('h-9 w-9', className)}\n {...props}\n />\n )\n)\nPaginationLink.displayName = 'PaginationLink'\n\nconst PaginationPrevious = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement>\n>(({ className, ...props }, ref) => (\n <Button\n ref={ref}\n variant=\"outline\"\n size=\"default\"\n className={cn('gap-1 pl-2.5', className)}\n {...props}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n <span>Previous</span>\n </Button>\n))\nPaginationPrevious.displayName = 'PaginationPrevious'\n\nconst PaginationNext = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement>\n>(({ className, ...props }, ref) => (\n <Button\n ref={ref}\n variant=\"outline\"\n size=\"default\"\n className={cn('gap-1 pr-2.5', className)}\n {...props}\n >\n <span>Next</span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </Button>\n))\nPaginationNext.displayName = 'PaginationNext'\n\nconst PaginationEllipsis = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n aria-hidden\n className={cn('flex h-9 w-9 items-center justify-center', className)}\n {...props}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"19\" cy=\"12\" r=\"1\" />\n <circle cx=\"5\" cy=\"12\" r=\"1\" />\n </svg>\n <span className=\"sr-only\">More pages</span>\n </span>\n))\nPaginationEllipsis.displayName = 'PaginationEllipsis'\n\n// Compound component pattern\nconst PaginationNamespace = Object.assign(Pagination, {\n Content: PaginationContent,\n Item: PaginationItem,\n Link: PaginationLink,\n Previous: PaginationPrevious,\n Next: PaginationNext,\n Ellipsis: PaginationEllipsis,\n})\n\nexport {\n PaginationNamespace as Pagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n}\n","import * as React from 'react'\nimport { cn } from '../../utils/cn'\n\nexport interface ComboboxOption {\n value: string\n label: string\n disabled?: boolean\n}\n\ntype ComboboxPrimitiveOption = string\ntype ComboboxObjectOption = object\ntype ComboboxOptionInput = ComboboxPrimitiveOption | ComboboxObjectOption\ntype NormalizedOption<T> = {\n value: string\n label: string\n disabled?: boolean\n raw: T\n}\n\n// ============================================================================\n// Single Select Combobox Props\n// ============================================================================\nexport interface ComboboxSingleProps<T extends ComboboxOptionInput = ComboboxOptionInput> {\n options: T[]\n value?: T | null\n defaultValue?: T | null\n onChange?: (value: T | null) => void\n placeholder?: string\n searchPlaceholder?: string\n emptyMessage?: string\n disabled?: boolean\n className?: string\n multiple?: false\n clearable?: boolean\n openOnFocus?: boolean\n inputValue?: string\n onInputChange?: (value: string) => void\n simpleOptions?: boolean\n labelKey?: string\n valueKey?: string\n}\n\n// ============================================================================\n// Multi Select Combobox Props\n// ============================================================================\nexport interface ComboboxMultipleProps<T extends ComboboxOptionInput = ComboboxOptionInput> {\n options: T[]\n value?: T[]\n defaultValue?: T[]\n onChange?: (value: T[]) => void\n placeholder?: string\n searchPlaceholder?: string\n emptyMessage?: string\n disabled?: boolean\n className?: string\n multiple: true\n clearable?: boolean\n openOnFocus?: boolean\n inputValue?: string\n onInputChange?: (value: string) => void\n /** Show select-all option */\n selectAll?: boolean\n /** Label for select-all option */\n selectAllLabel?: string\n simpleOptions?: boolean\n labelKey?: string\n valueKey?: string\n /** Maximum number of items to display as chips before showing \"+N more\" */\n maxDisplayItems?: number\n}\n\nexport type ComboboxProps =\n | ComboboxSingleProps\n | ComboboxMultipleProps\n\n// Type guard to check if props are for multi-select\nfunction isMultipleProps(props: ComboboxProps): props is ComboboxMultipleProps {\n return props.multiple === true\n}\n\nconst Combobox = React.forwardRef<HTMLInputElement, ComboboxProps>(\n (props, ref) => {\n const {\n options,\n placeholder = 'Select option...',\n searchPlaceholder = 'Search...',\n emptyMessage = 'No results found.',\n disabled = false,\n clearable = true,\n openOnFocus = true,\n className,\n } = props\n\n const labelKey = props.labelKey ?? 'label'\n const valueKey = props.valueKey ?? 'value'\n\n const getOptionLabel = React.useCallback(\n (option: ComboboxOptionInput) => {\n if (typeof option === 'string') return option\n const record = option as Record<string, unknown>\n const maybeLabel = record[labelKey]\n return typeof maybeLabel === 'string' ? maybeLabel : String(maybeLabel ?? '')\n },\n [labelKey]\n )\n\n const getOptionValue = React.useCallback(\n (option: ComboboxOptionInput) => {\n if (typeof option === 'string') return option\n const record = option as Record<string, unknown>\n const maybeValue = record[valueKey]\n if (maybeValue !== undefined && maybeValue !== null) {\n return String(maybeValue)\n }\n return getOptionLabel(option)\n },\n [valueKey, getOptionLabel]\n )\n\n const normalizedOptions = React.useMemo<NormalizedOption<ComboboxOptionInput>[]>(\n () =>\n (options ?? []).map((option) => ({\n raw: option,\n label: getOptionLabel(option),\n value: getOptionValue(option),\n disabled: Boolean((option as { disabled?: boolean }).disabled),\n })),\n [options, getOptionLabel, getOptionValue]\n )\n\n const [open, setOpen] = React.useState(false)\n const [internalSearch, setInternalSearch] = React.useState('')\n const containerRef = React.useRef<HTMLDivElement>(null)\n const searchInputRef = React.useRef<HTMLInputElement | null>(null)\n\n // Handle single vs multiple value state\n const isMultiple = isMultipleProps(props)\n const selectAll = isMultiple ? (props.selectAll ?? false) : false\n const selectAllLabel = isMultiple ? (props.selectAllLabel ?? 'Select all') : 'Select all'\n\n // Single select state\n const [internalSingleValue, setInternalSingleValue] = React.useState<\n ComboboxOptionInput | null\n >(!isMultiple ? (props.defaultValue ?? null) : null)\n\n // Multi select state\n const [internalMultiValue, setInternalMultiValue] = React.useState<\n ComboboxOptionInput[]\n >(isMultiple ? (props.defaultValue ?? []) : [])\n\n // Get current value(s)\n const singleValue = !isMultiple\n ? (props.value !== undefined ? (props.value as ComboboxOptionInput | null) : internalSingleValue)\n : null\n const multiValue = isMultiple\n ? (props.value !== undefined ? (props.value as ComboboxOptionInput[]) : internalMultiValue)\n : []\n\n const search = props.inputValue !== undefined ? props.inputValue : internalSearch\n\n const filteredOptions = React.useMemo(() => {\n if (!search) return normalizedOptions\n return normalizedOptions.filter((option) =>\n option.label.toLowerCase().includes(search.toLowerCase())\n )\n }, [normalizedOptions, search])\n\n // Single select: get selected option\n // Multi select: get selected options\n const selectedOptions = isMultiple ? multiValue : []\n const selectedValueKeys = React.useMemo(\n () => new Set(selectedOptions.map((option) => getOptionValue(option))),\n [selectedOptions, getOptionValue]\n )\n const singleValueKey = singleValue ? getOptionValue(singleValue) : null\n const selectableOptions = React.useMemo(\n () => normalizedOptions.filter((option) => !option.disabled),\n [normalizedOptions]\n )\n const allSelected =\n isMultiple &&\n selectableOptions.length > 0 &&\n selectableOptions.every((option) => selectedValueKeys.has(option.value))\n\n const handleSingleSelect = (option: ComboboxOptionInput) => {\n if (!isMultiple) {\n if (props.value === undefined) {\n setInternalSingleValue(option)\n }\n props.onChange?.(option as never)\n setOpen(false)\n if (props.inputValue === undefined) {\n setInternalSearch('')\n }\n }\n }\n\n const handleMultiSelect = (option: ComboboxOptionInput) => {\n if (isMultiple) {\n const optionKey = getOptionValue(option)\n const exists = multiValue.some((item) => getOptionValue(item) === optionKey)\n const newValue = exists\n ? multiValue.filter((item) => getOptionValue(item) !== optionKey)\n : [...multiValue, option]\n\n if (props.value === undefined) {\n setInternalMultiValue(newValue)\n }\n props.onChange?.(newValue as never)\n }\n }\n\n const handleRemoveItem = (optionValue: string, e: React.MouseEvent) => {\n e.stopPropagation()\n if (isMultiple) {\n const newValue = multiValue.filter((v) => getOptionValue(v) !== optionValue)\n if (props.value === undefined) {\n setInternalMultiValue(newValue)\n }\n props.onChange?.(newValue as never)\n }\n }\n\n const handleClearAll = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (isMultiple) {\n if (props.value === undefined) {\n setInternalMultiValue([])\n }\n props.onChange?.([] as never)\n }\n }\n\n const handleSelectAll = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (!isMultiple) return\n const nextValue = allSelected ? [] : selectableOptions\n if (props.value === undefined) {\n setInternalMultiValue(nextValue.map((option) => option.raw))\n }\n props.onChange?.(nextValue.map((option) => option.raw) as never)\n }\n\n const handleClearSingle = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (!isMultiple) {\n if (props.value === undefined) {\n setInternalSingleValue(null)\n }\n props.onChange?.(null)\n if (props.inputValue === undefined) {\n setInternalSearch('')\n }\n }\n }\n\n // Close on click outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [])\n\n React.useEffect(() => {\n if (open) {\n searchInputRef.current?.focus()\n }\n }, [open])\n\n React.useImperativeHandle(\n ref,\n () => searchInputRef.current as HTMLInputElement,\n []\n )\n\n const setSearchRef = (node: HTMLInputElement | null) => {\n searchInputRef.current = node\n }\n\n const maxDisplayItems = isMultiple ? (props.maxDisplayItems ?? 3) : 0\n const displayedOptions = selectedOptions.slice(0, maxDisplayItems)\n const remainingCount = selectedOptions.length - maxDisplayItems\n\n return (\n <div ref={containerRef} className=\"relative\">\n <button\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n onClick={() => setOpen(!open)}\n className={cn(\n 'flex min-h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm',\n 'ring-offset-background',\n 'focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n isMultiple && selectedOptions.length > 0 && 'h-auto',\n className\n )}\n >\n {isMultiple ? (\n <div className=\"flex flex-1 flex-wrap items-center gap-1\">\n {selectedOptions.length === 0 ? (\n <span className=\"text-muted-foreground\">{placeholder}</span>\n ) : (\n <>\n {displayedOptions.map((option) => (\n <span\n key={getOptionValue(option)}\n className=\"inline-flex items-center gap-1 rounded-md bg-muted px-2 py-0.5 text-xs font-medium\"\n >\n {getOptionLabel(option)}\n <button\n type=\"button\"\n onClick={(e) => handleRemoveItem(getOptionValue(option), e)}\n className=\"ml-1 rounded-full hover:bg-background/50\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n </span>\n ))}\n {remainingCount > 0 && (\n <span className=\"text-xs text-muted-foreground\">\n +{remainingCount} more\n </span>\n )}\n </>\n )}\n </div>\n ) : (\n <span className={cn(!singleValue && 'text-muted-foreground')}>\n {singleValue ? getOptionLabel(singleValue) : placeholder}\n </span>\n )}\n\n <div className=\"flex items-center gap-1\">\n {/* Clear all button for multi-select */}\n {isMultiple && selectedOptions.length > 0 && (\n <button\n type=\"button\"\n onClick={handleClearAll}\n className=\"rounded p-0.5 hover:bg-muted\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"opacity-50 hover:opacity-100\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n {!isMultiple && clearable && singleValue && (\n <button\n type=\"button\"\n onClick={handleClearSingle}\n className=\"rounded p-0.5 hover:bg-muted\"\n aria-label=\"Clear selection\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"opacity-50 hover:opacity-100\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\n 'h-4 w-4 shrink-0 opacity-50 transition-transform',\n open && 'rotate-180'\n )}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </div>\n </button>\n\n {open && (\n <div className=\"absolute z-50 mt-1 w-full overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md\">\n <div className=\"flex items-center border-b border-border px-3\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"mr-2 h-4 w-4 shrink-0 opacity-50\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n <input\n ref={setSearchRef}\n className=\"flex h-10 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground\"\n placeholder={searchPlaceholder}\n value={search}\n onChange={(e) => {\n if (props.inputValue === undefined) {\n setInternalSearch(e.target.value)\n }\n props.onInputChange?.(e.target.value)\n }}\n onFocus={() => {\n if (openOnFocus && !disabled) setOpen(true)\n }}\n />\n </div>\n <div className=\"max-h-[300px] overflow-y-auto p-1\">\n {filteredOptions.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n {emptyMessage}\n </div>\n ) : (\n <>\n {isMultiple && selectAll && (\n <button\n type=\"button\"\n onClick={handleSelectAll}\n className={cn(\n 'relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none',\n 'hover:bg-muted hover:text-foreground',\n 'focus:bg-muted focus:text-foreground',\n allSelected && 'bg-muted'\n )}\n >\n <span className=\"absolute left-2 flex h-4 w-4 items-center justify-center\">\n <div\n className={cn(\n 'flex h-4 w-4 items-center justify-center rounded border border-input',\n allSelected && 'bg-accent border-accent'\n )}\n >\n {allSelected && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-3 w-3\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </div>\n </span>\n {selectAllLabel}\n </button>\n )}\n {filteredOptions.map((option) => {\n const isSelected = isMultiple\n ? selectedValueKeys.has(option.value)\n : option.value === singleValueKey\n\n return (\n <button\n key={option.value}\n type=\"button\"\n disabled={option.disabled}\n onClick={() =>\n isMultiple\n ? handleMultiSelect(option.raw)\n : handleSingleSelect(option.raw)\n }\n className={cn(\n 'relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none',\n 'hover:bg-muted hover:text-foreground',\n 'focus:bg-muted focus:text-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n isSelected && 'bg-muted'\n )}\n >\n <span className=\"absolute left-2 flex h-4 w-4 items-center justify-center\">\n {isMultiple ? (\n // Checkbox for multi-select\n <div\n className={cn(\n 'flex h-4 w-4 items-center justify-center rounded border border-input',\n isSelected && 'bg-accent border-accent'\n )}\n >\n {isSelected && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-3 w-3\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </div>\n ) : (\n // Checkmark for single-select\n isSelected && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )\n )}\n </span>\n {option.label}\n </button>\n )\n })}\n </>\n )}\n </div>\n </div>\n )}\n </div>\n )\n }\n)\nCombobox.displayName = 'Combobox'\n\nexport { Combobox }\n","import * as React from 'react'\nimport {\n useReactTable,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n getFilteredRowModel,\n flexRender,\n type ColumnDef,\n type SortingState,\n type RowSelectionState,\n type PaginationState,\n type VisibilityState,\n type ColumnSizingState,\n} from '@tanstack/react-table'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport { cn } from '../../utils/cn'\nimport { Checkbox } from '../checkbox'\nimport { Input } from '../input'\nimport { Button } from '../button'\nimport { Spinner } from '../spinner'\nimport {\n Pagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationEllipsis,\n} from '../pagination'\n\n// MUI DataGrid-compatible column definition\nexport interface GridColDef<TData = any> {\n field: string\n headerName?: string\n width?: number\n minWidth?: number\n maxWidth?: number\n flex?: number\n sortable?: boolean\n filterable?: boolean\n editable?: boolean\n hide?: boolean\n hideable?: boolean // Can this column be hidden by user?\n align?: 'left' | 'center' | 'right'\n headerAlign?: 'left' | 'center' | 'right'\n renderCell?: (params: GridRenderCellParams<TData>) => React.ReactNode\n renderHeader?: (params: GridRenderHeaderParams) => React.ReactNode\n valueGetter?: (params: GridValueGetterParams<TData>) => any\n valueFormatter?: (params: GridValueFormatterParams) => string\n type?: 'string' | 'number' | 'date' | 'dateTime' | 'boolean'\n // Cell content handling\n wrapText?: boolean // If true, text wraps instead of truncating (default: false)\n scrollable?: boolean // If true, cell content becomes scrollable when it overflows\n maxCellHeight?: number // Maximum height for scrollable cells (default: 100px)\n cellClassName?: string // Custom className for cell content\n // For export exclusion\n export?: boolean\n hideExport?: boolean\n disableExport?: boolean\n}\n\nexport interface GridRenderCellParams<TData = any> {\n row: TData\n value: any\n field: string\n rowIndex: number\n}\n\nexport interface GridRenderHeaderParams {\n field: string\n colDef: GridColDef\n}\n\nexport interface GridValueGetterParams<TData = any> {\n row: TData\n field: string\n}\n\nexport interface GridValueFormatterParams {\n value: any\n}\n\nexport interface PaginationModel {\n page: number\n pageSize: number\n}\n\nexport interface GridRowSelectionModel {\n [key: string]: boolean\n}\n\nexport interface ColumnVisibilityModel {\n [key: string]: boolean\n}\n\n// Density affects row height\ntype GridDensity = 'compact' | 'standard' | 'comfortable'\n\nexport interface DataGridProps<TData = any> {\n // Required\n rows: TData[]\n columns: GridColDef<TData>[]\n\n // Row identification\n getRowId?: (row: TData) => string | number\n\n // Loading state\n loading?: boolean\n\n // Title and toolbar\n title?: string\n toolBar?: boolean\n\n // Selection\n checkboxSelection?: boolean\n rowSelectionModel?: GridRowSelectionModel\n onRowSelectionModelChange?: (model: GridRowSelectionModel) => void\n disableRowSelectionOnClick?: boolean\n\n // Column visibility\n columnVisibilityModel?: ColumnVisibilityModel\n onColumnVisibilityModelChange?: (model: ColumnVisibilityModel) => void\n\n // Pagination\n paginationMode?: 'client' | 'server'\n paginationModel?: PaginationModel\n onPaginationModelChange?: (model: PaginationModel) => void\n rowCount?: number\n pageSizeOptions?: number[]\n\n // Sorting\n sortingMode?: 'client' | 'server'\n /** Initial sort model - array of { field: string, sort: 'asc' | 'desc' } */\n initialSortModel?: { field: string; sort: 'asc' | 'desc' }[]\n /** If true, sorts by createdAt descending (latest first). Requires a 'createdAt' field in rows. */\n sortLatestFirst?: boolean\n\n // Filtering\n filterMode?: 'client' | 'server'\n\n // Appearance\n height?: number | string\n minHeight?: number | string\n maxHeight?: number | string\n density?: GridDensity\n showCellVerticalBorder?: boolean\n showColumnVerticalBorder?: boolean\n hideFooter?: boolean\n hideFooterPagination?: boolean\n\n // Virtualization\n virtualized?: boolean // Enable row virtualization for large datasets\n overscan?: number // Number of rows to render outside visible area (default: 5)\n\n // Cell content handling\n wrapText?: boolean // If true, text wraps instead of truncating (global default, can be overridden per column)\n\n // Row styling\n getRowClassName?: (params: { row: TData; rowIndex: number }) => string\n\n // Custom slot props (for toolbar customization)\n slotProps?: {\n toolbar?: {\n getExportedColumns?: (columns: GridColDef[]) => GridColDef[]\n showQuickFilter?: boolean\n showColumnSelector?: boolean\n showExport?: boolean\n customButtons?: React.ReactNode\n moreOptions?: {\n label: string\n onClick: () => void\n icon?: React.ReactNode\n }[]\n }\n }\n\n // Export configuration\n onExport?: (data: TData[], columns: GridColDef<TData>[]) => void\n exportFileName?: string\n\n // Column resizing\n resizableColumns?: boolean\n onColumnResize?: (columnId: string, width: number) => void\n\n // Custom styles\n className?: string\n sx?: React.CSSProperties\n\n // Actions (edit/delete) - simplified for V0\n actions?: {\n edit?: boolean\n del?: boolean\n }\n\n // Sensitive info - affects export\n sensitiveInfo?: boolean\n\n // Other MUI compatibility props\n autoHeight?: boolean\n disableColumnMenu?: boolean\n disableColumnFilter?: boolean\n disableColumnSelector?: boolean\n disableDensitySelector?: boolean\n}\n\n// Convert MUI column def to TanStack column def\nfunction convertColumns<TData>(\n columns: GridColDef<TData>[],\n checkboxSelection?: boolean\n): ColumnDef<TData>[] {\n const tanstackColumns: ColumnDef<TData>[] = []\n\n // Add checkbox column if enabled\n if (checkboxSelection) {\n tanstackColumns.push({\n id: '__select__',\n header: ({ table }) => (\n <div className=\"flex items-center justify-center\">\n <Checkbox\n checked={table.getIsAllPageRowsSelected()}\n onChange={(e) => table.toggleAllPageRowsSelected(e.target.checked)}\n aria-label=\"Select all\"\n />\n </div>\n ),\n cell: ({ row }) => (\n <div className=\"flex items-center justify-center\">\n <Checkbox\n checked={row.getIsSelected()}\n onChange={(e) => row.toggleSelected(e.target.checked)}\n aria-label=\"Select row\"\n />\n </div>\n ),\n size: 50,\n enableSorting: false,\n enableColumnFilter: false,\n enableHiding: false,\n })\n }\n\n // Convert each MUI column\n columns.forEach((col) => {\n // Skip if column is initially hidden via hide prop\n if (col.hide) return\n\n const tanstackCol: ColumnDef<TData> = {\n id: col.field,\n accessorFn: (row) => {\n if (col.valueGetter) {\n return col.valueGetter({ row, field: col.field })\n }\n return (row as any)[col.field]\n },\n header: col.renderHeader\n ? () => col.renderHeader!({ field: col.field, colDef: col })\n : col.headerName || col.field,\n cell: ({ row, getValue }) => {\n const value = getValue()\n if (col.renderCell) {\n return col.renderCell({\n row: row.original,\n value,\n field: col.field,\n rowIndex: row.index,\n })\n }\n if (col.valueFormatter) {\n return col.valueFormatter({ value })\n }\n return value\n },\n enableSorting: col.sortable !== false,\n enableHiding: col.hideable !== false,\n size: col.width,\n minSize: col.minWidth,\n maxSize: col.maxWidth,\n meta: {\n align: col.align,\n headerAlign: col.headerAlign,\n flex: col.flex,\n headerName: col.headerName || col.field,\n wrapText: col.wrapText,\n scrollable: col.scrollable,\n maxCellHeight: col.maxCellHeight,\n cellClassName: col.cellClassName,\n },\n }\n\n tanstackColumns.push(tanstackCol)\n })\n\n return tanstackColumns\n}\n\n// Density to height mapping\nconst densityRowHeights: Record<GridDensity, number> = {\n compact: 36,\n standard: 52,\n comfortable: 68,\n}\n\n// Calculate initial column widths based on flex, width, minWidth, maxWidth (like MUI DataGrid)\n// This only calculates initial widths - resized widths are handled by TanStack Table's columnSizing state\ninterface CalculatedColumnWidth {\n id: string\n width: number\n minWidth: number\n maxWidth: number\n flex?: number\n}\n\nfunction calculateInitialColumnWidths(\n columns: GridColDef[],\n containerWidth: number,\n checkboxSelection: boolean,\n columnSizing: ColumnSizingState // Already resized columns\n): Map<string, CalculatedColumnWidth> {\n const widthMap = new Map<string, CalculatedColumnWidth>()\n\n if (containerWidth <= 0) return widthMap\n\n let remainingWidth = containerWidth\n\n // Reserve space for checkbox column\n if (checkboxSelection) {\n widthMap.set('__select__', { id: '__select__', width: 50, minWidth: 50, maxWidth: 50 })\n remainingWidth -= 50\n }\n\n // First pass: handle fixed width columns and manually resized columns\n const flexColumns: { col: GridColDef; flex: number; minWidth: number; maxWidth: number }[] = []\n let totalFlex = 0\n\n columns.forEach((col) => {\n if (col.hide) return\n\n const minWidth = col.minWidth || 50\n const maxWidth = col.maxWidth || 9999\n\n // If column was manually resized, use that width (it becomes fixed)\n if (columnSizing[col.field]) {\n const resizedWidth = columnSizing[col.field]\n widthMap.set(col.field, {\n id: col.field,\n width: resizedWidth,\n minWidth,\n maxWidth,\n })\n remainingWidth -= resizedWidth\n return\n }\n\n if (col.flex && col.flex > 0) {\n // Flex column - calculate later\n flexColumns.push({ col, flex: col.flex, minWidth, maxWidth })\n totalFlex += col.flex\n remainingWidth -= minWidth // Reserve minimum width\n } else {\n // Fixed width column\n const width = col.width || 100\n const finalWidth = Math.max(minWidth, Math.min(width, maxWidth))\n widthMap.set(col.field, {\n id: col.field,\n width: finalWidth,\n minWidth,\n maxWidth,\n })\n remainingWidth -= finalWidth\n }\n })\n\n // Second pass: distribute remaining width to flex columns (only non-resized ones)\n if (flexColumns.length > 0 && totalFlex > 0) {\n const extraWidth = Math.max(0, remainingWidth)\n\n flexColumns.forEach(({ col, flex, minWidth, maxWidth }) => {\n const proportionalExtra = (flex / totalFlex) * extraWidth\n const calculatedWidth = minWidth + proportionalExtra\n const finalWidth = Math.max(minWidth, Math.min(calculatedWidth, maxWidth))\n widthMap.set(col.field, {\n id: col.field,\n width: finalWidth,\n minWidth,\n maxWidth,\n flex,\n })\n })\n }\n\n return widthMap\n}\n\n// Memoized hook for column widths\nfunction useColumnWidths(\n columns: GridColDef[],\n containerWidth: number,\n checkboxSelection: boolean,\n columnSizing: ColumnSizingState\n): Map<string, CalculatedColumnWidth> {\n return React.useMemo(\n () => calculateInitialColumnWidths(columns, containerWidth, checkboxSelection, columnSizing),\n [columns, containerWidth, checkboxSelection, columnSizing]\n )\n}\n\n// Column resize handle component - uses TanStack Table's resize handler\nconst ColumnResizeHandle = ({\n header,\n isResizing,\n}: {\n header: any\n isResizing: boolean\n}) => {\n return (\n <div\n className={cn(\n // Wider hit area (8px) for easier clicking, but visually narrow\n 'absolute right-0 top-0 h-full w-2 cursor-col-resize select-none touch-none z-10',\n // Visual indicator using pseudo-element\n 'after:absolute after:right-0 after:top-0 after:h-full after:w-[2px]',\n 'hover:after:bg-primary-500',\n isResizing && 'after:bg-primary-500'\n )}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onClick={(e) => e.stopPropagation()}\n />\n )\n}\n\n// Sort icon component\nconst SortIcon = ({ direction }: { direction: 'asc' | 'desc' | false }) => {\n if (!direction) {\n return (\n <svg className=\"ml-1 h-4 w-4 text-muted-foreground/50\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M7 15l5 5 5-5M7 9l5-5 5 5\" />\n </svg>\n )\n }\n return (\n <svg className=\"ml-1 h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n {direction === 'asc' ? <path d=\"M7 14l5-5 5 5\" /> : <path d=\"M7 10l5 5 5-5\" />}\n </svg>\n )\n}\n\n// Column visibility dropdown\nconst ColumnVisibilityDropdown = ({\n table,\n}: {\n table: any\n}) => {\n const [open, setOpen] = React.useState(false)\n const dropdownRef = React.useRef<HTMLDivElement>(null)\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [])\n\n const allColumns = table.getAllLeafColumns().filter((col: any) => col.id !== '__select__')\n\n return (\n <div className=\"relative\" ref={dropdownRef}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setOpen(!open)}\n className=\"h-9 gap-2\"\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M12 3v18M3 12h18\" />\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M3 9h18M3 15h18M9 3v18M15 3v18\" />\n </svg>\n Columns\n </Button>\n\n {open && (\n <div className=\"absolute right-0 top-full mt-1 z-50 min-w-[180px] rounded-md border border-border bg-popover p-2 shadow-md\">\n <div className=\"text-sm font-medium text-foreground mb-2 px-2\">Show/Hide Columns</div>\n <div className=\"max-h-[300px] overflow-auto\">\n {allColumns.map((column: any) => {\n const meta = column.columnDef.meta as any\n const headerName = meta?.headerName || column.id\n\n return (\n <label\n key={column.id}\n className=\"flex items-center gap-2 px-2 py-1.5 hover:bg-muted rounded cursor-pointer\"\n >\n <Checkbox\n checked={column.getIsVisible()}\n onChange={(e) => column.toggleVisibility(e.target.checked)}\n />\n <span className=\"text-sm\">{headerName}</span>\n </label>\n )\n })}\n </div>\n <div className=\"border-t border-border mt-2 pt-2 flex gap-2 px-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"flex-1 h-7 text-xs\"\n onClick={() => table.toggleAllColumnsVisible(true)}\n >\n Show All\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"flex-1 h-7 text-xs\"\n onClick={() => table.toggleAllColumnsVisible(false)}\n >\n Hide All\n </Button>\n </div>\n </div>\n )}\n </div>\n )\n}\n\n// Pagination component using existing Pagination primitives\nconst DataGridPagination = ({\n table,\n pageSizeOptions = [10, 25, 50, 100],\n rowCount,\n paginationMode,\n}: {\n table: any\n pageSizeOptions?: number[]\n rowCount?: number\n paginationMode?: 'client' | 'server'\n}) => {\n const pageCount = paginationMode === 'server' && rowCount\n ? Math.ceil(rowCount / table.getState().pagination.pageSize)\n : table.getPageCount()\n\n const currentPage = table.getState().pagination.pageIndex\n const totalRows = paginationMode === 'server' && rowCount ? rowCount : table.getFilteredRowModel().rows.length\n const pageSize = table.getState().pagination.pageSize\n\n // Generate page numbers to display\n const getPageNumbers = () => {\n const pages: (number | 'ellipsis')[] = []\n const maxVisible = 5\n\n if (pageCount <= maxVisible) {\n for (let i = 0; i < pageCount; i++) pages.push(i)\n } else {\n // Always show first page\n pages.push(0)\n\n if (currentPage > 2) {\n pages.push('ellipsis')\n }\n\n // Show pages around current\n const start = Math.max(1, currentPage - 1)\n const end = Math.min(pageCount - 2, currentPage + 1)\n\n for (let i = start; i <= end; i++) {\n if (!pages.includes(i)) pages.push(i)\n }\n\n if (currentPage < pageCount - 3) {\n pages.push('ellipsis')\n }\n\n // Always show last page\n if (!pages.includes(pageCount - 1)) {\n pages.push(pageCount - 1)\n }\n }\n\n return pages\n }\n\n const startRow = currentPage * pageSize + 1\n const endRow = Math.min((currentPage + 1) * pageSize, totalRows)\n\n return (\n <div className=\"flex items-center justify-end gap-4 px-4 py-3 border-t border-border bg-background\">\n {/* Rows per page */}\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground whitespace-nowrap\">\n <span>Rows per page:</span>\n <select\n value={pageSize}\n onChange={(e) => table.setPageSize(Number(e.target.value))}\n className=\"h-8 rounded-md border border-border bg-background px-2 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-ring\"\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n\n {/* Row count info */}\n <span className=\"text-sm text-muted-foreground whitespace-nowrap\">\n {startRow}-{endRow} of {totalRows}\n </span>\n\n {/* Pagination controls using existing components */}\n <Pagination className=\"mx-0 w-auto\">\n <PaginationContent>\n {/* First page */}\n <PaginationItem>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M11 17l-5-5 5-5M18 17l-5-5 5-5\" />\n </svg>\n </Button>\n </PaginationItem>\n\n {/* Previous page */}\n <PaginationItem>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M15 18l-6-6 6-6\" />\n </svg>\n </Button>\n </PaginationItem>\n\n {/* Page numbers */}\n {getPageNumbers().map((page, idx) =>\n page === 'ellipsis' ? (\n <PaginationItem key={`ellipsis-${idx}`}>\n <PaginationEllipsis />\n </PaginationItem>\n ) : (\n <PaginationItem key={page}>\n <PaginationLink\n isActive={page === currentPage}\n onClick={() => table.setPageIndex(page)}\n >\n {page + 1}\n </PaginationLink>\n </PaginationItem>\n )\n )}\n\n {/* Next page */}\n <PaginationItem>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n </Button>\n </PaginationItem>\n\n {/* Last page */}\n <PaginationItem>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.setPageIndex(pageCount - 1)}\n disabled={!table.getCanNextPage()}\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M13 17l5-5-5-5M6 17l5-5-5-5\" />\n </svg>\n </Button>\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n </div>\n )\n}\n\n// Export dropdown component\nconst ExportDropdown = ({\n onExport,\n rows,\n columns,\n fileName = 'data-export',\n}: {\n onExport?: (data: any[], columns: GridColDef[]) => void\n rows: any[]\n columns: GridColDef[]\n fileName?: string\n}) => {\n const [open, setOpen] = React.useState(false)\n const dropdownRef = React.useRef<HTMLDivElement>(null)\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [])\n\n const exportToCSV = () => {\n const visibleColumns = columns.filter(col => !col.hide && !col.disableExport && !col.hideExport)\n const headers = visibleColumns.map(col => col.headerName || col.field)\n const csvRows = [headers.join(',')]\n\n rows.forEach(row => {\n const values = visibleColumns.map(col => {\n // Use valueGetter if available, otherwise use direct field access\n let value;\n if (col.valueGetter) {\n value = col.valueGetter({ row, field: col.field });\n } else {\n value = row[col.field];\n }\n // Escape quotes and wrap in quotes if contains comma\n const stringValue = String(value ?? '')\n if (stringValue.includes(',') || stringValue.includes('\"') || stringValue.includes('\\n')) {\n return `\"${stringValue.replace(/\"/g, '\"\"')}\"`\n }\n return stringValue\n })\n csvRows.push(values.join(','))\n })\n\n const csvContent = csvRows.join('\\n')\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' })\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.download = `${fileName}.csv`\n link.click()\n URL.revokeObjectURL(link.href)\n setOpen(false)\n }\n\n const handleCustomExport = () => {\n if (onExport) {\n onExport(rows, columns)\n }\n setOpen(false)\n }\n\n return (\n <div className=\"relative\" ref={dropdownRef}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setOpen(!open)}\n className=\"h-9 gap-2\"\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"7 10 12 15 17 10\" />\n <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\" />\n </svg>\n Export\n </Button>\n\n {open && (\n <div className=\"absolute right-0 top-full mt-1 z-50 min-w-[140px] rounded-md border border-border bg-popover p-1 shadow-md\">\n <button\n className=\"flex w-full items-center gap-2 rounded px-3 py-2 text-sm hover:bg-muted\"\n onClick={exportToCSV}\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n </svg>\n Export CSV\n </button>\n {onExport && (\n <button\n className=\"flex w-full items-center gap-2 rounded px-3 py-2 text-sm hover:bg-muted\"\n onClick={handleCustomExport}\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\" />\n </svg>\n Custom Export\n </button>\n )}\n </div>\n )}\n </div>\n )\n}\n\n// More options dropdown component\nconst MoreOptionsDropdown = ({\n options,\n}: {\n options: { label: string; onClick: () => void; icon?: React.ReactNode }[]\n}) => {\n const [open, setOpen] = React.useState(false)\n const dropdownRef = React.useRef<HTMLDivElement>(null)\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [])\n\n if (options.length === 0) return null\n\n return (\n <div className=\"relative\" ref={dropdownRef}>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => setOpen(!open)}\n className=\"h-9 w-9\"\n >\n <svg className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"12\" cy=\"5\" r=\"1\" />\n <circle cx=\"12\" cy=\"19\" r=\"1\" />\n </svg>\n </Button>\n\n {open && (\n <div className=\"absolute right-0 top-full mt-1 z-50 min-w-[160px] rounded-md border border-border bg-popover p-1 shadow-md\">\n {options.map((option, index) => (\n <button\n key={index}\n className=\"flex w-full items-center gap-2 rounded px-3 py-2 text-sm hover:bg-muted\"\n onClick={() => {\n option.onClick()\n setOpen(false)\n }}\n >\n {option.icon}\n {option.label}\n </button>\n ))}\n </div>\n )}\n </div>\n )\n}\n\n// Toolbar component\nconst DataGridToolbar = ({\n title,\n globalFilter,\n setGlobalFilter,\n showQuickFilter = true,\n showColumnSelector = true,\n showExport = true,\n table,\n rows,\n columns,\n onExport,\n exportFileName,\n customButtons,\n moreOptions = [],\n}: {\n title?: string\n globalFilter: string\n setGlobalFilter: (value: string) => void\n showQuickFilter?: boolean\n showColumnSelector?: boolean\n showExport?: boolean\n table: any\n rows: any[]\n columns: GridColDef[]\n onExport?: (data: any[], columns: GridColDef[]) => void\n exportFileName?: string\n customButtons?: React.ReactNode\n moreOptions?: { label: string; onClick: () => void; icon?: React.ReactNode }[]\n}) => {\n return (\n <div className=\"flex items-center justify-between px-4 py-3 border-b border-border bg-background\">\n {title && (\n <h3 className=\"text-lg font-semibold text-foreground\">{title}</h3>\n )}\n <div className=\"flex items-center gap-2 ml-auto\">\n {showQuickFilter && (\n <Input\n placeholder=\"Search...\"\n value={globalFilter ?? ''}\n onChange={(e) => setGlobalFilter(e.target.value)}\n className=\"h-9 w-64\"\n />\n )}\n {showColumnSelector && (\n <ColumnVisibilityDropdown table={table} />\n )}\n {showExport && (\n <ExportDropdown\n onExport={onExport}\n rows={rows}\n columns={columns}\n fileName={exportFileName}\n />\n )}\n {customButtons}\n {moreOptions.length > 0 && (\n <MoreOptionsDropdown options={moreOptions} />\n )}\n </div>\n </div>\n )\n}\n\n// Row renderer component for both virtualized and non-virtualized modes\ninterface RowRendererProps {\n row: any\n rowIndex: number\n rowHeight: number\n showCellVerticalBorder: boolean\n checkboxSelection: boolean\n disableRowSelectionOnClick: boolean\n getRowClassName?: (params: { row: any; rowIndex: number }) => string\n style?: React.CSSProperties\n globalWrapText?: boolean\n columnWidths: Map<string, CalculatedColumnWidth>\n}\n\nconst RowRenderer = ({\n row,\n rowIndex,\n rowHeight,\n showCellVerticalBorder,\n checkboxSelection,\n disableRowSelectionOnClick,\n getRowClassName,\n style,\n globalWrapText = false,\n columnWidths,\n}: RowRendererProps) => {\n const customClassName = getRowClassName?.({ row: row.original, rowIndex })\n\n return (\n <tr\n key={row.id}\n className={cn(\n 'border-b border-border transition-colors hover:bg-muted/50',\n row.getIsSelected() && 'bg-accent/10',\n customClassName\n )}\n data-state={row.getIsSelected() ? 'selected' : undefined}\n style={style}\n onClick={() => {\n if (!disableRowSelectionOnClick && checkboxSelection) {\n row.toggleSelected()\n }\n }}\n >\n {row.getVisibleCells().map((cell: any) => {\n const meta = cell.column.columnDef.meta as any\n const align = meta?.align || 'left'\n // Column-level wrapText overrides global setting\n const wrapText = meta?.wrapText !== undefined ? meta.wrapText : globalWrapText\n const scrollable = meta?.scrollable || false\n const maxCellHeight = meta?.maxCellHeight || 100\n const cellClassName = meta?.cellClassName\n\n // columnWidths already incorporates resized widths from columnSizing\n const colWidth = columnWidths.get(cell.column.id)\n const width = colWidth?.width || cell.column.getSize()\n\n return (\n <td\n key={cell.id}\n className={cn(\n 'px-4 overflow-hidden',\n showCellVerticalBorder && 'border-r last:border-r-0 border-border'\n )}\n style={{\n height: wrapText || scrollable ? 'auto' : rowHeight,\n minHeight: rowHeight,\n textAlign: align,\n width,\n maxWidth: colWidth?.maxWidth || width,\n minWidth: colWidth?.minWidth || cell.column.columnDef.minSize,\n }}\n >\n <div\n className={cn(\n wrapText ? 'whitespace-normal break-words' : scrollable ? 'overflow-auto' : 'truncate',\n scrollable && 'max-h-[100px]',\n cellClassName\n )}\n style={{\n maxHeight: scrollable ? `${maxCellHeight}px` : undefined,\n }}\n title={\n // Show tooltip for truncated simple text values (not for scrollable or wrapped content)\n !wrapText && !scrollable && (typeof cell.getValue() === 'string' || typeof cell.getValue() === 'number')\n ? String(cell.getValue())\n : undefined\n }\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </div>\n </td>\n )\n })}\n </tr>\n )\n}\n\n// Virtualized table body component\ninterface VirtualizedTableBodyProps {\n table: any\n rowHeight: number\n showCellVerticalBorder: boolean\n checkboxSelection: boolean\n disableRowSelectionOnClick: boolean\n getRowClassName?: (params: { row: any; rowIndex: number }) => string\n overscan: number\n parentRef: React.RefObject<HTMLDivElement>\n globalWrapText?: boolean\n columnWidths: Map<string, CalculatedColumnWidth>\n}\n\nconst VirtualizedTableBody = ({\n table,\n rowHeight,\n showCellVerticalBorder,\n checkboxSelection,\n disableRowSelectionOnClick,\n getRowClassName,\n overscan,\n parentRef,\n globalWrapText = false,\n columnWidths,\n}: VirtualizedTableBodyProps) => {\n const rows = table.getRowModel().rows\n\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement: () => parentRef.current,\n estimateSize: () => rowHeight,\n overscan,\n })\n\n const virtualRows = virtualizer.getVirtualItems()\n\n if (rows.length === 0) {\n return (\n <tbody>\n <tr>\n <td\n colSpan={table.getVisibleLeafColumns().length}\n className=\"h-32 text-center text-muted-foreground\"\n >\n No data available\n </td>\n </tr>\n </tbody>\n )\n }\n\n // Calculate padding for virtual scroll\n const paddingTop = virtualRows.length > 0 ? virtualRows[0].start : 0\n const paddingBottom = virtualRows.length > 0\n ? virtualizer.getTotalSize() - (virtualRows[virtualRows.length - 1].end)\n : 0\n\n return (\n <tbody>\n {/* Top spacer row */}\n {paddingTop > 0 && (\n <tr>\n <td\n colSpan={table.getVisibleLeafColumns().length}\n style={{ height: paddingTop, padding: 0, border: 'none' }}\n />\n </tr>\n )}\n {/* Visible rows */}\n {virtualRows.map((virtualRow) => {\n const row = rows[virtualRow.index]\n return (\n <RowRenderer\n key={row.id}\n row={row}\n rowIndex={virtualRow.index}\n rowHeight={rowHeight}\n showCellVerticalBorder={showCellVerticalBorder}\n checkboxSelection={checkboxSelection}\n disableRowSelectionOnClick={disableRowSelectionOnClick}\n getRowClassName={getRowClassName}\n globalWrapText={globalWrapText}\n columnWidths={columnWidths}\n />\n )\n })}\n {/* Bottom spacer row */}\n {paddingBottom > 0 && (\n <tr>\n <td\n colSpan={table.getVisibleLeafColumns().length}\n style={{ height: paddingBottom, padding: 0, border: 'none' }}\n />\n </tr>\n )}\n </tbody>\n )\n}\n\n// Standard table body component\ninterface StandardTableBodyProps {\n table: any\n rowHeight: number\n showCellVerticalBorder: boolean\n checkboxSelection: boolean\n disableRowSelectionOnClick: boolean\n getRowClassName?: (params: { row: any; rowIndex: number }) => string\n globalWrapText?: boolean\n columnWidths: Map<string, CalculatedColumnWidth>\n}\n\nconst StandardTableBody = ({\n table,\n rowHeight,\n showCellVerticalBorder,\n checkboxSelection,\n disableRowSelectionOnClick,\n getRowClassName,\n globalWrapText = false,\n columnWidths,\n}: StandardTableBodyProps) => {\n const rows = table.getRowModel().rows\n\n if (rows.length === 0) {\n return (\n <tbody>\n <tr>\n <td\n colSpan={table.getVisibleLeafColumns().length}\n className=\"h-32 text-center text-muted-foreground\"\n >\n No data available\n </td>\n </tr>\n </tbody>\n )\n }\n\n return (\n <tbody>\n {rows.map((row: any, rowIndex: number) => (\n <RowRenderer\n key={row.id}\n row={row}\n rowIndex={rowIndex}\n rowHeight={rowHeight}\n showCellVerticalBorder={showCellVerticalBorder}\n checkboxSelection={checkboxSelection}\n disableRowSelectionOnClick={disableRowSelectionOnClick}\n getRowClassName={getRowClassName}\n globalWrapText={globalWrapText}\n columnWidths={columnWidths}\n />\n ))}\n </tbody>\n )\n}\n\nexport function DataGrid<TData extends Record<string, any>>({\n rows,\n columns,\n getRowId,\n loading = false,\n title,\n toolBar = false,\n checkboxSelection = false,\n rowSelectionModel,\n onRowSelectionModelChange,\n disableRowSelectionOnClick = false,\n columnVisibilityModel,\n onColumnVisibilityModelChange,\n paginationMode = 'client',\n paginationModel,\n onPaginationModelChange,\n rowCount,\n pageSizeOptions = [10, 25, 50, 100],\n sortingMode = 'client',\n initialSortModel,\n sortLatestFirst = false,\n filterMode = 'client',\n height = 400,\n minHeight,\n maxHeight,\n density = 'standard',\n showCellVerticalBorder = false,\n showColumnVerticalBorder = false,\n hideFooter = false,\n hideFooterPagination = false,\n virtualized = false,\n overscan = 5,\n wrapText = false,\n getRowClassName,\n slotProps,\n className,\n sx,\n autoHeight = false,\n disableColumnSelector = false,\n onExport,\n exportFileName = 'data-export',\n resizableColumns = false,\n onColumnResize,\n}: DataGridProps<TData>) {\n // Refs\n const tableContainerRef = React.useRef<HTMLDivElement>(null)\n\n // Compute initial sorting state\n const computedInitialSort = React.useMemo<SortingState>(() => {\n if (initialSortModel && initialSortModel.length > 0) {\n return initialSortModel.map((s) => ({ id: s.field, desc: s.sort === 'desc' }))\n }\n if (sortLatestFirst) {\n return [{ id: 'createdAt', desc: true }]\n }\n return []\n }, []) // Only compute once on mount\n\n // State\n const [sorting, setSorting] = React.useState<SortingState>(computedInitialSort)\n const [globalFilter, setGlobalFilter] = React.useState('')\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>(\n rowSelectionModel || {}\n )\n const [pagination, setPagination] = React.useState<PaginationState>({\n pageIndex: paginationModel?.page || 0,\n pageSize: paginationModel?.pageSize || 10,\n })\n const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>(\n columnVisibilityModel || {}\n )\n const [containerWidth, setContainerWidth] = React.useState(0)\n // TanStack Table's column sizing state - stores resized column widths\n const [columnSizing, setColumnSizing] = React.useState<ColumnSizingState>({})\n\n // Observe container width for flex column calculations\n React.useEffect(() => {\n const container = tableContainerRef.current\n if (!container) return\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerWidth(entry.contentRect.width)\n }\n })\n\n resizeObserver.observe(container)\n // Set initial width\n setContainerWidth(container.clientWidth)\n\n return () => resizeObserver.disconnect()\n }, [])\n\n // Calculate column widths based on flex, width, minWidth, maxWidth\n // Pass columnSizing so resized columns become fixed and don't affect flex distribution\n const columnWidths = useColumnWidths(columns, containerWidth, checkboxSelection, columnSizing)\n\n // Convert MUI columns to TanStack columns\n const tanstackColumns = React.useMemo(\n () => convertColumns(columns, checkboxSelection),\n [columns, checkboxSelection]\n )\n\n // Sync external pagination model\n React.useEffect(() => {\n if (paginationModel) {\n setPagination({\n pageIndex: paginationModel.page,\n pageSize: paginationModel.pageSize,\n })\n }\n }, [paginationModel?.page, paginationModel?.pageSize])\n\n // Sync external row selection\n React.useEffect(() => {\n if (rowSelectionModel) {\n setRowSelection(rowSelectionModel)\n }\n }, [rowSelectionModel])\n\n // Sync external column visibility\n React.useEffect(() => {\n if (columnVisibilityModel) {\n setColumnVisibility(columnVisibilityModel)\n }\n }, [columnVisibilityModel])\n\n // Create table instance\n // When virtualized, disable pagination to show all rows\n const table = useReactTable({\n data: rows,\n columns: tanstackColumns,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: virtualized ? undefined : (paginationMode === 'client' ? getPaginationRowModel() : undefined),\n getSortedRowModel: sortingMode === 'client' ? getSortedRowModel() : undefined,\n getFilteredRowModel: filterMode === 'client' ? getFilteredRowModel() : undefined,\n getRowId: getRowId ? (row) => String(getRowId(row)) : undefined,\n state: {\n sorting,\n globalFilter,\n rowSelection,\n pagination: virtualized ? undefined : pagination,\n columnVisibility,\n columnSizing,\n },\n onSortingChange: setSorting,\n onGlobalFilterChange: setGlobalFilter,\n onRowSelectionChange: (updater) => {\n const newValue = typeof updater === 'function' ? updater(rowSelection) : updater\n setRowSelection(newValue)\n onRowSelectionModelChange?.(newValue)\n },\n onPaginationChange: virtualized ? undefined : (updater) => {\n const newValue = typeof updater === 'function' ? updater(pagination) : updater\n setPagination(newValue)\n onPaginationModelChange?.({ page: newValue.pageIndex, pageSize: newValue.pageSize })\n },\n onColumnVisibilityChange: (updater) => {\n const newValue = typeof updater === 'function' ? updater(columnVisibility) : updater\n setColumnVisibility(newValue)\n onColumnVisibilityModelChange?.(newValue)\n },\n // Column resizing - use TanStack Table's built-in handling\n enableColumnResizing: resizableColumns,\n columnResizeMode: 'onChange', // Real-time resize (vs 'onEnd' which only updates on mouse up)\n onColumnSizingChange: (updater) => {\n const newValue = typeof updater === 'function' ? updater(columnSizing) : updater\n setColumnSizing(newValue)\n // Notify external callback of resize changes\n if (onColumnResize) {\n Object.entries(newValue).forEach(([columnId, width]) => {\n if (columnSizing[columnId] !== width) {\n onColumnResize(columnId, width)\n }\n })\n }\n },\n enableRowSelection: checkboxSelection,\n manualPagination: virtualized ? true : paginationMode === 'server',\n manualSorting: sortingMode === 'server',\n manualFiltering: filterMode === 'server',\n pageCount: virtualized ? undefined : (paginationMode === 'server' && rowCount\n ? Math.ceil(rowCount / pagination.pageSize)\n : undefined),\n })\n\n const rowHeight = densityRowHeights[density]\n const showQuickFilter = slotProps?.toolbar?.showQuickFilter !== false\n const showColumnSelector = !disableColumnSelector && slotProps?.toolbar?.showColumnSelector !== false\n const showExport = slotProps?.toolbar?.showExport !== false\n const customButtons = slotProps?.toolbar?.customButtons\n const moreOptions = slotProps?.toolbar?.moreOptions || []\n\n // Calculate container style\n const containerStyle: React.CSSProperties = {\n ...sx,\n }\n\n if (!autoHeight) {\n containerStyle.height = height\n if (minHeight) containerStyle.minHeight = minHeight\n if (maxHeight) containerStyle.maxHeight = maxHeight\n }\n\n return (\n <div\n className={cn(\n 'rounded-lg border border-border bg-background overflow-hidden flex flex-col',\n className\n )}\n style={containerStyle}\n >\n {/* Toolbar */}\n {toolBar && (\n <DataGridToolbar\n title={title}\n globalFilter={globalFilter}\n setGlobalFilter={setGlobalFilter}\n showQuickFilter={showQuickFilter}\n showColumnSelector={showColumnSelector}\n showExport={showExport}\n table={table}\n rows={rows}\n columns={columns}\n onExport={onExport}\n exportFileName={exportFileName}\n customButtons={customButtons}\n moreOptions={moreOptions}\n />\n )}\n\n {/* Table container */}\n <div\n ref={tableContainerRef}\n className=\"relative flex-1 overflow-auto\"\n >\n {/* Loading overlay */}\n {loading && (\n <div className=\"absolute inset-0 bg-background/80 flex items-center justify-center z-10\">\n <Spinner size=\"lg\" />\n </div>\n )}\n\n <table className=\"w-full border-collapse table-fixed\">\n {/* Column group for width control */}\n <colgroup>\n {table.getVisibleLeafColumns().map((column) => {\n // columnWidths already incorporates columnSizing (resized widths)\n const colWidth = columnWidths.get(column.id)\n return (\n <col\n key={column.id}\n style={{\n width: colWidth?.width || column.getSize(),\n minWidth: colWidth?.minWidth || column.columnDef.minSize,\n maxWidth: colWidth?.maxWidth || column.columnDef.maxSize,\n }}\n />\n )\n })}\n </colgroup>\n <thead className=\"sticky top-0 z-[1]\">\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id} className=\"bg-muted\">\n {headerGroup.headers.map((header) => {\n const meta = header.column.columnDef.meta as any\n const align = meta?.headerAlign || meta?.align || 'left'\n const colWidth = columnWidths.get(header.column.id)\n // columnWidths already incorporates columnSizing (resized widths)\n const effectiveWidth = colWidth?.width || header.getSize()\n\n return (\n <th\n key={header.id}\n className={cn(\n 'px-4 text-left font-medium text-muted-foreground border-b border-border bg-muted overflow-hidden relative',\n showColumnVerticalBorder && 'border-r last:border-r-0',\n header.column.getCanSort() && 'cursor-pointer select-none hover:bg-muted/80',\n // Add cursor class when resizing\n header.column.getIsResizing() && 'cursor-col-resize'\n )}\n style={{\n height: rowHeight,\n width: effectiveWidth,\n minWidth: colWidth?.minWidth || header.column.columnDef.minSize,\n maxWidth: colWidth?.maxWidth || header.column.columnDef.maxSize,\n textAlign: align,\n }}\n onClick={header.column.getToggleSortingHandler()}\n >\n <div className={cn(\n 'flex items-center gap-1 truncate',\n align === 'center' && 'justify-center',\n align === 'right' && 'justify-end'\n )}>\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n {header.column.getCanSort() && (\n <SortIcon direction={header.column.getIsSorted()} />\n )}\n </div>\n {resizableColumns && header.column.id !== '__select__' && (\n <ColumnResizeHandle\n header={header}\n isResizing={header.column.getIsResizing()}\n />\n )}\n </th>\n )\n })}\n </tr>\n ))}\n </thead>\n\n {virtualized ? (\n <VirtualizedTableBody\n table={table}\n rowHeight={rowHeight}\n showCellVerticalBorder={showCellVerticalBorder}\n checkboxSelection={checkboxSelection}\n disableRowSelectionOnClick={disableRowSelectionOnClick}\n getRowClassName={getRowClassName}\n overscan={overscan}\n parentRef={tableContainerRef as React.RefObject<HTMLDivElement>}\n globalWrapText={wrapText}\n columnWidths={columnWidths}\n />\n ) : (\n <StandardTableBody\n table={table}\n rowHeight={rowHeight}\n showCellVerticalBorder={showCellVerticalBorder}\n checkboxSelection={checkboxSelection}\n disableRowSelectionOnClick={disableRowSelectionOnClick}\n getRowClassName={getRowClassName}\n globalWrapText={wrapText}\n columnWidths={columnWidths}\n />\n )}\n </table>\n </div>\n\n {/* Footer with pagination - only show when not virtualized */}\n {!virtualized && !hideFooter && !hideFooterPagination && (\n <DataGridPagination\n table={table}\n pageSizeOptions={pageSizeOptions}\n rowCount={rowCount}\n paginationMode={paginationMode}\n />\n )}\n\n {/* Footer info for virtualized mode */}\n {virtualized && !hideFooter && (\n <div className=\"flex items-center justify-end gap-4 px-4 py-3 border-t border-border bg-background\">\n <span className=\"text-sm text-muted-foreground whitespace-nowrap\">\n {table.getFilteredRowModel().rows.length} total rows (virtualized)\n </span>\n </div>\n )}\n </div>\n )\n}\n\nDataGrid.displayName = 'DataGrid'\n\n// Also export as DataGridV0 for clarity\nexport { DataGrid as DataGridV0 }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// List - Container for list items\n// ============================================================================\n\nexport interface ListProps extends React.HTMLAttributes<HTMLUListElement> {\n /** Whether the list has dividers between items */\n dividers?: boolean\n /** Padding for each list item */\n dense?: boolean\n /** Whether items are clickable (adds hover styles) */\n clickable?: boolean\n}\n\nconst List = React.forwardRef<HTMLUListElement, ListProps>(\n ({ dividers = false, dense = false, clickable = false, className, ...props }, ref) => (\n <ul\n ref={ref}\n role=\"list\"\n data-dividers={dividers}\n data-dense={dense}\n data-clickable={clickable}\n className={cn('flex flex-col', className)}\n {...props}\n />\n )\n)\nList.displayName = 'List'\n\n// ============================================================================\n// ListItem - Individual item in a list\n// ============================================================================\n\nexport interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {\n /** Whether this item is selected/active */\n selected?: boolean\n /** Whether this item is disabled */\n disabled?: boolean\n /** Whether this item is clickable */\n clickable?: boolean\n /** Leading element (icon, avatar, etc.) */\n leading?: React.ReactNode\n /** Trailing element (icon, action, etc.) */\n trailing?: React.ReactNode\n /** Secondary action element */\n secondaryAction?: React.ReactNode\n}\n\nconst ListItem = React.forwardRef<HTMLLIElement, ListItemProps>(\n (\n {\n selected = false,\n disabled = false,\n clickable = false,\n leading,\n trailing,\n secondaryAction,\n className,\n children,\n ...props\n },\n ref\n ) => (\n <li\n ref={ref}\n role={clickable ? 'button' : undefined}\n tabIndex={clickable && !disabled ? 0 : undefined}\n aria-selected={selected}\n aria-disabled={disabled}\n className={cn(\n 'flex items-center gap-3 px-4 py-3',\n 'border-b border-border last:border-b-0',\n '[ul[data-dividers=\"false\"]_&]:border-b-0',\n '[ul[data-dense=\"true\"]_&]:py-2 [ul[data-dense=\"true\"]_&]:px-3',\n clickable && !disabled && [\n 'cursor-pointer',\n 'hover:bg-muted',\n 'focus:outline-none focus:bg-muted',\n ],\n '[ul[data-clickable=\"true\"]_&]:cursor-pointer [ul[data-clickable=\"true\"]_&]:hover:bg-muted',\n selected && 'bg-muted',\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 {secondaryAction && <div className=\"shrink-0 ml-2\">{secondaryAction}</div>}\n </li>\n )\n)\nListItem.displayName = 'ListItem'\n\n// ============================================================================\n// ListItemText - Text content for a list item\n// ============================================================================\n\nexport interface ListItemTextProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Primary text */\n primary?: React.ReactNode\n /** Secondary text */\n secondary?: React.ReactNode\n /** Whether to prevent text wrapping */\n noWrap?: boolean\n}\n\nconst ListItemText = React.forwardRef<HTMLDivElement, ListItemTextProps>(\n ({ primary, secondary, noWrap = false, className, children, ...props }, ref) => (\n <div ref={ref} className={cn('min-w-0', className)} {...props}>\n {primary && (\n <div\n className={cn(\n 'text-sm font-medium text-foreground',\n noWrap && 'truncate'\n )}\n >\n {primary}\n </div>\n )}\n {secondary && (\n <div\n className={cn(\n 'text-sm text-muted-foreground',\n noWrap && 'truncate'\n )}\n >\n {secondary}\n </div>\n )}\n {!primary && !secondary && children}\n </div>\n )\n)\nListItemText.displayName = 'ListItemText'\n\n// ============================================================================\n// ListItemIcon - Icon wrapper for list items\n// ============================================================================\n\nexport interface ListItemIconProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst ListItemIcon = React.forwardRef<HTMLDivElement, ListItemIconProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('shrink-0 text-muted-foreground', className)}\n {...props}\n />\n )\n)\nListItemIcon.displayName = 'ListItemIcon'\n\n// ============================================================================\n// ListItemAvatar - Avatar wrapper for list items\n// ============================================================================\n\nexport interface ListItemAvatarProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst ListItemAvatar = React.forwardRef<HTMLDivElement, ListItemAvatarProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('shrink-0', className)} {...props} />\n )\n)\nListItemAvatar.displayName = 'ListItemAvatar'\n\n// ============================================================================\n// ListSubheader - Section header for lists\n// ============================================================================\n\nexport interface ListSubheaderProps extends React.HTMLAttributes<HTMLLIElement> {\n /** Whether the subheader is sticky */\n sticky?: boolean\n}\n\nconst ListSubheader = React.forwardRef<HTMLLIElement, ListSubheaderProps>(\n ({ sticky = false, className, ...props }, ref) => (\n <li\n ref={ref}\n role=\"presentation\"\n className={cn(\n 'px-4 py-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground bg-background',\n sticky && 'sticky top-0 z-10',\n className\n )}\n {...props}\n />\n )\n)\nListSubheader.displayName = 'ListSubheader'\n\n// ============================================================================\n// ListDivider - Divider between list items\n// ============================================================================\n\nexport interface ListDividerProps extends React.HTMLAttributes<HTMLLIElement> {\n /** Whether the divider is inset (indented) */\n inset?: boolean\n}\n\nconst ListDivider = React.forwardRef<HTMLLIElement, ListDividerProps>(\n ({ inset = false, className, ...props }, ref) => (\n <li\n ref={ref}\n role=\"separator\"\n className={cn(\n 'border-t border-border my-1',\n inset && 'ml-14',\n className\n )}\n {...props}\n />\n )\n)\nListDivider.displayName = 'ListDivider'\n\nexport {\n List,\n ListItem,\n ListItemText,\n ListItemIcon,\n ListItemAvatar,\n ListSubheader,\n ListDivider,\n}\n","import * as React from 'react'\nimport {\n BarChart as RechartsBarChart,\n Bar,\n LineChart as RechartsLineChart,\n Line,\n PieChart as RechartsPieChart,\n Pie,\n Cell,\n AreaChart as RechartsAreaChart,\n Area,\n ScatterChart as RechartsScatterChart,\n Scatter,\n RadarChart as RechartsRadarChart,\n Radar,\n PolarGrid,\n PolarAngleAxis,\n PolarRadiusAxis,\n CartesianGrid,\n XAxis,\n YAxis,\n Tooltip,\n Legend,\n ResponsiveContainer,\n LabelList,\n} from 'recharts'\nimport { cn } from '../utils/cn'\nimport { useTheme } from '../theme/use-theme'\nimport { accentColors } from '@onesaz/tokens'\n\n// ============================================================================\n// Bar Chart\n// ============================================================================\n\n// ============================================================================\n// Bar Chart\n// ============================================================================\n\nexport interface BarChartProps {\n /** Chart data */\n data: any[]\n /** Data key for the bars */\n dataKey: string\n /** Multiple data keys for grouped bars */\n dataKeys?: Array<{\n dataKey: string\n fill?: string\n name?: string\n }>\n /** Fill color for single bar */\n fill?: string\n /** Bar name for legend */\n name?: string\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Margin around the chart */\n margin?: {\n top?: number\n right?: number\n bottom?: number\n left?: number\n }\n /** Show grid lines */\n showGrid?: boolean\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** X-axis configuration */\n xAxis?: {\n dataKey?: string\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n angle?: number\n textAnchor?: 'start' | 'middle' | 'end'\n height?: number\n interval?: number | 'preserveStartEnd' | 'preserveStart' | 'preserveEnd'\n tick?: {\n fontSize?: number\n fontWeight?: string | number\n fill?: string\n }\n }\n /** Y-axis configuration */\n yAxis?: {\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n angle?: number\n position?: 'insideLeft' | 'insideRight' | 'left' | 'right'\n tick?: {\n fontSize?: number\n fontWeight?: string | number\n fill?: string\n }\n }\n /** Bar styling */\n barProps?: {\n radius?: number | [number, number, number, number]\n maxBarSize?: number\n minPointSize?: number\n barCategoryGap?: number | string\n barGap?: number | string\n }\n /** Label list configuration */\n labelList?: {\n dataKey?: string\n position?: 'top' | 'bottom' | 'left' | 'right' | 'center' | 'inside' | 'outside'\n style?: React.CSSProperties\n formatter?: (value: any, entry: any, index: number) => React.ReactNode\n }\n /** Custom colors array */\n colors?: string[]\n /** Tooltip configuration */\n tooltip?: {\n formatter?: (value: any, name: string, props: any) => [React.ReactNode, string]\n labelFormatter?: (label: any, payload: any[]) => React.ReactNode\n labelStyle?: React.CSSProperties\n contentStyle?: React.CSSProperties\n }\n /** Additional CSS classes */\n className?: string\n}\n\nexport const BarChart: React.FC<BarChartProps> = ({\n data,\n dataKey,\n dataKeys,\n fill,\n name,\n width = '100%',\n height = 300,\n margin = { top: 20, right: 30, left: 20, bottom: 5 },\n showGrid = true,\n showTooltip = true,\n showLegend = false,\n xAxis,\n yAxis,\n barProps = {},\n labelList,\n colors,\n tooltip,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n // Default colors using theme\n const defaultColors = [\n accentColors[accentColor as keyof typeof accentColors][6],\n accentColors[accentColor as keyof typeof accentColors][7],\n accentColors[accentColor as keyof typeof accentColors][8],\n accentColors[accentColor as keyof typeof accentColors][9],\n accentColors[accentColor as keyof typeof accentColors][10],\n accentColors[accentColor as keyof typeof accentColors][11],\n accentColors[accentColor as keyof typeof accentColors][12],\n accentColors[accentColor as keyof typeof accentColors][1],\n ]\n\n const chartColors = colors || defaultColors\n\n const bars = dataKeys ? (\n dataKeys.map((keyConfig, index) => (\n <Bar\n key={keyConfig.dataKey}\n dataKey={keyConfig.dataKey}\n fill={keyConfig.fill || chartColors[index % chartColors.length]}\n name={keyConfig.name || keyConfig.dataKey}\n radius={barProps.radius}\n maxBarSize={barProps.maxBarSize}\n minPointSize={barProps.minPointSize}\n >\n {labelList && (\n <LabelList\n dataKey={labelList.dataKey || keyConfig.dataKey}\n position={labelList.position || 'top'}\n style={labelList.style}\n formatter={labelList.formatter}\n />\n )}\n </Bar>\n ))\n ) : (\n <Bar\n dataKey={dataKey}\n fill={fill || chartColors[0]}\n name={name || dataKey}\n radius={barProps.radius}\n maxBarSize={barProps.maxBarSize}\n minPointSize={barProps.minPointSize}\n >\n {labelList && (\n <LabelList\n dataKey={labelList.dataKey || dataKey}\n position={labelList.position || 'top'}\n style={labelList.style}\n formatter={labelList.formatter}\n />\n )}\n {data.map((_entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={chartColors[index % chartColors.length]}\n />\n ))}\n </Bar>\n )\n\n const customTooltip = tooltip ? (\n <Tooltip\n formatter={tooltip.formatter}\n labelFormatter={tooltip.labelFormatter}\n labelStyle={tooltip.labelStyle}\n contentStyle={tooltip.contentStyle}\n />\n ) : showTooltip ? (\n <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />\n ) : null\n\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsBarChart\n data={data}\n margin={margin}\n barCategoryGap={barProps.barCategoryGap}\n barGap={barProps.barGap}\n >\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke=\"hsl(var(--muted-foreground))\" opacity={0.3} />}\n {xAxis && !xAxis.hide && (\n <XAxis\n dataKey={xAxis.dataKey}\n type={xAxis.type}\n angle={xAxis.angle}\n textAnchor={xAxis.textAnchor}\n height={xAxis.height}\n interval={xAxis.interval}\n className=\"text-xs\"\n tick={xAxis.tick || { fontSize: 12 }}\n label={xAxis.label ? { value: xAxis.label, position: 'insideBottom', offset: -5 } : undefined}\n />\n )}\n {yAxis && !yAxis.hide && (\n <YAxis\n type={yAxis.type}\n orientation={yAxis.position === 'right' ? 'right' : 'left'}\n className=\"text-xs\"\n tick={yAxis.tick || { fontSize: 12 }}\n label={yAxis.label ? { value: yAxis.label, angle: -90, position: yAxis.position || 'insideLeft' } : undefined}\n />\n )}\n {customTooltip}\n {showLegend && <Legend />}\n {bars}\n </RechartsBarChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Line Chart\n// ============================================================================\n\nexport interface LineChartProps {\n /** Chart data */\n data: any[]\n /** Data key for the line */\n dataKey: string\n /** Multiple data keys for multiple lines */\n dataKeys?: Array<{\n dataKey: string\n stroke?: string\n name?: string\n }>\n /** Stroke color for single line */\n stroke?: string\n /** Line name for legend */\n name?: string\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Margin around the chart */\n margin?: {\n top?: number\n right?: number\n bottom?: number\n left?: number\n }\n /** Show grid lines */\n showGrid?: boolean\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** X-axis configuration */\n xAxis?: {\n dataKey?: string\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n }\n /** Y-axis configuration */\n yAxis?: {\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n }\n /** Additional CSS classes */\n className?: string\n}\n\nexport const LineChart: React.FC<LineChartProps> = ({\n data,\n dataKey,\n dataKeys,\n stroke,\n name,\n width = '100%',\n height = 300,\n margin = { top: 20, right: 30, left: 20, bottom: 5 },\n showGrid = true,\n showTooltip = true,\n showLegend = false,\n xAxis,\n yAxis,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n // Default colors using theme\n const defaultColors = [\n accentColors[accentColor as keyof typeof accentColors][6],\n accentColors[accentColor as keyof typeof accentColors][7],\n accentColors[accentColor as keyof typeof accentColors][8],\n accentColors[accentColor as keyof typeof accentColors][9],\n accentColors[accentColor as keyof typeof accentColors][10],\n accentColors[accentColor as keyof typeof accentColors][11],\n accentColors[accentColor as keyof typeof accentColors][12],\n accentColors[accentColor as keyof typeof accentColors][1],\n ]\n\n const lines = dataKeys ? (\n dataKeys.map((keyConfig, index) => (\n <Line\n key={keyConfig.dataKey}\n type=\"monotone\"\n dataKey={keyConfig.dataKey}\n stroke={keyConfig.stroke || defaultColors[index % defaultColors.length]}\n strokeWidth={2}\n name={keyConfig.name || keyConfig.dataKey}\n />\n ))\n ) : (\n <Line\n type=\"monotone\"\n dataKey={dataKey}\n stroke={stroke || defaultColors[0]}\n strokeWidth={2}\n name={name || dataKey}\n />\n )\n\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsLineChart data={data} margin={margin}>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke=\"hsl(var(--muted-foreground))\" opacity={0.3} />}\n {xAxis && !xAxis.hide && (\n <XAxis\n dataKey={xAxis.dataKey}\n type={xAxis.type}\n className=\"text-xs\"\n tick={{ fontSize: 12 }}\n label={xAxis.label ? { value: xAxis.label, position: 'insideBottom', offset: -5 } : undefined}\n />\n )}\n {yAxis && !yAxis.hide && (\n <YAxis\n type={yAxis.type}\n className=\"text-xs\"\n tick={{ fontSize: 12 }}\n label={yAxis.label ? { value: yAxis.label, angle: -90, position: 'insideLeft' } : undefined}\n />\n )}\n {showTooltip && <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />}\n {showLegend && <Legend />}\n {lines}\n </RechartsLineChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Pie Chart\n// ============================================================================\n\nexport interface PieChartProps {\n /** Chart data */\n data: any[]\n /** Data key for the pie slices */\n dataKey: string\n /** Name key for labels */\n nameKey?: string\n /** Colors for pie slices */\n colors?: string[]\n /** Inner radius for donut effect (set to create donut chart) */\n innerRadius?: number\n /** Outer radius */\n outerRadius?: number\n /** Center coordinates */\n cx?: number | string\n cy?: number | string\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** Additional CSS classes */\n className?: string\n}\n\nexport const PieChart: React.FC<PieChartProps> = ({\n data,\n dataKey,\n nameKey,\n colors,\n innerRadius,\n outerRadius,\n cx = '50%',\n cy = '50%',\n width = '100%',\n height = 300,\n showTooltip = true,\n showLegend = false,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n // Default colors using theme\n const defaultColors = [\n accentColors[accentColor as keyof typeof accentColors][6],\n accentColors[accentColor as keyof typeof accentColors][7],\n accentColors[accentColor as keyof typeof accentColors][8],\n accentColors[accentColor as keyof typeof accentColors][9],\n accentColors[accentColor as keyof typeof accentColors][10],\n accentColors[accentColor as keyof typeof accentColors][11],\n accentColors[accentColor as keyof typeof accentColors][12],\n accentColors[accentColor as keyof typeof accentColors][1],\n ]\n\n const chartColors = colors || defaultColors\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsPieChart>\n <Pie\n data={data}\n cx={cx}\n cy={cy}\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n fill=\"#8884d8\"\n dataKey={dataKey}\n nameKey={nameKey}\n >\n {data.map((_entry, index) => (\n <Cell key={`cell-${index}`} fill={chartColors[index % chartColors.length]} />\n ))}\n </Pie>\n {showTooltip && <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />}\n {showLegend && <Legend />}\n </RechartsPieChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Area Chart\n// ============================================================================\n\nexport interface AreaChartProps {\n /** Chart data */\n data: any[]\n /** Data key for the area */\n dataKey: string\n /** Multiple data keys for stacked areas */\n dataKeys?: Array<{\n dataKey: string\n fill?: string\n stroke?: string\n name?: string\n }>\n /** Fill color for single area */\n fill?: string\n /** Stroke color for single area */\n stroke?: string\n /** Area name for legend */\n name?: string\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Margin around the chart */\n margin?: {\n top?: number\n right?: number\n bottom?: number\n left?: number\n }\n /** Show grid lines */\n showGrid?: boolean\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** Stack areas on top of each other */\n stack?: boolean\n /** X-axis configuration */\n xAxis?: {\n dataKey?: string\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n }\n /** Y-axis configuration */\n yAxis?: {\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n }\n /** Additional CSS classes */\n className?: string\n}\n\nexport const AreaChart: React.FC<AreaChartProps> = ({\n data,\n dataKey,\n dataKeys,\n fill,\n stroke,\n name,\n width = '100%',\n height = 300,\n margin = { top: 20, right: 30, left: 20, bottom: 5 },\n showGrid = true,\n showTooltip = true,\n showLegend = false,\n stack = false,\n xAxis,\n yAxis,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n // Default colors using theme\n const defaultColors = [\n accentColors[accentColor as keyof typeof accentColors][6],\n accentColors[accentColor as keyof typeof accentColors][7],\n accentColors[accentColor as keyof typeof accentColors][8],\n accentColors[accentColor as keyof typeof accentColors][9],\n accentColors[accentColor as keyof typeof accentColors][10],\n accentColors[accentColor as keyof typeof accentColors][11],\n accentColors[accentColor as keyof typeof accentColors][12],\n accentColors[accentColor as keyof typeof accentColors][1],\n ]\n\n const areas = dataKeys ? (\n dataKeys.map((keyConfig, index) => (\n <Area\n key={keyConfig.dataKey}\n type=\"monotone\"\n dataKey={keyConfig.dataKey}\n stackId={stack ? '1' : undefined}\n stroke={keyConfig.stroke || defaultColors[index % defaultColors.length]}\n fill={keyConfig.fill || defaultColors[index % defaultColors.length]}\n name={keyConfig.name || keyConfig.dataKey}\n />\n ))\n ) : (\n <Area\n type=\"monotone\"\n dataKey={dataKey}\n stroke={stroke || defaultColors[0]}\n fill={fill || defaultColors[0]}\n name={name || dataKey}\n />\n )\n\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsAreaChart data={data} margin={margin}>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke=\"hsl(var(--muted-foreground))\" opacity={0.3} />}\n {xAxis && !xAxis.hide && (\n <XAxis\n dataKey={xAxis.dataKey}\n type={xAxis.type}\n className=\"text-xs\"\n tick={{ fontSize: 12 }}\n label={xAxis.label ? { value: xAxis.label, position: 'insideBottom', offset: -5 } : undefined}\n />\n )}\n {yAxis && !yAxis.hide && (\n <YAxis\n type={yAxis.type}\n className=\"text-xs\"\n tick={{ fontSize: 12 }}\n label={yAxis.label ? { value: yAxis.label, angle: -90, position: 'insideLeft' } : undefined}\n />\n )}\n {showTooltip && <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />}\n {showLegend && <Legend />}\n {areas}\n </RechartsAreaChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Scatter Chart\n// ============================================================================\n\nexport interface ScatterChartProps {\n /** Chart data */\n data: any[]\n /** X-axis data key */\n xDataKey: string\n /** Y-axis data key */\n yDataKey: string\n /** Fill color for points */\n fill?: string\n /** Point name for legend */\n name?: string\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Margin around the chart */\n margin?: {\n top?: number\n right?: number\n bottom?: number\n left?: number\n }\n /** Show grid lines */\n showGrid?: boolean\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** X-axis configuration */\n xAxis?: {\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n }\n /** Y-axis configuration */\n yAxis?: {\n type?: 'number' | 'category'\n hide?: boolean\n label?: string\n }\n /** Additional CSS classes */\n className?: string\n}\n\nexport const ScatterChart: React.FC<ScatterChartProps> = ({\n data,\n xDataKey,\n yDataKey,\n fill,\n name = 'Point',\n width = '100%',\n height = 300,\n margin = { top: 20, right: 30, left: 20, bottom: 5 },\n showGrid = true,\n showTooltip = true,\n showLegend = false,\n xAxis,\n yAxis,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsScatterChart data={data} margin={margin}>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" stroke=\"hsl(var(--muted-foreground))\" opacity={0.3} />}\n {xAxis && !xAxis.hide && (\n <XAxis\n dataKey={xDataKey}\n type={xAxis.type}\n className=\"text-xs\"\n tick={{ fontSize: 12 }}\n label={xAxis.label ? { value: xAxis.label, position: 'insideBottom', offset: -5 } : undefined}\n />\n )}\n {yAxis && !yAxis.hide && (\n <YAxis\n dataKey={yDataKey}\n type={yAxis.type}\n className=\"text-xs\"\n tick={{ fontSize: 12 }}\n label={yAxis.label ? { value: yAxis.label, angle: -90, position: 'insideLeft' } : undefined}\n />\n )}\n {showTooltip && <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />}\n {showLegend && <Legend />}\n <Scatter name={name} dataKey={yDataKey} fill={fill || accentColors[accentColor as keyof typeof accentColors][6]} />\n </RechartsScatterChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Radar Chart\n// ============================================================================\n\nexport interface RadarChartProps {\n /** Chart data */\n data: any[]\n /** Data key for the radar values */\n dataKey: string\n /** Name key for labels */\n nameKey: string\n /** Fill color */\n fill?: string\n /** Stroke color */\n stroke?: string\n /** Radar name for legend */\n name?: string\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** Additional CSS classes */\n className?: string\n}\n\nexport const RadarChart: React.FC<RadarChartProps> = ({\n data,\n dataKey,\n nameKey,\n fill,\n stroke,\n name,\n width = '100%',\n height = 300,\n showTooltip = true,\n showLegend = false,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsRadarChart data={data}>\n <PolarGrid />\n <PolarAngleAxis dataKey={nameKey} />\n <PolarRadiusAxis />\n <Radar\n name={name || dataKey}\n dataKey={dataKey}\n stroke={stroke || accentColors[accentColor as keyof typeof accentColors][6]}\n fill={fill || accentColors[accentColor as keyof typeof accentColors][6]}\n fillOpacity={0.6}\n />\n {showTooltip && <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />}\n {showLegend && <Legend />}\n </RechartsRadarChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Donut Chart\n// ============================================================================\n\n// ============================================================================\n// Donut Chart\n// ============================================================================\n\nexport interface DonutChartProps {\n /** Chart data */\n data: any[]\n /** Data key for the donut slices */\n dataKey: string\n /** Name key for labels */\n nameKey?: string\n /** Colors for donut slices */\n colors?: string[]\n /** Inner radius */\n innerRadius?: number\n /** Outer radius */\n outerRadius?: number\n /** Center coordinates */\n cx?: number | string\n cy?: number | string\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** Advanced styling options */\n advancedStyling?: {\n /** Enable gradient effects */\n enableGradients?: boolean\n /** Enable shadow effects */\n enableShadows?: boolean\n /** Custom gradient definitions */\n gradients?: Array<{\n id: string\n colors: [string, string]\n x1?: string\n y1?: string\n x2?: string\n y2?: string\n }>\n /** Background circle styling */\n backgroundCircle?: {\n stroke?: string\n strokeWidth?: number\n filter?: string\n }\n /** Progress arc styling */\n progressArc?: {\n strokeLinecap?: 'butt' | 'round' | 'square'\n filter?: string\n }\n }\n /** Tooltip configuration */\n tooltip?: {\n formatter?: (value: any, name: string, props: any) => [React.ReactNode, string]\n labelFormatter?: (label: any, payload: any[]) => React.ReactNode\n labelStyle?: React.CSSProperties\n contentStyle?: React.CSSProperties\n }\n /** Additional CSS classes */\n className?: string\n}\n\nexport const DonutChart: React.FC<DonutChartProps> = ({\n data,\n dataKey,\n nameKey,\n colors,\n innerRadius = 60,\n outerRadius,\n cx = '50%',\n cy = '50%',\n width = '100%',\n height = 300,\n showTooltip = true,\n showLegend = false,\n advancedStyling,\n tooltip,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n // Default colors using theme\n const defaultColors = [\n accentColors[accentColor as keyof typeof accentColors][6],\n accentColors[accentColor as keyof typeof accentColors][7],\n accentColors[accentColor as keyof typeof accentColors][8],\n accentColors[accentColor as keyof typeof accentColors][9],\n accentColors[accentColor as keyof typeof accentColors][10],\n accentColors[accentColor as keyof typeof accentColors][11],\n accentColors[accentColor as keyof typeof accentColors][12],\n accentColors[accentColor as keyof typeof accentColors][1],\n ]\n\n const chartColors = colors || defaultColors\n\n // Default advanced styling\n const defaultAdvancedStyling = {\n enableGradients: false,\n enableShadows: false,\n gradients: [],\n backgroundCircle: {\n stroke: 'hsl(var(--border))',\n strokeWidth: 14,\n filter: 'url(#deepInsetShadow)',\n },\n progressArc: {\n strokeLinecap: 'round' as const,\n filter: 'url(#dropShadow)',\n },\n }\n\n const styling = { ...defaultAdvancedStyling, ...advancedStyling }\n\n // Generate gradient IDs if gradients are enabled\n const gradientDefs = styling.enableGradients ? (\n <defs>\n {/* Deep inset shadow for the background circle */}\n {styling.enableShadows && (\n <filter\n id=\"deepInsetShadow\"\n x=\"-50%\"\n y=\"-50%\"\n width=\"200%\"\n height=\"200%\"\n >\n <feOffset dx=\"0\" dy=\"2\" />\n <feGaussianBlur stdDeviation=\"2\" result=\"offsetBlur\" />\n <feComposite\n in=\"SourceAlpha\"\n in2=\"offsetBlur\"\n operator=\"out\"\n result=\"innerShadow\"\n />\n <feFlood floodColor=\"hsl(var(--muted))\" floodOpacity=\"0.9\" result=\"color\" />\n <feComposite\n in=\"color\"\n in2=\"innerShadow\"\n operator=\"in\"\n result=\"shadow\"\n />\n <feComposite\n in=\"shadow\"\n in2=\"SourceGraphic\"\n operator=\"over\"\n />\n </filter>\n )}\n\n {/* Drop shadow for the colored progress arc */}\n {styling.enableShadows && (\n <filter\n id=\"dropShadow\"\n x=\"-10%\"\n y=\"-10%\"\n width=\"120%\"\n height=\"120%\"\n >\n <feDropShadow\n dx=\"0\"\n dy=\"1\"\n stdDeviation=\"1\"\n floodColor=\"hsl(var(--muted-foreground))\"\n floodOpacity=\"0.5\"\n />\n </filter>\n )}\n\n {/* Custom gradients */}\n {styling.gradients?.map((gradient) => (\n <linearGradient\n key={gradient.id}\n id={gradient.id}\n x1={gradient.x1 || \"0%\"}\n y1={gradient.y1 || \"0%\"}\n x2={gradient.x2 || \"100%\"}\n y2={gradient.y2 || \"100%\"}\n >\n <stop offset=\"0%\" stopColor={gradient.colors[0]} />\n <stop offset=\"100%\" stopColor={gradient.colors[1]} />\n </linearGradient>\n ))}\n </defs>\n ) : null\n\n const customTooltip = tooltip ? (\n <Tooltip\n formatter={tooltip.formatter}\n labelFormatter={tooltip.labelFormatter}\n labelStyle={tooltip.labelStyle}\n contentStyle={tooltip.contentStyle}\n />\n ) : showTooltip ? (\n <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />\n ) : null\n\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsPieChart>\n {gradientDefs}\n <Pie\n data={data}\n cx={cx}\n cy={cy}\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n fill=\"#8884d8\"\n dataKey={dataKey}\n nameKey={nameKey}\n strokeLinecap={styling.progressArc.strokeLinecap}\n filter={styling.progressArc.filter}\n >\n {data.map((_entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={chartColors[index % chartColors.length]}\n />\n ))}\n </Pie>\n {customTooltip}\n {showLegend && <Legend />}\n </RechartsPieChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Progress Card (Individual Progress Indicator)\n// ============================================================================\n\nexport interface ProgressCardProps {\n /** Question number or identifier */\n questionNum: string | number\n /** Percentage value (0-100) */\n percentage: number\n /** Optional click handler */\n onClick?: (questionNum: string | number) => void\n /** Size of the donut chart */\n donutSize?: number\n /** Stroke width for the progress arc */\n strokeWidth?: number\n /** Background stroke color */\n backgroundColor?: string\n /** Custom color logic based on percentage */\n getColor?: (percentage: number) => [string, string]\n /** Enable shadows */\n enableShadows?: boolean\n /** Enable gradients */\n enableGradients?: boolean\n /** Typography options */\n typography?: {\n questionFontSize?: string\n percentageFontSize?: string\n questionColor?: string\n percentageColorAuto?: boolean\n }\n /** Additional CSS classes */\n className?: string\n}\n\nexport const ProgressCard: React.FC<ProgressCardProps> = ({\n questionNum,\n percentage,\n onClick,\n donutSize = 50,\n strokeWidth = 7,\n backgroundColor = '#E0E4E8',\n getColor,\n enableShadows = true,\n enableGradients = true,\n typography = {\n questionFontSize: 'text-sm',\n percentageFontSize: 'text-base',\n questionColor: 'text-gray-700 dark:text-gray-300',\n percentageColorAuto: true,\n },\n className,\n}) => {\n // Default color logic matching your example\n const defaultGetColor = (percentage: number): [string, string] => {\n if (percentage <= 30) {\n return ['rgb(132, 249, 169)', '#46AB87'] // Green for success\n } else if (percentage <= 50) {\n return ['#3366cc', '#0066cc'] // Blue for info \n } else {\n return ['#ff3300', '#cc3300'] // Red for error\n }\n }\n\n const colorFn = getColor || defaultGetColor\n const normalizedPercentage = Math.min(100, Math.max(0, percentage))\n const gradientId = `progress-gradient-${Math.random().toString(36).substr(2, 9)}`\n const shadowId = `progress-shadow-${Math.random().toString(36).substr(2, 9)}`\n const bgShadowId = `progress-bg-shadow-${Math.random().toString(36).substr(2, 9)}`\n const [startColor, endColor] = colorFn(normalizedPercentage)\n\n // Get percentage text color if auto-coloring is enabled\n const percentageTextColor = typography.percentageColorAuto\n ? normalizedPercentage <= 30\n ? 'text-green-600'\n : normalizedPercentage <= 50\n ? 'text-blue-600'\n : 'text-red-600'\n : 'text-gray-900 dark:text-gray-100'\n\n return (\n <div\n className={cn(\n 'flex items-center justify-between p-3',\n onClick && 'cursor-pointer',\n className\n )}\n onClick={() => onClick?.(questionNum)}\n >\n {/* Left side: Question Number and Percentage */}\n <div className=\"flex flex-col items-center\">\n <span className={cn('font-bold', typography.questionFontSize, typography.questionColor)}>\n {questionNum}\n </span>\n <span className={cn('font-bold', typography.percentageFontSize, percentageTextColor)}>\n {normalizedPercentage.toFixed(1)}%\n </span>\n </div>\n\n {/* Right side: Donut Chart */}\n <div className=\"flex items-center\" style={{ width: `${donutSize + 10}px`, height: `${donutSize + 10}px` }}>\n <svg width={donutSize + 10} height={donutSize + 10} viewBox=\"0 0 100 100\">\n <defs>\n {enableGradients && (\n <linearGradient\n id={gradientId}\n x1=\"0%\"\n y1=\"0%\"\n x2=\"100%\"\n y2=\"100%\"\n >\n <stop offset=\"0%\" stopColor={startColor} />\n <stop offset=\"100%\" stopColor={endColor} />\n </linearGradient>\n )}\n\n {enableShadows && (\n <>\n {/* Deep inset shadow for background circle */}\n <filter\n id={bgShadowId}\n x=\"-50%\"\n y=\"-50%\"\n width=\"200%\"\n height=\"200%\"\n >\n <feOffset dx=\"0\" dy=\"2\" />\n <feGaussianBlur stdDeviation=\"2\" result=\"offsetBlur\" />\n <feComposite\n in=\"SourceAlpha\"\n in2=\"offsetBlur\"\n operator=\"out\"\n result=\"innerShadow\"\n />\n <feFlood floodColor=\"#c0c0c0\" floodOpacity=\"0.9\" result=\"color\" />\n <feComposite\n in=\"color\"\n in2=\"innerShadow\"\n operator=\"in\"\n result=\"shadow\"\n />\n <feComposite\n in=\"shadow\"\n in2=\"SourceGraphic\"\n operator=\"over\"\n />\n </filter>\n\n {/* Drop shadow for progress arc */}\n <filter\n id={shadowId}\n x=\"-10%\"\n y=\"-10%\"\n width=\"120%\"\n height=\"120%\"\n >\n <feDropShadow\n dx=\"0\"\n dy=\"1\"\n stdDeviation=\"1\"\n floodColor=\"#bbb\"\n floodOpacity=\"0.5\"\n />\n </filter>\n </>\n )}\n </defs>\n\n {/* Background circle */}\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"40\"\n fill=\"transparent\"\n stroke={backgroundColor}\n strokeWidth={strokeWidth * 2}\n filter={enableShadows ? `url(#${bgShadowId})` : undefined}\n />\n\n {/* Progress arc */}\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"40\"\n fill=\"transparent\"\n stroke={enableGradients ? `url(#${gradientId})` : startColor}\n strokeWidth={strokeWidth * 2}\n strokeLinecap=\"round\"\n strokeDasharray={`${2 * Math.PI * 40}`}\n strokeDashoffset={`${2 * Math.PI * 40 * (1 - normalizedPercentage / 100)}`}\n transform=\"rotate(-90 50 50)\"\n filter={enableShadows ? `url(#${shadowId})` : undefined}\n />\n </svg>\n </div>\n </div>\n )\n}\n\n// ============================================================================\n// Progress Donut (Single Donut with Multiple Segments)\n// ============================================================================\n\nexport interface ProgressDonutProps {\n /** Array of data items with value and label */\n data?: Array<{\n value: number\n label?: string\n [key: string]: any\n }>\n /** Width of the chart */\n width?: number | string\n /** Height of the chart */\n height?: number | string\n /** Inner radius for donut effect */\n innerRadius?: number\n /** Outer radius */\n outerRadius?: number\n /** Show tooltip */\n showTooltip?: boolean\n /** Show legend */\n showLegend?: boolean\n /** Custom color logic based on value */\n getColor?: (value: number) => string\n /** Additional CSS classes */\n className?: string\n}\n\nexport const ProgressDonut: React.FC<ProgressDonutProps> = ({\n data = [],\n width = 300,\n height = 300,\n innerRadius = 60,\n outerRadius = 80,\n showTooltip = true,\n showLegend = false,\n getColor,\n className,\n}) => {\n const { accentColor } = useTheme()\n\n // Default color logic based on percentage\n const defaultGetColor = (percentage: number): string => {\n if (percentage <= 30) {\n return '#22c55e' // Green for success\n } else if (percentage <= 50) {\n return '#3b82f6' // Blue for info\n } else {\n return '#ef4444' // Red for error\n }\n }\n\n const colorFn = getColor || defaultGetColor\n\n // Default colors using theme\n const defaultColors = [\n accentColors[accentColor as keyof typeof accentColors][6],\n accentColors[accentColor as keyof typeof accentColors][7],\n accentColors[accentColor as keyof typeof accentColors][8],\n accentColors[accentColor as keyof typeof accentColors][9],\n accentColors[accentColor as keyof typeof accentColors][10],\n accentColors[accentColor as keyof typeof accentColors][11],\n accentColors[accentColor as keyof typeof accentColors][12],\n accentColors[accentColor as keyof typeof accentColors][1],\n ]\n\n // If no data provided, return empty\n if (!data || data.length === 0) {\n return <div className={cn('text-gray-500', className)}>No data provided</div>\n }\n\n return (\n <div className={cn('w-full', className)}>\n <ResponsiveContainer width={width} height={height}>\n <RechartsPieChart>\n <Pie\n data={data}\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n fill=\"#8884d8\"\n dataKey=\"value\"\n nameKey=\"label\"\n >\n {data.map((_entry, index) => {\n const percentage = Math.min(100, Math.max(0, _entry.value))\n const fillColor = colorFn(percentage) || defaultColors[index % defaultColors.length]\n return <Cell key={`cell-${index}`} fill={fillColor} />\n })}\n </Pie>\n {showTooltip && <Tooltip contentStyle={{ backgroundColor: 'hsl(var(--background))', border: '1px solid hsl(var(--border))', borderRadius: '6px', color: 'hsl(var(--foreground))' }} />}\n {showLegend && <Legend />}\n </RechartsPieChart>\n </ResponsiveContainer>\n </div>\n )\n}\n\n// ============================================================================\n// Multi Progress Donut (Multiple Separate Donut Charts)\n// ============================================================================\n\nexport interface MultiProgressDonutProps {\n /** Array of data items with value and label */\n data?: Array<{\n value: number\n label?: string\n [key: string]: any\n }>\n /** Size of each donut chart */\n size?: number\n /** Outer radius */\n outerRadius?: number\n /** Stroke width for the progress arc */\n strokeWidth?: number\n /** Background stroke color */\n backgroundColor?: string\n /** Background stroke width */\n backgroundStrokeWidth?: number\n /** Show percentage text in center */\n showPercentage?: boolean\n /** Custom color logic based on value */\n getColor?: (value: number) => [string, string]\n /** Enable shadows */\n enableShadows?: boolean\n /** Enable gradients */\n enableGradients?: boolean\n /** Additional CSS classes */\n className?: string\n}\n\nexport const MultiProgressDonut: React.FC<MultiProgressDonutProps> = ({\n data = [],\n size = 80,\n outerRadius = 35,\n strokeWidth = 8,\n backgroundColor = '#E0E4E8',\n backgroundStrokeWidth = 8,\n showPercentage = true,\n getColor,\n enableShadows = true,\n enableGradients = true,\n className,\n}) => {\n // Default color logic based on percentage\n const defaultGetColor = (percentage: number): [string, string] => {\n if (percentage <= 30) {\n return ['#22c55e', '#16a34a'] // Green for success\n } else if (percentage <= 50) {\n return ['#3b82f6', '#2563eb'] // Blue for info\n } else {\n return ['#ef4444', '#dc2626'] // Red for error\n }\n }\n\n const colorFn = getColor || defaultGetColor\n\n // If no data provided, return empty\n if (!data || data.length === 0) {\n return <div className={cn('text-gray-500', className)}>No data provided</div>\n }\n\n return (\n <div className={cn('flex flex-wrap gap-4', className)}>\n {data.map((item, index) => {\n const percentage = Math.min(100, Math.max(0, item.value))\n const gradientId = `progress-gradient-${index}`\n const shadowId = `progress-shadow-${index}`\n const bgShadowId = `progress-bg-shadow-${index}`\n const [startColor, endColor] = colorFn(percentage)\n\n return (\n <div key={index} className=\"flex flex-col items-center gap-2\">\n {item.label && (\n <div className=\"text-sm font-medium text-gray-700 dark:text-gray-300\">\n {item.label}\n </div>\n )}\n <div className=\"relative\">\n <svg width={size} height={size} viewBox=\"0 0 100 100\">\n <defs>\n {enableGradients && (\n <linearGradient\n id={gradientId}\n x1=\"0%\"\n y1=\"0%\"\n x2=\"100%\"\n y2=\"100%\"\n >\n <stop offset=\"0%\" stopColor={startColor} />\n <stop offset=\"100%\" stopColor={endColor} />\n </linearGradient>\n )}\n\n {enableShadows && (\n <>\n {/* Deep inset shadow for background circle */}\n <filter\n id={bgShadowId}\n x=\"-50%\"\n y=\"-50%\"\n width=\"200%\"\n height=\"200%\"\n >\n <feOffset dx=\"0\" dy=\"2\" />\n <feGaussianBlur stdDeviation=\"2\" result=\"offsetBlur\" />\n <feComposite\n in=\"SourceAlpha\"\n in2=\"offsetBlur\"\n operator=\"out\"\n result=\"innerShadow\"\n />\n <feFlood floodColor=\"#c0c0c0\" floodOpacity=\"0.9\" result=\"color\" />\n <feComposite\n in=\"color\"\n in2=\"innerShadow\"\n operator=\"in\"\n result=\"shadow\"\n />\n <feComposite\n in=\"shadow\"\n in2=\"SourceGraphic\"\n operator=\"over\"\n />\n </filter>\n\n {/* Drop shadow for progress arc */}\n <filter\n id={shadowId}\n x=\"-10%\"\n y=\"-10%\"\n width=\"120%\"\n height=\"120%\"\n >\n <feDropShadow\n dx=\"0\"\n dy=\"1\"\n stdDeviation=\"1\"\n floodColor=\"#bbb\"\n floodOpacity=\"0.5\"\n />\n </filter>\n </>\n )}\n </defs>\n\n {/* Background circle */}\n <circle\n cx=\"50\"\n cy=\"50\"\n r={outerRadius}\n fill=\"transparent\"\n stroke={backgroundColor}\n strokeWidth={backgroundStrokeWidth}\n filter={enableShadows ? `url(#${bgShadowId})` : undefined}\n />\n\n {/* Progress arc */}\n <circle\n cx=\"50\"\n cy=\"50\"\n r={outerRadius}\n fill=\"transparent\"\n stroke={enableGradients ? `url(#${gradientId})` : startColor}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeDasharray={`${2 * Math.PI * outerRadius}`}\n strokeDashoffset={`${2 * Math.PI * outerRadius * (1 - percentage / 100)}`}\n transform=\"rotate(-90 50 50)\"\n filter={enableShadows ? `url(#${shadowId})` : undefined}\n />\n </svg>\n\n {showPercentage && (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <span className=\"text-xs font-bold text-gray-700 dark:text-gray-300\">\n {percentage.toFixed(1)}%\n </span>\n </div>\n )}\n </div>\n </div>\n )\n })}\n </div>\n )\n}","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// Breadcrumbs - Navigation breadcrumb trail\n// ============================================================================\n\nexport interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {\n /** Custom separator element */\n separator?: React.ReactNode\n /** Maximum number of items to display before collapsing */\n maxItems?: number\n /** Number of items to show at the beginning when collapsed */\n itemsBeforeCollapse?: number\n /** Number of items to show at the end when collapsed */\n itemsAfterCollapse?: number\n}\n\nconst Breadcrumbs = React.forwardRef<HTMLElement, BreadcrumbsProps>(\n (\n {\n separator,\n maxItems,\n itemsBeforeCollapse = 1,\n itemsAfterCollapse = 2,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const childArray = React.Children.toArray(children)\n const totalItems = childArray.length\n\n // Default separator\n const separatorElement = separator ?? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-muted-foreground\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n )\n\n // Determine if we need to collapse\n const shouldCollapse = maxItems && totalItems > maxItems\n\n let displayedItems: React.ReactNode[]\n\n if (shouldCollapse) {\n const startItems = childArray.slice(0, itemsBeforeCollapse)\n const endItems = childArray.slice(-itemsAfterCollapse)\n\n displayedItems = [\n ...startItems,\n <BreadcrumbEllipsis key=\"ellipsis\" />,\n ...endItems,\n ]\n } else {\n displayedItems = childArray\n }\n\n return (\n <nav ref={ref} aria-label=\"Breadcrumb\" className={className} {...props}>\n <ol className=\"flex items-center gap-1.5 flex-wrap\">\n {displayedItems.map((child, index) => (\n <li key={index} className=\"flex items-center gap-1.5\">\n {index > 0 && (\n <span className=\"flex items-center\" aria-hidden=\"true\">\n {separatorElement}\n </span>\n )}\n {child}\n </li>\n ))}\n </ol>\n </nav>\n )\n }\n)\nBreadcrumbs.displayName = 'Breadcrumbs'\n\n// ============================================================================\n// BreadcrumbItem - Individual breadcrumb item\n// ============================================================================\n\nexport interface BreadcrumbItemProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Whether this is the current/active page */\n current?: boolean\n /** Href for the breadcrumb link */\n href?: string\n /** Click handler */\n onClick?: React.MouseEventHandler<HTMLAnchorElement | HTMLSpanElement>\n}\n\nconst BreadcrumbItem = React.forwardRef<HTMLSpanElement, BreadcrumbItemProps>(\n ({ current = false, href, onClick, className, children, ...props }, ref) => {\n const baseClasses = cn(\n 'text-sm transition-colors',\n current\n ? 'font-medium text-foreground'\n : 'text-muted-foreground hover:text-foreground',\n !current && (href || onClick) && 'cursor-pointer',\n className\n )\n\n if (current) {\n return (\n <span\n ref={ref}\n aria-current=\"page\"\n className={baseClasses}\n {...props}\n >\n {children}\n </span>\n )\n }\n\n if (href) {\n return (\n <a\n href={href}\n onClick={onClick}\n className={baseClasses}\n >\n {children}\n </a>\n )\n }\n\n return (\n <span\n ref={ref}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n onClick={onClick}\n onKeyDown={onClick ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as unknown as React.MouseEvent<HTMLSpanElement>)\n }\n } : undefined}\n className={baseClasses}\n {...props}\n >\n {children}\n </span>\n )\n }\n)\nBreadcrumbItem.displayName = 'BreadcrumbItem'\n\n// ============================================================================\n// BreadcrumbLink - Styled link for breadcrumbs (alias for convenience)\n// ============================================================================\n\nexport interface BreadcrumbLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {}\n\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n ({ className, ...props }, ref) => (\n <a\n ref={ref}\n className={cn(\n 'text-sm text-muted-foreground hover:text-foreground transition-colors',\n className\n )}\n {...props}\n />\n )\n)\nBreadcrumbLink.displayName = 'BreadcrumbLink'\n\n// ============================================================================\n// BreadcrumbSeparator - Custom separator component\n// ============================================================================\n\nexport interface BreadcrumbSeparatorProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nconst BreadcrumbSeparator = React.forwardRef<HTMLSpanElement, BreadcrumbSeparatorProps>(\n ({ className, children, ...props }, ref) => (\n <span\n ref={ref}\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('text-muted-foreground', className)}\n {...props}\n >\n {children ?? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n )}\n </span>\n )\n)\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator'\n\n// ============================================================================\n// BreadcrumbEllipsis - Ellipsis for collapsed breadcrumbs\n// ============================================================================\n\nexport interface BreadcrumbEllipsisProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nconst BreadcrumbEllipsis = React.forwardRef<HTMLSpanElement, BreadcrumbEllipsisProps>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"19\" cy=\"12\" r=\"1\" />\n <circle cx=\"5\" cy=\"12\" r=\"1\" />\n </svg>\n </span>\n )\n)\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis'\n\n// ============================================================================\n// BreadcrumbPage - Current page indicator\n// ============================================================================\n\nexport interface BreadcrumbPageProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, BreadcrumbPageProps>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n aria-current=\"page\"\n className={cn('text-sm font-medium text-foreground', className)}\n {...props}\n />\n )\n)\nBreadcrumbPage.displayName = 'BreadcrumbPage'\n\nexport {\n Breadcrumbs,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n BreadcrumbPage,\n}\n","import * as React from 'react'\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// DropdownMenu Root\n// ============================================================================\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\n// ============================================================================\n// DropdownMenu SubTrigger\n// ============================================================================\n\nexport interface DropdownMenuSubTriggerProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> {\n inset?: boolean\n}\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n DropdownMenuSubTriggerProps\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n 'flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none',\n 'focus:bg-muted data-[state=open]:bg-muted',\n 'text-foreground',\n inset && 'pl-8',\n className\n )}\n {...props}\n >\n {children}\n <svg\n className=\"ml-auto h-4 w-4\"\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 >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName\n\n// ============================================================================\n// DropdownMenu SubContent\n// ============================================================================\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-lg',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName\n\n// ============================================================================\n// DropdownMenu Content\n// ============================================================================\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\n// ============================================================================\n// DropdownMenu Item\n// ============================================================================\n\nexport interface DropdownMenuItemProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> {\n inset?: boolean\n}\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n DropdownMenuItemProps\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors',\n 'focus:bg-muted focus:text-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n '[&>svg]:h-4 [&>svg]:w-4 [&>svg]:shrink-0',\n inset && 'pl-8',\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\n// ============================================================================\n// DropdownMenu CheckboxItem\n// ============================================================================\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n 'relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors',\n 'focus:bg-muted focus:text-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <svg\n className=\"h-4 w-4\"\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 >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName\n\n// ============================================================================\n// DropdownMenu RadioItem\n// ============================================================================\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n 'relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors',\n 'focus:bg-muted focus:text-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <svg\n className=\"h-2 w-2 fill-current\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n </svg>\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\n// ============================================================================\n// DropdownMenu Label\n// ============================================================================\n\nexport interface DropdownMenuLabelProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> {\n inset?: boolean\n}\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n DropdownMenuLabelProps\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n 'px-2 py-1.5 text-sm font-semibold text-foreground',\n inset && 'pl-8',\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\n// ============================================================================\n// DropdownMenu Separator\n// ============================================================================\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\n// ============================================================================\n// DropdownMenu Shortcut\n// ============================================================================\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut'\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","import * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// Drawer / Sheet - Slide-out panel component\n// ============================================================================\n\nconst Drawer = DialogPrimitive.Root\nconst DrawerTrigger = DialogPrimitive.Trigger\nconst DrawerClose = DialogPrimitive.Close\nconst DrawerPortal = DialogPrimitive.Portal\n\n// ============================================================================\n// DrawerOverlay\n// ============================================================================\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/50',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n />\n))\nDrawerOverlay.displayName = DialogPrimitive.Overlay.displayName\n\n// ============================================================================\n// DrawerContent\n// ============================================================================\n\nexport interface DrawerContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n /** Side from which the drawer slides in */\n side?: 'left' | 'right' | 'top' | 'bottom'\n /** Whether to show the close button */\n showClose?: boolean\n}\n\nconst slideVariants = {\n left: 'inset-y-0 left-0 h-full w-3/4 max-w-sm data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left',\n right: 'inset-y-0 right-0 h-full w-3/4 max-w-sm data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right',\n top: 'inset-x-0 top-0 w-full data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom: 'inset-x-0 bottom-0 w-full data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n}\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DrawerContentProps\n>(({ side = 'right', showClose = true, className, children, ...props }, ref) => (\n <DrawerPortal>\n <DrawerOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed z-50 bg-background shadow-lg',\n 'flex flex-col',\n 'duration-300 data-[state=open]:animate-in data-[state=closed]:animate-out',\n slideVariants[side],\n className\n )}\n {...props}\n >\n {children}\n {showClose && (\n <DrawerClose\n className={cn(\n 'absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity',\n 'hover:opacity-100',\n 'focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n 'disabled:pointer-events-none'\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n <span className=\"sr-only\">Close</span>\n </DrawerClose>\n )}\n </DialogPrimitive.Content>\n </DrawerPortal>\n))\nDrawerContent.displayName = 'DrawerContent'\n\n// ============================================================================\n// DrawerHeader\n// ============================================================================\n\nexport interface DrawerHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst DrawerHeader = React.forwardRef<HTMLDivElement, DrawerHeaderProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col gap-1.5 p-6 pb-0', className)}\n {...props}\n />\n )\n)\nDrawerHeader.displayName = 'DrawerHeader'\n\n// ============================================================================\n// DrawerTitle\n// ============================================================================\n\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold text-foreground', className)}\n {...props}\n />\n))\nDrawerTitle.displayName = DialogPrimitive.Title.displayName\n\n// ============================================================================\n// DrawerDescription\n// ============================================================================\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nDrawerDescription.displayName = DialogPrimitive.Description.displayName\n\n// ============================================================================\n// DrawerBody\n// ============================================================================\n\nexport interface DrawerBodyProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst DrawerBody = React.forwardRef<HTMLDivElement, DrawerBodyProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex-1 overflow-auto p-6', className)}\n {...props}\n />\n )\n)\nDrawerBody.displayName = 'DrawerBody'\n\n// ============================================================================\n// DrawerFooter\n// ============================================================================\n\nexport interface DrawerFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst DrawerFooter = React.forwardRef<HTMLDivElement, DrawerFooterProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col-reverse gap-2 p-6 pt-0 sm:flex-row sm:justify-end',\n className\n )}\n {...props}\n />\n )\n)\nDrawerFooter.displayName = 'DrawerFooter'\n\n// ============================================================================\n// Sheet - Alias for Drawer (common alternative name)\n// ============================================================================\n\nconst Sheet = Drawer\nconst SheetTrigger = DrawerTrigger\nconst SheetClose = DrawerClose\nconst SheetPortal = DrawerPortal\nconst SheetOverlay = DrawerOverlay\nconst SheetContent = DrawerContent\nconst SheetHeader = DrawerHeader\nconst SheetTitle = DrawerTitle\nconst SheetDescription = DrawerDescription\nconst SheetBody = DrawerBody\nconst SheetFooter = DrawerFooter\n\nexport {\n // Drawer exports\n Drawer,\n DrawerTrigger,\n DrawerClose,\n DrawerPortal,\n DrawerOverlay,\n DrawerContent,\n DrawerHeader,\n DrawerTitle,\n DrawerDescription,\n DrawerBody,\n DrawerFooter,\n // Sheet exports (aliases)\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetPortal,\n SheetOverlay,\n SheetContent,\n SheetHeader,\n SheetTitle,\n SheetDescription,\n SheetBody,\n SheetFooter,\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// TopBar Root\n// ============================================================================\n\nexport interface TopBarProps extends React.HTMLAttributes<HTMLElement> {\n /** Whether the topbar has a bottom border */\n bordered?: boolean\n /** Whether the topbar is sticky at the top */\n sticky?: boolean\n /** Height variant */\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst sizeClasses = {\n sm: 'h-12',\n md: 'h-14',\n lg: 'h-16',\n}\n\nconst TopBar = React.forwardRef<HTMLElement, TopBarProps>(\n ({ className, bordered = true, sticky = false, size = 'md', children, ...props }, ref) => {\n return (\n <header\n ref={ref}\n className={cn(\n 'flex items-center px-4 bg-card text-foreground',\n sizeClasses[size],\n bordered && 'border-b border-border',\n sticky && 'sticky top-0 z-40',\n className\n )}\n {...props}\n >\n {children}\n </header>\n )\n }\n)\nTopBar.displayName = 'TopBar'\n\n// ============================================================================\n// TopBar Brand\n// ============================================================================\n\nexport interface TopBarBrandProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Logo element or image */\n logo?: React.ReactNode\n /** Brand name text */\n name?: string\n /** Link href for the brand */\n href?: string\n}\n\nconst TopBarBrand = React.forwardRef<HTMLDivElement, TopBarBrandProps>(\n ({ className, logo, name, href, children, ...props }, ref) => {\n const content = (\n <>\n {logo && <span className=\"shrink-0\">{logo}</span>}\n {name && <span className=\"font-semibold text-lg\">{name}</span>}\n {children}\n </>\n )\n\n if (href) {\n return (\n <div ref={ref} className={cn('flex items-center gap-2', className)} {...props}>\n <a href={href} className=\"flex items-center gap-2 hover:opacity-80 transition-opacity\">\n {content}\n </a>\n </div>\n )\n }\n\n return (\n <div ref={ref} className={cn('flex items-center gap-2', className)} {...props}>\n {content}\n </div>\n )\n }\n)\nTopBarBrand.displayName = 'TopBarBrand'\n\n// ============================================================================\n// TopBar Nav\n// ============================================================================\n\nexport interface TopBarNavProps extends React.HTMLAttributes<HTMLElement> {}\n\nconst TopBarNav = React.forwardRef<HTMLElement, TopBarNavProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <nav\n ref={ref}\n className={cn('flex items-center gap-1', className)}\n {...props}\n >\n {children}\n </nav>\n )\n }\n)\nTopBarNav.displayName = 'TopBarNav'\n\n// ============================================================================\n// TopBar NavItem\n// ============================================================================\n\nexport interface TopBarNavItemProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Whether this nav item is active */\n active?: boolean\n}\n\nconst TopBarNavItem = React.forwardRef<HTMLAnchorElement, TopBarNavItemProps>(\n ({ className, active, children, ...props }, ref) => {\n return (\n <a\n ref={ref}\n className={cn(\n 'px-3 py-2 text-sm font-medium rounded-md transition-colors cursor-pointer',\n active\n ? 'bg-muted text-foreground'\n : 'text-muted-foreground hover:text-foreground hover:bg-muted/50',\n className\n )}\n {...props}\n >\n {children}\n </a>\n )\n }\n)\nTopBarNavItem.displayName = 'TopBarNavItem'\n\n// ============================================================================\n// TopBar Section\n// ============================================================================\n\nexport interface TopBarSectionProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Alignment of the section */\n align?: 'left' | 'center' | 'right'\n}\n\nconst TopBarSection = React.forwardRef<HTMLDivElement, TopBarSectionProps>(\n ({ className, align = 'left', children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center gap-2',\n {\n 'mr-auto': align === 'left',\n 'mx-auto': align === 'center',\n 'ml-auto': align === 'right',\n },\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nTopBarSection.displayName = 'TopBarSection'\n\n// ============================================================================\n// TopBar Divider\n// ============================================================================\n\nexport interface TopBarDividerProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst TopBarDivider = React.forwardRef<HTMLDivElement, TopBarDividerProps>(\n ({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('h-6 w-px bg-border mx-2', className)}\n {...props}\n />\n )\n }\n)\nTopBarDivider.displayName = 'TopBarDivider'\n\nexport {\n TopBar,\n TopBarBrand,\n TopBarNav,\n TopBarNavItem,\n TopBarSection,\n TopBarDivider,\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// Sidebar Context\n// ============================================================================\n\ninterface SidebarContextValue {\n collapsed: boolean\n setCollapsed: (collapsed: boolean) => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextValue | undefined>(undefined)\n\nconst useSidebar = () => {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a Sidebar')\n }\n return context\n}\n\n// ============================================================================\n// Sidebar Root\n// ============================================================================\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n /** Whether the sidebar is collapsed */\n collapsed?: boolean\n /** Callback when collapsed state changes */\n onCollapsedChange?: (collapsed: boolean) => void\n /** Default collapsed state (uncontrolled) */\n defaultCollapsed?: boolean\n /** Width when expanded */\n width?: number | string\n /** Width when collapsed */\n collapsedWidth?: number | string\n /** Whether the sidebar has a right border */\n bordered?: boolean\n}\n\nconst Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n (\n {\n className,\n collapsed: controlledCollapsed,\n onCollapsedChange,\n defaultCollapsed = false,\n width = 256,\n collapsedWidth = 64,\n bordered = true,\n children,\n ...props\n },\n ref\n ) => {\n const [uncontrolledCollapsed, setUncontrolledCollapsed] = React.useState(defaultCollapsed)\n\n const isControlled = controlledCollapsed !== undefined\n const collapsed = isControlled ? controlledCollapsed : uncontrolledCollapsed\n\n const setCollapsed = React.useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setUncontrolledCollapsed(value)\n }\n onCollapsedChange?.(value)\n },\n [isControlled, onCollapsedChange]\n )\n\n return (\n <SidebarContext.Provider value={{ collapsed, setCollapsed }}>\n <aside\n ref={ref}\n className={cn(\n 'flex flex-col bg-card text-foreground transition-all duration-300 ease-in-out h-full',\n bordered && 'border-r border-border',\n className\n )}\n style={{\n width: collapsed ? collapsedWidth : width,\n minWidth: collapsed ? collapsedWidth : width,\n }}\n {...props}\n >\n {children}\n </aside>\n </SidebarContext.Provider>\n )\n }\n)\nSidebar.displayName = 'Sidebar'\n\n// ============================================================================\n// Sidebar Header\n// ============================================================================\n\nexport interface SidebarHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, SidebarHeaderProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('flex items-center h-14 px-4 border-b border-border shrink-0', className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nSidebarHeader.displayName = 'SidebarHeader'\n\n// ============================================================================\n// Sidebar Content\n// ============================================================================\n\nexport interface SidebarContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, SidebarContentProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('flex-1 overflow-y-auto py-2', className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nSidebarContent.displayName = 'SidebarContent'\n\n// ============================================================================\n// Sidebar Footer\n// ============================================================================\n\nexport interface SidebarFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, SidebarFooterProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('mt-auto border-t border-border p-4 shrink-0', className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nSidebarFooter.displayName = 'SidebarFooter'\n\n// ============================================================================\n// Sidebar Group\n// ============================================================================\n\nexport interface SidebarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Group label */\n label?: string\n}\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, SidebarGroupProps>(\n ({ className, label, children, ...props }, ref) => {\n const { collapsed } = useSidebar()\n\n return (\n <div ref={ref} className={cn('px-2 py-2', className)} {...props}>\n {label && !collapsed && (\n <div className=\"px-2 py-1.5 text-xs font-semibold text-muted-foreground uppercase tracking-wider\">\n {label}\n </div>\n )}\n {label && collapsed && (\n <div className=\"flex justify-center py-1.5\">\n <div className=\"h-px w-4 bg-border\" />\n </div>\n )}\n <div className=\"space-y-1\">{children}</div>\n </div>\n )\n }\n)\nSidebarGroup.displayName = 'SidebarGroup'\n\n// ============================================================================\n// Sidebar Item\n// ============================================================================\n\nexport interface SidebarItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Icon element */\n icon?: React.ReactNode\n /** Whether this item is active */\n active?: boolean\n /** Whether this item is disabled */\n disabled?: boolean\n /** Badge or count to show */\n badge?: React.ReactNode\n /** Click handler */\n onClick?: () => void\n /** Link href */\n href?: string\n}\n\nconst SidebarItem = React.forwardRef<HTMLDivElement, SidebarItemProps>(\n ({ className, icon, active, disabled, badge, onClick, href, children, ...props }, ref) => {\n const { collapsed } = useSidebar()\n\n const content = (\n <>\n {icon && (\n <span className={cn('shrink-0', collapsed ? 'mx-auto' : '')}>\n {icon}\n </span>\n )}\n {!collapsed && (\n <>\n <span className=\"flex-1 truncate\">{children}</span>\n {badge && <span className=\"shrink-0\">{badge}</span>}\n </>\n )}\n </>\n )\n\n const itemClasses = cn(\n 'flex items-center gap-3 px-3 py-2 rounded-md text-sm font-medium transition-colors cursor-pointer',\n active\n ? 'bg-accent text-accent-foreground'\n : 'text-muted-foreground hover:text-foreground hover:bg-muted',\n disabled && 'opacity-50 pointer-events-none',\n collapsed && 'justify-center px-2',\n className\n )\n\n if (href) {\n return (\n <div ref={ref} {...props}>\n <a href={href} className={itemClasses}>\n {content}\n </a>\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n className={itemClasses}\n onClick={disabled ? undefined : onClick}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n {...props}\n >\n {content}\n </div>\n )\n }\n)\nSidebarItem.displayName = 'SidebarItem'\n\n// ============================================================================\n// Sidebar SubMenu\n// ============================================================================\n\nexport interface SidebarSubMenuProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Icon element */\n icon?: React.ReactNode\n /** Label text */\n label: string\n /** Whether the submenu is open by default */\n defaultOpen?: boolean\n}\n\nconst SidebarSubMenu = React.forwardRef<HTMLDivElement, SidebarSubMenuProps>(\n ({ className, icon, label, defaultOpen = false, children, ...props }, ref) => {\n const [open, setOpen] = React.useState(defaultOpen)\n const { collapsed } = useSidebar()\n\n // Close submenu when sidebar collapses\n React.useEffect(() => {\n if (collapsed) {\n setOpen(false)\n }\n }, [collapsed])\n\n if (collapsed) {\n return (\n <SidebarItem icon={icon} className={className}>\n {label}\n </SidebarItem>\n )\n }\n\n return (\n <div ref={ref} className={className} {...props}>\n <div\n className={cn(\n 'flex items-center gap-3 px-3 py-2 rounded-md text-sm font-medium transition-colors cursor-pointer',\n 'text-muted-foreground hover:text-foreground hover:bg-muted'\n )}\n onClick={() => setOpen(!open)}\n role=\"button\"\n tabIndex={0}\n >\n {icon && <span className=\"shrink-0\">{icon}</span>}\n <span className=\"flex-1 truncate\">{label}</span>\n <svg\n className={cn('h-4 w-4 shrink-0 transition-transform', open && 'rotate-90')}\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 >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </div>\n {open && (\n <div className=\"ml-4 pl-3 border-l border-border space-y-1 mt-1\">\n {children}\n </div>\n )}\n </div>\n )\n }\n)\nSidebarSubMenu.displayName = 'SidebarSubMenu'\n\n// ============================================================================\n// Sidebar Toggle\n// ============================================================================\n\nexport interface SidebarToggleProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nconst SidebarToggle = React.forwardRef<HTMLButtonElement, SidebarToggleProps>(\n ({ className, children, ...props }, ref) => {\n const { collapsed, setCollapsed } = useSidebar()\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={() => setCollapsed(!collapsed)}\n className={cn(\n 'inline-flex items-center justify-center rounded-md p-2 transition-colors cursor-pointer',\n 'text-muted-foreground hover:text-foreground hover:bg-muted',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className\n )}\n aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n {...props}\n >\n {children || (\n <svg\n className={cn('h-5 w-5 transition-transform', collapsed && 'rotate-180')}\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 >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n <path d=\"m14 9 3 3-3 3\" />\n </svg>\n )}\n </button>\n )\n }\n)\nSidebarToggle.displayName = 'SidebarToggle'\n\nexport {\n Sidebar,\n SidebarHeader,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarItem,\n SidebarSubMenu,\n SidebarToggle,\n useSidebar,\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\n// ============================================================================\n// SidebarRail Context\n// ============================================================================\n\ninterface SidebarRailContextValue {\n activeRail: string | null\n setActiveRail: (rail: string | null) => void\n expanded: boolean\n setExpanded: (expanded: boolean) => void\n hoverExpand: boolean\n railExpanded: boolean\n setRailExpanded: (expanded: boolean) => void\n overlayRail: boolean\n expandableRail: boolean\n}\n\nconst SidebarRailContext = React.createContext<SidebarRailContextValue | undefined>(undefined)\n\nconst useSidebarRail = () => {\n const context = React.useContext(SidebarRailContext)\n if (!context) {\n throw new Error('useSidebarRail must be used within a SidebarRail')\n }\n return context\n}\n\n// ============================================================================\n// SidebarRail Root\n// ============================================================================\n\nexport interface SidebarRailProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Default active rail */\n defaultActiveRail?: string | null\n /** Controlled active rail */\n activeRail?: string | null\n /** Callback when active rail changes */\n onActiveRailChange?: (rail: string | null) => void\n /** Whether the panel expands on hover (vs click) */\n hoverExpand?: boolean\n /** Width of the icon rail */\n railWidth?: number\n /** Width of the expanded panel */\n panelWidth?: number\n /** Whether the icon rail can expand to show labels */\n expandableRail?: boolean\n /** Default rail expanded state (uncontrolled) */\n defaultRailExpanded?: boolean\n /** Controlled rail expanded state */\n railExpanded?: boolean\n /** Callback when rail expanded state changes */\n onRailExpandedChange?: (expanded: boolean) => void\n /** Width of expanded rail (labels visible) */\n railExpandedWidth?: number\n /** Overlay expanded rail on top of secondary panel instead of taking layout space */\n overlayRail?: boolean\n}\n\nconst SidebarRail = React.forwardRef<HTMLDivElement, SidebarRailProps>(\n (\n {\n className,\n defaultActiveRail = null,\n activeRail: controlledActiveRail,\n onActiveRailChange,\n hoverExpand = false,\n railWidth = 56,\n panelWidth = 240,\n expandableRail = false,\n defaultRailExpanded = false,\n railExpanded: controlledRailExpanded,\n onRailExpandedChange,\n railExpandedWidth = 220,\n overlayRail = false,\n children,\n ...props\n },\n ref\n ) => {\n const [uncontrolledActiveRail, setUncontrolledActiveRail] = React.useState(defaultActiveRail)\n const [expanded, setExpanded] = React.useState(!!defaultActiveRail)\n const [uncontrolledRailExpanded, setUncontrolledRailExpanded] =\n React.useState(defaultRailExpanded)\n\n const isControlled = controlledActiveRail !== undefined\n const activeRail = isControlled ? controlledActiveRail : uncontrolledActiveRail\n const isRailControlled = controlledRailExpanded !== undefined\n const railExpanded = isRailControlled ? controlledRailExpanded : uncontrolledRailExpanded\n\n const setActiveRail = React.useCallback(\n (rail: string | null) => {\n if (!isControlled) {\n setUncontrolledActiveRail(rail)\n }\n onActiveRailChange?.(rail)\n setExpanded(rail !== null)\n },\n [isControlled, onActiveRailChange]\n )\n\n const setRailExpanded = React.useCallback(\n (value: boolean) => {\n if (!isRailControlled) {\n setUncontrolledRailExpanded(value)\n }\n onRailExpandedChange?.(value)\n },\n [isRailControlled, onRailExpandedChange]\n )\n\n return (\n <SidebarRailContext.Provider\n value={{\n activeRail,\n setActiveRail,\n expanded,\n setExpanded,\n hoverExpand,\n railExpanded,\n setRailExpanded,\n overlayRail: overlayRail && expandableRail,\n expandableRail,\n }}\n >\n <div\n ref={ref}\n className={cn(\n 'flex h-full',\n overlayRail && expandableRail && 'relative',\n className\n )}\n style={\n {\n '--rail-width': `${railWidth}px`,\n '--rail-expanded-width': `${railExpandedWidth}px`,\n '--panel-width': `${panelWidth}px`,\n } as React.CSSProperties\n }\n {...props}\n >\n {children}\n </div>\n </SidebarRailContext.Provider>\n )\n }\n)\nSidebarRail.displayName = 'SidebarRail'\n\n// ============================================================================\n// IconRail - The narrow always-visible rail with icons\n// ============================================================================\n\nexport interface IconRailProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst IconRail = React.forwardRef<HTMLDivElement, IconRailProps>(\n ({ className, children, ...props }, ref) => {\n const { railExpanded, overlayRail, expandableRail } = useSidebarRail()\n const isExpanded = expandableRail && railExpanded\n\n return (\n <div\n ref={ref}\n className={cn(\n 'relative h-full shrink-0',\n isExpanded && !overlayRail ? 'w-[var(--rail-expanded-width)]' : 'w-[var(--rail-width)]'\n )}\n {...props}\n >\n <div\n className={cn(\n 'flex flex-col bg-card border-r border-border h-full',\n 'transition-[width] duration-200',\n overlayRail && isExpanded\n ? 'absolute left-0 top-0 z-30 w-[var(--rail-expanded-width)] shadow-lg'\n : 'w-full',\n className\n )}\n >\n {children}\n </div>\n </div>\n )\n }\n)\nIconRail.displayName = 'IconRail'\n\n// ============================================================================\n// IconRail Header\n// ============================================================================\n\nexport interface IconRailHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst IconRailHeader = React.forwardRef<HTMLDivElement, IconRailHeaderProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center justify-center h-14 border-b border-border shrink-0',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nIconRailHeader.displayName = 'IconRailHeader'\n\n// ============================================================================\n// IconRail Content\n// ============================================================================\n\nexport interface IconRailContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst IconRailContent = React.forwardRef<HTMLDivElement, IconRailContentProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('flex-1 flex flex-col items-center py-2 px-2 gap-1 overflow-y-auto', className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nIconRailContent.displayName = 'IconRailContent'\n\n// ============================================================================\n// IconRail Footer\n// ============================================================================\n\nexport interface IconRailFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst IconRailFooter = React.forwardRef<HTMLDivElement, IconRailFooterProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'mt-auto flex flex-col items-center py-2 gap-1 border-t border-border',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nIconRailFooter.displayName = 'IconRailFooter'\n\n// ============================================================================\n// IconRail Item - Icon button that toggles a panel\n// ============================================================================\n\nexport interface IconRailItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Unique identifier for this rail item */\n railId?: string\n /** Icon to display */\n icon: React.ReactNode\n /** Tooltip label */\n label?: string\n /** Whether this is just a button (no panel) */\n asButton?: boolean\n /** Toggle rail expansion when clicked */\n toggleRail?: boolean\n}\n\nconst IconRailItem = React.forwardRef<HTMLButtonElement, IconRailItemProps>(\n ({ className, railId, icon, label, asButton = false, toggleRail = false, onClick, ...props }, ref) => {\n const {\n activeRail,\n setActiveRail,\n hoverExpand,\n railExpanded,\n setRailExpanded,\n expandableRail,\n } =\n useSidebarRail()\n const isActive = railId ? activeRail === railId : false\n const isRailExpanded = expandableRail && railExpanded\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!asButton && railId) {\n setActiveRail(isActive ? null : railId)\n }\n if (toggleRail && expandableRail) {\n setRailExpanded(!railExpanded)\n }\n onClick?.(e)\n }\n\n const handleMouseEnter = () => {\n if (hoverExpand && !asButton && railId) {\n setActiveRail(railId)\n }\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n className={cn(\n 'flex items-center rounded-md transition-colors cursor-pointer',\n isRailExpanded\n ? 'h-10 px-3 justify-start gap-3 w-full'\n : 'w-10 h-10 justify-center',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n isActive\n ? 'bg-accent text-accent-foreground'\n : 'text-muted-foreground hover:text-foreground hover:bg-muted',\n className\n )}\n title={label}\n aria-label={label}\n {...props}\n >\n {icon}\n {isRailExpanded && label && (\n <span className=\"text-sm font-medium truncate\">{label}</span>\n )}\n </button>\n )\n }\n)\nIconRailItem.displayName = 'IconRailItem'\n\n// ============================================================================\n// RailPanel - The expandable panel\n// ============================================================================\n\nexport interface RailPanelProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Which rail this panel belongs to */\n railId: string\n /** Panel title */\n title?: string\n}\n\nconst RailPanel = React.forwardRef<HTMLDivElement, RailPanelProps>(\n ({ className, railId, title, children, ...props }, ref) => {\n const { activeRail, setActiveRail, hoverExpand } = useSidebarRail()\n const isVisible = activeRail === railId\n\n const handleMouseLeave = () => {\n if (hoverExpand) {\n setActiveRail(null)\n }\n }\n\n if (!isVisible) return null\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col bg-card border-r border-border h-full shrink-0',\n 'w-[var(--panel-width)]',\n 'animate-in slide-in-from-left-2 duration-200',\n className\n )}\n onMouseLeave={handleMouseLeave}\n {...props}\n >\n {title && (\n <div className=\"flex items-center justify-between h-14 px-4 border-b border-border shrink-0\">\n <span className=\"font-semibold text-sm\">{title}</span>\n <button\n type=\"button\"\n onClick={() => setActiveRail(null)}\n className=\"p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground cursor-pointer\"\n aria-label=\"Close panel\"\n >\n <svg\n className=\"h-4 w-4\"\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 >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n </div>\n )}\n <div className=\"flex-1 overflow-y-auto\">{children}</div>\n </div>\n )\n }\n)\nRailPanel.displayName = 'RailPanel'\n\n// ============================================================================\n// RailPanelGroup - Group items within a panel\n// ============================================================================\n\nexport interface RailPanelGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Group label */\n label?: string\n}\n\nconst RailPanelGroup = React.forwardRef<HTMLDivElement, RailPanelGroupProps>(\n ({ className, label, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('px-2 py-2', className)} {...props}>\n {label && (\n <div className=\"px-2 py-1.5 text-xs font-semibold text-muted-foreground uppercase tracking-wider\">\n {label}\n </div>\n )}\n <div className=\"space-y-1\">{children}</div>\n </div>\n )\n }\n)\nRailPanelGroup.displayName = 'RailPanelGroup'\n\n// ============================================================================\n// RailPanelItem - Item within a panel\n// ============================================================================\n\nexport interface RailPanelItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Icon element */\n icon?: React.ReactNode\n /** Whether this item is active */\n active?: boolean\n /** Whether this item is disabled */\n disabled?: boolean\n /** Badge or count */\n badge?: React.ReactNode\n /** Link href */\n href?: string\n}\n\nconst RailPanelItem = React.forwardRef<HTMLDivElement, RailPanelItemProps>(\n ({ className, icon, active, disabled, badge, href, children, onClick, ...props }, ref) => {\n const content = (\n <>\n {icon && <span className=\"shrink-0\">{icon}</span>}\n <span className=\"flex-1 truncate\">{children}</span>\n {badge && <span className=\"shrink-0\">{badge}</span>}\n </>\n )\n\n const itemClasses = cn(\n 'flex items-center gap-3 px-3 py-2 rounded-md text-sm transition-colors cursor-pointer',\n active\n ? 'bg-accent text-accent-foreground'\n : 'text-muted-foreground hover:text-foreground hover:bg-muted',\n disabled && 'opacity-50 pointer-events-none',\n className\n )\n\n if (href) {\n return (\n <div ref={ref} {...props}>\n <a href={href} className={itemClasses}>\n {content}\n </a>\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n className={itemClasses}\n onClick={disabled ? undefined : onClick}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n {...props}\n >\n {content}\n </div>\n )\n }\n)\nRailPanelItem.displayName = 'RailPanelItem'\n\nexport {\n SidebarRail,\n IconRail,\n IconRailHeader,\n IconRailContent,\n IconRailFooter,\n IconRailItem,\n RailPanel,\n RailPanelGroup,\n RailPanelItem,\n useSidebarRail,\n}\n","import * as React from 'react'\n\n// Import all components\nimport { ThemeProvider } from './theme/provider'\nimport { useTheme } from './theme/use-theme'\nimport { Button } from './components/button'\nimport { Input } from './components/input'\nimport { Textarea } from './components/textarea'\nimport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n} from './components/card'\nimport { Badge } from './components/badge'\nimport { Label } from './components/label'\nimport { Checkbox } from './components/checkbox'\nimport { Switch } from './components/switch'\nimport { Separator } from './components/separator'\nimport { Select, SelectTrigger, SelectValue, SelectContent, SelectItem, SelectGroup, SelectLabel } from './components/select'\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n} from './components/dialog'\nimport { Spinner } from './components/spinner'\nimport {\n Table,\n TableHeader,\n TableBody,\n TableRow,\n TableHead,\n TableCell,\n TableCaption,\n} from './components/table'\nimport {\n Pagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n} from './components/pagination'\nimport { Combobox } from './components/combobox'\n\n// Section wrapper component\nconst Section = ({ title, children }: { title: string; children: React.ReactNode }) => (\n <div className=\"mb-8\">\n <h2 className=\"text-xl font-semibold mb-4 text-foreground\">{title}</h2>\n <div className=\"p-4 border border-border rounded-lg bg-background\">{children}</div>\n </div>\n)\n\n// Theme toggle component\nconst ThemeToggle = () => {\n const { theme, setTheme } = useTheme()\n return (\n <div className=\"flex items-center gap-2\">\n <Label>Theme:</Label>\n <Select value={theme} onValueChange={(value) => setTheme(value as 'light' | 'dark' | 'system')}>\n <SelectTrigger className=\"w-32\">\n <SelectValue placeholder=\"Select theme\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"light\">Light</SelectItem>\n <SelectItem value=\"dark\">Dark</SelectItem>\n <SelectItem value=\"system\">System</SelectItem>\n </SelectContent>\n </Select>\n </div>\n )\n}\n\n// Main Playground Component\nconst PlaygroundContent = () => {\n const [dialogOpen, setDialogOpen] = React.useState(false)\n const [checkboxChecked, setCheckboxChecked] = React.useState(false)\n const [switchChecked, setSwitchChecked] = React.useState(false)\n const [inputValue, setInputValue] = React.useState('')\n const [textareaValue, setTextareaValue] = React.useState('')\n const [selectValue, setSelectValue] = React.useState('')\n const [comboboxValue, setComboboxValue] = React.useState<\n string | Record<string, unknown> | null\n >(null)\n\n const comboboxOptions = [\n { value: 'react', label: 'React' },\n { value: 'vue', label: 'Vue' },\n { value: 'angular', label: 'Angular' },\n { value: 'svelte', label: 'Svelte' },\n { value: 'solid', label: 'SolidJS' },\n ]\n\n return (\n <div className=\"min-h-screen bg-background p-8\">\n <div className=\"max-w-4xl mx-auto\">\n <div className=\"flex items-center justify-between mb-8\">\n <h1 className=\"text-3xl font-bold text-foreground\">@onesaz/ui Playground</h1>\n <ThemeToggle />\n </div>\n\n {/* Buttons */}\n <Section title=\"Button\">\n <div className=\"flex flex-wrap gap-4\">\n <Button variant=\"default\">Default</Button>\n <Button variant=\"destructive\">Destructive</Button>\n <Button variant=\"outline\">Outline</Button>\n <Button variant=\"secondary\">Secondary</Button>\n <Button variant=\"ghost\">Ghost</Button>\n <Button variant=\"link\">Link</Button>\n </div>\n <div className=\"flex flex-wrap gap-4 mt-4\">\n <Button size=\"sm\">Small</Button>\n <Button size=\"default\">Default</Button>\n <Button size=\"lg\">Large</Button>\n <Button size=\"icon\">🔔</Button>\n </div>\n <div className=\"flex flex-wrap gap-4 mt-4\">\n <Button disabled>Disabled</Button>\n <Button variant=\"outline\" disabled>Disabled Outline</Button>\n </div>\n </Section>\n\n {/* Input */}\n <Section title=\"Input\">\n <div className=\"space-y-4 max-w-md\">\n <div>\n <Label htmlFor=\"input-default\">Default Input</Label>\n <Input\n id=\"input-default\"\n placeholder=\"Enter text...\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n />\n </div>\n <div>\n <Label htmlFor=\"input-disabled\">Disabled Input</Label>\n <Input id=\"input-disabled\" placeholder=\"Disabled...\" disabled />\n </div>\n <div>\n <Label htmlFor=\"input-type\">Email Input</Label>\n <Input id=\"input-type\" type=\"email\" placeholder=\"email@example.com\" />\n </div>\n </div>\n </Section>\n\n {/* Textarea */}\n <Section title=\"Textarea\">\n <div className=\"space-y-4 max-w-md\">\n <div>\n <Label htmlFor=\"textarea-default\">Default Textarea</Label>\n <Textarea\n id=\"textarea-default\"\n placeholder=\"Enter long text...\"\n value={textareaValue}\n onChange={(e) => setTextareaValue(e.target.value)}\n />\n </div>\n <div>\n <Label htmlFor=\"textarea-disabled\">Disabled Textarea</Label>\n <Textarea id=\"textarea-disabled\" placeholder=\"Disabled...\" disabled />\n </div>\n </div>\n </Section>\n\n {/* Select */}\n <Section title=\"Select\">\n <div className=\"space-y-4 max-w-md\">\n <div>\n <Label>Default Select</Label>\n <Select value={selectValue} onValueChange={setSelectValue}>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select an option...\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"option1\">Option 1</SelectItem>\n <SelectItem value=\"option2\">Option 2</SelectItem>\n <SelectItem value=\"option3\">Option 3</SelectItem>\n </SelectContent>\n </Select>\n </div>\n <div>\n <Label>Grouped Select</Label>\n <Select>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select a food...\" />\n </SelectTrigger>\n <SelectContent>\n <SelectGroup>\n <SelectLabel>Fruits</SelectLabel>\n <SelectItem value=\"apple\">Apple</SelectItem>\n <SelectItem value=\"banana\">Banana</SelectItem>\n </SelectGroup>\n <SelectGroup>\n <SelectLabel>Vegetables</SelectLabel>\n <SelectItem value=\"carrot\">Carrot</SelectItem>\n <SelectItem value=\"potato\">Potato</SelectItem>\n </SelectGroup>\n </SelectContent>\n </Select>\n </div>\n <div>\n <Label>Disabled Select</Label>\n <Select disabled>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Disabled...\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"none\">None</SelectItem>\n </SelectContent>\n </Select>\n </div>\n </div>\n </Section>\n\n {/* Combobox */}\n <Section title=\"Combobox (Searchable Select)\">\n <div className=\"space-y-4 max-w-md\">\n <div>\n <Label>Framework</Label>\n <Combobox\n options={comboboxOptions}\n value={comboboxValue}\n onChange={(nextValue) => {\n setComboboxValue(nextValue as string | Record<string, unknown> | null)\n }}\n placeholder=\"Search frameworks...\"\n />\n </div>\n </div>\n </Section>\n\n {/* Checkbox & Switch */}\n <Section title=\"Checkbox & Switch\">\n <div className=\"space-y-4\">\n <div className=\"flex items-center gap-2\">\n <Checkbox\n id=\"checkbox\"\n checked={checkboxChecked}\n onChange={(e) => setCheckboxChecked(e.target.checked)}\n />\n <Label htmlFor=\"checkbox\">Accept terms and conditions</Label>\n </div>\n <div className=\"flex items-center gap-2\">\n <Checkbox id=\"checkbox-disabled\" disabled />\n <Label htmlFor=\"checkbox-disabled\">Disabled checkbox</Label>\n </div>\n <Separator />\n <div className=\"flex items-center gap-2\">\n <Switch\n id=\"switch\"\n checked={switchChecked}\n onChange={(e) => setSwitchChecked(e.target.checked)}\n />\n <Label htmlFor=\"switch\">Enable notifications</Label>\n </div>\n <div className=\"flex items-center gap-2\">\n <Switch id=\"switch-disabled\" disabled />\n <Label htmlFor=\"switch-disabled\">Disabled switch</Label>\n </div>\n </div>\n </Section>\n\n {/* Badge */}\n <Section title=\"Badge\">\n <div className=\"flex flex-wrap gap-4\">\n <Badge>Default</Badge>\n <Badge variant=\"secondary\">Secondary</Badge>\n <Badge variant=\"destructive\">Destructive</Badge>\n <Badge variant=\"outline\">Outline</Badge>\n </div>\n </Section>\n\n {/* Card */}\n <Section title=\"Card\">\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Card>\n <CardHeader>\n <CardTitle>Card Title</CardTitle>\n <CardDescription>Card description goes here</CardDescription>\n </CardHeader>\n <CardContent>\n <p className=\"text-foreground\">This is the card content area.</p>\n </CardContent>\n <CardFooter>\n <Button variant=\"outline\" className=\"mr-2\">Cancel</Button>\n <Button>Submit</Button>\n </CardFooter>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Another Card</CardTitle>\n <CardDescription>With different content</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2\">\n <Label htmlFor=\"card-input\">Name</Label>\n <Input id=\"card-input\" placeholder=\"Enter name...\" />\n </div>\n </CardContent>\n <CardFooter>\n <Button className=\"w-full\">Save</Button>\n </CardFooter>\n </Card>\n </div>\n </Section>\n\n {/* Dialog */}\n <Section title=\"Dialog\">\n <Button onClick={() => setDialogOpen(true)}>Open Dialog</Button>\n <Dialog open={dialogOpen} onOpenChange={setDialogOpen}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Create New Zone</DialogTitle>\n <DialogDescription>\n Fill in the details below to create a new zone.\n </DialogDescription>\n </DialogHeader>\n <div className=\"space-y-4 py-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <Label htmlFor=\"zone-name\">Zone Name *</Label>\n <Input id=\"zone-name\" placeholder=\"eg:hyderabad\" />\n </div>\n <div>\n <Label htmlFor=\"zone-code\">Zone Code *</Label>\n <Input id=\"zone-code\" placeholder=\"eg :hyd022\" />\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <Label>State *</Label>\n <Select>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select state\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"telangana\">TELANGANA</SelectItem>\n <SelectItem value=\"andhra\">ANDHRA PRADESH</SelectItem>\n </SelectContent>\n </Select>\n </div>\n <div>\n <Label>District *</Label>\n <Select>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select District\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"hyderabad\">HYDERABAD</SelectItem>\n <SelectItem value=\"rangareddy\">RANGAREDDY</SelectItem>\n </SelectContent>\n </Select>\n </div>\n </div>\n </div>\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => setDialogOpen(false)}>\n CANCEL\n </Button>\n <Button onClick={() => setDialogOpen(false)}>Create</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </Section>\n\n {/* Table */}\n <Section title=\"Table\">\n <Table>\n <TableCaption>A list of recent invoices</TableCaption>\n <TableHeader>\n <TableRow>\n <TableHead>Invoice</TableHead>\n <TableHead>Status</TableHead>\n <TableHead>Method</TableHead>\n <TableHead className=\"text-right\">Amount</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n <TableRow>\n <TableCell>INV001</TableCell>\n <TableCell><Badge>Paid</Badge></TableCell>\n <TableCell>Credit Card</TableCell>\n <TableCell className=\"text-right\">$250.00</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>INV002</TableCell>\n <TableCell><Badge variant=\"secondary\">Pending</Badge></TableCell>\n <TableCell>PayPal</TableCell>\n <TableCell className=\"text-right\">$150.00</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>INV003</TableCell>\n <TableCell><Badge variant=\"destructive\">Failed</Badge></TableCell>\n <TableCell>Bank Transfer</TableCell>\n <TableCell className=\"text-right\">$350.00</TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </Section>\n\n {/* Pagination */}\n <Section title=\"Pagination\">\n <Pagination>\n <PaginationContent>\n <PaginationItem>\n <PaginationPrevious onClick={() => console.log('Previous')} />\n </PaginationItem>\n <PaginationItem>\n <PaginationLink isActive>1</PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationLink>2</PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationLink>3</PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationEllipsis />\n </PaginationItem>\n <PaginationItem>\n <PaginationNext onClick={() => console.log('Next')} />\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n </Section>\n\n {/* Spinner */}\n <Section title=\"Spinner\">\n <div className=\"flex items-center gap-8\">\n <div className=\"text-center\">\n <Spinner size=\"sm\" />\n <p className=\"text-sm text-muted-foreground mt-2\">Small</p>\n </div>\n <div className=\"text-center\">\n <Spinner size=\"default\" />\n <p className=\"text-sm text-muted-foreground mt-2\">Default</p>\n </div>\n <div className=\"text-center\">\n <Spinner size=\"lg\" />\n <p className=\"text-sm text-muted-foreground mt-2\">Large</p>\n </div>\n </div>\n </Section>\n\n {/* Separator */}\n <Section title=\"Separator\">\n <div className=\"space-y-4\">\n <p className=\"text-foreground\">Content above separator</p>\n <Separator />\n <p className=\"text-foreground\">Content below separator</p>\n <div className=\"flex items-center h-10\">\n <span className=\"text-foreground\">Left</span>\n <Separator orientation=\"vertical\" className=\"mx-4\" />\n <span className=\"text-foreground\">Right</span>\n </div>\n </div>\n </Section>\n\n {/* Typography Colors */}\n <Section title=\"Typography & Colors\">\n <div className=\"space-y-2\">\n <p className=\"text-foreground\">text-foreground - Primary text color</p>\n <p className=\"text-muted-foreground\">text-muted-foreground - Muted text color</p>\n <p className=\"text-accent\">text-accent - Accent color</p>\n <p className=\"text-destructive\">text-destructive - Destructive color</p>\n </div>\n </Section>\n </div>\n </div>\n )\n}\n\n// Exported Playground wrapped with ThemeProvider\nexport const Playground = () => (\n <ThemeProvider defaultTheme=\"light\">\n <PlaygroundContent />\n </ThemeProvider>\n)\n\nexport default Playground\n"],"mappings":"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","names":["value","React","jsx","React","jsx","React","jsx","spacingClasses","alignItemsClasses","justifyContentClasses","React","jsx","colorClasses","alignClasses","React","jsx","React","jsx","React","jsx","React","jsx","React","React","jsx","jsx","jsxs","React","jsx","React","jsx","jsxs","React","jsx","jsxs","sizeClasses","React","jsx","jsxs","marginClasses","React","Fragment","jsx","jsxs","React","jsx","React","jsx","React","jsx","React","jsx","jsxs","React","jsx","jsxs","jsx","React","jsx","jsxs","React","jsx","jsxs","React","jsx","React","jsx","jsxs","CheckIcon","Icon","React","jsx","jsxs","React","Fragment","jsx","jsxs","React","jsx","jsxs","variantClasses","React","jsx","React","jsx","jsxs","sizeClasses","React","jsx","jsxs","variantClasses","gapClasses","React","jsx","jsxs","React","Fragment","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","List","Tooltip","accentColors","Fragment","jsx","jsxs","Tooltip","percentage","React","jsx","jsxs","React","jsx","jsxs","React","DialogPrimitive","jsx","jsxs","React","Fragment","jsx","jsxs","sizeClasses","React","Fragment","jsx","jsxs","React","Fragment","jsx","jsxs","React","jsx","jsxs"]}
|