@polastack/design-system 0.1.28 → 0.1.29

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/cn.ts","../src/lib/create-context.ts","../src/hooks/use-breakpoint.ts","../src/hooks/use-display-mode.ts","../src/hooks/use-online-status.ts","../src/hooks/use-viewport-height.ts","../src/hooks/use-install-prompt.ts","../src/hooks/use-theme.ts","../src/components/theme-provider/theme-provider.tsx","../src/components/button/button.tsx","../src/components/badge/badge.tsx","../src/components/avatar/avatar.tsx","../src/lib/string-hash.ts","../src/components/avatar-group/avatar-group.tsx","../src/components/separator/separator.tsx","../src/components/skeleton/skeleton.tsx","../src/components/spinner/spinner.tsx","../src/components/card/card.tsx","../src/components/tooltip/tooltip.tsx","../src/components/toast/toast.tsx","../src/components/toast/use-toast.ts","../src/components/toast/toaster.tsx","../src/components/label/label.tsx","../src/components/input/input.tsx","../src/components/textarea/textarea.tsx","../src/components/checkbox/checkbox.tsx","../src/components/radio-group/radio-group.tsx","../src/components/switch/switch.tsx","../src/components/select/select.tsx","../src/components/number-input/number-input.tsx","../src/components/date-picker/date-picker.tsx","../src/components/combobox/combobox.tsx","../src/components/form-field/form-field.tsx","../src/components/dynamic-form-field/dynamic-form-field.tsx","../src/components/form-layout/form-layout.tsx","../src/components/progress/progress.tsx","../src/components/stepper/stepper.tsx","../src/components/tabs/tabs.tsx","../src/components/empty-state/empty-state.tsx","../src/components/table/table.tsx","../src/components/data-table/data-table.tsx","../src/components/data-table/data-table-pagination.tsx","../src/components/data-table/data-table-toolbar.tsx","../src/components/data-table/data-table-column-header.tsx","../src/components/filter-bar/filter-bar.tsx","../src/components/popover/popover.tsx","../src/components/dropdown-menu/dropdown-menu.tsx","../src/components/dialog/dialog.tsx","../src/components/command-palette/command-palette.tsx","../src/components/drawer/drawer.tsx","../src/components/app-shell/app-shell.tsx","../src/components/sidebar-nav/sidebar-nav.tsx","../src/components/bottom-navigation/bottom-navigation.tsx","../src/components/offline-indicator/offline-indicator.tsx","../src/components/install-prompt/install-prompt.tsx","../src/components/pull-to-refresh/pull-to-refresh.tsx","../src/components/print/print-document.tsx","../src/components/print/print-table.tsx","../src/components/print/print-field.tsx","../src/components/print/print-divider.tsx","../src/components/stat-card/stat-card.tsx","../src/components/chart-container/chart-container.tsx","../src/tokens/chart-theme.ts","../src/components/chart/chart-theme.ts","../src/components/chart/chart-tooltip.tsx","../src/components/chart/chart-legend.tsx"],"sourcesContent":["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';\n\n/**\n * 型安全なReactコンテキストファクトリ。\n * Provider外での使用時に明確なエラーメッセージを提供する。\n */\nexport function createContext<T>(displayName: string) {\n const Context = React.createContext<T | undefined>(undefined);\n Context.displayName = displayName;\n\n function useContext() {\n const context = React.useContext(Context);\n if (context === undefined) {\n throw new Error(`use${displayName} must be used within a ${displayName}Provider`);\n }\n return context;\n }\n\n return [Context.Provider, useContext] as const;\n}\n","'use client';\n\nimport { useState, useEffect } from 'react';\n\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n} as const;\n\nexport type Breakpoint = 'base' | keyof typeof BREAKPOINTS;\n\nfunction getBreakpoint(width: number): Breakpoint {\n if (width >= BREAKPOINTS['2xl']) return '2xl';\n if (width >= BREAKPOINTS.xl) return 'xl';\n if (width >= BREAKPOINTS.lg) return 'lg';\n if (width >= BREAKPOINTS.md) return 'md';\n if (width >= BREAKPOINTS.sm) return 'sm';\n return 'base';\n}\n\nexport function useBreakpoint() {\n const [breakpoint, setBreakpoint] = useState<Breakpoint>('lg');\n\n useEffect(() => {\n function handleResize() {\n setBreakpoint(getBreakpoint(window.innerWidth));\n }\n\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return {\n breakpoint,\n isMobile: breakpoint === 'base' || breakpoint === 'sm',\n isTablet: breakpoint === 'md',\n isDesktop: breakpoint === 'lg' || breakpoint === 'xl' || breakpoint === '2xl',\n };\n}\n","'use client';\n\nimport { useState, useEffect } from 'react';\n\nexport type DisplayMode = 'standalone' | 'minimal-ui' | 'fullscreen' | 'browser';\n\nfunction getDisplayMode(): DisplayMode {\n if (typeof window === 'undefined') return 'browser';\n\n if (window.matchMedia('(display-mode: standalone)').matches) return 'standalone';\n if (window.matchMedia('(display-mode: minimal-ui)').matches) return 'minimal-ui';\n if (window.matchMedia('(display-mode: fullscreen)').matches) return 'fullscreen';\n\n return 'browser';\n}\n\n/**\n * PWAの表示モードを検出するフック。\n * standalone / minimal-ui / fullscreen / browser を返す。\n */\nexport function useDisplayMode() {\n const [displayMode, setDisplayMode] = useState<DisplayMode>(getDisplayMode);\n\n useEffect(() => {\n const mediaQuery = window.matchMedia('(display-mode: standalone)');\n\n function handleChange() {\n setDisplayMode(getDisplayMode());\n }\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, []);\n\n return {\n displayMode,\n isStandalone: displayMode === 'standalone',\n isPWA: displayMode !== 'browser',\n };\n}\n","'use client';\n\nimport { useState, useEffect, useCallback } from 'react';\n\n/**\n * ブラウザのオンライン/オフライン状態を監視するフック。\n */\nexport function useOnlineStatus() {\n const [isOnline, setIsOnline] = useState(() =>\n typeof navigator !== 'undefined' ? navigator.onLine : true,\n );\n\n const handleOnline = useCallback(() => setIsOnline(true), []);\n const handleOffline = useCallback(() => setIsOnline(false), []);\n\n useEffect(() => {\n window.addEventListener('online', handleOnline);\n window.addEventListener('offline', handleOffline);\n\n return () => {\n window.removeEventListener('online', handleOnline);\n window.removeEventListener('offline', handleOffline);\n };\n }, [handleOnline, handleOffline]);\n\n return { isOnline, isOffline: !isOnline };\n}\n","'use client';\n\nimport { useState, useEffect } from 'react';\n\n/**\n * モバイルブラウザのアドレスバーを考慮した実際のビューポート高さを返すフック。\n * CSS の 100dvh が利用可能な場合はそちらを推奨するが、\n * JS側でピクセル値が必要な場合に使用する。\n */\nexport function useViewportHeight() {\n const [viewportHeight, setViewportHeight] = useState(() =>\n typeof window !== 'undefined' ? window.innerHeight : 0,\n );\n\n useEffect(() => {\n function handleResize() {\n setViewportHeight(window.innerHeight);\n }\n\n // visualViewport APIが利用可能な場合(モバイルブラウザ)はそちらを使用\n const viewport = window.visualViewport;\n if (viewport) {\n const handleViewportResize = () => {\n setViewportHeight(viewport.height);\n };\n handleViewportResize();\n viewport.addEventListener('resize', handleViewportResize);\n return () => viewport.removeEventListener('resize', handleViewportResize);\n }\n\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return viewportHeight;\n}\n","'use client';\n\nimport { useState, useEffect, useCallback } from 'react';\n\ninterface BeforeInstallPromptEvent extends Event {\n prompt(): Promise<void>;\n userChoice: Promise<{ outcome: 'accepted' | 'dismissed' }>;\n}\n\n/**\n * PWAインストールプロンプトを制御するフック。\n * `beforeinstallprompt` イベントをキャプチャし、任意のタイミングで表示する。\n */\nexport function useInstallPrompt() {\n const [deferredPrompt, setDeferredPrompt] =\n useState<BeforeInstallPromptEvent | null>(null);\n const [isInstalled, setIsInstalled] = useState(false);\n\n useEffect(() => {\n // 既にインストール済みかチェック\n if (window.matchMedia('(display-mode: standalone)').matches) {\n setIsInstalled(true);\n return;\n }\n\n function handleBeforeInstallPrompt(e: Event) {\n e.preventDefault();\n setDeferredPrompt(e as BeforeInstallPromptEvent);\n }\n\n function handleAppInstalled() {\n setIsInstalled(true);\n setDeferredPrompt(null);\n }\n\n window.addEventListener('beforeinstallprompt', handleBeforeInstallPrompt);\n window.addEventListener('appinstalled', handleAppInstalled);\n\n return () => {\n window.removeEventListener(\n 'beforeinstallprompt',\n handleBeforeInstallPrompt,\n );\n window.removeEventListener('appinstalled', handleAppInstalled);\n };\n }, []);\n\n const promptInstall = useCallback(async () => {\n if (!deferredPrompt) return null;\n\n await deferredPrompt.prompt();\n const { outcome } = await deferredPrompt.userChoice;\n\n if (outcome === 'accepted') {\n setIsInstalled(true);\n }\n setDeferredPrompt(null);\n\n return outcome;\n }, [deferredPrompt]);\n\n return {\n canInstall: !!deferredPrompt && !isInstalled,\n isInstalled,\n promptInstall,\n };\n}\n","'use client';\n\nimport { useState, useEffect, useCallback, useMemo } from 'react';\n\nexport type Theme = 'light' | 'dark' | 'system';\nexport type ResolvedTheme = 'light' | 'dark';\n\nexport interface UseThemeOptions {\n storageKey?: string;\n defaultTheme?: Theme;\n}\n\nexport interface UseThemeReturn {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: ResolvedTheme;\n}\n\nconst DEFAULT_STORAGE_KEY = 'polastack-theme';\n\nfunction getSystemTheme(): ResolvedTheme {\n if (typeof window === 'undefined') return 'light';\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n}\n\nfunction getStoredTheme(storageKey: string): Theme | null {\n if (typeof window === 'undefined') return null;\n try {\n const stored = localStorage.getItem(storageKey);\n if (stored === 'light' || stored === 'dark' || stored === 'system') {\n return stored;\n }\n } catch {\n // localStorage unavailable\n }\n return null;\n}\n\nfunction applyTheme(resolvedTheme: ResolvedTheme) {\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n if (resolvedTheme === 'dark') {\n root.classList.add('dark');\n } else {\n root.classList.remove('dark');\n }\n}\n\nexport function useTheme(options: UseThemeOptions = {}): UseThemeReturn {\n const {\n storageKey = DEFAULT_STORAGE_KEY,\n defaultTheme = 'system',\n } = options;\n\n const [theme, setThemeState] = useState<Theme>(\n () => getStoredTheme(storageKey) ?? defaultTheme,\n );\n\n const [systemTheme, setSystemTheme] = useState<ResolvedTheme>(getSystemTheme);\n\n const resolvedTheme: ResolvedTheme = theme === 'system' ? systemTheme : theme;\n\n const setTheme = useCallback(\n (newTheme: Theme) => {\n setThemeState(newTheme);\n try {\n localStorage.setItem(storageKey, newTheme);\n } catch {\n // localStorage unavailable\n }\n },\n [storageKey],\n );\n\n // Apply .dark class whenever resolvedTheme changes\n useEffect(() => {\n applyTheme(resolvedTheme);\n }, [resolvedTheme]);\n\n // Listen for system theme changes\n useEffect(() => {\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\n const handler = (e: MediaQueryListEvent) => {\n setSystemTheme(e.matches ? 'dark' : 'light');\n };\n mql.addEventListener('change', handler);\n return () => mql.removeEventListener('change', handler);\n }, []);\n\n return useMemo(\n () => ({ theme, setTheme, resolvedTheme }),\n [theme, setTheme, resolvedTheme],\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport {\n useTheme as useThemeHook,\n type Theme,\n type ResolvedTheme,\n type UseThemeReturn,\n} from '../../hooks/use-theme';\n\ninterface ThemeContextValue extends UseThemeReturn {}\n\nconst ThemeContext = React.createContext<ThemeContextValue | undefined>(undefined);\nThemeContext.displayName = 'ThemeContext';\n\nexport interface ThemeProviderProps {\n children: React.ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n}\n\nexport function ThemeProvider({\n children,\n defaultTheme = 'system',\n storageKey,\n}: ThemeProviderProps) {\n const themeValue = useThemeHook({ defaultTheme, storageKey });\n\n return (\n <ThemeContext.Provider value={themeValue}>{children}</ThemeContext.Provider>\n );\n}\n\nThemeProvider.displayName = 'ThemeProvider';\n\nexport function useTheme(): UseThemeReturn {\n const context = React.useContext(ThemeContext);\n if (context === undefined) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n}\n\nexport type { Theme, ResolvedTheme };\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors duration-fast focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 ring-offset-[var(--color-ring-offset)] disabled:pointer-events-none disabled:opacity-50 touch:min-h-[--touch-target-min]',\n {\n variants: {\n variant: {\n default:\n 'bg-primary-500 text-white hover:bg-primary-600 active:bg-primary-700',\n destructive:\n 'bg-error-500 text-white hover:bg-error-600 active:bg-error-700',\n outline:\n 'border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] text-[var(--color-on-surface)] hover:bg-[var(--color-surface-sunken)] active:bg-[var(--color-surface-muted)]',\n ghost: 'text-[var(--color-on-surface)] hover:bg-[var(--color-surface-muted)] active:bg-neutral-200 dark:active:bg-neutral-700',\n link: 'text-primary-500 underline-offset-4 hover:underline',\n },\n size: {\n sm: 'h-8 px-3 text-xs',\n md: 'h-9 px-4 text-sm',\n lg: 'h-10 px-6 text-base',\n icon: 'h-9 w-9 touch:min-w-[--touch-target-min]',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(buttonVariants({ variant, size }), className)}\n {...props}\n />\n ),\n);\nButton.displayName = 'Button';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const badgeVariants = cva(\n 'inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium transition-colors touch:px-3 touch:py-1 touch:text-sm',\n {\n variants: {\n variant: {\n default: 'bg-primary-100 text-primary-700 dark:bg-primary-950 dark:text-primary-300',\n success: 'bg-success-100 text-success-700 dark:bg-success-950 dark:text-success-300',\n warning: 'bg-warning-100 text-warning-700 dark:bg-warning-950 dark:text-warning-300',\n error: 'bg-error-100 text-error-700 dark:bg-error-950 dark:text-error-300',\n info: 'bg-info-100 text-info-700 dark:bg-info-950 dark:text-info-300',\n outline: 'border border-[var(--color-border-input)] text-[var(--color-on-surface-secondary)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n ),\n);\nBadge.displayName = 'Badge';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\nimport { createContext } from '@/lib/create-context';\nimport { stringToIndex } from '@/lib/string-hash';\n\n/* ----- Context ----- */\n\nconst [AvatarContextProvider, useAvatarContext] = createContext<{\n imageLoaded: boolean;\n setImageLoaded: React.Dispatch<React.SetStateAction<boolean>>;\n shape: 'circle' | 'square';\n size: 'sm' | 'md' | 'lg';\n}>('Avatar');\n\n/* ----- Color Palette ----- */\n\nconst FALLBACK_COLORS = [\n 'bg-primary-100 text-primary-700 dark:bg-primary-950 dark:text-primary-300',\n 'bg-success-100 text-success-700 dark:bg-success-950 dark:text-success-300',\n 'bg-warning-100 text-warning-700 dark:bg-warning-950 dark:text-warning-300',\n 'bg-error-100 text-error-700 dark:bg-error-950 dark:text-error-300',\n 'bg-info-100 text-info-700 dark:bg-info-950 dark:text-info-300',\n 'bg-primary-200 text-primary-800 dark:bg-primary-900 dark:text-primary-200',\n 'bg-info-200 text-info-800 dark:bg-info-900 dark:text-info-200',\n 'bg-success-200 text-success-800 dark:bg-success-900 dark:text-success-200',\n] as const;\n\n/* ----- Avatar ----- */\n\nexport const avatarVariants = cva('relative flex shrink-0 overflow-hidden', {\n variants: {\n size: {\n sm: 'h-8 w-8 text-xs',\n md: 'h-10 w-10 text-sm',\n lg: 'h-12 w-12 text-base',\n },\n shape: {\n circle: 'rounded-full',\n square: 'rounded-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n shape: 'circle',\n },\n});\n\nexport interface AvatarProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof avatarVariants> {}\n\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n ({ className, size = 'md', shape = 'circle', ...props }, ref) => {\n const [imageLoaded, setImageLoaded] = React.useState(false);\n\n return (\n <AvatarContextProvider\n value={{ imageLoaded, setImageLoaded, shape: shape!, size: size! }}\n >\n <span\n ref={ref}\n className={cn(avatarVariants({ size, shape }), className)}\n {...props}\n />\n </AvatarContextProvider>\n );\n },\n);\nAvatar.displayName = 'Avatar';\n\n/* ----- AvatarImage ----- */\n\nexport interface AvatarImageProps\n extends React.ImgHTMLAttributes<HTMLImageElement> {}\n\nexport const AvatarImage = React.forwardRef<HTMLImageElement, AvatarImageProps>(\n ({ className, onLoad, onError, ...props }, ref) => {\n const { imageLoaded, setImageLoaded } = useAvatarContext();\n\n return (\n <img\n ref={ref}\n className={cn(\n 'aspect-square h-full w-full object-cover',\n !imageLoaded && 'hidden',\n className,\n )}\n onLoad={(e) => {\n setImageLoaded(true);\n onLoad?.(e);\n }}\n onError={(e) => {\n setImageLoaded(false);\n onError?.(e);\n }}\n {...props}\n />\n );\n },\n);\nAvatarImage.displayName = 'AvatarImage';\n\n/* ----- AvatarFallback ----- */\n\nexport interface AvatarFallbackProps\n extends React.HTMLAttributes<HTMLSpanElement> {\n /** String used to deterministically pick a fallback color. If omitted, a stable random color is assigned. */\n colorSeed?: string;\n}\n\nexport const AvatarFallback = React.forwardRef<\n HTMLSpanElement,\n AvatarFallbackProps\n>(({ className, colorSeed, ...props }, ref) => {\n const { imageLoaded, shape } = useAvatarContext();\n const autoSeed = React.useId();\n\n if (imageLoaded) return null;\n\n const seed = colorSeed ?? autoSeed;\n const colorClasses =\n FALLBACK_COLORS[stringToIndex(seed, FALLBACK_COLORS.length)];\n\n return (\n <span\n ref={ref}\n className={cn(\n 'flex h-full w-full items-center justify-center font-medium',\n shape === 'circle' ? 'rounded-full' : 'rounded-lg',\n colorClasses,\n className,\n )}\n {...props}\n />\n );\n});\nAvatarFallback.displayName = 'AvatarFallback';\n\n/* ----- AvatarStatus ----- */\n\nexport type AvatarStatusType = 'online' | 'offline' | 'busy' | 'away';\n\nexport interface AvatarStatusProps\n extends React.HTMLAttributes<HTMLSpanElement> {\n status: AvatarStatusType;\n}\n\nconst STATUS_COLORS: Record<AvatarStatusType, string> = {\n online: 'bg-success-500',\n offline: 'bg-neutral-400',\n busy: 'bg-error-500',\n away: 'bg-warning-500',\n};\n\nconst STATUS_LABELS: Record<AvatarStatusType, string> = {\n online: 'Online',\n offline: 'Offline',\n busy: 'Busy',\n away: 'Away',\n};\n\nconst STATUS_SIZES: Record<string, string> = {\n sm: 'h-2.5 w-2.5',\n md: 'h-3 w-3',\n lg: 'h-3.5 w-3.5',\n};\n\nexport const AvatarStatus = React.forwardRef<\n HTMLSpanElement,\n AvatarStatusProps\n>(({ status, className, ...props }, ref) => {\n const { size, shape } = useAvatarContext();\n\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-label={props['aria-label'] ?? STATUS_LABELS[status]}\n className={cn(\n 'absolute bottom-0 right-0 rounded-full ring-2 ring-[var(--color-surface)]',\n STATUS_COLORS[status],\n STATUS_SIZES[size],\n shape === 'circle' && 'translate-x-[10%] translate-y-[10%]',\n className,\n )}\n {...props}\n />\n );\n});\nAvatarStatus.displayName = 'AvatarStatus';\n","/** Deterministic hash of a string to a bounded non-negative integer (DJB2). */\nexport function stringToIndex(str: string, buckets: number): number {\n let hash = 5381;\n for (let i = 0; i < str.length; i++) {\n hash = ((hash << 5) + hash + str.charCodeAt(i)) | 0;\n }\n return Math.abs(hash) % buckets;\n}\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\nimport { Avatar, AvatarFallback } from '@/components/avatar';\n\nconst SPACING: Record<string, string> = {\n sm: '-space-x-2',\n md: '-space-x-3',\n lg: '-space-x-3',\n};\n\nexport interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Maximum avatars to show before \"+N\" overflow. Default: 3 */\n max?: number;\n /** Size passed to overflow indicator. Default: 'md' */\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const AvatarGroup = React.forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ className, max = 3, size = 'md', children, ...props }, ref) => {\n const items = React.Children.toArray(children);\n const visible = items.slice(0, max);\n const overflow = items.length - max;\n\n return (\n <div\n ref={ref}\n role=\"group\"\n className={cn(\n 'flex items-center',\n SPACING[size],\n className,\n )}\n {...props}\n >\n {visible.map((child, i) => (\n <span\n key={i}\n className=\"relative ring-2 ring-[var(--color-surface)] rounded-full\"\n style={{ zIndex: visible.length - i }}\n >\n {child}\n </span>\n ))}\n {overflow > 0 && (\n <span\n className=\"relative ring-2 ring-[var(--color-surface)] rounded-full\"\n style={{ zIndex: 0 }}\n >\n <Avatar size={size}>\n <AvatarFallback>+{overflow}</AvatarFallback>\n </Avatar>\n </span>\n )}\n </div>\n );\n },\n);\nAvatarGroup.displayName = 'AvatarGroup';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\nexport interface SeparatorProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical';\n decorative?: boolean;\n}\n\nexport const Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(\n (\n { className, orientation = 'horizontal', decorative = false, ...props },\n ref,\n ) => (\n <div\n ref={ref}\n role={decorative ? 'none' : 'separator'}\n aria-orientation={decorative ? undefined : orientation}\n className={cn(\n 'shrink-0 bg-[var(--color-border)]',\n orientation === 'horizontal' ? 'h-px w-full' : 'w-px self-stretch',\n className,\n )}\n {...props}\n />\n ),\n);\nSeparator.displayName = 'Separator';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={cn('animate-pulse rounded-md bg-[var(--color-skeleton)]', className)}\n {...props}\n />\n ),\n);\nSkeleton.displayName = 'Skeleton';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const spinnerVariants = cva('', {\n variants: {\n size: {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-8 w-8',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof spinnerVariants> {}\n\nconst BARS = 8;\n\nexport const Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size, ...props }, ref) => (\n <div ref={ref} role=\"status\" aria-label=\"Loading\" {...props}>\n <svg\n className={cn(spinnerVariants({ size }), className)}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n >\n {Array.from({ length: BARS }, (_, i) => (\n <rect\n key={i}\n x=\"11\"\n y=\"2\"\n width=\"2\"\n height=\"6\"\n rx=\"1\"\n opacity={1 - i * (0.85 / BARS)}\n transform={`rotate(${i * (360 / BARS)} 12 12)`}\n style={{\n animation: 'spinner-fade 0.8s ease-in-out infinite',\n animationDelay: `${-i * 0.1}s`,\n }}\n />\n ))}\n </svg>\n <span className=\"sr-only\">Loading...</span>\n </div>\n ),\n);\nSpinner.displayName = 'Spinner';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\nexport const Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'rounded-xl border border-[var(--color-border)] bg-[var(--color-surface-raised)] shadow-sm',\n className,\n )}\n {...props}\n />\n));\nCard.displayName = 'Card';\n\nexport const CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col gap-1.5 p-6', className)}\n {...props}\n />\n));\nCardHeader.displayName = 'CardHeader';\n\nexport const CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn('text-base sm:text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n));\nCardTitle.displayName = 'CardTitle';\n\nexport const CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-sm text-[var(--color-on-surface-muted)]', className)}\n {...props}\n />\n));\nCardDescription.displayName = 'CardDescription';\n\nexport const CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n));\nCardContent.displayName = 'CardContent';\n\nexport const CardFooter = React.forwardRef<\n HTMLDivElement,\n 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));\nCardFooter.displayName = 'CardFooter';\n","import * as React from 'react';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport { cn } from '@/lib/cn';\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\nexport const Tooltip = TooltipPrimitive.Root;\nexport const TooltipTrigger = TooltipPrimitive.Trigger;\n\nexport const TooltipContent = React.forwardRef<\n React.ComponentRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-tooltip overflow-hidden rounded-md bg-[var(--color-tooltip-bg)] px-3 py-1.5 text-xs text-[var(--color-tooltip-text)] shadow-md',\n 'animate-in fade-in-0 zoom-in-95 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 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n 'touch:hidden',\n className,\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n","import * as React from 'react';\nimport * as ToastPrimitive from '@radix-ui/react-toast';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nexport const ToastProvider = ToastPrimitive.Provider;\n\nexport const ToastViewport = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Viewport\n ref={ref}\n className={cn(\n 'fixed bottom-0 left-0 right-0 z-toast flex max-h-screen w-full flex-col-reverse gap-2 p-4 pb-[calc(1rem+var(--safe-area-bottom))] sm:left-auto sm:max-w-[420px]',\n className,\n )}\n {...props}\n />\n));\nToastViewport.displayName = 'ToastViewport';\n\nexport const toastVariants = cva(\n 'group pointer-events-auto relative flex w-full items-center justify-between gap-4 overflow-hidden rounded-lg border p-3 sm:p-4 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=open]:slide-in-from-bottom-full sm:data-[state=open]:slide-in-from-right-full data-[state=closed]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-bottom-full sm:data-[state=closed]:slide-out-to-right-full',\n {\n variants: {\n variant: {\n default: 'border-[var(--color-border)] bg-[var(--color-surface-raised)] text-[var(--color-on-surface)]',\n success: 'border-success-200 bg-success-50 text-success-900 dark:border-success-800 dark:bg-success-950 dark:text-success-200',\n error: 'border-error-200 bg-error-50 text-error-900 dark:border-error-800 dark:bg-error-950 dark:text-error-200',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport interface ToastProps\n extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Root>,\n VariantProps<typeof toastVariants> {}\n\nexport const Toast = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitive.Root>,\n ToastProps\n>(({ className, variant, ...props }, ref) => (\n <ToastPrimitive.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n));\nToast.displayName = 'Toast';\n\nexport const ToastAction = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Action\n ref={ref}\n className={cn(\n 'inline-flex h-8 shrink-0 items-center justify-center rounded-md border border-[var(--color-border)] bg-transparent px-3 text-xs font-medium transition-colors hover:bg-[var(--color-surface-muted)] focus:outline-none focus:ring-2 focus:ring-[var(--color-ring)] focus:ring-offset-2 ring-offset-[var(--color-ring-offset)] disabled:pointer-events-none disabled:opacity-50',\n className,\n )}\n {...props}\n />\n));\nToastAction.displayName = 'ToastAction';\n\nexport const ToastClose = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitive.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Close\n ref={ref}\n className={cn(\n 'absolute right-2 top-2 rounded-md p-1 text-[var(--color-on-surface-muted)] opacity-0 transition-opacity hover:text-[var(--color-on-surface)] focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100',\n className,\n )}\n toast-close=\"\"\n aria-label=\"Close\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n </ToastPrimitive.Close>\n));\nToastClose.displayName = 'ToastClose';\n\nexport const ToastTitle = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Title\n ref={ref}\n className={cn('text-sm font-semibold', className)}\n {...props}\n />\n));\nToastTitle.displayName = 'ToastTitle';\n\nexport const ToastDescription = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Description\n ref={ref}\n className={cn('text-sm opacity-90', className)}\n {...props}\n />\n));\nToastDescription.displayName = 'ToastDescription';\n\nexport type ToastActionElement = React.ReactElement<typeof ToastAction>;\n","import * as React from 'react';\nimport type { ToastActionElement } from './toast';\n\nconst TOAST_LIMIT = 5;\nconst TOAST_REMOVE_DELAY = 1_000;\n\ntype ToastInput = {\n title?: string;\n description?: string;\n action?: ToastActionElement;\n variant?: 'default' | 'success' | 'error';\n duration?: number;\n};\n\ntype ToasterToast = ToastInput & {\n id: string;\n open: boolean;\n};\n\ntype Action =\n | { type: 'ADD_TOAST'; toast: ToasterToast }\n | { type: 'UPDATE_TOAST'; toast: Partial<ToasterToast> & { id: string } }\n | { type: 'DISMISS_TOAST'; toastId?: string }\n | { type: 'REMOVE_TOAST'; toastId?: string };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nlet count = 0;\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nfunction addToRemoveQueue(toastId: string) {\n if (toastTimeouts.has(toastId)) return;\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({ type: 'REMOVE_TOAST', toastId });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n}\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'ADD_TOAST':\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case 'UPDATE_TOAST':\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case 'DISMISS_TOAST': {\n const { toastId } = action;\n\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((t) => addToRemoveQueue(t.id));\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? { ...t, open: false }\n : t,\n ),\n };\n }\n\n case 'REMOVE_TOAST':\n if (action.toastId === undefined) {\n return { ...state, toasts: [] };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n}\n\nconst listeners: Array<(state: State) => void> = [];\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => listener(memoryState));\n}\n\nexport function toast(props: ToastInput) {\n const id = genId();\n\n const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id });\n\n dispatch({\n type: 'ADD_TOAST',\n toast: { ...props, id, open: true },\n });\n\n return { id, dismiss };\n}\n\nexport function useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) listeners.splice(index, 1);\n };\n }, []);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) =>\n dispatch({ type: 'DISMISS_TOAST', toastId }),\n };\n}\n","import {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from './toast';\nimport { useToast } from './use-toast';\n\nexport function Toaster() {\n const { toasts, dismiss } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(({ id, title, description, action, open, ...props }) => (\n <Toast\n key={id}\n open={open}\n onOpenChange={(isOpen) => {\n if (!isOpen) dismiss(id);\n }}\n {...props}\n >\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && <ToastDescription>{description}</ToastDescription>}\n </div>\n {action}\n <ToastClose />\n </Toast>\n ))}\n <ToastViewport />\n </ToastProvider>\n );\n}\n","import * as React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cn } from '@/lib/cn';\n\nexport interface LabelProps\n extends React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> {\n required?: boolean;\n}\n\nexport const Label = React.forwardRef<\n React.ComponentRef<typeof LabelPrimitive.Root>,\n LabelProps\n>(({ className, required, children, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(\n 'text-sm font-medium text-[var(--color-on-surface)] peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n className,\n )}\n {...props}\n >\n {children}\n {required && (\n <span aria-hidden=\"true\" className=\"ml-0.5 text-error-500\">\n *\n </span>\n )}\n </LabelPrimitive.Root>\n));\nLabel.displayName = 'Label';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const inputVariants = cva(\n 'flex w-full rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] px-3 text-[var(--color-on-surface)] transition-colors duration-fast file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-[var(--color-on-surface-muted)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 ring-offset-[var(--color-ring-offset)] disabled:cursor-not-allowed disabled:opacity-50 aria-[invalid=true]:border-error-500 aria-[invalid=true]:focus-visible:ring-error-500 touch:min-h-[--touch-target-min]',\n {\n variants: {\n size: {\n sm: 'h-8 text-xs',\n md: 'h-9 text-sm',\n lg: 'h-10 text-base',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof inputVariants> {}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, size, type, ...props }, ref) => (\n <input\n ref={ref}\n type={type}\n className={cn(inputVariants({ size }), className)}\n {...props}\n />\n ),\n);\nInput.displayName = 'Input';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const textareaVariants = cva(\n 'flex w-full resize-y rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] px-3 py-2 text-[var(--color-on-surface)] transition-colors duration-fast placeholder:text-[var(--color-on-surface-muted)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 ring-offset-[var(--color-ring-offset)] disabled:cursor-not-allowed disabled:opacity-50 aria-[invalid=true]:border-error-500 aria-[invalid=true]:focus-visible:ring-error-500',\n {\n variants: {\n size: {\n sm: 'min-h-[60px] text-xs',\n md: 'min-h-[80px] text-sm',\n lg: 'min-h-[100px] text-base',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport interface TextareaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>,\n VariantProps<typeof textareaVariants> {}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, size, ...props }, ref) => (\n <textarea\n ref={ref}\n className={cn(textareaVariants({ size }), className)}\n {...props}\n />\n ),\n);\nTextarea.displayName = 'Textarea';\n","import * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check, Minus } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nexport interface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {}\n\nexport const Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'peer h-4 w-4 shrink-0 rounded-sm border border-[var(--color-border-input)] transition-colors duration-fast',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 ring-offset-[var(--color-ring-offset)]',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:border-primary-400 data-[state=checked]:bg-primary-400 data-[state=checked]:text-white',\n 'data-[state=indeterminate]:border-primary-400 data-[state=indeterminate]:bg-primary-400 data-[state=indeterminate]:text-white',\n 'touch:min-h-[--touch-target-min] touch:min-w-[--touch-target-min]',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center\">\n {props.checked === 'indeterminate' ? (\n <Minus className=\"h-3 w-3\" strokeWidth={3} />\n ) : (\n <Check className=\"h-3 w-3\" strokeWidth={3} />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = 'Checkbox';\n","import * as React from 'react';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { cn } from '@/lib/cn';\n\nexport interface RadioGroupProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {}\n\nexport const RadioGroup = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(({ className, ...props }, ref) => (\n <RadioGroupPrimitive.Root\n ref={ref}\n className={cn('flex flex-col gap-2', className)}\n {...props}\n />\n));\nRadioGroup.displayName = 'RadioGroup';\n\nexport interface RadioGroupItemProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> {}\n\nexport const RadioGroupItem = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(({ className, ...props }, ref) => (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'aspect-square h-4 w-4 rounded-full border border-[var(--color-border-input)] transition-colors duration-fast',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 ring-offset-[var(--color-ring-offset)]',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:border-primary-400',\n 'touch:min-h-[--touch-target-min] touch:min-w-[--touch-target-min]',\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <svg\n width=\"8\"\n height=\"8\"\n viewBox=\"0 0 8 8\"\n fill=\"currentColor\"\n className=\"text-primary-500\"\n >\n <circle cx=\"4\" cy=\"4\" r=\"4\" />\n </svg>\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n));\nRadioGroupItem.displayName = 'RadioGroupItem';\n","import * as React from 'react';\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const switchVariants = cva(\n 'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors duration-fast focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 ring-offset-[var(--color-ring-offset)] disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary-500 data-[state=unchecked]:bg-neutral-300 dark:data-[state=unchecked]:bg-neutral-600 touch:min-h-[--touch-target-min]',\n {\n variants: {\n size: {\n sm: 'h-4 w-7',\n md: 'h-5 w-9',\n lg: 'h-6 w-11',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nconst thumbVariants = cva(\n 'pointer-events-none block rounded-full bg-white shadow-sm transition-transform duration-fast',\n {\n variants: {\n size: {\n sm: 'h-3 w-3 data-[state=checked]:translate-x-3 data-[state=unchecked]:translate-x-0',\n md: 'h-4 w-4 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',\n lg: 'h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport interface SwitchProps\n extends React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>,\n VariantProps<typeof switchVariants> {}\n\nexport const Switch = React.forwardRef<\n React.ComponentRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(({ className, size, ...props }, ref) => (\n <SwitchPrimitive.Root\n ref={ref}\n className={cn(switchVariants({ size }), className)}\n {...props}\n >\n <SwitchPrimitive.Thumb className={thumbVariants({ size })} />\n </SwitchPrimitive.Root>\n));\nSwitch.displayName = 'Switch';\n","import * as React from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nexport const Select = SelectPrimitive.Root;\nexport const SelectGroup = SelectPrimitive.Group;\nexport const SelectValue = SelectPrimitive.Value;\n\nexport const SelectTrigger = React.forwardRef<\n React.ComponentRef<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-9 w-full items-center justify-between rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] px-3 text-sm text-[var(--color-on-surface)] transition-colors duration-fast',\n 'placeholder:text-[var(--color-on-surface-muted)]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 ring-offset-[var(--color-ring-offset)]',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'aria-[invalid=true]:border-error-500 aria-[invalid=true]:focus-visible:ring-error-500',\n 'touch:min-h-[--touch-target-min]',\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = 'SelectTrigger';\n\nexport const SelectContent = React.forwardRef<\n React.ComponentRef<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-popover max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-[var(--color-border)] bg-[var(--color-surface-raised)] 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 data-[side=top]:slide-in-from-bottom-2',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1',\n className,\n )}\n position={position}\n {...props}\n >\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 </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = 'SelectContent';\n\nexport const SelectItem = React.forwardRef<\n React.ComponentRef<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-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none',\n 'focus:bg-[var(--color-surface-muted)]',\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 <Check className=\"h-3.5 w-3.5\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = 'SelectItem';\n\nexport const SelectLabel = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn('px-2 py-1.5 text-xs font-medium text-[var(--color-on-surface-muted)]', className)}\n {...props}\n />\n));\nSelectLabel.displayName = 'SelectLabel';\n\nexport const SelectSeparator = React.forwardRef<\n React.ComponentRef<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-[var(--color-border)]', className)}\n {...props}\n />\n));\nSelectSeparator.displayName = 'SelectSeparator';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { ChevronUp, ChevronDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nconst numberInputVariants = cva(\n 'flex w-full rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] text-[var(--color-on-surface)] transition-colors duration-fast focus-within:ring-2 focus-within:ring-[var(--color-ring)] focus-within:ring-offset-2 ring-offset-[var(--color-ring-offset)] aria-[invalid=true]:border-error-500 aria-[invalid=true]:focus-within:ring-error-500',\n {\n variants: {\n size: {\n sm: 'h-8 text-xs',\n md: 'h-9 text-sm',\n lg: 'h-10 text-base',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport interface NumberInputProps\n extends VariantProps<typeof numberInputVariants> {\n value?: number;\n defaultValue?: number;\n onChange?: (value: number | undefined) => void;\n min?: number;\n max?: number;\n step?: number;\n precision?: number;\n disabled?: boolean;\n readOnly?: boolean;\n name?: string;\n id?: string;\n placeholder?: string;\n className?: string;\n 'aria-invalid'?: boolean | 'true' | 'false';\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n required?: boolean;\n}\n\nexport const NumberInput = React.forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n className,\n size,\n value: controlledValue,\n defaultValue,\n onChange,\n min,\n max,\n step = 1,\n precision,\n disabled,\n readOnly,\n ...props\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState<string>(\n defaultValue != null ? formatValue(defaultValue, precision) : '',\n );\n\n const isControlled = controlledValue !== undefined;\n const displayValue = isControlled\n ? controlledValue != null\n ? formatValue(controlledValue, precision)\n : ''\n : internalValue;\n\n function formatValue(val: number, prec?: number): string {\n return prec != null ? val.toFixed(prec) : String(val);\n }\n\n function clamp(val: number): number {\n let result = val;\n if (min != null) result = Math.max(min, result);\n if (max != null) result = Math.min(max, result);\n return result;\n }\n\n function updateValue(newValue: number | undefined) {\n if (newValue != null) {\n const clamped = clamp(newValue);\n if (!isControlled) {\n setInternalValue(formatValue(clamped, precision));\n }\n onChange?.(clamped);\n } else {\n if (!isControlled) {\n setInternalValue('');\n }\n onChange?.(undefined);\n }\n }\n\n function handleInputChange(e: React.ChangeEvent<HTMLInputElement>) {\n const raw = e.target.value;\n if (!isControlled) {\n setInternalValue(raw);\n }\n if (raw === '' || raw === '-') {\n onChange?.(undefined);\n return;\n }\n const num = parseFloat(raw);\n if (!isNaN(num)) {\n onChange?.(num);\n }\n }\n\n function handleBlur() {\n const num = parseFloat(displayValue);\n if (!isNaN(num)) {\n updateValue(num);\n } else {\n updateValue(undefined);\n }\n }\n\n function increment() {\n const current = parseFloat(displayValue) || 0;\n updateValue(current + step);\n }\n\n function decrement() {\n const current = parseFloat(displayValue) || 0;\n updateValue(current - step);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n increment();\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n decrement();\n }\n }\n\n return (\n <div\n className={cn(\n numberInputVariants({ size }),\n (disabled || readOnly) && 'opacity-50 cursor-not-allowed',\n className,\n )}\n aria-invalid={props['aria-invalid']}\n >\n <input\n ref={ref}\n type=\"text\"\n inputMode=\"numeric\"\n value={displayValue}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n readOnly={readOnly}\n className=\"h-full w-full bg-transparent px-3 outline-none disabled:cursor-not-allowed\"\n {...props}\n />\n {!readOnly && !disabled && (\n <div className=\"flex flex-col border-l border-[var(--color-border-input)]\">\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={increment}\n disabled={max != null && parseFloat(displayValue) >= max}\n className=\"flex flex-1 items-center justify-center px-1.5 text-[var(--color-on-surface-muted)] hover:bg-[var(--color-surface-muted)] disabled:opacity-30\"\n aria-label=\"Increment\"\n >\n <ChevronUp className=\"h-2.5 w-2.5\" strokeWidth={2.5} />\n </button>\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={decrement}\n disabled={min != null && parseFloat(displayValue) <= min}\n className=\"flex flex-1 items-center justify-center border-t border-[var(--color-border-input)] px-1.5 text-[var(--color-on-surface-muted)] hover:bg-[var(--color-surface-muted)] disabled:opacity-30\"\n aria-label=\"Decrement\"\n >\n <ChevronDown className=\"h-2.5 w-2.5\" strokeWidth={2.5} />\n </button>\n </div>\n )}\n </div>\n );\n },\n);\nNumberInput.displayName = 'NumberInput';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\nimport { inputVariants, type InputProps } from '@/components/input/input';\n\nexport interface DatePickerProps extends InputProps {}\n\nexport const DatePicker = React.forwardRef<HTMLInputElement, DatePickerProps>(\n ({ className, size, ...props }, ref) => (\n <input\n ref={ref}\n type=\"date\"\n className={cn(\n inputVariants({ size }),\n '[&::-webkit-calendar-picker-indicator]:cursor-pointer',\n className,\n )}\n {...props}\n />\n ),\n);\nDatePicker.displayName = 'DatePicker';\n","import * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Command } from 'cmdk';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface ComboboxProps {\n options: ComboboxOption[];\n value?: string;\n onValueChange?: (value: string) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n emptyMessage?: string;\n disabled?: boolean;\n className?: string;\n 'aria-invalid'?: boolean | 'true' | 'false';\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n id?: string;\n name?: string;\n required?: boolean;\n}\n\nexport const Combobox = React.forwardRef<HTMLButtonElement, ComboboxProps>(\n (\n {\n options,\n value,\n onValueChange,\n placeholder = '選択してください',\n searchPlaceholder = '検索...',\n emptyMessage = '見つかりませんでした',\n disabled,\n className,\n ...props\n },\n ref,\n ) => {\n const [open, setOpen] = React.useState(false);\n const [search, setSearch] = React.useState('');\n\n const selectedOption = options.find((o) => o.value === value);\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger\n ref={ref}\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n className={cn(\n 'flex h-9 w-full items-center justify-between rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] px-3 text-sm text-[var(--color-on-surface)] transition-colors duration-fast',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'aria-[invalid=true]:border-error-500 aria-[invalid=true]:focus-visible:ring-error-500',\n 'touch:min-h-[--touch-target-min]',\n className,\n )}\n {...props}\n >\n <span className={cn(!selectedOption && 'text-[var(--color-on-surface-muted)]')}>\n {selectedOption?.label ?? placeholder}\n </span>\n <ChevronsUpDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n className=\"z-popover w-[var(--radix-popover-trigger-width)] rounded-md border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-0 shadow-md animate-in fade-in-0 zoom-in-95\"\n sideOffset={4}\n align=\"start\"\n >\n <Command shouldFilter>\n <Command.Input\n value={search}\n onValueChange={setSearch}\n placeholder={searchPlaceholder}\n className=\"flex h-9 w-full border-b border-[var(--color-border)] bg-transparent px-3 text-sm outline-none placeholder:text-[var(--color-on-surface-muted)]\"\n />\n <Command.List className=\"max-h-60 overflow-auto p-1\">\n <Command.Empty className=\"px-2 py-6 text-center text-sm text-[var(--color-on-surface-muted)]\">\n {emptyMessage}\n </Command.Empty>\n {options.map((option) => (\n <Command.Item\n key={option.value}\n value={option.label}\n disabled={option.disabled}\n onSelect={() => {\n onValueChange?.(\n option.value === value ? '' : option.value,\n );\n setOpen(false);\n setSearch('');\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 'data-[selected=true]:bg-[var(--color-surface-muted)]',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50',\n )}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n {option.value === value && (\n <Check className=\"h-3.5 w-3.5\" />\n )}\n </span>\n {option.label}\n </Command.Item>\n ))}\n </Command.List>\n </Command>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n );\n },\n);\nCombobox.displayName = 'Combobox';\n","import * as React from 'react';\nimport { createContext } from '@/lib/create-context';\nimport { cn } from '@/lib/cn';\nimport { Label, type LabelProps } from '@/components/label/label';\n\ninterface FormFieldContextValue {\n id: string;\n error?: string;\n required?: boolean;\n disabled?: boolean;\n descriptionId: string;\n messageId: string;\n}\n\nconst [FormFieldProvider, useFormField] = createContext<FormFieldContextValue>('FormField');\n\nexport { useFormField };\n\nexport interface FormFieldProps extends React.HTMLAttributes<HTMLDivElement> {\n error?: string;\n required?: boolean;\n disabled?: boolean;\n}\n\nexport const FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\n ({ className, error, required, disabled, children, ...props }, ref) => {\n const id = React.useId();\n const descriptionId = `${id}-description`;\n const messageId = `${id}-message`;\n\n return (\n <FormFieldProvider\n value={{ id, error, required, disabled, descriptionId, messageId }}\n >\n <div ref={ref} className={cn('space-y-1.5', className)} {...props}>\n {children}\n </div>\n </FormFieldProvider>\n );\n },\n);\nFormField.displayName = 'FormField';\n\nexport interface FormLabelProps extends LabelProps {}\n\nexport const FormLabel = React.forwardRef<HTMLLabelElement, FormLabelProps>(\n ({ className, children, ...props }, ref) => {\n const { id, error, required } = useFormField();\n\n return (\n <Label\n ref={ref}\n htmlFor={id}\n required={required}\n className={cn(error && 'text-error-600', className)}\n {...props}\n >\n {children}\n </Label>\n );\n },\n);\nFormLabel.displayName = 'FormLabel';\n\nexport interface FormControlProps {\n children: React.ReactElement;\n}\n\nexport function FormControl({ children }: FormControlProps) {\n const { id, error, disabled, descriptionId, messageId } = useFormField();\n\n const describedBy = [\n !error ? descriptionId : undefined,\n error ? messageId : undefined,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return React.cloneElement(children, {\n id,\n 'aria-invalid': error ? true : undefined,\n 'aria-describedby': describedBy,\n disabled: children.props.disabled ?? disabled,\n required: children.props.required,\n });\n}\nFormControl.displayName = 'FormControl';\n\nexport interface FormDescriptionProps\n extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nexport const FormDescription = React.forwardRef<\n HTMLParagraphElement,\n FormDescriptionProps\n>(({ className, ...props }, ref) => {\n const { descriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={descriptionId}\n className={cn('text-xs text-[var(--color-on-surface-muted)]', className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = 'FormDescription';\n\nexport interface FormMessageProps\n extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nexport const FormMessage = React.forwardRef<\n HTMLParagraphElement,\n FormMessageProps\n>(({ className, children, ...props }, ref) => {\n const { error, messageId } = useFormField();\n const message = error || children;\n\n if (!message) return null;\n\n return (\n <p\n ref={ref}\n id={messageId}\n role=\"alert\"\n className={cn('text-xs text-error-600', className)}\n {...props}\n >\n {message}\n </p>\n );\n});\nFormMessage.displayName = 'FormMessage';\n","import * as React from 'react';\nimport { Input } from '@/components/input/input';\nimport { Textarea } from '@/components/textarea/textarea';\nimport { Checkbox } from '@/components/checkbox/checkbox';\nimport { RadioGroup, RadioGroupItem } from '@/components/radio-group/radio-group';\nimport { Switch } from '@/components/switch/switch';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/select/select';\nimport { NumberInput } from '@/components/number-input/number-input';\nimport { DatePicker } from '@/components/date-picker/date-picker';\nimport { Combobox } from '@/components/combobox/combobox';\nimport { Label } from '@/components/label/label';\nimport {\n FormField,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n} from '@/components/form-field/form-field';\n\nexport type FieldType =\n | 'text'\n | 'number'\n | 'email'\n | 'url'\n | 'tel'\n | 'password'\n | 'textarea'\n | 'select'\n | 'combobox'\n | 'checkbox'\n | 'radio'\n | 'switch'\n | 'date'\n | 'datetime'\n | 'time'\n | 'file';\n\nexport interface FieldOption {\n value: string;\n label: string;\n}\n\nexport interface DynamicFormFieldProps {\n type: FieldType;\n name: string;\n label: string;\n description?: string;\n error?: string;\n required?: boolean;\n disabled?: boolean;\n placeholder?: string;\n value?: unknown;\n onChange?: (value: unknown) => void;\n options?: FieldOption[];\n min?: number | string;\n max?: number | string;\n step?: number;\n rows?: number;\n className?: string;\n}\n\nexport function getFieldComponent(type: FieldType): string {\n const map: Record<FieldType, string> = {\n text: 'Input',\n email: 'Input',\n url: 'Input',\n tel: 'Input',\n password: 'Input',\n number: 'NumberInput',\n textarea: 'Textarea',\n select: 'Select',\n combobox: 'Combobox',\n checkbox: 'Checkbox',\n radio: 'RadioGroup',\n switch: 'Switch',\n date: 'DatePicker',\n datetime: 'Input',\n time: 'Input',\n file: 'Input',\n };\n return map[type];\n}\n\nfunction isInlineField(type: FieldType): boolean {\n return type === 'checkbox' || type === 'switch';\n}\n\nexport const DynamicFormField = React.forwardRef<\n HTMLDivElement,\n DynamicFormFieldProps\n>(\n (\n {\n type,\n name,\n label,\n description,\n error,\n required,\n disabled,\n placeholder,\n value,\n onChange,\n options = [],\n min,\n max,\n step,\n rows,\n className,\n },\n ref,\n ) => {\n if (isInlineField(type)) {\n return (\n <FormField ref={ref} error={error} disabled={disabled} className={className}>\n <div className=\"flex items-center gap-2\">\n <FormControl>\n {type === 'checkbox' ? (\n <Checkbox\n name={name}\n checked={value as boolean | undefined}\n onCheckedChange={(checked) => onChange?.(checked)}\n />\n ) : (\n <Switch\n name={name}\n checked={value as boolean | undefined}\n onCheckedChange={(checked) => onChange?.(checked)}\n />\n )}\n </FormControl>\n <Label className=\"text-sm font-normal\">\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"ml-0.5 text-error-500\">\n *\n </span>\n )}\n </Label>\n </div>\n {description && <FormDescription>{description}</FormDescription>}\n <FormMessage />\n </FormField>\n );\n }\n\n function renderControl() {\n switch (type) {\n case 'textarea':\n return (\n <Textarea\n name={name}\n placeholder={placeholder}\n value={value as string | undefined}\n onChange={(e) => onChange?.(e.target.value)}\n rows={rows}\n />\n );\n case 'number':\n return (\n <NumberInput\n name={name}\n placeholder={placeholder}\n value={value as number | undefined}\n onChange={(v) => onChange?.(v)}\n min={min as number | undefined}\n max={max as number | undefined}\n step={step}\n />\n );\n case 'date':\n return (\n <DatePicker\n name={name}\n value={value as string | undefined}\n onChange={(e) => onChange?.(e.target.value)}\n min={min as string | undefined}\n max={max as string | undefined}\n />\n );\n case 'select':\n return (\n <Select\n value={value as string | undefined}\n onValueChange={(v) => onChange?.(v)}\n disabled={disabled}\n name={name}\n >\n <SelectTrigger>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n case 'combobox':\n return (\n <Combobox\n name={name}\n options={options}\n value={value as string | undefined}\n onValueChange={(v) => onChange?.(v)}\n placeholder={placeholder}\n />\n );\n case 'radio':\n return (\n <RadioGroup\n value={value as string | undefined}\n onValueChange={(v) => onChange?.(v)}\n >\n {options.map((opt) => (\n <div key={opt.value} className=\"flex items-center gap-2\">\n <RadioGroupItem value={opt.value} id={`${name}-${opt.value}`} />\n <Label htmlFor={`${name}-${opt.value}`} className=\"font-normal\">\n {opt.label}\n </Label>\n </div>\n ))}\n </RadioGroup>\n );\n default:\n return (\n <Input\n type={type === 'datetime' ? 'datetime-local' : type}\n name={name}\n placeholder={placeholder}\n value={value as string | undefined}\n onChange={(e) => onChange?.(e.target.value)}\n />\n );\n }\n }\n\n return (\n <FormField ref={ref} error={error} required={required} disabled={disabled} className={className}>\n <FormLabel>{label}</FormLabel>\n <FormControl>{renderControl()}</FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n <FormMessage />\n </FormField>\n );\n },\n);\nDynamicFormField.displayName = 'DynamicFormField';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const formLayoutVariants = cva('', {\n variants: {\n layout: {\n vertical: 'flex flex-col',\n horizontal: 'grid grid-cols-[auto_1fr] items-start',\n grid: 'grid',\n },\n size: {\n sm: 'gap-3',\n md: 'gap-4',\n lg: 'gap-6',\n },\n },\n compoundVariants: [\n {\n layout: 'horizontal',\n size: 'sm',\n className: 'gap-x-4 gap-y-3',\n },\n {\n layout: 'horizontal',\n size: 'md',\n className: 'gap-x-6 gap-y-4',\n },\n {\n layout: 'horizontal',\n size: 'lg',\n className: 'gap-x-8 gap-y-6',\n },\n ],\n defaultVariants: {\n layout: 'vertical',\n size: 'md',\n },\n});\n\nexport interface FormLayoutProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof formLayoutVariants> {\n columns?: number | 'responsive';\n}\n\nexport const FormLayout = React.forwardRef<HTMLDivElement, FormLayoutProps>(\n ({ className, layout, size, columns = 2, style, ...props }, ref) => {\n const isResponsive = columns === 'responsive';\n return (\n <div\n ref={ref}\n className={cn(\n formLayoutVariants({ layout, size }),\n isResponsive && layout === 'grid' && 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3',\n className,\n )}\n style={\n layout === 'grid' && !isResponsive\n ? { gridTemplateColumns: `repeat(${columns}, 1fr)`, ...style }\n : style\n }\n {...props}\n />\n );\n },\n);\nFormLayout.displayName = 'FormLayout';\n\nexport interface FormSectionProps\n extends React.HTMLAttributes<HTMLFieldSetElement> {\n title: string;\n description?: string;\n}\n\nexport const FormSection = React.forwardRef<\n HTMLFieldSetElement,\n FormSectionProps\n>(({ className, title, description, children, ...props }, ref) => (\n <fieldset\n ref={ref}\n className={cn('space-y-4 border-0 p-0', className)}\n {...props}\n >\n <legend className=\"text-sm font-semibold text-[var(--color-on-surface)]\">{title}</legend>\n {description && (\n <p className=\"-mt-2 text-xs text-[var(--color-on-surface-muted)]\">{description}</p>\n )}\n {children}\n </fieldset>\n));\nFormSection.displayName = 'FormSection';\n\nexport interface FormActionsProps\n extends React.HTMLAttributes<HTMLDivElement> {\n align?: 'left' | 'right' | 'center' | 'between';\n}\n\nconst alignClasses: Record<string, string> = {\n left: 'justify-start',\n right: 'justify-end',\n center: 'justify-center',\n between: 'justify-between',\n};\n\nexport const FormActions = React.forwardRef<HTMLDivElement, FormActionsProps>(\n ({ className, align = 'right', ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex items-center gap-3 pt-4 border-t border-[var(--color-border)]',\n alignClasses[align],\n className,\n )}\n {...props}\n />\n ),\n);\nFormActions.displayName = 'FormActions';\n","import * as React from 'react';\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const progressVariants = cva(\n 'relative w-full overflow-hidden rounded-full bg-[var(--color-surface-muted)]',\n {\n variants: {\n variant: {\n default: '',\n success: '',\n warning: '',\n error: '',\n info: '',\n },\n size: {\n sm: 'h-1.5',\n md: 'h-2.5',\n lg: 'h-4',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n },\n);\n\nconst progressIndicatorVariants = cva(\n 'h-full rounded-full transition-[width] duration-normal ease-default',\n {\n variants: {\n variant: {\n default: 'bg-primary-500',\n success: 'bg-success-500',\n warning: 'bg-warning-500',\n error: 'bg-error-500',\n info: 'bg-info-500',\n },\n indeterminate: {\n true: 'w-1/3 animate-[progress-indeterminate_2s_ease-in-out_infinite]',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n indeterminate: false,\n },\n },\n);\n\nconst floatingBubbleVariants: Record<\n NonNullable<VariantProps<typeof progressVariants>['variant']>,\n string\n> = {\n default: 'bg-primary-600 dark:bg-primary-400',\n success: 'bg-success-600 dark:bg-success-400',\n warning: 'bg-warning-600 dark:bg-warning-400',\n error: 'bg-error-600 dark:bg-error-400',\n info: 'bg-info-600 dark:bg-info-400',\n};\n\nconst floatingArrowVariants: Record<\n NonNullable<VariantProps<typeof progressVariants>['variant']>,\n string\n> = {\n default: 'border-t-primary-600 dark:border-t-primary-400',\n success: 'border-t-success-600 dark:border-t-success-400',\n warning: 'border-t-warning-600 dark:border-t-warning-400',\n error: 'border-t-error-600 dark:border-t-error-400',\n info: 'border-t-info-600 dark:border-t-info-400',\n};\n\nconst markerVariants: Record<\n NonNullable<VariantProps<typeof progressVariants>['variant']>,\n string\n> = {\n default: 'border-primary-500',\n success: 'border-success-500',\n warning: 'border-warning-500',\n error: 'border-error-500',\n info: 'border-info-500',\n};\n\nexport interface ProgressProps\n extends React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>,\n VariantProps<typeof progressVariants> {\n showLabel?: boolean | ((value: number | null | undefined) => React.ReactNode);\n /** @default 'right' */\n labelPosition?: 'right' | 'top' | 'floating';\n /** Show a dot marker at the progress edge */\n showMarker?: boolean;\n}\n\nexport const Progress = React.forwardRef<\n React.ComponentRef<typeof ProgressPrimitive.Root>,\n ProgressProps\n>(\n (\n {\n className,\n variant,\n size,\n value,\n max = 100,\n showLabel,\n labelPosition = 'right',\n showMarker,\n ...props\n },\n ref,\n ) => {\n const isIndeterminate = value === null || value === undefined;\n const clampedValue = isIndeterminate\n ? null\n : Math.min(max, Math.max(0, value));\n const percent = isIndeterminate ? 0 : (clampedValue! / max) * 100;\n\n const resolvedVariant = variant ?? 'default';\n\n const labelContent = showLabel\n ? typeof showLabel === 'function'\n ? showLabel(clampedValue)\n : isIndeterminate\n ? null\n : `${Math.round(clampedValue!)}%`\n : null;\n\n const isFloating = labelPosition === 'floating' && labelContent && !isIndeterminate;\n const hasMarker = showMarker && !isIndeterminate;\n\n const bar = (\n <ProgressPrimitive.Root\n ref={ref}\n value={clampedValue}\n max={max}\n className={cn(progressVariants({ variant, size }), className)}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(\n progressIndicatorVariants({\n variant,\n indeterminate: isIndeterminate,\n }),\n )}\n style={isIndeterminate ? undefined : { width: `${percent}%` }}\n />\n </ProgressPrimitive.Root>\n );\n\n // Floating bubble or marker require a wrapper with relative positioning\n if (isFloating || hasMarker) {\n return (\n <div className=\"relative\">\n {/* Floating bubble label */}\n {isFloating && (\n <div\n className=\"absolute bottom-full mb-2 transition-[left] duration-normal ease-default\"\n style={{ left: `${percent}%` }}\n aria-hidden=\"true\"\n >\n <div className=\"relative -translate-x-1/2\">\n <span\n className={cn(\n 'block rounded-md px-2 py-0.5 text-xs font-semibold tabular-nums text-white whitespace-nowrap shadow-sm',\n floatingBubbleVariants[resolvedVariant],\n )}\n >\n {labelContent}\n </span>\n <div\n className={cn(\n 'mx-auto h-0 w-0 border-x-4 border-t-4 border-x-transparent',\n floatingArrowVariants[resolvedVariant],\n )}\n />\n </div>\n </div>\n )}\n {bar}\n {/* Dot marker at progress edge */}\n {hasMarker && (\n <div\n className=\"absolute top-1/2 -translate-y-1/2 transition-[left] duration-normal ease-default pointer-events-none\"\n style={{ left: `${percent}%` }}\n aria-hidden=\"true\"\n >\n <div\n className={cn(\n 'h-3.5 w-3.5 -translate-x-1/2 rounded-full border-2 bg-white shadow-sm dark:bg-[var(--color-surface-raised)]',\n markerVariants[resolvedVariant],\n )}\n />\n </div>\n )}\n </div>\n );\n }\n\n if (!labelContent) return bar;\n\n if (labelPosition === 'top') {\n return (\n <div className=\"flex flex-col gap-1.5\">\n <span className=\"text-sm font-medium text-[var(--color-on-surface-secondary)]\">\n {labelContent}\n </span>\n {bar}\n </div>\n );\n }\n\n // right (default)\n return (\n <div className=\"flex items-center gap-3\">\n <div className=\"flex-1\">{bar}</div>\n <span className=\"shrink-0 text-sm font-medium tabular-nums text-[var(--color-on-surface-secondary)]\">\n {labelContent}\n </span>\n </div>\n );\n },\n);\nProgress.displayName = 'Progress';\n","import * as React from 'react';\nimport { cva } from 'class-variance-authority';\nimport { Check, ChevronRight, ChevronDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\nimport { Spinner } from '@/components/spinner';\n\n/* --------------------------------------------------------\n Types\n -------------------------------------------------------- */\n\nexport type StepStatus = 'pending' | 'active' | 'completed' | 'error' | 'loading';\nexport type StepperConnector = 'line' | 'arrow' | 'chevron';\n\nexport interface StepItem {\n label: string;\n description?: string;\n icon?: React.ReactNode;\n status?: StepStatus;\n}\n\ntype StepperOrientation = 'horizontal' | 'vertical';\ntype StepperSize = 'sm' | 'md' | 'lg';\n\nexport interface StepperProps\n extends Omit<React.HTMLAttributes<HTMLOListElement>, 'children'> {\n steps: StepItem[];\n activeStep: number;\n orientation?: StepperOrientation;\n size?: StepperSize;\n connector?: StepperConnector;\n clickable?: boolean;\n onStepClick?: (index: number) => void;\n}\n\n/* --------------------------------------------------------\n CVA Variants\n -------------------------------------------------------- */\n\nexport const stepIndicatorVariants = cva(\n 'flex items-center justify-center rounded-full font-medium shrink-0 transition-colors duration-normal border-2',\n {\n variants: {\n status: {\n pending:\n 'border-[var(--color-border)] bg-[var(--color-surface)] text-[var(--color-on-surface-muted)]',\n active: 'border-primary-500 bg-primary-500 text-white',\n completed: 'border-primary-500 bg-primary-500 text-white',\n error: 'border-error-500 bg-error-500 text-white',\n loading: 'border-primary-500 bg-primary-500 text-white',\n },\n size: {\n sm: 'h-6 w-6 text-xs',\n md: 'h-8 w-8 text-sm',\n lg: 'h-10 w-10 text-base',\n },\n },\n defaultVariants: {\n status: 'pending',\n size: 'md',\n },\n },\n);\n\nconst spinnerSizeMap: Record<StepperSize, 'sm' | 'sm' | 'sm'> = {\n sm: 'sm',\n md: 'sm',\n lg: 'sm',\n};\n\nconst checkSizeMap: Record<StepperSize, number> = {\n sm: 12,\n md: 16,\n lg: 20,\n};\n\nconst chevronSizeMap: Record<StepperSize, number> = {\n sm: 14,\n md: 16,\n lg: 20,\n};\n\nconst indicatorHeight: Record<StepperSize, string> = {\n sm: 'h-6',\n md: 'h-8',\n lg: 'h-10',\n};\n\n/* --------------------------------------------------------\n Internal: StepIndicator\n -------------------------------------------------------- */\n\nfunction StepIndicatorContent({\n step,\n index,\n status,\n size,\n}: {\n step: StepItem;\n index: number;\n status: StepStatus;\n size: StepperSize;\n}) {\n if (step.icon && status !== 'completed' && status !== 'loading') {\n return <>{step.icon}</>;\n }\n if (status === 'loading') {\n return <Spinner size={spinnerSizeMap[size]} className=\"text-current\" />;\n }\n if (status === 'completed') {\n const s = checkSizeMap[size];\n return <Check size={s} strokeWidth={3} />;\n }\n return <>{index + 1}</>;\n}\n\n/* --------------------------------------------------------\n Internal: StepConnector\n -------------------------------------------------------- */\n\nfunction StepConnector({\n completed,\n orientation,\n connectorType,\n size,\n}: {\n completed: boolean;\n orientation: StepperOrientation;\n connectorType: StepperConnector;\n size: StepperSize;\n}) {\n const isH = orientation === 'horizontal';\n const lineColor = completed ? 'bg-primary-500' : 'bg-[var(--color-border)]';\n const iconColor = completed\n ? 'text-primary-500'\n : 'text-[var(--color-border)]';\n\n if (connectorType === 'arrow') {\n if (isH) {\n return (\n <div\n className={cn('flex items-center flex-1', indicatorHeight[size])}\n aria-hidden=\"true\"\n >\n <div className=\"flex items-center flex-1 mx-1.5\">\n <div\n className={cn(\n 'h-0.5 flex-1 transition-colors duration-normal',\n lineColor,\n )}\n />\n <div\n className={cn(\n 'w-0 h-0 shrink-0 border-y-[5px] border-y-transparent border-l-[7px] transition-colors duration-normal',\n completed\n ? 'border-l-primary-500'\n : 'border-l-[var(--color-border)]',\n )}\n />\n </div>\n </div>\n );\n }\n return (\n <div\n className=\"flex flex-col items-center min-h-6\"\n aria-hidden=\"true\"\n >\n <div\n className={cn(\n 'w-0.5 flex-1 transition-colors duration-normal',\n lineColor,\n )}\n />\n <div\n className={cn(\n 'w-0 h-0 shrink-0 border-x-[5px] border-x-transparent border-t-[7px] transition-colors duration-normal',\n completed\n ? 'border-t-primary-500'\n : 'border-t-[var(--color-border)]',\n )}\n />\n </div>\n );\n }\n\n if (connectorType === 'chevron') {\n const cSize = chevronSizeMap[size];\n if (isH) {\n return (\n <div\n className={cn('flex items-center flex-1', indicatorHeight[size])}\n aria-hidden=\"true\"\n >\n <div\n className={cn(\n 'flex items-center flex-1 mx-1 transition-colors duration-normal',\n iconColor,\n )}\n >\n <div className={cn('h-0.5 flex-1', lineColor)} />\n <ChevronRight\n size={cSize}\n className=\"shrink-0 mx-0.5\"\n strokeWidth={2.5}\n />\n <div className={cn('h-0.5 flex-1', lineColor)} />\n </div>\n </div>\n );\n }\n return (\n <div\n className={cn(\n 'flex flex-col items-center min-h-6 transition-colors duration-normal',\n iconColor,\n )}\n aria-hidden=\"true\"\n >\n <div className={cn('w-0.5 flex-1', lineColor)} />\n <ChevronDown\n size={cSize}\n className=\"shrink-0 my-0.5\"\n strokeWidth={2.5}\n />\n <div className={cn('w-0.5 flex-1', lineColor)} />\n </div>\n );\n }\n\n // Default: line\n if (isH) {\n return (\n <div\n className={cn('flex items-center flex-1', indicatorHeight[size])}\n aria-hidden=\"true\"\n >\n <div\n className={cn(\n 'h-0.5 flex-1 mx-2 transition-colors duration-normal',\n lineColor,\n )}\n />\n </div>\n );\n }\n return (\n <div\n className={cn(\n 'w-0.5 min-h-6 transition-colors duration-normal',\n lineColor,\n )}\n aria-hidden=\"true\"\n />\n );\n}\n\n/* --------------------------------------------------------\n Stepper\n -------------------------------------------------------- */\n\nexport const Stepper = React.forwardRef<HTMLOListElement, StepperProps>(\n (\n {\n className,\n steps,\n activeStep,\n orientation = 'horizontal',\n size = 'md',\n connector: connectorType = 'line',\n clickable = false,\n onStepClick,\n ...props\n },\n ref,\n ) => {\n return (\n <ol\n ref={ref}\n role=\"list\"\n aria-label=\"Progress\"\n className={cn(\n orientation === 'horizontal'\n ? 'flex items-start'\n : 'flex flex-col',\n className,\n )}\n {...props}\n >\n {steps.map((step, index) => {\n const derivedStatus: StepStatus =\n step.status ??\n (index < activeStep\n ? 'completed'\n : index === activeStep\n ? 'active'\n : 'pending');\n\n const isLast = index === steps.length - 1;\n const isClickable =\n clickable &&\n (derivedStatus === 'completed' || derivedStatus === 'active');\n\n const handleClick = () => {\n if (isClickable && onStepClick) onStepClick(index);\n };\n\n const connectorEl = !isLast ? (\n <StepConnector\n completed={index < activeStep}\n orientation={orientation}\n connectorType={connectorType}\n size={size}\n />\n ) : null;\n\n const indicatorButton = (\n <button\n type=\"button\"\n className={cn(\n stepIndicatorVariants({ status: derivedStatus, size }),\n isClickable &&\n 'cursor-pointer hover:ring-2 hover:ring-primary-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2',\n !isClickable && 'cursor-default',\n 'touch:min-h-[--touch-target-min] touch:min-w-[--touch-target-min]',\n )}\n onClick={handleClick}\n disabled={!isClickable}\n tabIndex={isClickable ? 0 : -1}\n aria-label={`Step ${index + 1}: ${step.label}${derivedStatus === 'completed' ? ' (completed)' : derivedStatus === 'error' ? ' (error)' : derivedStatus === 'loading' ? ' (loading)' : ''}`}\n >\n <StepIndicatorContent\n step={step}\n index={index}\n status={derivedStatus}\n size={size}\n />\n </button>\n );\n\n const labelEl = (\n <span\n className={cn(\n 'text-sm font-medium',\n derivedStatus === 'active' &&\n 'text-[var(--color-on-surface)]',\n derivedStatus === 'pending' &&\n 'text-[var(--color-on-surface-secondary)]',\n derivedStatus === 'completed' &&\n 'text-[var(--color-on-surface-secondary)]',\n derivedStatus === 'loading' &&\n 'text-[var(--color-on-surface)]',\n derivedStatus === 'error' &&\n 'text-error-600 dark:text-error-400',\n )}\n >\n {step.label}\n </span>\n );\n\n const descEl = step.description ? (\n <span className=\"text-xs text-[var(--color-on-surface-muted)] max-w-[140px]\">\n {step.description}\n </span>\n ) : null;\n\n if (orientation === 'horizontal') {\n return (\n <React.Fragment key={index}>\n <li\n role=\"listitem\"\n aria-current={\n derivedStatus === 'active' ? 'step' : undefined\n }\n className=\"flex flex-col items-center gap-1.5 text-center\"\n >\n {indicatorButton}\n {labelEl}\n {descEl}\n </li>\n {connectorEl}\n </React.Fragment>\n );\n }\n\n // Vertical\n return (\n <li\n key={index}\n role=\"listitem\"\n aria-current={\n derivedStatus === 'active' ? 'step' : undefined\n }\n className=\"flex gap-3\"\n >\n <div className=\"flex flex-col items-center\">\n {indicatorButton}\n {connectorEl}\n </div>\n <div className={cn('flex flex-col gap-0.5', !isLast && 'pb-6')}>\n {labelEl}\n {descEl}\n </div>\n </li>\n );\n })}\n </ol>\n );\n },\n);\nStepper.displayName = 'Stepper';\n","import * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\nimport { createContext } from '@/lib/create-context';\n\n/* ----- Context for variant propagation ----- */\n\ntype TabsVariant = 'default' | 'underline';\n\nconst [TabsVariantProvider, useTabsVariant] = createContext<{\n variant: TabsVariant;\n}>('TabsVariant');\n\n/* ----- Tabs Root ----- */\n\nexport const Tabs = TabsPrimitive.Root;\n\n/* ----- TabsList ----- */\n\nconst tabsListVariants = cva(\n 'inline-flex items-center justify-center overflow-x-auto max-w-full',\n {\n variants: {\n variant: {\n default: 'rounded-lg bg-[var(--color-surface-muted)] p-1',\n underline: 'border-b border-[var(--color-border)] bg-transparent',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n);\n\nexport interface TabsListProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>,\n VariantProps<typeof tabsListVariants> {}\n\nexport const TabsList = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(({ className, variant = 'default', ...props }, ref) => (\n <TabsVariantProvider value={{ variant: variant! }}>\n <TabsPrimitive.List\n ref={ref}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n </TabsVariantProvider>\n));\nTabsList.displayName = 'TabsList';\n\n/* ----- TabsTrigger ----- */\n\nconst tabsTriggerBase =\n 'inline-flex items-center justify-center whitespace-nowrap shrink-0 px-3 py-1.5 text-sm font-medium transition-all duration-fast ' +\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 ' +\n 'disabled:pointer-events-none disabled:opacity-50 ' +\n 'touch:min-h-[--touch-target-min]';\n\nconst tabsTriggerVariantStyles: Record<TabsVariant, string> = {\n default:\n 'rounded-md data-[state=active]:bg-[var(--color-surface-raised)] data-[state=active]:shadow-sm data-[state=active]:text-[var(--color-on-surface)] text-[var(--color-on-surface-secondary)]',\n underline:\n 'border-b-2 border-transparent rounded-none data-[state=active]:border-primary-400 data-[state=active]:text-[var(--color-on-surface)] text-[var(--color-on-surface-secondary)]',\n};\n\nexport const TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => {\n const { variant } = useTabsVariant();\n\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n tabsTriggerBase,\n tabsTriggerVariantStyles[variant],\n className,\n )}\n {...props}\n />\n );\n});\nTabsTrigger.displayName = 'TabsTrigger';\n\n/* ----- TabsContent ----- */\n\nexport const TabsContent = React.forwardRef<\n React.ComponentRef<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 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2',\n className,\n )}\n {...props}\n />\n));\nTabsContent.displayName = 'TabsContent';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\n/* ----- EmptyState ----- */\n\nconst emptyStateVariants = cva(\n 'flex flex-col items-center justify-center text-center',\n {\n variants: {\n size: {\n sm: 'py-8 gap-2',\n md: 'py-12 gap-3',\n lg: 'py-20 gap-4',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nexport interface EmptyStateProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof emptyStateVariants> {}\n\nexport const EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n ({ className, size, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(emptyStateVariants({ size }), className)}\n {...props}\n />\n ),\n);\nEmptyState.displayName = 'EmptyState';\n\n/* ----- EmptyStateIcon ----- */\n\nexport const EmptyStateIcon = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('text-[var(--color-on-surface-muted)] [&>svg]:h-10 [&>svg]:w-10', className)}\n {...props}\n />\n));\nEmptyStateIcon.displayName = 'EmptyStateIcon';\n\n/* ----- EmptyStateTitle ----- */\n\nexport const EmptyStateTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn('text-base font-semibold text-[var(--color-on-surface)]', className)}\n {...props}\n />\n));\nEmptyStateTitle.displayName = 'EmptyStateTitle';\n\n/* ----- EmptyStateDescription ----- */\n\nexport const EmptyStateDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-sm text-[var(--color-on-surface-muted)] max-w-sm', className)}\n {...props}\n />\n));\nEmptyStateDescription.displayName = 'EmptyStateDescription';\n\n/* ----- EmptyStateActions ----- */\n\nexport const EmptyStateActions = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center gap-2 mt-2', className)}\n {...props}\n />\n));\nEmptyStateActions.displayName = 'EmptyStateActions';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\n/* ----- Table ----- */\n\nexport const 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\n/* ----- TableHeader ----- */\n\nexport const 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\n/* ----- TableBody ----- */\n\nexport const 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\n/* ----- TableFooter ----- */\n\nexport const 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-[var(--color-surface-sunken)] font-medium [&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\n/* ----- TableRow ----- */\n\nexport const 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-[var(--color-border)] transition-colors hover:bg-[var(--color-surface-sunken)] data-[state=selected]:bg-primary-50 dark:data-[state=selected]:bg-primary-950',\n className,\n )}\n {...props}\n />\n));\nTableRow.displayName = 'TableRow';\n\n/* ----- TableHead ----- */\n\nexport const TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-10 px-3 text-left align-middle text-xs font-medium text-[var(--color-on-surface-muted)] uppercase tracking-wider [&:has([role=checkbox])]:pr-0',\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = 'TableHead';\n\n/* ----- TableCell ----- */\n\nexport const TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n 'px-2 py-2 sm:px-3 sm:py-2.5 align-middle text-sm [&:has([role=checkbox])]:pr-0',\n className,\n )}\n {...props}\n />\n));\nTableCell.displayName = 'TableCell';\n\n/* ----- TableCaption ----- */\n\nexport const 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-[var(--color-on-surface-muted)]', className)}\n {...props}\n />\n));\nTableCaption.displayName = 'TableCaption';\n","import * as React from 'react';\nimport {\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n getPaginationRowModel,\n flexRender,\n type ColumnDef,\n type SortingState,\n type RowSelectionState,\n type VisibilityState,\n} from '@tanstack/react-table';\nimport { ChevronsUpDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\nimport {\n Table,\n TableHeader,\n TableBody,\n TableRow,\n TableHead,\n TableCell,\n} from '@/components/table';\nimport { Checkbox } from '@/components/checkbox';\nimport { DataTablePagination } from './data-table-pagination';\nimport { DataTableToolbar } from './data-table-toolbar';\n\nexport interface DataTableProps<TData> {\n columns: ColumnDef<TData, unknown>[];\n data: TData[];\n enableSorting?: boolean;\n enableRowSelection?: boolean;\n enableColumnVisibility?: boolean;\n enablePagination?: boolean;\n pageSize?: number;\n pageSizeOptions?: number[];\n onRowSelectionChange?: (selectedRows: TData[]) => void;\n emptyState?: React.ReactNode;\n className?: string;\n 'aria-label'?: string;\n}\n\nexport function DataTable<TData>({\n columns,\n data,\n enableSorting = false,\n enableRowSelection = false,\n enableColumnVisibility = false,\n enablePagination = false,\n pageSize = 10,\n pageSizeOptions,\n onRowSelectionChange,\n emptyState,\n className,\n 'aria-label': ariaLabel,\n}: DataTableProps<TData>) {\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({});\n const [columnVisibility, setColumnVisibility] =\n React.useState<VisibilityState>({});\n\n const allColumns = React.useMemo(() => {\n if (!enableRowSelection) return columns;\n\n const selectColumn: ColumnDef<TData, unknown> = {\n id: 'select',\n header: ({ table }) => (\n <Checkbox\n checked={\n table.getIsAllPageRowsSelected()\n ? true\n : table.getIsSomePageRowsSelected()\n ? 'indeterminate'\n : false\n }\n onCheckedChange={(value) =>\n table.toggleAllPageRowsSelected(!!value)\n }\n aria-label=\"Select all\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n aria-label=\"Select row\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n };\n\n return [selectColumn, ...columns];\n }, [columns, enableRowSelection]);\n\n const table = useReactTable({\n data,\n columns: allColumns,\n state: { sorting, rowSelection, columnVisibility },\n onSortingChange: setSorting,\n onRowSelectionChange: setRowSelection,\n onColumnVisibilityChange: setColumnVisibility,\n getCoreRowModel: getCoreRowModel(),\n ...(enableSorting && { getSortedRowModel: getSortedRowModel() }),\n ...(enablePagination && {\n getPaginationRowModel: getPaginationRowModel(),\n }),\n enableRowSelection,\n initialState: { pagination: { pageSize } },\n });\n\n React.useEffect(() => {\n if (onRowSelectionChange) {\n const selectedRows = table\n .getFilteredSelectedRowModel()\n .rows.map((row) => row.original);\n onRowSelectionChange(selectedRows);\n }\n }, [rowSelection, table, onRowSelectionChange]);\n\n const showToolbar = enableRowSelection || enableColumnVisibility;\n\n return (\n <div className={cn('rounded-md border border-[var(--color-border)]', className)}>\n {showToolbar && (\n <DataTableToolbar\n table={table}\n enableColumnVisibility={enableColumnVisibility}\n />\n )}\n\n <Table aria-label={ariaLabel}>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead key={header.id}>\n {header.isPlaceholder ? null : header.column.getCanSort() ? (\n <button\n className=\"flex items-center gap-1 -ml-2 px-2 py-1 rounded-md hover:bg-[var(--color-surface-muted)] transition-colors duration-fast\"\n onClick={header.column.getToggleSortingHandler()}\n aria-label={`Sort by ${typeof header.column.columnDef.header === 'string' ? header.column.columnDef.header : header.column.id}`}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n <ChevronsUpDown\n className={cn(\n 'h-3.5 w-3.5 shrink-0',\n header.column.getIsSorted() ? 'opacity-100' : 'opacity-30',\n )}\n />\n </button>\n ) : (\n flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )\n )}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows.length > 0 ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() ? 'selected' : undefined}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={allColumns.length}\n className=\"h-24 text-center\"\n >\n {emptyState ?? 'No results.'}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n\n {enablePagination && (\n <DataTablePagination\n table={table}\n pageSizeOptions={pageSizeOptions}\n />\n )}\n </div>\n );\n}\nDataTable.displayName = 'DataTable';\n","import * as React from 'react';\nimport type { Table } from '@tanstack/react-table';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\ninterface DataTablePaginationProps<TData> {\n table: Table<TData>;\n pageSizeOptions?: number[];\n className?: string;\n}\n\nexport function DataTablePagination<TData>({\n table,\n pageSizeOptions = [10, 20, 30, 50],\n className,\n}: DataTablePaginationProps<TData>) {\n const { pageIndex, pageSize } = table.getState().pagination;\n const totalRows = table.getFilteredRowModel().rows.length;\n const from = pageIndex * pageSize + 1;\n const to = Math.min((pageIndex + 1) * pageSize, totalRows);\n\n return (\n <div\n className={cn(\n 'flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between px-3 py-3 text-sm text-[var(--color-on-surface-secondary)]',\n className,\n )}\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"hidden sm:inline\">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-[var(--color-border-input)] bg-[var(--color-surface-raised)] px-2 text-sm\"\n aria-label=\"Rows per page\"\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <span>\n {totalRows > 0 ? `${from}-${to} of ${totalRows}` : '0 results'}\n </span>\n <div className=\"flex items-center gap-1\">\n <button\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] transition-colors hover:bg-[var(--color-surface-sunken)] disabled:opacity-50 disabled:pointer-events-none\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n aria-label=\"Previous page\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n <button\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] transition-colors hover:bg-[var(--color-surface-sunken)] disabled:opacity-50 disabled:pointer-events-none\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n aria-label=\"Next page\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n </div>\n );\n}\nDataTablePagination.displayName = 'DataTablePagination';\n","import * as React from 'react';\nimport type { Table } from '@tanstack/react-table';\nimport { Columns3 } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\ninterface DataTableToolbarProps<TData> {\n table: Table<TData>;\n enableColumnVisibility?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport function DataTableToolbar<TData>({\n table,\n enableColumnVisibility = false,\n className,\n children,\n}: DataTableToolbarProps<TData>) {\n const [showColumnMenu, setShowColumnMenu] = React.useState(false);\n const menuRef = React.useRef<HTMLDivElement>(null);\n const selectedCount = table.getFilteredSelectedRowModel().rows.length;\n\n React.useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (menuRef.current && !menuRef.current.contains(event.target as Node)) {\n setShowColumnMenu(false);\n }\n }\n if (showColumnMenu) {\n document.addEventListener('mousedown', handleClickOutside);\n return () =>\n document.removeEventListener('mousedown', handleClickOutside);\n }\n }, [showColumnMenu]);\n\n return (\n <div\n className={cn(\n 'flex items-center justify-between px-3 py-2',\n className,\n )}\n >\n <div className=\"flex items-center gap-2\">\n {selectedCount > 0 && (\n <span className=\"text-sm text-[var(--color-on-surface-secondary)]\">\n {selectedCount} selected\n </span>\n )}\n {children}\n </div>\n\n {enableColumnVisibility && (\n <div className=\"relative\" ref={menuRef}>\n <button\n className=\"inline-flex items-center gap-1 rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] px-3 py-1.5 text-sm transition-colors hover:bg-[var(--color-surface-sunken)]\"\n onClick={() => setShowColumnMenu(!showColumnMenu)}\n aria-label=\"Toggle columns\"\n aria-expanded={showColumnMenu}\n >\n <Columns3 className=\"h-3.5 w-3.5\" />\n Columns\n </button>\n\n {showColumnMenu && (\n <div className=\"absolute right-0 top-full z-popover mt-1 min-w-[10rem] rounded-md border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-2 shadow-md\">\n {table\n .getAllColumns()\n .filter((col) => col.getCanHide())\n .map((col) => (\n <label\n key={col.id}\n className=\"flex items-center gap-2 rounded px-2 py-1 text-sm hover:bg-[var(--color-surface-sunken)] cursor-pointer capitalize\"\n >\n <input\n type=\"checkbox\"\n checked={col.getIsVisible()}\n onChange={(e) => col.toggleVisibility(e.target.checked)}\n className=\"h-4 w-4\"\n />\n {col.id}\n </label>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\nDataTableToolbar.displayName = 'DataTableToolbar';\n","import * as React from 'react';\nimport type { Column } from '@tanstack/react-table';\nimport { ChevronsUpDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\ninterface DataTableColumnHeaderProps<TData, TValue>\n extends React.HTMLAttributes<HTMLDivElement> {\n column: Column<TData, TValue>;\n title: string;\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n if (!column.getCanSort()) {\n return <div className={cn(className)}>{title}</div>;\n }\n\n const sorted = column.getIsSorted();\n\n return (\n <button\n className={cn(\n 'flex items-center gap-1 -ml-2 px-2 py-1 rounded-md hover:bg-[var(--color-surface-muted)] transition-colors duration-fast',\n className,\n )}\n onClick={() => column.toggleSorting(sorted === 'asc')}\n aria-label={`Sort by ${title}`}\n >\n {title}\n <ChevronsUpDown\n className={cn(\n 'h-3.5 w-3.5 shrink-0 transition-opacity',\n sorted ? 'opacity-100' : 'opacity-30',\n )}\n />\n {sorted === 'asc' && (\n <span className=\"sr-only\">sorted ascending</span>\n )}\n {sorted === 'desc' && (\n <span className=\"sr-only\">sorted descending</span>\n )}\n </button>\n );\n}\nDataTableColumnHeader.displayName = 'DataTableColumnHeader';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\n/* ----- FilterBar ----- */\n\nexport const FilterBar = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex flex-wrap items-center gap-2 rounded-lg border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-3',\n className,\n )}\n role=\"toolbar\"\n aria-label=\"Filters\"\n {...props}\n />\n));\nFilterBar.displayName = 'FilterBar';\n\n/* ----- FilterBarGroup ----- */\n\nexport const FilterBarGroup = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center gap-2', className)}\n role=\"group\"\n {...props}\n />\n));\nFilterBarGroup.displayName = 'FilterBarGroup';\n\n/* ----- FilterChip ----- */\n\nconst filterChipVariants = cva(\n 'inline-flex items-center gap-1 rounded-full px-3 py-1 text-sm font-medium transition-colors duration-fast',\n {\n variants: {\n variant: {\n default: 'bg-primary-50 text-primary-700',\n outline: 'border border-[var(--color-border-input)] text-[var(--color-on-surface-secondary)]',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n);\n\nexport interface FilterChipProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof filterChipVariants> {\n label: string;\n value: string;\n onRemove?: () => void;\n}\n\nexport const FilterChip = React.forwardRef<HTMLSpanElement, FilterChipProps>(\n ({ className, variant, label, value, onRemove, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(filterChipVariants({ variant }), className)}\n {...props}\n >\n <span className=\"text-xs opacity-70\">{label}:</span>\n <span>{value}</span>\n {onRemove && (\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"ml-0.5 rounded-full p-0.5 hover:bg-black/10 transition-colors\"\n aria-label={`Remove ${label} filter`}\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </span>\n ),\n);\nFilterChip.displayName = 'FilterChip';\n\n/* ----- ActiveFilters ----- */\n\nexport interface ActiveFiltersProps\n extends React.HTMLAttributes<HTMLDivElement> {\n onClearAll?: () => void;\n clearAllLabel?: string;\n}\n\nexport const ActiveFilters = React.forwardRef<\n HTMLDivElement,\n ActiveFiltersProps\n>(({ className, onClearAll, clearAllLabel = 'Clear all', children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-wrap items-center gap-2', className)}\n {...props}\n >\n {children}\n {onClearAll && (\n <button\n type=\"button\"\n onClick={onClearAll}\n className=\"text-sm text-[var(--color-on-surface-muted)] hover:text-[var(--color-on-surface-secondary)] underline transition-colors\"\n >\n {clearAllLabel}\n </button>\n )}\n </div>\n));\nActiveFilters.displayName = 'ActiveFilters';\n\n/* ----- FilterBarActions ----- */\n\nexport const FilterBarActions = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('ml-auto flex items-center gap-2', className)}\n {...props}\n />\n));\nFilterBarActions.displayName = 'FilterBarActions';\n","import * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { cn } from '@/lib/cn';\n\nexport const Popover = PopoverPrimitive.Root;\nexport const PopoverTrigger = PopoverPrimitive.Trigger;\nexport const PopoverAnchor = PopoverPrimitive.Anchor;\n\nexport const PopoverContent = React.forwardRef<\n React.ComponentRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'z-popover w-72 rounded-md border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-4 shadow-md outline-none',\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 data-[side=top]:slide-in-from-bottom-2',\n 'data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = 'PopoverContent';\n","import * as React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { Check, ChevronRight } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root;\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\nexport const DropdownMenuPortal = DropdownMenuPrimitive.Portal;\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nexport const DropdownMenuContent = React.forwardRef<\n React.ComponentRef<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-dropdown min-w-[8rem] overflow-hidden rounded-md border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-1 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 data-[side=top]:slide-in-from-bottom-2',\n 'data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2',\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = 'DropdownMenuContent';\n\nexport const DropdownMenuSubTrigger = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\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-[var(--color-surface-muted)]',\n 'data-[state=open]:bg-[var(--color-surface-muted)]',\n 'touch:min-h-[--touch-target-min]',\n inset && 'pl-8',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-3.5 w-3.5\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName = 'DropdownMenuSubTrigger';\n\nexport const DropdownMenuSubContent = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n 'z-dropdown min-w-[8rem] overflow-hidden rounded-md border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-1 shadow-md',\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2',\n 'data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2',\n className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName = 'DropdownMenuSubContent';\n\nexport interface DropdownMenuItemProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> {\n inset?: boolean;\n destructive?: boolean;\n}\n\nexport const DropdownMenuItem = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Item>,\n DropdownMenuItemProps\n>(({ className, inset, destructive, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors',\n 'focus:bg-[var(--color-surface-muted)] focus:text-[var(--color-on-surface)]',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n 'touch:min-h-[--touch-target-min]',\n destructive && 'text-error-600 focus:bg-error-50 focus:text-error-600',\n inset && 'pl-8',\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = 'DropdownMenuItem';\n\nexport const DropdownMenuCheckboxItem = React.forwardRef<\n React.ComponentRef<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-[var(--color-surface-muted)]',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n 'touch:min-h-[--touch-target-min]',\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 <Check className=\"h-3.5 w-3.5\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = 'DropdownMenuCheckboxItem';\n\nexport const DropdownMenuRadioItem = React.forwardRef<\n React.ComponentRef<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-[var(--color-surface-muted)]',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n 'touch:min-h-[--touch-target-min]',\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 width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"currentColor\">\n <circle cx=\"4\" cy=\"4\" r=\"4\" />\n </svg>\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = 'DropdownMenuRadioItem';\n\nexport const DropdownMenuLabel = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n 'px-2 py-1.5 text-xs font-medium text-[var(--color-on-surface-muted)]',\n inset && 'pl-8',\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = 'DropdownMenuLabel';\n\nexport const DropdownMenuSeparator = React.forwardRef<\n React.ComponentRef<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-[var(--color-border)]', className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator';\n\nexport const DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\n 'ml-auto text-xs tracking-widest text-[var(--color-on-surface-muted)]',\n className,\n )}\n {...props}\n />\n);\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n","import * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nexport const Dialog = DialogPrimitive.Root;\nexport const DialogTrigger = DialogPrimitive.Trigger;\nexport const DialogClose = DialogPrimitive.Close;\n\nexport const DialogOverlay = React.forwardRef<\n React.ComponentRef<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-modal bg-[var(--color-surface-overlay)]',\n 'animate-in fade-in-0',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0',\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = 'DialogOverlay';\n\nexport const DialogContent = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPrimitive.Portal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed z-modal bg-[var(--color-surface-raised)] p-6 shadow-xl',\n 'focus-visible:outline-none',\n // Mobile: full-screen\n 'inset-0',\n // Desktop: centered modal\n 'sm:inset-auto sm:left-1/2 sm:top-1/2 sm:-translate-x-1/2 sm:-translate-y-1/2',\n 'sm:w-full sm:max-w-lg md:max-w-xl sm:rounded-xl sm:border sm:border-[var(--color-border)]',\n // Animations\n 'animate-in fade-in-0',\n 'sm:zoom-in-95 sm:slide-in-from-left-1/2 sm:slide-in-from-top-[48%]',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0',\n 'data-[state=closed]:sm:zoom-out-95',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:pointer-events-none\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n));\nDialogContent.displayName = 'DialogContent';\n\nexport const DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col gap-1.5 text-center sm:text-left', className)}\n {...props}\n />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nexport const DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nexport const DialogTitle = React.forwardRef<\n React.ComponentRef<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', className)}\n {...props}\n />\n));\nDialogTitle.displayName = 'DialogTitle';\n\nexport const DialogDescription = React.forwardRef<\n React.ComponentRef<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-[var(--color-on-surface-muted)]', className)}\n {...props}\n />\n));\nDialogDescription.displayName = 'DialogDescription';\n","import * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { Command } from 'cmdk';\nimport { Search } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\n/* ----- CommandPalette ----- */\n\nexport interface CommandPaletteProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n placeholder?: string;\n className?: string;\n children: React.ReactNode;\n}\n\nexport function CommandPalette({\n open,\n onOpenChange,\n placeholder = 'Type a command or search...',\n className,\n children,\n}: CommandPaletteProps) {\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className=\"fixed inset-0 z-modal bg-[var(--color-surface-overlay)] animate-in fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0\" />\n <DialogPrimitive.Content\n className={cn(\n 'fixed left-1/2 top-[20%] z-modal w-full max-w-xl -translate-x-1/2 overflow-hidden rounded-xl border border-[var(--color-border)] bg-[var(--color-surface-raised)] shadow-2xl',\n 'animate-in fade-in-0 zoom-in-95 slide-in-from-left-1/2',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n className,\n )}\n >\n <Command shouldFilter className=\"flex flex-col\">\n <div className=\"flex items-center border-b border-[var(--color-border)] px-4\">\n <Search className=\"h-[18px] w-[18px] shrink-0 text-[var(--color-on-surface-muted)]\" />\n <Command.Input\n placeholder={placeholder}\n className=\"flex h-12 w-full bg-transparent px-3 text-base outline-none placeholder:text-[var(--color-on-surface-muted)]\"\n />\n </div>\n <Command.List className=\"max-h-80 overflow-auto p-2\">\n {children}\n </Command.List>\n </Command>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n );\n}\nCommandPalette.displayName = 'CommandPalette';\n\n/* ----- CommandPaletteGroup ----- */\n\nexport interface CommandPaletteGroupProps {\n heading?: string;\n children: React.ReactNode;\n}\n\nexport function CommandPaletteGroup({\n heading,\n children,\n}: CommandPaletteGroupProps) {\n return (\n <Command.Group\n heading={heading}\n className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-[var(--color-on-surface-muted)]\"\n >\n {children}\n </Command.Group>\n );\n}\nCommandPaletteGroup.displayName = 'CommandPaletteGroup';\n\n/* ----- CommandPaletteItem ----- */\n\nexport interface CommandPaletteItemProps {\n icon?: React.ReactNode;\n shortcut?: string;\n onSelect?: () => void;\n disabled?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nexport function CommandPaletteItem({\n icon,\n shortcut,\n onSelect,\n disabled,\n className,\n children,\n}: CommandPaletteItemProps) {\n return (\n <Command.Item\n onSelect={onSelect}\n disabled={disabled}\n className={cn(\n 'relative flex cursor-pointer select-none items-center rounded-md px-2 py-2 text-sm outline-none',\n 'data-[selected=true]:bg-[var(--color-surface-muted)]',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50',\n className,\n )}\n >\n {icon && (\n <span className=\"mr-2 flex h-4 w-4 items-center justify-center text-[var(--color-on-surface-muted)]\">\n {icon}\n </span>\n )}\n <span className=\"flex-1\">{children}</span>\n {shortcut && (\n <CommandPaletteShortcut>{shortcut}</CommandPaletteShortcut>\n )}\n </Command.Item>\n );\n}\nCommandPaletteItem.displayName = 'CommandPaletteItem';\n\n/* ----- CommandPaletteSeparator ----- */\n\nexport function CommandPaletteSeparator({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <Command.Separator\n className={cn('-mx-1 my-1 h-px bg-[var(--color-border)]', className)}\n {...props}\n />\n );\n}\nCommandPaletteSeparator.displayName = 'CommandPaletteSeparator';\n\n/* ----- CommandPaletteEmpty ----- */\n\nexport function CommandPaletteEmpty({\n className,\n children = 'No results found.',\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <Command.Empty\n className={cn('px-2 py-6 text-center text-sm text-[var(--color-on-surface-muted)]', className)}\n {...props}\n >\n {children}\n </Command.Empty>\n );\n}\nCommandPaletteEmpty.displayName = 'CommandPaletteEmpty';\n\n/* ----- CommandPaletteShortcut ----- */\n\nexport function CommandPaletteShortcut({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) {\n return (\n <span\n className={cn(\n 'ml-auto text-xs tracking-widest text-[var(--color-on-surface-muted)]',\n className,\n )}\n {...props}\n />\n );\n}\nCommandPaletteShortcut.displayName = 'CommandPaletteShortcut';\n","import * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Pin, X } from 'lucide-react';\nimport { cn } from '@/lib/cn';\nimport { createContext } from '@/lib/create-context';\n\n/* ----- Drawer Context ----- */\n\ninterface DrawerContextValue {\n side: 'left' | 'right';\n pinnable: boolean;\n pinned: boolean;\n onPinnedChange?: (pinned: boolean) => void;\n}\n\nconst [DrawerContextProvider, useDrawerContext] =\n createContext<DrawerContextValue>('Drawer');\n\n/* ----- Drawer Stack Context ----- */\n\ninterface DrawerStackEntry {\n id: string;\n level: number;\n}\n\ninterface DrawerStackContextValue {\n stack: DrawerStackEntry[];\n register: (id: string) => number;\n unregister: (id: string) => void;\n}\n\nconst DrawerStackContext = React.createContext<DrawerStackContextValue | null>(\n null,\n);\n\nexport function DrawerProvider({ children }: { children: React.ReactNode }) {\n const stackRef = React.useRef<DrawerStackEntry[]>([]);\n const [, forceUpdate] = React.useState(0);\n\n const register = React.useCallback((id: string) => {\n const level = stackRef.current.length;\n stackRef.current = [...stackRef.current, { id, level }];\n forceUpdate((n) => n + 1);\n return level;\n }, []);\n\n const unregister = React.useCallback((id: string) => {\n stackRef.current = stackRef.current.filter((e) => e.id !== id);\n forceUpdate((n) => n + 1);\n }, []);\n\n const ctx = React.useMemo(\n () => ({ stack: stackRef.current, register, unregister }),\n [register, unregister],\n );\n\n return (\n <DrawerStackContext.Provider value={ctx}>\n {children}\n </DrawerStackContext.Provider>\n );\n}\nDrawerProvider.displayName = 'DrawerProvider';\n\n/* ----- Drawer ----- */\n\nexport interface DrawerProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n side?: 'left' | 'right';\n pinnable?: boolean;\n pinned?: boolean;\n onPinnedChange?: (pinned: boolean) => void;\n children: React.ReactNode;\n}\n\nexport function Drawer({\n open,\n onOpenChange,\n side = 'right',\n pinnable = false,\n pinned = false,\n onPinnedChange,\n children,\n}: DrawerProps) {\n return (\n <DrawerContextProvider value={{ side, pinnable, pinned, onPinnedChange }}>\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n {children}\n </DialogPrimitive.Root>\n </DrawerContextProvider>\n );\n}\nDrawer.displayName = 'Drawer';\n\n/* ----- DrawerTrigger ----- */\n\nexport const DrawerTrigger = DialogPrimitive.Trigger;\n\n/* ----- DrawerClose ----- */\n\nexport const DrawerClose = DialogPrimitive.Close;\n\n/* ----- DrawerContent ----- */\n\nconst drawerSizeVariants = cva('', {\n variants: {\n size: {\n sm: 'w-80', // 320px\n md: 'w-[480px]',\n lg: 'w-[640px]',\n xl: 'w-[800px]',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\nexport interface DrawerContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\n VariantProps<typeof drawerSizeVariants> {}\n\nexport const DrawerContent = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Content>,\n DrawerContentProps\n>(({ className, size, children, ...props }, ref) => {\n const { side, pinned } = useDrawerContext();\n const stackCtx = React.useContext(DrawerStackContext);\n const drawerId = React.useId();\n const [level, setLevel] = React.useState(0);\n\n React.useEffect(() => {\n if (stackCtx) {\n const l = stackCtx.register(drawerId);\n setLevel(l);\n return () => stackCtx.unregister(drawerId);\n }\n }, [stackCtx, drawerId]);\n\n const stackOffset = stackCtx ? level * 2 : 0;\n\n if (pinned) {\n return (\n <div\n className={cn(\n 'flex flex-col border-[var(--color-border)] bg-[var(--color-surface-raised)]',\n side === 'right' ? 'border-l' : 'border-r',\n drawerSizeVariants({ size }),\n className,\n )}\n >\n {children}\n </div>\n );\n }\n\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n className={cn(\n 'fixed inset-0 bg-[var(--color-surface-overlay)]',\n 'animate-in fade-in-0',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0',\n )}\n style={{ zIndex: 200 + stackOffset }}\n />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed top-0 h-full max-w-full bg-[var(--color-surface-raised)] shadow-xl',\n 'focus-visible:outline-none',\n side === 'right' && 'right-0 border-l border-[var(--color-border)] animate-slide-in-right data-[state=closed]:animate-slide-out-right',\n side === 'left' && 'left-0 border-r border-[var(--color-border)] animate-slide-in-left data-[state=closed]:animate-slide-out-left',\n drawerSizeVariants({ size }),\n className,\n )}\n style={{ zIndex: 201 + stackOffset }}\n {...props}\n >\n <div className=\"flex h-full flex-col\">{children}</div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n );\n});\nDrawerContent.displayName = 'DrawerContent';\n\n/* ----- DrawerHeader ----- */\n\nexport const DrawerHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { pinnable, pinned, onPinnedChange } = useDrawerContext();\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center justify-between border-b border-[var(--color-border)] px-4 py-3 sm:px-6 sm:py-4',\n className,\n )}\n {...props}\n >\n <div className=\"flex-1\">{props.children}</div>\n <div className=\"flex items-center gap-1\">\n {pinnable && (\n <button\n type=\"button\"\n onClick={() => onPinnedChange?.(!pinned)}\n className={cn(\n 'rounded-sm p-1 transition-opacity hover:opacity-100',\n pinned ? 'opacity-100 text-primary-500' : 'opacity-50',\n )}\n aria-label={pinned ? 'Unpin drawer' : 'Pin drawer'}\n >\n <Pin className=\"h-4 w-4\" fill={pinned ? 'currentColor' : 'none'} />\n </button>\n )}\n <DialogPrimitive.Close className=\"rounded-sm p-1 opacity-50 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </div>\n </div>\n );\n});\nDrawerHeader.displayName = 'DrawerHeader';\n\n/* ----- DrawerTitle ----- */\n\nexport const DrawerTitle = React.forwardRef<\n React.ComponentRef<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', className)}\n {...props}\n />\n));\nDrawerTitle.displayName = 'DrawerTitle';\n\n/* ----- DrawerDescription ----- */\n\nexport const DrawerDescription = React.forwardRef<\n React.ComponentRef<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-[var(--color-on-surface-muted)]', className)}\n {...props}\n />\n));\nDrawerDescription.displayName = 'DrawerDescription';\n\n/* ----- DrawerFooter ----- */\n\nexport const DrawerFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex items-center justify-end gap-2 border-t border-[var(--color-border)] px-4 py-3 sm:px-6 sm:py-4',\n className,\n )}\n {...props}\n />\n));\nDrawerFooter.displayName = 'DrawerFooter';\n","import * as React from 'react';\nimport { Menu } from 'lucide-react';\nimport { cn } from '@/lib/cn';\nimport { createContext } from '@/lib/create-context';\nimport { useBreakpoint } from '@/hooks';\nimport { Drawer, DrawerContent } from '@/components/drawer';\n\n/* ----- AppShell Context ----- */\n\ninterface AppShellContextValue {\n sidebarCollapsed: boolean;\n setSidebarCollapsed: (collapsed: boolean) => void;\n isMobile: boolean;\n withBottomNav: boolean;\n mobileSidebarOpen: boolean;\n setMobileSidebarOpen: (open: boolean) => void;\n}\n\nconst [AppShellProvider, useAppShell] =\n createContext<AppShellContextValue>('AppShell');\n\nexport { useAppShell };\n\n/* ----- AppShell ----- */\n\nexport interface AppShellProps extends React.HTMLAttributes<HTMLDivElement> {\n sidebarCollapsed?: boolean;\n onSidebarCollapsedChange?: (collapsed: boolean) => void;\n sidebarWidth?: number;\n sidebarCollapsedWidth?: number;\n withBottomNav?: boolean;\n}\n\nexport const AppShell = React.forwardRef<HTMLDivElement, AppShellProps>(\n (\n {\n className,\n sidebarCollapsed: controlledCollapsed,\n onSidebarCollapsedChange,\n sidebarWidth = 256,\n sidebarCollapsedWidth = 64,\n withBottomNav = false,\n children,\n ...props\n },\n ref,\n ) => {\n const { isMobile } = useBreakpoint();\n const [internalCollapsed, setInternalCollapsed] = React.useState(false);\n const [mobileSidebarOpen, setMobileSidebarOpen] = React.useState(false);\n\n const collapsed = controlledCollapsed ?? internalCollapsed;\n const setCollapsed = onSidebarCollapsedChange ?? setInternalCollapsed;\n\n return (\n <AppShellProvider\n value={{\n sidebarCollapsed: collapsed,\n setSidebarCollapsed: setCollapsed,\n isMobile,\n withBottomNav,\n mobileSidebarOpen,\n setMobileSidebarOpen,\n }}\n >\n <div\n ref={ref}\n className={cn('flex h-dvh', className)}\n style={\n {\n '--sidebar-width': `${sidebarWidth}px`,\n '--sidebar-collapsed-width': `${sidebarCollapsedWidth}px`,\n } as React.CSSProperties\n }\n {...props}\n >\n {children}\n </div>\n </AppShellProvider>\n );\n },\n);\nAppShell.displayName = 'AppShell';\n\n/* ----- AppShellSidebar ----- */\n\nexport const AppShellSidebar = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, children, ...props }, ref) => {\n const { sidebarCollapsed, isMobile, mobileSidebarOpen, setMobileSidebarOpen } =\n useAppShell();\n\n if (isMobile) {\n return (\n <Drawer\n open={mobileSidebarOpen}\n onOpenChange={setMobileSidebarOpen}\n side=\"left\"\n >\n <DrawerContent size=\"sm\" className={className}>\n {children}\n </DrawerContent>\n </Drawer>\n );\n }\n\n return (\n <aside\n ref={ref}\n className={cn(\n 'hidden md:flex md:flex-col shrink-0 border-r border-[var(--color-border)] bg-[var(--color-surface-raised)] overflow-y-auto transition-[width] duration-slow',\n className,\n )}\n style={{\n width: sidebarCollapsed\n ? 'var(--sidebar-collapsed-width)'\n : 'var(--sidebar-width)',\n }}\n {...props}\n >\n {children}\n </aside>\n );\n});\nAppShellSidebar.displayName = 'AppShellSidebar';\n\n/* ----- AppShellHeader ----- */\n\nexport const AppShellHeader = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, children, ...props }, ref) => {\n const { isMobile, setMobileSidebarOpen } = useAppShell();\n\n return (\n <header\n ref={ref}\n className={cn(\n 'flex h-14 items-center gap-3 border-b border-[var(--color-border)] bg-[var(--color-surface-raised)] px-4 shrink-0',\n className,\n )}\n {...props}\n >\n {isMobile && (\n <button\n type=\"button\"\n onClick={() => setMobileSidebarOpen(true)}\n className=\"rounded-md p-1.5 hover:bg-[var(--color-surface-muted)] transition-colors touch:min-h-[--touch-target-min] touch:min-w-[--touch-target-min] flex items-center justify-center\"\n aria-label=\"Open menu\"\n >\n <Menu className=\"h-5 w-5\" />\n </button>\n )}\n {children}\n </header>\n );\n});\nAppShellHeader.displayName = 'AppShellHeader';\n\n/* ----- AppShellContent ----- */\n\nexport const AppShellContent = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => {\n const { withBottomNav } = useAppShell();\n\n return (\n <main\n ref={ref}\n className={cn(\n 'flex-1 overflow-auto',\n withBottomNav &&\n 'pb-[calc(var(--bottom-nav-height)+var(--safe-area-bottom))]',\n className,\n )}\n {...props}\n />\n );\n});\nAppShellContent.displayName = 'AppShellContent';\n\n/* ----- AppShellFooter ----- */\n\nexport const AppShellFooter = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <footer\n ref={ref}\n className={cn(\n 'flex items-center border-t border-[var(--color-border)] bg-[var(--color-surface-raised)] px-4 py-2 shrink-0',\n className,\n )}\n {...props}\n />\n));\nAppShellFooter.displayName = 'AppShellFooter';\n","import * as React from 'react';\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport { ChevronDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\n/* --------------------------------------------------------\n SidebarNav\n -------------------------------------------------------- */\n\nexport const SidebarNav = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <nav\n ref={ref}\n className={cn('flex flex-col gap-1 px-3', className)}\n {...props}\n />\n));\nSidebarNav.displayName = 'SidebarNav';\n\n/* --------------------------------------------------------\n SidebarNavGroup\n -------------------------------------------------------- */\n\nexport interface SidebarNavGroupProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n title: string;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n icon?: React.ReactNode;\n}\n\nexport const SidebarNavGroup = React.forwardRef<\n HTMLDivElement,\n SidebarNavGroupProps\n>(\n (\n {\n className,\n title,\n defaultOpen = true,\n open: controlledOpen,\n onOpenChange,\n icon,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n <CollapsiblePrimitive.Root\n ref={ref}\n defaultOpen={defaultOpen}\n open={controlledOpen}\n onOpenChange={onOpenChange}\n className={cn('flex flex-col', className)}\n {...props}\n >\n <CollapsiblePrimitive.Trigger className=\"group flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-xs font-semibold uppercase tracking-wider text-[var(--color-on-surface-muted)] transition-colors hover:text-[var(--color-on-surface-secondary)] hover:bg-[var(--color-surface-muted)]\">\n {icon && <span className=\"shrink-0 opacity-70\">{icon}</span>}\n <span className=\"flex-1 text-left\">{title}</span>\n <ChevronDown\n className=\"h-3.5 w-3.5 shrink-0 opacity-60 transition-transform duration-normal group-data-[state=closed]:-rotate-90\"\n />\n </CollapsiblePrimitive.Trigger>\n <CollapsiblePrimitive.Content className=\"overflow-hidden data-[state=open]:animate-collapsible-down data-[state=closed]:animate-collapsible-up\">\n <div className=\"flex flex-col gap-0.5 pt-0.5\">\n {children}\n </div>\n </CollapsiblePrimitive.Content>\n </CollapsiblePrimitive.Root>\n );\n },\n);\nSidebarNavGroup.displayName = 'SidebarNavGroup';\n\n/* --------------------------------------------------------\n SidebarNavItem\n -------------------------------------------------------- */\n\nexport interface SidebarNavItemProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n icon?: React.ReactNode;\n active?: boolean;\n badge?: React.ReactNode;\n href?: string;\n}\n\nexport const SidebarNavItem = React.forwardRef<\n HTMLButtonElement,\n SidebarNavItemProps\n>(({ className, icon, active = false, badge, children, ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n 'flex w-full items-center gap-2.5 rounded-md px-2.5 py-1.5 text-sm transition-colors',\n active\n ? 'bg-[var(--color-surface-accent)] text-[var(--color-on-surface-accent)] font-medium'\n : 'text-[var(--color-on-surface-secondary)] hover:bg-[var(--color-surface-muted)] hover:text-[var(--color-on-surface)]',\n className,\n )}\n aria-current={active ? 'page' : undefined}\n {...props}\n >\n {icon && (\n <span className={cn('shrink-0', active ? 'opacity-100' : 'opacity-70')}>\n {icon}\n </span>\n )}\n <span className=\"flex-1 text-left truncate\">{children}</span>\n {badge && (\n <span\n className={cn(\n 'min-w-[20px] rounded-full px-1.5 py-0.5 text-center text-xs font-medium',\n active\n ? 'bg-[var(--color-primary-100)] text-[var(--color-primary-700)] dark:bg-[var(--color-primary-950)] dark:text-[var(--color-primary-300)]'\n : 'bg-[var(--color-surface-sunken)] text-[var(--color-on-surface-muted)]',\n )}\n >\n {badge}\n </span>\n )}\n </button>\n));\nSidebarNavItem.displayName = 'SidebarNavItem';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\nexport interface BottomNavigationProps\n extends React.HTMLAttributes<HTMLElement> {}\n\nexport const BottomNavigation = React.forwardRef<\n HTMLElement,\n BottomNavigationProps\n>(({ className, ...props }, ref) => (\n <nav\n ref={ref}\n className={cn(\n 'fixed bottom-0 left-0 right-0 z-sticky flex items-center justify-around border-t border-[var(--color-border)] bg-[var(--color-surface-raised)] pb-[var(--safe-area-bottom)]',\n 'h-[calc(var(--bottom-nav-height)+var(--safe-area-bottom))]',\n className,\n )}\n {...props}\n />\n));\nBottomNavigation.displayName = 'BottomNavigation';\n\nexport interface BottomNavigationItemProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n icon: React.ReactNode;\n label: string;\n active?: boolean;\n}\n\nexport const BottomNavigationItem = React.forwardRef<\n HTMLButtonElement,\n BottomNavigationItemProps\n>(({ className, icon, label, active = false, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(\n 'flex min-w-[--touch-target-min] flex-1 flex-col items-center justify-center gap-0.5 py-1 text-xs transition-colors',\n active\n ? 'text-primary-500 font-medium'\n : 'text-[var(--color-on-surface-muted)] hover:text-[var(--color-on-surface-secondary)]',\n className,\n )}\n aria-current={active ? 'page' : undefined}\n {...props}\n >\n <span className=\"flex h-6 w-6 items-center justify-center\">{icon}</span>\n <span>{label}</span>\n </button>\n));\nBottomNavigationItem.displayName = 'BottomNavigationItem';\n","import * as React from 'react';\nimport { WifiOff } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nexport interface OfflineIndicatorProps\n extends React.HTMLAttributes<HTMLDivElement> {\n isOffline: boolean;\n message?: string;\n}\n\nexport const OfflineIndicator = React.forwardRef<\n HTMLDivElement,\n OfflineIndicatorProps\n>(\n (\n {\n className,\n isOffline,\n message = 'オフラインです。一部の機能が制限されます。',\n ...props\n },\n ref,\n ) => {\n if (!isOffline) return null;\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(\n 'fixed top-0 left-0 right-0 z-toast flex items-center justify-center bg-warning-500 px-4 py-2 text-xs font-medium text-white pt-[calc(0.5rem+var(--safe-area-top))]',\n className,\n )}\n {...props}\n >\n <WifiOff className=\"mr-2 h-3.5 w-3.5 shrink-0\" aria-hidden=\"true\" />\n {message}\n </div>\n );\n },\n);\nOfflineIndicator.displayName = 'OfflineIndicator';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\nimport { Button } from '@/components/button';\n\nexport interface InstallPromptProps\n extends React.HTMLAttributes<HTMLDivElement> {\n canInstall: boolean;\n onInstall: () => void;\n onDismiss: () => void;\n title?: string;\n description?: string;\n installLabel?: string;\n dismissLabel?: string;\n}\n\nexport const InstallPrompt = React.forwardRef<HTMLDivElement, InstallPromptProps>(\n (\n {\n className,\n canInstall,\n onInstall,\n onDismiss,\n title = 'アプリをインストール',\n description = 'ホーム画面に追加すると、すぐにアクセスできます。',\n installLabel = 'インストール',\n dismissLabel = '後で',\n ...props\n },\n ref,\n ) => {\n if (!canInstall) return null;\n\n return (\n <div\n ref={ref}\n role=\"dialog\"\n aria-label={title}\n className={cn(\n 'fixed bottom-0 left-0 right-0 z-modal border-t border-[var(--color-border)] bg-[var(--color-surface-raised)] p-4 shadow-lg pb-[calc(1rem+var(--safe-area-bottom))]',\n className,\n )}\n {...props}\n >\n <div className=\"mx-auto max-w-md\">\n <p className=\"text-sm font-semibold text-[var(--color-on-surface)]\">{title}</p>\n <p className=\"mt-1 text-xs text-[var(--color-on-surface-muted)]\">{description}</p>\n <div className=\"mt-3 flex gap-2\">\n <Button size=\"sm\" onClick={onInstall} className=\"flex-1\">\n {installLabel}\n </Button>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={onDismiss}\n className=\"flex-1\"\n >\n {dismissLabel}\n </Button>\n </div>\n </div>\n </div>\n );\n },\n);\nInstallPrompt.displayName = 'InstallPrompt';\n","'use client';\n\nimport * as React from 'react';\nimport { ArrowDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\nimport { Spinner } from '@/components/spinner';\n\nexport interface PullToRefreshProps\n extends React.HTMLAttributes<HTMLDivElement> {\n onRefresh: () => Promise<void>;\n threshold?: number;\n disabled?: boolean;\n}\n\nexport const PullToRefresh = React.forwardRef<HTMLDivElement, PullToRefreshProps>(\n ({ className, onRefresh, threshold = 80, disabled = false, children, ...props }, ref) => {\n const [pullDistance, setPullDistance] = React.useState(0);\n const [isRefreshing, setIsRefreshing] = React.useState(false);\n const startYRef = React.useRef(0);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n React.useImperativeHandle(ref, () => containerRef.current!);\n\n const handleTouchStart = React.useCallback(\n (e: React.TouchEvent) => {\n if (disabled || isRefreshing) return;\n const container = containerRef.current;\n if (container && container.scrollTop === 0) {\n startYRef.current = e.touches[0].clientY;\n }\n },\n [disabled, isRefreshing],\n );\n\n const handleTouchMove = React.useCallback(\n (e: React.TouchEvent) => {\n if (disabled || isRefreshing || startYRef.current === 0) return;\n const distance = Math.max(\n 0,\n (e.touches[0].clientY - startYRef.current) * 0.5,\n );\n if (distance > 0) {\n setPullDistance(Math.min(distance, threshold * 1.5));\n }\n },\n [disabled, isRefreshing, threshold],\n );\n\n const handleTouchEnd = React.useCallback(async () => {\n if (disabled || isRefreshing) return;\n\n if (pullDistance >= threshold) {\n setIsRefreshing(true);\n try {\n await onRefresh();\n } finally {\n setIsRefreshing(false);\n }\n }\n setPullDistance(0);\n startYRef.current = 0;\n }, [disabled, isRefreshing, pullDistance, threshold, onRefresh]);\n\n const indicatorOpacity = Math.min(pullDistance / threshold, 1);\n const shouldTrigger = pullDistance >= threshold;\n\n return (\n <div\n ref={containerRef}\n className={cn('relative overflow-auto', className)}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n {...props}\n >\n <div\n className=\"flex items-center justify-center overflow-hidden transition-[height] duration-normal\"\n style={{ height: isRefreshing ? threshold * 0.6 : pullDistance }}\n aria-hidden=\"true\"\n >\n <div\n className=\"transition-opacity\"\n style={{ opacity: isRefreshing ? 1 : indicatorOpacity }}\n >\n {isRefreshing ? (\n <Spinner size=\"sm\" />\n ) : (\n <ArrowDown\n className={cn(\n 'h-5 w-5 text-[var(--color-on-surface-muted)] transition-transform duration-normal',\n shouldTrigger && 'rotate-180 text-primary-500',\n )}\n />\n )}\n </div>\n </div>\n {children}\n </div>\n );\n },\n);\nPullToRefresh.displayName = 'PullToRefresh';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\n/* ----------------------------------------------------------------\n PrintDocument — A4/Letter page wrapper for PDF reports\n\n mm 単位で正確な用紙サイズを指定。\n box-sizing: border-box で padding を含む。\n pdfg に送る際は margin: 0 でパディングを CSS 側で管理。\n ---------------------------------------------------------------- */\n\nconst printDocumentVariants = cva(\n [\n 'bg-white text-neutral-900',\n 'flex flex-col',\n // Screen preview: paper-on-desk effect\n 'screen:shadow-lg screen:border screen:border-neutral-200',\n ].join(' '),\n {\n variants: {\n size: {\n A4: 'w-[210mm] min-h-[297mm]',\n Letter: 'w-[8.5in] min-h-[11in]',\n },\n orientation: {\n portrait: '',\n landscape: '',\n },\n },\n compoundVariants: [\n { size: 'A4', orientation: 'landscape', className: 'w-[297mm] min-h-[210mm]' },\n { size: 'Letter', orientation: 'landscape', className: 'w-[11in] min-h-[8.5in]' },\n ],\n defaultVariants: {\n size: 'A4',\n orientation: 'portrait',\n },\n },\n);\n\nexport interface PrintDocumentProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof printDocumentVariants> {\n /** Padding inside the document. Default: \"20mm\" */\n padding?: string;\n}\n\nconst PrintDocument = React.forwardRef<HTMLDivElement, PrintDocumentProps>(\n ({ className, size, orientation, padding = '20mm', style, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(printDocumentVariants({ size, orientation }), className)}\n style={{\n padding,\n boxSizing: 'border-box',\n fontFamily: 'Inter, \"Noto Sans JP\", sans-serif',\n fontSize: '10pt',\n lineHeight: '1.6',\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n ),\n);\nPrintDocument.displayName = 'PrintDocument';\n\n/* ----------------------------------------------------------------\n PrintHeader — Report header with logo, title, and meta info\n ---------------------------------------------------------------- */\n\nexport interface PrintHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Logo element (img or SVG) */\n logo?: React.ReactNode;\n /** Main title (e.g., \"請求書\") */\n title?: string;\n /** Subtitle (e.g., \"Invoice\") */\n subtitle?: string;\n /** Right-aligned meta info (e.g., invoice number, date) */\n meta?: React.ReactNode;\n}\n\nconst PrintHeader = React.forwardRef<HTMLDivElement, PrintHeaderProps>(\n ({ className, logo, title, subtitle, meta, children, ...props }, ref) => (\n <div ref={ref} className={cn('mb-6', className)} {...props}>\n {/* Brand accent bar */}\n <div className=\"h-1 bg-primary-400 rounded-full mb-5\" />\n <div className=\"flex items-start justify-between pb-4 border-b border-neutral-200\">\n <div className=\"flex items-center gap-3\">\n {logo && <div className=\"shrink-0\">{logo}</div>}\n <div>\n {title && <h1 className=\"text-2xl font-bold text-neutral-900 leading-tight\">{title}</h1>}\n {subtitle && (\n <p className=\"text-[8pt] font-medium tracking-widest uppercase text-neutral-400 mt-0.5\">\n {subtitle}\n </p>\n )}\n </div>\n </div>\n {meta && <div className=\"text-right text-[9pt] text-neutral-600 leading-relaxed\">{meta}</div>}\n {children}\n </div>\n </div>\n ),\n);\nPrintHeader.displayName = 'PrintHeader';\n\n/* ----------------------------------------------------------------\n PrintFooter — Report footer with notes and company info\n ---------------------------------------------------------------- */\n\nexport interface PrintFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst PrintFooter = React.forwardRef<HTMLDivElement, PrintFooterProps>(\n ({ className, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('mt-auto pt-4 border-t border-neutral-200 text-[8pt] text-neutral-400 text-center leading-relaxed', className)}\n {...props}\n >\n {children}\n </div>\n ),\n);\nPrintFooter.displayName = 'PrintFooter';\n\nexport { PrintDocument, printDocumentVariants, PrintHeader, PrintFooter };\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\n/* ----------------------------------------------------------------\n PrintTable — Table optimized for PDF reports\n No overflow wrapper, no hover states, clear borders\n ---------------------------------------------------------------- */\n\nexport interface PrintTableProps extends React.TableHTMLAttributes<HTMLTableElement> {}\n\nconst PrintTable = React.forwardRef<HTMLTableElement, PrintTableProps>(\n ({ className, ...props }, ref) => (\n <table\n ref={ref}\n className={cn('w-full border-collapse text-[9pt]', className)}\n {...props}\n />\n ),\n);\nPrintTable.displayName = 'PrintTable';\n\n/* ----------------------------------------------------------------\n PrintTableHeader\n ---------------------------------------------------------------- */\n\nexport interface PrintTableHeaderProps extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nconst PrintTableHeader = React.forwardRef<HTMLTableSectionElement, PrintTableHeaderProps>(\n ({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('', className)} {...props} />\n ),\n);\nPrintTableHeader.displayName = 'PrintTableHeader';\n\n/* ----------------------------------------------------------------\n PrintTableBody\n ---------------------------------------------------------------- */\n\nexport interface PrintTableBodyProps extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nconst PrintTableBody = React.forwardRef<HTMLTableSectionElement, PrintTableBodyProps>(\n ({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn('', className)} {...props} />\n ),\n);\nPrintTableBody.displayName = 'PrintTableBody';\n\n/* ----------------------------------------------------------------\n PrintTableFooter\n ---------------------------------------------------------------- */\n\nexport interface PrintTableFooterProps extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nconst PrintTableFooter = React.forwardRef<HTMLTableSectionElement, PrintTableFooterProps>(\n ({ className, ...props }, ref) => (\n <tfoot ref={ref} className={cn('', className)} {...props} />\n ),\n);\nPrintTableFooter.displayName = 'PrintTableFooter';\n\n/* ----------------------------------------------------------------\n PrintTableRow\n ---------------------------------------------------------------- */\n\nexport interface PrintTableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {}\n\nconst PrintTableRow = React.forwardRef<HTMLTableRowElement, PrintTableRowProps>(\n ({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn('[break-inside:avoid]', className)}\n {...props}\n />\n ),\n);\nPrintTableRow.displayName = 'PrintTableRow';\n\n/* ----------------------------------------------------------------\n PrintTableHead — Header cell\n ---------------------------------------------------------------- */\n\nexport interface PrintTableHeadProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n align?: 'left' | 'center' | 'right';\n}\n\nconst PrintTableHead = React.forwardRef<HTMLTableCellElement, PrintTableHeadProps>(\n ({ className, align = 'left', ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'py-1.5 px-2 font-semibold text-neutral-700 bg-neutral-50 border-b-2 border-neutral-300 text-[8pt]',\n align === 'right' && 'text-right',\n align === 'center' && 'text-center',\n align === 'left' && 'text-left',\n className,\n )}\n {...props}\n />\n ),\n);\nPrintTableHead.displayName = 'PrintTableHead';\n\n/* ----------------------------------------------------------------\n PrintTableCell — Body cell\n ---------------------------------------------------------------- */\n\nexport interface PrintTableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n align?: 'left' | 'center' | 'right';\n}\n\nconst PrintTableCell = React.forwardRef<HTMLTableCellElement, PrintTableCellProps>(\n ({ className, align = 'left', ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n 'py-1.5 px-2 border-b border-neutral-200',\n align === 'right' && 'text-right',\n align === 'center' && 'text-center',\n align === 'left' && 'text-left',\n className,\n )}\n {...props}\n />\n ),\n);\nPrintTableCell.displayName = 'PrintTableCell';\n\nexport {\n PrintTable,\n PrintTableHeader,\n PrintTableBody,\n PrintTableFooter,\n PrintTableRow,\n PrintTableHead,\n PrintTableCell,\n};\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\n/* ----------------------------------------------------------------\n PrintField — Label + value pair for report data\n ---------------------------------------------------------------- */\n\nexport interface PrintFieldProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Field label */\n label: string;\n /** Field value (string or ReactNode for rich content) */\n value?: React.ReactNode;\n}\n\nconst PrintField = React.forwardRef<HTMLDivElement, PrintFieldProps>(\n ({ className, label, value, children, ...props }, ref) => (\n <div ref={ref} className={cn('', className)} {...props}>\n <dt className=\"text-[8pt] font-medium text-neutral-500 mb-0.5\">{label}</dt>\n <dd className=\"text-[9pt] text-neutral-900\">{value ?? children}</dd>\n </div>\n ),\n);\nPrintField.displayName = 'PrintField';\n\n/* ----------------------------------------------------------------\n PrintFieldGroup — Grid layout for PrintField items\n ---------------------------------------------------------------- */\n\nconst printFieldGroupVariants = cva('grid gap-x-6 gap-y-2', {\n variants: {\n columns: {\n 1: 'grid-cols-1',\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n responsive: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n },\n },\n defaultVariants: {\n columns: 2,\n },\n});\n\nexport interface PrintFieldGroupProps\n extends React.HTMLAttributes<HTMLDListElement>,\n VariantProps<typeof printFieldGroupVariants> {}\n\nconst PrintFieldGroup = React.forwardRef<HTMLDListElement, PrintFieldGroupProps>(\n ({ className, columns, ...props }, ref) => (\n <dl\n ref={ref}\n className={cn(printFieldGroupVariants({ columns }), className)}\n {...props}\n />\n ),\n);\nPrintFieldGroup.displayName = 'PrintFieldGroup';\n\nexport { PrintField, PrintFieldGroup, printFieldGroupVariants };\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\nexport interface PrintDividerProps extends React.HTMLAttributes<HTMLHRElement> {}\n\nconst PrintDivider = React.forwardRef<HTMLHRElement, PrintDividerProps>(\n ({ className, ...props }, ref) => (\n <hr\n ref={ref}\n className={cn('border-neutral-200 my-4', className)}\n {...props}\n />\n ),\n);\nPrintDivider.displayName = 'PrintDivider';\n\nexport { PrintDivider };\n","import * as React from 'react';\nimport { ChevronUp, ChevronDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\n/* ----- StatCard ----- */\n\nexport interface StatCardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Metric label (e.g. \"Total Revenue\") */\n label: string;\n /** Formatted value (e.g. \"¥1,234,567\") */\n value: string;\n /** Trend text (e.g. \"+12.5%\", \"-3\") */\n trend?: string;\n /** Trend direction — controls color. Default: inferred from trend string. */\n trendDirection?: 'up' | 'down' | 'neutral';\n /** Optional icon rendered left of the value */\n icon?: React.ReactNode;\n}\n\nfunction inferDirection(trend?: string): 'up' | 'down' | 'neutral' {\n if (!trend) return 'neutral';\n if (trend.startsWith('+')) return 'up';\n if (trend.startsWith('-')) return 'down';\n return 'neutral';\n}\n\nconst TREND_STYLES = {\n up: 'text-success-600 dark:text-success-400',\n down: 'text-error-600 dark:text-error-400',\n neutral: 'text-[var(--color-on-surface-muted)]',\n} as const;\n\nconst TREND_ICON_COMPONENTS = {\n up: ChevronUp,\n down: ChevronDown,\n neutral: null,\n} as const;\n\nexport const StatCard = React.forwardRef<HTMLDivElement, StatCardProps>(\n ({ className, label, value, trend, trendDirection, icon, ...props }, ref) => {\n const direction = trendDirection ?? inferDirection(trend);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'rounded-xl border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-4 sm:p-5',\n className,\n )}\n {...props}\n >\n <div className=\"flex items-center justify-between\">\n <p className=\"text-xs font-medium text-[var(--color-on-surface-muted)] uppercase tracking-wider\">\n {label}\n </p>\n {icon && (\n <span className=\"text-[var(--color-on-surface-muted)]\">{icon}</span>\n )}\n </div>\n <div className=\"flex items-baseline gap-2 mt-2\">\n <span className=\"text-xl sm:text-2xl font-bold tabular-nums\">{value}</span>\n {trend && (\n <span className={cn('inline-flex items-center gap-0.5 text-xs font-medium', TREND_STYLES[direction])}>\n {(() => {\n const TrendIcon = TREND_ICON_COMPONENTS[direction];\n return TrendIcon ? <TrendIcon className=\"h-3 w-3\" strokeWidth={2.5} /> : null;\n })()}\n {trend}\n </span>\n )}\n </div>\n </div>\n );\n },\n);\nStatCard.displayName = 'StatCard';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\n/* ----- ChartContainer ----- */\n\nexport interface ChartContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Chart title */\n title: string;\n /** Optional description below the title */\n description?: string;\n /** Actions rendered in the header (e.g. period selector, export button) */\n actions?: React.ReactNode;\n}\n\nexport const ChartContainer = React.forwardRef<HTMLDivElement, ChartContainerProps>(\n ({ className, title, description, actions, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'rounded-xl border border-[var(--color-border)] bg-[var(--color-surface-raised)] shadow-sm',\n className,\n )}\n {...props}\n >\n <div className=\"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-2 sm:gap-4 p-4 sm:p-5 pb-0\">\n <div>\n <h3 className=\"text-sm font-semibold leading-none tracking-tight\">\n {title}\n </h3>\n {description && (\n <p className=\"mt-1 text-xs text-[var(--color-on-surface-muted)]\">\n {description}\n </p>\n )}\n </div>\n {actions && <div className=\"flex items-center gap-2 shrink-0\">{actions}</div>}\n </div>\n <div className=\"p-4 sm:p-5\">{children}</div>\n </div>\n ),\n);\nChartContainer.displayName = 'ChartContainer';\n","/**\n * Chart theme tokens for integrating charting libraries (Recharts, Chart.js, etc.)\n * with the Polastack design system.\n *\n * Design approach:\n * - Categorical palette is hand-curated for perceptual balance (Tableau 10 methodology)\n * - Colors are independent from UI semantic tokens (Primer / shadcn best practice)\n * - Each categorical color has a 1:1 paired subtle variant for area fills (Primer emphasis/muted pattern)\n * - Brand teal anchors position 0; remaining hues span the full wheel for maximum distinction\n *\n * Usage with Recharts:\n * <Bar fill={chartColors.categorical[0]} />\n * <Area fill={chartColors.subtle[0]} stroke={chartColors.categorical[0]} />\n *\n * Usage with Chart.js:\n * datasets: [{ backgroundColor: chartColors.categorical }]\n */\n\n/**\n * 8-color categorical palette — curated for data visualization.\n *\n * Principles:\n * 1. Moderate saturation (\"less Crayola bright\") for professional look\n * 2. Balanced perceived lightness across all 8 hues\n * 3. Full hue-circle coverage for maximum distinguishability\n * 4. Warm/cool alternation to aid colorblind accessibility\n * 5. Brand teal as the anchor color at position 0\n */\nexport const chartColors = {\n /** Solid colors for bars, lines, dots, and legends */\n categorical: [\n '#13C3A0', // teal — brand anchor\n '#4E79A7', // slate — classic dataviz blue\n '#E8A838', // amber — warm gold\n '#D4687A', // rose — dusty pink-red\n '#7C6BB1', // violet — soft purple\n '#6BA368', // sage — muted green\n '#5BA4CF', // sky — lighter blue\n '#B07A53', // sienna — warm brown\n ] as const,\n\n /** Subtle tints — 1:1 paired with categorical for area fills and backgrounds */\n subtle: [\n '#E8FAF6', // teal\n '#E8EEF4', // slate\n '#FDF3E0', // amber\n '#FCEAED', // rose\n '#EEEBF5', // violet\n '#EAF3EA', // sage\n '#E6F1F8', // sky\n '#F4EDE6', // sienna\n ] as const,\n\n /** Dark-mode subtle tints — 1:1 paired with categorical */\n subtleDark: [\n '#0C2B26', // teal\n '#1A2535', // slate\n '#2C2312', // amber\n '#2C1A1E', // rose\n '#1E1A2C', // violet\n '#1A2C1A', // sage\n '#1A2535', // sky\n '#2C2418', // sienna\n ] as const,\n\n /** Semantic colors for status-meaning charts (P&L, health scores, etc.) */\n semantic: {\n positive: '#13C3A0',\n negative: '#D4687A',\n neutral: '#94939B',\n warning: '#E8A838',\n } as const,\n\n /** Grid lines and axis strokes */\n grid: {\n light: '#E4E4E7', // neutral-200\n dark: '#3F3F46', // neutral-700\n } as const,\n\n /** Text for tick labels, legends, and annotations */\n text: {\n light: '#71717A', // neutral-500\n dark: '#A1A1AA', // neutral-400\n } as const,\n} as const;\n\nexport type ChartCategoricalColors = typeof chartColors.categorical;\nexport type ChartSemanticColors = typeof chartColors.semantic;\n","import { chartColors } from '@/tokens/chart-theme';\n\n/**\n * Chart theme utilities for Recharts integration.\n *\n * Uses the curated categorical palette from `tokens/chart-theme.ts`\n * and resolves CSS variables at runtime for dark mode support.\n */\n\n/** Resolve a CSS variable with fallback */\nconst cssVar = (variable: string, fallback: string): string => {\n if (typeof window === 'undefined') return fallback;\n return (\n getComputedStyle(document.documentElement)\n .getPropertyValue(variable)\n .trim() || fallback\n );\n};\n\n/** Categorical palette — 8 curated dataviz colors */\nexport function getChartColors(): readonly string[] {\n return chartColors.categorical;\n}\n\n/** Subtle fill palette — 1:1 paired with categorical */\nexport function getChartSubtleColors(dark = false): readonly string[] {\n return dark ? chartColors.subtleDark : chartColors.subtle;\n}\n\n/** Theme object for Recharts axes, grid, and tooltip styling */\nexport function getChartTheme() {\n return {\n gridColor: cssVar('--color-neutral-200', chartColors.grid.light),\n axisColor: cssVar('--color-neutral-400', '#a1a1aa'),\n textColor: cssVar('--color-neutral-500', chartColors.text.light),\n tooltipBg: cssVar('--color-surface-raised', '#ffffff'),\n tooltipBorder: cssVar('--color-border', '#e4e4e7'),\n fontSize: 12,\n fontFamily: 'Inter, \"Noto Sans JP\", sans-serif',\n };\n}\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\n/**\n * ChartTooltip — Styled tooltip content for Recharts.\n *\n * Usage with Recharts:\n * ```tsx\n * <RechartsTooltip content={<ChartTooltip />} />\n * ```\n */\n\nexport interface ChartTooltipProps {\n active?: boolean;\n payload?: Array<{\n name: string;\n value: number;\n color: string;\n dataKey: string;\n }>;\n label?: string;\n /** Custom value formatter (e.g. currency, percentage) */\n formatter?: (value: number, name: string) => string;\n /** Custom label formatter */\n labelFormatter?: (label: string) => string;\n className?: string;\n}\n\nexport const ChartTooltip: React.FC<ChartTooltipProps> = ({\n active,\n payload,\n label,\n formatter,\n labelFormatter,\n className,\n}) => {\n if (!active || !payload?.length) return null;\n\n const displayLabel = labelFormatter ? labelFormatter(String(label)) : label;\n\n return (\n <div\n className={cn(\n 'rounded-lg border border-[var(--color-border)] bg-[var(--color-surface-raised)] px-3 py-2 shadow-md',\n 'text-xs',\n className,\n )}\n >\n {displayLabel && (\n <p className=\"font-medium text-[var(--color-on-surface)] mb-1\">\n {displayLabel}\n </p>\n )}\n <div className=\"flex flex-col gap-0.5\">\n {payload.map((entry, i) => (\n <div key={i} className=\"flex items-center gap-2\">\n <span\n className=\"inline-block h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: entry.color }}\n />\n <span className=\"text-[var(--color-on-surface-muted)]\">\n {entry.name}\n </span>\n <span className=\"ml-auto font-medium tabular-nums text-[var(--color-on-surface)]\">\n {formatter\n ? formatter(entry.value, entry.name)\n : entry.value.toLocaleString()}\n </span>\n </div>\n ))}\n </div>\n </div>\n );\n};\nChartTooltip.displayName = 'ChartTooltip';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\n/**\n * ChartLegend — Styled legend content for Recharts.\n *\n * Usage with Recharts:\n * ```tsx\n * <RechartsLegend content={<ChartLegend />} />\n * ```\n */\n\nexport interface ChartLegendProps {\n payload?: Array<{\n value: string;\n color: string;\n type?: string;\n dataKey?: string;\n }>;\n className?: string;\n}\n\nexport const ChartLegend: React.FC<ChartLegendProps> = ({\n payload,\n className,\n}) => {\n if (!payload?.length) return null;\n\n return (\n <div className={cn('flex flex-wrap items-center justify-center gap-x-4 gap-y-1 pt-3', className)}>\n {payload.map((entry, i) => (\n <div key={i} className=\"flex items-center gap-1.5 text-xs text-[var(--color-on-surface-muted)]\">\n <span\n className=\"inline-block h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: entry.color }}\n />\n <span>{entry.value}</span>\n </div>\n ))}\n </div>\n );\n};\nChartLegend.displayName = 'ChartLegend';\n"],"mappings":"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","names":["createContext","useContext","useState","useEffect","useState","useEffect","useState","useEffect","useState","useEffect","useCallback","useState","useEffect","useCallback","React","useTheme","React","jsx","React","cva","jsx","cva","React","cva","jsx","createContext","cva","React","jsx","React","jsx","React","jsx","React","cva","jsx","jsxs","cva","React","jsx","React","jsx","React","cva","jsx","cva","React","jsx","jsxs","React","jsx","jsxs","React","cva","jsx","cva","React","cva","jsx","cva","React","jsx","React","jsx","React","cva","jsx","cva","React","Check","jsx","jsxs","Check","React","cva","ChevronDown","jsx","jsxs","cva","ChevronDown","React","jsx","React","Check","jsx","jsxs","Check","React","jsx","createContext","jsx","React","jsx","jsxs","React","cva","jsx","jsxs","cva","React","cva","jsx","jsxs","cva","React","cva","Check","ChevronDown","Fragment","jsx","jsxs","cva","Check","ChevronDown","React","cva","jsx","createContext","cva","React","cva","jsx","cva","React","jsx","React","ChevronsUpDown","ChevronRight","jsx","jsxs","ChevronRight","React","jsx","jsxs","jsx","jsxs","table","ChevronsUpDown","ChevronsUpDown","jsx","jsxs","ChevronsUpDown","React","cva","X","jsx","jsxs","cva","X","React","PopoverPrimitive","jsx","React","Check","ChevronRight","jsx","jsxs","ChevronRight","Check","React","X","jsx","jsxs","X","DialogPrimitive","Command","jsx","jsxs","Command","React","DialogPrimitive","cva","X","jsx","jsxs","createContext","cva","X","React","jsx","jsxs","createContext","jsx","jsxs","React","ChevronDown","jsx","jsxs","ChevronDown","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","cva","jsx","jsxs","cva","React","jsx","React","cva","jsx","jsxs","cva","React","jsx","React","ChevronUp","ChevronDown","jsx","jsxs","ChevronUp","ChevronDown","React","jsx","jsxs","jsx","jsxs","jsx","jsxs"]}
1
+ {"version":3,"sources":["../src/lib/cn.ts","../src/lib/create-context.ts","../src/hooks/use-breakpoint.ts","../src/hooks/use-display-mode.ts","../src/hooks/use-online-status.ts","../src/hooks/use-viewport-height.ts","../src/hooks/use-install-prompt.ts","../src/hooks/use-theme.ts","../src/components/theme-provider/theme-provider.tsx","../src/components/button/button.tsx","../src/components/badge/badge.tsx","../src/components/avatar/avatar.tsx","../src/lib/string-hash.ts","../src/components/avatar-group/avatar-group.tsx","../src/components/separator/separator.tsx","../src/components/skeleton/skeleton.tsx","../src/components/spinner/spinner.tsx","../src/components/card/card.tsx","../src/components/tooltip/tooltip.tsx","../src/components/toast/toast.tsx","../src/components/toast/use-toast.ts","../src/components/toast/toaster.tsx","../src/components/label/label.tsx","../src/components/input/input.tsx","../src/components/textarea/textarea.tsx","../src/components/checkbox/checkbox.tsx","../src/components/radio-group/radio-group.tsx","../src/components/switch/switch.tsx","../src/components/select/select.tsx","../src/components/number-input/number-input.tsx","../src/components/date-picker/date-picker.tsx","../src/components/combobox/combobox.tsx","../src/components/form-field/form-field.tsx","../src/components/dynamic-form-field/dynamic-form-field.tsx","../src/components/form-layout/form-layout.tsx","../src/components/progress/progress.tsx","../src/components/stepper/stepper.tsx","../src/components/tabs/tabs.tsx","../src/components/empty-state/empty-state.tsx","../src/components/table/table.tsx","../src/components/data-table/data-table.tsx","../src/components/data-table/data-table-pagination.tsx","../src/components/data-table/data-table-toolbar.tsx","../src/components/data-table/data-table-column-header.tsx","../src/components/filter-bar/filter-bar.tsx","../src/components/popover/popover.tsx","../src/components/dropdown-menu/dropdown-menu.tsx","../src/components/dialog/dialog.tsx","../src/components/command-palette/command-palette.tsx","../src/components/drawer/drawer.tsx","../src/components/app-shell/app-shell.tsx","../src/components/sidebar-nav/sidebar-nav.tsx","../src/components/bottom-navigation/bottom-navigation.tsx","../src/components/offline-indicator/offline-indicator.tsx","../src/components/install-prompt/install-prompt.tsx","../src/components/pull-to-refresh/pull-to-refresh.tsx","../src/components/print/print-document.tsx","../src/components/print/print-table.tsx","../src/components/print/print-field.tsx","../src/components/print/print-divider.tsx","../src/components/stat-card/stat-card.tsx","../src/components/chart-container/chart-container.tsx","../src/tokens/chart-theme.ts","../src/components/chart/chart-theme.ts","../src/components/chart/chart-tooltip.tsx","../src/components/chart/chart-legend.tsx"],"sourcesContent":["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';\n\n/**\n * 型安全なReactコンテキストファクトリ。\n * Provider外での使用時に明確なエラーメッセージを提供する。\n */\nexport function createContext<T>(displayName: string) {\n const Context = React.createContext<T | undefined>(undefined);\n Context.displayName = displayName;\n\n function useContext() {\n const context = React.useContext(Context);\n if (context === undefined) {\n throw new Error(`use${displayName} must be used within a ${displayName}Provider`);\n }\n return context;\n }\n\n return [Context.Provider, useContext] as const;\n}\n","'use client';\n\nimport { useState, useEffect } from 'react';\n\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n} as const;\n\nexport type Breakpoint = 'base' | keyof typeof BREAKPOINTS;\n\nfunction getBreakpoint(width: number): Breakpoint {\n if (width >= BREAKPOINTS['2xl']) return '2xl';\n if (width >= BREAKPOINTS.xl) return 'xl';\n if (width >= BREAKPOINTS.lg) return 'lg';\n if (width >= BREAKPOINTS.md) return 'md';\n if (width >= BREAKPOINTS.sm) return 'sm';\n return 'base';\n}\n\nexport function useBreakpoint() {\n const [breakpoint, setBreakpoint] = useState<Breakpoint>('lg');\n\n useEffect(() => {\n function handleResize() {\n setBreakpoint(getBreakpoint(window.innerWidth));\n }\n\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return {\n breakpoint,\n isMobile: breakpoint === 'base' || breakpoint === 'sm',\n isTablet: breakpoint === 'md',\n isDesktop: breakpoint === 'lg' || breakpoint === 'xl' || breakpoint === '2xl',\n };\n}\n","'use client';\n\nimport { useState, useEffect } from 'react';\n\nexport type DisplayMode = 'standalone' | 'minimal-ui' | 'fullscreen' | 'browser';\n\nfunction getDisplayMode(): DisplayMode {\n if (typeof window === 'undefined') return 'browser';\n\n if (window.matchMedia('(display-mode: standalone)').matches) return 'standalone';\n if (window.matchMedia('(display-mode: minimal-ui)').matches) return 'minimal-ui';\n if (window.matchMedia('(display-mode: fullscreen)').matches) return 'fullscreen';\n\n return 'browser';\n}\n\n/**\n * PWAの表示モードを検出するフック。\n * standalone / minimal-ui / fullscreen / browser を返す。\n */\nexport function useDisplayMode() {\n const [displayMode, setDisplayMode] = useState<DisplayMode>(getDisplayMode);\n\n useEffect(() => {\n const mediaQuery = window.matchMedia('(display-mode: standalone)');\n\n function handleChange() {\n setDisplayMode(getDisplayMode());\n }\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, []);\n\n return {\n displayMode,\n isStandalone: displayMode === 'standalone',\n isPWA: displayMode !== 'browser',\n };\n}\n","'use client';\n\nimport { useState, useEffect, useCallback } from 'react';\n\n/**\n * ブラウザのオンライン/オフライン状態を監視するフック。\n */\nexport function useOnlineStatus() {\n const [isOnline, setIsOnline] = useState(() =>\n typeof navigator !== 'undefined' ? navigator.onLine : true,\n );\n\n const handleOnline = useCallback(() => setIsOnline(true), []);\n const handleOffline = useCallback(() => setIsOnline(false), []);\n\n useEffect(() => {\n window.addEventListener('online', handleOnline);\n window.addEventListener('offline', handleOffline);\n\n return () => {\n window.removeEventListener('online', handleOnline);\n window.removeEventListener('offline', handleOffline);\n };\n }, [handleOnline, handleOffline]);\n\n return { isOnline, isOffline: !isOnline };\n}\n","'use client';\n\nimport { useState, useEffect } from 'react';\n\n/**\n * モバイルブラウザのアドレスバーを考慮した実際のビューポート高さを返すフック。\n * CSS の 100dvh が利用可能な場合はそちらを推奨するが、\n * JS側でピクセル値が必要な場合に使用する。\n */\nexport function useViewportHeight() {\n const [viewportHeight, setViewportHeight] = useState(() =>\n typeof window !== 'undefined' ? window.innerHeight : 0,\n );\n\n useEffect(() => {\n function handleResize() {\n setViewportHeight(window.innerHeight);\n }\n\n // visualViewport APIが利用可能な場合(モバイルブラウザ)はそちらを使用\n const viewport = window.visualViewport;\n if (viewport) {\n const handleViewportResize = () => {\n setViewportHeight(viewport.height);\n };\n handleViewportResize();\n viewport.addEventListener('resize', handleViewportResize);\n return () => viewport.removeEventListener('resize', handleViewportResize);\n }\n\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return viewportHeight;\n}\n","'use client';\n\nimport { useState, useEffect, useCallback } from 'react';\n\ninterface BeforeInstallPromptEvent extends Event {\n prompt(): Promise<void>;\n userChoice: Promise<{ outcome: 'accepted' | 'dismissed' }>;\n}\n\n/**\n * PWAインストールプロンプトを制御するフック。\n * `beforeinstallprompt` イベントをキャプチャし、任意のタイミングで表示する。\n */\nexport function useInstallPrompt() {\n const [deferredPrompt, setDeferredPrompt] =\n useState<BeforeInstallPromptEvent | null>(null);\n const [isInstalled, setIsInstalled] = useState(false);\n\n useEffect(() => {\n // 既にインストール済みかチェック\n if (window.matchMedia('(display-mode: standalone)').matches) {\n setIsInstalled(true);\n return;\n }\n\n function handleBeforeInstallPrompt(e: Event) {\n e.preventDefault();\n setDeferredPrompt(e as BeforeInstallPromptEvent);\n }\n\n function handleAppInstalled() {\n setIsInstalled(true);\n setDeferredPrompt(null);\n }\n\n window.addEventListener('beforeinstallprompt', handleBeforeInstallPrompt);\n window.addEventListener('appinstalled', handleAppInstalled);\n\n return () => {\n window.removeEventListener(\n 'beforeinstallprompt',\n handleBeforeInstallPrompt,\n );\n window.removeEventListener('appinstalled', handleAppInstalled);\n };\n }, []);\n\n const promptInstall = useCallback(async () => {\n if (!deferredPrompt) return null;\n\n await deferredPrompt.prompt();\n const { outcome } = await deferredPrompt.userChoice;\n\n if (outcome === 'accepted') {\n setIsInstalled(true);\n }\n setDeferredPrompt(null);\n\n return outcome;\n }, [deferredPrompt]);\n\n return {\n canInstall: !!deferredPrompt && !isInstalled,\n isInstalled,\n promptInstall,\n };\n}\n","'use client';\n\nimport { useState, useEffect, useCallback, useMemo } from 'react';\n\nexport type Theme = 'light' | 'dark' | 'system';\nexport type ResolvedTheme = 'light' | 'dark';\n\nexport interface UseThemeOptions {\n storageKey?: string;\n defaultTheme?: Theme;\n}\n\nexport interface UseThemeReturn {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: ResolvedTheme;\n}\n\nconst DEFAULT_STORAGE_KEY = 'polastack-theme';\n\nfunction getSystemTheme(): ResolvedTheme {\n if (typeof window === 'undefined') return 'light';\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n}\n\nfunction getStoredTheme(storageKey: string): Theme | null {\n if (typeof window === 'undefined') return null;\n try {\n const stored = localStorage.getItem(storageKey);\n if (stored === 'light' || stored === 'dark' || stored === 'system') {\n return stored;\n }\n } catch {\n // localStorage unavailable\n }\n return null;\n}\n\nfunction applyTheme(resolvedTheme: ResolvedTheme) {\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n if (resolvedTheme === 'dark') {\n root.classList.add('dark');\n } else {\n root.classList.remove('dark');\n }\n}\n\nexport function useTheme(options: UseThemeOptions = {}): UseThemeReturn {\n const {\n storageKey = DEFAULT_STORAGE_KEY,\n defaultTheme = 'system',\n } = options;\n\n const [theme, setThemeState] = useState<Theme>(\n () => getStoredTheme(storageKey) ?? defaultTheme,\n );\n\n const [systemTheme, setSystemTheme] = useState<ResolvedTheme>(getSystemTheme);\n\n const resolvedTheme: ResolvedTheme = theme === 'system' ? systemTheme : theme;\n\n const setTheme = useCallback(\n (newTheme: Theme) => {\n setThemeState(newTheme);\n try {\n localStorage.setItem(storageKey, newTheme);\n } catch {\n // localStorage unavailable\n }\n },\n [storageKey],\n );\n\n // Apply .dark class whenever resolvedTheme changes\n useEffect(() => {\n applyTheme(resolvedTheme);\n }, [resolvedTheme]);\n\n // Listen for system theme changes\n useEffect(() => {\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\n const handler = (e: MediaQueryListEvent) => {\n setSystemTheme(e.matches ? 'dark' : 'light');\n };\n mql.addEventListener('change', handler);\n return () => mql.removeEventListener('change', handler);\n }, []);\n\n return useMemo(\n () => ({ theme, setTheme, resolvedTheme }),\n [theme, setTheme, resolvedTheme],\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport {\n useTheme as useThemeHook,\n type Theme,\n type ResolvedTheme,\n type UseThemeReturn,\n} from '../../hooks/use-theme';\n\ninterface ThemeContextValue extends UseThemeReturn {}\n\nconst ThemeContext = React.createContext<ThemeContextValue | undefined>(undefined);\nThemeContext.displayName = 'ThemeContext';\n\nexport interface ThemeProviderProps {\n children: React.ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n}\n\nexport function ThemeProvider({\n children,\n defaultTheme = 'system',\n storageKey,\n}: ThemeProviderProps) {\n const themeValue = useThemeHook({ defaultTheme, storageKey });\n\n return (\n <ThemeContext.Provider value={themeValue}>{children}</ThemeContext.Provider>\n );\n}\n\nThemeProvider.displayName = 'ThemeProvider';\n\nexport function useTheme(): UseThemeReturn {\n const context = React.useContext(ThemeContext);\n if (context === undefined) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n}\n\nexport type { Theme, ResolvedTheme };\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors duration-fast focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 ring-offset-[var(--color-ring-offset)] disabled:pointer-events-none disabled:opacity-50 touch:min-h-[--touch-target-min]',\n {\n variants: {\n variant: {\n default:\n 'bg-primary-500 text-white hover:bg-primary-600 active:bg-primary-700',\n destructive:\n 'bg-error-500 text-white hover:bg-error-600 active:bg-error-700',\n outline:\n 'border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] text-[var(--color-on-surface)] hover:bg-[var(--color-surface-sunken)] active:bg-[var(--color-surface-muted)]',\n ghost: 'text-[var(--color-on-surface)] hover:bg-[var(--color-surface-muted)] active:bg-neutral-200 dark:active:bg-neutral-700',\n link: 'text-primary-500 underline-offset-4 hover:underline',\n },\n size: {\n sm: 'h-8 px-3 text-xs',\n md: 'h-9 px-4 text-sm',\n lg: 'h-10 px-6 text-base',\n icon: 'h-9 w-9 touch:min-w-[--touch-target-min]',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(buttonVariants({ variant, size }), className)}\n {...props}\n />\n ),\n);\nButton.displayName = 'Button';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const badgeVariants = cva(\n 'inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium transition-colors touch:px-3 touch:py-1 touch:text-sm',\n {\n variants: {\n variant: {\n default: 'bg-primary-100 text-primary-700 dark:bg-primary-950 dark:text-primary-300',\n success: 'bg-success-100 text-success-700 dark:bg-success-950 dark:text-success-300',\n warning: 'bg-warning-100 text-warning-700 dark:bg-warning-950 dark:text-warning-300',\n error: 'bg-error-100 text-error-700 dark:bg-error-950 dark:text-error-300',\n info: 'bg-info-100 text-info-700 dark:bg-info-950 dark:text-info-300',\n outline: 'border border-[var(--color-border-input)] text-[var(--color-on-surface-secondary)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n ),\n);\nBadge.displayName = 'Badge';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\nimport { createContext } from '@/lib/create-context';\nimport { stringToIndex } from '@/lib/string-hash';\n\n/* ----- Context ----- */\n\nconst [AvatarContextProvider, useAvatarContext] = createContext<{\n imageLoaded: boolean;\n setImageLoaded: React.Dispatch<React.SetStateAction<boolean>>;\n shape: 'circle' | 'square';\n size: 'sm' | 'md' | 'lg';\n}>('Avatar');\n\n/* ----- Color Palette ----- */\n\nconst FALLBACK_COLORS = [\n 'bg-primary-100 text-primary-700 dark:bg-primary-950 dark:text-primary-300',\n 'bg-success-100 text-success-700 dark:bg-success-950 dark:text-success-300',\n 'bg-warning-100 text-warning-700 dark:bg-warning-950 dark:text-warning-300',\n 'bg-error-100 text-error-700 dark:bg-error-950 dark:text-error-300',\n 'bg-info-100 text-info-700 dark:bg-info-950 dark:text-info-300',\n 'bg-primary-200 text-primary-800 dark:bg-primary-900 dark:text-primary-200',\n 'bg-info-200 text-info-800 dark:bg-info-900 dark:text-info-200',\n 'bg-success-200 text-success-800 dark:bg-success-900 dark:text-success-200',\n] as const;\n\n/* ----- Avatar ----- */\n\nexport const avatarVariants = cva('relative flex shrink-0 overflow-hidden', {\n variants: {\n size: {\n sm: 'h-8 w-8 text-xs',\n md: 'h-10 w-10 text-sm',\n lg: 'h-12 w-12 text-base',\n },\n shape: {\n circle: 'rounded-full',\n square: 'rounded-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n shape: 'circle',\n },\n});\n\nexport interface AvatarProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof avatarVariants> {}\n\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n ({ className, size = 'md', shape = 'circle', ...props }, ref) => {\n const [imageLoaded, setImageLoaded] = React.useState(false);\n\n return (\n <AvatarContextProvider\n value={{ imageLoaded, setImageLoaded, shape: shape!, size: size! }}\n >\n <span\n ref={ref}\n className={cn(avatarVariants({ size, shape }), className)}\n {...props}\n />\n </AvatarContextProvider>\n );\n },\n);\nAvatar.displayName = 'Avatar';\n\n/* ----- AvatarImage ----- */\n\nexport interface AvatarImageProps\n extends React.ImgHTMLAttributes<HTMLImageElement> {}\n\nexport const AvatarImage = React.forwardRef<HTMLImageElement, AvatarImageProps>(\n ({ className, onLoad, onError, ...props }, ref) => {\n const { imageLoaded, setImageLoaded } = useAvatarContext();\n\n return (\n <img\n ref={ref}\n className={cn(\n 'aspect-square h-full w-full object-cover',\n !imageLoaded && 'hidden',\n className,\n )}\n onLoad={(e) => {\n setImageLoaded(true);\n onLoad?.(e);\n }}\n onError={(e) => {\n setImageLoaded(false);\n onError?.(e);\n }}\n {...props}\n />\n );\n },\n);\nAvatarImage.displayName = 'AvatarImage';\n\n/* ----- AvatarFallback ----- */\n\nexport interface AvatarFallbackProps\n extends React.HTMLAttributes<HTMLSpanElement> {\n /** String used to deterministically pick a fallback color. If omitted, a stable random color is assigned. */\n colorSeed?: string;\n}\n\nexport const AvatarFallback = React.forwardRef<\n HTMLSpanElement,\n AvatarFallbackProps\n>(({ className, colorSeed, ...props }, ref) => {\n const { imageLoaded, shape } = useAvatarContext();\n const autoSeed = React.useId();\n\n if (imageLoaded) return null;\n\n const seed = colorSeed ?? autoSeed;\n const colorClasses =\n FALLBACK_COLORS[stringToIndex(seed, FALLBACK_COLORS.length)];\n\n return (\n <span\n ref={ref}\n className={cn(\n 'flex h-full w-full items-center justify-center font-medium',\n shape === 'circle' ? 'rounded-full' : 'rounded-lg',\n colorClasses,\n className,\n )}\n {...props}\n />\n );\n});\nAvatarFallback.displayName = 'AvatarFallback';\n\n/* ----- AvatarStatus ----- */\n\nexport type AvatarStatusType = 'online' | 'offline' | 'busy' | 'away';\n\nexport interface AvatarStatusProps\n extends React.HTMLAttributes<HTMLSpanElement> {\n status: AvatarStatusType;\n}\n\nconst STATUS_COLORS: Record<AvatarStatusType, string> = {\n online: 'bg-success-500',\n offline: 'bg-neutral-400',\n busy: 'bg-error-500',\n away: 'bg-warning-500',\n};\n\nconst STATUS_LABELS: Record<AvatarStatusType, string> = {\n online: 'Online',\n offline: 'Offline',\n busy: 'Busy',\n away: 'Away',\n};\n\nconst STATUS_SIZES: Record<string, string> = {\n sm: 'h-2.5 w-2.5',\n md: 'h-3 w-3',\n lg: 'h-3.5 w-3.5',\n};\n\nexport const AvatarStatus = React.forwardRef<\n HTMLSpanElement,\n AvatarStatusProps\n>(({ status, className, ...props }, ref) => {\n const { size, shape } = useAvatarContext();\n\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-label={props['aria-label'] ?? STATUS_LABELS[status]}\n className={cn(\n 'absolute bottom-0 right-0 rounded-full ring-2 ring-[var(--color-surface)]',\n STATUS_COLORS[status],\n STATUS_SIZES[size],\n shape === 'circle' && 'translate-x-[10%] translate-y-[10%]',\n className,\n )}\n {...props}\n />\n );\n});\nAvatarStatus.displayName = 'AvatarStatus';\n","/** Deterministic hash of a string to a bounded non-negative integer (DJB2). */\nexport function stringToIndex(str: string, buckets: number): number {\n let hash = 5381;\n for (let i = 0; i < str.length; i++) {\n hash = ((hash << 5) + hash + str.charCodeAt(i)) | 0;\n }\n return Math.abs(hash) % buckets;\n}\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\nimport { Avatar, AvatarFallback } from '@/components/avatar';\n\nconst SPACING: Record<string, string> = {\n sm: '-space-x-2',\n md: '-space-x-3',\n lg: '-space-x-3',\n};\n\nexport interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Maximum avatars to show before \"+N\" overflow. Default: 3 */\n max?: number;\n /** Size passed to overflow indicator. Default: 'md' */\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const AvatarGroup = React.forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ className, max = 3, size = 'md', children, ...props }, ref) => {\n const items = React.Children.toArray(children);\n const visible = items.slice(0, max);\n const overflow = items.length - max;\n\n return (\n <div\n ref={ref}\n role=\"group\"\n className={cn(\n 'flex items-center',\n SPACING[size],\n className,\n )}\n {...props}\n >\n {visible.map((child, i) => (\n <span\n key={i}\n className=\"relative ring-2 ring-[var(--color-surface)] rounded-full\"\n style={{ zIndex: visible.length - i }}\n >\n {child}\n </span>\n ))}\n {overflow > 0 && (\n <span\n className=\"relative ring-2 ring-[var(--color-surface)] rounded-full\"\n style={{ zIndex: 0 }}\n >\n <Avatar size={size}>\n <AvatarFallback>+{overflow}</AvatarFallback>\n </Avatar>\n </span>\n )}\n </div>\n );\n },\n);\nAvatarGroup.displayName = 'AvatarGroup';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\nexport interface SeparatorProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical';\n decorative?: boolean;\n}\n\nexport const Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(\n (\n { className, orientation = 'horizontal', decorative = false, ...props },\n ref,\n ) => (\n <div\n ref={ref}\n role={decorative ? 'none' : 'separator'}\n aria-orientation={decorative ? undefined : orientation}\n className={cn(\n 'shrink-0 bg-[var(--color-border)]',\n orientation === 'horizontal' ? 'h-px w-full' : 'w-px self-stretch',\n className,\n )}\n {...props}\n />\n ),\n);\nSeparator.displayName = 'Separator';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={cn('animate-pulse rounded-md bg-[var(--color-skeleton)]', className)}\n {...props}\n />\n ),\n);\nSkeleton.displayName = 'Skeleton';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const spinnerVariants = cva('', {\n variants: {\n size: {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-8 w-8',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof spinnerVariants> {}\n\nconst BARS = 8;\n\nexport const Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size, ...props }, ref) => (\n <div ref={ref} role=\"status\" aria-label=\"Loading\" {...props}>\n <svg\n className={cn(spinnerVariants({ size }), className)}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n >\n {Array.from({ length: BARS }, (_, i) => (\n <rect\n key={i}\n x=\"11\"\n y=\"2\"\n width=\"2\"\n height=\"6\"\n rx=\"1\"\n opacity={1 - i * (0.85 / BARS)}\n transform={`rotate(${i * (360 / BARS)} 12 12)`}\n style={{\n animation: 'spinner-fade 0.8s ease-in-out infinite',\n animationDelay: `${-i * 0.1}s`,\n }}\n />\n ))}\n </svg>\n <span className=\"sr-only\">Loading...</span>\n </div>\n ),\n);\nSpinner.displayName = 'Spinner';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\nexport const Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'rounded-xl border border-[var(--color-border)] bg-[var(--color-surface-raised)] shadow-sm',\n className,\n )}\n {...props}\n />\n));\nCard.displayName = 'Card';\n\nexport const CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col gap-1.5 p-6', className)}\n {...props}\n />\n));\nCardHeader.displayName = 'CardHeader';\n\nexport const CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn('text-base sm:text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n));\nCardTitle.displayName = 'CardTitle';\n\nexport const CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-sm text-[var(--color-on-surface-muted)]', className)}\n {...props}\n />\n));\nCardDescription.displayName = 'CardDescription';\n\nexport const CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n));\nCardContent.displayName = 'CardContent';\n\nexport const CardFooter = React.forwardRef<\n HTMLDivElement,\n 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));\nCardFooter.displayName = 'CardFooter';\n","import * as React from 'react';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport { cn } from '@/lib/cn';\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\nexport const Tooltip = TooltipPrimitive.Root;\nexport const TooltipTrigger = TooltipPrimitive.Trigger;\n\nexport const TooltipContent = React.forwardRef<\n React.ComponentRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-tooltip overflow-hidden rounded-md bg-[var(--color-tooltip-bg)] px-3 py-1.5 text-xs text-[var(--color-tooltip-text)] shadow-md',\n 'animate-in fade-in-0 zoom-in-95 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 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n 'touch:hidden',\n className,\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n","import * as React from 'react';\nimport * as ToastPrimitive from '@radix-ui/react-toast';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nexport const ToastProvider = ToastPrimitive.Provider;\n\nexport const ToastViewport = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Viewport\n ref={ref}\n className={cn(\n 'fixed bottom-0 left-0 right-0 z-toast flex max-h-screen w-full flex-col-reverse gap-2 p-4 pb-[calc(1rem+var(--safe-area-bottom))] sm:left-auto sm:max-w-[420px]',\n className,\n )}\n {...props}\n />\n));\nToastViewport.displayName = 'ToastViewport';\n\nexport const toastVariants = cva(\n 'group pointer-events-auto relative flex w-full items-center justify-between gap-4 overflow-hidden rounded-lg border p-3 sm:p-4 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=open]:slide-in-from-bottom-full sm:data-[state=open]:slide-in-from-right-full data-[state=closed]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-bottom-full sm:data-[state=closed]:slide-out-to-right-full',\n {\n variants: {\n variant: {\n default: 'border-[var(--color-border)] bg-[var(--color-surface-raised)] text-[var(--color-on-surface)]',\n success: 'border-success-200 bg-success-50 text-success-900 dark:border-success-800 dark:bg-success-950 dark:text-success-200',\n error: 'border-error-200 bg-error-50 text-error-900 dark:border-error-800 dark:bg-error-950 dark:text-error-200',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport interface ToastProps\n extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Root>,\n VariantProps<typeof toastVariants> {}\n\nexport const Toast = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitive.Root>,\n ToastProps\n>(({ className, variant, ...props }, ref) => (\n <ToastPrimitive.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n));\nToast.displayName = 'Toast';\n\nexport const ToastAction = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Action\n ref={ref}\n className={cn(\n 'inline-flex h-8 shrink-0 items-center justify-center rounded-md border border-[var(--color-border)] bg-transparent px-3 text-xs font-medium transition-colors hover:bg-[var(--color-surface-muted)] focus:outline-none focus:ring-2 focus:ring-[var(--color-ring)] focus:ring-offset-2 ring-offset-[var(--color-ring-offset)] disabled:pointer-events-none disabled:opacity-50',\n className,\n )}\n {...props}\n />\n));\nToastAction.displayName = 'ToastAction';\n\nexport const ToastClose = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitive.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Close\n ref={ref}\n className={cn(\n 'absolute right-2 top-2 rounded-md p-1 text-[var(--color-on-surface-muted)] opacity-0 transition-opacity hover:text-[var(--color-on-surface)] focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100',\n className,\n )}\n toast-close=\"\"\n aria-label=\"Close\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n </ToastPrimitive.Close>\n));\nToastClose.displayName = 'ToastClose';\n\nexport const ToastTitle = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Title\n ref={ref}\n className={cn('text-sm font-semibold', className)}\n {...props}\n />\n));\nToastTitle.displayName = 'ToastTitle';\n\nexport const ToastDescription = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Description\n ref={ref}\n className={cn('text-sm opacity-90', className)}\n {...props}\n />\n));\nToastDescription.displayName = 'ToastDescription';\n\nexport type ToastActionElement = React.ReactElement<typeof ToastAction>;\n","import * as React from 'react';\nimport type { ToastActionElement } from './toast';\n\nconst TOAST_LIMIT = 5;\nconst TOAST_REMOVE_DELAY = 1_000;\n\ntype ToastInput = {\n title?: string;\n description?: string;\n action?: ToastActionElement;\n variant?: 'default' | 'success' | 'error';\n duration?: number;\n};\n\ntype ToasterToast = ToastInput & {\n id: string;\n open: boolean;\n};\n\ntype Action =\n | { type: 'ADD_TOAST'; toast: ToasterToast }\n | { type: 'UPDATE_TOAST'; toast: Partial<ToasterToast> & { id: string } }\n | { type: 'DISMISS_TOAST'; toastId?: string }\n | { type: 'REMOVE_TOAST'; toastId?: string };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nlet count = 0;\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nfunction addToRemoveQueue(toastId: string) {\n if (toastTimeouts.has(toastId)) return;\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({ type: 'REMOVE_TOAST', toastId });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n}\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'ADD_TOAST':\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case 'UPDATE_TOAST':\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case 'DISMISS_TOAST': {\n const { toastId } = action;\n\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((t) => addToRemoveQueue(t.id));\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? { ...t, open: false }\n : t,\n ),\n };\n }\n\n case 'REMOVE_TOAST':\n if (action.toastId === undefined) {\n return { ...state, toasts: [] };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n}\n\nconst listeners: Array<(state: State) => void> = [];\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => listener(memoryState));\n}\n\nexport function toast(props: ToastInput) {\n const id = genId();\n\n const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id });\n\n dispatch({\n type: 'ADD_TOAST',\n toast: { ...props, id, open: true },\n });\n\n return { id, dismiss };\n}\n\nexport function useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) listeners.splice(index, 1);\n };\n }, []);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) =>\n dispatch({ type: 'DISMISS_TOAST', toastId }),\n };\n}\n","import {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from './toast';\nimport { useToast } from './use-toast';\n\nexport function Toaster() {\n const { toasts, dismiss } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(({ id, title, description, action, open, ...props }) => (\n <Toast\n key={id}\n open={open}\n onOpenChange={(isOpen) => {\n if (!isOpen) dismiss(id);\n }}\n {...props}\n >\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && <ToastDescription>{description}</ToastDescription>}\n </div>\n {action}\n <ToastClose />\n </Toast>\n ))}\n <ToastViewport />\n </ToastProvider>\n );\n}\n","import * as React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cn } from '@/lib/cn';\n\nexport interface LabelProps\n extends React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> {\n required?: boolean;\n}\n\nexport const Label = React.forwardRef<\n React.ComponentRef<typeof LabelPrimitive.Root>,\n LabelProps\n>(({ className, required, children, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(\n 'text-sm font-medium text-[var(--color-on-surface)] peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n className,\n )}\n {...props}\n >\n {children}\n {required && (\n <span aria-hidden=\"true\" className=\"ml-0.5 text-error-500\">\n *\n </span>\n )}\n </LabelPrimitive.Root>\n));\nLabel.displayName = 'Label';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const inputVariants = cva(\n 'flex w-full rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] px-3 text-[var(--color-on-surface)] transition-colors duration-fast file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-[var(--color-on-surface-muted)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 ring-offset-[var(--color-ring-offset)] disabled:cursor-not-allowed disabled:opacity-50 aria-[invalid=true]:border-error-500 aria-[invalid=true]:focus-visible:ring-error-500 touch:min-h-[--touch-target-min]',\n {\n variants: {\n size: {\n sm: 'h-8 text-xs',\n md: 'h-9 text-sm',\n lg: 'h-10 text-base',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof inputVariants> {}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, size, type, ...props }, ref) => (\n <input\n ref={ref}\n type={type}\n className={cn(inputVariants({ size }), className)}\n {...props}\n />\n ),\n);\nInput.displayName = 'Input';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const textareaVariants = cva(\n 'flex w-full resize-y rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] px-3 py-2 text-[var(--color-on-surface)] transition-colors duration-fast placeholder:text-[var(--color-on-surface-muted)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 ring-offset-[var(--color-ring-offset)] disabled:cursor-not-allowed disabled:opacity-50 aria-[invalid=true]:border-error-500 aria-[invalid=true]:focus-visible:ring-error-500',\n {\n variants: {\n size: {\n sm: 'min-h-[60px] text-xs',\n md: 'min-h-[80px] text-sm',\n lg: 'min-h-[100px] text-base',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport interface TextareaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>,\n VariantProps<typeof textareaVariants> {}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, size, ...props }, ref) => (\n <textarea\n ref={ref}\n className={cn(textareaVariants({ size }), className)}\n {...props}\n />\n ),\n);\nTextarea.displayName = 'Textarea';\n","import * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check, Minus } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nexport interface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {}\n\nexport const Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'peer h-4 w-4 shrink-0 rounded-sm border border-[var(--color-border-input)] transition-colors duration-fast',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 ring-offset-[var(--color-ring-offset)]',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:border-primary-400 data-[state=checked]:bg-primary-400 data-[state=checked]:text-white',\n 'data-[state=indeterminate]:border-primary-400 data-[state=indeterminate]:bg-primary-400 data-[state=indeterminate]:text-white',\n 'touch:min-h-[--touch-target-min] touch:min-w-[--touch-target-min]',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center\">\n {props.checked === 'indeterminate' ? (\n <Minus className=\"h-3 w-3\" strokeWidth={3} />\n ) : (\n <Check className=\"h-3 w-3\" strokeWidth={3} />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = 'Checkbox';\n","import * as React from 'react';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { cn } from '@/lib/cn';\n\nexport interface RadioGroupProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {}\n\nexport const RadioGroup = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(({ className, ...props }, ref) => (\n <RadioGroupPrimitive.Root\n ref={ref}\n className={cn('flex flex-col gap-2', className)}\n {...props}\n />\n));\nRadioGroup.displayName = 'RadioGroup';\n\nexport interface RadioGroupItemProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> {}\n\nexport const RadioGroupItem = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(({ className, ...props }, ref) => (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'aspect-square h-4 w-4 rounded-full border border-[var(--color-border-input)] transition-colors duration-fast',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 ring-offset-[var(--color-ring-offset)]',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:border-primary-400',\n 'touch:min-h-[--touch-target-min] touch:min-w-[--touch-target-min]',\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <svg\n width=\"8\"\n height=\"8\"\n viewBox=\"0 0 8 8\"\n fill=\"currentColor\"\n className=\"text-primary-500\"\n >\n <circle cx=\"4\" cy=\"4\" r=\"4\" />\n </svg>\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n));\nRadioGroupItem.displayName = 'RadioGroupItem';\n","import * as React from 'react';\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const switchVariants = cva(\n 'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors duration-fast focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 ring-offset-[var(--color-ring-offset)] disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary-500 data-[state=unchecked]:bg-neutral-300 dark:data-[state=unchecked]:bg-neutral-600 touch:min-h-[--touch-target-min]',\n {\n variants: {\n size: {\n sm: 'h-4 w-7',\n md: 'h-5 w-9',\n lg: 'h-6 w-11',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nconst thumbVariants = cva(\n 'pointer-events-none block rounded-full bg-white shadow-sm transition-transform duration-fast',\n {\n variants: {\n size: {\n sm: 'h-3 w-3 data-[state=checked]:translate-x-3 data-[state=unchecked]:translate-x-0',\n md: 'h-4 w-4 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',\n lg: 'h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport interface SwitchProps\n extends React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>,\n VariantProps<typeof switchVariants> {}\n\nexport const Switch = React.forwardRef<\n React.ComponentRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(({ className, size, ...props }, ref) => (\n <SwitchPrimitive.Root\n ref={ref}\n className={cn(switchVariants({ size }), className)}\n {...props}\n >\n <SwitchPrimitive.Thumb className={thumbVariants({ size })} />\n </SwitchPrimitive.Root>\n));\nSwitch.displayName = 'Switch';\n","import * as React from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nexport const Select = SelectPrimitive.Root;\nexport const SelectGroup = SelectPrimitive.Group;\nexport const SelectValue = SelectPrimitive.Value;\n\nexport const SelectTrigger = React.forwardRef<\n React.ComponentRef<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-9 w-full items-center justify-between rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] px-3 text-sm text-[var(--color-on-surface)] transition-colors duration-fast',\n 'placeholder:text-[var(--color-on-surface-muted)]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2 ring-offset-[var(--color-ring-offset)]',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'aria-[invalid=true]:border-error-500 aria-[invalid=true]:focus-visible:ring-error-500',\n 'touch:min-h-[--touch-target-min]',\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = 'SelectTrigger';\n\nexport const SelectContent = React.forwardRef<\n React.ComponentRef<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-popover max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-[var(--color-border)] bg-[var(--color-surface-raised)] 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 data-[side=top]:slide-in-from-bottom-2',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1',\n className,\n )}\n position={position}\n {...props}\n >\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 </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = 'SelectContent';\n\nexport const SelectItem = React.forwardRef<\n React.ComponentRef<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-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none',\n 'focus:bg-[var(--color-surface-muted)]',\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 <Check className=\"h-3.5 w-3.5\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = 'SelectItem';\n\nexport const SelectLabel = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn('px-2 py-1.5 text-xs font-medium text-[var(--color-on-surface-muted)]', className)}\n {...props}\n />\n));\nSelectLabel.displayName = 'SelectLabel';\n\nexport const SelectSeparator = React.forwardRef<\n React.ComponentRef<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-[var(--color-border)]', className)}\n {...props}\n />\n));\nSelectSeparator.displayName = 'SelectSeparator';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { ChevronUp, ChevronDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nconst numberInputVariants = cva(\n 'flex w-full rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] text-[var(--color-on-surface)] transition-colors duration-fast focus-within:ring-2 focus-within:ring-[var(--color-ring)] focus-within:ring-offset-2 ring-offset-[var(--color-ring-offset)] aria-[invalid=true]:border-error-500 aria-[invalid=true]:focus-within:ring-error-500',\n {\n variants: {\n size: {\n sm: 'h-8 text-xs',\n md: 'h-9 text-sm',\n lg: 'h-10 text-base',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport interface NumberInputProps\n extends VariantProps<typeof numberInputVariants> {\n value?: number;\n defaultValue?: number;\n onChange?: (value: number | undefined) => void;\n min?: number;\n max?: number;\n step?: number;\n precision?: number;\n disabled?: boolean;\n readOnly?: boolean;\n name?: string;\n id?: string;\n placeholder?: string;\n className?: string;\n 'aria-invalid'?: boolean | 'true' | 'false';\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n required?: boolean;\n}\n\nexport const NumberInput = React.forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n className,\n size,\n value: controlledValue,\n defaultValue,\n onChange,\n min,\n max,\n step = 1,\n precision,\n disabled,\n readOnly,\n ...props\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState<string>(\n defaultValue != null ? formatValue(defaultValue, precision) : '',\n );\n\n const isControlled = controlledValue !== undefined;\n const displayValue = isControlled\n ? controlledValue != null\n ? formatValue(controlledValue, precision)\n : ''\n : internalValue;\n\n function formatValue(val: number, prec?: number): string {\n return prec != null ? val.toFixed(prec) : String(val);\n }\n\n function clamp(val: number): number {\n let result = val;\n if (min != null) result = Math.max(min, result);\n if (max != null) result = Math.min(max, result);\n return result;\n }\n\n function updateValue(newValue: number | undefined) {\n if (newValue != null) {\n const clamped = clamp(newValue);\n if (!isControlled) {\n setInternalValue(formatValue(clamped, precision));\n }\n onChange?.(clamped);\n } else {\n if (!isControlled) {\n setInternalValue('');\n }\n onChange?.(undefined);\n }\n }\n\n function handleInputChange(e: React.ChangeEvent<HTMLInputElement>) {\n const raw = e.target.value;\n if (!isControlled) {\n setInternalValue(raw);\n }\n if (raw === '' || raw === '-') {\n onChange?.(undefined);\n return;\n }\n const num = parseFloat(raw);\n if (!isNaN(num)) {\n onChange?.(num);\n }\n }\n\n function handleBlur() {\n const num = parseFloat(displayValue);\n if (!isNaN(num)) {\n updateValue(num);\n } else {\n updateValue(undefined);\n }\n }\n\n function increment() {\n const current = parseFloat(displayValue) || 0;\n updateValue(current + step);\n }\n\n function decrement() {\n const current = parseFloat(displayValue) || 0;\n updateValue(current - step);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n increment();\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n decrement();\n }\n }\n\n return (\n <div\n className={cn(\n numberInputVariants({ size }),\n (disabled || readOnly) && 'opacity-50 cursor-not-allowed',\n className,\n )}\n aria-invalid={props['aria-invalid']}\n >\n <input\n ref={ref}\n type=\"text\"\n inputMode=\"numeric\"\n value={displayValue}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n readOnly={readOnly}\n className=\"h-full w-full bg-transparent px-3 outline-none disabled:cursor-not-allowed\"\n {...props}\n />\n {!readOnly && !disabled && (\n <div className=\"flex flex-col border-l border-[var(--color-border-input)]\">\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={increment}\n disabled={max != null && parseFloat(displayValue) >= max}\n className=\"flex flex-1 items-center justify-center px-1.5 text-[var(--color-on-surface-muted)] hover:bg-[var(--color-surface-muted)] disabled:opacity-30\"\n aria-label=\"Increment\"\n >\n <ChevronUp className=\"h-2.5 w-2.5\" strokeWidth={2.5} />\n </button>\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={decrement}\n disabled={min != null && parseFloat(displayValue) <= min}\n className=\"flex flex-1 items-center justify-center border-t border-[var(--color-border-input)] px-1.5 text-[var(--color-on-surface-muted)] hover:bg-[var(--color-surface-muted)] disabled:opacity-30\"\n aria-label=\"Decrement\"\n >\n <ChevronDown className=\"h-2.5 w-2.5\" strokeWidth={2.5} />\n </button>\n </div>\n )}\n </div>\n );\n },\n);\nNumberInput.displayName = 'NumberInput';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\nimport { inputVariants, type InputProps } from '@/components/input/input';\n\nexport interface DatePickerProps extends InputProps {}\n\nexport const DatePicker = React.forwardRef<HTMLInputElement, DatePickerProps>(\n ({ className, size, ...props }, ref) => (\n <input\n ref={ref}\n type=\"date\"\n className={cn(\n inputVariants({ size }),\n '[&::-webkit-calendar-picker-indicator]:cursor-pointer',\n className,\n )}\n {...props}\n />\n ),\n);\nDatePicker.displayName = 'DatePicker';\n","import * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Command } from 'cmdk';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface ComboboxProps {\n options: ComboboxOption[];\n value?: string;\n onValueChange?: (value: string) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n emptyMessage?: string;\n disabled?: boolean;\n className?: string;\n 'aria-invalid'?: boolean | 'true' | 'false';\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n id?: string;\n name?: string;\n required?: boolean;\n}\n\nexport const Combobox = React.forwardRef<HTMLButtonElement, ComboboxProps>(\n (\n {\n options,\n value,\n onValueChange,\n placeholder = '選択してください',\n searchPlaceholder = '検索...',\n emptyMessage = '見つかりませんでした',\n disabled,\n className,\n ...props\n },\n ref,\n ) => {\n const [open, setOpen] = React.useState(false);\n const [search, setSearch] = React.useState('');\n\n const selectedOption = options.find((o) => o.value === value);\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger\n ref={ref}\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n className={cn(\n 'flex h-9 w-full items-center justify-between rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] px-3 text-sm text-[var(--color-on-surface)] transition-colors duration-fast',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'aria-[invalid=true]:border-error-500 aria-[invalid=true]:focus-visible:ring-error-500',\n 'touch:min-h-[--touch-target-min]',\n className,\n )}\n {...props}\n >\n <span className={cn(!selectedOption && 'text-[var(--color-on-surface-muted)]')}>\n {selectedOption?.label ?? placeholder}\n </span>\n <ChevronsUpDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n className=\"z-popover w-[var(--radix-popover-trigger-width)] rounded-md border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-0 shadow-md animate-in fade-in-0 zoom-in-95\"\n sideOffset={4}\n align=\"start\"\n >\n <Command shouldFilter>\n <Command.Input\n value={search}\n onValueChange={setSearch}\n placeholder={searchPlaceholder}\n className=\"flex h-9 w-full border-b border-[var(--color-border)] bg-transparent px-3 text-sm outline-none placeholder:text-[var(--color-on-surface-muted)]\"\n />\n <Command.List className=\"max-h-60 overflow-auto p-1\">\n <Command.Empty className=\"px-2 py-6 text-center text-sm text-[var(--color-on-surface-muted)]\">\n {emptyMessage}\n </Command.Empty>\n {options.map((option) => (\n <Command.Item\n key={option.value}\n value={option.label}\n disabled={option.disabled}\n onSelect={() => {\n onValueChange?.(\n option.value === value ? '' : option.value,\n );\n setOpen(false);\n setSearch('');\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 'data-[selected=true]:bg-[var(--color-surface-muted)]',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50',\n )}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n {option.value === value && (\n <Check className=\"h-3.5 w-3.5\" />\n )}\n </span>\n {option.label}\n </Command.Item>\n ))}\n </Command.List>\n </Command>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n );\n },\n);\nCombobox.displayName = 'Combobox';\n","import * as React from 'react';\nimport { createContext } from '@/lib/create-context';\nimport { cn } from '@/lib/cn';\nimport { Label, type LabelProps } from '@/components/label/label';\n\ninterface FormFieldContextValue {\n id: string;\n error?: string;\n required?: boolean;\n disabled?: boolean;\n descriptionId: string;\n messageId: string;\n}\n\nconst [FormFieldProvider, useFormField] = createContext<FormFieldContextValue>('FormField');\n\nexport { useFormField };\n\nexport interface FormFieldProps extends React.HTMLAttributes<HTMLDivElement> {\n error?: string;\n required?: boolean;\n disabled?: boolean;\n}\n\nexport const FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\n ({ className, error, required, disabled, children, ...props }, ref) => {\n const id = React.useId();\n const descriptionId = `${id}-description`;\n const messageId = `${id}-message`;\n\n return (\n <FormFieldProvider\n value={{ id, error, required, disabled, descriptionId, messageId }}\n >\n <div ref={ref} className={cn('space-y-1.5', className)} {...props}>\n {children}\n </div>\n </FormFieldProvider>\n );\n },\n);\nFormField.displayName = 'FormField';\n\nexport interface FormLabelProps extends LabelProps {}\n\nexport const FormLabel = React.forwardRef<HTMLLabelElement, FormLabelProps>(\n ({ className, children, ...props }, ref) => {\n const { id, error, required } = useFormField();\n\n return (\n <Label\n ref={ref}\n htmlFor={id}\n required={required}\n className={cn(error && 'text-error-600', className)}\n {...props}\n >\n {children}\n </Label>\n );\n },\n);\nFormLabel.displayName = 'FormLabel';\n\nexport interface FormControlProps {\n children: React.ReactElement;\n}\n\nexport function FormControl({ children }: FormControlProps) {\n const { id, error, disabled, descriptionId, messageId } = useFormField();\n\n const describedBy = [\n !error ? descriptionId : undefined,\n error ? messageId : undefined,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return React.cloneElement(children, {\n id,\n 'aria-invalid': error ? true : undefined,\n 'aria-describedby': describedBy,\n disabled: children.props.disabled ?? disabled,\n required: children.props.required,\n });\n}\nFormControl.displayName = 'FormControl';\n\nexport interface FormDescriptionProps\n extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nexport const FormDescription = React.forwardRef<\n HTMLParagraphElement,\n FormDescriptionProps\n>(({ className, ...props }, ref) => {\n const { descriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={descriptionId}\n className={cn('text-xs text-[var(--color-on-surface-muted)]', className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = 'FormDescription';\n\nexport interface FormMessageProps\n extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nexport const FormMessage = React.forwardRef<\n HTMLParagraphElement,\n FormMessageProps\n>(({ className, children, ...props }, ref) => {\n const { error, messageId } = useFormField();\n const message = error || children;\n\n if (!message) return null;\n\n return (\n <p\n ref={ref}\n id={messageId}\n role=\"alert\"\n className={cn('text-xs text-error-600', className)}\n {...props}\n >\n {message}\n </p>\n );\n});\nFormMessage.displayName = 'FormMessage';\n","import * as React from 'react';\nimport { Input } from '@/components/input/input';\nimport { Textarea } from '@/components/textarea/textarea';\nimport { Checkbox } from '@/components/checkbox/checkbox';\nimport { RadioGroup, RadioGroupItem } from '@/components/radio-group/radio-group';\nimport { Switch } from '@/components/switch/switch';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/select/select';\nimport { NumberInput } from '@/components/number-input/number-input';\nimport { DatePicker } from '@/components/date-picker/date-picker';\nimport { Combobox } from '@/components/combobox/combobox';\nimport { Label } from '@/components/label/label';\nimport {\n FormField,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n} from '@/components/form-field/form-field';\n\nexport type FieldType =\n | 'text'\n | 'number'\n | 'email'\n | 'url'\n | 'tel'\n | 'password'\n | 'textarea'\n | 'select'\n | 'combobox'\n | 'checkbox'\n | 'radio'\n | 'switch'\n | 'date'\n | 'datetime'\n | 'time'\n | 'file';\n\nexport interface FieldOption {\n value: string;\n label: string;\n}\n\nexport interface DynamicFormFieldProps {\n type: FieldType;\n name: string;\n label: string;\n description?: string;\n error?: string;\n required?: boolean;\n disabled?: boolean;\n placeholder?: string;\n value?: unknown;\n onChange?: (value: unknown) => void;\n options?: FieldOption[];\n min?: number | string;\n max?: number | string;\n step?: number;\n rows?: number;\n className?: string;\n}\n\nexport function getFieldComponent(type: FieldType): string {\n const map: Record<FieldType, string> = {\n text: 'Input',\n email: 'Input',\n url: 'Input',\n tel: 'Input',\n password: 'Input',\n number: 'NumberInput',\n textarea: 'Textarea',\n select: 'Select',\n combobox: 'Combobox',\n checkbox: 'Checkbox',\n radio: 'RadioGroup',\n switch: 'Switch',\n date: 'DatePicker',\n datetime: 'Input',\n time: 'Input',\n file: 'Input',\n };\n return map[type];\n}\n\nfunction isInlineField(type: FieldType): boolean {\n return type === 'checkbox' || type === 'switch';\n}\n\nexport const DynamicFormField = React.forwardRef<\n HTMLDivElement,\n DynamicFormFieldProps\n>(\n (\n {\n type,\n name,\n label,\n description,\n error,\n required,\n disabled,\n placeholder,\n value,\n onChange,\n options = [],\n min,\n max,\n step,\n rows,\n className,\n },\n ref,\n ) => {\n if (isInlineField(type)) {\n return (\n <FormField ref={ref} error={error} disabled={disabled} className={className}>\n <div className=\"flex items-center gap-2\">\n <FormControl>\n {type === 'checkbox' ? (\n <Checkbox\n name={name}\n checked={value as boolean | undefined}\n onCheckedChange={(checked) => onChange?.(checked)}\n />\n ) : (\n <Switch\n name={name}\n checked={value as boolean | undefined}\n onCheckedChange={(checked) => onChange?.(checked)}\n />\n )}\n </FormControl>\n <Label className=\"text-sm font-normal\">\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"ml-0.5 text-error-500\">\n *\n </span>\n )}\n </Label>\n </div>\n {description && <FormDescription>{description}</FormDescription>}\n <FormMessage />\n </FormField>\n );\n }\n\n function renderControl() {\n switch (type) {\n case 'textarea':\n return (\n <Textarea\n name={name}\n placeholder={placeholder}\n value={value as string | undefined}\n onChange={(e) => onChange?.(e.target.value)}\n rows={rows}\n />\n );\n case 'number':\n return (\n <NumberInput\n name={name}\n placeholder={placeholder}\n value={value as number | undefined}\n onChange={(v) => onChange?.(v)}\n min={min as number | undefined}\n max={max as number | undefined}\n step={step}\n />\n );\n case 'date':\n return (\n <DatePicker\n name={name}\n value={value as string | undefined}\n onChange={(e) => onChange?.(e.target.value)}\n min={min as string | undefined}\n max={max as string | undefined}\n />\n );\n case 'select':\n return (\n <Select\n value={value as string | undefined}\n onValueChange={(v) => onChange?.(v)}\n disabled={disabled}\n name={name}\n >\n <SelectTrigger>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n case 'combobox':\n return (\n <Combobox\n name={name}\n options={options}\n value={value as string | undefined}\n onValueChange={(v) => onChange?.(v)}\n placeholder={placeholder}\n />\n );\n case 'radio':\n return (\n <RadioGroup\n value={value as string | undefined}\n onValueChange={(v) => onChange?.(v)}\n >\n {options.map((opt) => (\n <div key={opt.value} className=\"flex items-center gap-2\">\n <RadioGroupItem value={opt.value} id={`${name}-${opt.value}`} />\n <Label htmlFor={`${name}-${opt.value}`} className=\"font-normal\">\n {opt.label}\n </Label>\n </div>\n ))}\n </RadioGroup>\n );\n default:\n return (\n <Input\n type={type === 'datetime' ? 'datetime-local' : type}\n name={name}\n placeholder={placeholder}\n value={value as string | undefined}\n onChange={(e) => onChange?.(e.target.value)}\n />\n );\n }\n }\n\n return (\n <FormField ref={ref} error={error} required={required} disabled={disabled} className={className}>\n <FormLabel>{label}</FormLabel>\n <FormControl>{renderControl()}</FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n <FormMessage />\n </FormField>\n );\n },\n);\nDynamicFormField.displayName = 'DynamicFormField';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const formLayoutVariants = cva('', {\n variants: {\n layout: {\n vertical: 'flex flex-col',\n horizontal: 'grid grid-cols-[auto_1fr] items-start',\n grid: 'grid',\n },\n size: {\n sm: 'gap-3',\n md: 'gap-4',\n lg: 'gap-6',\n },\n },\n compoundVariants: [\n {\n layout: 'horizontal',\n size: 'sm',\n className: 'gap-x-4 gap-y-3',\n },\n {\n layout: 'horizontal',\n size: 'md',\n className: 'gap-x-6 gap-y-4',\n },\n {\n layout: 'horizontal',\n size: 'lg',\n className: 'gap-x-8 gap-y-6',\n },\n ],\n defaultVariants: {\n layout: 'vertical',\n size: 'md',\n },\n});\n\nexport interface FormLayoutProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof formLayoutVariants> {\n columns?: number | 'responsive';\n}\n\nexport const FormLayout = React.forwardRef<HTMLDivElement, FormLayoutProps>(\n ({ className, layout, size, columns = 2, style, ...props }, ref) => {\n const isResponsive = columns === 'responsive';\n return (\n <div\n ref={ref}\n className={cn(\n formLayoutVariants({ layout, size }),\n isResponsive && layout === 'grid' && 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3',\n className,\n )}\n style={\n layout === 'grid' && !isResponsive\n ? { gridTemplateColumns: `repeat(${columns}, 1fr)`, ...style }\n : style\n }\n {...props}\n />\n );\n },\n);\nFormLayout.displayName = 'FormLayout';\n\nexport interface FormSectionProps\n extends React.HTMLAttributes<HTMLFieldSetElement> {\n title: string;\n description?: string;\n}\n\nexport const FormSection = React.forwardRef<\n HTMLFieldSetElement,\n FormSectionProps\n>(({ className, title, description, children, ...props }, ref) => (\n <fieldset\n ref={ref}\n className={cn('space-y-4 border-0 p-0', className)}\n {...props}\n >\n <legend className=\"text-sm font-semibold text-[var(--color-on-surface)]\">{title}</legend>\n {description && (\n <p className=\"-mt-2 text-xs text-[var(--color-on-surface-muted)]\">{description}</p>\n )}\n {children}\n </fieldset>\n));\nFormSection.displayName = 'FormSection';\n\nexport interface FormActionsProps\n extends React.HTMLAttributes<HTMLDivElement> {\n align?: 'left' | 'right' | 'center' | 'between';\n}\n\nconst alignClasses: Record<string, string> = {\n left: 'justify-start',\n right: 'justify-end',\n center: 'justify-center',\n between: 'justify-between',\n};\n\nexport const FormActions = React.forwardRef<HTMLDivElement, FormActionsProps>(\n ({ className, align = 'right', ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex items-center gap-3 pt-4 border-t border-[var(--color-border)]',\n alignClasses[align],\n className,\n )}\n {...props}\n />\n ),\n);\nFormActions.displayName = 'FormActions';\n","import * as React from 'react';\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\nexport const progressVariants = cva(\n 'relative w-full overflow-hidden rounded-full bg-[var(--color-surface-muted)]',\n {\n variants: {\n variant: {\n default: '',\n success: '',\n warning: '',\n error: '',\n info: '',\n },\n size: {\n sm: 'h-1.5',\n md: 'h-2.5',\n lg: 'h-4',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n },\n);\n\nconst progressIndicatorVariants = cva(\n 'h-full rounded-full transition-[width] duration-normal ease-default',\n {\n variants: {\n variant: {\n default: 'bg-primary-500',\n success: 'bg-success-500',\n warning: 'bg-warning-500',\n error: 'bg-error-500',\n info: 'bg-info-500',\n },\n indeterminate: {\n true: 'w-1/3 animate-[progress-indeterminate_2s_ease-in-out_infinite]',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n indeterminate: false,\n },\n },\n);\n\nconst floatingBubbleVariants: Record<\n NonNullable<VariantProps<typeof progressVariants>['variant']>,\n string\n> = {\n default: 'bg-primary-600 dark:bg-primary-400',\n success: 'bg-success-600 dark:bg-success-400',\n warning: 'bg-warning-600 dark:bg-warning-400',\n error: 'bg-error-600 dark:bg-error-400',\n info: 'bg-info-600 dark:bg-info-400',\n};\n\nconst floatingArrowVariants: Record<\n NonNullable<VariantProps<typeof progressVariants>['variant']>,\n string\n> = {\n default: 'border-t-primary-600 dark:border-t-primary-400',\n success: 'border-t-success-600 dark:border-t-success-400',\n warning: 'border-t-warning-600 dark:border-t-warning-400',\n error: 'border-t-error-600 dark:border-t-error-400',\n info: 'border-t-info-600 dark:border-t-info-400',\n};\n\nconst markerVariants: Record<\n NonNullable<VariantProps<typeof progressVariants>['variant']>,\n string\n> = {\n default: 'border-primary-500',\n success: 'border-success-500',\n warning: 'border-warning-500',\n error: 'border-error-500',\n info: 'border-info-500',\n};\n\nexport interface ProgressProps\n extends React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>,\n VariantProps<typeof progressVariants> {\n showLabel?: boolean | ((value: number | null | undefined) => React.ReactNode);\n /** @default 'right' */\n labelPosition?: 'right' | 'top' | 'floating';\n /** Show a dot marker at the progress edge */\n showMarker?: boolean;\n}\n\nexport const Progress = React.forwardRef<\n React.ComponentRef<typeof ProgressPrimitive.Root>,\n ProgressProps\n>(\n (\n {\n className,\n variant,\n size,\n value,\n max = 100,\n showLabel,\n labelPosition = 'right',\n showMarker,\n ...props\n },\n ref,\n ) => {\n const isIndeterminate = value === null || value === undefined;\n const clampedValue = isIndeterminate\n ? null\n : Math.min(max, Math.max(0, value));\n const percent = isIndeterminate ? 0 : (clampedValue! / max) * 100;\n\n const resolvedVariant = variant ?? 'default';\n\n const labelContent = showLabel\n ? typeof showLabel === 'function'\n ? showLabel(clampedValue)\n : isIndeterminate\n ? null\n : `${Math.round(clampedValue!)}%`\n : null;\n\n const isFloating = labelPosition === 'floating' && labelContent && !isIndeterminate;\n const hasMarker = showMarker && !isIndeterminate;\n\n const bar = (\n <ProgressPrimitive.Root\n ref={ref}\n value={clampedValue}\n max={max}\n className={cn(progressVariants({ variant, size }), className)}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(\n progressIndicatorVariants({\n variant,\n indeterminate: isIndeterminate,\n }),\n )}\n style={isIndeterminate ? undefined : { width: `${percent}%` }}\n />\n </ProgressPrimitive.Root>\n );\n\n // Floating bubble or marker require a wrapper with relative positioning\n if (isFloating || hasMarker) {\n return (\n <div className=\"relative\">\n {/* Floating bubble label */}\n {isFloating && (\n <div\n className=\"absolute bottom-full mb-2 transition-[left] duration-normal ease-default\"\n style={{ left: `${percent}%` }}\n aria-hidden=\"true\"\n >\n <div className=\"relative -translate-x-1/2\">\n <span\n className={cn(\n 'block rounded-md px-2 py-0.5 text-xs font-semibold tabular-nums text-white whitespace-nowrap shadow-sm',\n floatingBubbleVariants[resolvedVariant],\n )}\n >\n {labelContent}\n </span>\n <div\n className={cn(\n 'mx-auto h-0 w-0 border-x-4 border-t-4 border-x-transparent',\n floatingArrowVariants[resolvedVariant],\n )}\n />\n </div>\n </div>\n )}\n {bar}\n {/* Dot marker at progress edge */}\n {hasMarker && (\n <div\n className=\"absolute top-1/2 -translate-y-1/2 transition-[left] duration-normal ease-default pointer-events-none\"\n style={{ left: `${percent}%` }}\n aria-hidden=\"true\"\n >\n <div\n className={cn(\n 'h-3.5 w-3.5 -translate-x-1/2 rounded-full border-2 bg-white shadow-sm dark:bg-[var(--color-surface-raised)]',\n markerVariants[resolvedVariant],\n )}\n />\n </div>\n )}\n </div>\n );\n }\n\n if (!labelContent) return bar;\n\n if (labelPosition === 'top') {\n return (\n <div className=\"flex flex-col gap-1.5\">\n <span className=\"text-sm font-medium text-[var(--color-on-surface-secondary)]\">\n {labelContent}\n </span>\n {bar}\n </div>\n );\n }\n\n // right (default)\n return (\n <div className=\"flex items-center gap-3\">\n <div className=\"flex-1\">{bar}</div>\n <span className=\"shrink-0 text-sm font-medium tabular-nums text-[var(--color-on-surface-secondary)]\">\n {labelContent}\n </span>\n </div>\n );\n },\n);\nProgress.displayName = 'Progress';\n","import * as React from 'react';\nimport { cva } from 'class-variance-authority';\nimport { Check, ChevronRight, ChevronDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\nimport { Spinner } from '@/components/spinner';\n\n/* --------------------------------------------------------\n Types\n -------------------------------------------------------- */\n\nexport type StepStatus = 'pending' | 'active' | 'completed' | 'error' | 'loading';\nexport type StepperConnector = 'line' | 'arrow' | 'chevron';\n\nexport interface StepItem {\n label: string;\n description?: string;\n icon?: React.ReactNode;\n status?: StepStatus;\n}\n\ntype StepperOrientation = 'horizontal' | 'vertical';\ntype StepperSize = 'sm' | 'md' | 'lg';\n\nexport interface StepperProps\n extends Omit<React.HTMLAttributes<HTMLOListElement>, 'children'> {\n steps: StepItem[];\n activeStep: number;\n orientation?: StepperOrientation;\n size?: StepperSize;\n connector?: StepperConnector;\n clickable?: boolean;\n onStepClick?: (index: number) => void;\n}\n\n/* --------------------------------------------------------\n CVA Variants\n -------------------------------------------------------- */\n\nexport const stepIndicatorVariants = cva(\n 'flex items-center justify-center rounded-full font-medium shrink-0 transition-colors duration-normal border-2',\n {\n variants: {\n status: {\n pending:\n 'border-[var(--color-border)] bg-[var(--color-surface)] text-[var(--color-on-surface-muted)]',\n active: 'border-primary-500 bg-primary-500 text-white',\n completed: 'border-primary-500 bg-primary-500 text-white',\n error: 'border-error-500 bg-error-500 text-white',\n loading: 'border-primary-500 bg-primary-500 text-white',\n },\n size: {\n sm: 'h-6 w-6 text-xs',\n md: 'h-8 w-8 text-sm',\n lg: 'h-10 w-10 text-base',\n },\n },\n defaultVariants: {\n status: 'pending',\n size: 'md',\n },\n },\n);\n\nconst spinnerSizeMap: Record<StepperSize, 'sm' | 'sm' | 'sm'> = {\n sm: 'sm',\n md: 'sm',\n lg: 'sm',\n};\n\nconst checkSizeMap: Record<StepperSize, number> = {\n sm: 12,\n md: 16,\n lg: 20,\n};\n\nconst chevronSizeMap: Record<StepperSize, number> = {\n sm: 14,\n md: 16,\n lg: 20,\n};\n\nconst indicatorHeight: Record<StepperSize, string> = {\n sm: 'h-6',\n md: 'h-8',\n lg: 'h-10',\n};\n\n/* --------------------------------------------------------\n Internal: StepIndicator\n -------------------------------------------------------- */\n\nfunction StepIndicatorContent({\n step,\n index,\n status,\n size,\n}: {\n step: StepItem;\n index: number;\n status: StepStatus;\n size: StepperSize;\n}) {\n if (step.icon && status !== 'completed' && status !== 'loading') {\n return <>{step.icon}</>;\n }\n if (status === 'loading') {\n return <Spinner size={spinnerSizeMap[size]} className=\"text-current\" />;\n }\n if (status === 'completed') {\n const s = checkSizeMap[size];\n return <Check size={s} strokeWidth={3} />;\n }\n return <>{index + 1}</>;\n}\n\n/* --------------------------------------------------------\n Internal: StepConnector\n -------------------------------------------------------- */\n\nfunction StepConnector({\n completed,\n orientation,\n connectorType,\n size,\n}: {\n completed: boolean;\n orientation: StepperOrientation;\n connectorType: StepperConnector;\n size: StepperSize;\n}) {\n const isH = orientation === 'horizontal';\n const lineColor = completed ? 'bg-primary-500' : 'bg-[var(--color-border)]';\n const iconColor = completed\n ? 'text-primary-500'\n : 'text-[var(--color-border)]';\n\n if (connectorType === 'arrow') {\n if (isH) {\n return (\n <div\n className={cn('flex items-center flex-1', indicatorHeight[size])}\n aria-hidden=\"true\"\n >\n <div className=\"flex items-center flex-1 mx-1.5\">\n <div\n className={cn(\n 'h-0.5 flex-1 transition-colors duration-normal',\n lineColor,\n )}\n />\n <div\n className={cn(\n 'w-0 h-0 shrink-0 border-y-[5px] border-y-transparent border-l-[7px] transition-colors duration-normal',\n completed\n ? 'border-l-primary-500'\n : 'border-l-[var(--color-border)]',\n )}\n />\n </div>\n </div>\n );\n }\n return (\n <div\n className=\"flex flex-col items-center min-h-6\"\n aria-hidden=\"true\"\n >\n <div\n className={cn(\n 'w-0.5 flex-1 transition-colors duration-normal',\n lineColor,\n )}\n />\n <div\n className={cn(\n 'w-0 h-0 shrink-0 border-x-[5px] border-x-transparent border-t-[7px] transition-colors duration-normal',\n completed\n ? 'border-t-primary-500'\n : 'border-t-[var(--color-border)]',\n )}\n />\n </div>\n );\n }\n\n if (connectorType === 'chevron') {\n const cSize = chevronSizeMap[size];\n if (isH) {\n return (\n <div\n className={cn('flex items-center flex-1', indicatorHeight[size])}\n aria-hidden=\"true\"\n >\n <div\n className={cn(\n 'flex items-center flex-1 mx-1 transition-colors duration-normal',\n iconColor,\n )}\n >\n <div className={cn('h-0.5 flex-1', lineColor)} />\n <ChevronRight\n size={cSize}\n className=\"shrink-0 mx-0.5\"\n strokeWidth={2.5}\n />\n <div className={cn('h-0.5 flex-1', lineColor)} />\n </div>\n </div>\n );\n }\n return (\n <div\n className={cn(\n 'flex flex-col items-center min-h-6 transition-colors duration-normal',\n iconColor,\n )}\n aria-hidden=\"true\"\n >\n <div className={cn('w-0.5 flex-1', lineColor)} />\n <ChevronDown\n size={cSize}\n className=\"shrink-0 my-0.5\"\n strokeWidth={2.5}\n />\n <div className={cn('w-0.5 flex-1', lineColor)} />\n </div>\n );\n }\n\n // Default: line\n if (isH) {\n return (\n <div\n className={cn('flex items-center flex-1', indicatorHeight[size])}\n aria-hidden=\"true\"\n >\n <div\n className={cn(\n 'h-0.5 flex-1 mx-2 transition-colors duration-normal',\n lineColor,\n )}\n />\n </div>\n );\n }\n return (\n <div\n className={cn(\n 'w-0.5 min-h-6 transition-colors duration-normal',\n lineColor,\n )}\n aria-hidden=\"true\"\n />\n );\n}\n\n/* --------------------------------------------------------\n Stepper\n -------------------------------------------------------- */\n\nexport const Stepper = React.forwardRef<HTMLOListElement, StepperProps>(\n (\n {\n className,\n steps,\n activeStep,\n orientation = 'horizontal',\n size = 'md',\n connector: connectorType = 'line',\n clickable = false,\n onStepClick,\n ...props\n },\n ref,\n ) => {\n return (\n <ol\n ref={ref}\n role=\"list\"\n aria-label=\"Progress\"\n className={cn(\n orientation === 'horizontal'\n ? 'flex items-start'\n : 'flex flex-col',\n className,\n )}\n {...props}\n >\n {steps.map((step, index) => {\n const derivedStatus: StepStatus =\n step.status ??\n (index < activeStep\n ? 'completed'\n : index === activeStep\n ? 'active'\n : 'pending');\n\n const isLast = index === steps.length - 1;\n const isClickable =\n clickable &&\n (derivedStatus === 'completed' || derivedStatus === 'active');\n\n const handleClick = () => {\n if (isClickable && onStepClick) onStepClick(index);\n };\n\n const connectorEl = !isLast ? (\n <StepConnector\n completed={index < activeStep}\n orientation={orientation}\n connectorType={connectorType}\n size={size}\n />\n ) : null;\n\n const indicatorButton = (\n <button\n type=\"button\"\n className={cn(\n stepIndicatorVariants({ status: derivedStatus, size }),\n isClickable &&\n 'cursor-pointer hover:ring-2 hover:ring-primary-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2',\n !isClickable && 'cursor-default',\n 'touch:min-h-[--touch-target-min] touch:min-w-[--touch-target-min]',\n )}\n onClick={handleClick}\n disabled={!isClickable}\n tabIndex={isClickable ? 0 : -1}\n aria-label={`Step ${index + 1}: ${step.label}${derivedStatus === 'completed' ? ' (completed)' : derivedStatus === 'error' ? ' (error)' : derivedStatus === 'loading' ? ' (loading)' : ''}`}\n >\n <StepIndicatorContent\n step={step}\n index={index}\n status={derivedStatus}\n size={size}\n />\n </button>\n );\n\n const labelEl = (\n <span\n className={cn(\n 'text-sm font-medium',\n derivedStatus === 'active' &&\n 'text-[var(--color-on-surface)]',\n derivedStatus === 'pending' &&\n 'text-[var(--color-on-surface-secondary)]',\n derivedStatus === 'completed' &&\n 'text-[var(--color-on-surface-secondary)]',\n derivedStatus === 'loading' &&\n 'text-[var(--color-on-surface)]',\n derivedStatus === 'error' &&\n 'text-error-600 dark:text-error-400',\n )}\n >\n {step.label}\n </span>\n );\n\n const descEl = step.description ? (\n <span className=\"text-xs text-[var(--color-on-surface-muted)] max-w-[140px]\">\n {step.description}\n </span>\n ) : null;\n\n if (orientation === 'horizontal') {\n return (\n <React.Fragment key={index}>\n <li\n role=\"listitem\"\n aria-current={\n derivedStatus === 'active' ? 'step' : undefined\n }\n className=\"flex flex-col items-center gap-1.5 text-center\"\n >\n {indicatorButton}\n {labelEl}\n {descEl}\n </li>\n {connectorEl}\n </React.Fragment>\n );\n }\n\n // Vertical\n return (\n <li\n key={index}\n role=\"listitem\"\n aria-current={\n derivedStatus === 'active' ? 'step' : undefined\n }\n className=\"flex gap-3\"\n >\n <div className=\"flex flex-col items-center\">\n {indicatorButton}\n {connectorEl}\n </div>\n <div className={cn('flex flex-col gap-0.5', !isLast && 'pb-6')}>\n {labelEl}\n {descEl}\n </div>\n </li>\n );\n })}\n </ol>\n );\n },\n);\nStepper.displayName = 'Stepper';\n","import * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\nimport { createContext } from '@/lib/create-context';\n\n/* ----- Context for variant propagation ----- */\n\ntype TabsVariant = 'default' | 'underline';\n\nconst [TabsVariantProvider, useTabsVariant] = createContext<{\n variant: TabsVariant;\n}>('TabsVariant');\n\n/* ----- Tabs Root ----- */\n\nexport const Tabs = TabsPrimitive.Root;\n\n/* ----- TabsList ----- */\n\nconst tabsListVariants = cva(\n 'inline-flex items-center justify-center overflow-x-auto max-w-full',\n {\n variants: {\n variant: {\n default: 'rounded-lg bg-[var(--color-surface-muted)] p-1',\n underline: 'border-b border-[var(--color-border)] bg-transparent',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n);\n\nexport interface TabsListProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>,\n VariantProps<typeof tabsListVariants> {}\n\nexport const TabsList = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(({ className, variant = 'default', ...props }, ref) => (\n <TabsVariantProvider value={{ variant: variant! }}>\n <TabsPrimitive.List\n ref={ref}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n </TabsVariantProvider>\n));\nTabsList.displayName = 'TabsList';\n\n/* ----- TabsTrigger ----- */\n\nconst tabsTriggerBase =\n 'inline-flex items-center justify-center whitespace-nowrap shrink-0 px-3 py-1.5 text-sm font-medium transition-all duration-fast ' +\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 ' +\n 'disabled:pointer-events-none disabled:opacity-50 ' +\n 'touch:min-h-[--touch-target-min]';\n\nconst tabsTriggerVariantStyles: Record<TabsVariant, string> = {\n default:\n 'rounded-md data-[state=active]:bg-[var(--color-surface-raised)] data-[state=active]:shadow-sm data-[state=active]:text-[var(--color-on-surface)] text-[var(--color-on-surface-secondary)]',\n underline:\n 'border-b-2 border-transparent rounded-none data-[state=active]:border-primary-400 data-[state=active]:text-[var(--color-on-surface)] text-[var(--color-on-surface-secondary)]',\n};\n\nexport const TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => {\n const { variant } = useTabsVariant();\n\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n tabsTriggerBase,\n tabsTriggerVariantStyles[variant],\n className,\n )}\n {...props}\n />\n );\n});\nTabsTrigger.displayName = 'TabsTrigger';\n\n/* ----- TabsContent ----- */\n\nexport const TabsContent = React.forwardRef<\n React.ComponentRef<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 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2',\n className,\n )}\n {...props}\n />\n));\nTabsContent.displayName = 'TabsContent';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\n/* ----- EmptyState ----- */\n\nconst emptyStateVariants = cva(\n 'flex flex-col items-center justify-center text-center',\n {\n variants: {\n size: {\n sm: 'py-8 gap-2',\n md: 'py-12 gap-3',\n lg: 'py-20 gap-4',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nexport interface EmptyStateProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof emptyStateVariants> {}\n\nexport const EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n ({ className, size, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(emptyStateVariants({ size }), className)}\n {...props}\n />\n ),\n);\nEmptyState.displayName = 'EmptyState';\n\n/* ----- EmptyStateIcon ----- */\n\nexport const EmptyStateIcon = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('text-[var(--color-on-surface-muted)] [&>svg]:h-10 [&>svg]:w-10', className)}\n {...props}\n />\n));\nEmptyStateIcon.displayName = 'EmptyStateIcon';\n\n/* ----- EmptyStateTitle ----- */\n\nexport const EmptyStateTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn('text-base font-semibold text-[var(--color-on-surface)]', className)}\n {...props}\n />\n));\nEmptyStateTitle.displayName = 'EmptyStateTitle';\n\n/* ----- EmptyStateDescription ----- */\n\nexport const EmptyStateDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-sm text-[var(--color-on-surface-muted)] max-w-sm', className)}\n {...props}\n />\n));\nEmptyStateDescription.displayName = 'EmptyStateDescription';\n\n/* ----- EmptyStateActions ----- */\n\nexport const EmptyStateActions = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center gap-2 mt-2', className)}\n {...props}\n />\n));\nEmptyStateActions.displayName = 'EmptyStateActions';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\n/* ----- Table ----- */\n\nexport const 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\n/* ----- TableHeader ----- */\n\nexport const 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\n/* ----- TableBody ----- */\n\nexport const 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\n/* ----- TableFooter ----- */\n\nexport const 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-[var(--color-surface-sunken)] font-medium [&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\n/* ----- TableRow ----- */\n\nexport const 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-[var(--color-border)] transition-colors hover:bg-[var(--color-surface-sunken)] data-[state=selected]:bg-primary-50 dark:data-[state=selected]:bg-primary-950',\n className,\n )}\n {...props}\n />\n));\nTableRow.displayName = 'TableRow';\n\n/* ----- TableHead ----- */\n\nexport const TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-10 px-3 text-left align-middle text-xs font-medium text-[var(--color-on-surface-muted)] uppercase tracking-wider [&:has([role=checkbox])]:pr-0',\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = 'TableHead';\n\n/* ----- TableCell ----- */\n\nexport const TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n 'px-2 py-2 sm:px-3 sm:py-2.5 align-middle text-sm [&:has([role=checkbox])]:pr-0',\n className,\n )}\n {...props}\n />\n));\nTableCell.displayName = 'TableCell';\n\n/* ----- TableCaption ----- */\n\nexport const 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-[var(--color-on-surface-muted)]', className)}\n {...props}\n />\n));\nTableCaption.displayName = 'TableCaption';\n","import * as React from 'react';\nimport {\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n getPaginationRowModel,\n flexRender,\n type ColumnDef,\n type SortingState,\n type RowSelectionState,\n type VisibilityState,\n} from '@tanstack/react-table';\nimport { ChevronsUpDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\nimport {\n Table,\n TableHeader,\n TableBody,\n TableRow,\n TableHead,\n TableCell,\n} from '@/components/table';\nimport { Checkbox } from '@/components/checkbox';\nimport { DataTablePagination } from './data-table-pagination';\nimport { DataTableToolbar } from './data-table-toolbar';\n\nexport interface DataTableProps<TData> {\n columns: ColumnDef<TData, unknown>[];\n data: TData[];\n enableSorting?: boolean;\n enableRowSelection?: boolean;\n enableColumnVisibility?: boolean;\n enablePagination?: boolean;\n pageSize?: number;\n pageSizeOptions?: number[];\n onRowSelectionChange?: (selectedRows: TData[]) => void;\n emptyState?: React.ReactNode;\n className?: string;\n 'aria-label'?: string;\n}\n\nexport function DataTable<TData>({\n columns,\n data,\n enableSorting = false,\n enableRowSelection = false,\n enableColumnVisibility = false,\n enablePagination = false,\n pageSize = 10,\n pageSizeOptions,\n onRowSelectionChange,\n emptyState,\n className,\n 'aria-label': ariaLabel,\n}: DataTableProps<TData>) {\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({});\n const [columnVisibility, setColumnVisibility] =\n React.useState<VisibilityState>({});\n\n const allColumns = React.useMemo(() => {\n if (!enableRowSelection) return columns;\n\n const selectColumn: ColumnDef<TData, unknown> = {\n id: 'select',\n header: ({ table }) => (\n <Checkbox\n checked={\n table.getIsAllPageRowsSelected()\n ? true\n : table.getIsSomePageRowsSelected()\n ? 'indeterminate'\n : false\n }\n onCheckedChange={(value) =>\n table.toggleAllPageRowsSelected(!!value)\n }\n aria-label=\"Select all\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n aria-label=\"Select row\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n };\n\n return [selectColumn, ...columns];\n }, [columns, enableRowSelection]);\n\n const table = useReactTable({\n data,\n columns: allColumns,\n state: { sorting, rowSelection, columnVisibility },\n onSortingChange: setSorting,\n onRowSelectionChange: setRowSelection,\n onColumnVisibilityChange: setColumnVisibility,\n getCoreRowModel: getCoreRowModel(),\n ...(enableSorting && { getSortedRowModel: getSortedRowModel() }),\n ...(enablePagination && {\n getPaginationRowModel: getPaginationRowModel(),\n }),\n enableRowSelection,\n initialState: { pagination: { pageSize } },\n });\n\n React.useEffect(() => {\n if (onRowSelectionChange) {\n const selectedRows = table\n .getFilteredSelectedRowModel()\n .rows.map((row) => row.original);\n onRowSelectionChange(selectedRows);\n }\n }, [rowSelection, table, onRowSelectionChange]);\n\n const showToolbar = enableRowSelection || enableColumnVisibility;\n\n return (\n <div className={cn('rounded-md border border-[var(--color-border)]', className)}>\n {showToolbar && (\n <DataTableToolbar\n table={table}\n enableColumnVisibility={enableColumnVisibility}\n />\n )}\n\n <Table aria-label={ariaLabel}>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead key={header.id}>\n {header.isPlaceholder ? null : header.column.getCanSort() ? (\n <button\n className=\"flex items-center gap-1 -ml-2 px-2 py-1 rounded-md hover:bg-[var(--color-surface-muted)] transition-colors duration-fast\"\n onClick={header.column.getToggleSortingHandler()}\n aria-label={`Sort by ${typeof header.column.columnDef.header === 'string' ? header.column.columnDef.header : header.column.id}`}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n <ChevronsUpDown\n className={cn(\n 'h-3.5 w-3.5 shrink-0',\n header.column.getIsSorted() ? 'opacity-100' : 'opacity-30',\n )}\n />\n </button>\n ) : (\n flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )\n )}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows.length > 0 ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() ? 'selected' : undefined}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={allColumns.length}\n className=\"h-24 text-center\"\n >\n {emptyState ?? 'No results.'}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n\n {enablePagination && (\n <DataTablePagination\n table={table}\n pageSizeOptions={pageSizeOptions}\n />\n )}\n </div>\n );\n}\nDataTable.displayName = 'DataTable';\n","import * as React from 'react';\nimport type { Table } from '@tanstack/react-table';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\ninterface DataTablePaginationProps<TData> {\n table: Table<TData>;\n pageSizeOptions?: number[];\n className?: string;\n}\n\nexport function DataTablePagination<TData>({\n table,\n pageSizeOptions = [10, 20, 30, 50],\n className,\n}: DataTablePaginationProps<TData>) {\n const { pageIndex, pageSize } = table.getState().pagination;\n const totalRows = table.getFilteredRowModel().rows.length;\n const from = pageIndex * pageSize + 1;\n const to = Math.min((pageIndex + 1) * pageSize, totalRows);\n\n return (\n <div\n className={cn(\n 'flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between px-3 py-3 text-sm text-[var(--color-on-surface-secondary)]',\n className,\n )}\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"hidden sm:inline\">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-[var(--color-border-input)] bg-[var(--color-surface-raised)] px-2 text-sm\"\n aria-label=\"Rows per page\"\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <span>\n {totalRows > 0 ? `${from}-${to} of ${totalRows}` : '0 results'}\n </span>\n <div className=\"flex items-center gap-1\">\n <button\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] transition-colors hover:bg-[var(--color-surface-sunken)] disabled:opacity-50 disabled:pointer-events-none\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n aria-label=\"Previous page\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n <button\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] transition-colors hover:bg-[var(--color-surface-sunken)] disabled:opacity-50 disabled:pointer-events-none\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n aria-label=\"Next page\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n </div>\n );\n}\nDataTablePagination.displayName = 'DataTablePagination';\n","import * as React from 'react';\nimport type { Table } from '@tanstack/react-table';\nimport { Columns3 } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\ninterface DataTableToolbarProps<TData> {\n table: Table<TData>;\n enableColumnVisibility?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport function DataTableToolbar<TData>({\n table,\n enableColumnVisibility = false,\n className,\n children,\n}: DataTableToolbarProps<TData>) {\n const [showColumnMenu, setShowColumnMenu] = React.useState(false);\n const menuRef = React.useRef<HTMLDivElement>(null);\n const selectedCount = table.getFilteredSelectedRowModel().rows.length;\n\n React.useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (menuRef.current && !menuRef.current.contains(event.target as Node)) {\n setShowColumnMenu(false);\n }\n }\n if (showColumnMenu) {\n document.addEventListener('mousedown', handleClickOutside);\n return () =>\n document.removeEventListener('mousedown', handleClickOutside);\n }\n }, [showColumnMenu]);\n\n return (\n <div\n className={cn(\n 'flex items-center justify-between px-3 py-2',\n className,\n )}\n >\n <div className=\"flex items-center gap-2\">\n {selectedCount > 0 && (\n <span className=\"text-sm text-[var(--color-on-surface-secondary)]\">\n {selectedCount} selected\n </span>\n )}\n {children}\n </div>\n\n {enableColumnVisibility && (\n <div className=\"relative\" ref={menuRef}>\n <button\n className=\"inline-flex items-center gap-1 rounded-md border border-[var(--color-border-input)] bg-[var(--color-surface-raised)] px-3 py-1.5 text-sm transition-colors hover:bg-[var(--color-surface-sunken)]\"\n onClick={() => setShowColumnMenu(!showColumnMenu)}\n aria-label=\"Toggle columns\"\n aria-expanded={showColumnMenu}\n >\n <Columns3 className=\"h-3.5 w-3.5\" />\n Columns\n </button>\n\n {showColumnMenu && (\n <div className=\"absolute right-0 top-full z-popover mt-1 min-w-[10rem] rounded-md border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-2 shadow-md\">\n {table\n .getAllColumns()\n .filter((col) => col.getCanHide())\n .map((col) => (\n <label\n key={col.id}\n className=\"flex items-center gap-2 rounded px-2 py-1 text-sm hover:bg-[var(--color-surface-sunken)] cursor-pointer capitalize\"\n >\n <input\n type=\"checkbox\"\n checked={col.getIsVisible()}\n onChange={(e) => col.toggleVisibility(e.target.checked)}\n className=\"h-4 w-4\"\n />\n {col.id}\n </label>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\nDataTableToolbar.displayName = 'DataTableToolbar';\n","import * as React from 'react';\nimport type { Column } from '@tanstack/react-table';\nimport { ChevronsUpDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\ninterface DataTableColumnHeaderProps<TData, TValue>\n extends React.HTMLAttributes<HTMLDivElement> {\n column: Column<TData, TValue>;\n title: string;\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n if (!column.getCanSort()) {\n return <div className={cn(className)}>{title}</div>;\n }\n\n const sorted = column.getIsSorted();\n\n return (\n <button\n className={cn(\n 'flex items-center gap-1 -ml-2 px-2 py-1 rounded-md hover:bg-[var(--color-surface-muted)] transition-colors duration-fast',\n className,\n )}\n onClick={() => column.toggleSorting(sorted === 'asc')}\n aria-label={`Sort by ${title}`}\n >\n {title}\n <ChevronsUpDown\n className={cn(\n 'h-3.5 w-3.5 shrink-0 transition-opacity',\n sorted ? 'opacity-100' : 'opacity-30',\n )}\n />\n {sorted === 'asc' && (\n <span className=\"sr-only\">sorted ascending</span>\n )}\n {sorted === 'desc' && (\n <span className=\"sr-only\">sorted descending</span>\n )}\n </button>\n );\n}\nDataTableColumnHeader.displayName = 'DataTableColumnHeader';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\n/* ----- FilterBar ----- */\n\nexport const FilterBar = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex flex-wrap items-center gap-2 rounded-lg border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-3',\n className,\n )}\n role=\"toolbar\"\n aria-label=\"Filters\"\n {...props}\n />\n));\nFilterBar.displayName = 'FilterBar';\n\n/* ----- FilterBarGroup ----- */\n\nexport const FilterBarGroup = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center gap-2', className)}\n role=\"group\"\n {...props}\n />\n));\nFilterBarGroup.displayName = 'FilterBarGroup';\n\n/* ----- FilterChip ----- */\n\nconst filterChipVariants = cva(\n 'inline-flex items-center gap-1 rounded-full px-3 py-1 text-sm font-medium transition-colors duration-fast',\n {\n variants: {\n variant: {\n default: 'bg-primary-50 text-primary-700',\n outline: 'border border-[var(--color-border-input)] text-[var(--color-on-surface-secondary)]',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n);\n\nexport interface FilterChipProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof filterChipVariants> {\n label: string;\n value: string;\n onRemove?: () => void;\n}\n\nexport const FilterChip = React.forwardRef<HTMLSpanElement, FilterChipProps>(\n ({ className, variant, label, value, onRemove, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(filterChipVariants({ variant }), className)}\n {...props}\n >\n <span className=\"text-xs opacity-70\">{label}:</span>\n <span>{value}</span>\n {onRemove && (\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"ml-0.5 rounded-full p-0.5 hover:bg-black/10 transition-colors\"\n aria-label={`Remove ${label} filter`}\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </span>\n ),\n);\nFilterChip.displayName = 'FilterChip';\n\n/* ----- ActiveFilters ----- */\n\nexport interface ActiveFiltersProps\n extends React.HTMLAttributes<HTMLDivElement> {\n onClearAll?: () => void;\n clearAllLabel?: string;\n}\n\nexport const ActiveFilters = React.forwardRef<\n HTMLDivElement,\n ActiveFiltersProps\n>(({ className, onClearAll, clearAllLabel = 'Clear all', children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-wrap items-center gap-2', className)}\n {...props}\n >\n {children}\n {onClearAll && (\n <button\n type=\"button\"\n onClick={onClearAll}\n className=\"text-sm text-[var(--color-on-surface-muted)] hover:text-[var(--color-on-surface-secondary)] underline transition-colors\"\n >\n {clearAllLabel}\n </button>\n )}\n </div>\n));\nActiveFilters.displayName = 'ActiveFilters';\n\n/* ----- FilterBarActions ----- */\n\nexport const FilterBarActions = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('ml-auto flex items-center gap-2', className)}\n {...props}\n />\n));\nFilterBarActions.displayName = 'FilterBarActions';\n","import * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { cn } from '@/lib/cn';\n\nexport const Popover = PopoverPrimitive.Root;\nexport const PopoverTrigger = PopoverPrimitive.Trigger;\nexport const PopoverAnchor = PopoverPrimitive.Anchor;\n\nexport const PopoverContent = React.forwardRef<\n React.ComponentRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'z-popover w-72 rounded-md border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-4 shadow-md outline-none',\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 data-[side=top]:slide-in-from-bottom-2',\n 'data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = 'PopoverContent';\n","import * as React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { Check, ChevronRight } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root;\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\nexport const DropdownMenuPortal = DropdownMenuPrimitive.Portal;\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nexport const DropdownMenuContent = React.forwardRef<\n React.ComponentRef<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-dropdown min-w-[8rem] overflow-hidden rounded-md border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-1 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 data-[side=top]:slide-in-from-bottom-2',\n 'data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2',\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = 'DropdownMenuContent';\n\nexport const DropdownMenuSubTrigger = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\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-[var(--color-surface-muted)]',\n 'data-[state=open]:bg-[var(--color-surface-muted)]',\n 'touch:min-h-[--touch-target-min]',\n inset && 'pl-8',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-3.5 w-3.5\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName = 'DropdownMenuSubTrigger';\n\nexport const DropdownMenuSubContent = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n 'z-dropdown min-w-[8rem] overflow-hidden rounded-md border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-1 shadow-md',\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2',\n 'data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2',\n className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName = 'DropdownMenuSubContent';\n\nexport interface DropdownMenuItemProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> {\n inset?: boolean;\n destructive?: boolean;\n}\n\nexport const DropdownMenuItem = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Item>,\n DropdownMenuItemProps\n>(({ className, inset, destructive, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors',\n 'focus:bg-[var(--color-surface-muted)] focus:text-[var(--color-on-surface)]',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n 'touch:min-h-[--touch-target-min]',\n destructive && 'text-error-600 focus:bg-error-50 focus:text-error-600',\n inset && 'pl-8',\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = 'DropdownMenuItem';\n\nexport const DropdownMenuCheckboxItem = React.forwardRef<\n React.ComponentRef<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-[var(--color-surface-muted)]',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n 'touch:min-h-[--touch-target-min]',\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 <Check className=\"h-3.5 w-3.5\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = 'DropdownMenuCheckboxItem';\n\nexport const DropdownMenuRadioItem = React.forwardRef<\n React.ComponentRef<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-[var(--color-surface-muted)]',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n 'touch:min-h-[--touch-target-min]',\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 width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"currentColor\">\n <circle cx=\"4\" cy=\"4\" r=\"4\" />\n </svg>\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = 'DropdownMenuRadioItem';\n\nexport const DropdownMenuLabel = React.forwardRef<\n React.ComponentRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n 'px-2 py-1.5 text-xs font-medium text-[var(--color-on-surface-muted)]',\n inset && 'pl-8',\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = 'DropdownMenuLabel';\n\nexport const DropdownMenuSeparator = React.forwardRef<\n React.ComponentRef<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-[var(--color-border)]', className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator';\n\nexport const DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n className={cn(\n 'ml-auto text-xs tracking-widest text-[var(--color-on-surface-muted)]',\n className,\n )}\n {...props}\n />\n);\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n","import * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nexport const Dialog = DialogPrimitive.Root;\nexport const DialogTrigger = DialogPrimitive.Trigger;\nexport const DialogClose = DialogPrimitive.Close;\n\nexport const DialogOverlay = React.forwardRef<\n React.ComponentRef<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-modal bg-[var(--color-surface-overlay)]',\n 'animate-in fade-in-0',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0',\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = 'DialogOverlay';\n\nexport const DialogContent = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPrimitive.Portal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed z-modal bg-[var(--color-surface-raised)] p-6 shadow-xl',\n 'focus-visible:outline-none',\n // Mobile: full-screen\n 'inset-0',\n // Desktop: centered modal\n 'sm:inset-auto sm:left-1/2 sm:top-1/2 sm:-translate-x-1/2 sm:-translate-y-1/2',\n 'sm:w-full sm:max-w-lg md:max-w-xl sm:rounded-xl sm:border sm:border-[var(--color-border)]',\n // Animations\n 'animate-in fade-in-0',\n 'sm:zoom-in-95 sm:slide-in-from-left-1/2 sm:slide-in-from-top-[48%]',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0',\n 'data-[state=closed]:sm:zoom-out-95',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:pointer-events-none\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n));\nDialogContent.displayName = 'DialogContent';\n\nexport const DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col gap-1.5 text-center sm:text-left', className)}\n {...props}\n />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nexport const DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nexport const DialogTitle = React.forwardRef<\n React.ComponentRef<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', className)}\n {...props}\n />\n));\nDialogTitle.displayName = 'DialogTitle';\n\nexport const DialogDescription = React.forwardRef<\n React.ComponentRef<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-[var(--color-on-surface-muted)]', className)}\n {...props}\n />\n));\nDialogDescription.displayName = 'DialogDescription';\n","import * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { Command } from 'cmdk';\nimport { Search } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\n/* ----- CommandPalette ----- */\n\nexport interface CommandPaletteProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n placeholder?: string;\n className?: string;\n children: React.ReactNode;\n}\n\nexport function CommandPalette({\n open,\n onOpenChange,\n placeholder = 'Type a command or search...',\n className,\n children,\n}: CommandPaletteProps) {\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className=\"fixed inset-0 z-modal bg-[var(--color-surface-overlay)] animate-in fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0\" />\n <DialogPrimitive.Content\n className={cn(\n 'fixed left-1/2 top-[20%] z-modal w-full max-w-xl -translate-x-1/2 overflow-hidden rounded-xl border border-[var(--color-border)] bg-[var(--color-surface-raised)] shadow-2xl',\n 'animate-in fade-in-0 zoom-in-95 slide-in-from-left-1/2',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n className,\n )}\n >\n <Command shouldFilter className=\"flex flex-col\">\n <div className=\"flex items-center border-b border-[var(--color-border)] px-4\">\n <Search className=\"h-[18px] w-[18px] shrink-0 text-[var(--color-on-surface-muted)]\" />\n <Command.Input\n placeholder={placeholder}\n className=\"flex h-12 w-full bg-transparent px-3 text-base outline-none placeholder:text-[var(--color-on-surface-muted)]\"\n />\n </div>\n <Command.List className=\"max-h-80 overflow-auto p-2\">\n {children}\n </Command.List>\n </Command>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n );\n}\nCommandPalette.displayName = 'CommandPalette';\n\n/* ----- CommandPaletteGroup ----- */\n\nexport interface CommandPaletteGroupProps {\n heading?: string;\n children: React.ReactNode;\n}\n\nexport function CommandPaletteGroup({\n heading,\n children,\n}: CommandPaletteGroupProps) {\n return (\n <Command.Group\n heading={heading}\n className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-[var(--color-on-surface-muted)]\"\n >\n {children}\n </Command.Group>\n );\n}\nCommandPaletteGroup.displayName = 'CommandPaletteGroup';\n\n/* ----- CommandPaletteItem ----- */\n\nexport interface CommandPaletteItemProps {\n icon?: React.ReactNode;\n shortcut?: string;\n onSelect?: () => void;\n disabled?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nexport function CommandPaletteItem({\n icon,\n shortcut,\n onSelect,\n disabled,\n className,\n children,\n}: CommandPaletteItemProps) {\n return (\n <Command.Item\n onSelect={onSelect}\n disabled={disabled}\n className={cn(\n 'relative flex cursor-pointer select-none items-center rounded-md px-2 py-2 text-sm outline-none',\n 'data-[selected=true]:bg-[var(--color-surface-muted)]',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50',\n className,\n )}\n >\n {icon && (\n <span className=\"mr-2 flex h-4 w-4 items-center justify-center text-[var(--color-on-surface-muted)]\">\n {icon}\n </span>\n )}\n <span className=\"flex-1\">{children}</span>\n {shortcut && (\n <CommandPaletteShortcut>{shortcut}</CommandPaletteShortcut>\n )}\n </Command.Item>\n );\n}\nCommandPaletteItem.displayName = 'CommandPaletteItem';\n\n/* ----- CommandPaletteSeparator ----- */\n\nexport function CommandPaletteSeparator({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <Command.Separator\n className={cn('-mx-1 my-1 h-px bg-[var(--color-border)]', className)}\n {...props}\n />\n );\n}\nCommandPaletteSeparator.displayName = 'CommandPaletteSeparator';\n\n/* ----- CommandPaletteEmpty ----- */\n\nexport function CommandPaletteEmpty({\n className,\n children = 'No results found.',\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <Command.Empty\n className={cn('px-2 py-6 text-center text-sm text-[var(--color-on-surface-muted)]', className)}\n {...props}\n >\n {children}\n </Command.Empty>\n );\n}\nCommandPaletteEmpty.displayName = 'CommandPaletteEmpty';\n\n/* ----- CommandPaletteShortcut ----- */\n\nexport function CommandPaletteShortcut({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) {\n return (\n <span\n className={cn(\n 'ml-auto text-xs tracking-widest text-[var(--color-on-surface-muted)]',\n className,\n )}\n {...props}\n />\n );\n}\nCommandPaletteShortcut.displayName = 'CommandPaletteShortcut';\n","import * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Pin, X } from 'lucide-react';\nimport { cn } from '@/lib/cn';\nimport { createContext } from '@/lib/create-context';\n\n/* ----- Drawer Context ----- */\n\ninterface DrawerContextValue {\n side: 'left' | 'right';\n pinnable: boolean;\n pinned: boolean;\n onPinnedChange?: (pinned: boolean) => void;\n}\n\nconst [DrawerContextProvider, useDrawerContext] =\n createContext<DrawerContextValue>('Drawer');\n\n/* ----- Drawer Stack Context ----- */\n\ninterface DrawerStackEntry {\n id: string;\n level: number;\n}\n\ninterface DrawerStackContextValue {\n stack: DrawerStackEntry[];\n register: (id: string) => number;\n unregister: (id: string) => void;\n}\n\nconst DrawerStackContext = React.createContext<DrawerStackContextValue | null>(\n null,\n);\n\nexport function DrawerProvider({ children }: { children: React.ReactNode }) {\n const stackRef = React.useRef<DrawerStackEntry[]>([]);\n const [, forceUpdate] = React.useState(0);\n\n const register = React.useCallback((id: string) => {\n const level = stackRef.current.length;\n stackRef.current = [...stackRef.current, { id, level }];\n forceUpdate((n) => n + 1);\n return level;\n }, []);\n\n const unregister = React.useCallback((id: string) => {\n stackRef.current = stackRef.current.filter((e) => e.id !== id);\n forceUpdate((n) => n + 1);\n }, []);\n\n const ctx = React.useMemo(\n () => ({ stack: stackRef.current, register, unregister }),\n [register, unregister],\n );\n\n return (\n <DrawerStackContext.Provider value={ctx}>\n {children}\n </DrawerStackContext.Provider>\n );\n}\nDrawerProvider.displayName = 'DrawerProvider';\n\n/* ----- Drawer ----- */\n\nexport interface DrawerProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n side?: 'left' | 'right';\n pinnable?: boolean;\n pinned?: boolean;\n onPinnedChange?: (pinned: boolean) => void;\n children: React.ReactNode;\n}\n\nexport function Drawer({\n open,\n onOpenChange,\n side = 'right',\n pinnable = false,\n pinned = false,\n onPinnedChange,\n children,\n}: DrawerProps) {\n return (\n <DrawerContextProvider value={{ side, pinnable, pinned, onPinnedChange }}>\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n {children}\n </DialogPrimitive.Root>\n </DrawerContextProvider>\n );\n}\nDrawer.displayName = 'Drawer';\n\n/* ----- DrawerTrigger ----- */\n\nexport const DrawerTrigger = DialogPrimitive.Trigger;\n\n/* ----- DrawerClose ----- */\n\nexport const DrawerClose = DialogPrimitive.Close;\n\n/* ----- DrawerContent ----- */\n\nconst drawerSizeVariants = cva('', {\n variants: {\n size: {\n sm: 'w-80', // 320px\n md: 'w-[480px]',\n lg: 'w-[640px]',\n xl: 'w-[800px]',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\nexport interface DrawerContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\n VariantProps<typeof drawerSizeVariants> {}\n\nexport const DrawerContent = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Content>,\n DrawerContentProps\n>(({ className, size, children, ...props }, ref) => {\n const { side, pinned } = useDrawerContext();\n const stackCtx = React.useContext(DrawerStackContext);\n const drawerId = React.useId();\n const [level, setLevel] = React.useState(0);\n\n React.useEffect(() => {\n if (stackCtx) {\n const l = stackCtx.register(drawerId);\n setLevel(l);\n return () => stackCtx.unregister(drawerId);\n }\n }, [stackCtx, drawerId]);\n\n const stackOffset = stackCtx ? level * 2 : 0;\n\n if (pinned) {\n return (\n <div\n className={cn(\n 'flex flex-col border-[var(--color-border)] bg-[var(--color-surface-raised)]',\n side === 'right' ? 'border-l' : 'border-r',\n drawerSizeVariants({ size }),\n className,\n )}\n >\n {children}\n </div>\n );\n }\n\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n className={cn(\n 'fixed inset-0 bg-[var(--color-surface-overlay)]',\n 'animate-in fade-in-0',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0',\n )}\n style={{ zIndex: 200 + stackOffset }}\n />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed top-0 h-full max-w-full bg-[var(--color-surface-raised)] shadow-xl',\n 'focus-visible:outline-none',\n side === 'right' && 'right-0 border-l border-[var(--color-border)] animate-slide-in-right data-[state=closed]:animate-slide-out-right',\n side === 'left' && 'left-0 border-r border-[var(--color-border)] animate-slide-in-left data-[state=closed]:animate-slide-out-left',\n drawerSizeVariants({ size }),\n className,\n )}\n style={{ zIndex: 201 + stackOffset }}\n {...props}\n >\n <div className=\"flex h-full flex-col\">{children}</div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n );\n});\nDrawerContent.displayName = 'DrawerContent';\n\n/* ----- DrawerHeader ----- */\n\nexport const DrawerHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { pinnable, pinned, onPinnedChange } = useDrawerContext();\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center justify-between border-b border-[var(--color-border)] px-4 py-3 sm:px-6 sm:py-4',\n className,\n )}\n {...props}\n >\n <div className=\"flex-1\">{props.children}</div>\n <div className=\"flex items-center gap-1\">\n {pinnable && (\n <button\n type=\"button\"\n onClick={() => onPinnedChange?.(!pinned)}\n className={cn(\n 'rounded-sm p-1 transition-opacity hover:opacity-100',\n pinned ? 'opacity-100 text-primary-500' : 'opacity-50',\n )}\n aria-label={pinned ? 'Unpin drawer' : 'Pin drawer'}\n >\n <Pin className=\"h-4 w-4\" fill={pinned ? 'currentColor' : 'none'} />\n </button>\n )}\n <DialogPrimitive.Close className=\"rounded-sm p-1 opacity-50 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </div>\n </div>\n );\n});\nDrawerHeader.displayName = 'DrawerHeader';\n\n/* ----- DrawerTitle ----- */\n\nexport const DrawerTitle = React.forwardRef<\n React.ComponentRef<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', className)}\n {...props}\n />\n));\nDrawerTitle.displayName = 'DrawerTitle';\n\n/* ----- DrawerDescription ----- */\n\nexport const DrawerDescription = React.forwardRef<\n React.ComponentRef<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-[var(--color-on-surface-muted)]', className)}\n {...props}\n />\n));\nDrawerDescription.displayName = 'DrawerDescription';\n\n/* ----- DrawerFooter ----- */\n\nexport const DrawerFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex items-center justify-end gap-2 border-t border-[var(--color-border)] px-4 py-3 sm:px-6 sm:py-4',\n className,\n )}\n {...props}\n />\n));\nDrawerFooter.displayName = 'DrawerFooter';\n","import * as React from 'react';\nimport { Menu } from 'lucide-react';\nimport { cn } from '@/lib/cn';\nimport { createContext } from '@/lib/create-context';\nimport { useBreakpoint } from '@/hooks';\nimport { Drawer, DrawerContent } from '@/components/drawer';\n\n/* ----- AppShell Context ----- */\n\ninterface AppShellContextValue {\n sidebarCollapsed: boolean;\n setSidebarCollapsed: (collapsed: boolean) => void;\n isMobile: boolean;\n withBottomNav: boolean;\n mobileSidebarOpen: boolean;\n setMobileSidebarOpen: (open: boolean) => void;\n}\n\nconst [AppShellProvider, useAppShell] =\n createContext<AppShellContextValue>('AppShell');\n\nexport { useAppShell };\n\n/* ----- AppShell ----- */\n\nexport interface AppShellProps extends React.HTMLAttributes<HTMLDivElement> {\n sidebarCollapsed?: boolean;\n onSidebarCollapsedChange?: (collapsed: boolean) => void;\n sidebarWidth?: number;\n sidebarCollapsedWidth?: number;\n withBottomNav?: boolean;\n}\n\nexport const AppShell = React.forwardRef<HTMLDivElement, AppShellProps>(\n (\n {\n className,\n sidebarCollapsed: controlledCollapsed,\n onSidebarCollapsedChange,\n sidebarWidth = 256,\n sidebarCollapsedWidth = 64,\n withBottomNav = false,\n children,\n ...props\n },\n ref,\n ) => {\n const { isMobile } = useBreakpoint();\n const [internalCollapsed, setInternalCollapsed] = React.useState(false);\n const [mobileSidebarOpen, setMobileSidebarOpen] = React.useState(false);\n\n const collapsed = controlledCollapsed ?? internalCollapsed;\n const setCollapsed = onSidebarCollapsedChange ?? setInternalCollapsed;\n\n return (\n <AppShellProvider\n value={{\n sidebarCollapsed: collapsed,\n setSidebarCollapsed: setCollapsed,\n isMobile,\n withBottomNav,\n mobileSidebarOpen,\n setMobileSidebarOpen,\n }}\n >\n <div\n ref={ref}\n className={cn('flex h-dvh', className)}\n style={\n {\n '--sidebar-width': `${sidebarWidth}px`,\n '--sidebar-collapsed-width': `${sidebarCollapsedWidth}px`,\n } as React.CSSProperties\n }\n {...props}\n >\n {children}\n </div>\n </AppShellProvider>\n );\n },\n);\nAppShell.displayName = 'AppShell';\n\n/* ----- AppShellSidebar ----- */\n\nexport const AppShellSidebar = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, children, ...props }, ref) => {\n const { sidebarCollapsed, isMobile, mobileSidebarOpen, setMobileSidebarOpen } =\n useAppShell();\n\n if (isMobile) {\n return (\n <Drawer\n open={mobileSidebarOpen}\n onOpenChange={setMobileSidebarOpen}\n side=\"left\"\n >\n <DrawerContent size=\"sm\" className={className}>\n {children}\n </DrawerContent>\n </Drawer>\n );\n }\n\n return (\n <aside\n ref={ref}\n className={cn(\n 'hidden md:flex md:flex-col shrink-0 border-r border-[var(--color-border)] bg-[var(--color-surface-raised)] overflow-y-auto transition-[width] duration-slow',\n className,\n )}\n style={{\n width: sidebarCollapsed\n ? 'var(--sidebar-collapsed-width)'\n : 'var(--sidebar-width)',\n }}\n {...props}\n >\n {children}\n </aside>\n );\n});\nAppShellSidebar.displayName = 'AppShellSidebar';\n\n/* ----- AppShellHeader ----- */\n\nexport const AppShellHeader = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, children, ...props }, ref) => {\n const { isMobile, setMobileSidebarOpen } = useAppShell();\n\n return (\n <header\n ref={ref}\n className={cn(\n 'flex h-14 items-center gap-3 border-b border-[var(--color-border)] bg-[var(--color-surface-raised)] px-4 shrink-0',\n className,\n )}\n {...props}\n >\n {isMobile && (\n <button\n type=\"button\"\n onClick={() => setMobileSidebarOpen(true)}\n className=\"rounded-md p-1.5 hover:bg-[var(--color-surface-muted)] transition-colors touch:min-h-[--touch-target-min] touch:min-w-[--touch-target-min] flex items-center justify-center\"\n aria-label=\"Open menu\"\n >\n <Menu className=\"h-5 w-5\" />\n </button>\n )}\n {children}\n </header>\n );\n});\nAppShellHeader.displayName = 'AppShellHeader';\n\n/* ----- AppShellContent ----- */\n\nexport const AppShellContent = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => {\n const { withBottomNav } = useAppShell();\n\n return (\n <main\n ref={ref}\n className={cn(\n 'flex-1 overflow-auto',\n withBottomNav &&\n 'pb-[calc(var(--bottom-nav-height)+var(--safe-area-bottom))]',\n className,\n )}\n {...props}\n />\n );\n});\nAppShellContent.displayName = 'AppShellContent';\n\n/* ----- AppShellFooter ----- */\n\nexport const AppShellFooter = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <footer\n ref={ref}\n className={cn(\n 'flex items-center border-t border-[var(--color-border)] bg-[var(--color-surface-raised)] px-4 py-2 shrink-0',\n className,\n )}\n {...props}\n />\n));\nAppShellFooter.displayName = 'AppShellFooter';\n","import * as React from 'react';\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport { ChevronDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\n/* --------------------------------------------------------\n SidebarNav\n -------------------------------------------------------- */\n\nexport const SidebarNav = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <nav\n ref={ref}\n className={cn('flex flex-col gap-1 px-3', className)}\n {...props}\n />\n));\nSidebarNav.displayName = 'SidebarNav';\n\n/* --------------------------------------------------------\n SidebarNavGroup\n -------------------------------------------------------- */\n\nexport interface SidebarNavGroupProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n title: string;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n icon?: React.ReactNode;\n}\n\nexport const SidebarNavGroup = React.forwardRef<\n HTMLDivElement,\n SidebarNavGroupProps\n>(\n (\n {\n className,\n title,\n defaultOpen = true,\n open: controlledOpen,\n onOpenChange,\n icon,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n <CollapsiblePrimitive.Root\n ref={ref}\n defaultOpen={defaultOpen}\n open={controlledOpen}\n onOpenChange={onOpenChange}\n className={cn('flex flex-col mt-4 first:mt-0', className)}\n {...props}\n >\n <CollapsiblePrimitive.Trigger className=\"group flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-xs font-semibold uppercase tracking-wider text-[var(--color-on-surface-muted)] transition-colors hover:text-[var(--color-on-surface-secondary)] hover:bg-[var(--color-surface-muted)]\">\n {icon && <span className=\"shrink-0 opacity-70\">{icon}</span>}\n <span className=\"flex-1 text-left\">{title}</span>\n <ChevronDown\n className=\"h-3.5 w-3.5 shrink-0 opacity-60 transition-transform duration-normal group-data-[state=closed]:-rotate-90\"\n />\n </CollapsiblePrimitive.Trigger>\n <CollapsiblePrimitive.Content className=\"overflow-hidden data-[state=open]:animate-collapsible-down data-[state=closed]:animate-collapsible-up\">\n <div className=\"flex flex-col gap-0.5 pt-0.5 pl-2\">\n {children}\n </div>\n </CollapsiblePrimitive.Content>\n </CollapsiblePrimitive.Root>\n );\n },\n);\nSidebarNavGroup.displayName = 'SidebarNavGroup';\n\n/* --------------------------------------------------------\n SidebarNavItem\n -------------------------------------------------------- */\n\nexport interface SidebarNavItemProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n icon?: React.ReactNode;\n active?: boolean;\n badge?: React.ReactNode;\n href?: string;\n}\n\nexport const SidebarNavItem = React.forwardRef<\n HTMLButtonElement,\n SidebarNavItemProps\n>(({ className, icon, active = false, badge, children, ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n 'flex w-full items-center gap-2.5 rounded-md px-2.5 py-1.5 text-sm transition-colors',\n active\n ? 'bg-[var(--color-surface-accent)] text-[var(--color-on-surface-accent)] font-medium'\n : 'text-[var(--color-on-surface-secondary)] hover:bg-[var(--color-surface-muted)] hover:text-[var(--color-on-surface)]',\n className,\n )}\n aria-current={active ? 'page' : undefined}\n {...props}\n >\n {icon && (\n <span className={cn('shrink-0', active ? 'opacity-100' : 'opacity-70')}>\n {icon}\n </span>\n )}\n <span className=\"flex-1 text-left truncate\">{children}</span>\n {badge && (\n <span\n className={cn(\n 'min-w-[20px] rounded-full px-1.5 py-0.5 text-center text-xs font-medium',\n active\n ? 'bg-[var(--color-primary-100)] text-[var(--color-primary-700)] dark:bg-[var(--color-primary-950)] dark:text-[var(--color-primary-300)]'\n : 'bg-[var(--color-surface-sunken)] text-[var(--color-on-surface-muted)]',\n )}\n >\n {badge}\n </span>\n )}\n </button>\n));\nSidebarNavItem.displayName = 'SidebarNavItem';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\nexport interface BottomNavigationProps\n extends React.HTMLAttributes<HTMLElement> {}\n\nexport const BottomNavigation = React.forwardRef<\n HTMLElement,\n BottomNavigationProps\n>(({ className, ...props }, ref) => (\n <nav\n ref={ref}\n className={cn(\n 'fixed bottom-0 left-0 right-0 z-sticky flex items-center justify-around border-t border-[var(--color-border)] bg-[var(--color-surface-raised)] pb-[var(--safe-area-bottom)]',\n 'h-[calc(var(--bottom-nav-height)+var(--safe-area-bottom))]',\n className,\n )}\n {...props}\n />\n));\nBottomNavigation.displayName = 'BottomNavigation';\n\nexport interface BottomNavigationItemProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n icon: React.ReactNode;\n label: string;\n active?: boolean;\n}\n\nexport const BottomNavigationItem = React.forwardRef<\n HTMLButtonElement,\n BottomNavigationItemProps\n>(({ className, icon, label, active = false, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(\n 'flex min-w-[--touch-target-min] flex-1 flex-col items-center justify-center gap-0.5 py-1 text-xs transition-colors',\n active\n ? 'text-primary-500 font-medium'\n : 'text-[var(--color-on-surface-muted)] hover:text-[var(--color-on-surface-secondary)]',\n className,\n )}\n aria-current={active ? 'page' : undefined}\n {...props}\n >\n <span className=\"flex h-6 w-6 items-center justify-center\">{icon}</span>\n <span>{label}</span>\n </button>\n));\nBottomNavigationItem.displayName = 'BottomNavigationItem';\n","import * as React from 'react';\nimport { WifiOff } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\nexport interface OfflineIndicatorProps\n extends React.HTMLAttributes<HTMLDivElement> {\n isOffline: boolean;\n message?: string;\n}\n\nexport const OfflineIndicator = React.forwardRef<\n HTMLDivElement,\n OfflineIndicatorProps\n>(\n (\n {\n className,\n isOffline,\n message = 'オフラインです。一部の機能が制限されます。',\n ...props\n },\n ref,\n ) => {\n if (!isOffline) return null;\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(\n 'fixed top-0 left-0 right-0 z-toast flex items-center justify-center bg-warning-500 px-4 py-2 text-xs font-medium text-white pt-[calc(0.5rem+var(--safe-area-top))]',\n className,\n )}\n {...props}\n >\n <WifiOff className=\"mr-2 h-3.5 w-3.5 shrink-0\" aria-hidden=\"true\" />\n {message}\n </div>\n );\n },\n);\nOfflineIndicator.displayName = 'OfflineIndicator';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\nimport { Button } from '@/components/button';\n\nexport interface InstallPromptProps\n extends React.HTMLAttributes<HTMLDivElement> {\n canInstall: boolean;\n onInstall: () => void;\n onDismiss: () => void;\n title?: string;\n description?: string;\n installLabel?: string;\n dismissLabel?: string;\n}\n\nexport const InstallPrompt = React.forwardRef<HTMLDivElement, InstallPromptProps>(\n (\n {\n className,\n canInstall,\n onInstall,\n onDismiss,\n title = 'アプリをインストール',\n description = 'ホーム画面に追加すると、すぐにアクセスできます。',\n installLabel = 'インストール',\n dismissLabel = '後で',\n ...props\n },\n ref,\n ) => {\n if (!canInstall) return null;\n\n return (\n <div\n ref={ref}\n role=\"dialog\"\n aria-label={title}\n className={cn(\n 'fixed bottom-0 left-0 right-0 z-modal border-t border-[var(--color-border)] bg-[var(--color-surface-raised)] p-4 shadow-lg pb-[calc(1rem+var(--safe-area-bottom))]',\n className,\n )}\n {...props}\n >\n <div className=\"mx-auto max-w-md\">\n <p className=\"text-sm font-semibold text-[var(--color-on-surface)]\">{title}</p>\n <p className=\"mt-1 text-xs text-[var(--color-on-surface-muted)]\">{description}</p>\n <div className=\"mt-3 flex gap-2\">\n <Button size=\"sm\" onClick={onInstall} className=\"flex-1\">\n {installLabel}\n </Button>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={onDismiss}\n className=\"flex-1\"\n >\n {dismissLabel}\n </Button>\n </div>\n </div>\n </div>\n );\n },\n);\nInstallPrompt.displayName = 'InstallPrompt';\n","'use client';\n\nimport * as React from 'react';\nimport { ArrowDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\nimport { Spinner } from '@/components/spinner';\n\nexport interface PullToRefreshProps\n extends React.HTMLAttributes<HTMLDivElement> {\n onRefresh: () => Promise<void>;\n threshold?: number;\n disabled?: boolean;\n}\n\nexport const PullToRefresh = React.forwardRef<HTMLDivElement, PullToRefreshProps>(\n ({ className, onRefresh, threshold = 80, disabled = false, children, ...props }, ref) => {\n const [pullDistance, setPullDistance] = React.useState(0);\n const [isRefreshing, setIsRefreshing] = React.useState(false);\n const startYRef = React.useRef(0);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n React.useImperativeHandle(ref, () => containerRef.current!);\n\n const handleTouchStart = React.useCallback(\n (e: React.TouchEvent) => {\n if (disabled || isRefreshing) return;\n const container = containerRef.current;\n if (container && container.scrollTop === 0) {\n startYRef.current = e.touches[0].clientY;\n }\n },\n [disabled, isRefreshing],\n );\n\n const handleTouchMove = React.useCallback(\n (e: React.TouchEvent) => {\n if (disabled || isRefreshing || startYRef.current === 0) return;\n const distance = Math.max(\n 0,\n (e.touches[0].clientY - startYRef.current) * 0.5,\n );\n if (distance > 0) {\n setPullDistance(Math.min(distance, threshold * 1.5));\n }\n },\n [disabled, isRefreshing, threshold],\n );\n\n const handleTouchEnd = React.useCallback(async () => {\n if (disabled || isRefreshing) return;\n\n if (pullDistance >= threshold) {\n setIsRefreshing(true);\n try {\n await onRefresh();\n } finally {\n setIsRefreshing(false);\n }\n }\n setPullDistance(0);\n startYRef.current = 0;\n }, [disabled, isRefreshing, pullDistance, threshold, onRefresh]);\n\n const indicatorOpacity = Math.min(pullDistance / threshold, 1);\n const shouldTrigger = pullDistance >= threshold;\n\n return (\n <div\n ref={containerRef}\n className={cn('relative overflow-auto', className)}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n {...props}\n >\n <div\n className=\"flex items-center justify-center overflow-hidden transition-[height] duration-normal\"\n style={{ height: isRefreshing ? threshold * 0.6 : pullDistance }}\n aria-hidden=\"true\"\n >\n <div\n className=\"transition-opacity\"\n style={{ opacity: isRefreshing ? 1 : indicatorOpacity }}\n >\n {isRefreshing ? (\n <Spinner size=\"sm\" />\n ) : (\n <ArrowDown\n className={cn(\n 'h-5 w-5 text-[var(--color-on-surface-muted)] transition-transform duration-normal',\n shouldTrigger && 'rotate-180 text-primary-500',\n )}\n />\n )}\n </div>\n </div>\n {children}\n </div>\n );\n },\n);\nPullToRefresh.displayName = 'PullToRefresh';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\n/* ----------------------------------------------------------------\n PrintDocument — A4/Letter page wrapper for PDF reports\n\n mm 単位で正確な用紙サイズを指定。\n box-sizing: border-box で padding を含む。\n pdfg に送る際は margin: 0 でパディングを CSS 側で管理。\n ---------------------------------------------------------------- */\n\nconst printDocumentVariants = cva(\n [\n 'bg-white text-neutral-900',\n 'flex flex-col',\n // Screen preview: paper-on-desk effect\n 'screen:shadow-lg screen:border screen:border-neutral-200',\n ].join(' '),\n {\n variants: {\n size: {\n A4: 'w-[210mm] min-h-[297mm]',\n Letter: 'w-[8.5in] min-h-[11in]',\n },\n orientation: {\n portrait: '',\n landscape: '',\n },\n },\n compoundVariants: [\n { size: 'A4', orientation: 'landscape', className: 'w-[297mm] min-h-[210mm]' },\n { size: 'Letter', orientation: 'landscape', className: 'w-[11in] min-h-[8.5in]' },\n ],\n defaultVariants: {\n size: 'A4',\n orientation: 'portrait',\n },\n },\n);\n\nexport interface PrintDocumentProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof printDocumentVariants> {\n /** Padding inside the document. Default: \"20mm\" */\n padding?: string;\n}\n\nconst PrintDocument = React.forwardRef<HTMLDivElement, PrintDocumentProps>(\n ({ className, size, orientation, padding = '20mm', style, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(printDocumentVariants({ size, orientation }), className)}\n style={{\n padding,\n boxSizing: 'border-box',\n fontFamily: 'Inter, \"Noto Sans JP\", sans-serif',\n fontSize: '10pt',\n lineHeight: '1.6',\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n ),\n);\nPrintDocument.displayName = 'PrintDocument';\n\n/* ----------------------------------------------------------------\n PrintHeader — Report header with logo, title, and meta info\n ---------------------------------------------------------------- */\n\nexport interface PrintHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Logo element (img or SVG) */\n logo?: React.ReactNode;\n /** Main title (e.g., \"請求書\") */\n title?: string;\n /** Subtitle (e.g., \"Invoice\") */\n subtitle?: string;\n /** Right-aligned meta info (e.g., invoice number, date) */\n meta?: React.ReactNode;\n}\n\nconst PrintHeader = React.forwardRef<HTMLDivElement, PrintHeaderProps>(\n ({ className, logo, title, subtitle, meta, children, ...props }, ref) => (\n <div ref={ref} className={cn('mb-6', className)} {...props}>\n {/* Brand accent bar */}\n <div className=\"h-1 bg-primary-400 rounded-full mb-5\" />\n <div className=\"flex items-start justify-between pb-4 border-b border-neutral-200\">\n <div className=\"flex items-center gap-3\">\n {logo && <div className=\"shrink-0\">{logo}</div>}\n <div>\n {title && <h1 className=\"text-2xl font-bold text-neutral-900 leading-tight\">{title}</h1>}\n {subtitle && (\n <p className=\"text-[8pt] font-medium tracking-widest uppercase text-neutral-400 mt-0.5\">\n {subtitle}\n </p>\n )}\n </div>\n </div>\n {meta && <div className=\"text-right text-[9pt] text-neutral-600 leading-relaxed\">{meta}</div>}\n {children}\n </div>\n </div>\n ),\n);\nPrintHeader.displayName = 'PrintHeader';\n\n/* ----------------------------------------------------------------\n PrintFooter — Report footer with notes and company info\n ---------------------------------------------------------------- */\n\nexport interface PrintFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst PrintFooter = React.forwardRef<HTMLDivElement, PrintFooterProps>(\n ({ className, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('mt-auto pt-4 border-t border-neutral-200 text-[8pt] text-neutral-400 text-center leading-relaxed', className)}\n {...props}\n >\n {children}\n </div>\n ),\n);\nPrintFooter.displayName = 'PrintFooter';\n\nexport { PrintDocument, printDocumentVariants, PrintHeader, PrintFooter };\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\n/* ----------------------------------------------------------------\n PrintTable — Table optimized for PDF reports\n No overflow wrapper, no hover states, clear borders\n ---------------------------------------------------------------- */\n\nexport interface PrintTableProps extends React.TableHTMLAttributes<HTMLTableElement> {}\n\nconst PrintTable = React.forwardRef<HTMLTableElement, PrintTableProps>(\n ({ className, ...props }, ref) => (\n <table\n ref={ref}\n className={cn('w-full border-collapse text-[9pt]', className)}\n {...props}\n />\n ),\n);\nPrintTable.displayName = 'PrintTable';\n\n/* ----------------------------------------------------------------\n PrintTableHeader\n ---------------------------------------------------------------- */\n\nexport interface PrintTableHeaderProps extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nconst PrintTableHeader = React.forwardRef<HTMLTableSectionElement, PrintTableHeaderProps>(\n ({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('', className)} {...props} />\n ),\n);\nPrintTableHeader.displayName = 'PrintTableHeader';\n\n/* ----------------------------------------------------------------\n PrintTableBody\n ---------------------------------------------------------------- */\n\nexport interface PrintTableBodyProps extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nconst PrintTableBody = React.forwardRef<HTMLTableSectionElement, PrintTableBodyProps>(\n ({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn('', className)} {...props} />\n ),\n);\nPrintTableBody.displayName = 'PrintTableBody';\n\n/* ----------------------------------------------------------------\n PrintTableFooter\n ---------------------------------------------------------------- */\n\nexport interface PrintTableFooterProps extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nconst PrintTableFooter = React.forwardRef<HTMLTableSectionElement, PrintTableFooterProps>(\n ({ className, ...props }, ref) => (\n <tfoot ref={ref} className={cn('', className)} {...props} />\n ),\n);\nPrintTableFooter.displayName = 'PrintTableFooter';\n\n/* ----------------------------------------------------------------\n PrintTableRow\n ---------------------------------------------------------------- */\n\nexport interface PrintTableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {}\n\nconst PrintTableRow = React.forwardRef<HTMLTableRowElement, PrintTableRowProps>(\n ({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn('[break-inside:avoid]', className)}\n {...props}\n />\n ),\n);\nPrintTableRow.displayName = 'PrintTableRow';\n\n/* ----------------------------------------------------------------\n PrintTableHead — Header cell\n ---------------------------------------------------------------- */\n\nexport interface PrintTableHeadProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n align?: 'left' | 'center' | 'right';\n}\n\nconst PrintTableHead = React.forwardRef<HTMLTableCellElement, PrintTableHeadProps>(\n ({ className, align = 'left', ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'py-1.5 px-2 font-semibold text-neutral-700 bg-neutral-50 border-b-2 border-neutral-300 text-[8pt]',\n align === 'right' && 'text-right',\n align === 'center' && 'text-center',\n align === 'left' && 'text-left',\n className,\n )}\n {...props}\n />\n ),\n);\nPrintTableHead.displayName = 'PrintTableHead';\n\n/* ----------------------------------------------------------------\n PrintTableCell — Body cell\n ---------------------------------------------------------------- */\n\nexport interface PrintTableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n align?: 'left' | 'center' | 'right';\n}\n\nconst PrintTableCell = React.forwardRef<HTMLTableCellElement, PrintTableCellProps>(\n ({ className, align = 'left', ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n 'py-1.5 px-2 border-b border-neutral-200',\n align === 'right' && 'text-right',\n align === 'center' && 'text-center',\n align === 'left' && 'text-left',\n className,\n )}\n {...props}\n />\n ),\n);\nPrintTableCell.displayName = 'PrintTableCell';\n\nexport {\n PrintTable,\n PrintTableHeader,\n PrintTableBody,\n PrintTableFooter,\n PrintTableRow,\n PrintTableHead,\n PrintTableCell,\n};\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/cn';\n\n/* ----------------------------------------------------------------\n PrintField — Label + value pair for report data\n ---------------------------------------------------------------- */\n\nexport interface PrintFieldProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Field label */\n label: string;\n /** Field value (string or ReactNode for rich content) */\n value?: React.ReactNode;\n}\n\nconst PrintField = React.forwardRef<HTMLDivElement, PrintFieldProps>(\n ({ className, label, value, children, ...props }, ref) => (\n <div ref={ref} className={cn('', className)} {...props}>\n <dt className=\"text-[8pt] font-medium text-neutral-500 mb-0.5\">{label}</dt>\n <dd className=\"text-[9pt] text-neutral-900\">{value ?? children}</dd>\n </div>\n ),\n);\nPrintField.displayName = 'PrintField';\n\n/* ----------------------------------------------------------------\n PrintFieldGroup — Grid layout for PrintField items\n ---------------------------------------------------------------- */\n\nconst printFieldGroupVariants = cva('grid gap-x-6 gap-y-2', {\n variants: {\n columns: {\n 1: 'grid-cols-1',\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n responsive: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n },\n },\n defaultVariants: {\n columns: 2,\n },\n});\n\nexport interface PrintFieldGroupProps\n extends React.HTMLAttributes<HTMLDListElement>,\n VariantProps<typeof printFieldGroupVariants> {}\n\nconst PrintFieldGroup = React.forwardRef<HTMLDListElement, PrintFieldGroupProps>(\n ({ className, columns, ...props }, ref) => (\n <dl\n ref={ref}\n className={cn(printFieldGroupVariants({ columns }), className)}\n {...props}\n />\n ),\n);\nPrintFieldGroup.displayName = 'PrintFieldGroup';\n\nexport { PrintField, PrintFieldGroup, printFieldGroupVariants };\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\nexport interface PrintDividerProps extends React.HTMLAttributes<HTMLHRElement> {}\n\nconst PrintDivider = React.forwardRef<HTMLHRElement, PrintDividerProps>(\n ({ className, ...props }, ref) => (\n <hr\n ref={ref}\n className={cn('border-neutral-200 my-4', className)}\n {...props}\n />\n ),\n);\nPrintDivider.displayName = 'PrintDivider';\n\nexport { PrintDivider };\n","import * as React from 'react';\nimport { ChevronUp, ChevronDown } from 'lucide-react';\nimport { cn } from '@/lib/cn';\n\n/* ----- StatCard ----- */\n\nexport interface StatCardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Metric label (e.g. \"Total Revenue\") */\n label: string;\n /** Formatted value (e.g. \"¥1,234,567\") */\n value: string;\n /** Trend text (e.g. \"+12.5%\", \"-3\") */\n trend?: string;\n /** Trend direction — controls color. Default: inferred from trend string. */\n trendDirection?: 'up' | 'down' | 'neutral';\n /** Optional icon rendered left of the value */\n icon?: React.ReactNode;\n}\n\nfunction inferDirection(trend?: string): 'up' | 'down' | 'neutral' {\n if (!trend) return 'neutral';\n if (trend.startsWith('+')) return 'up';\n if (trend.startsWith('-')) return 'down';\n return 'neutral';\n}\n\nconst TREND_STYLES = {\n up: 'text-success-600 dark:text-success-400',\n down: 'text-error-600 dark:text-error-400',\n neutral: 'text-[var(--color-on-surface-muted)]',\n} as const;\n\nconst TREND_ICON_COMPONENTS = {\n up: ChevronUp,\n down: ChevronDown,\n neutral: null,\n} as const;\n\nexport const StatCard = React.forwardRef<HTMLDivElement, StatCardProps>(\n ({ className, label, value, trend, trendDirection, icon, ...props }, ref) => {\n const direction = trendDirection ?? inferDirection(trend);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'rounded-xl border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-4 sm:p-5',\n className,\n )}\n {...props}\n >\n <div className=\"flex items-center justify-between\">\n <p className=\"text-xs font-medium text-[var(--color-on-surface-muted)] uppercase tracking-wider\">\n {label}\n </p>\n {icon && (\n <span className=\"text-[var(--color-on-surface-muted)]\">{icon}</span>\n )}\n </div>\n <div className=\"flex items-baseline gap-2 mt-2\">\n <span className=\"text-xl sm:text-2xl font-bold tabular-nums\">{value}</span>\n {trend && (\n <span className={cn('inline-flex items-center gap-0.5 text-xs font-medium', TREND_STYLES[direction])}>\n {(() => {\n const TrendIcon = TREND_ICON_COMPONENTS[direction];\n return TrendIcon ? <TrendIcon className=\"h-3 w-3\" strokeWidth={2.5} /> : null;\n })()}\n {trend}\n </span>\n )}\n </div>\n </div>\n );\n },\n);\nStatCard.displayName = 'StatCard';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\n/* ----- ChartContainer ----- */\n\nexport interface ChartContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Chart title */\n title: string;\n /** Optional description below the title */\n description?: string;\n /** Actions rendered in the header (e.g. period selector, export button) */\n actions?: React.ReactNode;\n}\n\nexport const ChartContainer = React.forwardRef<HTMLDivElement, ChartContainerProps>(\n ({ className, title, description, actions, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'rounded-xl border border-[var(--color-border)] bg-[var(--color-surface-raised)] shadow-sm',\n className,\n )}\n {...props}\n >\n <div className=\"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-2 sm:gap-4 p-4 sm:p-5 pb-0\">\n <div>\n <h3 className=\"text-sm font-semibold leading-none tracking-tight\">\n {title}\n </h3>\n {description && (\n <p className=\"mt-1 text-xs text-[var(--color-on-surface-muted)]\">\n {description}\n </p>\n )}\n </div>\n {actions && <div className=\"flex items-center gap-2 shrink-0\">{actions}</div>}\n </div>\n <div className=\"p-4 sm:p-5\">{children}</div>\n </div>\n ),\n);\nChartContainer.displayName = 'ChartContainer';\n","/**\n * Chart theme tokens for integrating charting libraries (Recharts, Chart.js, etc.)\n * with the Polastack design system.\n *\n * Design approach:\n * - Categorical palette is hand-curated for perceptual balance (Tableau 10 methodology)\n * - Colors are independent from UI semantic tokens (Primer / shadcn best practice)\n * - Each categorical color has a 1:1 paired subtle variant for area fills (Primer emphasis/muted pattern)\n * - Brand teal anchors position 0; remaining hues span the full wheel for maximum distinction\n *\n * Usage with Recharts:\n * <Bar fill={chartColors.categorical[0]} />\n * <Area fill={chartColors.subtle[0]} stroke={chartColors.categorical[0]} />\n *\n * Usage with Chart.js:\n * datasets: [{ backgroundColor: chartColors.categorical }]\n */\n\n/**\n * 8-color categorical palette — curated for data visualization.\n *\n * Principles:\n * 1. Moderate saturation (\"less Crayola bright\") for professional look\n * 2. Balanced perceived lightness across all 8 hues\n * 3. Full hue-circle coverage for maximum distinguishability\n * 4. Warm/cool alternation to aid colorblind accessibility\n * 5. Brand teal as the anchor color at position 0\n */\nexport const chartColors = {\n /** Solid colors for bars, lines, dots, and legends */\n categorical: [\n '#13C3A0', // teal — brand anchor\n '#4E79A7', // slate — classic dataviz blue\n '#E8A838', // amber — warm gold\n '#D4687A', // rose — dusty pink-red\n '#7C6BB1', // violet — soft purple\n '#6BA368', // sage — muted green\n '#5BA4CF', // sky — lighter blue\n '#B07A53', // sienna — warm brown\n ] as const,\n\n /** Subtle tints — 1:1 paired with categorical for area fills and backgrounds */\n subtle: [\n '#E8FAF6', // teal\n '#E8EEF4', // slate\n '#FDF3E0', // amber\n '#FCEAED', // rose\n '#EEEBF5', // violet\n '#EAF3EA', // sage\n '#E6F1F8', // sky\n '#F4EDE6', // sienna\n ] as const,\n\n /** Dark-mode subtle tints — 1:1 paired with categorical */\n subtleDark: [\n '#0C2B26', // teal\n '#1A2535', // slate\n '#2C2312', // amber\n '#2C1A1E', // rose\n '#1E1A2C', // violet\n '#1A2C1A', // sage\n '#1A2535', // sky\n '#2C2418', // sienna\n ] as const,\n\n /** Semantic colors for status-meaning charts (P&L, health scores, etc.) */\n semantic: {\n positive: '#13C3A0',\n negative: '#D4687A',\n neutral: '#94939B',\n warning: '#E8A838',\n } as const,\n\n /** Grid lines and axis strokes */\n grid: {\n light: '#E4E4E7', // neutral-200\n dark: '#3F3F46', // neutral-700\n } as const,\n\n /** Text for tick labels, legends, and annotations */\n text: {\n light: '#71717A', // neutral-500\n dark: '#A1A1AA', // neutral-400\n } as const,\n} as const;\n\nexport type ChartCategoricalColors = typeof chartColors.categorical;\nexport type ChartSemanticColors = typeof chartColors.semantic;\n","import { chartColors } from '@/tokens/chart-theme';\n\n/**\n * Chart theme utilities for Recharts integration.\n *\n * Uses the curated categorical palette from `tokens/chart-theme.ts`\n * and resolves CSS variables at runtime for dark mode support.\n */\n\n/** Resolve a CSS variable with fallback */\nconst cssVar = (variable: string, fallback: string): string => {\n if (typeof window === 'undefined') return fallback;\n return (\n getComputedStyle(document.documentElement)\n .getPropertyValue(variable)\n .trim() || fallback\n );\n};\n\n/** Categorical palette — 8 curated dataviz colors */\nexport function getChartColors(): readonly string[] {\n return chartColors.categorical;\n}\n\n/** Subtle fill palette — 1:1 paired with categorical */\nexport function getChartSubtleColors(dark = false): readonly string[] {\n return dark ? chartColors.subtleDark : chartColors.subtle;\n}\n\n/** Theme object for Recharts axes, grid, and tooltip styling */\nexport function getChartTheme() {\n return {\n gridColor: cssVar('--color-neutral-200', chartColors.grid.light),\n axisColor: cssVar('--color-neutral-400', '#a1a1aa'),\n textColor: cssVar('--color-neutral-500', chartColors.text.light),\n tooltipBg: cssVar('--color-surface-raised', '#ffffff'),\n tooltipBorder: cssVar('--color-border', '#e4e4e7'),\n fontSize: 12,\n fontFamily: 'Inter, \"Noto Sans JP\", sans-serif',\n };\n}\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\n/**\n * ChartTooltip — Styled tooltip content for Recharts.\n *\n * Usage with Recharts:\n * ```tsx\n * <RechartsTooltip content={<ChartTooltip />} />\n * ```\n */\n\nexport interface ChartTooltipProps {\n active?: boolean;\n payload?: Array<{\n name: string;\n value: number;\n color: string;\n dataKey: string;\n }>;\n label?: string;\n /** Custom value formatter (e.g. currency, percentage) */\n formatter?: (value: number, name: string) => string;\n /** Custom label formatter */\n labelFormatter?: (label: string) => string;\n className?: string;\n}\n\nexport const ChartTooltip: React.FC<ChartTooltipProps> = ({\n active,\n payload,\n label,\n formatter,\n labelFormatter,\n className,\n}) => {\n if (!active || !payload?.length) return null;\n\n const displayLabel = labelFormatter ? labelFormatter(String(label)) : label;\n\n return (\n <div\n className={cn(\n 'rounded-lg border border-[var(--color-border)] bg-[var(--color-surface-raised)] px-3 py-2 shadow-md',\n 'text-xs',\n className,\n )}\n >\n {displayLabel && (\n <p className=\"font-medium text-[var(--color-on-surface)] mb-1\">\n {displayLabel}\n </p>\n )}\n <div className=\"flex flex-col gap-0.5\">\n {payload.map((entry, i) => (\n <div key={i} className=\"flex items-center gap-2\">\n <span\n className=\"inline-block h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: entry.color }}\n />\n <span className=\"text-[var(--color-on-surface-muted)]\">\n {entry.name}\n </span>\n <span className=\"ml-auto font-medium tabular-nums text-[var(--color-on-surface)]\">\n {formatter\n ? formatter(entry.value, entry.name)\n : entry.value.toLocaleString()}\n </span>\n </div>\n ))}\n </div>\n </div>\n );\n};\nChartTooltip.displayName = 'ChartTooltip';\n","import * as React from 'react';\nimport { cn } from '@/lib/cn';\n\n/**\n * ChartLegend — Styled legend content for Recharts.\n *\n * Usage with Recharts:\n * ```tsx\n * <RechartsLegend content={<ChartLegend />} />\n * ```\n */\n\nexport interface ChartLegendProps {\n payload?: Array<{\n value: string;\n color: string;\n type?: string;\n dataKey?: string;\n }>;\n className?: string;\n}\n\nexport const ChartLegend: React.FC<ChartLegendProps> = ({\n payload,\n className,\n}) => {\n if (!payload?.length) return null;\n\n return (\n <div className={cn('flex flex-wrap items-center justify-center gap-x-4 gap-y-1 pt-3', className)}>\n {payload.map((entry, i) => (\n <div key={i} className=\"flex items-center gap-1.5 text-xs text-[var(--color-on-surface-muted)]\">\n <span\n className=\"inline-block h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: entry.color }}\n />\n <span>{entry.value}</span>\n </div>\n ))}\n </div>\n );\n};\nChartLegend.displayName = 'ChartLegend';\n"],"mappings":"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","names":["createContext","useContext","useState","useEffect","useState","useEffect","useState","useEffect","useState","useEffect","useCallback","useState","useEffect","useCallback","React","useTheme","React","jsx","React","cva","jsx","cva","React","cva","jsx","createContext","cva","React","jsx","React","jsx","React","jsx","React","cva","jsx","jsxs","cva","React","jsx","React","jsx","React","cva","jsx","cva","React","jsx","jsxs","React","jsx","jsxs","React","cva","jsx","cva","React","cva","jsx","cva","React","jsx","React","jsx","React","cva","jsx","cva","React","Check","jsx","jsxs","Check","React","cva","ChevronDown","jsx","jsxs","cva","ChevronDown","React","jsx","React","Check","jsx","jsxs","Check","React","jsx","createContext","jsx","React","jsx","jsxs","React","cva","jsx","jsxs","cva","React","cva","jsx","jsxs","cva","React","cva","Check","ChevronDown","Fragment","jsx","jsxs","cva","Check","ChevronDown","React","cva","jsx","createContext","cva","React","cva","jsx","cva","React","jsx","React","ChevronsUpDown","ChevronRight","jsx","jsxs","ChevronRight","React","jsx","jsxs","jsx","jsxs","table","ChevronsUpDown","ChevronsUpDown","jsx","jsxs","ChevronsUpDown","React","cva","X","jsx","jsxs","cva","X","React","PopoverPrimitive","jsx","React","Check","ChevronRight","jsx","jsxs","ChevronRight","Check","React","X","jsx","jsxs","X","DialogPrimitive","Command","jsx","jsxs","Command","React","DialogPrimitive","cva","X","jsx","jsxs","createContext","cva","X","React","jsx","jsxs","createContext","jsx","jsxs","React","ChevronDown","jsx","jsxs","ChevronDown","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","cva","jsx","jsxs","cva","React","jsx","React","cva","jsx","jsxs","cva","React","jsx","React","ChevronUp","ChevronDown","jsx","jsxs","ChevronUp","ChevronDown","React","jsx","jsxs","jsx","jsxs","jsx","jsxs"]}