{"version":3,"sources":["../src/components/Typography/Heading.tsx","../src/utils/cn.ts","../src/components/Typography/Text.tsx","../src/components/Typography/Prose.tsx","../src/components/Typography/Link.tsx","../src/components/Typography/Code.tsx","../src/components/Typography/List.tsx","../src/components/Logo/Logo.tsx","../src/components/Error/ErrorBoundary.tsx","../src/components/Error/ErrorPage.tsx","../src/components/Button/Button.tsx","../src/components/Error/ErrorMessage.tsx","../src/components/Button/ButtonGroup.tsx","../src/theme/ThemeProvider.tsx","../src/components/Loading/LoadingButton.tsx","../src/components/Loading/LoadingContainer.tsx","../src/components/Loading/LoadingSkeleton.tsx","../src/hooks/useAsyncOperation.ts","../src/utils/verify-imports.ts","../src/components/FormControl.tsx","../src/components/Input.tsx","../src/components/Select.tsx","../src/components/Textarea.tsx","../src/components/Checkbox.tsx","../src/components/Radio.tsx","../src/components/Toggle.tsx","../src/components/Layout/Box.tsx","../src/components/Layout/Flex.tsx","../src/components/Layout/Spacer.tsx","../src/components/Card.tsx","../src/components/Container.tsx","../src/components/Stack.tsx","../src/components/Grid.tsx","../src/components/Drawer.tsx","../src/components/Hero.tsx","../src/components/Alert.tsx","../src/components/Toast/ToastProvider.tsx","../src/components/Modal.tsx","../src/components/Progress.tsx","../src/components/Badge.tsx","../src/components/Skeleton.tsx","../src/components/Dropdown.tsx","../src/components/Tooltip.tsx","../src/components/Table/Table.tsx","../src/components/Stat/Stat.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Timeline/Timeline.tsx","../src/components/Pagination/Pagination.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Accordion/Accordion.tsx","../src/components/VerticalScroller/VerticalScroller.core.ts","../src/components/VerticalScroller/ScrollAnimation.ts","../src/components/VerticalScroller/VerticalScroller.tsx","../src/components/VerticalScroller/useVerticalScroller.ts","../src/components/Icons/SocialIcons.tsx","../src/components/FloatingActionButton/FloatingActionButton.tsx","../src/theme/useThemeColors.ts","../src/theme/ThemePreview.tsx","../src/themes/index.ts","../src/tokens/hooks.ts","../src/tokens/tokens.json","../src/tokens/constants.ts","../src/hooks/useMediaQuery.ts","../src/layout/ThreeColumnLayout.tsx","../src/layout/AuthLayout.tsx","../src/layout/Icons.tsx","../src/layout/MobileHeader.tsx","../src/layout/SlideOutDrawer.tsx","../src/layout/LayoutSidebar.tsx","../src/layout/NavigationItem.tsx","../src/layout/SidebarSection.tsx","../src/layout/ThemeSwitcher.tsx","../src/layout/FooterLinks.tsx","../src/layout/CenterPage.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cn } from '../../utils/cn';\n\ntype HeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\ntype HeadingSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';\ntype HeadingWeight = 'normal' | 'medium' | 'semibold' | 'bold' | 'extrabold';\ntype HeadingColor = 'default' | 'primary' | 'secondary' | 'muted' | 'error';\ntype HeadingAlign = 'left' | 'center' | 'right' | 'justify';\n\nexport interface HeadingProps {\n  as?: HeadingLevel;\n  size?: HeadingSize;\n  weight?: HeadingWeight;\n  color?: HeadingColor;\n  align?: HeadingAlign;\n  truncate?: boolean;\n  clamp?: number;\n  gradient?: boolean;\n  id?: string;\n  children: React.ReactNode;\n  className?: string;\n}\n\nconst sizeClasses: Record<HeadingSize, string> = {\n  xs: 'text-xs',\n  sm: 'text-sm',\n  md: 'text-base md:text-lg',\n  lg: 'text-lg md:text-xl lg:text-2xl',\n  xl: 'text-xl md:text-2xl lg:text-3xl',\n  '2xl': 'text-2xl md:text-3xl lg:text-4xl',\n  '3xl': 'text-3xl md:text-4xl lg:text-5xl',\n  '4xl': 'text-4xl md:text-5xl lg:text-6xl',\n  '5xl': 'text-5xl md:text-6xl lg:text-7xl',\n};\n\nconst headingSizeMap: Record<\n  HeadingLevel,\n  { default: HeadingSize; md: HeadingSize; lg: HeadingSize }\n> = {\n  h1: { default: 'xl', md: '2xl', lg: '2xl' },\n  h2: { default: 'lg', md: 'xl', lg: 'xl' },\n  h3: { default: 'md', md: 'lg', lg: 'lg' },\n  h4: { default: 'sm', md: 'md', lg: 'md' },\n  h5: { default: 'xs', md: 'sm', lg: 'sm' },\n  h6: { default: 'xs', md: 'xs', lg: 'xs' },\n};\n\nconst weightClasses: Record<HeadingWeight, string> = {\n  normal: 'font-normal',\n  medium: 'font-medium',\n  semibold: 'font-semibold',\n  bold: 'font-bold',\n  extrabold: 'font-extrabold',\n};\n\nconst colorClasses: Record<HeadingColor, string> = {\n  default: 'text-base-content',\n  primary: 'text-primary',\n  secondary: 'text-secondary',\n  muted: 'text-base-content/70',\n  error: 'text-error',\n};\n\nconst alignClasses: Record<HeadingAlign, string> = {\n  left: 'text-left',\n  center: 'text-center',\n  right: 'text-right',\n  justify: 'text-justify',\n};\n\nexport const Heading = React.forwardRef<HTMLHeadingElement, HeadingProps>(\n  (\n    {\n      as: Component = 'h2',\n      size,\n      weight = 'bold',\n      color = 'default',\n      align,\n      truncate = false,\n      clamp,\n      gradient = false,\n      id,\n      children,\n      className,\n    },\n    ref\n  ) => {\n    // Use automatic sizing based on heading level if size not provided\n    const autoSize = size || sizeClasses[headingSizeMap[Component].default];\n    const sizeClass = size ? sizeClasses[size] : autoSize;\n\n    const clampClass = clamp ? `line-clamp-${clamp}` : truncate ? 'truncate' : '';\n\n    const gradientClass = gradient\n      ? 'bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent'\n      : '';\n\n    return (\n      <Component\n        ref={ref}\n        id={id}\n        className={cn(\n          sizeClass,\n          weightClasses[weight],\n          !gradient && colorClasses[color],\n          align && alignClasses[align],\n          clampClass,\n          gradientClass,\n          'tracking-tight',\n          className\n        )}\n      >\n        {children}\n      </Component>\n    );\n  }\n);\n\nHeading.displayName = 'Heading';\n","import { clsx, type ClassValue } from 'clsx';\n\n/**\n * Combines class names with intelligent conditional class handling.\n *\n * This utility uses clsx to handle conditional classes, making it easy to\n * apply dynamic styling based on component state. Perfect for use with\n * Tailwind CSS and DaisyUI classes.\n *\n * @example\n * // Basic usage\n * cn('px-4 py-2', 'text-white', 'bg-blue-500')\n * // => 'px-4 py-2 text-white bg-blue-500'\n *\n * @example\n * // Conditional classes\n * cn('btn', isLoading && 'loading', isDisabled && 'btn-disabled')\n *\n * @example\n * // Object syntax\n * cn('base', {\n *   'bg-primary': isPrimary,\n *   'bg-secondary': !isPrimary,\n * })\n *\n * @example\n * // Array syntax\n * cn(['btn', variant && `btn-${variant}`])\n *\n * @example\n * // With DaisyUI components\n * <button className={cn('btn', size && `btn-${size}`, className)}>\n *   Click me\n * </button>\n *\n * @example\n * // Common patterns\n * cn(\n *   'base-class',           // Always applied\n *   condition && 'class-1', // Conditionally applied\n *   {\n *     'class-2': bool1,     // Object syntax\n *     'class-3': bool2,\n *   },\n *   className               // Props pass-through\n * )\n *\n * @param inputs - Class names, conditionals, arrays, or objects to merge\n * @returns Merged class string with falsy values filtered out\n */\nexport function cn(...inputs: ClassValue[]): string {\n  return clsx(inputs);\n}\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\n\ntype TextElement = 'p' | 'span' | 'div' | 'label';\ntype TextSize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl';\ntype TextWeight = 'normal' | 'medium' | 'semibold' | 'bold';\ntype TextColor = 'default' | 'primary' | 'secondary' | 'muted' | 'error' | 'success';\ntype TextAlign = 'left' | 'center' | 'right' | 'justify';\ntype TextVariant = 'body' | 'caption' | 'overline' | 'helper' | 'error';\n\nexport interface TextProps {\n  as?: TextElement;\n  size?: TextSize;\n  weight?: TextWeight;\n  color?: TextColor;\n  align?: TextAlign;\n  italic?: boolean;\n  underline?: boolean;\n  strikethrough?: boolean;\n  uppercase?: boolean;\n  lowercase?: boolean;\n  capitalize?: boolean;\n  truncate?: boolean;\n  clamp?: number;\n  nowrap?: boolean;\n  variant?: TextVariant;\n  children: React.ReactNode;\n  className?: string;\n}\n\nconst sizeClasses: Record<TextSize, string> = {\n  xs: 'text-xs',\n  sm: 'text-sm',\n  base: 'text-base',\n  lg: 'text-lg',\n  xl: 'text-xl',\n  '2xl': 'text-2xl',\n};\n\nconst weightClasses: Record<TextWeight, string> = {\n  normal: 'font-normal',\n  medium: 'font-medium',\n  semibold: 'font-semibold',\n  bold: 'font-bold',\n};\n\nconst colorClasses: Record<TextColor, string> = {\n  default: 'text-base-content',\n  primary: 'text-primary',\n  secondary: 'text-secondary',\n  muted: 'text-base-content/70',\n  error: 'text-error',\n  success: 'text-success',\n};\n\nconst alignClasses: Record<TextAlign, string> = {\n  left: 'text-left',\n  center: 'text-center',\n  right: 'text-right',\n  justify: 'text-justify',\n};\n\nconst variantPresets: Record<TextVariant, Partial<TextProps>> = {\n  body: { size: 'base', weight: 'normal' },\n  caption: { size: 'sm', color: 'muted' },\n  overline: { size: 'xs', weight: 'semibold', uppercase: true },\n  helper: { size: 'sm', color: 'muted', italic: true },\n  error: { size: 'sm', color: 'error', weight: 'medium' },\n};\n\nexport const Text = React.forwardRef<HTMLElement, TextProps>(\n  (\n    {\n      as: Component = 'p',\n      size,\n      weight,\n      color,\n      align = 'left',\n      italic = false,\n      underline = false,\n      strikethrough = false,\n      uppercase = false,\n      lowercase = false,\n      capitalize = false,\n      truncate = false,\n      clamp,\n      nowrap = false,\n      variant,\n      children,\n      className,\n    },\n    ref\n  ) => {\n    // Apply variant presets if specified\n    const variantProps = variant ? variantPresets[variant] : {};\n    const finalSize = size || variantProps.size || 'base';\n    const finalWeight = weight || variantProps.weight || 'normal';\n    const finalColor = color || variantProps.color || 'default';\n    const finalItalic = italic || variantProps.italic || false;\n    const finalUppercase = uppercase || variantProps.uppercase || false;\n\n    const textTransformClass =\n      uppercase || finalUppercase\n        ? 'uppercase'\n        : lowercase\n          ? 'lowercase'\n          : capitalize\n            ? 'capitalize'\n            : '';\n\n    const decorationClass = underline ? 'underline' : strikethrough ? 'line-through' : '';\n\n    const clampClass = clamp ? `line-clamp-${clamp}` : truncate ? 'truncate' : '';\n\n    return (\n      <Component\n        ref={ref as any}\n        className={cn(\n          sizeClasses[finalSize],\n          weightClasses[finalWeight],\n          colorClasses[finalColor],\n          alignClasses[align],\n          finalItalic && 'italic',\n          decorationClass,\n          textTransformClass,\n          clampClass,\n          nowrap && 'whitespace-nowrap',\n          'leading-relaxed',\n          className\n        )}\n      >\n        {children}\n      </Component>\n    );\n  }\n);\n\nText.displayName = 'Text';\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\n\ntype ProseSize = 'sm' | 'base' | 'lg' | 'xl';\ntype ProseMaxWidth = 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\nexport interface ProseProps {\n  children: React.ReactNode;\n  size?: ProseSize;\n  maxWidth?: ProseMaxWidth;\n  centered?: boolean;\n  serif?: boolean;\n  dropCap?: boolean;\n  balancedText?: boolean;\n  className?: string;\n}\n\nconst sizeClasses: Record<ProseSize, string> = {\n  sm: 'prose-sm',\n  base: 'prose',\n  lg: 'prose-lg',\n  xl: 'prose-xl',\n};\n\nconst maxWidthClasses: Record<ProseMaxWidth, string> = {\n  none: 'max-w-none',\n  sm: 'max-w-prose-sm',\n  md: 'max-w-prose',\n  lg: 'max-w-prose-lg',\n  xl: 'max-w-prose-xl',\n  '2xl': 'max-w-prose-2xl',\n};\n\nexport const Prose = React.forwardRef<HTMLDivElement, ProseProps>(\n  (\n    {\n      children,\n      size = 'base',\n      maxWidth = 'lg',\n      centered = false,\n      serif = false,\n      dropCap = false,\n      balancedText = false,\n      className,\n    },\n    ref\n  ) => {\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          'prose',\n          sizeClasses[size],\n          maxWidthClasses[maxWidth],\n          centered && 'mx-auto',\n          serif && 'font-serif',\n          balancedText && '[text-wrap:balance]',\n          // Dark mode support\n          'prose-headings:text-base-content',\n          'prose-p:text-base-content',\n          'prose-strong:text-base-content',\n          'prose-em:text-base-content',\n          'prose-blockquote:text-base-content/80',\n          'prose-lead:text-base-content',\n          'prose-a:text-primary',\n          'prose-a:no-underline',\n          'hover:prose-a:underline',\n          'prose-code:text-base-content',\n          'prose-code:bg-base-200',\n          'prose-code:px-1',\n          'prose-code:py-0.5',\n          'prose-code:rounded',\n          'prose-pre:bg-base-200',\n          'prose-pre:text-base-content',\n          'prose-ol:text-base-content',\n          'prose-ul:text-base-content',\n          'prose-li:text-base-content',\n          'prose-table:text-base-content',\n          'prose-thead:border-base-300',\n          'prose-tr:border-base-300',\n          'prose-th:text-base-content',\n          'prose-td:text-base-content',\n          'prose-hr:border-base-300',\n          'prose-figure:text-base-content',\n          'prose-figcaption:text-base-content/70',\n          'prose-video:rounded',\n          'prose-img:rounded',\n          // First letter drop cap\n          dropCap &&\n            'prose-p:first-of-type:first-letter:text-7xl prose-p:first-of-type:first-letter:font-bold prose-p:first-of-type:first-letter:float-left prose-p:first-of-type:first-letter:mr-3 prose-p:first-of-type:first-letter:mt-1 prose-p:first-of-type:first-letter:text-primary',\n          className\n        )}\n      >\n        {children}\n      </div>\n    );\n  }\n);\n\nProse.displayName = 'Prose';\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\n\ntype LinkVariant = 'default' | 'primary' | 'muted' | 'nav';\ntype LinkUnderline = 'always' | 'hover' | 'none';\ntype LinkWeight = 'normal' | 'medium' | 'semibold' | 'bold';\n\nexport interface LinkProps {\n  href?: string;\n  to?: string; // For router integration\n  variant?: LinkVariant;\n  external?: boolean;\n  download?: boolean | string;\n  underline?: LinkUnderline;\n  weight?: LinkWeight;\n  icon?: React.ReactNode;\n  iconPosition?: 'left' | 'right';\n  children: React.ReactNode;\n  className?: string;\n  onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst variantClasses: Record<LinkVariant, string> = {\n  default: 'text-primary hover:text-primary-focus',\n  primary: 'text-primary hover:text-primary-focus',\n  muted: 'text-base-content/70 hover:text-base-content',\n  nav: 'text-base-content hover:text-primary transition-colors focus:!ring-offset-0',\n};\n\nconst underlineClasses: Record<LinkUnderline, string> = {\n  always: 'underline',\n  hover: 'no-underline hover:underline',\n  none: 'no-underline',\n};\n\nconst weightClasses: Record<LinkWeight, string> = {\n  normal: 'font-normal',\n  medium: 'font-medium',\n  semibold: 'font-semibold',\n  bold: 'font-bold',\n};\n\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n  (\n    {\n      href,\n      to,\n      variant = 'default',\n      external = false,\n      download,\n      underline = 'hover',\n      weight = 'normal',\n      icon,\n      iconPosition = 'right',\n      children,\n      className,\n      onClick,\n    },\n    ref\n  ) => {\n    const linkHref = href || to || '#';\n    const isExternal = external || (typeof linkHref === 'string' && linkHref.startsWith('http'));\n\n    const externalProps = isExternal\n      ? {\n          target: '_blank',\n          rel: 'noopener noreferrer',\n        }\n      : {};\n\n    const downloadProps = download\n      ? {\n          download: typeof download === 'string' ? download : true,\n        }\n      : {};\n\n    const iconElement = icon && (\n      <span className={cn('inline-flex items-center', iconPosition === 'left' ? 'mr-1' : 'ml-1')}>\n        {icon}\n      </span>\n    );\n\n    return (\n      <a\n        ref={ref}\n        href={linkHref}\n        className={cn(\n          variant === 'nav'\n            ? 'flex items-center focus-ring'\n            : 'inline-flex items-center focus-ring',\n          variantClasses[variant],\n          underlineClasses[underline],\n          weightClasses[weight],\n          'transition-colors duration-200',\n          'focus:!outline-none focus:!ring-1 focus:!ring-primary focus:!ring-offset-1',\n          className\n        )}\n        onClick={onClick}\n        {...externalProps}\n        {...downloadProps}\n      >\n        {iconPosition === 'left' && iconElement}\n        {children}\n        {iconPosition === 'right' && iconElement}\n      </a>\n    );\n  }\n);\n\nLink.displayName = 'Link';\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\n\ntype CodeTheme = 'light' | 'dark' | 'auto';\n\nexport interface CodeProps {\n  children: string;\n  language?: string;\n  inline?: boolean;\n  showLineNumbers?: boolean;\n  highlightLines?: number[];\n  copyButton?: boolean;\n  theme?: CodeTheme;\n  className?: string;\n}\n\nexport const Code = React.forwardRef<HTMLElement, CodeProps>(\n  (\n    {\n      children,\n      language,\n      inline = false,\n      showLineNumbers = false,\n      highlightLines = [],\n      copyButton = false,\n      theme = 'auto',\n      className,\n    },\n    ref\n  ) => {\n    const [copied, setCopied] = React.useState(false);\n\n    const handleCopy = async () => {\n      try {\n        await navigator.clipboard.writeText(children);\n        setCopied(true);\n        setTimeout(() => setCopied(false), 2000);\n      } catch (err) {\n        console.error('Failed to copy:', err);\n      }\n    };\n\n    if (inline) {\n      return (\n        <code\n          ref={ref as React.Ref<HTMLElement>}\n          className={cn(\n            'px-1.5 py-0.5 rounded text-sm font-mono',\n            'bg-base-200 text-base-content',\n            className\n          )}\n        >\n          {children}\n        </code>\n      );\n    }\n\n    const lines = children.split('\\n');\n    const lineNumberWidth = lines.length.toString().length;\n\n    return (\n      <div className={cn('relative group', className)}>\n        <pre\n          ref={ref as React.Ref<HTMLPreElement>}\n          className={cn(\n            'overflow-x-auto p-4 rounded-lg text-sm',\n            'bg-base-200 text-base-content',\n            theme === 'dark' && 'bg-base-300',\n            theme === 'auto' && 'dark:bg-base-300',\n            showLineNumbers && 'pl-12'\n          )}\n        >\n          {showLineNumbers && (\n            <div className=\"absolute left-0 top-0 bottom-0 w-12 flex flex-col py-4 text-right pr-3 select-none\">\n              {lines.map((_, index) => (\n                <span\n                  key={index}\n                  className={cn(\n                    'text-base-content/50 text-xs leading-6 font-mono',\n                    highlightLines.includes(index + 1) && 'text-primary font-semibold'\n                  )}\n                  style={{ minWidth: `${lineNumberWidth}ch` }}\n                >\n                  {index + 1}\n                </span>\n              ))}\n            </div>\n          )}\n          <code className={cn('font-mono', language && `language-${language}`)}>\n            {lines.map((line, index) => (\n              <div\n                key={index}\n                className={cn(\n                  'leading-6',\n                  highlightLines.includes(index + 1) && 'bg-primary/10 -mx-4 px-4'\n                )}\n              >\n                {line || '\\n'}\n              </div>\n            ))}\n          </code>\n        </pre>\n\n        {copyButton && (\n          <button\n            onClick={handleCopy}\n            className={cn(\n              'absolute top-2 right-2',\n              'btn btn-sm btn-ghost',\n              'opacity-0 group-hover:opacity-100 transition-opacity',\n              'focus:opacity-100'\n            )}\n            aria-label=\"Copy code\"\n          >\n            {copied ? (\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"text-success\">\n                <path\n                  d=\"M13.5 4.5L6 12L2.5 8.5\"\n                  stroke=\"currentColor\"\n                  strokeWidth=\"1.5\"\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                />\n              </svg>\n            ) : (\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n                <rect\n                  x=\"5.5\"\n                  y=\"5.5\"\n                  width=\"8\"\n                  height=\"8\"\n                  rx=\"1\"\n                  stroke=\"currentColor\"\n                  strokeWidth=\"1.5\"\n                />\n                <path\n                  d=\"M10.5 5.5V3.5C10.5 2.94772 10.0523 2.5 9.5 2.5H3.5C2.94772 2.5 2.5 2.94772 2.5 3.5V9.5C2.5 10.0523 2.94772 10.5 3.5 10.5H5.5\"\n                  stroke=\"currentColor\"\n                  strokeWidth=\"1.5\"\n                />\n              </svg>\n            )}\n          </button>\n        )}\n\n        {language && (\n          <div className=\"absolute top-2 left-2 text-xs text-base-content/50 font-mono\">\n            {language}\n          </div>\n        )}\n      </div>\n    );\n  }\n);\n\nCode.displayName = 'Code';\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\n\ntype ListElement = 'ul' | 'ol';\ntype ListStyleType = 'disc' | 'circle' | 'square' | 'decimal' | 'alpha' | 'roman' | 'none';\ntype ListSpacing = 'tight' | 'normal' | 'loose';\n\nexport interface ListProps {\n  as?: ListElement;\n  children: React.ReactNode;\n  styleType?: ListStyleType;\n  spacing?: ListSpacing;\n  columns?: 1 | 2 | 3 | 4;\n  horizontal?: boolean;\n  className?: string;\n}\n\nexport interface ListItemProps {\n  children: React.ReactNode;\n  icon?: React.ReactNode;\n  className?: string;\n}\n\nconst styleTypeClasses: Record<ListStyleType, string> = {\n  disc: 'list-disc',\n  circle: 'list-circle',\n  square: 'list-square',\n  decimal: 'list-decimal',\n  alpha: 'list-alpha',\n  roman: 'list-roman',\n  none: 'list-none',\n};\n\nconst spacingClasses: Record<ListSpacing, string> = {\n  tight: 'space-y-1',\n  normal: 'space-y-2',\n  loose: 'space-y-4',\n};\n\nconst columnsClasses: Record<number, string> = {\n  1: '',\n  2: 'columns-2',\n  3: 'columns-3',\n  4: 'columns-4',\n};\n\nexport const List = React.forwardRef<HTMLUListElement | HTMLOListElement, ListProps>(\n  (\n    {\n      as: Component = 'ul',\n      children,\n      styleType = Component === 'ul' ? 'disc' : 'decimal',\n      spacing = 'normal',\n      columns = 1,\n      horizontal = false,\n      className,\n    },\n    ref\n  ) => {\n    return (\n      <Component\n        ref={ref as any}\n        className={cn(\n          styleTypeClasses[styleType],\n          !horizontal && spacingClasses[spacing],\n          horizontal && 'flex flex-wrap gap-4',\n          columnsClasses[columns],\n          styleType !== 'none' && !horizontal && 'pl-5',\n          'text-base-content',\n          className\n        )}\n      >\n        {children}\n      </Component>\n    );\n  }\n);\n\nList.displayName = 'List';\n\nexport const ListItem = React.forwardRef<HTMLLIElement, ListItemProps>(\n  ({ children, icon, className }, ref) => {\n    if (icon) {\n      return (\n        <li ref={ref} className={cn('flex items-start gap-2', className)}>\n          <span className=\"flex-shrink-0 mt-0.5\" aria-hidden=\"true\">\n            {icon}\n          </span>\n          <span>{children}</span>\n        </li>\n      );\n    }\n\n    return (\n      <li ref={ref} className={className}>\n        {children}\n      </li>\n    );\n  }\n);\n\nListItem.displayName = 'ListItem';\n","import React from 'react';\nimport { Link } from '../Typography';\nimport { cn } from '../../utils/cn';\n\nexport interface LogoProps {\n  /** Use gradient text with highlight effect */\n  withHighlight?: boolean;\n  /** Size of the logo text */\n  size?: 'sm' | 'md' | 'lg' | 'xl';\n  /** Whether to wrap the logo in a link */\n  withLink?: boolean;\n  /** Additional CSS classes */\n  className?: string;\n  /** Custom text to display (defaults to \"Orchard9\") */\n  text?: string;\n  /** Custom href for the link (defaults to \"/\") */\n  href?: string;\n}\n\n/**\n * Logo component for displaying the brand name with gradient styling\n * @example\n * <Logo size=\"lg\" withHighlight />\n */\nexport const Logo: React.FC<LogoProps> = ({\n  withHighlight = false,\n  size = 'md',\n  withLink = true,\n  className,\n  text = 'Orchard9',\n  href = '/',\n}) => {\n  const sizeClasses = {\n    sm: 'text-lg',\n    md: 'text-xl',\n    lg: 'text-2xl',\n    xl: 'text-4xl md:text-5xl',\n  };\n\n  const baseClasses = cn(\n    'font-bold',\n    sizeClasses[size],\n    'bg-gradient-to-r from-emerald-400 to-teal-500 bg-clip-text text-transparent',\n    withHighlight && 'via-emerald-300',\n    className\n  );\n\n  const content = <span className={baseClasses}>{text}</span>;\n\n  if (withLink) {\n    return (\n      <Link\n        href={href}\n        className=\"hover:opacity-80 transition-opacity inline-flex items-center gap-2\"\n      >\n        {content}\n      </Link>\n    );\n  }\n\n  return content;\n};\n","import * as React from 'react';\nimport { ErrorInfo } from 'react';\n\nexport interface ErrorFallbackProps {\n  error: Error;\n  resetErrorBoundary: () => void;\n  errorInfo?: ErrorInfo;\n}\n\nexport interface ErrorBoundaryProps {\n  children: React.ReactNode;\n  fallback?: React.ComponentType<ErrorFallbackProps>;\n  onError?: (error: Error, errorInfo: ErrorInfo) => void;\n  resetKeys?: Array<string | number>;\n  resetOnPropsChange?: boolean;\n  isolate?: boolean;\n  level?: 'page' | 'section' | 'component';\n}\n\ninterface ErrorBoundaryState {\n  hasError: boolean;\n  error: Error | null;\n  errorInfo: ErrorInfo | null;\n}\n\nconst DefaultErrorFallback: React.FC<ErrorFallbackProps> = ({ error, resetErrorBoundary }) => {\n  const isDevelopment = process.env['NODE_ENV'] === 'development';\n\n  return (\n    <div className=\"min-h-[200px] flex items-center justify-center p-8\">\n      <div className=\"text-center max-w-md\">\n        <h2 className=\"text-2xl font-bold text-error mb-4\">Something went wrong</h2>\n        <p className=\"text-base-content/70 mb-6\">\n          We're sorry, but something unexpected happened. Please try again.\n        </p>\n\n        {isDevelopment && error && (\n          <details className=\"mb-6 text-left\">\n            <summary className=\"cursor-pointer text-sm text-base-content/70 hover:text-base-content\">\n              Error details\n            </summary>\n            <pre className=\"mt-2 p-4 bg-base-200 rounded text-xs overflow-auto max-h-64\">\n              {error.stack || error.toString()}\n            </pre>\n          </details>\n        )}\n\n        <button onClick={resetErrorBoundary} className=\"btn btn-primary\">\n          Try Again\n        </button>\n      </div>\n    </div>\n  );\n};\n\nexport class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n  private resetTimeoutId: NodeJS.Timeout | null = null;\n  private previousResetKeys: Array<string | number> = [];\n\n  constructor(props: ErrorBoundaryProps) {\n    super(props);\n    this.state = {\n      hasError: false,\n      error: null,\n      errorInfo: null,\n    };\n  }\n\n  static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState> {\n    return {\n      hasError: true,\n      error,\n    };\n  }\n\n  override componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n    const { onError } = this.props;\n\n    // Update state with error info\n    this.setState({\n      errorInfo,\n    });\n\n    // Call error handler if provided\n    if (onError) {\n      onError(error, errorInfo);\n    }\n\n    // Log error in development\n    if (process.env['NODE_ENV'] === 'development') {\n      console.error('ErrorBoundary caught an error:', error, errorInfo);\n    }\n  }\n\n  override componentDidUpdate(prevProps: ErrorBoundaryProps) {\n    const { resetKeys, resetOnPropsChange } = this.props;\n    const { hasError } = this.state;\n\n    // Reset on resetKeys change\n    if (hasError && resetKeys) {\n      const hasResetKeyChanged = resetKeys.some(\n        (key, index) => key !== this.previousResetKeys[index]\n      );\n\n      if (hasResetKeyChanged) {\n        this.resetErrorBoundary();\n      }\n    }\n\n    // Reset on any props change if enabled\n    if (hasError && resetOnPropsChange && prevProps !== this.props) {\n      this.resetErrorBoundary();\n    }\n\n    this.previousResetKeys = resetKeys || [];\n  }\n\n  override componentWillUnmount() {\n    if (this.resetTimeoutId) {\n      clearTimeout(this.resetTimeoutId);\n    }\n  }\n\n  resetErrorBoundary = () => {\n    this.setState({\n      hasError: false,\n      error: null,\n      errorInfo: null,\n    });\n  };\n\n  override render() {\n    const { hasError, error, errorInfo } = this.state;\n    const { fallback: Fallback = DefaultErrorFallback, children, isolate, level } = this.props;\n\n    if (hasError && error) {\n      const errorBoundaryClass = isolate\n        ? 'error-boundary-isolated'\n        : `error-boundary-${level || 'component'}`;\n\n      return (\n        <div className={errorBoundaryClass}>\n          <Fallback\n            error={error}\n            {...(errorInfo ? { errorInfo } : {})}\n            resetErrorBoundary={this.resetErrorBoundary}\n          />\n        </div>\n      );\n    }\n\n    return children;\n  }\n}\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { Button } from '../Button/Button';\n\nexport interface ErrorAction {\n  label: string;\n  href?: string;\n  onClick?: () => void;\n  variant?: 'primary' | 'secondary' | 'ghost';\n  icon?: React.ReactNode;\n}\n\nexport interface ErrorPageProps {\n  code?: 404 | 500 | 403 | 401 | number;\n  title?: string;\n  description?: string;\n  illustration?: React.ReactNode;\n  actions?: ErrorAction[];\n  showDetails?: boolean;\n  error?: Error;\n  className?: string;\n}\n\n// Default illustrations as simple SVG components\nconst NotFoundIllustration = () => (\n  <svg className=\"w-64 h-64\" viewBox=\"0 0 256 256\" fill=\"none\">\n    <circle cx=\"128\" cy=\"128\" r=\"96\" stroke=\"currentColor\" strokeWidth=\"8\" opacity=\"0.2\" />\n    <path\n      d=\"M88 104C88 95.1634 95.1634 88 104 88H152C160.837 88 168 95.1634 168 104V104C168 112.837 160.837 120 152 120H104C95.1634 120 88 112.837 88 104V104Z\"\n      fill=\"currentColor\"\n      opacity=\"0.3\"\n    />\n    <rect x=\"88\" y=\"136\" width=\"80\" height=\"16\" rx=\"8\" fill=\"currentColor\" opacity=\"0.3\" />\n    <rect x=\"104\" y=\"168\" width=\"48\" height=\"16\" rx=\"8\" fill=\"currentColor\" opacity=\"0.3\" />\n  </svg>\n);\n\nconst ServerErrorIllustration = () => (\n  <svg className=\"w-64 h-64\" viewBox=\"0 0 256 256\" fill=\"none\">\n    <rect\n      x=\"64\"\n      y=\"80\"\n      width=\"128\"\n      height=\"96\"\n      rx=\"8\"\n      stroke=\"currentColor\"\n      strokeWidth=\"8\"\n      opacity=\"0.2\"\n    />\n    <circle cx=\"88\" cy=\"104\" r=\"8\" fill=\"currentColor\" opacity=\"0.5\" />\n    <circle cx=\"112\" cy=\"104\" r=\"8\" fill=\"currentColor\" opacity=\"0.5\" />\n    <circle cx=\"136\" cy=\"104\" r=\"8\" fill=\"currentColor\" opacity=\"0.5\" />\n    <path\n      d=\"M88 128H168M88 144H168M88 160H168\"\n      stroke=\"currentColor\"\n      strokeWidth=\"8\"\n      strokeLinecap=\"round\"\n      opacity=\"0.3\"\n    />\n  </svg>\n);\n\nconst ForbiddenIllustration = () => (\n  <svg className=\"w-64 h-64\" viewBox=\"0 0 256 256\" fill=\"none\">\n    <circle cx=\"128\" cy=\"128\" r=\"96\" stroke=\"currentColor\" strokeWidth=\"8\" opacity=\"0.2\" />\n    <path\n      d=\"M128 88V144M128 168V176\"\n      stroke=\"currentColor\"\n      strokeWidth=\"16\"\n      strokeLinecap=\"round\"\n      opacity=\"0.5\"\n    />\n  </svg>\n);\n\nconst UnauthorizedIllustration = () => (\n  <svg className=\"w-64 h-64\" viewBox=\"0 0 256 256\" fill=\"none\">\n    <rect\n      x=\"88\"\n      y=\"96\"\n      width=\"80\"\n      height=\"96\"\n      rx=\"8\"\n      stroke=\"currentColor\"\n      strokeWidth=\"8\"\n      opacity=\"0.2\"\n    />\n    <circle cx=\"128\" cy=\"120\" r=\"16\" fill=\"currentColor\" opacity=\"0.3\" />\n    <path\n      d=\"M112 144C112 135.163 119.163 128 128 128V128C136.837 128 144 135.163 144 144V168\"\n      stroke=\"currentColor\"\n      strokeWidth=\"8\"\n      strokeLinecap=\"round\"\n      opacity=\"0.3\"\n    />\n  </svg>\n);\n\nconst errorTemplates = {\n  404: {\n    title: 'Page Not Found',\n    description: \"The page you're looking for doesn't exist or has been moved.\",\n    illustration: <NotFoundIllustration />,\n    actions: [\n      { label: 'Go Home', href: '/', variant: 'primary' as const },\n      { label: 'Go Back', onClick: () => window.history.back(), variant: 'secondary' as const },\n    ],\n  },\n  500: {\n    title: 'Something Went Wrong',\n    description: \"We're having technical difficulties. Please try again later.\",\n    illustration: <ServerErrorIllustration />,\n    actions: [\n      { label: 'Retry', onClick: () => window.location.reload(), variant: 'primary' as const },\n      { label: 'Go Home', href: '/', variant: 'secondary' as const },\n    ],\n  },\n  403: {\n    title: 'Access Denied',\n    description: \"You don't have permission to view this page.\",\n    illustration: <ForbiddenIllustration />,\n    actions: [\n      { label: 'Go Home', href: '/', variant: 'primary' as const },\n      { label: 'Contact Support', href: '/support', variant: 'secondary' as const },\n    ],\n  },\n  401: {\n    title: 'Authentication Required',\n    description: 'Please log in to access this page.',\n    illustration: <UnauthorizedIllustration />,\n    actions: [\n      { label: 'Log In', href: '/login', variant: 'primary' as const },\n      { label: 'Go Home', href: '/', variant: 'secondary' as const },\n    ],\n  },\n};\n\nexport const ErrorPage = React.forwardRef<HTMLDivElement, ErrorPageProps>(\n  (\n    {\n      code = 404,\n      title,\n      description,\n      illustration,\n      actions,\n      showDetails = false,\n      error,\n      className,\n    },\n    ref\n  ) => {\n    const template = errorTemplates[code as keyof typeof errorTemplates] || errorTemplates[404];\n    const finalTitle = title || template.title;\n    const finalDescription = description || template.description;\n    const finalIllustration = illustration || template.illustration;\n    const finalActions = actions || template.actions;\n\n    const isDevelopment =\n      typeof process !== 'undefined' && process.env && process.env['NODE_ENV'] === 'development';\n\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          'min-h-screen flex items-center justify-center p-4',\n          'bg-base-100',\n          className\n        )}\n      >\n        <div className=\"max-w-md w-full text-center relative\">\n          {/* Illustration - Absolutely positioned and centered */}\n          <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none\">\n            <div className=\"text-base-content\">{finalIllustration}</div>\n          </div>\n\n          {/* Content - Relative positioned to appear above illustration */}\n          <div className=\"relative z-10\">\n            {/* Error Code */}\n            <div className=\"text-6xl font-bold text-base-content/80 mb-4\">{code}</div>\n\n            {/* Title */}\n            <h1 className=\"text-2xl font-bold mb-2 text-base-content\">{finalTitle}</h1>\n\n            {/* Description */}\n            <p className=\"text-base-content/70 mb-8\">{finalDescription}</p>\n\n            {/* Actions */}\n            <div className=\"flex flex-col sm:flex-row gap-4 justify-center\">\n              {finalActions.map((action, index) => {\n                if ('href' in action && action.href) {\n                  return (\n                    <a\n                      key={index}\n                      href={action.href}\n                      className={cn(\n                        'btn',\n                        action.variant && `btn-${action.variant}`,\n                        'inline-flex items-center justify-center gap-2'\n                      )}\n                    >\n                      {'icon' in action && action.icon && action.icon}\n                      {action.label}\n                    </a>\n                  );\n                }\n                return (\n                  <Button\n                    key={index}\n                    variant={action.variant || 'primary'}\n                    onClick={'onClick' in action ? action.onClick : undefined}\n                    className=\"inline-flex items-center justify-center gap-2\"\n                  >\n                    {'icon' in action && action.icon && action.icon}\n                    {action.label}\n                  </Button>\n                );\n              })}\n            </div>\n\n            {/* Error Details (dev mode) */}\n            {showDetails && error && isDevelopment && (\n              <details className=\"mt-8 text-left\">\n                <summary className=\"cursor-pointer text-sm text-base-content/70 hover:text-base-content\">\n                  Technical Details\n                </summary>\n                <pre className=\"mt-2 p-4 bg-base-200 rounded text-xs overflow-auto max-h-64\">\n                  {error.stack || error.toString()}\n                </pre>\n              </details>\n            )}\n          </div>\n        </div>\n      </div>\n    );\n  }\n);\n\nErrorPage.displayName = 'ErrorPage';\n","import React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n  variant?:\n    | 'primary'\n    | 'secondary'\n    | 'accent'\n    | 'info'\n    | 'success'\n    | 'warning'\n    | 'error'\n    | 'ghost'\n    | 'link'\n    | 'outline'\n    | 'neutral';\n  size?: 'xs' | 'sm' | 'md' | 'lg';\n  shape?: 'default' | 'square' | 'circle';\n  loading?: boolean | { text?: string };\n  fullWidth?: boolean;\n  active?: boolean;\n  glass?: boolean;\n  noAnimation?: boolean;\n  as?: React.ElementType;\n  startIcon?: React.ReactNode;\n  endIcon?: React.ReactNode;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  (\n    {\n      variant,\n      size = 'md',\n      shape = 'default',\n      loading = false,\n      fullWidth = false,\n      active = false,\n      glass = false,\n      noAnimation = false,\n      as: Component = 'button',\n      startIcon,\n      endIcon,\n      children,\n      className,\n      disabled,\n      ...props\n    },\n    ref\n  ) => {\n    const isLoading = !!loading;\n    const loadingText = typeof loading === 'object' ? loading.text : undefined;\n\n    const classes = cn(\n      'btn',\n      'focus-interactive', // Use standardized focus utilities\n      // Variants\n      variant === 'primary' && 'btn-primary',\n      variant === 'secondary' && 'btn-secondary',\n      variant === 'accent' && 'btn-accent',\n      variant === 'info' && 'btn-info',\n      variant === 'success' && 'btn-success',\n      variant === 'warning' && 'btn-warning',\n      variant === 'error' && 'btn-error',\n      variant === 'ghost' && 'btn-ghost',\n      variant === 'link' && 'btn-link',\n      variant === 'outline' && 'btn-outline',\n      variant === 'neutral' && 'btn-neutral',\n      // Sizes\n      size === 'xs' && 'btn-xs',\n      size === 'sm' && 'btn-sm',\n      size === 'lg' && 'btn-lg',\n      // Shapes\n      shape === 'square' && 'btn-square',\n      shape === 'circle' && 'btn-circle',\n      // States\n      active && 'btn-active',\n      glass && 'glass',\n      noAnimation && 'no-animation',\n      fullWidth && 'btn-block',\n      className\n    );\n\n    return (\n      <Component ref={ref} className={classes} disabled={disabled || isLoading} {...props}>\n        {isLoading && <span className=\"loading loading-spinner loading-xs\"></span>}\n        {startIcon && !isLoading && <span className=\"btn-start-icon\">{startIcon}</span>}\n        {loadingText && isLoading ? loadingText : children}\n        {endIcon && !isLoading && <span className=\"btn-end-icon\">{endIcon}</span>}\n      </Component>\n    );\n  }\n);\n\nButton.displayName = 'Button';\nexport { Button };\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\n\ntype ErrorMessageVariant = 'error' | 'warning' | 'info';\n\nexport interface ErrorMessageProps {\n  error?: string | Error | null;\n  errors?: string[] | Error[];\n  icon?: React.ReactNode;\n  dismissible?: boolean;\n  onDismiss?: () => void;\n  className?: string;\n  variant?: ErrorMessageVariant;\n}\n\nconst defaultIcons: Record<ErrorMessageVariant, React.ReactNode> = {\n  error: (\n    <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"flex-shrink-0\">\n      <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" />\n      <path d=\"M8 5V9M8 11V11.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n    </svg>\n  ),\n  warning: (\n    <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"flex-shrink-0\">\n      <path\n        d=\"M7.2 3.5C7.6 2.8 8.4 2.8 8.8 3.5L14.4 13C14.8 13.7 14.4 14.5 13.6 14.5H2.4C1.6 14.5 1.2 13.7 1.6 13L7.2 3.5Z\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinejoin=\"round\"\n      />\n      <path d=\"M8 6V9M8 11.5V12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n    </svg>\n  ),\n  info: (\n    <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"flex-shrink-0\">\n      <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" />\n      <path d=\"M8 7V11M8 5V5.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n    </svg>\n  ),\n};\n\nconst variantClasses: Record<ErrorMessageVariant, string> = {\n  error: 'text-error border-error/20 bg-error/10',\n  warning: 'text-warning border-warning/20 bg-warning/10',\n  info: 'text-info border-info/20 bg-info/10',\n};\n\nexport const ErrorMessage = React.forwardRef<HTMLDivElement, ErrorMessageProps>(\n  ({ error, errors, icon, dismissible = false, onDismiss, className, variant = 'error' }, ref) => {\n    const [isVisible, setIsVisible] = React.useState(true);\n\n    // Normalize errors into array\n    const errorList = React.useMemo(() => {\n      if (errors) {\n        return errors.map((e) => (e instanceof Error ? e.message : e));\n      }\n      if (error) {\n        return [error instanceof Error ? error.message : error];\n      }\n      return [];\n    }, [error, errors]);\n\n    const handleDismiss = () => {\n      setIsVisible(false);\n      onDismiss?.();\n    };\n\n    if (!isVisible || errorList.length === 0) {\n      return null;\n    }\n\n    const finalIcon = icon || defaultIcons[variant];\n\n    return (\n      <div\n        ref={ref}\n        role=\"alert\"\n        className={cn(\n          'relative flex gap-3 p-3 rounded-lg border',\n          variantClasses[variant],\n          'animate-in fade-in slide-in-from-top-1 duration-200',\n          className\n        )}\n      >\n        {finalIcon && <div className=\"mt-0.5\">{finalIcon}</div>}\n\n        <div className=\"flex-1 space-y-1\">\n          {errorList.map((msg, index) => (\n            <div key={index} className=\"text-sm\">\n              {msg}\n            </div>\n          ))}\n        </div>\n\n        {dismissible && (\n          <button\n            onClick={handleDismiss}\n            className=\"flex-shrink-0 p-0.5 hover:bg-base-content/10 rounded transition-colors\"\n            aria-label=\"Dismiss error\"\n          >\n            <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n              <path\n                d=\"M12 4L4 12M4 4L12 12\"\n                stroke=\"currentColor\"\n                strokeWidth=\"2\"\n                strokeLinecap=\"round\"\n              />\n            </svg>\n          </button>\n        )}\n      </div>\n    );\n  }\n);\n\nErrorMessage.displayName = 'ErrorMessage';\n","import React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ButtonGroupProps {\n  children: React.ReactNode;\n  vertical?: boolean;\n  className?: string;\n}\n\nexport const ButtonGroup: React.FC<ButtonGroupProps> = ({\n  children,\n  vertical = false,\n  className,\n}) => {\n  return (\n    <div className={cn('btn-group', vertical && 'btn-group-vertical', className)}>{children}</div>\n  );\n};\n","import React, { createContext, useContext, useEffect, useState, useCallback, useMemo } from 'react';\nimport { Theme, ThemeContext as IThemeContext, ThemeColors, ThemeProviderProps } from './types';\n\nconst ThemeContext = createContext<IThemeContext | undefined>(undefined);\n\n// Script to inject for preventing FOUC\n// Can be customized with defaultTheme parameter\nexport const themeInitScript = (defaultTheme?: string) => `\n  (function() {\n    const theme = localStorage.getItem('theme');\n    const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n    const fallbackTheme = ${defaultTheme ? `'${defaultTheme}'` : 'systemTheme'};\n    document.documentElement.setAttribute('data-theme', theme || fallbackTheme);\n  })();\n`;\n\n/**\n * ThemeProvider with automatic localStorage persistence and system preference detection.\n *\n * @example\n * // Basic usage - themes are automatically persisted\n * <ThemeProvider defaultTheme=\"grove-light\">\n *   <App />\n * </ThemeProvider>\n *\n * // With theme change callback\n * <ThemeProvider\n *   defaultTheme=\"grove-dark\"\n *   onThemeChange={(theme) => analytics.track('theme_changed', { theme })}\n * >\n *   <App />\n * </ThemeProvider>\n *\n * // Access theme state in components\n * const { theme, setTheme, themes } = useTheme();\n *\n * @param props - ThemeProvider configuration\n * @param props.children - Child components to wrap\n * @param props.defaultTheme - Default theme when no stored preference exists\n * @param props.initialTheme - Override theme for testing/Storybook (skips persistence)\n * @param props.onThemeChange - Callback fired when theme changes\n * @param props.disableInitialTransition - Prevent transition animation on initial load (default: true)\n */\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n  children,\n  defaultTheme = 'light',\n  initialTheme,\n  onThemeChange,\n  disableInitialTransition = true,\n}) => {\n  // Development-time prop validation\n  if (typeof process !== 'undefined' && process.env && process.env['NODE_ENV'] === 'development') {\n    // Check for common mistakes\n    const propsToValidate = {\n      children,\n      defaultTheme,\n      initialTheme,\n      onThemeChange,\n      disableInitialTransition,\n    };\n    const invalidProps = Object.keys(propsToValidate as Record<string, unknown>).filter(\n      (key) =>\n        ![\n          'children',\n          'defaultTheme',\n          'initialTheme',\n          'onThemeChange',\n          'disableInitialTransition',\n        ].includes(key)\n    );\n\n    if (invalidProps.length > 0) {\n      console.warn(\n        `ThemeProvider: Invalid props detected: ${invalidProps.join(', ')}.\\n` +\n          `Valid props are: children, defaultTheme, initialTheme, onThemeChange, disableInitialTransition.\\n` +\n          `See docs: https://design-system.orchard9.ai/theme`\n      );\n    }\n\n    if (\n      defaultTheme &&\n      !['light', 'dark', 'cupcake', 'business', 'grove-light', 'grove-dark', 'dawn', 'dusk'].includes(defaultTheme)\n    ) {\n      console.warn(\n        `ThemeProvider: Invalid defaultTheme \"${defaultTheme}\".\\n` +\n          `Valid themes are: light, dark, cupcake, business, grove-light, grove-dark, dawn, dusk.`\n      );\n    }\n  }\n\n  const [theme, setThemeState] = useState<Theme>(initialTheme || defaultTheme);\n  const [systemTheme, setSystemTheme] = useState<'light' | 'dark'>('light');\n  const [colors, setColors] = useState<ThemeColors>({} as ThemeColors);\n  const [isInitialized, setIsInitialized] = useState(false);\n\n  const themes = useMemo<Theme[]>(\n    () => ['light', 'dark', 'cupcake', 'business', 'grove-light', 'grove-dark', 'dawn', 'dusk'],\n    []\n  );\n\n  // Get computed theme colors\n  const updateColors = useCallback(() => {\n    const computed = getComputedStyle(document.documentElement);\n    const newColors: Partial<ThemeColors> = {};\n\n    // DaisyUI color variables\n    const colorVars = [\n      'primary',\n      'primary-focus',\n      'primary-content',\n      'secondary',\n      'secondary-focus',\n      'secondary-content',\n      'accent',\n      'accent-focus',\n      'accent-content',\n      'neutral',\n      'neutral-focus',\n      'neutral-content',\n      'base-100',\n      'base-200',\n      'base-300',\n      'base-content',\n      'info',\n      'success',\n      'warning',\n      'error',\n    ];\n\n    colorVars.forEach((color) => {\n      const hsl = computed.getPropertyValue(`--${color}`).trim();\n      if (hsl) {\n        newColors[color as keyof ThemeColors] = `hsl(${hsl})`;\n      }\n    });\n\n    setColors(newColors as ThemeColors);\n  }, []);\n\n  // Initialize theme from localStorage or system preference (skip if initialTheme provided)\n  useEffect(() => {\n    // If initialTheme is provided (e.g., from Storybook), don't override it\n    if (initialTheme) {\n      return;\n    }\n\n    const stored = localStorage.getItem('theme') as Theme | null;\n    const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n\n    setSystemTheme(mediaQuery.matches ? 'dark' : 'light');\n\n    if (stored && themes.includes(stored)) {\n      setThemeState(stored);\n    } else if (defaultTheme && themes.includes(defaultTheme)) {\n      // Respect defaultTheme before falling back to system preference\n      setThemeState(defaultTheme);\n    } else if (mediaQuery.matches) {\n      setThemeState('dark');\n    } else {\n      setThemeState('light');\n    }\n\n    const handleChange = (e: MediaQueryListEvent) => {\n      setSystemTheme(e.matches ? 'dark' : 'light');\n      if (!localStorage.getItem('theme')) {\n        setThemeState(e.matches ? 'dark' : 'light');\n      }\n    };\n\n    mediaQuery.addEventListener('change', handleChange);\n    return () => mediaQuery.removeEventListener('change', handleChange);\n  }, [themes, initialTheme, defaultTheme]);\n\n  // Apply theme and update colors\n  useEffect(() => {\n    document.documentElement.setAttribute('data-theme', theme);\n\n    // Only apply transition after initial load to prevent FOUC\n    if (disableInitialTransition && !isInitialized) {\n      // Skip transition on initial load\n    } else {\n      document.documentElement.style.setProperty(\n        'transition',\n        'background-color 0.3s ease, color 0.3s ease'\n      );\n    }\n\n    localStorage.setItem('theme', theme);\n\n    // Update colors after theme change\n    requestAnimationFrame(updateColors);\n\n    // Emit theme change event\n    window.dispatchEvent(new CustomEvent('themechange', { detail: { theme } }));\n\n    // Call optional callback\n    onThemeChange?.(theme);\n  }, [theme, updateColors, onThemeChange, disableInitialTransition, isInitialized]);\n\n  // Mark as initialized after first mount\n  useEffect(() => {\n    setIsInitialized(true);\n  }, []);\n\n  const setTheme = useCallback((newTheme: Theme) => {\n    setThemeState(newTheme);\n  }, []);\n\n  const value: IThemeContext = {\n    theme,\n    setTheme,\n    themes,\n    systemTheme,\n    colors,\n  };\n\n  return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n};\n\nexport const useTheme = () => {\n  const context = useContext(ThemeContext);\n  if (!context) {\n    throw new Error('useTheme must be used within ThemeProvider');\n  }\n  return context;\n};\n","import React from 'react';\nimport { Button, ButtonProps } from '../Button';\nimport { cn } from '../../utils';\n\nexport interface LoadingButtonProps extends Omit<ButtonProps, 'children'> {\n  /**\n   * Whether the button is in a loading state\n   */\n  loading?: boolean;\n  /**\n   * Text to display when loading\n   * @default \"Loading...\"\n   */\n  loadingText?: string;\n  /**\n   * Custom loading icon/spinner\n   * @default DaisyUI loading spinner\n   */\n  loadingIcon?: React.ReactNode;\n  /**\n   * The button content when not loading\n   */\n  children: React.ReactNode;\n}\n\n/**\n * LoadingButton component that provides built-in loading states\n * Based on feedback from @orchard9ai/create-vite-vike-tauri generator team\n *\n * @example\n * ```tsx\n * <LoadingButton\n *   loading={isSubmitting}\n *   loadingText=\"Saving...\"\n *   onClick={handleSubmit}\n * >\n *   Save Changes\n * </LoadingButton>\n * ```\n */\nexport const LoadingButton = React.forwardRef<HTMLButtonElement, LoadingButtonProps>(\n  (\n    {\n      loading = false,\n      loadingText = 'Loading...',\n      loadingIcon = <span className=\"loading loading-spinner loading-sm\" />,\n      children,\n      disabled,\n      className,\n      ...props\n    },\n    ref\n  ) => {\n    return (\n      <Button\n        ref={ref}\n        disabled={disabled || loading}\n        className={cn('focus-interactive', loading && 'opacity-80', className)}\n        aria-busy={loading}\n        {...props}\n      >\n        {loading ? (\n          <span className=\"inline-flex items-center gap-2\">\n            {loadingIcon}\n            <span>{loadingText}</span>\n          </span>\n        ) : (\n          children\n        )}\n      </Button>\n    );\n  }\n);\n\nLoadingButton.displayName = 'LoadingButton';\n","import React from 'react';\nimport { cn } from '../../utils';\n\nexport interface LoadingContainerProps {\n  /**\n   * Whether the container is in a loading state\n   */\n  loading?: boolean;\n  /**\n   * Custom skeleton component to show when loading\n   */\n  skeleton?: React.ReactNode;\n  /**\n   * The content to display when not loading\n   */\n  children: React.ReactNode;\n  /**\n   * Whether to show an overlay spinner instead of skeleton\n   * @default false\n   */\n  overlay?: boolean;\n  /**\n   * Additional CSS classes\n   */\n  className?: string;\n  /**\n   * Minimum height for the container when loading with overlay\n   * @default \"200px\"\n   */\n  minHeight?: string;\n  /**\n   * Custom loading spinner for overlay mode\n   */\n  spinner?: React.ReactNode;\n}\n\n/**\n * LoadingContainer provides loading states for content areas\n * Based on feedback from @orchard9ai/create-vite-vike-tauri generator team\n *\n * @example\n * ```tsx\n * // With skeleton\n * <LoadingContainer\n *   loading={isLoading}\n *   skeleton={<CardSkeleton />}\n * >\n *   <Card data={data} />\n * </LoadingContainer>\n *\n * // With overlay\n * <LoadingContainer loading={isLoading} overlay>\n *   <DataTable items={items} />\n * </LoadingContainer>\n * ```\n */\nexport const LoadingContainer: React.FC<LoadingContainerProps> = ({\n  loading = false,\n  skeleton,\n  children,\n  overlay = false,\n  className,\n  minHeight = '200px',\n  spinner = <span className=\"loading loading-spinner loading-lg\" />,\n}) => {\n  // Show skeleton if loading and skeleton provided\n  if (loading && skeleton && !overlay) {\n    return <div className={cn('animate-pulse', className)}>{skeleton}</div>;\n  }\n\n  // Show overlay spinner if loading with overlay mode\n  return (\n    <div\n      className={cn('relative', className)}\n      style={loading && overlay ? { minHeight } : undefined}\n      aria-busy={loading}\n    >\n      {children}\n      {loading && overlay && (\n        <div className=\"absolute inset-0 bg-base-100/80 backdrop-blur-sm flex items-center justify-center z-10 focus-container rounded-inherit\">\n          <div className=\"flex flex-col items-center gap-4\">\n            {spinner}\n            <span className=\"text-sm text-base-content/70\">Loading...</span>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import React from 'react';\nimport { cn } from '../../utils';\n\nexport interface LoadingSkeletonProps {\n  /**\n   * Type of skeleton to display\n   */\n  variant?: 'text' | 'circular' | 'rectangular' | 'card';\n  /**\n   * Width of the skeleton (CSS value)\n   */\n  width?: string | number;\n  /**\n   * Height of the skeleton (CSS value)\n   */\n  height?: string | number;\n  /**\n   * Additional CSS classes\n   */\n  className?: string;\n  /**\n   * Number of skeleton lines (for text variant)\n   * @default 1\n   */\n  lines?: number;\n  /**\n   * Whether to animate the skeleton\n   * @default true\n   */\n  animate?: boolean;\n}\n\n/**\n * LoadingSkeleton provides placeholder UI while content loads\n * Based on feedback from @orchard9ai/create-vite-vike-tauri generator team\n *\n * @example\n * ```tsx\n * // Text skeleton\n * <LoadingSkeleton variant=\"text\" lines={3} />\n *\n * // Avatar skeleton\n * <LoadingSkeleton variant=\"circular\" width={48} height={48} />\n *\n * // Card skeleton\n * <LoadingSkeleton variant=\"card\" height={200} />\n * ```\n */\nexport const LoadingSkeleton: React.FC<LoadingSkeletonProps> = ({\n  variant = 'text',\n  width,\n  height,\n  className,\n  lines = 1,\n  animate = true,\n}) => {\n  const baseClasses = cn('bg-base-300', animate && 'animate-pulse', className);\n\n  const style: React.CSSProperties = {\n    width: typeof width === 'number' ? `${width}px` : width,\n    height: typeof height === 'number' ? `${height}px` : height,\n  };\n\n  // Text skeleton with multiple lines\n  if (variant === 'text' && lines > 1) {\n    return (\n      <div className=\"space-y-2\">\n        {Array.from({ length: lines }).map((_, index) => (\n          <div\n            key={index}\n            className={cn(\n              baseClasses,\n              'h-4 rounded',\n              // Make last line shorter for natural text appearance\n              index === lines - 1 && 'w-3/4'\n            )}\n            style={{ width: index === lines - 1 ? '75%' : width }}\n          />\n        ))}\n      </div>\n    );\n  }\n\n  // Single element skeletons\n  const variantClasses = {\n    text: 'h-4 rounded',\n    circular: 'rounded-full',\n    rectangular: 'rounded',\n    card: 'rounded-lg',\n  };\n\n  // Card skeleton with predefined structure\n  if (variant === 'card') {\n    return (\n      <div className={cn(baseClasses, 'p-4 space-y-3', variantClasses[variant])} style={style}>\n        {/* Card header skeleton */}\n        <div className=\"flex items-center space-x-3\">\n          <div className=\"w-10 h-10 bg-base-200 rounded-full animate-pulse\" />\n          <div className=\"flex-1 space-y-2\">\n            <div className=\"h-4 bg-base-200 rounded w-3/4 animate-pulse\" />\n            <div className=\"h-3 bg-base-200 rounded w-1/2 animate-pulse\" />\n          </div>\n        </div>\n        {/* Card body skeleton */}\n        <div className=\"space-y-2\">\n          <div className=\"h-3 bg-base-200 rounded animate-pulse\" />\n          <div className=\"h-3 bg-base-200 rounded animate-pulse\" />\n          <div className=\"h-3 bg-base-200 rounded w-5/6 animate-pulse\" />\n        </div>\n      </div>\n    );\n  }\n\n  // Default single element skeleton\n  return (\n    <div\n      className={cn(baseClasses, variantClasses[variant])}\n      style={style}\n      role=\"status\"\n      aria-label=\"Loading\"\n    >\n      <span className=\"sr-only\">Loading...</span>\n    </div>\n  );\n};\n","import { useState, useCallback, useEffect, useRef } from 'react';\n\nexport interface UseAsyncOperationOptions<T> {\n  /**\n   * Callback to execute when the operation succeeds\n   */\n  onSuccess?: (data: T) => void;\n  /**\n   * Callback to execute when the operation fails\n   */\n  onError?: (error: Error) => void;\n  /**\n   * Whether to execute the operation immediately on mount\n   * @default false\n   */\n  immediate?: boolean;\n  /**\n   * Whether to reset state when dependencies change\n   * @default true\n   */\n  resetOnDepsChange?: boolean;\n}\n\nexport interface AsyncOperationState<T> {\n  /**\n   * Whether the operation is currently loading\n   */\n  loading: boolean;\n  /**\n   * The data returned from the operation\n   */\n  data: T | null;\n  /**\n   * Any error that occurred during the operation\n   */\n  error: Error | null;\n  /**\n   * Whether the operation has been called at least once\n   */\n  called: boolean;\n}\n\nexport interface UseAsyncOperationReturn<T> extends AsyncOperationState<T> {\n  /**\n   * Execute the async operation\n   */\n  execute: () => Promise<T | undefined>;\n  /**\n   * Reset the state to initial values\n   */\n  reset: () => void;\n}\n\n/**\n * Hook for managing async operations with loading, error, and data states\n * Based on feedback from @orchard9ai/create-vite-vike-tauri generator team\n *\n * @example\n * ```tsx\n * const { loading, data, error, execute } = useAsyncOperation(\n *   async () => {\n *     const response = await fetch('/api/data');\n *     return response.json();\n *   },\n *   {\n *     onSuccess: (data) => console.log('Data loaded:', data),\n *     onError: (error) => console.error('Error:', error),\n *   }\n * );\n * ```\n */\nexport function useAsyncOperation<T>(\n  asyncFn: () => Promise<T>,\n  options: UseAsyncOperationOptions<T> = {}\n): UseAsyncOperationReturn<T> {\n  const { onSuccess, onError, immediate = false, resetOnDepsChange = true } = options;\n\n  const [state, setState] = useState<AsyncOperationState<T>>({\n    loading: false,\n    data: null,\n    error: null,\n    called: false,\n  });\n\n  // Track if component is mounted to prevent state updates after unmount\n  const isMountedRef = useRef(true);\n\n  // Track the current operation to handle race conditions\n  const operationIdRef = useRef(0);\n\n  useEffect(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n\n  const execute = useCallback(async (): Promise<T | undefined> => {\n    // Increment operation ID to handle race conditions\n    const currentOperationId = ++operationIdRef.current;\n\n    if (!isMountedRef.current) return;\n\n    setState((prev) => ({\n      ...prev,\n      loading: true,\n      error: null,\n      called: true,\n    }));\n\n    try {\n      const data = await asyncFn();\n\n      // Only update state if this is still the current operation and component is mounted\n      if (currentOperationId === operationIdRef.current && isMountedRef.current) {\n        setState({\n          loading: false,\n          data,\n          error: null,\n          called: true,\n        });\n        onSuccess?.(data);\n      }\n\n      return data;\n    } catch (error) {\n      const err = error instanceof Error ? error : new Error(String(error));\n\n      // Only update state if this is still the current operation and component is mounted\n      if (currentOperationId === operationIdRef.current && isMountedRef.current) {\n        setState({\n          loading: false,\n          data: null,\n          error: err,\n          called: true,\n        });\n        onError?.(err);\n      }\n\n      throw error;\n    }\n  }, [asyncFn, onSuccess, onError]);\n\n  const reset = useCallback(() => {\n    setState({\n      loading: false,\n      data: null,\n      error: null,\n      called: false,\n    });\n    operationIdRef.current = 0;\n  }, []);\n\n  // Handle immediate execution\n  useEffect(() => {\n    if (immediate && !state.called) {\n      execute();\n    }\n  }, [immediate, execute, state.called]);\n\n  // Reset state when dependencies change (if enabled)\n  useEffect(() => {\n    if (resetOnDepsChange && state.called) {\n      reset();\n    }\n  }, [asyncFn]); // eslint-disable-line react-hooks/exhaustive-deps\n\n  return {\n    ...state,\n    execute,\n    reset,\n  };\n}\n\n/**\n * Type helper for async functions\n */\nexport type AsyncFunction<T> = () => Promise<T>;\n","/**\n * Verification utilities for template and generator creators.\n * Helps ensure proper design system integration.\n */\n\nimport { ThemeProvider } from '../theme/ThemeProvider';\nimport { useTheme } from '../theme/ThemeProvider';\nimport { cn } from './cn';\nimport { Button } from '../components/Button/Button';\nimport { LoadingButton } from '../components/Loading/LoadingButton';\nimport { LoadingContainer } from '../components/Loading/LoadingContainer';\nimport { LoadingSkeleton } from '../components/Loading/LoadingSkeleton';\nimport { useAsyncOperation } from '../hooks/useAsyncOperation';\nimport type { Theme } from '../theme/types';\n\nexport interface DesignSystemExports {\n  // Core utilities\n  cn?: typeof cn;\n\n  // Theme system\n  ThemeProvider?: typeof ThemeProvider;\n  useTheme?: typeof useTheme;\n  Theme?: unknown; // Type export\n\n  // Components\n  Button?: typeof Button;\n  LoadingButton?: typeof LoadingButton;\n  LoadingContainer?: typeof LoadingContainer;\n  LoadingSkeleton?: typeof LoadingSkeleton;\n\n  // Hooks\n  useAsyncOperation?: typeof useAsyncOperation;\n}\n\n/**\n * Verifies that all design system imports are available.\n * Useful for template creators to ensure proper setup.\n *\n * @example\n * // In your template's setup file\n * import { verifyDesignSystemImports } from '@orchard9ai/design-system';\n *\n * // Check all imports are available\n * const imports = verifyDesignSystemImports();\n * console.log('Design system ready:', imports.allPresent);\n *\n * @returns Object with import status and any missing imports\n */\nexport function verifyDesignSystemImports(): {\n  exports: Record<string, unknown>;\n  missing: string[];\n  allPresent: boolean;\n} {\n  const exports: Record<string, unknown> = {\n    // Core utilities\n    cn: typeof cn !== 'undefined' ? cn : undefined,\n\n    // Theme system\n    ThemeProvider: typeof ThemeProvider !== 'undefined' ? ThemeProvider : undefined,\n    useTheme: typeof useTheme !== 'undefined' ? useTheme : undefined,\n    Theme: true, // Type exports always available\n\n    // Components\n    Button: typeof Button !== 'undefined' ? Button : undefined,\n    LoadingButton: typeof LoadingButton !== 'undefined' ? LoadingButton : undefined,\n    LoadingContainer: typeof LoadingContainer !== 'undefined' ? LoadingContainer : undefined,\n    LoadingSkeleton: typeof LoadingSkeleton !== 'undefined' ? LoadingSkeleton : undefined,\n\n    // Hooks\n    useAsyncOperation: typeof useAsyncOperation !== 'undefined' ? useAsyncOperation : undefined,\n  };\n\n  const missing = Object.entries(exports)\n    .filter(([_, value]) => !value)\n    .map(([key]) => key);\n\n  return {\n    exports,\n    missing,\n    allPresent: missing.length === 0,\n  };\n}\n\n/**\n * Validates theme configuration for templates.\n *\n * @example\n * // Validate your template's theme setup\n * const validation = validateThemeConfiguration({\n *   defaultTheme: 'grove-light',\n *   supportedThemes: ['grove-light', 'grove-dark'],\n * });\n *\n * if (!validation.valid) {\n *   console.error('Theme configuration errors:', validation.errors);\n * }\n *\n * @param config - Theme configuration to validate\n * @returns Validation result with any errors\n */\nexport function validateThemeConfiguration(config: {\n  defaultTheme?: string;\n  supportedThemes?: string[];\n}): {\n  valid: boolean;\n  errors: string[];\n} {\n  const errors: string[] = [];\n  const validThemes = ['light', 'dark', 'cupcake', 'business', 'grove-light', 'grove-dark'];\n\n  if (config.defaultTheme && !validThemes.includes(config.defaultTheme)) {\n    errors.push(\n      `Invalid defaultTheme \"${config.defaultTheme}\". Valid themes: ${validThemes.join(', ')}`\n    );\n  }\n\n  if (config.supportedThemes) {\n    const invalidThemes = config.supportedThemes.filter((theme) => !validThemes.includes(theme));\n    if (invalidThemes.length > 0) {\n      errors.push(\n        `Invalid themes: ${invalidThemes.join(', ')}. Valid themes: ${validThemes.join(', ')}`\n      );\n    }\n  }\n\n  return {\n    valid: errors.length === 0,\n    errors,\n  };\n}\n\n/**\n * Helper to generate template metadata for design system integration.\n *\n * @example\n * // In your template's package.json or config\n * const metadata = generateTemplateMetadata({\n *   templateName: 'vite-vike-tauri',\n *   defaultTheme: 'grove-light',\n *   requiredImports: ['ThemeProvider', 'cn'],\n * });\n *\n * @param options - Template configuration options\n * @returns Template metadata object\n */\nexport function generateTemplateMetadata(options: {\n  templateName: string;\n  designSystemVersion?: string;\n  defaultTheme?: Theme;\n  requiredImports?: (keyof DesignSystemExports)[];\n  optionalImports?: (keyof DesignSystemExports)[];\n}) {\n  return {\n    name: options.templateName,\n    designSystem: {\n      version: options.designSystemVersion || '0.1.2',\n      defaultTheme: options.defaultTheme || 'light',\n      requiredImports: options.requiredImports || ['ThemeProvider', 'cn'],\n      optionalImports: options.optionalImports || ['useTheme'],\n      configuration: {\n        cssImport: '@orchard9ai/design-system/dist/styles.css',\n        tailwindPreset: '@orchard9ai/design-system/tailwind.config.js',\n      },\n    },\n    generated: new Date().toISOString(),\n  };\n}\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface FormControlProps {\n  label?: string;\n  labelAlt?: string;\n  helperText?: string;\n  error?: string;\n  warning?: string;\n  success?: string;\n  required?: boolean;\n  children: React.ReactNode;\n  className?: string;\n}\n\nexport const FormControl: React.FC<FormControlProps> = ({\n  label,\n  labelAlt,\n  helperText,\n  error,\n  warning,\n  success,\n  required,\n  children,\n  className,\n}) => {\n  return (\n    <div className={cn('form-control', className)}>\n      {label && (\n        <label className=\"label pb-2\">\n          <span className=\"label-text\">\n            {label}\n            {required && <span className=\"text-error ml-1\">*</span>}\n          </span>\n          {labelAlt && <span className=\"label-text-alt\">{labelAlt}</span>}\n        </label>\n      )}\n\n      {children}\n\n      {(helperText || error || warning || success) && (\n        <label className=\"label\">\n          <span\n            className={cn(\n              'label-text-alt',\n              error && 'text-error',\n              warning && 'text-warning',\n              success && 'text-success'\n            )}\n          >\n            {error || warning || success || helperText}\n          </span>\n        </label>\n      )}\n    </div>\n  );\n};\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n  variant?: 'bordered' | 'ghost' | 'default';\n  inputSize?: 'xs' | 'sm' | 'md' | 'lg';\n  state?: 'default' | 'success' | 'warning' | 'error';\n  fullWidth?: boolean;\n  leftIcon?: React.ReactNode;\n  rightIcon?: React.ReactNode;\n  leftAddon?: React.ReactNode;\n  rightAddon?: React.ReactNode;\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n  (\n    {\n      variant = 'bordered',\n      inputSize = 'md',\n      state = 'default',\n      fullWidth = true,\n      leftIcon,\n      rightIcon,\n      leftAddon,\n      rightAddon,\n      className,\n      ...props\n    },\n    ref\n  ) => {\n    const inputClasses = cn(\n      'input',\n      variant === 'bordered' && 'input-bordered',\n      variant === 'ghost' && 'input-ghost',\n      inputSize === 'xs' && 'input-xs',\n      inputSize === 'sm' && 'input-sm',\n      inputSize === 'lg' && 'input-lg',\n      state === 'success' && 'input-success',\n      state === 'warning' && 'input-warning',\n      state === 'error' && 'input-error',\n      fullWidth && 'w-full',\n      (leftIcon || leftAddon) && 'pl-10',\n      (rightIcon || rightAddon) && 'pr-10',\n      className\n    );\n\n    if (leftIcon || rightIcon || leftAddon || rightAddon) {\n      return (\n        <div className=\"relative\">\n          {leftIcon && (\n            <span className=\"absolute left-3 top-1/2 -translate-y-1/2 text-base-content/50 z-10\">\n              {leftIcon}\n            </span>\n          )}\n          {leftAddon && (\n            <span className=\"absolute left-0 top-0 bottom-0 flex items-center px-3 bg-base-200 border-r border-base-300 rounded-l-lg\">\n              {leftAddon}\n            </span>\n          )}\n\n          <input ref={ref} className={inputClasses} {...props} />\n\n          {rightIcon && (\n            <span className=\"absolute right-3 top-1/2 -translate-y-1/2 text-base-content/50 z-10\">\n              {rightIcon}\n            </span>\n          )}\n          {rightAddon && (\n            <span className=\"absolute right-0 top-0 bottom-0 flex items-center px-3 bg-base-200 border-l border-base-300 rounded-r-lg\">\n              {rightAddon}\n            </span>\n          )}\n        </div>\n      );\n    }\n\n    return <input ref={ref} className={inputClasses} {...props} />;\n  }\n);\n\nInput.displayName = 'Input';\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface SelectProps extends React.SelectHTMLAttributes<HTMLSelectElement> {\n  variant?: 'bordered' | 'ghost' | 'default';\n  selectSize?: 'xs' | 'sm' | 'md' | 'lg';\n  state?: 'default' | 'success' | 'warning' | 'error';\n  fullWidth?: boolean;\n  placeholder?: string;\n}\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n  (\n    {\n      variant = 'bordered',\n      selectSize = 'md',\n      state = 'default',\n      fullWidth = true,\n      placeholder,\n      children,\n      className,\n      ...props\n    },\n    ref\n  ) => {\n    const selectClasses = cn(\n      'select',\n      variant === 'bordered' && 'select-bordered',\n      variant === 'ghost' && 'select-ghost',\n      selectSize === 'xs' && 'select-xs',\n      selectSize === 'sm' && 'select-sm',\n      selectSize === 'lg' && 'select-lg',\n      state === 'success' && 'select-success',\n      state === 'warning' && 'select-warning',\n      state === 'error' && 'select-error',\n      fullWidth && 'w-full',\n      className\n    );\n\n    return (\n      <select ref={ref} className={selectClasses} {...props}>\n        {placeholder && (\n          <option disabled value=\"\">\n            {placeholder}\n          </option>\n        )}\n        {children}\n      </select>\n    );\n  }\n);\n\nSelect.displayName = 'Select';\n","import React, { useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { cn } from '../utils';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n  variant?: 'bordered' | 'ghost' | 'default';\n  textareaSize?: 'xs' | 'sm' | 'md' | 'lg';\n  state?: 'default' | 'success' | 'warning' | 'error';\n  fullWidth?: boolean;\n  autoResize?: boolean;\n  showCount?: boolean;\n  maxLength?: number;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n  (\n    {\n      variant = 'bordered',\n      textareaSize = 'md',\n      state = 'default',\n      fullWidth = true,\n      autoResize = false,\n      showCount = false,\n      maxLength,\n      className,\n      onChange,\n      value,\n      ...props\n    },\n    ref\n  ) => {\n    const [charCount, setCharCount] = useState(0);\n    const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n    useImperativeHandle(ref, () => textareaRef.current!);\n\n    const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n      if (autoResize && textareaRef.current) {\n        textareaRef.current.style.height = 'auto';\n        textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`;\n      }\n\n      setCharCount(e.target.value.length);\n      onChange?.(e);\n    };\n\n    useEffect(() => {\n      setCharCount(String(value || '').length);\n    }, [value]);\n\n    const textareaClasses = cn(\n      'textarea',\n      variant === 'bordered' && 'textarea-bordered',\n      variant === 'ghost' && 'textarea-ghost',\n      textareaSize === 'xs' && 'textarea-xs',\n      textareaSize === 'sm' && 'textarea-sm',\n      textareaSize === 'lg' && 'textarea-lg',\n      state === 'success' && 'textarea-success',\n      state === 'warning' && 'textarea-warning',\n      state === 'error' && 'textarea-error',\n      fullWidth && 'w-full',\n      autoResize && 'resize-none overflow-hidden',\n      className\n    );\n\n    return (\n      <div className={fullWidth ? 'w-full' : ''}>\n        <textarea\n          ref={textareaRef}\n          className={textareaClasses}\n          onChange={handleChange}\n          value={value}\n          maxLength={maxLength}\n          {...props}\n        />\n        {showCount && (\n          <div className=\"label\">\n            <span className=\"label-text-alt\"></span>\n            <span className=\"label-text-alt\">\n              {charCount}\n              {maxLength ? `/${maxLength}` : ''}\n            </span>\n          </div>\n        )}\n      </div>\n    );\n  }\n);\n\nTextarea.displayName = 'Textarea';\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {\n  label?: string;\n  checkboxSize?: 'xs' | 'sm' | 'md' | 'lg';\n  color?: 'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'info' | 'error';\n  indeterminate?: boolean;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n  ({ label, checkboxSize = 'md', color, indeterminate = false, className, ...props }, ref) => {\n    const checkboxRef = React.useRef<HTMLInputElement>(null);\n\n    React.useImperativeHandle(ref, () => checkboxRef.current!);\n\n    React.useEffect(() => {\n      if (checkboxRef.current) {\n        checkboxRef.current.indeterminate = indeterminate;\n      }\n    }, [indeterminate]);\n\n    const checkboxClasses = cn(\n      'checkbox',\n      checkboxSize === 'xs' && 'checkbox-xs',\n      checkboxSize === 'sm' && 'checkbox-sm',\n      checkboxSize === 'lg' && 'checkbox-lg',\n      color === 'primary' && 'checkbox-primary',\n      color === 'secondary' && 'checkbox-secondary',\n      color === 'accent' && 'checkbox-accent',\n      color === 'success' && 'checkbox-success',\n      color === 'warning' && 'checkbox-warning',\n      color === 'info' && 'checkbox-info',\n      color === 'error' && 'checkbox-error',\n      className\n    );\n\n    if (label) {\n      return (\n        <label className=\"label cursor-pointer\">\n          <input ref={checkboxRef} type=\"checkbox\" className={checkboxClasses} {...props} />\n          <span className=\"label-text ml-2\">{label}</span>\n        </label>\n      );\n    }\n\n    return <input ref={checkboxRef} type=\"checkbox\" className={checkboxClasses} {...props} />;\n  }\n);\n\nCheckbox.displayName = 'Checkbox';\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement> {\n  label?: string;\n  radioSize?: 'xs' | 'sm' | 'md' | 'lg';\n  color?: 'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'info' | 'error';\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n  ({ label, radioSize = 'md', color, className, ...props }, ref) => {\n    const radioClasses = cn(\n      'radio',\n      radioSize === 'xs' && 'radio-xs',\n      radioSize === 'sm' && 'radio-sm',\n      radioSize === 'lg' && 'radio-lg',\n      color === 'primary' && 'radio-primary',\n      color === 'secondary' && 'radio-secondary',\n      color === 'accent' && 'radio-accent',\n      color === 'success' && 'radio-success',\n      color === 'warning' && 'radio-warning',\n      color === 'info' && 'radio-info',\n      color === 'error' && 'radio-error',\n      className\n    );\n\n    if (label) {\n      return (\n        <label className=\"label cursor-pointer\">\n          <input ref={ref} type=\"radio\" className={radioClasses} {...props} />\n          <span className=\"label-text ml-2\">{label}</span>\n        </label>\n      );\n    }\n\n    return <input ref={ref} type=\"radio\" className={radioClasses} {...props} />;\n  }\n);\n\nRadio.displayName = 'Radio';\n\nexport interface RadioGroupProps {\n  name: string;\n  value?: string;\n  onChange?: (value: string) => void;\n  children: React.ReactNode;\n  className?: string;\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n  name,\n  value,\n  onChange,\n  children,\n  className,\n}) => {\n  const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    onChange?.(e.target.value);\n  };\n\n  return (\n    <div className={cn('space-y-2', className)}>\n      {React.Children.map(children, (child) => {\n        if (React.isValidElement(child) && child.type === Radio) {\n          return React.cloneElement(child as React.ReactElement<RadioProps>, {\n            name,\n            checked: value === child.props.value,\n            onChange: handleChange,\n          });\n        }\n        return child;\n      })}\n    </div>\n  );\n};\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface ToggleProps extends React.InputHTMLAttributes<HTMLInputElement> {\n  label?: string;\n  toggleSize?: 'xs' | 'sm' | 'md' | 'lg';\n  color?: 'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'info' | 'error';\n  loading?: boolean;\n}\n\nexport const Toggle = React.forwardRef<HTMLInputElement, ToggleProps>(\n  ({ label, toggleSize = 'md', color, loading = false, disabled, className, ...props }, ref) => {\n    const toggleClasses = cn(\n      'toggle',\n      toggleSize === 'xs' && 'toggle-xs',\n      toggleSize === 'sm' && 'toggle-sm',\n      toggleSize === 'lg' && 'toggle-lg',\n      color === 'primary' && 'toggle-primary',\n      color === 'secondary' && 'toggle-secondary',\n      color === 'accent' && 'toggle-accent',\n      color === 'success' && 'toggle-success',\n      color === 'warning' && 'toggle-warning',\n      color === 'info' && 'toggle-info',\n      color === 'error' && 'toggle-error',\n      loading && 'opacity-50 cursor-wait',\n      className\n    );\n\n    const isDisabled = disabled || loading;\n\n    if (label) {\n      return (\n        <label className=\"label cursor-pointer\">\n          <span className=\"label-text\">{label}</span>\n          <input\n            ref={ref}\n            type=\"checkbox\"\n            className={toggleClasses}\n            disabled={isDisabled}\n            {...props}\n          />\n        </label>\n      );\n    }\n\n    return (\n      <input ref={ref} type=\"checkbox\" className={toggleClasses} disabled={isDisabled} {...props} />\n    );\n  }\n);\n\nToggle.displayName = 'Toggle';\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\n\ntype SpacingValue = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 | 32;\n\nexport interface BoxProps extends React.HTMLAttributes<HTMLElement> {\n  children?: React.ReactNode;\n  as?: React.ElementType;\n\n  // Padding\n  p?: SpacingValue;\n  px?: SpacingValue;\n  py?: SpacingValue;\n  pt?: SpacingValue;\n  pr?: SpacingValue;\n  pb?: SpacingValue;\n  pl?: SpacingValue;\n\n  // Margin\n  m?: SpacingValue;\n  mx?: SpacingValue;\n  my?: SpacingValue;\n  mt?: SpacingValue;\n  mr?: SpacingValue;\n  mb?: SpacingValue;\n  ml?: SpacingValue;\n\n  // Border\n  border?: boolean;\n  borderColor?: string;\n  rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full';\n\n  // Background\n  bg?: string;\n\n  // Layout\n  display?: 'block' | 'inline-block' | 'inline' | 'flex' | 'inline-flex' | 'grid' | 'hidden';\n  position?: 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky';\n\n  // Dimensions\n  w?: 'auto' | 'full' | '1/2' | '1/3' | '2/3' | '1/4' | '3/4' | string;\n  h?: 'auto' | 'full' | 'screen' | string;\n}\n\nconst getSpacingClass = (prefix: string, value: SpacingValue): string => {\n  return `${prefix}-${value}`;\n};\n\nconst getRoundedClass = (value: BoxProps['rounded']): string => {\n  const map = {\n    none: 'rounded-none',\n    sm: 'rounded-sm',\n    md: 'rounded-md',\n    lg: 'rounded-lg',\n    xl: 'rounded-xl',\n    '2xl': 'rounded-2xl',\n    '3xl': 'rounded-3xl',\n    full: 'rounded-full',\n  };\n  return value ? map[value] : '';\n};\n\nconst getDisplayClass = (value: BoxProps['display']): string => {\n  return value || '';\n};\n\nconst getPositionClass = (value: BoxProps['position']): string => {\n  return value || '';\n};\n\nconst getWidthClass = (value: BoxProps['w']): string => {\n  if (!value) return '';\n  const map: Record<string, string> = {\n    auto: 'w-auto',\n    full: 'w-full',\n    '1/2': 'w-1/2',\n    '1/3': 'w-1/3',\n    '2/3': 'w-2/3',\n    '1/4': 'w-1/4',\n    '3/4': 'w-3/4',\n  };\n  return map[value] || (value.startsWith('w-') ? value : `w-[${value}]`);\n};\n\nconst getHeightClass = (value: BoxProps['h']): string => {\n  if (!value) return '';\n  const map: Record<string, string> = {\n    auto: 'h-auto',\n    full: 'h-full',\n    screen: 'h-screen',\n  };\n  return map[value] || (value.startsWith('h-') ? value : `h-[${value}]`);\n};\n\nexport const Box = React.forwardRef<HTMLElement, BoxProps>(\n  (\n    {\n      children,\n      as: Component = 'div',\n      p,\n      px,\n      py,\n      pt,\n      pr,\n      pb,\n      pl,\n      m,\n      mx,\n      my,\n      mt,\n      mr,\n      mb,\n      ml,\n      border,\n      borderColor,\n      rounded,\n      bg,\n      display,\n      position,\n      w,\n      h,\n      className,\n      ...props\n    },\n    ref\n  ) => {\n    const classes = cn(\n      // Padding\n      p !== undefined && getSpacingClass('p', p),\n      px !== undefined && getSpacingClass('px', px),\n      py !== undefined && getSpacingClass('py', py),\n      pt !== undefined && getSpacingClass('pt', pt),\n      pr !== undefined && getSpacingClass('pr', pr),\n      pb !== undefined && getSpacingClass('pb', pb),\n      pl !== undefined && getSpacingClass('pl', pl),\n\n      // Margin\n      m !== undefined && getSpacingClass('m', m),\n      mx !== undefined && getSpacingClass('mx', mx),\n      my !== undefined && getSpacingClass('my', my),\n      mt !== undefined && getSpacingClass('mt', mt),\n      mr !== undefined && getSpacingClass('mr', mr),\n      mb !== undefined && getSpacingClass('mb', mb),\n      ml !== undefined && getSpacingClass('ml', ml),\n\n      // Border\n      border && 'border',\n      borderColor && `border-${borderColor}`,\n      getRoundedClass(rounded),\n\n      // Background\n      bg && `bg-${bg}`,\n\n      // Layout\n      getDisplayClass(display),\n      getPositionClass(position),\n\n      // Dimensions\n      getWidthClass(w),\n      getHeightClass(h),\n\n      className\n    );\n\n    return (\n      <Component ref={ref} className={classes} {...props}>\n        {children}\n      </Component>\n    );\n  }\n);\n\nBox.displayName = 'Box';\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { Box, BoxProps } from './Box';\n\nexport interface FlexProps extends Omit<BoxProps, 'display'> {\n  direction?: 'row' | 'row-reverse' | 'col' | 'col-reverse';\n  wrap?: 'wrap' | 'wrap-reverse' | 'nowrap';\n  align?: 'start' | 'end' | 'center' | 'baseline' | 'stretch';\n  justify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly';\n  gap?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16;\n  inline?: boolean;\n}\n\nconst getDirectionClass = (direction: FlexProps['direction']): string => {\n  switch (direction) {\n    case 'row':\n      return 'flex-row';\n    case 'row-reverse':\n      return 'flex-row-reverse';\n    case 'col':\n      return 'flex-col';\n    case 'col-reverse':\n      return 'flex-col-reverse';\n    default:\n      return 'flex-row';\n  }\n};\n\nconst getWrapClass = (wrap: FlexProps['wrap']): string => {\n  switch (wrap) {\n    case 'wrap':\n      return 'flex-wrap';\n    case 'wrap-reverse':\n      return 'flex-wrap-reverse';\n    case 'nowrap':\n      return 'flex-nowrap';\n    default:\n      return 'flex-nowrap';\n  }\n};\n\nconst getAlignClass = (align: FlexProps['align']): string => {\n  switch (align) {\n    case 'start':\n      return 'items-start';\n    case 'end':\n      return 'items-end';\n    case 'center':\n      return 'items-center';\n    case 'baseline':\n      return 'items-baseline';\n    case 'stretch':\n      return 'items-stretch';\n    default:\n      return 'items-stretch';\n  }\n};\n\nconst getJustifyClass = (justify: FlexProps['justify']): string => {\n  switch (justify) {\n    case 'start':\n      return 'justify-start';\n    case 'end':\n      return 'justify-end';\n    case 'center':\n      return 'justify-center';\n    case 'between':\n      return 'justify-between';\n    case 'around':\n      return 'justify-around';\n    case 'evenly':\n      return 'justify-evenly';\n    default:\n      return 'justify-start';\n  }\n};\n\nexport const Flex = React.forwardRef<HTMLElement, FlexProps>(\n  (\n    {\n      direction = 'row',\n      wrap = 'nowrap',\n      align = 'stretch',\n      justify = 'start',\n      gap,\n      inline = false,\n      className,\n      ...props\n    },\n    ref\n  ) => {\n    const flexClasses = cn(\n      getDirectionClass(direction),\n      getWrapClass(wrap),\n      getAlignClass(align),\n      getJustifyClass(justify),\n      gap !== undefined && `gap-${gap}`,\n      className\n    );\n\n    return (\n      <Box ref={ref} display={inline ? 'inline-flex' : 'flex'} className={flexClasses} {...props} />\n    );\n  }\n);\n\nFlex.displayName = 'Flex';\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\n\ntype SpacingValue = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 | 32;\n\nexport interface SpacerProps {\n  size?: SpacingValue;\n  x?: SpacingValue;\n  y?: SpacingValue;\n  grow?: boolean;\n  shrink?: boolean;\n  basis?: 'auto' | '0' | 'full' | string;\n  className?: string;\n}\n\nconst getSpacingValue = (value: SpacingValue): string => {\n  return String(value);\n};\n\nexport const Spacer = React.forwardRef<HTMLDivElement, SpacerProps>(\n  ({ size, x, y, grow = false, shrink = false, basis, className }, ref) => {\n    // If grow is true and no size specified, create a flexible spacer\n    if (grow && !size && !x && !y) {\n      return (\n        <div\n          ref={ref}\n          className={cn(\n            'flex-grow',\n            shrink && 'flex-shrink',\n            basis && `flex-basis-${basis}`,\n            className\n          )}\n          aria-hidden=\"true\"\n        />\n      );\n    }\n\n    // Otherwise create a fixed spacer\n    const width =\n      x !== undefined\n        ? `w-${getSpacingValue(x)}`\n        : size !== undefined\n          ? `w-${getSpacingValue(size)}`\n          : undefined;\n    const height =\n      y !== undefined\n        ? `h-${getSpacingValue(y)}`\n        : size !== undefined\n          ? `h-${getSpacingValue(size)}`\n          : undefined;\n\n    return (\n      <div ref={ref} className={cn(width, height, 'flex-shrink-0', className)} aria-hidden=\"true\" />\n    );\n  }\n);\n\nSpacer.displayName = 'Spacer';\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface CardProps {\n  variant?: 'default' | 'bordered' | 'compact' | 'side';\n  glass?: boolean;\n  imageFull?: boolean;\n  className?: string;\n  children: React.ReactNode;\n}\n\nexport interface CardImageProps {\n  src: string;\n  alt: string;\n  aspectRatio?: '1:1' | '16:9' | '4:3' | '21:9';\n  overlay?: React.ReactNode;\n}\n\nexport interface CardBodyProps {\n  className?: string;\n  children: React.ReactNode;\n}\n\nexport interface CardTitleProps {\n  tag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n  className?: string;\n  children: React.ReactNode;\n}\n\nexport interface CardActionsProps {\n  justify?: 'start' | 'end' | 'center' | 'between';\n  className?: string;\n  children: React.ReactNode;\n}\n\nconst Card: React.FC<CardProps> & {\n  Image: React.FC<CardImageProps>;\n  Body: React.FC<CardBodyProps>;\n  Title: React.FC<CardTitleProps>;\n  Actions: React.FC<CardActionsProps>;\n} = ({ variant = 'default', glass, imageFull, className, children }) => {\n  const cardClasses = cn(\n    'card',\n    variant === 'bordered' && 'bordered',\n    variant === 'compact' && 'card-compact',\n    variant === 'side' && 'card-side',\n    glass && 'glass',\n    imageFull && 'image-full',\n    'bg-base-100',\n    'shadow-xl',\n    className\n  );\n\n  return <div className={cardClasses}>{children}</div>;\n};\n\nCard.Image = ({ src, alt, aspectRatio = '16:9', overlay }) => {\n  const aspectClasses = {\n    '1:1': 'aspect-square',\n    '16:9': 'aspect-video',\n    '4:3': 'aspect-[4/3]',\n    '21:9': 'aspect-[21/9]',\n  };\n\n  return (\n    <figure className=\"relative\">\n      <img src={src} alt={alt} className={cn('w-full object-cover', aspectClasses[aspectRatio])} />\n      {overlay && (\n        <div className=\"absolute inset-0 flex items-center justify-center\">{overlay}</div>\n      )}\n    </figure>\n  );\n};\n\nCard.Body = ({ className, children }) => {\n  return <div className={cn('card-body', className)}>{children}</div>;\n};\n\nCard.Title = ({ tag: Tag = 'h2', className, children }) => {\n  return <Tag className={cn('card-title', className)}>{children}</Tag>;\n};\n\nCard.Actions = ({ justify = 'end', className, children }) => {\n  const justifyClasses = {\n    start: 'justify-start',\n    end: 'justify-end',\n    center: 'justify-center',\n    between: 'justify-between',\n  };\n\n  return <div className={cn('card-actions', justifyClasses[justify], className)}>{children}</div>;\n};\n\nexport { Card };\n\n// Card skeleton loader component\nexport const CardSkeleton: React.FC<{ showImage?: boolean }> = ({ showImage = true }) => {\n  return (\n    <div className=\"card bg-base-100 shadow-xl\">\n      {showImage && (\n        <figure className=\"animate-pulse\">\n          <div className=\"bg-base-300 h-48 w-full\"></div>\n        </figure>\n      )}\n      <div className=\"card-body\">\n        <div className=\"animate-pulse space-y-4\">\n          <div className=\"h-4 bg-base-300 rounded w-3/4\"></div>\n          <div className=\"space-y-2\">\n            <div className=\"h-3 bg-base-300 rounded\"></div>\n            <div className=\"h-3 bg-base-300 rounded w-5/6\"></div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface ContainerProps {\n  size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\n  centered?: boolean;\n  padded?: boolean;\n  className?: string;\n  children: React.ReactNode;\n}\n\nexport const Container: React.FC<ContainerProps> = ({\n  size = 'xl',\n  centered = true,\n  padded = true,\n  className,\n  children,\n}) => {\n  const sizeClasses = {\n    sm: 'max-w-screen-sm',\n    md: 'max-w-screen-md',\n    lg: 'max-w-screen-lg',\n    xl: 'max-w-screen-xl',\n    '2xl': 'max-w-screen-2xl',\n    full: 'max-w-full',\n  };\n\n  return (\n    <div\n      className={cn(\n        'w-full',\n        sizeClasses[size],\n        centered && 'mx-auto',\n        padded && 'px-4 sm:px-6 lg:px-8',\n        className\n      )}\n    >\n      {children}\n    </div>\n  );\n};\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface StackProps {\n  spacing?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n  direction?: 'vertical' | 'horizontal';\n  align?: 'start' | 'center' | 'end' | 'stretch';\n  justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n  wrap?: boolean;\n  className?: string;\n  children: React.ReactNode;\n}\n\nexport const Stack: React.FC<StackProps> = ({\n  spacing = 'md',\n  direction = 'vertical',\n  align = 'stretch',\n  justify = 'start',\n  wrap = false,\n  className,\n  children,\n}) => {\n  const spacingClasses = {\n    xs: direction === 'vertical' ? 'space-y-1' : 'space-x-1',\n    sm: direction === 'vertical' ? 'space-y-2' : 'space-x-2',\n    md: direction === 'vertical' ? 'space-y-4' : 'space-x-4',\n    lg: direction === 'vertical' ? 'space-y-6' : 'space-x-6',\n    xl: direction === 'vertical' ? 'space-y-8' : 'space-x-8',\n  };\n\n  const alignClasses = {\n    start: 'items-start',\n    center: 'items-center',\n    end: 'items-end',\n    stretch: 'items-stretch',\n  };\n\n  const justifyClasses = {\n    start: 'justify-start',\n    center: 'justify-center',\n    end: 'justify-end',\n    between: 'justify-between',\n    around: 'justify-around',\n    evenly: 'justify-evenly',\n  };\n\n  return (\n    <div\n      className={cn(\n        'flex',\n        direction === 'vertical' ? 'flex-col' : 'flex-row',\n        spacingClasses[spacing],\n        alignClasses[align],\n        justifyClasses[justify],\n        wrap && 'flex-wrap',\n        className\n      )}\n    >\n      {children}\n    </div>\n  );\n};\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface GridProps {\n  cols?:\n    | number\n    | string\n    | { sm?: number | string; md?: number | string; lg?: number | string; xl?: number | string };\n  gap?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n  className?: string;\n  children: React.ReactNode;\n}\n\nexport const Grid: React.FC<GridProps> = ({ cols = 1, gap = 'md', className, children }) => {\n  const gapClasses = {\n    xs: 'gap-1',\n    sm: 'gap-2',\n    md: 'gap-4',\n    lg: 'gap-6',\n    xl: 'gap-8',\n  };\n\n  const getColClasses = () => {\n    if (typeof cols === 'number' || typeof cols === 'string') {\n      return `grid-cols-${cols}`;\n    }\n\n    const responsive = [];\n    if (cols.sm) responsive.push(`sm:grid-cols-${cols.sm}`);\n    if (cols.md) responsive.push(`md:grid-cols-${cols.md}`);\n    if (cols.lg) responsive.push(`lg:grid-cols-${cols.lg}`);\n    if (cols.xl) responsive.push(`xl:grid-cols-${cols.xl}`);\n\n    return ['grid-cols-1', ...responsive].join(' ');\n  };\n\n  return <div className={cn('grid', getColClasses(), gapClasses[gap], className)}>{children}</div>;\n};\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface DrawerProps {\n  id: string;\n  side?: 'left' | 'right';\n  overlay?: boolean;\n  className?: string;\n  children: React.ReactNode;\n  sidebar: React.ReactNode;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n  id,\n  side = 'left',\n  overlay = true,\n  className,\n  children,\n  sidebar,\n}) => {\n  return (\n    <div className={cn('drawer', side === 'right' && 'drawer-end', className)}>\n      <input id={id} type=\"checkbox\" className=\"drawer-toggle\" />\n      <div className=\"drawer-content\">{children}</div>\n      <div className=\"drawer-side\">\n        {overlay && <label htmlFor={id} className=\"drawer-overlay\"></label>}\n        <div className=\"menu p-4 w-80 min-h-full bg-base-200 text-base-content\">{sidebar}</div>\n      </div>\n    </div>\n  );\n};\n\nexport interface DrawerToggleProps {\n  drawerId: string;\n  className?: string;\n  children: React.ReactNode;\n}\n\nexport const DrawerToggle: React.FC<DrawerToggleProps> = ({ drawerId, className, children }) => {\n  return (\n    <label htmlFor={drawerId} className={cn('cursor-pointer', className)}>\n      {children}\n    </label>\n  );\n};\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface HeroProps {\n  variant?: 'default' | 'overlay' | 'centered';\n  backgroundImage?: string;\n  minHeight?: 'sm' | 'md' | 'lg' | 'full';\n  className?: string;\n  children: React.ReactNode;\n}\n\nexport const Hero: React.FC<HeroProps> = ({\n  variant = 'default',\n  backgroundImage,\n  minHeight = 'md',\n  className,\n  children,\n}) => {\n  const heightClasses = {\n    sm: 'min-h-[300px]',\n    md: 'min-h-[500px]',\n    lg: 'min-h-[700px]',\n    full: 'min-h-screen',\n  };\n\n  const style = backgroundImage\n    ? {\n        backgroundImage: `url(${backgroundImage})`,\n        backgroundSize: 'cover',\n        backgroundPosition: 'center',\n      }\n    : {};\n\n  if (variant === 'overlay' && backgroundImage) {\n    return (\n      <div className={cn('hero', heightClasses[minHeight], className)} style={style}>\n        <div className=\"hero-overlay bg-opacity-60\"></div>\n        <div className=\"hero-content text-center text-neutral-content\">{children}</div>\n      </div>\n    );\n  }\n\n  return (\n    <div\n      className={cn(\n        'hero',\n        heightClasses[minHeight],\n        variant === 'centered' && 'place-items-center',\n        className\n      )}\n      style={style}\n    >\n      <div className=\"hero-content\">{children}</div>\n    </div>\n  );\n};\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface AlertProps {\n  type?: 'info' | 'success' | 'warning' | 'error';\n  title?: string;\n  message?: string;\n  children?: React.ReactNode;\n  icon?: React.ReactNode;\n  action?: {\n    label: string;\n    onClick: () => void;\n  };\n  dismissible?: boolean;\n  onDismiss?: () => void;\n  className?: string;\n}\n\nconst defaultIcons = {\n  info: (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      className=\"stroke-current shrink-0 w-6 h-6\"\n    >\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n      ></path>\n    </svg>\n  ),\n  success: (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"stroke-current shrink-0 h-6 w-6\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n    >\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n      />\n    </svg>\n  ),\n  warning: (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"stroke-current shrink-0 h-6 w-6\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n    >\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.732-.833-2.464 0L3.34 16.5c-.77.833.192 2.5 1.732 2.5z\"\n      />\n    </svg>\n  ),\n  error: (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"stroke-current shrink-0 h-6 w-6\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n    >\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n      />\n    </svg>\n  ),\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n  type = 'info',\n  title,\n  message,\n  children,\n  icon,\n  action,\n  dismissible,\n  onDismiss,\n  className,\n}) => {\n  const alertClasses = cn(\n    'alert',\n    type === 'info' && 'alert-info',\n    type === 'success' && 'alert-success',\n    type === 'warning' && 'alert-warning',\n    type === 'error' && 'alert-error',\n    className\n  );\n\n  // Use children if provided, otherwise fall back to message prop\n  const content = children || (message && <div className=\"text-sm\">{message}</div>);\n\n  return (\n    <div role=\"alert\" className={alertClasses}>\n      {icon !== null && (icon || defaultIcons[type])}\n      <div className=\"flex-1\">\n        {title && <h3 className=\"font-bold\">{title}</h3>}\n        {content}\n      </div>\n      {action && (\n        <button className=\"btn btn-sm\" onClick={action.onClick}>\n          {action.label}\n        </button>\n      )}\n      {dismissible && (\n        <button className=\"btn btn-sm btn-ghost\" onClick={onDismiss} aria-label=\"Dismiss alert\">\n          ✕\n        </button>\n      )}\n    </div>\n  );\n};\n","import React, { createContext, useContext, useState, useCallback } from 'react';\nimport { createPortal } from 'react-dom';\nimport { cn } from '../../utils';\n\nexport interface Toast {\n  id: string;\n  type: 'info' | 'success' | 'warning' | 'error';\n  title?: string;\n  message: string;\n  duration?: number;\n  action?: {\n    label: string;\n    onClick: () => void;\n  };\n}\n\ninterface ToastContextType {\n  toasts: Toast[];\n  addToast: (toast: Omit<Toast, 'id'>) => string;\n  removeToast: (id: string) => void;\n  removeAllToasts: () => void;\n}\n\nconst ToastContext = createContext<ToastContextType | undefined>(undefined);\n\nexport const ToastProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n  const [toasts, setToasts] = useState<Toast[]>([]);\n\n  const removeToast = useCallback((id: string) => {\n    setToasts((prev) => prev.filter((toast) => toast.id !== id));\n  }, []);\n\n  const addToast = useCallback(\n    (toast: Omit<Toast, 'id'>) => {\n      const id = `toast-${Date.now()}-${Math.random()}`;\n      const newToast: Toast = { ...toast, id };\n\n      setToasts((prev) => [...prev, newToast]);\n\n      if (toast.duration !== 0) {\n        setTimeout(() => {\n          removeToast(id);\n        }, toast.duration || 5000);\n      }\n\n      return id;\n    },\n    [removeToast]\n  );\n\n  const removeAllToasts = useCallback(() => {\n    setToasts([]);\n  }, []);\n\n  return (\n    <ToastContext.Provider value={{ toasts, addToast, removeToast, removeAllToasts }}>\n      {children}\n      {typeof document !== 'undefined' && createPortal(<ToastContainer />, document.body)}\n    </ToastContext.Provider>\n  );\n};\n\nexport const useToast = () => {\n  const context = useContext(ToastContext);\n  if (!context) {\n    throw new Error('useToast must be used within ToastProvider');\n  }\n  return context;\n};\n\nconst ToastContainer: React.FC = () => {\n  const { toasts, removeToast } = useToast();\n\n  return (\n    <div className=\"toast toast-end toast-bottom z-50\">\n      {toasts.map((toast) => (\n        <div\n          key={toast.id}\n          className={cn(\n            'alert',\n            toast.type === 'info' && 'alert-info',\n            toast.type === 'success' && 'alert-success',\n            toast.type === 'warning' && 'alert-warning',\n            toast.type === 'error' && 'alert-error',\n            'shadow-lg animate-pulse'\n          )}\n        >\n          <div>\n            {toast.title && <h4 className=\"font-bold\">{toast.title}</h4>}\n            <span>{toast.message}</span>\n          </div>\n          <div className=\"flex gap-2\">\n            {toast.action && (\n              <button\n                className=\"btn btn-sm\"\n                onClick={() => {\n                  toast.action!.onClick();\n                  removeToast(toast.id);\n                }}\n              >\n                {toast.action.label}\n              </button>\n            )}\n            <button\n              className=\"btn btn-sm btn-ghost\"\n              onClick={() => removeToast(toast.id)}\n              aria-label=\"Dismiss toast\"\n            >\n              ✕\n            </button>\n          </div>\n        </div>\n      ))}\n    </div>\n  );\n};\n","import React, { useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport FocusTrap from 'focus-trap-react';\nimport { cn } from '../utils';\n\nexport interface ModalProps {\n  isOpen: boolean;\n  onClose: () => void;\n  title?: string;\n  size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n  closeOnBackdrop?: boolean;\n  closeOnEsc?: boolean;\n  showCloseButton?: boolean;\n  footer?: React.ReactNode;\n  className?: string;\n  children: React.ReactNode;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n  isOpen,\n  onClose,\n  title,\n  size = 'md',\n  closeOnBackdrop = true,\n  closeOnEsc = true,\n  showCloseButton = true,\n  footer,\n  className,\n  children,\n}) => {\n  const modalRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    const handleEsc = (e: KeyboardEvent) => {\n      if (closeOnEsc && e.key === 'Escape') {\n        onClose();\n      }\n    };\n\n    if (isOpen) {\n      document.addEventListener('keydown', handleEsc);\n      document.body.style.overflow = 'hidden';\n    }\n\n    return () => {\n      document.removeEventListener('keydown', handleEsc);\n      document.body.style.overflow = '';\n    };\n  }, [isOpen, closeOnEsc, onClose]);\n\n  if (!isOpen) return null;\n\n  const sizeClasses = {\n    sm: 'max-w-sm',\n    md: 'max-w-md',\n    lg: 'max-w-lg',\n    xl: 'max-w-xl',\n    full: 'max-w-full mx-4',\n  };\n\n  return createPortal(\n    <FocusTrap active={isOpen}>\n      <div className=\"modal modal-open\">\n        <div className=\"modal-backdrop\" onClick={closeOnBackdrop ? onClose : undefined} />\n\n        <div\n          ref={modalRef}\n          className={cn('modal-box', sizeClasses[size], className)}\n          role=\"dialog\"\n          aria-modal=\"true\"\n          aria-labelledby={title ? 'modal-title' : undefined}\n        >\n          {showCloseButton && (\n            <button\n              className=\"btn btn-sm btn-circle btn-ghost absolute right-2 top-2\"\n              onClick={onClose}\n              aria-label=\"Close modal\"\n            >\n              ✕\n            </button>\n          )}\n\n          {title && (\n            <h3 id=\"modal-title\" className=\"font-bold text-lg mb-4\">\n              {title}\n            </h3>\n          )}\n\n          <div className=\"py-4\">{children}</div>\n\n          {footer && <div className=\"modal-action\">{footer}</div>}\n        </div>\n      </div>\n    </FocusTrap>,\n    document.body\n  );\n};\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface ProgressProps {\n  value: number;\n  max?: number;\n  variant?: 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n  size?: 'xs' | 'sm' | 'md' | 'lg';\n  showLabel?: boolean;\n  className?: string;\n}\n\nexport const Progress: React.FC<ProgressProps> = ({\n  value,\n  max = 100,\n  variant = 'primary',\n  size = 'md',\n  showLabel = false,\n  className,\n}) => {\n  const percentage = Math.round((value / max) * 100);\n\n  const progressClasses = cn(\n    'progress',\n    variant === 'primary' && 'progress-primary',\n    variant === 'secondary' && 'progress-secondary',\n    variant === 'accent' && 'progress-accent',\n    variant === 'info' && 'progress-info',\n    variant === 'success' && 'progress-success',\n    variant === 'warning' && 'progress-warning',\n    variant === 'error' && 'progress-error',\n    size === 'xs' && 'progress-xs',\n    size === 'sm' && 'progress-sm',\n    size === 'lg' && 'progress-lg',\n    className\n  );\n\n  return (\n    <div className=\"w-full\">\n      <progress\n        className={progressClasses}\n        value={value}\n        max={max}\n        aria-valuenow={value}\n        aria-valuemin={0}\n        aria-valuemax={max}\n      />\n      {showLabel && <div className=\"text-sm text-base-content/70 mt-1\">{percentage}%</div>}\n    </div>\n  );\n};\n\nexport interface RadialProgressProps {\n  value: number;\n  size?: 'sm' | 'md' | 'lg' | 'xl';\n  thickness?: number;\n  showLabel?: boolean;\n  className?: string;\n}\n\nexport const RadialProgress: React.FC<RadialProgressProps> = ({\n  value,\n  size = 'md',\n  thickness = 4,\n  showLabel = true,\n  className,\n}) => {\n  const sizeClasses = {\n    sm: 'w-12 h-12',\n    md: 'w-16 h-16',\n    lg: 'w-20 h-20',\n    xl: 'w-24 h-24',\n  };\n\n  return (\n    <div\n      className={cn('radial-progress', sizeClasses[size], className)}\n      style={{ '--value': value, '--thickness': `${thickness}px` } as React.CSSProperties}\n      role=\"progressbar\"\n      aria-valuenow={value}\n      aria-valuemin={0}\n      aria-valuemax={100}\n    >\n      {showLabel && `${value}%`}\n    </div>\n  );\n};\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface BadgeProps {\n  variant?:\n    | 'neutral'\n    | 'primary'\n    | 'secondary'\n    | 'accent'\n    | 'ghost'\n    | 'info'\n    | 'success'\n    | 'warning'\n    | 'error';\n  size?: 'xs' | 'sm' | 'md' | 'lg';\n  outline?: boolean;\n  children: React.ReactNode;\n  className?: string;\n}\n\nexport const Badge: React.FC<BadgeProps> = ({\n  variant = 'neutral',\n  size = 'md',\n  outline = false,\n  children,\n  className,\n}) => {\n  const badgeClasses = cn(\n    'badge',\n    variant === 'primary' && 'badge-primary',\n    variant === 'secondary' && 'badge-secondary',\n    variant === 'accent' && 'badge-accent',\n    variant === 'ghost' && 'badge-ghost',\n    variant === 'info' && 'badge-info',\n    variant === 'success' && 'badge-success',\n    variant === 'warning' && 'badge-warning',\n    variant === 'error' && 'badge-error',\n    size === 'xs' && 'badge-xs',\n    size === 'sm' && 'badge-sm',\n    size === 'lg' && 'badge-lg',\n    outline && 'badge-outline',\n    className\n  );\n\n  return <span className={badgeClasses}>{children}</span>;\n};\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface SkeletonProps {\n  className?: string;\n  width?: string | number;\n  height?: string | number;\n  circle?: boolean;\n  count?: number;\n}\n\nexport const Skeleton: React.FC<SkeletonProps> = ({\n  className,\n  width,\n  height,\n  circle = false,\n  count = 1,\n}) => {\n  const skeletonClasses = cn(\n    'animate-pulse bg-base-300',\n    circle ? 'rounded-full' : 'rounded',\n    className\n  );\n\n  const style: React.CSSProperties = {};\n  if (width) style.width = typeof width === 'number' ? `${width}px` : width;\n  if (height) style.height = typeof height === 'number' ? `${height}px` : height;\n\n  if (count === 1) {\n    return <div className={skeletonClasses} style={style} />;\n  }\n\n  return (\n    <div className=\"space-y-2\">\n      {Array.from({ length: count }, (_, index) => (\n        <div key={index} className={skeletonClasses} style={style} />\n      ))}\n    </div>\n  );\n};\n\n// Pre-built skeleton patterns\nexport const SkeletonText: React.FC<{ lines?: number; className?: string }> = ({\n  lines = 3,\n  className,\n}) => (\n  <div className={cn('space-y-2', className)}>\n    {Array.from({ length: lines }, (_, index) => (\n      <div\n        key={index}\n        className={cn(\n          'h-4 bg-base-300 rounded animate-pulse',\n          index === lines - 1 ? 'w-3/4' : 'w-full'\n        )}\n      />\n    ))}\n  </div>\n);\n\nexport const SkeletonCard: React.FC<{ showImage?: boolean; className?: string }> = ({\n  showImage = true,\n  className,\n}) => (\n  <div className={cn('card bg-base-100 shadow-xl', className)}>\n    {showImage && (\n      <figure className=\"animate-pulse\">\n        <div className=\"bg-base-300 h-48 w-full\" />\n      </figure>\n    )}\n    <div className=\"card-body\">\n      <div className=\"animate-pulse space-y-4\">\n        <div className=\"h-4 bg-base-300 rounded w-3/4\" />\n        <div className=\"space-y-2\">\n          <div className=\"h-3 bg-base-300 rounded\" />\n          <div className=\"h-3 bg-base-300 rounded w-5/6\" />\n        </div>\n      </div>\n    </div>\n  </div>\n);\n","import React, { useState, useRef, useEffect } from 'react';\nimport { cn } from '../utils';\n\nexport interface DropdownItem {\n  label: string;\n  value: string;\n  onClick?: () => void;\n  disabled?: boolean;\n  divider?: boolean;\n}\n\nexport interface DropdownProps {\n  trigger: React.ReactNode;\n  items: DropdownItem[];\n  position?: 'bottom' | 'top' | 'left' | 'right';\n  align?: 'start' | 'end';\n  hover?: boolean;\n  className?: string;\n}\n\nexport const Dropdown: React.FC<DropdownProps> = ({\n  trigger,\n  items,\n  position = 'bottom',\n  align = 'start',\n  hover = false,\n  className,\n}) => {\n  const [isOpen, setIsOpen] = useState(false);\n  const dropdownRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    const handleClickOutside = (event: MouseEvent) => {\n      if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n        setIsOpen(false);\n      }\n    };\n\n    document.addEventListener('mousedown', handleClickOutside);\n    return () => document.removeEventListener('mousedown', handleClickOutside);\n  }, []);\n\n  const handleItemClick = (item: DropdownItem) => {\n    if (!item.disabled && item.onClick) {\n      item.onClick();\n    }\n    setIsOpen(false);\n  };\n\n  const dropdownClasses = cn(\n    'dropdown',\n    position === 'top' && 'dropdown-top',\n    position === 'left' && 'dropdown-left',\n    position === 'right' && 'dropdown-right',\n    align === 'end' && 'dropdown-end',\n    hover && 'dropdown-hover',\n    isOpen && 'dropdown-open',\n    className\n  );\n\n  return (\n    <div ref={dropdownRef} className={dropdownClasses}>\n      <div\n        tabIndex={0}\n        role=\"button\"\n        className=\"cursor-pointer\"\n        onClick={() => !hover && setIsOpen(!isOpen)}\n        onKeyDown={(e) => {\n          if (e.key === 'Enter' || e.key === ' ') {\n            e.preventDefault();\n            setIsOpen(!isOpen);\n          }\n        }}\n      >\n        {trigger}\n      </div>\n\n      <ul className=\"dropdown-content menu p-2 shadow bg-base-100 rounded-box w-52 z-10\">\n        {items.map((item, index) => (\n          <React.Fragment key={`${item.value}-${index}`}>\n            {item.divider ? (\n              <div className=\"divider my-1\" />\n            ) : (\n              <li>\n                <button\n                  className={cn(\n                    'w-full text-left',\n                    item.disabled && 'disabled:opacity-50 disabled:cursor-not-allowed'\n                  )}\n                  disabled={item.disabled}\n                  onClick={() => handleItemClick(item)}\n                >\n                  {item.label}\n                </button>\n              </li>\n            )}\n          </React.Fragment>\n        ))}\n      </ul>\n    </div>\n  );\n};\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface TooltipProps {\n  content: string;\n  position?: 'top' | 'bottom' | 'left' | 'right';\n  variant?: 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n  children: React.ReactNode;\n  className?: string;\n}\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n  content,\n  position = 'top',\n  variant,\n  children,\n  className,\n}) => {\n  const tooltipClasses = cn(\n    'tooltip',\n    position === 'top' && 'tooltip-top',\n    position === 'bottom' && 'tooltip-bottom',\n    position === 'left' && 'tooltip-left',\n    position === 'right' && 'tooltip-right',\n    variant === 'primary' && 'tooltip-primary',\n    variant === 'secondary' && 'tooltip-secondary',\n    variant === 'accent' && 'tooltip-accent',\n    variant === 'info' && 'tooltip-info',\n    variant === 'success' && 'tooltip-success',\n    variant === 'warning' && 'tooltip-warning',\n    variant === 'error' && 'tooltip-error',\n    className\n  );\n\n  return (\n    <div className={tooltipClasses} data-tip={content}>\n      {children}\n    </div>\n  );\n};\n","import React, { useState } from 'react';\nimport { clsx } from 'clsx';\n\nexport interface Column<T> {\n  key: keyof T | string;\n  header: string;\n  sortable?: boolean;\n  render?: (value: unknown, row: T) => React.ReactNode;\n  className?: string;\n}\n\nexport interface TableProps<T> {\n  data: T[];\n  columns: Column<T>[];\n  keyField: keyof T;\n  variant?: 'default' | 'zebra' | 'compact';\n  selectable?: boolean;\n  onSelectionChange?: (selected: T[]) => void;\n  loading?: boolean;\n  emptyMessage?: string;\n  className?: string;\n}\n\nexport function Table<T extends Record<string, unknown>>({\n  data,\n  columns,\n  keyField,\n  variant = 'default',\n  selectable = false,\n  onSelectionChange,\n  loading = false,\n  emptyMessage = 'No data available',\n  className,\n}: TableProps<T>) {\n  const [sortField, setSortField] = useState<string | null>(null);\n  const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc');\n  const [selectedRows, setSelectedRows] = useState<Set<T[keyof T]>>(new Set());\n\n  const handleSort = (field: string) => {\n    if (sortField === field) {\n      setSortDirection(sortDirection === 'asc' ? 'desc' : 'asc');\n    } else {\n      setSortField(field);\n      setSortDirection('asc');\n    }\n  };\n\n  const sortedData = React.useMemo(() => {\n    if (!sortField) return data;\n\n    return [...data].sort((a, b) => {\n      const aValue = a[sortField];\n      const bValue = b[sortField];\n\n      // Handle comparison of unknown types safely\n      if (typeof aValue === 'string' && typeof bValue === 'string') {\n        return sortDirection === 'asc'\n          ? aValue.localeCompare(bValue)\n          : bValue.localeCompare(aValue);\n      }\n      if (typeof aValue === 'number' && typeof bValue === 'number') {\n        return sortDirection === 'asc' ? aValue - bValue : bValue - aValue;\n      }\n      // Fallback to string comparison\n      const aStr = String(aValue);\n      const bStr = String(bValue);\n      return sortDirection === 'asc' ? aStr.localeCompare(bStr) : bStr.localeCompare(aStr);\n    });\n  }, [data, sortField, sortDirection]);\n\n  const handleSelectAll = (e: React.ChangeEvent<HTMLInputElement>) => {\n    if (e.target.checked) {\n      const allKeys = new Set(data.map((row) => row[keyField]));\n      setSelectedRows(allKeys);\n      onSelectionChange?.(data);\n    } else {\n      setSelectedRows(new Set());\n      onSelectionChange?.([]);\n    }\n  };\n\n  const handleSelectRow = (row: T) => {\n    const key = row[keyField];\n    const newSelected = new Set(selectedRows);\n\n    if (newSelected.has(key)) {\n      newSelected.delete(key);\n    } else {\n      newSelected.add(key);\n    }\n\n    setSelectedRows(newSelected);\n    const selectedData = data.filter((r) => newSelected.has(r[keyField]));\n    onSelectionChange?.(selectedData);\n  };\n\n  const tableClasses = clsx(\n    'table',\n    variant === 'zebra' && 'table-zebra',\n    variant === 'compact' && 'table-compact',\n    className\n  );\n\n  if (loading) {\n    return (\n      <div className=\"flex justify-center items-center h-64\">\n        <span className=\"loading loading-spinner loading-lg\"></span>\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"overflow-x-auto\">\n      <table className={tableClasses}>\n        <thead>\n          <tr>\n            {selectable && (\n              <th>\n                <label>\n                  <input\n                    type=\"checkbox\"\n                    className=\"checkbox\"\n                    checked={selectedRows.size === data.length && data.length > 0}\n                    onChange={handleSelectAll}\n                  />\n                </label>\n              </th>\n            )}\n            {columns.map((column) => (\n              <th\n                key={column.key.toString()}\n                className={clsx(column.sortable && 'cursor-pointer select-none', column.className)}\n                onClick={() => column.sortable && handleSort(column.key.toString())}\n              >\n                <div className=\"flex items-center gap-2\">\n                  {column.header}\n                  {column.sortable && sortField === column.key && (\n                    <span className=\"text-xs\">{sortDirection === 'asc' ? '↑' : '↓'}</span>\n                  )}\n                </div>\n              </th>\n            ))}\n          </tr>\n        </thead>\n        <tbody>\n          {sortedData.length === 0 ? (\n            <tr>\n              <td colSpan={columns.length + (selectable ? 1 : 0)} className=\"text-center\">\n                {emptyMessage}\n              </td>\n            </tr>\n          ) : (\n            sortedData.map((row) => (\n              <tr key={String(row[keyField])}>\n                {selectable && (\n                  <td>\n                    <label>\n                      <input\n                        type=\"checkbox\"\n                        className=\"checkbox\"\n                        checked={selectedRows.has(row[keyField])}\n                        onChange={() => handleSelectRow(row)}\n                      />\n                    </label>\n                  </td>\n                )}\n                {columns.map((column) => (\n                  <td key={column.key.toString()} className={column.className}>\n                    {column.render\n                      ? column.render(row[column.key], row)\n                      : String(row[column.key] ?? '')}\n                  </td>\n                ))}\n              </tr>\n            ))\n          )}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n","import React from 'react';\nimport { clsx } from 'clsx';\n\nexport interface StatProps {\n  title: string;\n  value: string | number;\n  desc?: string;\n  trend?: 'up' | 'down' | 'neutral';\n  trendValue?: string;\n  icon?: React.ReactNode;\n  variant?: 'default' | 'primary' | 'secondary' | 'accent';\n  className?: string;\n}\n\nexport const Stat: React.FC<StatProps> = ({\n  title,\n  value,\n  desc,\n  trend,\n  trendValue,\n  icon,\n  variant = 'default',\n  className,\n}) => {\n  const trendIcons = {\n    up: (\n      <svg className=\"w-3 h-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n        <path\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth={2}\n          d=\"M7 11l5-5m0 0l5 5m-5-5v12\"\n        />\n      </svg>\n    ),\n    down: (\n      <svg className=\"w-3 h-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n        <path\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth={2}\n          d=\"M17 13l-5 5m0 0l-5-5m5 5V6\"\n        />\n      </svg>\n    ),\n    neutral: null,\n  };\n\n  const variantClasses = {\n    default: '',\n    primary: 'text-primary',\n    secondary: 'text-secondary',\n    accent: 'text-accent',\n  };\n\n  return (\n    <div className={clsx('stat', className)}>\n      {icon && (\n        <div className={clsx('stat-figure', variant !== 'default' && variantClasses[variant])}>\n          {icon}\n        </div>\n      )}\n      <div className=\"stat-title\">{title}</div>\n      <div className={clsx('stat-value', variant !== 'default' && variantClasses[variant])}>\n        {value}\n      </div>\n      {(desc || trend) && (\n        <div className=\"stat-desc\">\n          {trend && trend !== 'neutral' && (\n            <span\n              className={clsx(\n                'inline-flex items-center gap-1',\n                trend === 'up' && 'text-success',\n                trend === 'down' && 'text-error'\n              )}\n            >\n              {trendIcons[trend]}\n              {trendValue && <span>{trendValue}</span>}\n            </span>\n          )}\n          {desc && <span className={trend && trend !== 'neutral' ? 'ml-2' : ''}>{desc}</span>}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport interface StatsProps {\n  children: React.ReactNode;\n  className?: string;\n}\n\nexport const Stats: React.FC<StatsProps> = ({ children, className }) => {\n  return <div className={clsx('stats shadow', className)}>{children}</div>;\n};\n","import React from 'react';\nimport { clsx } from 'clsx';\n\nexport interface AvatarProps {\n  src?: string;\n  alt?: string;\n  name?: string;\n  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n  shape?: 'circle' | 'square' | 'squircle';\n  status?: 'online' | 'offline' | 'away' | 'busy';\n  statusPosition?: 'top' | 'bottom';\n  placeholder?: React.ReactNode;\n  className?: string;\n}\n\nexport const Avatar: React.FC<AvatarProps> = ({\n  src,\n  alt,\n  name,\n  size = 'md',\n  shape = 'circle',\n  status,\n  statusPosition = 'bottom',\n  placeholder,\n  className,\n}) => {\n  const sizeClasses = {\n    xs: 'w-8',\n    sm: 'w-10',\n    md: 'w-12',\n    lg: 'w-16',\n    xl: 'w-24',\n  };\n\n  const shapeClasses = {\n    circle: 'rounded-full',\n    square: 'rounded',\n    squircle: 'mask mask-squircle',\n  };\n\n  const statusClasses = {\n    online: 'bg-success',\n    offline: 'bg-base-300',\n    away: 'bg-warning',\n    busy: 'bg-error',\n  };\n\n  const getInitials = (name: string) => {\n    return name\n      .split(' ')\n      .map((part) => part[0])\n      .join('')\n      .toUpperCase()\n      .slice(0, 2);\n  };\n\n  return (\n    <div className={clsx('avatar', status && status, className)}>\n      <div className={clsx(sizeClasses[size], shapeClasses[shape], 'relative')}>\n        {src ? (\n          <img src={src} alt={alt || name} />\n        ) : placeholder ? (\n          <div className=\"bg-base-300 text-base-content w-full h-full flex items-center justify-center\">\n            {placeholder}\n          </div>\n        ) : name ? (\n          <div className=\"bg-primary text-primary-content w-full h-full flex items-center justify-center font-semibold\">\n            {getInitials(name)}\n          </div>\n        ) : (\n          <div className=\"bg-base-300 w-full h-full\" />\n        )}\n\n        {status && (\n          <span\n            className={clsx(\n              'absolute w-3 h-3 rounded-full',\n              statusClasses[status],\n              statusPosition === 'top' ? 'top-0 right-0' : 'bottom-0 right-0',\n              'ring-2 ring-base-100'\n            )}\n          />\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport interface AvatarGroupProps {\n  children: React.ReactNode;\n  max?: number;\n  size?: AvatarProps['size'];\n  className?: string;\n}\n\nexport const AvatarGroup: React.FC<AvatarGroupProps> = ({\n  children,\n  max = 3,\n  size = 'md',\n  className,\n}) => {\n  const childArray = React.Children.toArray(children);\n  const visibleChildren = childArray.slice(0, max);\n  const remainingCount = childArray.length - max;\n\n  return (\n    <div className={clsx('avatar-group -space-x-6', className)}>\n      {visibleChildren}\n      {remainingCount > 0 && <Avatar size={size} placeholder={`+${remainingCount}`} />}\n    </div>\n  );\n};\n","import React from 'react';\nimport { clsx } from 'clsx';\n\nexport interface TimelineItem {\n  id: string;\n  title: string;\n  description?: string;\n  time?: string;\n  icon?: React.ReactNode;\n  variant?:\n    | 'default'\n    | 'primary'\n    | 'secondary'\n    | 'accent'\n    | 'info'\n    | 'success'\n    | 'warning'\n    | 'error';\n}\n\nexport interface TimelineProps {\n  items: TimelineItem[];\n  direction?: 'vertical' | 'horizontal';\n  position?: 'start' | 'end' | 'alternate';\n  className?: string;\n}\n\nexport const Timeline: React.FC<TimelineProps> = ({\n  items,\n  direction = 'vertical',\n  position = 'start',\n  className,\n}) => {\n  const timelineClasses = clsx(\n    'timeline',\n    direction === 'vertical' && 'timeline-vertical',\n    direction === 'horizontal' && 'timeline-horizontal',\n    className\n  );\n\n  const getItemClasses = (index: number) => {\n    if (position === 'alternate') {\n      return index % 2 === 0 ? 'timeline-start' : 'timeline-end';\n    }\n    return position === 'start' ? 'timeline-start' : 'timeline-end';\n  };\n\n  const getBoxClasses = (variant?: TimelineItem['variant']) => {\n    const variantClasses = {\n      primary: 'bg-primary text-primary-content',\n      secondary: 'bg-secondary text-secondary-content',\n      accent: 'bg-accent text-accent-content',\n      info: 'bg-info text-info-content',\n      success: 'bg-success text-success-content',\n      warning: 'bg-warning text-warning-content',\n      error: 'bg-error text-error-content',\n    };\n\n    return variant && variant !== 'default' ? variantClasses[variant] : '';\n  };\n\n  return (\n    <ul className={timelineClasses}>\n      {items.map((item, index) => (\n        <li key={item.id}>\n          {index !== 0 && <hr />}\n          <div className={getItemClasses(index)}>\n            {item.time && <time className=\"font-mono italic\">{item.time}</time>}\n            <div className={clsx('timeline-box', getBoxClasses(item.variant))}>\n              {item.title && <div className=\"text-lg font-bold\">{item.title}</div>}\n              {item.description && <div>{item.description}</div>}\n            </div>\n          </div>\n          <div className=\"timeline-middle\">\n            {item.icon || (\n              <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                viewBox=\"0 0 20 20\"\n                fill=\"currentColor\"\n                className=\"w-5 h-5\"\n              >\n                <path\n                  fillRule=\"evenodd\"\n                  d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n                  clipRule=\"evenodd\"\n                />\n              </svg>\n            )}\n          </div>\n          {index !== items.length - 1 && <hr />}\n        </li>\n      ))}\n    </ul>\n  );\n};\n","import React from 'react';\nimport { clsx } from 'clsx';\n\nexport interface PaginationProps {\n  currentPage: number;\n  totalPages: number;\n  onPageChange: (page: number) => void;\n  showFirstLast?: boolean;\n  maxButtons?: number;\n  size?: 'xs' | 'sm' | 'md' | 'lg';\n  className?: string;\n}\n\nexport const Pagination: React.FC<PaginationProps> = ({\n  currentPage,\n  totalPages,\n  onPageChange,\n  showFirstLast = true,\n  maxButtons = 5,\n  size = 'md',\n  className,\n}) => {\n  const getPageNumbers = () => {\n    const delta = Math.floor(maxButtons / 2);\n    const range: (number | string)[] = [];\n    const rangeStart = Math.max(1, currentPage - delta);\n    const rangeEnd = Math.min(totalPages, currentPage + delta);\n\n    if (rangeStart > 1) {\n      range.push(1);\n      if (rangeStart > 2) range.push('...');\n    }\n\n    for (let i = rangeStart; i <= rangeEnd; i++) {\n      range.push(i);\n    }\n\n    if (rangeEnd < totalPages) {\n      if (rangeEnd < totalPages - 1) range.push('...');\n      range.push(totalPages);\n    }\n\n    return range;\n  };\n\n  const buttonClasses = clsx(\n    'btn',\n    size === 'xs' && 'btn-xs',\n    size === 'sm' && 'btn-sm',\n    size === 'lg' && 'btn-lg'\n  );\n\n  return (\n    <div className={clsx('btn-group', className)}>\n      {showFirstLast && (\n        <button\n          className={buttonClasses}\n          onClick={() => onPageChange(1)}\n          disabled={currentPage === 1}\n          aria-label=\"First page\"\n        >\n          «\n        </button>\n      )}\n\n      <button\n        className={buttonClasses}\n        onClick={() => onPageChange(currentPage - 1)}\n        disabled={currentPage === 1}\n        aria-label=\"Previous page\"\n      >\n        ‹\n      </button>\n\n      {getPageNumbers().map((page, index) => (\n        <button\n          key={index}\n          className={clsx(\n            buttonClasses,\n            page === currentPage && 'btn-active',\n            page === '...' && 'btn-disabled'\n          )}\n          onClick={() => typeof page === 'number' && onPageChange(page)}\n          disabled={page === '...'}\n          aria-label={typeof page === 'number' ? `Page ${page}` : undefined}\n          aria-current={page === currentPage ? 'page' : undefined}\n        >\n          {page}\n        </button>\n      ))}\n\n      <button\n        className={buttonClasses}\n        onClick={() => onPageChange(currentPage + 1)}\n        disabled={currentPage === totalPages}\n        aria-label=\"Next page\"\n      >\n        ›\n      </button>\n\n      {showFirstLast && (\n        <button\n          className={buttonClasses}\n          onClick={() => onPageChange(totalPages)}\n          disabled={currentPage === totalPages}\n          aria-label=\"Last page\"\n        >\n          »\n        </button>\n      )}\n    </div>\n  );\n};\n","import React from 'react';\nimport { clsx } from 'clsx';\n\nexport interface EmptyStateProps {\n  icon?: React.ReactNode;\n  title: string;\n  description?: string;\n  action?: {\n    label: string;\n    onClick: () => void;\n  };\n  className?: string;\n}\n\nexport const EmptyState: React.FC<EmptyStateProps> = ({\n  icon,\n  title,\n  description,\n  action,\n  className,\n}) => {\n  const defaultIcon = (\n    <svg\n      className=\"w-16 h-16 text-base-content/20\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      stroke=\"currentColor\"\n    >\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth={1}\n        d=\"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2-2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-3.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 006.586 13H4\"\n      />\n    </svg>\n  );\n\n  return (\n    <div className={clsx('flex flex-col items-center justify-center py-12 px-4', className)}>\n      <div className=\"mb-4\">{icon || defaultIcon}</div>\n      <h3 className=\"text-lg font-semibold text-base-content mb-2\">{title}</h3>\n      {description && (\n        <p className=\"text-sm text-base-content/70 text-center max-w-sm mb-6\">{description}</p>\n      )}\n      {action && (\n        <button className=\"btn btn-primary\" onClick={action.onClick}>\n          {action.label}\n        </button>\n      )}\n    </div>\n  );\n};\n","import React from 'react';\nimport { clsx } from 'clsx';\n\nexport interface BreadcrumbItem {\n  label: string;\n  href?: string;\n  onClick?: () => void;\n  icon?: React.ReactNode;\n}\n\nexport interface BreadcrumbProps {\n  items: BreadcrumbItem[];\n  separator?: React.ReactNode;\n  className?: string;\n}\n\nexport const Breadcrumb: React.FC<BreadcrumbProps> = ({ items, separator, className }) => {\n  const defaultSeparator = (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      className=\"w-4 h-4 stroke-current\"\n    >\n      <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M9 5l7 7-7 7\"></path>\n    </svg>\n  );\n\n  return (\n    <div className={clsx('breadcrumbs text-sm', className)}>\n      <ul>\n        {items.map((item, index) => {\n          const isLast = index === items.length - 1;\n          const content = (\n            <>\n              {item.icon && <span className=\"mr-2\">{item.icon}</span>}\n              {item.label}\n            </>\n          );\n\n          return (\n            <li key={index}>\n              {item.href && !isLast ? (\n                <a href={item.href} onClick={item.onClick}>\n                  {content}\n                </a>\n              ) : item.onClick && !isLast ? (\n                <button onClick={item.onClick} className=\"btn-ghost\">\n                  {content}\n                </button>\n              ) : (\n                <span className={!isLast ? 'cursor-pointer' : ''}>{content}</span>\n              )}\n              {!isLast && (separator || defaultSeparator)}\n            </li>\n          );\n        })}\n      </ul>\n    </div>\n  );\n};\n","import React, { useState } from 'react';\nimport { clsx } from 'clsx';\n\nexport interface Tab {\n  id: string;\n  label: string;\n  content: React.ReactNode;\n  disabled?: boolean;\n}\n\nexport interface TabsProps {\n  tabs: Tab[];\n  defaultTab?: string;\n  activeTab?: string;\n  onTabChange?: (tabId: string) => void;\n  variant?: 'boxed' | 'bordered' | 'lifted';\n  size?: 'xs' | 'sm' | 'md' | 'lg';\n  className?: string;\n}\n\nexport const Tabs: React.FC<TabsProps> = ({\n  tabs,\n  defaultTab,\n  activeTab: controlledActiveTab,\n  onTabChange,\n  variant,\n  size = 'md',\n  className,\n}) => {\n  const [internalActiveTab, setInternalActiveTab] = useState(defaultTab || tabs[0]?.id || '');\n\n  const activeTab = controlledActiveTab ?? internalActiveTab;\n\n  const handleTabClick = (tabId: string) => {\n    if (controlledActiveTab === undefined) {\n      setInternalActiveTab(tabId);\n    }\n    onTabChange?.(tabId);\n  };\n\n  const tabClasses = clsx(\n    'tab',\n    variant === 'boxed' && 'tab-boxed',\n    variant === 'bordered' && 'tab-bordered',\n    variant === 'lifted' && 'tab-lifted',\n    size === 'xs' && 'tab-xs',\n    size === 'sm' && 'tab-sm',\n    size === 'lg' && 'tab-lg'\n  );\n\n  const activeTabData = tabs.find((tab) => tab.id === activeTab);\n\n  return (\n    <div className={className}>\n      <div className={clsx('tabs', variant === 'boxed' && 'tabs-boxed')} role=\"tablist\">\n        {tabs.map((tab) => (\n          <button\n            key={tab.id}\n            role=\"tab\"\n            className={clsx(\n              tabClasses,\n              activeTab === tab.id && 'tab-active',\n              tab.disabled && 'tab-disabled'\n            )}\n            onClick={() => !tab.disabled && handleTabClick(tab.id)}\n            disabled={tab.disabled}\n            aria-selected={activeTab === tab.id}\n            aria-controls={`tabpanel-${tab.id}`}\n          >\n            {tab.label}\n          </button>\n        ))}\n      </div>\n      {activeTabData && (\n        <div\n          role=\"tabpanel\"\n          id={`tabpanel-${activeTabData.id}`}\n          className={clsx(\n            'pt-4',\n            variant === 'bordered' && 'border border-t-0 border-base-300 p-4 rounded-b-lg',\n            variant === 'lifted' && 'border border-t-0 border-base-300 p-4 rounded-b-lg'\n          )}\n        >\n          {activeTabData.content}\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { useState } from 'react';\nimport { clsx } from 'clsx';\n\nexport interface AccordionItem {\n  id: string;\n  title: string;\n  content: React.ReactNode;\n  disabled?: boolean;\n}\n\nexport interface AccordionProps {\n  items: AccordionItem[];\n  defaultOpen?: string | string[];\n  multiple?: boolean;\n  variant?: 'default' | 'arrow' | 'plus';\n  className?: string;\n}\n\nexport const Accordion: React.FC<AccordionProps> = ({\n  items,\n  defaultOpen = [],\n  multiple = false,\n  variant = 'default',\n  className,\n}) => {\n  const [openItems, setOpenItems] = useState<Set<string>>(\n    new Set(Array.isArray(defaultOpen) ? defaultOpen : [defaultOpen])\n  );\n\n  const toggleItem = (itemId: string) => {\n    const newOpenItems = new Set(openItems);\n\n    if (newOpenItems.has(itemId)) {\n      newOpenItems.delete(itemId);\n    } else {\n      if (!multiple) {\n        newOpenItems.clear();\n      }\n      newOpenItems.add(itemId);\n    }\n\n    setOpenItems(newOpenItems);\n  };\n\n  const getIcon = (isOpen: boolean) => {\n    if (variant === 'arrow') {\n      return (\n        <svg\n          className={clsx('h-4 w-4 transition-transform', isOpen && 'rotate-180')}\n          fill=\"none\"\n          viewBox=\"0 0 24 24\"\n          stroke=\"currentColor\"\n        >\n          <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n        </svg>\n      );\n    } else if (variant === 'plus') {\n      return (\n        <svg className=\"h-4 w-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n          {isOpen ? (\n            <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M20 12H4\" />\n          ) : (\n            <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 4v16m8-8H4\" />\n          )}\n        </svg>\n      );\n    }\n    return null;\n  };\n\n  return (\n    <div className={clsx('space-y-2', className)}>\n      {items.map((item) => {\n        const isOpen = openItems.has(item.id);\n\n        return (\n          <div\n            key={item.id}\n            className={clsx('collapse collapse-arrow', isOpen && 'collapse-open', 'bg-base-200')}\n          >\n            <input\n              type={multiple ? 'checkbox' : 'radio'}\n              name={multiple ? undefined : 'accordion'}\n              checked={isOpen}\n              onChange={() => !item.disabled && toggleItem(item.id)}\n              disabled={item.disabled}\n              className=\"peer\"\n              aria-label={`Toggle ${item.title}`}\n            />\n            <div\n              className={clsx(\n                'collapse-title text-lg font-medium',\n                item.disabled && 'opacity-50 cursor-not-allowed'\n              )}\n            >\n              <div className=\"flex items-center justify-between\">\n                <span>{item.title}</span>\n                {variant !== 'default' && getIcon(isOpen)}\n              </div>\n            </div>\n            <div className=\"collapse-content\">\n              <div className=\"pt-2\">{item.content}</div>\n            </div>\n          </div>\n        );\n      })}\n    </div>\n  );\n};\n\nexport interface CollapseProps {\n  title: string;\n  children: React.ReactNode;\n  defaultOpen?: boolean;\n  variant?: 'default' | 'arrow' | 'plus';\n  className?: string;\n}\n\nexport const Collapse: React.FC<CollapseProps> = ({\n  title,\n  children,\n  defaultOpen = false,\n  variant = 'default',\n  className,\n}) => {\n  return (\n    <Accordion\n      items={[\n        {\n          id: 'single',\n          title,\n          content: children,\n        },\n      ]}\n      defaultOpen={defaultOpen ? 'single' : []}\n      variant={variant}\n      {...(className && { className })}\n    />\n  );\n};\n","import EventEmitter from 'eventemitter3';\nimport { ScrollAnimation, easeInOutCubic } from './ScrollAnimation';\n\nexport type ScrollDirection = 'up' | 'down';\nexport type ScrollMode = 'panelmove' | 'dismissmove' | 'panemove';\nexport type ScrollHandler = (direction: ScrollDirection, mode: ScrollMode) => void;\n\nexport class VerticalScrollerCore extends EventEmitter {\n  // Constants for thresholds and durations\n  private readonly SCROLL_THRESHOLD = 10;\n  private readonly TAP_THRESHOLD = 50; // ms to be considered a tap\n  private readonly RELEASE_THRESHOLD = 0.05; // 5% of the pane height\n  private readonly ANIMATION_DURATION = 200;\n\n  // Touch state variables\n  private touchStartY: number | null = null;\n  private lastTouchY: number | null = null;\n  private touchStartTime: number | null = null;\n  private currentY: number = 0;\n\n  // Scroll state variables\n  private scrollMode: ScrollMode | null = null;\n  private scrollDirection: ScrollDirection | null = null;\n  private currentAnimation: ScrollAnimation | null = null;\n\n  // Element dimensions\n  private paneHeight: number;\n  \n  // Track if component is active for window keyboard events\n  private isActive: boolean = false;\n\n  constructor(\n    private element: HTMLElement,\n    private focusedId: string\n  ) {\n    super();\n    this.paneHeight = element.clientHeight;\n    this.bindEvents();\n    // Note: Initial positioning is now handled by the React component\n    // to prevent unwanted resets during re-renders\n  }\n\n  private bindEvents(): void {\n    this.element.addEventListener('touchstart', this.handleTouchStart);\n    this.element.addEventListener('touchmove', this.handleTouchMove);\n    this.element.addEventListener('touchend', this.handleTouchEnd);\n\n    // Desktop support\n    this.element.addEventListener('wheel', this.handleWheel, { passive: false });\n    \n    // Use window-level keyboard events instead of element-level\n    window.addEventListener('keydown', this.handleKeyDown);\n\n    // Still set tabindex for accessibility but don't require focus for keyboard nav\n    if (!this.element.hasAttribute('tabindex')) {\n      this.element.setAttribute('tabindex', '0');\n    }\n  }\n\n  public setActive(active: boolean): void {\n    this.isActive = active;\n  }\n\n  public destroy(): void {\n    this.element.removeEventListener('touchstart', this.handleTouchStart);\n    this.element.removeEventListener('touchmove', this.handleTouchMove);\n    this.element.removeEventListener('touchend', this.handleTouchEnd);\n    this.element.removeEventListener('wheel', this.handleWheel);\n    \n    // Remove window-level keyboard listener\n    window.removeEventListener('keydown', this.handleKeyDown);\n    \n    this.isActive = false;\n\n    if (this.currentAnimation) {\n      this.currentAnimation.cancel();\n      this.currentAnimation = null;\n    }\n\n    this.removeAllListeners();\n  }\n\n  private handleTouchStart = (e: TouchEvent): void => {\n    // Initialize touch start variables\n    this.touchStartY = e.touches[0]?.clientY ?? 0;\n    this.lastTouchY = this.touchStartY;\n    this.touchStartTime = Date.now();\n    this.currentY = 0;\n    this.scrollMode = null;\n    this.scrollDirection = null;\n\n    // Cancel any ongoing animation\n    if (this.currentAnimation) {\n      this.currentAnimation.cancel();\n      this.currentAnimation = null;\n    }\n  };\n\n  private handleTouchMove = (e: TouchEvent): void => {\n    if (this.touchStartY === null || this.lastTouchY === null) return;\n\n    const currentY = e.touches[0]?.clientY ?? 0;\n    const deltaY = this.lastTouchY - currentY;\n\n    // Determine scroll direction if not already set\n    if (!this.scrollDirection && Math.abs(deltaY) > this.SCROLL_THRESHOLD) {\n      this.scrollDirection = deltaY > 0 ? 'up' : 'down';\n    }\n\n    // Determine scroll mode if not already set\n    if (!this.scrollMode) {\n      // Here you might implement logic to determine between 'panelmove' and 'dismissmove'\n      this.scrollMode = 'panemove';\n    }\n\n    // Update current position\n    this.currentY += deltaY;\n\n    // Apply the movement\n    if (this.scrollMode === 'panemove') {\n      this.element.scrollTop += deltaY;\n    } else if (this.scrollMode === 'panelmove') {\n      // Implement panel move logic here\n    } else if (this.scrollMode === 'dismissmove') {\n      // Implement dismiss move logic here\n    }\n\n    // Update last touch position\n    this.lastTouchY = currentY;\n  };\n\n  private handleTouchEnd = (): void => {\n    if (this.touchStartY === null || this.lastTouchY === null || this.touchStartTime === null)\n      return;\n\n    const touchEndTime = Date.now();\n    const touchDuration = touchEndTime - this.touchStartTime;\n\n    // Calculate total movement\n    const totalDeltaY = this.touchStartY - this.lastTouchY;\n\n    // Determine if it was a tap or a move\n    if (Math.abs(totalDeltaY) < this.SCROLL_THRESHOLD && touchDuration < this.TAP_THRESHOLD) {\n      // Handle tap\n      this.handleTap();\n    } else {\n      // Handle move end based on mode\n      switch (this.scrollMode) {\n        case 'panemove':\n          this.handlePaneMoveEnd();\n          break;\n        case 'panelmove':\n          this.handlePanelMoveEnd();\n          break;\n        case 'dismissmove':\n          this.handleDismissMoveEnd();\n          break;\n      }\n    }\n\n    this.resetTouchState();\n  };\n\n  private handleTap(): void {\n    this.emit('tap');\n  }\n\n  private handlePaneMoveEnd(): void {\n    if (!this.scrollDirection) {\n      this.setPane(this.focusedId);\n      return;\n    }\n\n    const percentMoved = Math.abs(this.currentY) / this.paneHeight;\n\n    if (percentMoved > this.RELEASE_THRESHOLD) {\n      // Move to next/previous pane\n      const currentPaneElement = this.element.querySelector(\n        `[data-vertical-scroller-id=\"${this.focusedId}\"]`\n      ) as HTMLElement;\n      if (currentPaneElement) {\n        const currentIndex = Array.from(this.element.children).indexOf(currentPaneElement);\n        const newIndex = this.scrollDirection === 'up' ? currentIndex + 1 : currentIndex - 1;\n        const newPaneElement = this.element.children[newIndex] as HTMLElement;\n        if (newPaneElement) {\n          const newId = newPaneElement.getAttribute('data-vertical-scroller-id');\n          if (newId) {\n            this.setPane(newId);\n            return;\n          }\n        }\n      }\n    }\n    this.setPane(this.focusedId);\n  }\n\n  private handlePanelMoveEnd(): void {\n    // Implement panel move end logic here\n  }\n\n  private handleDismissMoveEnd(): void {\n    // Implement dismiss move logic here\n  }\n\n  // Note: This method is reserved for future smooth scrolling features\n  // private animateToPosition(targetPosition: number): void {\n  //     if (this.currentAnimation) {\n  //         this.currentAnimation.cancel();\n  //     }\n\n  //     this.currentAnimation = new ScrollAnimation({\n  //         element: this.element,\n  //         targetPosition,\n  //         duration: this.ANIMATION_DURATION,\n  //         easing: easeInOutCubic,\n  //         onComplete: () => {\n  //             this.currentAnimation = null;\n  //         },\n  //         onCancel: () => {\n  //             this.currentAnimation = null;\n  //         },\n  //     });\n  // }\n\n  private resetTouchState(): void {\n    this.touchStartY = null;\n    this.lastTouchY = null;\n    this.touchStartTime = null;\n    this.currentY = 0;\n    this.scrollMode = null;\n    this.scrollDirection = null;\n  }\n\n  public setPane(id: string, instant: boolean = false): void {\n    const targetElement = this.element.querySelector(\n      `[data-vertical-scroller-id=\"${id}\"]`\n    ) as HTMLElement;\n\n    if (!targetElement) {\n      console.error(`No element found with data-vertical-scroller-id=\"${id}\"`);\n      return;\n    }\n\n    if (instant) {\n      this.element.scrollTop = targetElement.offsetTop;\n      this.emit('set', id);\n    } else {\n      if (this.currentAnimation) {\n        this.currentAnimation.cancel();\n      }\n\n      this.currentAnimation = new ScrollAnimation({\n        element: this.element,\n        targetPosition: targetElement.offsetTop,\n        duration: this.ANIMATION_DURATION,\n        easing: easeInOutCubic,\n        onComplete: () => {\n          this.emit('set', id);\n          this.currentAnimation = null;\n        },\n        onCancel: () => {\n          this.currentAnimation = null;\n        },\n      });\n    }\n\n    this.focusedId = id;\n  }\n\n  // Desktop support methods\n  private handleWheel = (e: WheelEvent): void => {\n    e.preventDefault();\n\n    // Determine direction based on wheel delta\n    const direction = e.deltaY > 0 ? 'down' : 'up';\n\n    // Get current pane\n    const currentPaneElement = this.element.querySelector(\n      `[data-vertical-scroller-id=\"${this.focusedId}\"]`\n    ) as HTMLElement;\n    if (!currentPaneElement) return;\n\n    const currentIndex = Array.from(this.element.children).indexOf(currentPaneElement);\n    const newIndex = direction === 'down' ? currentIndex + 1 : currentIndex - 1;\n\n    // Check bounds\n    if (newIndex < 0 || newIndex >= this.element.children.length) return;\n\n    const newPaneElement = this.element.children[newIndex] as HTMLElement;\n    const newId = newPaneElement.getAttribute('data-vertical-scroller-id');\n\n    if (newId && newId !== this.focusedId) {\n      this.setPane(newId);\n    }\n  };\n\n  private handleKeyDown = (e: KeyboardEvent): void => {\n    // Only handle keyboard events when this component is active\n    if (!this.isActive) return;\n\n    let direction: 'up' | 'down' | null = null;\n\n    switch (e.key) {\n      case 'ArrowUp':\n      case 'PageUp':\n        direction = 'up';\n        break;\n      case 'ArrowDown':\n      case 'PageDown':\n      case ' ': // Spacebar\n        direction = 'down';\n        break;\n      default:\n        return;\n    }\n\n    e.preventDefault();\n\n    // Get current pane\n    const currentPaneElement = this.element.querySelector(\n      `[data-vertical-scroller-id=\"${this.focusedId}\"]`\n    ) as HTMLElement;\n    if (!currentPaneElement) return;\n\n    const currentIndex = Array.from(this.element.children).indexOf(currentPaneElement);\n    const newIndex = direction === 'down' ? currentIndex + 1 : currentIndex - 1;\n\n    // Check bounds\n    if (newIndex < 0 || newIndex >= this.element.children.length) return;\n\n    const newPaneElement = this.element.children[newIndex] as HTMLElement;\n    const newId = newPaneElement.getAttribute('data-vertical-scroller-id');\n\n    if (newId) {\n      this.setPane(newId);\n    }\n  };\n}\n","interface ScrollAnimationOptions {\n    element: HTMLElement;\n    targetPosition: number;\n    duration: number;\n    easing?: (t: number) => number;\n    onComplete?: () => void;\n    onCancel?: () => void;\n}\n\nexport class ScrollAnimation {\n    private startTime: number | null = null;\n    private startPosition: number;\n    private animationFrameId: number | null = null;\n\n    constructor(private options: ScrollAnimationOptions) {\n        this.startPosition = this.options.element.scrollTop;\n        this.start();\n    }\n\n    private start(): void {\n        this.startTime = performance.now();\n        this.animationFrameId = requestAnimationFrame(this.animate);\n    }\n\n    private animate = (currentTime: number): void => {\n        if (!this.startTime) {\n            this.startTime = currentTime;\n        }\n\n        const elapsed = currentTime - this.startTime;\n        const progress = Math.min(elapsed / this.options.duration, 1);\n        const easedProgress = this.options.easing ? this.options.easing(progress) : progress;\n\n        const currentPosition = this.startPosition + (this.options.targetPosition - this.startPosition) * easedProgress;\n        this.options.element.scrollTop = currentPosition;\n\n        if (progress < 1) {\n            this.animationFrameId = requestAnimationFrame(this.animate);\n        } else {\n            this.options.onComplete?.();\n        }\n    };\n\n    public cancel(): void {\n        if (this.animationFrameId !== null) {\n            cancelAnimationFrame(this.animationFrameId);\n            this.options.onCancel?.();\n        }\n    }\n}\n\nexport const easeInOutCubic = (t: number): number =>\n    t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;\n\nexport const linear = (t: number): number => t;","import React, { useEffect, useRef, memo } from 'react';\nimport { VerticalScrollerCore } from './VerticalScroller.core';\nimport { cn } from '../../utils/cn';\n\nexport interface VerticalScrollerProps {\n  /**\n   * Children must be React elements with data-vertical-scroller-id\n   */\n  children: React.ReactNode;\n\n  /**\n   * Current pane ID to display (controlled mode)\n   */\n  currentPaneId?: string;\n\n  /**\n   * Initial pane ID to focus on (uncontrolled mode)\n   * @deprecated Use currentPaneId for controlled behavior\n   */\n  initialId?: string;\n\n  /**\n   * Callback when pane changes\n   */\n  onPaneChange?: (id: string) => void;\n\n  /**\n   * Container className\n   */\n  className?: string;\n\n  /**\n   * Height of the container (default: 100vh)\n   */\n  height?: string | number;\n\n  /**\n   * Enable keyboard navigation (default: true)\n   * When true, arrow keys and page up/down will navigate between panes\n   */\n  enableKeyboardNav?: boolean;\n}\n\n/**\n * React wrapper for the high-performance VerticalScroller\n *\n * Can be used in controlled or uncontrolled mode:\n * - Controlled: Use `currentPaneId` prop\n * - Uncontrolled: Use `initialId` prop (deprecated)\n *\n * @example\n * ```tsx\n * // Controlled usage (recommended)\n * <VerticalScroller\n *   currentPaneId={selectedPhotoId}\n *   onPaneChange={(id) => setSelectedPhotoId(id)}\n * >\n *   <div data-vertical-scroller-id=\"pane-1\">Content 1</div>\n *   <div data-vertical-scroller-id=\"pane-2\">Content 2</div>\n * </VerticalScroller>\n * ```\n */\nexport const VerticalScroller = memo<VerticalScrollerProps>(\n  ({ children, currentPaneId, initialId, onPaneChange, className, height = '100vh', enableKeyboardNav = true }) => {\n    const containerRef = useRef<HTMLDivElement>(null);\n    const scrollerRef = useRef<VerticalScrollerCore | null>(null);\n\n    // Initialize the core scroller once\n    useEffect(() => {\n      if (!containerRef.current) return;\n\n      const scroller = new VerticalScrollerCore(containerRef.current, '');\n      scrollerRef.current = scroller;\n      \n      // Activate the scroller for keyboard events if enabled\n      if (enableKeyboardNav) {\n        scroller.setActive(true);\n      }\n\n      // Set up event handler\n      if (onPaneChange) {\n        scroller.on('set', onPaneChange);\n      }\n\n      return () => {\n        scroller.destroy();\n        scrollerRef.current = null;\n      };\n    }, []); // Only run once on mount\n    \n    // Update active state when prop changes\n    useEffect(() => {\n      if (scrollerRef.current) {\n        scrollerRef.current.setActive(enableKeyboardNav);\n      }\n    }, [enableKeyboardNav]);\n\n    // Handle controlled mode - scroll when currentPaneId changes\n    useEffect(() => {\n      if (!scrollerRef.current || !currentPaneId) return;\n\n      // Scroll to the specified pane immediately\n      scrollerRef.current.setPane(currentPaneId, true);\n    }, [currentPaneId]);\n\n    // Handle uncontrolled mode - set initial position once\n    useEffect(() => {\n      if (!scrollerRef.current || currentPaneId !== undefined) return;\n\n      // Only use initialId if we're in uncontrolled mode\n      if (initialId) {\n        scrollerRef.current.setPane(initialId, true);\n      }\n    }, []); // Only run once on mount\n\n    return (\n      <div\n        ref={containerRef}\n        className={cn('vertical-scroller-container', className)}\n        style={{\n          height: typeof height === 'number' ? `${height}px` : height,\n          position: 'relative',\n          overflow: 'hidden',\n          touchAction: 'none', // Prevent browser scroll interference\n        }}\n      >\n        {children}\n      </div>\n    );\n  }\n);\n\nVerticalScroller.displayName = 'VerticalScroller';\n\n/**\n * Pane component for semantic usage\n */\nexport interface PaneProps {\n  id: string;\n  children: React.ReactNode;\n  className?: string;\n  onVisible?: () => void;\n}\n\nexport const Pane = memo<PaneProps>(({ id, children, className, onVisible }) => {\n  const ref = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    if (!onVisible || !ref.current) return;\n\n    const observer = new IntersectionObserver(\n      ([entry]) => {\n        if (entry?.isIntersecting) {\n          onVisible();\n        }\n      },\n      { threshold: 0.1 }\n    );\n\n    observer.observe(ref.current);\n\n    return () => observer.disconnect();\n  }, [onVisible]);\n\n  return (\n    <div\n      ref={ref}\n      data-vertical-scroller-id={id}\n      className={cn('vertical-scroller-pane', className)}\n      style={{\n        height: '100%',\n        width: '100%',\n        position: 'relative',\n      }}\n    >\n      {children}\n    </div>\n  );\n});\n\nPane.displayName = 'Pane';\n","import { useEffect, useRef, useState, useCallback } from 'react';\nimport { VerticalScrollerCore } from './VerticalScroller.core';\nimport { UseVerticalScrollerOptions, Pane } from './types';\n\nexport function useVerticalScroller(\n  panes: Pane[],\n  options: UseVerticalScrollerOptions = {}\n) {\n  const {\n    bufferSize = 3,\n    preloadImages = true,\n    onPaneChange,\n    // animationDuration = 300, // Reserved for future use\n  } = options;\n\n  const containerRef = useRef<HTMLDivElement>(null);\n  const scrollerRef = useRef<VerticalScrollerCore | null>(null);\n  const [currentPaneId, setCurrentPaneId] = useState<string>(\n    panes[0]?.id || ''\n  );\n  const [visiblePanes, setVisiblePanes] = useState<Pane[]>([]);\n\n  // Calculate which panes should be visible based on current position\n  const updateVisiblePanes = useCallback((focusedId: string) => {\n    const currentIndex = panes.findIndex((p) => p.id === focusedId);\n    if (currentIndex === -1) return;\n\n    const startIndex = Math.max(0, currentIndex - bufferSize);\n    const endIndex = Math.min(panes.length - 1, currentIndex + bufferSize);\n    \n    const newVisiblePanes = panes.slice(startIndex, endIndex + 1);\n    setVisiblePanes(newVisiblePanes);\n\n    // Preload images in the buffer zone\n    if (preloadImages) {\n      newVisiblePanes.forEach((pane) => {\n        if (pane.preload !== false) {\n          preloadPaneImages(pane);\n        }\n      });\n    }\n  }, [panes, bufferSize, preloadImages]);\n\n  // Preload images in a pane\n  const preloadPaneImages = (pane: Pane) => {\n    if (!pane.content) return;\n\n    // Extract image URLs from the content (this is a simplified version)\n    const container = document.createElement('div');\n    container.innerHTML = String(pane.content);\n    const images = container.querySelectorAll('img');\n    \n    images.forEach((img) => {\n      const src = img.getAttribute('src') || img.getAttribute('data-src');\n      if (src) {\n        const image = new Image();\n        image.src = src;\n      }\n    });\n  };\n\n  // Initialize the scroller\n  useEffect(() => {\n    if (!containerRef.current || panes.length === 0) return;\n\n    const scroller = new VerticalScrollerCore(\n      containerRef.current,\n      panes[0]?.id || ''\n    );\n\n    scrollerRef.current = scroller;\n\n    // Listen for pane changes\n    scroller.on('set', (id: string) => {\n      setCurrentPaneId(id);\n      updateVisiblePanes(id);\n      \n      const index = panes.findIndex((p) => p.id === id);\n      onPaneChange?.(id, index);\n    });\n\n    // Initial visible panes\n    updateVisiblePanes(panes[0]?.id || '');\n\n    return () => {\n      scroller.destroy();\n    };\n  }, [panes, updateVisiblePanes, onPaneChange]);\n\n  // Programmatically scroll to a pane\n  const scrollToPane = useCallback((paneId: string) => {\n    if (scrollerRef.current) {\n      scrollerRef.current.setPane(paneId);\n    }\n  }, []);\n\n  // Get current pane index\n  const currentPaneIndex = panes.findIndex((p) => p.id === currentPaneId);\n\n  return {\n    containerRef,\n    currentPaneId,\n    currentPaneIndex,\n    visiblePanes,\n    scrollToPane,\n    totalPanes: panes.length,\n  };\n}","import React from 'react';\n\nexport interface SocialIconProps {\n  className?: string;\n  size?: number;\n}\n\nexport const GoogleIcon: React.FC<SocialIconProps> = ({ className = 'h-5 w-5', size = 24 }) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    className={className}\n    viewBox=\"0 0 24 24\"\n    width={size}\n    height={size}\n  >\n    <path\n      fill=\"#4285F4\"\n      d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"\n    />\n    <path\n      fill=\"#34A853\"\n      d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"\n    />\n    <path\n      fill=\"#FBBC05\"\n      d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"\n    />\n    <path\n      fill=\"#EA4335\"\n      d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"\n    />\n  </svg>\n);\n\nexport const AppleIcon: React.FC<SocialIconProps> = ({ className = 'h-5 w-5', size = 24 }) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    className={className}\n    viewBox=\"0 0 24 24\"\n    fill=\"currentColor\"\n    width={size}\n    height={size}\n  >\n    <path d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\" />\n  </svg>\n);\n\nexport const DiscordIcon: React.FC<SocialIconProps> = ({ className = 'h-5 w-5', size = 24 }) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    className={className}\n    viewBox=\"0 0 24 24\"\n    fill=\"#5865F2\"\n    width={size}\n    height={size}\n  >\n    <path d=\"M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z\" />\n  </svg>\n);\n\nexport const MicrosoftIcon: React.FC<SocialIconProps> = ({ className = 'h-5 w-5', size = 24 }) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    className={className}\n    viewBox=\"0 0 24 24\"\n    width={size}\n    height={size}\n  >\n    <path fill=\"#F25022\" d=\"M1 1h10v10H1z\" />\n    <path fill=\"#00A4EF\" d=\"M13 1h10v10H13z\" />\n    <path fill=\"#7FBA00\" d=\"M1 13h10v10H1z\" />\n    <path fill=\"#FFB900\" d=\"M13 13h10v10H13z\" />\n  </svg>\n);\n\nexport const GitHubIcon: React.FC<SocialIconProps> = ({ className = 'h-5 w-5', size = 24 }) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    className={className}\n    viewBox=\"0 0 24 24\"\n    fill=\"currentColor\"\n    width={size}\n    height={size}\n  >\n    <path d=\"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z\" />\n  </svg>\n);\n","import React from 'react';\nimport { Button } from '../Button';\nimport { cn } from '../../utils/cn';\n\nexport interface FloatingActionButtonProps {\n  /**\n   * Icon to display in the FAB\n   */\n  icon: React.ReactNode;\n\n  /**\n   * Click handler\n   */\n  onClick?: () => void;\n\n  /**\n   * Position of the FAB\n   */\n  position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\n\n  /**\n   * Size of the FAB\n   */\n  size?: 'sm' | 'md' | 'lg';\n\n  /**\n   * Variant/color of the FAB\n   */\n  variant?: 'primary' | 'secondary' | 'accent' | 'neutral';\n\n  /**\n   * Accessibility label\n   */\n  ariaLabel: string;\n\n  /**\n   * Additional CSS classes\n   */\n  className?: string;\n\n  /**\n   * Whether the FAB is visible\n   */\n  visible?: boolean;\n\n  /**\n   * z-index for layering\n   */\n  zIndex?: number;\n}\n\nconst positionClasses = {\n  'bottom-right': 'bottom-6 right-6',\n  'bottom-left': 'bottom-6 left-6',\n  'top-right': 'top-6 right-6',\n  'top-left': 'top-6 left-6',\n};\n\nconst sizeClasses = {\n  sm: 'w-12 h-12',\n  md: 'w-14 h-14',\n  lg: 'w-16 h-16',\n};\n\nexport const FloatingActionButton: React.FC<FloatingActionButtonProps> = ({\n  icon,\n  onClick,\n  position = 'bottom-right',\n  size = 'md',\n  variant = 'primary',\n  ariaLabel,\n  className,\n  visible = true,\n  zIndex = 50,\n}) => {\n  if (!visible) return null;\n\n  return (\n    <Button\n      variant={variant}\n      size={size}\n      onClick={onClick}\n      aria-label={ariaLabel}\n      className={cn(\n        'fixed shadow-lg hover:shadow-xl transition-all duration-200',\n        'rounded-full border-0',\n        sizeClasses[size],\n        'flex items-center justify-center',\n        positionClasses[position],\n        className\n      )}\n      style={{ zIndex }}\n    >\n      {icon}\n    </Button>\n  );\n};\n","import { useTheme } from './ThemeProvider';\nimport { useMemo } from 'react';\nimport { ThemeColors } from './types';\n\nexport const useThemeColors = () => {\n  const { colors, theme } = useTheme();\n\n  return useMemo(\n    () => ({\n      ...colors,\n      // Helper functions\n      getColor: (color: keyof ThemeColors) => colors[color],\n      getCSSVariable: (variable: string) => {\n        if (typeof window === 'undefined') return '';\n        const computed = getComputedStyle(document.documentElement);\n        return computed.getPropertyValue(`--${variable}`).trim();\n      },\n      // Semantic helpers\n      isDark: theme === 'dark' || theme === 'business' || theme === 'grove-dark',\n      isLight: theme === 'light' || theme === 'cupcake' || theme === 'grove-light',\n    }),\n    [colors, theme]\n  );\n};\n","import React from 'react';\nimport { useTheme } from './ThemeProvider';\nimport { cn } from '../utils';\n\nexport const ThemePreview: React.FC = () => {\n  const { theme, setTheme, themes } = useTheme();\n\n  return (\n    <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4 p-4\">\n      {themes.map((t) => (\n        <div\n          key={t}\n          data-theme={t}\n          className={cn(\n            'card bordered cursor-pointer transition-all',\n            theme === t && 'ring-2 ring-primary ring-offset-2 ring-offset-base-100'\n          )}\n          onClick={() => setTheme(t)}\n          role=\"button\"\n          tabIndex={0}\n          onKeyDown={(e) => {\n            if (e.key === 'Enter' || e.key === ' ') {\n              e.preventDefault();\n              setTheme(t);\n            }\n          }}\n          aria-label={`Select ${t} theme`}\n          aria-pressed={theme === t}\n        >\n          <div className=\"card-body\">\n            <h3 className=\"card-title capitalize\">{t}</h3>\n            <div className=\"flex gap-2\">\n              <div className=\"badge badge-primary\">Primary</div>\n              <div className=\"badge badge-secondary\">Secondary</div>\n              <div className=\"badge badge-accent\">Accent</div>\n            </div>\n            <div className=\"flex flex-wrap gap-2 mt-2\">\n              <div\n                className=\"bg-base-100 w-8 h-8 rounded border border-base-content/20\"\n                title=\"base-100\"\n              ></div>\n              <div\n                className=\"bg-base-200 w-8 h-8 rounded border border-base-content/20\"\n                title=\"base-200\"\n              ></div>\n              <div\n                className=\"bg-base-300 w-8 h-8 rounded border border-base-content/20\"\n                title=\"base-300\"\n              ></div>\n            </div>\n            <div className=\"flex gap-1 mt-2\">\n              <div className=\"badge badge-sm badge-info\">Info</div>\n              <div className=\"badge badge-sm badge-success\">Success</div>\n              <div className=\"badge badge-sm badge-warning\">Warning</div>\n              <div className=\"badge badge-sm badge-error\">Error</div>\n            </div>\n          </div>\n        </div>\n      ))}\n    </div>\n  );\n};\n","// Export theme utilities and configuration\n// Note: CSS files are available as separate imports to avoid SSR issues\n// Import them separately: import '@orchard9ai/design-system/dist/grove.css'\n\n// Available theme names\nexport const themes = {\n  // Default themes from DaisyUI\n  light: 'light',\n  dark: 'dark',\n  cupcake: 'cupcake',\n  business: 'business',\n  // Custom Orchard9 themes\n  grove: 'grove',\n  // Dawn themes\n  dawn: 'dawn',\n  dusk: 'dusk',\n} as const\n\nexport type ThemeName = typeof themes[keyof typeof themes]","import { useTheme } from '../theme/ThemeProvider';\nimport { useMemo } from 'react';\nimport tokens from './tokens.json';\nimport type { Tokens } from './types';\n\n/**\n * Hook to get all design tokens for the current theme\n * @returns Complete token object for the active theme\n */\nexport const useTokens = (): Tokens => {\n  const { theme } = useTheme();\n\n  return useMemo(() => {\n    // Fall back to light theme if tokens don't exist for the current theme\n    const themeTokens = tokens[theme as keyof typeof tokens] || tokens.light;\n    return themeTokens as unknown as Tokens;\n  }, [theme]);\n};\n\n/**\n * Hook to get color tokens for the current theme\n * @returns Color token object with all semantic color values\n */\nexport const useColorTokens = () => {\n  const tokens = useTokens();\n  return tokens.colors;\n};\n\n/**\n * Hook to get spacing tokens\n * @returns Spacing scale object with rem/px values\n */\nexport const useSpacingTokens = () => {\n  const tokens = useTokens();\n  return tokens.spacing;\n};\n\n/**\n * Hook to get typography tokens\n * @returns Typography scale with font sizes, weights, and line heights\n */\nexport const useTypographyTokens = () => {\n  const tokens = useTokens();\n  return tokens.typography;\n};\n\n/**\n * Hook to get animation tokens\n * @returns Animation duration and easing values\n */\nexport const useAnimationTokens = () => {\n  const tokens = useTokens();\n  return tokens.animation;\n};\n\n/**\n * Hook to get shadow tokens\n * @returns Box shadow definitions for different elevations\n */\nexport const useShadowTokens = () => {\n  const tokens = useTokens();\n  return tokens.shadows;\n};\n\n/**\n * Hook to get border radius tokens\n * @returns Border radius values for different corner styles\n */\nexport const useBorderRadiusTokens = () => {\n  const tokens = useTokens();\n  return tokens.borderRadius;\n};\n\n/**\n * Hook to get a specific color token value\n * @param colorName - The color token name (e.g., 'primary', 'base-100')\n * @returns The hex color value for the current theme\n */\nexport const useColorValue = (colorName: keyof Tokens['colors']) => {\n  const colors = useColorTokens();\n  return colors[colorName];\n};\n\n/**\n * Hook to get a specific spacing token value\n * @param spacing - The spacing token key (e.g., '4', '8', '16')\n * @returns The spacing value in rem/px\n */\nexport const useSpacingValue = (spacing: keyof Tokens['spacing']) => {\n  const spacingTokens = useSpacingTokens();\n  return spacingTokens[spacing];\n};\n","{\n  \"light\": {\n    \"colors\": {\n      \"primary\": \"#6419E6\",\n      \"primary-focus\": \"#5016C7\",\n      \"primary-content\": \"#FFFFFF\",\n      \"secondary\": \"#E879F9\",\n      \"secondary-focus\": \"#D946EF\",\n      \"secondary-content\": \"#FFFFFF\",\n      \"accent\": \"#F59E0B\",\n      \"accent-focus\": \"#D97706\",\n      \"accent-content\": \"#FFFFFF\",\n      \"neutral\": \"#3D4451\",\n      \"neutral-focus\": \"#2A2E37\",\n      \"neutral-content\": \"#FFFFFF\",\n      \"base-100\": \"#FFFFFF\",\n      \"base-200\": \"#F2F2F2\",\n      \"base-300\": \"#E5E6E6\",\n      \"base-content\": \"#1F2937\",\n      \"info\": \"#3ABFF8\",\n      \"success\": \"#36D399\",\n      \"warning\": \"#FBBD23\",\n      \"error\": \"#F87272\"\n    },\n    \"spacing\": {\n      \"0\": \"0px\",\n      \"1\": \"0.25rem\",\n      \"2\": \"0.5rem\",\n      \"3\": \"0.75rem\",\n      \"4\": \"1rem\",\n      \"5\": \"1.25rem\",\n      \"6\": \"1.5rem\",\n      \"8\": \"2rem\",\n      \"10\": \"2.5rem\",\n      \"12\": \"3rem\",\n      \"16\": \"4rem\",\n      \"20\": \"5rem\",\n      \"24\": \"6rem\"\n    },\n    \"typography\": {\n      \"fontSize\": {\n        \"xs\": [\n          \"0.6875rem\",\n          {\n            \"lineHeight\": \"0.9375rem\"\n          }\n        ],\n        \"sm\": [\n          \"0.8125rem\",\n          {\n            \"lineHeight\": \"1.125rem\"\n          }\n        ],\n        \"base\": [\n          \"0.9375rem\",\n          {\n            \"lineHeight\": \"1.375rem\"\n          }\n        ],\n        \"lg\": [\n          \"1rem\",\n          {\n            \"lineHeight\": \"1.5rem\"\n          }\n        ],\n        \"xl\": [\n          \"1.0625rem\",\n          {\n            \"lineHeight\": \"1.5rem\"\n          }\n        ],\n        \"2xl\": [\n          \"1.1875rem\",\n          {\n            \"lineHeight\": \"1.625rem\"\n          }\n        ],\n        \"3xl\": [\n          \"1.375rem\",\n          {\n            \"lineHeight\": \"1.75rem\"\n          }\n        ],\n        \"4xl\": [\n          \"1.625rem\",\n          {\n            \"lineHeight\": \"1.875rem\"\n          }\n        ],\n        \"5xl\": [\n          \"2rem\",\n          {\n            \"lineHeight\": \"1\"\n          }\n        ]\n      },\n      \"fontWeight\": {\n        \"normal\": \"400\",\n        \"medium\": \"500\",\n        \"semibold\": \"600\",\n        \"bold\": \"700\"\n      }\n    },\n    \"animation\": {\n      \"duration\": {\n        \"fast\": \"150ms\",\n        \"base\": \"300ms\",\n        \"slow\": \"500ms\",\n        \"slower\": \"700ms\"\n      },\n      \"easing\": {\n        \"default\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n        \"linear\": \"linear\",\n        \"in\": \"cubic-bezier(0.4, 0, 1, 1)\",\n        \"out\": \"cubic-bezier(0, 0, 0.2, 1)\",\n        \"inOut\": \"cubic-bezier(0.4, 0, 0.2, 1)\"\n      }\n    },\n    \"shadows\": {\n      \"sm\": \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n      \"base\": \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n      \"md\": \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n      \"lg\": \"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",\n      \"xl\": \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\"\n    },\n    \"borderRadius\": {\n      \"none\": \"0\",\n      \"sm\": \"0.125rem\",\n      \"base\": \"0.25rem\",\n      \"md\": \"0.375rem\",\n      \"lg\": \"0.5rem\",\n      \"xl\": \"0.75rem\",\n      \"2xl\": \"1rem\",\n      \"full\": \"9999px\"\n    }\n  },\n  \"dark\": {\n    \"colors\": {\n      \"primary\": \"#6419E6\",\n      \"primary-focus\": \"#5016C7\",\n      \"primary-content\": \"#FFFFFF\",\n      \"secondary\": \"#E879F9\",\n      \"secondary-focus\": \"#D946EF\",\n      \"secondary-content\": \"#FFFFFF\",\n      \"accent\": \"#F59E0B\",\n      \"accent-focus\": \"#D97706\",\n      \"accent-content\": \"#FFFFFF\",\n      \"neutral\": \"#2A2E37\",\n      \"neutral-focus\": \"#16181D\",\n      \"neutral-content\": \"#A6ADBB\",\n      \"base-100\": \"#1D232A\",\n      \"base-200\": \"#191E24\",\n      \"base-300\": \"#15191E\",\n      \"base-content\": \"#A6ADBB\",\n      \"info\": \"#3ABFF8\",\n      \"success\": \"#36D399\",\n      \"warning\": \"#FBBD23\",\n      \"error\": \"#F87272\"\n    },\n    \"spacing\": {\n      \"0\": \"0px\",\n      \"1\": \"0.25rem\",\n      \"2\": \"0.5rem\",\n      \"3\": \"0.75rem\",\n      \"4\": \"1rem\",\n      \"5\": \"1.25rem\",\n      \"6\": \"1.5rem\",\n      \"8\": \"2rem\",\n      \"10\": \"2.5rem\",\n      \"12\": \"3rem\",\n      \"16\": \"4rem\",\n      \"20\": \"5rem\",\n      \"24\": \"6rem\"\n    },\n    \"typography\": {\n      \"fontSize\": {\n        \"xs\": [\n          \"0.6875rem\",\n          {\n            \"lineHeight\": \"0.9375rem\"\n          }\n        ],\n        \"sm\": [\n          \"0.8125rem\",\n          {\n            \"lineHeight\": \"1.125rem\"\n          }\n        ],\n        \"base\": [\n          \"0.9375rem\",\n          {\n            \"lineHeight\": \"1.375rem\"\n          }\n        ],\n        \"lg\": [\n          \"1rem\",\n          {\n            \"lineHeight\": \"1.5rem\"\n          }\n        ],\n        \"xl\": [\n          \"1.0625rem\",\n          {\n            \"lineHeight\": \"1.5rem\"\n          }\n        ],\n        \"2xl\": [\n          \"1.1875rem\",\n          {\n            \"lineHeight\": \"1.625rem\"\n          }\n        ],\n        \"3xl\": [\n          \"1.375rem\",\n          {\n            \"lineHeight\": \"1.75rem\"\n          }\n        ],\n        \"4xl\": [\n          \"1.625rem\",\n          {\n            \"lineHeight\": \"1.875rem\"\n          }\n        ],\n        \"5xl\": [\n          \"2rem\",\n          {\n            \"lineHeight\": \"1\"\n          }\n        ]\n      },\n      \"fontWeight\": {\n        \"normal\": \"400\",\n        \"medium\": \"500\",\n        \"semibold\": \"600\",\n        \"bold\": \"700\"\n      }\n    },\n    \"animation\": {\n      \"duration\": {\n        \"fast\": \"150ms\",\n        \"base\": \"300ms\",\n        \"slow\": \"500ms\",\n        \"slower\": \"700ms\"\n      },\n      \"easing\": {\n        \"default\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n        \"linear\": \"linear\",\n        \"in\": \"cubic-bezier(0.4, 0, 1, 1)\",\n        \"out\": \"cubic-bezier(0, 0, 0.2, 1)\",\n        \"inOut\": \"cubic-bezier(0.4, 0, 0.2, 1)\"\n      }\n    },\n    \"shadows\": {\n      \"sm\": \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n      \"base\": \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n      \"md\": \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n      \"lg\": \"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",\n      \"xl\": \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\"\n    },\n    \"borderRadius\": {\n      \"none\": \"0\",\n      \"sm\": \"0.125rem\",\n      \"base\": \"0.25rem\",\n      \"md\": \"0.375rem\",\n      \"lg\": \"0.5rem\",\n      \"xl\": \"0.75rem\",\n      \"2xl\": \"1rem\",\n      \"full\": \"9999px\"\n    }\n  },\n  \"cupcake\": {\n    \"colors\": {\n      \"primary\": \"#0E7490\",\n      \"primary-focus\": \"#0F3F4F\",\n      \"primary-content\": \"#1F2937\",\n      \"secondary\": \"#D946EF\",\n      \"secondary-focus\": \"#C026D3\",\n      \"secondary-content\": \"#1F2937\",\n      \"accent\": \"#EEAF3A\",\n      \"accent-focus\": \"#E9A429\",\n      \"accent-content\": \"#1F2937\",\n      \"neutral\": \"#291334\",\n      \"neutral-focus\": \"#1F0E2B\",\n      \"neutral-content\": \"#D7DDE4\",\n      \"base-100\": \"#FAF7F5\",\n      \"base-200\": \"#EFEAE6\",\n      \"base-300\": \"#E7E2DF\",\n      \"base-content\": \"#291334\",\n      \"info\": \"#3ABFF8\",\n      \"success\": \"#36D399\",\n      \"warning\": \"#FBBD23\",\n      \"error\": \"#F87272\"\n    },\n    \"spacing\": {\n      \"0\": \"0px\",\n      \"1\": \"0.25rem\",\n      \"2\": \"0.5rem\",\n      \"3\": \"0.75rem\",\n      \"4\": \"1rem\",\n      \"5\": \"1.25rem\",\n      \"6\": \"1.5rem\",\n      \"8\": \"2rem\",\n      \"10\": \"2.5rem\",\n      \"12\": \"3rem\",\n      \"16\": \"4rem\",\n      \"20\": \"5rem\",\n      \"24\": \"6rem\"\n    },\n    \"typography\": {\n      \"fontSize\": {\n        \"xs\": [\n          \"0.6875rem\",\n          {\n            \"lineHeight\": \"0.9375rem\"\n          }\n        ],\n        \"sm\": [\n          \"0.8125rem\",\n          {\n            \"lineHeight\": \"1.125rem\"\n          }\n        ],\n        \"base\": [\n          \"0.9375rem\",\n          {\n            \"lineHeight\": \"1.375rem\"\n          }\n        ],\n        \"lg\": [\n          \"1rem\",\n          {\n            \"lineHeight\": \"1.5rem\"\n          }\n        ],\n        \"xl\": [\n          \"1.0625rem\",\n          {\n            \"lineHeight\": \"1.5rem\"\n          }\n        ],\n        \"2xl\": [\n          \"1.1875rem\",\n          {\n            \"lineHeight\": \"1.625rem\"\n          }\n        ],\n        \"3xl\": [\n          \"1.375rem\",\n          {\n            \"lineHeight\": \"1.75rem\"\n          }\n        ],\n        \"4xl\": [\n          \"1.625rem\",\n          {\n            \"lineHeight\": \"1.875rem\"\n          }\n        ],\n        \"5xl\": [\n          \"2rem\",\n          {\n            \"lineHeight\": \"1\"\n          }\n        ]\n      },\n      \"fontWeight\": {\n        \"normal\": \"400\",\n        \"medium\": \"500\",\n        \"semibold\": \"600\",\n        \"bold\": \"700\"\n      }\n    },\n    \"animation\": {\n      \"duration\": {\n        \"fast\": \"150ms\",\n        \"base\": \"300ms\",\n        \"slow\": \"500ms\",\n        \"slower\": \"700ms\"\n      },\n      \"easing\": {\n        \"default\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n        \"linear\": \"linear\",\n        \"in\": \"cubic-bezier(0.4, 0, 1, 1)\",\n        \"out\": \"cubic-bezier(0, 0, 0.2, 1)\",\n        \"inOut\": \"cubic-bezier(0.4, 0, 0.2, 1)\"\n      }\n    },\n    \"shadows\": {\n      \"sm\": \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n      \"base\": \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n      \"md\": \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n      \"lg\": \"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",\n      \"xl\": \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\"\n    },\n    \"borderRadius\": {\n      \"none\": \"0\",\n      \"sm\": \"0.125rem\",\n      \"base\": \"0.25rem\",\n      \"md\": \"0.375rem\",\n      \"lg\": \"0.5rem\",\n      \"xl\": \"0.75rem\",\n      \"2xl\": \"1rem\",\n      \"full\": \"9999px\"\n    }\n  },\n  \"business\": {\n    \"colors\": {\n      \"primary\": \"#1C4ED8\",\n      \"primary-focus\": \"#1E40AF\",\n      \"primary-content\": \"#FFFFFF\",\n      \"secondary\": \"#7C3AED\",\n      \"secondary-focus\": \"#6D28D9\",\n      \"secondary-content\": \"#FFFFFF\",\n      \"accent\": \"#F59E0B\",\n      \"accent-focus\": \"#D97706\",\n      \"accent-content\": \"#FFFFFF\",\n      \"neutral\": \"#2D3748\",\n      \"neutral-focus\": \"#1A202C\",\n      \"neutral-content\": \"#A0AEC0\",\n      \"base-100\": \"#FFFFFF\",\n      \"base-200\": \"#F7FAFC\",\n      \"base-300\": \"#EDF2F7\",\n      \"base-content\": \"#1A202C\",\n      \"info\": \"#3182CE\",\n      \"success\": \"#38A169\",\n      \"warning\": \"#D69E2E\",\n      \"error\": \"#E53E3E\"\n    },\n    \"spacing\": {\n      \"0\": \"0px\",\n      \"1\": \"0.25rem\",\n      \"2\": \"0.5rem\",\n      \"3\": \"0.75rem\",\n      \"4\": \"1rem\",\n      \"5\": \"1.25rem\",\n      \"6\": \"1.5rem\",\n      \"8\": \"2rem\",\n      \"10\": \"2.5rem\",\n      \"12\": \"3rem\",\n      \"16\": \"4rem\",\n      \"20\": \"5rem\",\n      \"24\": \"6rem\"\n    },\n    \"typography\": {\n      \"fontSize\": {\n        \"xs\": [\n          \"0.6875rem\",\n          {\n            \"lineHeight\": \"0.9375rem\"\n          }\n        ],\n        \"sm\": [\n          \"0.8125rem\",\n          {\n            \"lineHeight\": \"1.125rem\"\n          }\n        ],\n        \"base\": [\n          \"0.9375rem\",\n          {\n            \"lineHeight\": \"1.375rem\"\n          }\n        ],\n        \"lg\": [\n          \"1rem\",\n          {\n            \"lineHeight\": \"1.5rem\"\n          }\n        ],\n        \"xl\": [\n          \"1.0625rem\",\n          {\n            \"lineHeight\": \"1.5rem\"\n          }\n        ],\n        \"2xl\": [\n          \"1.1875rem\",\n          {\n            \"lineHeight\": \"1.625rem\"\n          }\n        ],\n        \"3xl\": [\n          \"1.375rem\",\n          {\n            \"lineHeight\": \"1.75rem\"\n          }\n        ],\n        \"4xl\": [\n          \"1.625rem\",\n          {\n            \"lineHeight\": \"1.875rem\"\n          }\n        ],\n        \"5xl\": [\n          \"2rem\",\n          {\n            \"lineHeight\": \"1\"\n          }\n        ]\n      },\n      \"fontWeight\": {\n        \"normal\": \"400\",\n        \"medium\": \"500\",\n        \"semibold\": \"600\",\n        \"bold\": \"700\"\n      }\n    },\n    \"animation\": {\n      \"duration\": {\n        \"fast\": \"150ms\",\n        \"base\": \"300ms\",\n        \"slow\": \"500ms\",\n        \"slower\": \"700ms\"\n      },\n      \"easing\": {\n        \"default\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n        \"linear\": \"linear\",\n        \"in\": \"cubic-bezier(0.4, 0, 1, 1)\",\n        \"out\": \"cubic-bezier(0, 0, 0.2, 1)\",\n        \"inOut\": \"cubic-bezier(0.4, 0, 0.2, 1)\"\n      }\n    },\n    \"shadows\": {\n      \"sm\": \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n      \"base\": \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n      \"md\": \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n      \"lg\": \"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",\n      \"xl\": \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\"\n    },\n    \"borderRadius\": {\n      \"none\": \"0\",\n      \"sm\": \"0.125rem\",\n      \"base\": \"0.25rem\",\n      \"md\": \"0.375rem\",\n      \"lg\": \"0.5rem\",\n      \"xl\": \"0.75rem\",\n      \"2xl\": \"1rem\",\n      \"full\": \"9999px\"\n    }\n  },\n  \"grove-dark\": {\n    \"colors\": {\n      \"primary\": \"#22c55e\",\n      \"primary-focus\": \"#16a34a\",\n      \"primary-content\": \"#ffffff\",\n      \"secondary\": \"#fbbf24\",\n      \"secondary-focus\": \"#f59e0b\",\n      \"secondary-content\": \"#000000\",\n      \"accent\": \"#22c55e\",\n      \"accent-focus\": \"#16a34a\",\n      \"accent-content\": \"#ffffff\",\n      \"neutral\": \"#27272a\",\n      \"neutral-focus\": \"#18181b\",\n      \"neutral-content\": \"#fafafa\",\n      \"base-100\": \"#09090b\",\n      \"base-200\": \"#18181b\",\n      \"base-300\": \"#27272a\",\n      \"base-content\": \"#fafafa\",\n      \"info\": \"#3b82f6\",\n      \"success\": \"#22c55e\",\n      \"warning\": \"#fbbf24\",\n      \"error\": \"#ef4444\"\n    },\n    \"spacing\": {\n      \"0\": \"0px\",\n      \"1\": \"0.25rem\",\n      \"2\": \"0.5rem\",\n      \"3\": \"0.75rem\",\n      \"4\": \"1rem\",\n      \"5\": \"1.25rem\",\n      \"6\": \"1.5rem\",\n      \"8\": \"2rem\",\n      \"10\": \"2.5rem\",\n      \"12\": \"3rem\",\n      \"16\": \"4rem\",\n      \"20\": \"5rem\",\n      \"24\": \"6rem\"\n    },\n    \"typography\": {\n      \"fontSize\": {\n        \"xs\": [\n          \"0.6875rem\",\n          {\n            \"lineHeight\": \"0.9375rem\"\n          }\n        ],\n        \"sm\": [\n          \"0.8125rem\",\n          {\n            \"lineHeight\": \"1.125rem\"\n          }\n        ],\n        \"base\": [\n          \"0.9375rem\",\n          {\n            \"lineHeight\": \"1.375rem\"\n          }\n        ],\n        \"lg\": [\n          \"1rem\",\n          {\n            \"lineHeight\": \"1.5rem\"\n          }\n        ],\n        \"xl\": [\n          \"1.0625rem\",\n          {\n            \"lineHeight\": \"1.5rem\"\n          }\n        ],\n        \"2xl\": [\n          \"1.1875rem\",\n          {\n            \"lineHeight\": \"1.625rem\"\n          }\n        ],\n        \"3xl\": [\n          \"1.375rem\",\n          {\n            \"lineHeight\": \"1.75rem\"\n          }\n        ],\n        \"4xl\": [\n          \"1.625rem\",\n          {\n            \"lineHeight\": \"1.875rem\"\n          }\n        ],\n        \"5xl\": [\n          \"2rem\",\n          {\n            \"lineHeight\": \"1\"\n          }\n        ]\n      },\n      \"fontWeight\": {\n        \"normal\": \"400\",\n        \"medium\": \"500\",\n        \"semibold\": \"600\",\n        \"bold\": \"700\"\n      }\n    },\n    \"animation\": {\n      \"duration\": {\n        \"fast\": \"150ms\",\n        \"base\": \"300ms\",\n        \"slow\": \"500ms\",\n        \"slower\": \"700ms\"\n      },\n      \"easing\": {\n        \"default\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n        \"linear\": \"linear\",\n        \"in\": \"cubic-bezier(0.4, 0, 1, 1)\",\n        \"out\": \"cubic-bezier(0, 0, 0.2, 1)\",\n        \"inOut\": \"cubic-bezier(0.4, 0, 0.2, 1)\"\n      }\n    },\n    \"shadows\": {\n      \"sm\": \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n      \"base\": \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n      \"md\": \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n      \"lg\": \"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",\n      \"xl\": \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\"\n    },\n    \"borderRadius\": {\n      \"none\": \"0\",\n      \"sm\": \"0.125rem\",\n      \"base\": \"0.25rem\",\n      \"md\": \"0.375rem\",\n      \"lg\": \"0.5rem\",\n      \"xl\": \"0.75rem\",\n      \"2xl\": \"1rem\",\n      \"full\": \"9999px\"\n    }\n  },\n  \"grove-light\": {\n    \"colors\": {\n      \"primary\": \"#22c55e\",\n      \"primary-focus\": \"#16a34a\",\n      \"primary-content\": \"#ffffff\",\n      \"secondary\": \"#fbbf24\",\n      \"secondary-focus\": \"#f59e0b\",\n      \"secondary-content\": \"#000000\",\n      \"accent\": \"#22c55e\",\n      \"accent-focus\": \"#16a34a\",\n      \"accent-content\": \"#ffffff\",\n      \"neutral\": \"#f5f5f4\",\n      \"neutral-focus\": \"#e7e5e4\",\n      \"neutral-content\": \"#1c1917\",\n      \"base-100\": \"#fefefe\",\n      \"base-200\": \"#f8f8f7\",\n      \"base-300\": \"#f5f5f4\",\n      \"base-content\": \"#1a1a1a\",\n      \"info\": \"#3b82f6\",\n      \"success\": \"#22c55e\",\n      \"warning\": \"#f59e0b\",\n      \"error\": \"#dc2626\"\n    },\n    \"spacing\": {\n      \"0\": \"0px\",\n      \"1\": \"0.25rem\",\n      \"2\": \"0.5rem\",\n      \"3\": \"0.75rem\",\n      \"4\": \"1rem\",\n      \"5\": \"1.25rem\",\n      \"6\": \"1.5rem\",\n      \"8\": \"2rem\",\n      \"10\": \"2.5rem\",\n      \"12\": \"3rem\",\n      \"16\": \"4rem\",\n      \"20\": \"5rem\",\n      \"24\": \"6rem\"\n    },\n    \"typography\": {\n      \"fontSize\": {\n        \"xs\": [\n          \"0.6875rem\",\n          {\n            \"lineHeight\": \"0.9375rem\"\n          }\n        ],\n        \"sm\": [\n          \"0.8125rem\",\n          {\n            \"lineHeight\": \"1.125rem\"\n          }\n        ],\n        \"base\": [\n          \"0.9375rem\",\n          {\n            \"lineHeight\": \"1.375rem\"\n          }\n        ],\n        \"lg\": [\n          \"1rem\",\n          {\n            \"lineHeight\": \"1.5rem\"\n          }\n        ],\n        \"xl\": [\n          \"1.0625rem\",\n          {\n            \"lineHeight\": \"1.5rem\"\n          }\n        ],\n        \"2xl\": [\n          \"1.1875rem\",\n          {\n            \"lineHeight\": \"1.625rem\"\n          }\n        ],\n        \"3xl\": [\n          \"1.375rem\",\n          {\n            \"lineHeight\": \"1.75rem\"\n          }\n        ],\n        \"4xl\": [\n          \"1.625rem\",\n          {\n            \"lineHeight\": \"1.875rem\"\n          }\n        ],\n        \"5xl\": [\n          \"2rem\",\n          {\n            \"lineHeight\": \"1\"\n          }\n        ]\n      },\n      \"fontWeight\": {\n        \"normal\": \"400\",\n        \"medium\": \"500\",\n        \"semibold\": \"600\",\n        \"bold\": \"700\"\n      }\n    },\n    \"animation\": {\n      \"duration\": {\n        \"fast\": \"150ms\",\n        \"base\": \"300ms\",\n        \"slow\": \"500ms\",\n        \"slower\": \"700ms\"\n      },\n      \"easing\": {\n        \"default\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n        \"linear\": \"linear\",\n        \"in\": \"cubic-bezier(0.4, 0, 1, 1)\",\n        \"out\": \"cubic-bezier(0, 0, 0.2, 1)\",\n        \"inOut\": \"cubic-bezier(0.4, 0, 0.2, 1)\"\n      }\n    },\n    \"shadows\": {\n      \"sm\": \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n      \"base\": \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n      \"md\": \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n      \"lg\": \"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",\n      \"xl\": \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\"\n    },\n    \"borderRadius\": {\n      \"none\": \"0\",\n      \"sm\": \"0.125rem\",\n      \"base\": \"0.25rem\",\n      \"md\": \"0.375rem\",\n      \"lg\": \"0.5rem\",\n      \"xl\": \"0.75rem\",\n      \"2xl\": \"1rem\",\n      \"full\": \"9999px\"\n    }\n  }\n}","// Auto-generated - do not edit\nimport tokens from './tokens.json';\nimport type { ThemeTokens, Theme } from './types';\n\n/**\n * Complete token object for all themes\n */\nexport const designTokens: ThemeTokens = tokens as unknown as ThemeTokens;\n\n/**\n * Available theme names\n */\nexport const themes: Theme[] = ['light', 'dark', 'cupcake', 'business', 'grove-light', 'grove-dark'];\n\n/**\n * Default theme\n */\nexport const defaultTheme: Theme = 'light';\n\n/**\n * Light theme tokens\n */\nexport const lightTokens = designTokens.light;\n\n/**\n * Dark theme tokens\n */\nexport const darkTokens = designTokens.dark;\n\n/**\n * Cupcake theme tokens\n */\nexport const cupcakeTokens = designTokens.cupcake;\n\n/**\n * Business theme tokens\n */\nexport const businessTokens = designTokens.business;\n\n/**\n * Get tokens for a specific theme\n * @param theme - Theme name\n * @returns Token object for the specified theme\n */\nexport const getThemeTokens = (theme: Theme) => {\n  return designTokens[theme];\n};\n\n/**\n * Check if a theme exists\n * @param theme - Theme name to check\n * @returns Whether the theme is valid\n */\nexport const isValidTheme = (theme: string): theme is Theme => {\n  return themes.includes(theme as Theme);\n};\n","import { useState, useEffect } from 'react';\n\n/**\n * Hook to detect media query matches\n * @param query - Media query string (e.g., '(min-width: 1280px)')\n * @returns boolean indicating if the media query matches\n */\nexport function useMediaQuery(query: string): boolean {\n  // SSR-safe initialization\n  const [matches, setMatches] = useState<boolean>(() => {\n    if (typeof window === 'undefined') {\n      return false; // Default to false on server\n    }\n    return window.matchMedia(query).matches;\n  });\n\n  useEffect(() => {\n    // Skip if SSR\n    if (typeof window === 'undefined') {\n      return;\n    }\n\n    const media = window.matchMedia(query);\n\n    // Update to current value (in case it changed during SSR)\n    setMatches(media.matches);\n\n    // Define event handler\n    const handler = (event: MediaQueryListEvent) => {\n      setMatches(event.matches);\n    };\n\n    // Add event listener\n    media.addEventListener('change', handler);\n\n    // Cleanup\n    return () => {\n      media.removeEventListener('change', handler);\n    };\n  }, [query]);\n\n  return matches;\n}\n\n// Tailwind breakpoint helpers\nexport const useBreakpoint = () => {\n  const isSm = useMediaQuery('(min-width: 640px)');\n  const isMd = useMediaQuery('(min-width: 768px)');\n  const isLg = useMediaQuery('(min-width: 1024px)');\n  const isXl = useMediaQuery('(min-width: 1280px)');\n  const is2xl = useMediaQuery('(min-width: 1536px)');\n\n  return {\n    isSm,\n    isMd,\n    isLg,\n    isXl,\n    is2xl,\n    // Inverse helpers\n    isMobile: !isSm,\n    isTablet: isSm && !isLg,\n    isDesktop: isLg,\n  };\n};\n","import React, { ReactNode } from 'react';\n\nexport interface ThreeColumnLayoutProps {\n  leftSidebar: ReactNode;\n  rightSidebar?: ReactNode;\n  mainContent: ReactNode;\n  mobileHeader?: ReactNode;\n  showMobileMenu?: boolean;\n  showMobileProfile?: boolean;\n}\n\nexport const ThreeColumnLayout: React.FC<ThreeColumnLayoutProps> = ({\n  leftSidebar,\n  rightSidebar,\n  mainContent,\n  mobileHeader,\n}) => {\n  return (\n    <div className=\"min-h-screen bg-base-100\">\n      {/* Mobile Header */}\n      {mobileHeader && (\n        <header className=\"lg:hidden fixed top-0 left-0 right-0 z-50 bg-base-100 border-b border-base-200\">\n          {mobileHeader}\n        </header>\n      )}\n\n      {/* Main Layout */}\n      <div className=\"flex h-screen\">\n        {/* Left Sidebar - Hidden on mobile, visible on desktop */}\n        <aside className=\"hidden lg:flex w-64 bg-base-200 border-r border-base-300 flex-shrink-0\">\n          <div className=\"flex flex-col w-full h-full overflow-hidden\">{leftSidebar}</div>\n        </aside>\n\n        {/* Main Content */}\n        <main className=\"flex-1 flex flex-col bg-base-100 min-w-0\">\n          <div className=\"flex-1 overflow-auto pt-16 lg:pt-0\">{mainContent}</div>\n        </main>\n\n        {/* Right Sidebar - Hidden on smaller screens, visible on xl */}\n        {rightSidebar && (\n          <aside className=\"hidden xl:flex w-96 bg-base-200 border-l border-base-300 flex-shrink-0\">\n            <div className=\"flex flex-col w-full h-full overflow-hidden\">{rightSidebar}</div>\n          </aside>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ReactNode } from 'react';\nimport { cn } from '../utils';\n\nexport interface AuthFooterLink {\n  label: string;\n  href?: string;\n  onClick?: () => void;\n}\n\nexport interface AuthLayoutProps {\n  children: ReactNode;\n\n  // Layout variants\n  variant?: 'centered' | 'fullscreen' | 'split';\n\n  // Branding\n  logo?: ReactNode;\n  appName?: string;\n  tagline?: string;\n\n  // Background\n  background?: 'gradient' | 'image' | 'solid';\n  backgroundSrc?: string;\n  backgroundOverlay?: boolean;\n\n  // Footer\n  showFooter?: boolean;\n  footerLinks?: AuthFooterLink[];\n\n  // Styling\n  className?: string;\n  contentClassName?: string;\n}\n\nexport const AuthLayout: React.FC<AuthLayoutProps> = ({\n  children,\n  variant = 'centered',\n  logo,\n  appName,\n  tagline,\n  background = 'gradient',\n  backgroundSrc,\n  backgroundOverlay = false,\n  showFooter = false,\n  footerLinks = [],\n  className = '',\n  contentClassName = '',\n}) => {\n  // Background classes\n  const backgroundClasses = {\n    gradient: 'bg-gradient-to-br from-primary/10 via-base-100 to-secondary/10',\n    solid: 'bg-base-100',\n    image: backgroundSrc ? '' : 'bg-base-100',\n  };\n\n  // Variant-specific classes\n  const variantClasses = {\n    centered: 'flex items-center justify-center min-h-screen p-4',\n    fullscreen: 'flex flex-col min-h-screen',\n    split: 'flex min-h-screen', // For future implementation\n  };\n\n  const renderBranding = () => {\n    if (!logo && !appName && !tagline) return null;\n\n    return (\n      <div className=\"text-center mb-6\">\n        {logo && <div className=\"flex justify-center mb-4\">{logo}</div>}\n        {appName && <h1 className=\"text-2xl font-bold text-base-content mb-2\">{appName}</h1>}\n        {tagline && <p className=\"text-base-content/70\">{tagline}</p>}\n      </div>\n    );\n  };\n\n  const renderFooter = () => {\n    if (!showFooter || footerLinks.length === 0) return null;\n\n    return (\n      <footer className=\"text-center py-6\">\n        <div className=\"flex flex-wrap justify-center gap-4 text-sm text-base-content/60\">\n          {footerLinks.map((link, index) => (\n            <React.Fragment key={index}>\n              {link.href ? (\n                <a\n                  href={link.href}\n                  className=\"hover:text-base-content transition-colors\"\n                  onClick={link.onClick}\n                >\n                  {link.label}\n                </a>\n              ) : (\n                <button\n                  type=\"button\"\n                  className=\"hover:text-base-content transition-colors\"\n                  onClick={link.onClick}\n                >\n                  {link.label}\n                </button>\n              )}\n              {index < footerLinks.length - 1 && <span className=\"text-base-content/30\">•</span>}\n            </React.Fragment>\n          ))}\n        </div>\n      </footer>\n    );\n  };\n\n  const renderContent = () => {\n    if (variant === 'fullscreen') {\n      return (\n        <>\n          {/* Top spacer for fullscreen */}\n          <div className=\"flex-1 min-h-[20vh]\" />\n\n          {/* Branding section */}\n          {(logo || appName || tagline) && <div className=\"px-6\">{renderBranding()}</div>}\n\n          {/* Main content */}\n          <div className={cn('px-6 pb-safe', contentClassName)}>{children}</div>\n\n          {/* Footer */}\n          {renderFooter()}\n\n          {/* Bottom spacer */}\n          <div className=\"pb-safe\" />\n        </>\n      );\n    }\n\n    // Centered variant\n    return (\n      <div className={cn('w-full max-w-md mx-auto', contentClassName)}>\n        {renderBranding()}\n        {children}\n        {renderFooter()}\n      </div>\n    );\n  };\n\n  return (\n    <div\n      className={cn(\n        variantClasses[variant],\n        backgroundClasses[background],\n        'relative overflow-hidden',\n        className\n      )}\n      style={\n        background === 'image' && backgroundSrc\n          ? {\n              backgroundImage: `url(${backgroundSrc})`,\n              backgroundSize: 'cover',\n              backgroundPosition: 'center',\n              backgroundRepeat: 'no-repeat',\n            }\n          : undefined\n      }\n    >\n      {/* Background overlay for image/video backgrounds */}\n      {backgroundOverlay && background === 'image' && backgroundSrc && (\n        <div className=\"absolute inset-0 bg-black/40 backdrop-blur-sm\" />\n      )}\n\n      {/* Content */}\n      {variant === 'centered' ? (\n        <div className=\"relative z-10 flex items-center justify-center w-full\">\n          {renderContent()}\n        </div>\n      ) : (\n        <div className=\"relative z-10 w-full\">{renderContent()}</div>\n      )}\n    </div>\n  );\n};\n","import React from 'react';\n\ninterface IconProps {\n  className?: string;\n  size?: number;\n}\n\nexport const HomeIcon: React.FC<IconProps> = ({ className = '', size = 20 }) => (\n  <svg\n    width={size}\n    height={size}\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    className={className}\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <path\n      d=\"M3 12L5 10M5 10L12 3L19 10M5 10V20C5 20.5523 5.44772 21 6 21H9M19 10L21 12M19 10V20C19 20.5523 18.5523 21 18 21H15M9 21C9.55228 21 10 20.5523 10 20V16C10 15.4477 10.4477 15 11 15H13C13.5523 15 14 15.4477 14 16V20C14 20.5523 14.4477 21 15 21M9 21H15\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    />\n  </svg>\n);\n\nexport const MessagesIcon: React.FC<IconProps> = ({ className = '', size = 20 }) => (\n  <svg\n    width={size}\n    height={size}\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    className={className}\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <path\n      d=\"M8 12H8.01M12 12H12.01M16 12H16.01M21 12C21 16.4183 16.9706 20 12 20C10.4607 20 9.01172 19.6565 7.74467 19.0511L3 21L4.39499 16.28C3.51156 14.8882 3 13.2443 3 11.5C3 7.08172 7.02944 3.5 12 3.5C16.9706 3.5 21 7.58172 21 12Z\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    />\n  </svg>\n);\n\nexport const DiscoverIcon: React.FC<IconProps> = ({ className = '', size = 20 }) => (\n  <svg\n    width={size}\n    height={size}\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    className={className}\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <path\n      d=\"M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    />\n  </svg>\n);\n\nexport const ProfileIcon: React.FC<IconProps> = ({ className = '', size = 20 }) => (\n  <svg\n    width={size}\n    height={size}\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    className={className}\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <path\n      d=\"M20 21V19C20 17.9391 19.5786 16.9217 18.8284 16.1716C18.0783 15.4214 17.0609 15 16 15H8C6.93913 15 5.92172 15.4214 5.17157 16.1716C4.42143 16.9217 4 17.9391 4 19V21M16 7C16 9.20914 14.2091 11 12 11C9.79086 11 8 9.20914 8 7C8 4.79086 9.79086 3 12 3C14.2091 3 16 4.79086 16 7Z\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    />\n  </svg>\n);\n\nexport const SettingsIcon: React.FC<IconProps> = ({ className = '', size = 20 }) => (\n  <svg\n    width={size}\n    height={size}\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    className={className}\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <path\n      d=\"M10.325 4.317C10.751 2.561 13.249 2.561 13.675 4.317C13.7389 4.5808 13.8642 4.82578 14.0407 5.032C14.2172 5.23822 14.4399 5.39985 14.6907 5.50375C14.9414 5.60764 15.2132 5.65085 15.4838 5.62987C15.7544 5.60889 16.0162 5.5243 16.248 5.383C17.791 4.443 19.558 6.209 18.618 7.753C18.4769 7.98466 18.3924 8.24634 18.3715 8.51677C18.3506 8.78721 18.3938 9.05877 18.4975 9.30938C18.6013 9.55999 18.7627 9.78258 18.9687 9.95905C19.1747 10.1355 19.4194 10.2609 19.683 10.325C21.439 10.751 21.439 13.249 19.683 13.675C19.4192 13.7389 19.1742 13.8642 18.968 14.0407C18.7618 14.2172 18.6001 14.4399 18.4963 14.6907C18.3924 14.9414 18.3491 15.2132 18.3701 15.4838C18.3911 15.7544 18.4757 16.0162 18.617 16.248C19.557 17.791 17.791 19.558 16.247 18.618C16.0153 18.4769 15.7537 18.3924 15.4832 18.3715C15.2128 18.3506 14.9412 18.3938 14.6906 18.4975C14.44 18.6013 14.2174 18.7627 14.0409 18.9687C13.8645 19.1747 13.7391 19.4194 13.675 19.683C13.249 21.439 10.751 21.439 10.325 19.683C10.2611 19.4192 10.1358 19.1742 9.95929 18.968C9.7828 18.7618 9.56011 18.6001 9.30935 18.4963C9.05859 18.3924 8.78683 18.3491 8.51621 18.3701C8.24559 18.3911 7.98375 18.4757 7.752 18.617C6.209 19.557 4.442 17.791 5.382 16.247C5.5231 16.0153 5.60755 15.7537 5.62848 15.4832C5.64942 15.2128 5.60624 14.9412 5.50247 14.6906C5.3987 14.44 5.23726 14.2174 5.03127 14.0409C4.82529 13.8645 4.58056 13.7391 4.317 13.675C2.561 13.249 2.561 10.751 4.317 10.325C4.5808 10.2611 4.82578 10.1358 5.032 9.95929C5.23822 9.7828 5.39985 9.56011 5.50375 9.30935C5.60764 9.05859 5.65085 8.78683 5.62987 8.51621C5.60889 8.24559 5.5243 7.98375 5.383 7.752C4.443 6.209 6.209 4.442 7.753 5.382C8.753 5.99 10.049 5.452 10.325 4.317Z\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    />\n    <path\n      d=\"M15 12C15 13.6569 13.6569 15 12 15C10.3431 15 9 13.6569 9 12C9 10.3431 10.3431 9 12 9C13.6569 9 15 10.3431 15 12Z\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    />\n  </svg>\n);\n\nexport const ChevronLeftIcon: React.FC<IconProps> = ({ className = '', size = 20 }) => (\n  <svg\n    width={size}\n    height={size}\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    className={className}\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <path\n      d=\"M15 18L9 12L15 6\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    />\n  </svg>\n);\n\nexport const MenuIcon: React.FC<IconProps> = ({ className = '', size = 20 }) => (\n  <svg\n    width={size}\n    height={size}\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    className={className}\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <path\n      d=\"M4 6H20M4 12H20M4 18H20\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    />\n  </svg>\n);\n\nexport const CloseIcon: React.FC<IconProps> = ({ className = '', size = 20 }) => (\n  <svg\n    width={size}\n    height={size}\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    className={className}\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <path\n      d=\"M18 6L6 18M6 6L18 18\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    />\n  </svg>\n);\n","import React, { ReactNode } from 'react';\nimport { MenuIcon, ProfileIcon } from './Icons';\n\nexport interface MobileHeaderProps {\n  onMenuClick?: () => void;\n  onProfileClick?: () => void;\n  title?: ReactNode;\n  leftAction?: ReactNode;\n  rightAction?: ReactNode;\n  showMenuButton?: boolean;\n  showProfileButton?: boolean;\n}\n\nexport const MobileHeader: React.FC<MobileHeaderProps> = ({\n  onMenuClick,\n  onProfileClick,\n  title,\n  leftAction,\n  rightAction,\n  showMenuButton = true,\n  showProfileButton = true,\n}) => {\n  return (\n    <nav className=\"navbar min-h-16 px-4\">\n      <div className=\"navbar-start\">\n        {leftAction ? (\n          leftAction\n        ) : showMenuButton ? (\n          <button onClick={onMenuClick} className=\"btn btn-ghost btn-circle\" aria-label=\"Open menu\">\n            <MenuIcon className=\"h-5 w-5\" />\n          </button>\n        ) : null}\n      </div>\n\n      <div className=\"navbar-center\">\n        {title && <div className=\"text-base font-medium\">{title}</div>}\n      </div>\n\n      <div className=\"navbar-end\">\n        {rightAction ? (\n          rightAction\n        ) : showProfileButton ? (\n          <button\n            onClick={onProfileClick}\n            className=\"btn btn-ghost btn-circle\"\n            aria-label=\"Open profile\"\n          >\n            <ProfileIcon className=\"h-5 w-5\" />\n          </button>\n        ) : null}\n      </div>\n    </nav>\n  );\n};\n","import React, { ReactNode, useEffect } from 'react';\nimport { CloseIcon } from './Icons';\n\nexport interface SlideOutDrawerProps {\n  isOpen: boolean;\n  onClose: () => void;\n  children: ReactNode;\n  position?: 'left' | 'right';\n  width?: string;\n  closeOnOverlayClick?: boolean;\n}\n\nexport const SlideOutDrawer: React.FC<SlideOutDrawerProps> = ({\n  isOpen,\n  onClose,\n  children,\n  position = 'left',\n  width = '70%',\n  closeOnOverlayClick = true,\n}) => {\n  // Lock body scroll when drawer is open\n  useEffect(() => {\n    if (isOpen) {\n      document.body.style.overflow = 'hidden';\n    } else {\n      document.body.style.overflow = '';\n    }\n\n    return () => {\n      document.body.style.overflow = '';\n    };\n  }, [isOpen]);\n\n  if (!isOpen) return null;\n\n  return (\n    <div className=\"fixed inset-0 z-50 flex\">\n      {/* Overlay */}\n      <div\n        className=\"fixed inset-0 bg-black bg-opacity-50 transition-opacity\"\n        onClick={closeOnOverlayClick ? onClose : undefined}\n        aria-hidden=\"true\"\n      />\n\n      {/* Drawer */}\n      <div\n        className={`\n          relative flex flex-col bg-base-200 shadow-xl\n          transition-transform duration-300 ease-in-out\n          ${position === 'left' ? 'mr-auto' : 'ml-auto'}\n          ${isOpen ? 'translate-x-0' : position === 'left' ? '-translate-x-full' : 'translate-x-full'}\n        `}\n        style={{ width, maxWidth: '100vw' }}\n      >\n        {/* Close button */}\n        <button\n          onClick={onClose}\n          className=\"absolute top-4 right-4 btn btn-ghost btn-circle btn-sm\"\n          aria-label=\"Close drawer\"\n        >\n          <CloseIcon className=\"h-5 w-5\" />\n        </button>\n\n        {/* Content */}\n        <div className=\"flex-1 overflow-y-auto\">{children}</div>\n      </div>\n    </div>\n  );\n};\n","import React, { ReactNode } from 'react';\n\nexport interface LayoutSidebarProps {\n  header?: ReactNode;\n  content: ReactNode;\n  footer?: ReactNode;\n  className?: string;\n}\n\nexport const LayoutSidebar: React.FC<LayoutSidebarProps> = ({\n  header,\n  content,\n  footer,\n  className = '',\n}) => {\n  return (\n    <div className={`h-full flex flex-col ${className}`}>\n      {/* Fixed Header Section */}\n      {header && <div className=\"flex-shrink-0 border-b border-base-300\">{header}</div>}\n\n      {/* Scrollable Content Section */}\n      <div className=\"flex-1 overflow-y-auto\">{content}</div>\n\n      {/* Fixed Footer Section */}\n      {footer && <div className=\"flex-shrink-0 border-t border-base-300\">{footer}</div>}\n    </div>\n  );\n};\n","import React, { ReactNode } from 'react';\nimport { Link } from '../components/Typography';\n\nexport interface NavigationItemProps {\n  href?: string;\n  icon?: ReactNode;\n  children: ReactNode;\n  active?: boolean;\n  onClick?: () => void;\n  className?: string;\n}\n\nexport const NavigationItem: React.FC<NavigationItemProps> = ({\n  href,\n  icon,\n  children,\n  active = false,\n  onClick,\n  className = '',\n}) => {\n  const baseClasses =\n    'flex items-center gap-3 px-3 py-2 text-sm hover:bg-base-200 rounded transition-colors w-full';\n  const activeClasses = active ? 'bg-base-200' : '';\n  const combinedClasses = `${baseClasses} ${activeClasses} ${className}`;\n\n  const content = (\n    <>\n      {icon && <span className=\"flex-shrink-0 text-base-content/70\">{icon}</span>}\n      <span className={`truncate ${active ? 'font-medium text-primary' : 'text-base-content'}`}>\n        {children}\n      </span>\n    </>\n  );\n\n  if (href) {\n    return (\n      <Link\n        href={href}\n        variant=\"nav\"\n        underline=\"none\"\n        className={combinedClasses}\n        {...(onClick && { onClick })}\n      >\n        {content}\n      </Link>\n    );\n  }\n\n  return (\n    <button type=\"button\" className={`${combinedClasses} w-full text-left`} onClick={onClick}>\n      {content}\n    </button>\n  );\n};\n","import React, { ReactNode } from 'react';\nimport { Text } from '../components/Typography';\n\nexport interface SidebarSectionProps {\n  title?: string;\n  children: ReactNode;\n  className?: string;\n}\n\nexport const SidebarSection: React.FC<SidebarSectionProps> = ({\n  title,\n  children,\n  className = '',\n}) => {\n  return (\n    <div className={`p-4 ${className}`}>\n      {title && (\n        <Text size=\"xs\" weight=\"medium\" color=\"muted\" className=\"mb-3 uppercase\">\n          {title}\n        </Text>\n      )}\n      <div className=\"space-y-1\">{children}</div>\n    </div>\n  );\n};\n","import React from 'react';\nimport { useTheme } from '../theme';\nimport { SettingsIcon } from './Icons';\n\nexport interface ThemeSwitcherProps {\n  showLabel?: boolean;\n  showIcon?: boolean;\n  className?: string;\n  selectClassName?: string;\n}\n\nconst themeDisplayNames: Record<string, string> = {\n  light: 'Light',\n  dark: 'Dark',\n  'grove-light': 'Grove Light',\n  'grove-dark': 'Grove Dark',\n  dawn: 'Dawn',\n  dusk: 'Dusk',\n  cupcake: 'Cupcake',\n  business: 'Business',\n};\n\nexport const ThemeSwitcher: React.FC<ThemeSwitcherProps> = ({\n  showLabel = true,\n  showIcon = true,\n  className = '',\n  selectClassName = 'select-sm',\n}) => {\n  const { theme, setTheme, themes } = useTheme();\n\n  return (\n    <div className={className}>\n      {showLabel && (\n        <label className=\"text-sm font-medium mb-2 flex items-center gap-2\">\n          {showIcon && <SettingsIcon className=\"w-4 h-4\" />}\n          Theme\n        </label>\n      )}\n      <select\n        className={`select w-full ${selectClassName}`}\n        value={theme}\n        onChange={(e) => setTheme(e.target.value as any)}\n        aria-label=\"Theme selector\"\n      >\n        {themes.map((t) => (\n          <option key={t} value={t}>\n            {themeDisplayNames[t] || t}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n};\n","import React from 'react';\n\nexport interface FooterLink {\n  label: string;\n  href: string;\n}\n\nexport interface FooterLinksProps {\n  links: FooterLink[];\n  copyright?: string;\n  className?: string;\n}\n\nexport const FooterLinks: React.FC<FooterLinksProps> = ({\n  links,\n  copyright = `© ${new Date().getFullYear()}. All rights reserved.`,\n  className = '',\n}) => {\n  return (\n    <footer className={`px-6 py-4 border-t border-base-300 ${className}`}>\n      <nav className=\"flex flex-wrap items-center justify-center gap-1 text-xs\">\n        {links.map((link, index) => (\n          <React.Fragment key={link.label}>\n            <a\n              href={link.href}\n              className=\"link link-hover opacity-60 hover:opacity-100 transition-opacity px-1\"\n            >\n              {link.label}\n            </a>\n            {index < links.length - 1 && <span className=\"opacity-40\">·</span>}\n          </React.Fragment>\n        ))}\n      </nav>\n      {copyright && <p className=\"text-xs opacity-40 mt-3 text-center\">{copyright}</p>}\n    </footer>\n  );\n};\n","import React, { ReactNode } from 'react';\nimport { cn } from '../utils/cn';\n\nexport interface CenterPageProps {\n  children: ReactNode;\n  className?: string;\n}\n\nexport interface CenterPageHeaderProps {\n  children: ReactNode;\n  className?: string;\n}\n\nexport interface CenterPageSectionProps {\n  children: ReactNode;\n  className?: string;\n  spacing?: 'sm' | 'md' | 'lg';\n}\n\n/**\n * CenterPage component for consistent page layout\n * Provides responsive padding and spacing for content pages\n */\nexport const CenterPage: React.FC<CenterPageProps> & {\n  Header: React.FC<CenterPageHeaderProps>;\n  Section: React.FC<CenterPageSectionProps>;\n} = ({ children, className }) => {\n  return (\n    <div\n      className={cn(\n        'min-h-full',\n        'px-4 sm:px-6 lg:px-8',\n        'py-8 sm:py-12 lg:py-16',\n        'max-w-7xl mx-auto',\n        className\n      )}\n    >\n      {children}\n    </div>\n  );\n};\n\n/**\n * Page header section with title and optional subtitle\n */\nconst CenterPageHeader: React.FC<CenterPageHeaderProps> = ({ children, className }) => {\n  return <header className={cn('mb-8 sm:mb-12', className)}>{children}</header>;\n};\n\n/**\n * Content section with consistent spacing\n */\nconst CenterPageSection: React.FC<CenterPageSectionProps> = ({\n  children,\n  className,\n  spacing = 'md',\n}) => {\n  const spacingClasses = {\n    sm: 'mt-4 sm:mt-6',\n    md: 'mt-6 sm:mt-8',\n    lg: 'mt-8 sm:mt-12',\n  };\n\n  return <section className={cn(spacingClasses[spacing], className)}>{children}</section>;\n};\n\n// Attach sub-components\nCenterPage.Header = CenterPageHeader;\nCenterPage.Section = CenterPageSection;\n\n// Display names for debugging\nCenterPage.displayName = 'CenterPage';\nCenterPageHeader.displayName = 'CenterPage.Header';\nCenterPageSection.displayName = 'CenterPage.Section';\n"],"mappings":"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","names":["Component","React","jsx","sizeClasses","weightClasses","colorClasses","alignClasses","Component","React","jsx","sizeClasses","React","jsx","weightClasses","React","jsx","jsxs","React","jsx","jsxs","Component","jsx","sizeClasses","React","jsx","jsxs","React","React","jsx","jsxs","React","Component","jsx","jsxs","React","jsx","jsxs","variantClasses","jsx","useState","useMemo","jsx","defaultTheme","themes","React","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","variantClasses","useState","useCallback","useEffect","jsx","jsxs","React","jsx","jsxs","React","React","jsx","jsxs","React","React","useEffect","useRef","useState","jsx","jsxs","React","useState","useRef","useEffect","React","jsx","jsxs","React","React","jsx","jsxs","React","React","jsx","jsxs","React","React","jsx","Component","React","jsx","React","jsx","jsx","jsxs","jsxs","jsx","jsx","sizeClasses","jsx","spacingClasses","alignClasses","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","defaultIcons","createContext","useContext","useState","useCallback","jsx","jsxs","createContext","useState","useCallback","useContext","useEffect","useRef","createPortal","jsx","jsxs","useRef","useEffect","sizeClasses","createPortal","jsx","jsxs","sizeClasses","jsx","jsx","jsxs","React","useState","useRef","useEffect","jsx","jsxs","useState","useRef","useEffect","React","jsx","React","useState","clsx","jsx","jsxs","clsx","jsx","jsxs","variantClasses","React","clsx","jsx","jsxs","sizeClasses","name","clsx","jsx","jsxs","variantClasses","clsx","jsx","jsxs","clsx","jsx","jsxs","clsx","jsx","jsxs","useState","clsx","jsx","jsxs","useState","clsx","jsx","jsxs","useEffect","useRef","jsx","useRef","useEffect","useEffect","useRef","useState","useCallback","useRef","useState","useCallback","useEffect","jsx","jsxs","jsx","sizeClasses","useMemo","jsx","jsxs","themes","useMemo","useMemo","themes","useState","useEffect","jsx","jsxs","React","Fragment","jsx","jsxs","variantClasses","React","jsx","jsxs","jsx","jsxs","useEffect","jsx","jsxs","useEffect","jsx","jsxs","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","themes","React","jsx","jsxs","jsx","spacingClasses"]}