@liiift-studio/mac-os9-ui 0.2.21 → 0.2.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/components/Button/Button.tsx","../src/components/Icon/Icon.tsx","../src/components/Icon/categories/ui.tsx","../src/components/Icon/registry.ts","../src/components/Icon/IconLibrary.tsx","../src/components/IconButton/IconButton.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Radio/Radio.tsx","../src/components/TextField/TextField.tsx","../src/components/Select/Select.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Window/Window.tsx","../src/components/Dialog/Dialog.tsx","../src/components/MenuBar/MenuBar.tsx","../src/components/MenuBar/MenuItem.tsx","../src/components/Scrollbar/Scrollbar.tsx","../src/components/ListView/ListView.tsx","../src/components/FolderList/FolderList.tsx","../src/tokens/index.ts"],"sourcesContent":["// Button component - Mac OS 9 style\n// Enhanced with polymorphic support, loading states, and icon support\n\nimport React, { forwardRef, ButtonHTMLAttributes, AnchorHTMLAttributes } from 'react';\nimport styles from './Button.module.css';\n\n// Common props shared by button and link variants\ninterface BaseButtonProps {\n\t/**\n\t * Button variant\n\t * @default 'default'\n\t */\n\tvariant?: 'default' | 'primary' | 'danger';\n\n\t/**\n\t * Button size\n\t * @default 'md'\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\n\t/**\n\t * Whether the button is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Whether the button should take full width\n\t * @default false\n\t */\n\tfullWidth?: boolean;\n\n\t/**\n\t * Loading state - shows loading indicator and disables interaction\n\t * @default false\n\t */\n\tloading?: boolean;\n\n\t/**\n\t * Text to show when loading (replaces children)\n\t */\n\tloadingText?: string;\n\n\t/**\n\t * Use Mac OS 9 style watch cursor during loading\n\t * @default false\n\t */\n\tuseCursorLoading?: boolean;\n\n\t/**\n\t * Icon to display before the button text\n\t */\n\tleftIcon?: React.ReactNode;\n\n\t/**\n\t * Icon to display after the button text\n\t */\n\trightIcon?: React.ReactNode;\n\n\t/**\n\t * If true, only displays icon (children used as aria-label)\n\t */\n\ticonOnly?: boolean;\n\n\t/**\n\t * Override aria-label\n\t */\n\tariaLabel?: string;\n\n\t/**\n\t * ID of element that describes this button\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * For toggle buttons - indicates pressed state\n\t */\n\tariaPressed?: boolean;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Button content\n\t */\n\tchildren: React.ReactNode;\n}\n\n// Button-specific props\ninterface ButtonAsButton extends BaseButtonProps, Omit<ButtonHTMLAttributes<HTMLButtonElement>, keyof BaseButtonProps | 'aria-label' | 'aria-describedby' | 'aria-pressed'> {\n\t/**\n\t * Render as button element\n\t * @default 'button'\n\t */\n\tas?: 'button';\n\n\t/**\n\t * Associate button with a form by ID\n\t */\n\tform?: string;\n\n\t/**\n\t * Override form action URL\n\t */\n\tformAction?: string;\n\n\t/**\n\t * Override form method\n\t */\n\tformMethod?: 'get' | 'post';\n\n\t/**\n\t * Skip form validation\n\t */\n\tformNoValidate?: boolean;\n\n\t/**\n\t * Where to display form response\n\t */\n\tformTarget?: string;\n}\n\n// Link-specific props\ninterface ButtonAsLink extends BaseButtonProps, Omit<AnchorHTMLAttributes<HTMLAnchorElement>, keyof BaseButtonProps | 'aria-label' | 'aria-describedby' | 'aria-pressed'> {\n\t/**\n\t * Render as anchor element\n\t */\n\tas: 'a';\n\n\t/**\n\t * URL for the link\n\t */\n\thref: string;\n\n\t/**\n\t * Where to open the link\n\t */\n\ttarget?: '_blank' | '_self' | '_parent' | '_top';\n\n\t/**\n\t * Relationship of linked resource\n\t * Auto-fills \"noopener noreferrer\" for external links if not provided\n\t */\n\trel?: string;\n\n\t/**\n\t * Prompt to download the linked resource\n\t */\n\tdownload?: boolean | string;\n}\n\nexport type ButtonProps = ButtonAsButton | ButtonAsLink;\n\n/**\n * Mac OS 9 style Button component\n * \n * Polymorphic component that can render as button or link with consistent styling.\n * \n * Features:\n * - Classic 3-layer bevel effect (highlight, shadow, drop shadow)\n * - Polymorphic - renders as <button> or <a> based on `as` prop\n * - Loading states with optional Mac OS 9 watch cursor\n * - Icon support (left, right, or icon-only)\n * - Full accessibility with ARIA support\n * - Form integration props\n * - Auto-security for external links\n * \n * @example\n * ```tsx\n * // Button\n * <Button onClick={handleClick}>Click Me</Button>\n * <Button variant=\"primary\" size=\"lg\">Primary Action</Button>\n * <Button loading loadingText=\"Saving...\">Save</Button>\n * \n * // Link styled as button\n * <Button as=\"a\" href=\"/dashboard\">Go to Dashboard</Button>\n * <Button as=\"a\" href=\"https://example.com\" target=\"_blank\">\n * External Link\n * </Button>\n * \n * // With icons\n * <Button leftIcon={<FolderIcon />}>Open</Button>\n * <Button iconOnly aria-label=\"Close\">\n * <CloseIcon />\n * </Button>\n * ```\n */\nexport const Button = forwardRef<HTMLButtonElement | HTMLAnchorElement, ButtonProps>(\n\t(props, ref) => {\n\t\tconst {\n\t\t\tvariant = 'default',\n\t\t\tsize = 'md',\n\t\t\tdisabled = false,\n\t\t\tfullWidth = false,\n\t\t\tloading = false,\n\t\t\tloadingText,\n\t\t\tuseCursorLoading = false,\n\t\t\tleftIcon,\n\t\t\trightIcon,\n\t\t\ticonOnly = false,\n\t\t\tariaLabel,\n\t\t\tariaDescribedBy,\n\t\t\tariaPressed,\n\t\t\tclassName = '',\n\t\t\tchildren,\n\t\t\t...restProps\n\t\t} = props;\n\n\t\t// Determine if rendering as link\n\t\tconst isLink = props.as === 'a';\n\t\tconst Component = isLink ? 'a' : 'button';\n\n\t\t// Build class names\n\t\tconst classNames = [\n\t\t\tstyles.button,\n\t\t\tstyles[`button--${variant}`],\n\t\t\tstyles[`button--${size}`],\n\t\t\tfullWidth && styles['button--full-width'],\n\t\t\tdisabled && styles['button--disabled'],\n\t\t\tloading && styles['button--loading'],\n\t\t\tloading && useCursorLoading && styles['button--cursor-loading'],\n\t\t\ticonOnly && styles['button--icon-only'],\n\t\t\t(leftIcon || rightIcon) && styles['button--with-icon'],\n\t\t\tclassName,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\t// Prepare ARIA attributes\n\t\tconst ariaAttributes: Record<string, any> = {\n\t\t\t'aria-label': iconOnly ? (ariaLabel || (typeof children === 'string' ? children : undefined)) : ariaLabel,\n\t\t\t'aria-describedby': ariaDescribedBy,\n\t\t\t'aria-pressed': ariaPressed,\n\t\t\t'aria-disabled': disabled || loading,\n\t\t\t'aria-busy': loading,\n\t\t};\n\n\t\t// Handle link-specific props\n\t\tif (isLink) {\n\t\t\tconst { href, target, rel, download, ...linkProps } = restProps as ButtonAsLink;\n\t\t\t\n\t\t\t// Auto-add security rel for external links\n\t\t\tlet finalRel = rel;\n\t\t\tif (target === '_blank' && !rel) {\n\t\t\t\tfinalRel = 'noopener noreferrer';\n\t\t\t}\n\n\t\t\t// Links can't be truly disabled, so prevent default\n\t\t\tconst handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n\t\t\t\tif (disabled || loading) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlinkProps.onClick?.(e);\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<a\n\t\t\t\t\tref={ref as React.Ref<HTMLAnchorElement>}\n\t\t\t\t\thref={disabled || loading ? undefined : href}\n\t\t\t\t\ttarget={target}\n\t\t\t\t\trel={finalRel}\n\t\t\t\t\tdownload={download}\n\t\t\t\t\tclassName={classNames}\n\t\t\t\t\t{...ariaAttributes}\n\t\t\t\t\t{...linkProps}\n\t\t\t\t\tonClick={handleClick}\n\t\t\t\t>\n\t\t\t\t\t{renderButtonContent()}\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\n\t\t// Handle button-specific props\n\t\tconst {\n\t\t\ttype = 'button',\n\t\t\tform,\n\t\t\tformAction,\n\t\t\tformMethod,\n\t\t\tformNoValidate,\n\t\t\tformTarget,\n\t\t\t...buttonProps\n\t\t} = restProps as ButtonAsButton;\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\tref={ref as React.Ref<HTMLButtonElement>}\n\t\t\t\ttype={type}\n\t\t\t\tdisabled={disabled || loading}\n\t\t\t\tform={form}\n\t\t\t\tformAction={formAction}\n\t\t\t\tformMethod={formMethod}\n\t\t\t\tformNoValidate={formNoValidate}\n\t\t\t\tformTarget={formTarget}\n\t\t\t\tclassName={classNames}\n\t\t\t\t{...ariaAttributes}\n\t\t\t\t{...buttonProps}\n\t\t\t>\n\t\t\t\t{renderButtonContent()}\n\t\t\t</button>\n\t\t);\n\n\t\t// Render button content with icons and loading state\n\t\tfunction renderButtonContent() {\n\t\t\t// Show loading state\n\t\t\tif (loading) {\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{!useCursorLoading && (\n\t\t\t\t\t\t\t<span className={styles['button__loading-spinner']} aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t⏳\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<span className={styles['button__text']}>\n\t\t\t\t\t\t\t{loadingText || children}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Icon-only button\n\t\t\tif (iconOnly) {\n\t\t\t\treturn <span className={styles['button__icon-only']}>{children}</span>;\n\t\t\t}\n\n\t\t\t// Button with icons\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{leftIcon && (\n\t\t\t\t\t\t<span className={styles['button__icon-left']} aria-hidden=\"true\">\n\t\t\t\t\t\t\t{leftIcon}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t\t<span className={styles['button__text']}>{children}</span>\n\t\t\t\t\t{rightIcon && (\n\t\t\t\t\t\t<span className={styles['button__icon-right']} aria-hidden=\"true\">\n\t\t\t\t\t\t\t{rightIcon}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t);\n\t\t}\n\t}\n);\n\nButton.displayName = 'Button';\n\nexport default Button;\n","// Icon component - Mac OS 9 style\n// Simple wrapper for SVG icons with consistent sizing\n\nimport React, { forwardRef, SVGAttributes } from 'react';\nimport styles from './Icon.module.css';\n\nexport interface IconProps extends SVGAttributes<SVGElement> {\n\t/**\n\t * Icon size\n\t * @default 'md'\n\t */\n\tsize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n\t/**\n\t * Icon content (SVG path or element)\n\t */\n\tchildren: React.ReactNode;\n\n\t/**\n\t * Optional label for accessibility\n\t */\n\tlabel?: string;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Icon component for Mac OS 9 UI\n * \n * Wraps SVG content with consistent sizing and styling.\n * Use for inline icons in buttons, labels, etc.\n * \n * @example\n * ```tsx\n * <Icon size=\"sm\">\n * <path d=\"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\"/>\n * </Icon>\n * \n * <Icon label=\"Close\" size=\"md\">\n * <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n * </Icon>\n * ```\n */\nexport const Icon = forwardRef<SVGSVGElement, IconProps>(\n\t({ size = 'md', children, label, className = '', ...props }, ref) => {\n\tconst classNames = [styles.icon, styles[`icon--${size}`], className]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\t\treturn (\n\t\t\t<svg\n\t\t\t\tref={ref}\n\t\t\t\tclassName={classNames}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\taria-label={label}\n\t\t\t\taria-hidden={!label}\n\t\t\t\trole={label ? 'img' : 'presentation'}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</svg>\n\t\t);\n\t}\n);\n\nIcon.displayName = 'Icon';\n\nexport default Icon;\n","// UI control icons - Mac OS 9 React UI\n// User interface controls and elements\n\nimport React from 'react';\nimport { Icon } from '../Icon';\n\n/**\n * Divider icon\n * Vertical divider for menu bars and toolbars\n * Note: Uses a 10x32 viewBox instead of standard 24x24\n */\nexport const DividerIcon: React.FC = () => (\n\t<Icon label=\"Divider\" size=\"sm\" viewBox=\"0 0 10 32\">\n\t\t<g clipPath=\"url(#clip0_529_36832)\">\n\t\t\t<path d=\"M8 4H10V32H8V4Z\" fill=\"#999999\" />\n\t\t\t<path d=\"M8 0H10V4H8V0Z\" fill=\"#999999\" />\n\t\t\t<path d=\"M0 4H2V32H0V4Z\" fill=\"white\" />\n\t\t\t<path d=\"M0 0H2V4H0V0Z\" fill=\"white\" />\n\t\t\t<path d=\"M5 28H7V30H5V28Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M5 21H7V23H5V21Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M5 14H7V16H5V14Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M5 7H7V9H5V7Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M5 4H7V2H5V4Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M5 30H7V32H5V30Z\" fill=\"white\" />\n\t\t\t<path d=\"M5 23H7V25H5V23Z\" fill=\"white\" />\n\t\t\t<path d=\"M5 16H7V18H5V16Z\" fill=\"white\" />\n\t\t\t<path d=\"M5 9H7V11H5V9Z\" fill=\"white\" />\n\t\t\t<path d=\"M5 2H7V0H5V2Z\" fill=\"white\" />\n\t\t\t<path d=\"M3 28H5V30H3V28Z\" fill=\"#999999\" />\n\t\t\t<path d=\"M3 21H5V23H3V21Z\" fill=\"#999999\" />\n\t\t\t<path d=\"M3 14H5V16H3V14Z\" fill=\"#999999\" />\n\t\t\t<path d=\"M3 7H5V9H3V7Z\" fill=\"#999999\" />\n\t\t\t<path d=\"M3 4H5V2H3V4Z\" fill=\"#999999\" />\n\t\t\t<path d=\"M3 30H5V32H3V30Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M3 23H5V25H3V23Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M3 16H5V18H3V16Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M3 9H5V11H3V9Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M3 2H5V0H3V2Z\" fill=\"#BBBBBB\" />\n\t\t</g>\n\t\t<defs>\n\t\t\t<clipPath id=\"clip0_529_36832\">\n\t\t\t\t<rect width=\"10\" height=\"32\" fill=\"white\" />\n\t\t\t</clipPath>\n\t\t</defs>\n\t</Icon>\n);","// Icon Registry - Mac OS 9 React UI\n// Central registry of all available icons with type-safe names\n\nimport { DividerIcon } from './categories/ui';\n\n/**\n * Central icon registry\n * Maps icon names to their components\n */\nexport const iconRegistry = {\n\t// UI\n\tdivider: DividerIcon,\n} as const;\n\n/**\n * Type-safe icon names\n * Auto-generated from the icon registry\n */\nexport type IconName = keyof typeof iconRegistry;\n\n/**\n * Get icon component by name\n * @param name - The icon name from the registry\n * @returns The icon component or undefined if not found\n */\nexport function getIcon(name: IconName) {\n\treturn iconRegistry[name];\n}\n\n/**\n * Check if an icon exists in the registry\n * @param name - The icon name to check\n * @returns True if the icon exists\n */\nexport function hasIcon(name: string): name is IconName {\n\treturn name in iconRegistry;\n}\n\n/**\n * Get all available icon names\n * @returns Array of all icon names\n */\nexport function getAllIconNames(): IconName[] {\n\treturn Object.keys(iconRegistry) as IconName[];\n}","// IconLibrary component - Mac OS 9 React UI\n// Select icons by name from the registry\n\nimport React, { forwardRef } from 'react';\nimport { IconName, getIcon } from './registry';\nimport { IconProps } from './Icon';\n\nexport interface IconLibraryProps\n\textends Omit<IconProps, 'children' | 'label'> {\n\t/**\n\t * Icon name from the registry\n\t */\n\ticon: IconName;\n\n\t/**\n\t * Optional custom label for accessibility\n\t * If not provided, uses the icon name\n\t */\n\tlabel?: string;\n}\n\n/**\n * IconLibrary component for Mac OS 9 UI\n *\n * Provides a convenient way to use icons by name rather than importing each one individually.\n * All icons are registered in the icon registry and can be accessed by their string names.\n *\n * @example\n * ```tsx\n * <IconLibrary icon=\"save\" size=\"md\" />\n * <IconLibrary icon=\"folder\" size=\"lg\" />\n * <IconLibrary icon=\"arrow-right\" size=\"sm\" />\n * ```\n */\nexport const IconLibrary: React.FC<IconLibraryProps> = ({ icon, ...props }) => {\n\tconst IconComponent = getIcon(icon);\n\n\tif (!IconComponent) {\n\t\tconsole.warn(`Icon \"${icon}\" not found in registry`);\n\t\treturn null;\n\t}\n\n\t// Render the icon component with any additional props\n\treturn <IconComponent {...props} />;\n};\n\nIconLibrary.displayName = 'IconLibrary';\n\nexport default IconLibrary;","// IconButton component - Mac OS 9 style button with icon\n// Button variant that includes an icon, with optional label\n\n'use client';\n\nimport React, { forwardRef, ButtonHTMLAttributes } from 'react';\nimport styles from './IconButton.module.css';\n\nexport interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n\t/**\n\t * Icon element to display\n\t */\n\ticon: React.ReactNode;\n\n\t/**\n\t * Optional text label to display alongside icon\n\t */\n\tlabel?: string;\n\n\t/**\n\t * Label position relative to icon\n\t * @default 'right'\n\t */\n\tlabelPosition?: 'left' | 'right' | 'top' | 'bottom';\n\n\t/**\n\t * Button variant\n\t * @default 'default'\n\t */\n\tvariant?: 'default' | 'primary' | 'danger';\n\n\t/**\n\t * Button size\n\t * @default 'md'\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\n\t/**\n\t * Whether button is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * IconButton component for Mac OS 9 UI\n * \n * Button with an icon, optionally with a text label.\n * Supports all button variants and sizes.\n * \n * @example\n * ```tsx\n * // Icon-only button\n * <IconButton icon={<SaveIcon />} />\n * \n * // Icon with label\n * <IconButton \n * icon={<FolderIcon />} \n * label=\"New Folder\"\n * variant=\"primary\"\n * />\n * \n * // Icon with label on different sides\n * <IconButton \n * icon={<SearchIcon />} \n * label=\"Search\"\n * labelPosition=\"right\"\n * />\n * ```\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n\t(\n\t\t{\n\t\t\ticon,\n\t\t\tlabel,\n\t\t\tlabelPosition = 'right',\n\t\t\tvariant = 'default',\n\t\t\tsize = 'md',\n\t\t\tdisabled = false,\n\t\t\tclassName = '',\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\t// Build class names\n\t\tconst classNames = [\n\t\t\tstyles.iconButton,\n\t\t\tstyles[`iconButton--${variant}`],\n\t\t\tstyles[`iconButton--${size}`],\n\t\t\tlabel && styles['iconButton--with-label'],\n\t\t\tlabel && styles[`iconButton--label-${labelPosition}`],\n\t\t\tdisabled && styles['iconButton--disabled'],\n\t\t\tclassName,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\tref={ref}\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={classNames}\n\t\t\t\tdisabled={disabled}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t{label && (labelPosition === 'left' || labelPosition === 'top') && (\n\t\t\t<span className={styles.label}>{label}</span>\n\t\t)}\n\t\t<span className={styles.icon}>{icon}</span>\n\t\t{label && (labelPosition === 'right' || labelPosition === 'bottom') && (\n\t\t\t<span className={styles.label}>{label}</span>\n\t\t)}\n\t\t\t</button>\n\t\t);\n\t}\n);\n\nIconButton.displayName = 'IconButton';\n\nexport default IconButton;\n","// Checkbox component - Mac OS 9 style\n// Classic checkbox with label support and full accessibility\n\nimport React, { forwardRef, InputHTMLAttributes } from 'react';\nimport styles from './Checkbox.module.css';\n\nexport interface CheckboxProps\n\textends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n\t/**\n\t * Whether the checkbox is checked\n\t * For controlled component usage\n\t */\n\tchecked?: boolean;\n\n\t/**\n\t * Default checked state\n\t * For uncontrolled component usage\n\t */\n\tdefaultChecked?: boolean;\n\n\t/**\n\t * Whether the checkbox is in an indeterminate state\n\t * (neither checked nor unchecked, typically for \"select all\" scenarios)\n\t * @default false\n\t */\n\tindeterminate?: boolean;\n\n\t/**\n\t * Whether the checkbox is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Label text for the checkbox\n\t */\n\tlabel?: React.ReactNode;\n\n\t/**\n\t * Position of the label relative to the checkbox\n\t * @default 'right'\n\t */\n\tlabelPosition?: 'left' | 'right';\n\n\t/**\n\t * Size of the checkbox\n\t * @default 'md'\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\n\t/**\n\t * Error state for form validation\n\t * @default false\n\t */\n\terror?: boolean;\n\n\t/**\n\t * Override aria-label (for checkboxes without visible labels)\n\t */\n\tariaLabel?: string;\n\n\t/**\n\t * ID of element that describes this checkbox\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Callback when checked state changes\n\t */\n\tonChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\n/**\n * Mac OS 9 style Checkbox component\n * \n * Classic checkbox with raised bevel effect and optional label.\n * Supports checked, unchecked, indeterminate, and disabled states.\n * \n * Features:\n * - Classic Mac OS 9 bevel styling\n * - Indeterminate state support\n * - Label positioning (left/right)\n * - Controlled and uncontrolled modes\n * - Full accessibility with ARIA support\n * - Keyboard navigation (Space to toggle)\n * - Form integration\n * \n * @example\n * ```tsx\n * // Uncontrolled\n * <Checkbox label=\"Accept terms\" />\n * \n * // Controlled\n * <Checkbox \n * checked={isChecked} \n * onChange={(e) => setIsChecked(e.target.checked)}\n * label=\"Subscribe to newsletter\"\n * />\n * \n * // Indeterminate (for \"select all\")\n * <Checkbox \n * indeterminate={someSelected && !allSelected}\n * checked={allSelected}\n * onChange={handleSelectAll}\n * label=\"Select all items\"\n * />\n * ```\n */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n\t(\n\t\t{\n\t\t\tchecked,\n\t\t\tdefaultChecked,\n\t\t\tindeterminate = false,\n\t\t\tdisabled = false,\n\t\t\tlabel,\n\t\t\tlabelPosition = 'right',\n\t\t\tsize = 'md',\n\t\t\terror = false,\n\t\t\tariaLabel,\n\t\t\tariaDescribedBy,\n\t\t\tclassName = '',\n\t\t\tonChange,\n\t\t\tid,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\tconst inputRef = React.useRef<HTMLInputElement>(null);\n\t\tconst combinedRef = (ref as React.RefObject<HTMLInputElement>) || inputRef;\n\n\t\t// Set indeterminate property via ref (can't be set via HTML attribute)\n\t\tReact.useEffect(() => {\n\t\t\tif (combinedRef?.current) {\n\t\t\t\tcombinedRef.current.indeterminate = indeterminate;\n\t\t\t}\n\t\t}, [indeterminate, combinedRef]);\n\n\t\t// Generate ID if not provided (for label association)\n\t\tconst checkboxId = id || React.useId();\n\n\t// Build class names\n\tconst wrapperClassNames = [\n\t\tstyles.wrapper,\n\t\tstyles[`wrapper--${size}`],\n\t\tstyles[`wrapper--label-${labelPosition}`],\n\t\tdisabled && styles['wrapper--disabled'],\n\t\terror && styles['wrapper--error'],\n\t\tclassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst checkboxClassNames = [\n\t\tstyles.checkbox,\n\t\tstyles[`checkbox--${size}`],\n\t\tindeterminate && styles['checkbox--indeterminate'],\n\t\terror && styles['checkbox--error'],\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst labelClassNames = [styles.label, styles[`label--${size}`]].filter(Boolean).join(' ');\n\n\t\t// ARIA attributes\n\t\tconst ariaAttributes = {\n\t\t\t'aria-label': !label ? ariaLabel : undefined,\n\t\t\t'aria-describedby': ariaDescribedBy,\n\t\t\t'aria-invalid': error,\n\t\t\t'aria-checked': indeterminate ? ('mixed' as const) : undefined,\n\t\t};\n\n\t\treturn (\n\t\t\t<div className={wrapperClassNames}>\n\t\t\t\t{label && labelPosition === 'left' && (\n\t\t\t\t\t<label htmlFor={checkboxId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tref={combinedRef}\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tid={checkboxId}\n\t\t\t\t\tclassName={checkboxClassNames}\n\t\t\t\t\tchecked={checked}\n\t\t\t\t\tdefaultChecked={defaultChecked}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t{...ariaAttributes}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\n\t\t\t\t{label && labelPosition === 'right' && (\n\t\t\t\t\t<label htmlFor={checkboxId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n","// Radio component - Mac OS 9 style\n// Classic radio button with label support and full accessibility\n\nimport React, { forwardRef, InputHTMLAttributes } from 'react';\nimport styles from './Radio.module.css';\n\nexport interface RadioProps\n\textends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n\t/**\n\t * Whether the radio is checked\n\t * For controlled component usage\n\t */\n\tchecked?: boolean;\n\n\t/**\n\t * Default checked state\n\t * For uncontrolled component usage\n\t */\n\tdefaultChecked?: boolean;\n\n\t/**\n\t * Whether the radio is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Label text for the radio\n\t */\n\tlabel?: React.ReactNode;\n\n\t/**\n\t * Position of the label relative to the radio\n\t * @default 'right'\n\t */\n\tlabelPosition?: 'left' | 'right';\n\n\t/**\n\t * Size of the radio\n\t * @default 'md'\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\n\t/**\n\t * Error state for form validation\n\t * @default false\n\t */\n\terror?: boolean;\n\n\t/**\n\t * Override aria-label (for radios without visible labels)\n\t */\n\tariaLabel?: string;\n\n\t/**\n\t * ID of element that describes this radio\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Value for the radio button (required for radio groups)\n\t */\n\tvalue?: string | number;\n\n\t/**\n\t * Name for the radio group (all radios in a group should share the same name)\n\t */\n\tname?: string;\n\n\t/**\n\t * Callback when checked state changes\n\t */\n\tonChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\n/**\n * Mac OS 9 style Radio component\n * \n * Classic radio button with raised bevel effect and optional label.\n * Radio buttons work in groups - only one can be selected at a time.\n * \n * Features:\n * - Classic Mac OS 9 circular bevel styling\n * - Radio group support via `name` attribute\n * - Label positioning (left/right)\n * - Controlled and uncontrolled modes\n * - Full accessibility with ARIA support\n * - Keyboard navigation (Arrow keys to navigate group, Space to select)\n * - Form integration\n * \n * @example\n * ```tsx\n * // Uncontrolled radio group\n * <div>\n * <Radio name=\"size\" value=\"small\" label=\"Small\" />\n * <Radio name=\"size\" value=\"medium\" label=\"Medium\" defaultChecked />\n * <Radio name=\"size\" value=\"large\" label=\"Large\" />\n * </div>\n * \n * // Controlled radio group\n * <div>\n * <Radio \n * name=\"color\" \n * value=\"red\" \n * checked={color === 'red'}\n * onChange={(e) => setColor(e.target.value)}\n * label=\"Red\"\n * />\n * <Radio \n * name=\"color\" \n * value=\"blue\" \n * checked={color === 'blue'}\n * onChange={(e) => setColor(e.target.value)}\n * label=\"Blue\"\n * />\n * </div>\n * ```\n */\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n\t(\n\t\t{\n\t\t\tchecked,\n\t\t\tdefaultChecked,\n\t\t\tdisabled = false,\n\t\t\tlabel,\n\t\t\tlabelPosition = 'right',\n\t\t\tsize = 'md',\n\t\t\terror = false,\n\t\t\tariaLabel,\n\t\t\tariaDescribedBy,\n\t\t\tclassName = '',\n\t\t\tvalue,\n\t\t\tname,\n\t\t\tonChange,\n\t\t\tid,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\t// Generate ID if not provided (for label association)\n\t\tconst radioId = id || React.useId();\n\n\t// Build class names\n\tconst wrapperClassNames = [\n\t\tstyles.wrapper,\n\t\tstyles[`wrapper--${size}`],\n\t\tstyles[`wrapper--label-${labelPosition}`],\n\t\tdisabled && styles['wrapper--disabled'],\n\t\terror && styles['wrapper--error'],\n\t\tclassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst radioClassNames = [\n\t\tstyles.radio,\n\t\tstyles[`radio--${size}`],\n\t\terror && styles['radio--error'],\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst labelClassNames = [styles.label, styles[`label--${size}`]].filter(Boolean).join(' ');\n\n\t\t// ARIA attributes\n\t\tconst ariaAttributes = {\n\t\t\t'aria-label': !label ? ariaLabel : undefined,\n\t\t\t'aria-describedby': ariaDescribedBy,\n\t\t\t'aria-invalid': error,\n\t\t};\n\n\t\treturn (\n\t\t\t<div className={wrapperClassNames}>\n\t\t\t\t{label && labelPosition === 'left' && (\n\t\t\t\t\t<label htmlFor={radioId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tref={ref}\n\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\tid={radioId}\n\t\t\t\t\tclassName={radioClassNames}\n\t\t\t\t\tchecked={checked}\n\t\t\t\t\tdefaultChecked={defaultChecked}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tname={name}\n\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t{...ariaAttributes}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\n\t\t\t\t{label && labelPosition === 'right' && (\n\t\t\t\t\t<label htmlFor={radioId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nRadio.displayName = 'Radio';\n\nexport default Radio;\n","// TextField component - Mac OS 9 style\n// Classic text input with label support and full accessibility\n\nimport React, { forwardRef, InputHTMLAttributes } from 'react';\nimport styles from './TextField.module.css';\n\nexport interface TextFieldProps\n\textends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n\t/**\n\t * Label text for the text field\n\t */\n\tlabel?: React.ReactNode;\n\n\t/**\n\t * Position of the label relative to the text field\n\t * @default 'top'\n\t */\n\tlabelPosition?: 'top' | 'left' | 'right';\n\n\t/**\n\t * Size of the text field\n\t * @default 'md'\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\n\t/**\n\t * Whether the text field takes full width of its container\n\t * @default false\n\t */\n\tfullWidth?: boolean;\n\n\t/**\n\t * Error state for form validation\n\t * @default false\n\t */\n\terror?: boolean;\n\n\t/**\n\t * Error message to display below the field\n\t */\n\terrorMessage?: string;\n\n\t/**\n\t * Helper text to display below the field\n\t */\n\thelperText?: string;\n\n\t/**\n\t * Icon to display before the input (left side)\n\t */\n\tleftIcon?: React.ReactNode;\n\n\t/**\n\t * Icon to display after the input (right side)\n\t */\n\trightIcon?: React.ReactNode;\n\n\t/**\n\t * Override aria-label\n\t */\n\tariaLabel?: string;\n\n\t/**\n\t * ID of element that describes this text field\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Custom wrapper class name\n\t */\n\twrapperClassName?: string;\n}\n\n/**\n * Mac OS 9 style TextField component\n * \n * Classic text input with inset bevel effect and optional label.\n * \n * Features:\n * - Classic Mac OS 9 inset bevel styling\n * - Label positioning (top/left/right)\n * - Size variants (sm/md/lg)\n * - Error states with messages\n * - Helper text support\n * - Icon support (left/right)\n * - Full accessibility with ARIA support\n * - Keyboard navigation\n * - Form integration\n * \n * @example\n * ```tsx\n * // Basic text field\n * <TextField placeholder=\"Enter text...\" />\n * \n * // With label\n * <TextField label=\"Username\" placeholder=\"Enter username\" />\n * \n * // With error\n * <TextField \n * label=\"Email\" \n * error \n * errorMessage=\"Invalid email address\"\n * value={email}\n * onChange={(e) => setEmail(e.target.value)}\n * />\n * \n * // With icons\n * <TextField \n * leftIcon={<SearchIcon />}\n * placeholder=\"Search...\"\n * />\n * ```\n */\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n\t(\n\t\t{\n\t\t\tlabel,\n\t\t\tlabelPosition = 'top',\n\t\t\tsize = 'md',\n\t\t\tfullWidth = false,\n\t\t\terror = false,\n\t\t\terrorMessage,\n\t\t\thelperText,\n\t\t\tleftIcon,\n\t\t\trightIcon,\n\t\t\tariaLabel,\n\t\t\tariaDescribedBy,\n\t\t\tclassName = '',\n\t\t\twrapperClassName = '',\n\t\t\ttype = 'text',\n\t\t\tid,\n\t\t\tdisabled,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\t// Generate ID if not provided (for label association)\n\t\tconst inputId = id || React.useId();\n\n\t\t// Generate helper/error text ID for aria-describedby\n\t\tconst helperId = `${inputId}-helper`;\n\t\tconst errorId = `${inputId}-error`;\n\n\t\t// Combine aria-describedby\n\t\tconst describedByIds = [\n\t\t\thelperText && helperId,\n\t\t\terror && errorMessage && errorId,\n\t\t\tariaDescribedBy,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t// Build class names\n\tconst wrapperClassNames = [\n\t\tstyles.wrapper,\n\t\tstyles[`wrapper--${size}`],\n\t\tstyles[`wrapper--label-${labelPosition}`],\n\t\tfullWidth && styles['wrapper--full-width'],\n\t\tdisabled && styles['wrapper--disabled'],\n\t\twrapperClassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst inputWrapperClassNames = [\n\t\tstyles['input-wrapper'],\n\t\t(leftIcon || rightIcon) && styles['input-wrapper--with-icon'],\n\t\tleftIcon && styles['input-wrapper--with-left-icon'],\n\t\trightIcon && styles['input-wrapper--with-right-icon'],\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst inputClassNames = [\n\t\tstyles.input,\n\t\tstyles[`input--${size}`],\n\t\terror && styles['input--error'],\n\t\tfullWidth && styles['input--full-width'],\n\t\tclassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst labelClassNames = [styles.label, styles[`label--${size}`]].filter(Boolean).join(' ');\n\n\t\t// ARIA attributes\n\t\tconst ariaAttributes = {\n\t\t\t'aria-label': !label ? ariaLabel : undefined,\n\t\t\t'aria-describedby': describedByIds || undefined,\n\t\t\t'aria-invalid': error,\n\t\t};\n\n\t\treturn (\n\t\t\t<div className={wrapperClassNames}>\n\t\t\t\t{label && (labelPosition === 'top' || labelPosition === 'left') && (\n\t\t\t\t\t<label htmlFor={inputId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\n\t\t\t\t<div className={inputWrapperClassNames}>\n\t\t\t{leftIcon && (\n\t\t\t\t<span className={styles['input-icon-left']} aria-hidden=\"true\">\n\t\t\t\t\t{leftIcon}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<input\n\t\t\t\tref={ref}\n\t\t\t\ttype={type}\n\t\t\t\tid={inputId}\n\t\t\t\tclassName={inputClassNames}\n\t\t\t\tdisabled={disabled}\n\t\t\t\t{...ariaAttributes}\n\t\t\t\t{...props}\n\t\t\t/>\n\n\t\t\t{rightIcon && (\n\t\t\t\t<span className={styles['input-icon-right']} aria-hidden=\"true\">\n\t\t\t\t\t{rightIcon}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{label && labelPosition === 'right' && (\n\t\t\t\t\t<label htmlFor={inputId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\n\t\t{helperText && !error && (\n\t\t\t<p id={helperId} className={styles['helper-text']}>\n\t\t\t\t{helperText}\n\t\t\t</p>\n\t\t)}\n\n\t\t{error && errorMessage && (\n\t\t\t<p id={errorId} className={styles['error-message']}>\n\t\t\t\t{errorMessage}\n\t\t\t</p>\n\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nTextField.displayName = 'TextField';\n\nexport default TextField;\n","// Select component - Mac OS 9 style\n// Classic dropdown select with label support and full accessibility\n\nimport React, { forwardRef, SelectHTMLAttributes } from 'react';\nimport styles from './Select.module.css';\n\nexport interface SelectOption {\n\tvalue: string | number;\n\tlabel: string;\n\tdisabled?: boolean;\n}\n\nexport interface SelectProps\n\textends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'size'> {\n\t/**\n\t * Label text for the select\n\t */\n\tlabel?: React.ReactNode;\n\n\t/**\n\t * Position of the label relative to the select\n\t * @default 'top'\n\t */\n\tlabelPosition?: 'top' | 'left' | 'right';\n\n\t/**\n\t * Size of the select\n\t * @default 'md'\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\n\t/**\n\t * Whether the select takes full width of its container\n\t * @default false\n\t */\n\tfullWidth?: boolean;\n\n\t/**\n\t * Error state for form validation\n\t * @default false\n\t */\n\terror?: boolean;\n\n\t/**\n\t * Error message to display below the field\n\t */\n\terrorMessage?: string;\n\n\t/**\n\t * Helper text to display below the field\n\t */\n\thelperText?: string;\n\n\t/**\n\t * Options for the select dropdown\n\t * Alternative to providing option elements as children\n\t */\n\toptions?: SelectOption[];\n\n\t/**\n\t * Placeholder text (creates a disabled first option)\n\t */\n\tplaceholder?: string;\n\n\t/**\n\t * Override aria-label\n\t */\n\tariaLabel?: string;\n\n\t/**\n\t * ID of element that describes this select\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Custom wrapper class name\n\t */\n\twrapperClassName?: string;\n}\n\n/**\n * Mac OS 9 style Select component\n * \n * Classic dropdown select with raised bevel effect and optional label.\n * \n * Features:\n * - Classic Mac OS 9 popup menu styling\n * - Label positioning (top/left/right)\n * - Size variants (sm/md/lg)\n * - Error states with messages\n * - Helper text support\n * - Option groups support\n * - Full accessibility with ARIA support\n * - Keyboard navigation\n * - Form integration\n * \n * @example\n * ```tsx\n * // With options prop\n * <Select\n * label=\"Choose a color\"\n * options={[\n * { value: 'red', label: 'Red' },\n * { value: 'blue', label: 'Blue' },\n * { value: 'green', label: 'Green' }\n * ]}\n * placeholder=\"Select a color...\"\n * />\n * \n * // With children\n * <Select label=\"Country\">\n * <option value=\"us\">United States</option>\n * <option value=\"ca\">Canada</option>\n * <option value=\"mx\">Mexico</option>\n * </Select>\n * ```\n */\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n\t(\n\t\t{\n\t\t\tlabel,\n\t\t\tlabelPosition = 'top',\n\t\t\tsize = 'md',\n\t\t\tfullWidth = false,\n\t\t\terror = false,\n\t\t\terrorMessage,\n\t\t\thelperText,\n\t\t\toptions,\n\t\t\tplaceholder,\n\t\t\tariaLabel,\n\t\t\tariaDescribedBy,\n\t\t\tclassName = '',\n\t\t\twrapperClassName = '',\n\t\t\tid,\n\t\t\tdisabled,\n\t\t\tchildren,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\t// Generate ID if not provided (for label association)\n\t\tconst selectId = id || React.useId();\n\n\t\t// Generate helper/error text ID for aria-describedby\n\t\tconst helperId = `${selectId}-helper`;\n\t\tconst errorId = `${selectId}-error`;\n\n\t\t// Combine aria-describedby\n\t\tconst describedByIds = [\n\t\t\thelperText && helperId,\n\t\t\terror && errorMessage && errorId,\n\t\t\tariaDescribedBy,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\t// Build class names\n\t\tconst wrapperClassNames = [\n\t\t\tstyles.wrapper,\n\t\t\tstyles[`wrapper--${size}`],\n\t\t\tstyles[`wrapper--label-${labelPosition}`],\n\t\t\tfullWidth && styles['wrapper--full-width'],\n\t\t\tdisabled && styles['wrapper--disabled'],\n\t\t\twrapperClassName,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\tconst selectClassNames = [\n\t\t\tstyles.select,\n\t\t\tstyles[`select--${size}`],\n\t\t\terror && styles['select--error'],\n\t\t\tfullWidth && styles['select--full-width'],\n\t\t\tclassName,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\tconst labelClassNames = [styles.label, styles[`label--${size}`]].filter(Boolean).join(' ');\n\n\t\t// ARIA attributes\n\t\tconst ariaAttributes = {\n\t\t\t'aria-label': !label ? ariaLabel : undefined,\n\t\t\t'aria-describedby': describedByIds || undefined,\n\t\t\t'aria-invalid': error,\n\t\t};\n\n\t\t// Render options from options prop\n\t\tconst renderOptions = () => {\n\t\t\tif (options) {\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{placeholder && (\n\t\t\t\t\t\t\t<option value=\"\" disabled>\n\t\t\t\t\t\t\t\t{placeholder}\n\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{options.map((option) => (\n\t\t\t\t\t\t\t<option key={option.value} value={option.value} disabled={option.disabled}>\n\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn children;\n\t\t};\n\n\t\treturn (\n\t\t\t<div className={wrapperClassNames}>\n\t\t\t\t{label && (labelPosition === 'top' || labelPosition === 'left') && (\n\t\t\t\t\t<label htmlFor={selectId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\n\t\t\t\t<select\n\t\t\t\t\tref={ref}\n\t\t\t\t\tid={selectId}\n\t\t\t\t\tclassName={selectClassNames}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t{...ariaAttributes}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t{renderOptions()}\n\t\t\t\t</select>\n\n\t\t\t\t{label && labelPosition === 'right' && (\n\t\t\t\t\t<label htmlFor={selectId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\n\t\t\t\t{helperText && !error && (\n\t\t\t\t\t<p id={helperId} className={styles['helper-text']}>\n\t\t\t\t\t\t{helperText}\n\t\t\t\t\t</p>\n\t\t\t\t)}\n\n\t\t\t\t{error && errorMessage && (\n\t\t\t\t\t<p id={errorId} className={styles['error-message']}>\n\t\t\t\t\t\t{errorMessage}\n\t\t\t\t\t</p>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;","// Tabs component - Mac OS 9 style\n// Classic tabbed navigation with raised tab appearance\n\nimport React, { useState, useCallback, Children, isValidElement, ReactElement } from 'react';\nimport styles from './Tabs.module.css';\n\nexport interface TabPanelProps {\n\t/**\n\t * Label for the tab\n\t */\n\tlabel: string;\n\n\t/**\n\t * Content of the tab panel\n\t */\n\tchildren: React.ReactNode;\n\n\t/**\n\t * Optional icon to display in the tab\n\t */\n\ticon?: React.ReactNode;\n\n\t/**\n\t * Whether this tab is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Value identifier for controlled tabs\n\t */\n\tvalue?: string;\n}\n\n/**\n * TabPanel component - Individual tab content\n * Must be used as a child of Tabs component\n */\nexport const TabPanel: React.FC<TabPanelProps> = ({ children }) => {\n\treturn <>{children}</>;\n};\n\nTabPanel.displayName = 'TabPanel';\n\nexport interface TabsProps {\n\t/**\n\t * Tab panels as children\n\t */\n\tchildren: ReactElement<TabPanelProps> | ReactElement<TabPanelProps>[];\n\n\t/**\n\t * Index of the default active tab (uncontrolled)\n\t * @default 0\n\t */\n\tdefaultActiveTab?: number;\n\n\t/**\n\t * Index of the active tab (controlled)\n\t */\n\tactiveTab?: number;\n\n\t/**\n\t * Callback when tab changes\n\t */\n\tonChange?: (index: number, value?: string) => void;\n\n\t/**\n\t * Size of the tabs\n\t * @default 'md'\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\n\t/**\n\t * Whether tabs take full width\n\t * @default false\n\t */\n\tfullWidth?: boolean;\n\n\t/**\n\t * Custom class name for the container\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Custom class name for the tab list\n\t */\n\ttabListClassName?: string;\n\n\t/**\n\t * Custom class name for the tab panel container\n\t */\n\tpanelClassName?: string;\n\n\t/**\n\t * ARIA label for the tab list\n\t */\n\tariaLabel?: string;\n}\n\n/**\n * Mac OS 9 style Tabs component\n * \n * Classic tabbed navigation with raised tab appearance and inset panel.\n * \n * Features:\n * - Classic Mac OS 9 tab styling\n * - Controlled and uncontrolled modes\n * - Keyboard navigation (Arrow keys, Home, End)\n * - Full accessibility with ARIA\n * - Optional icons in tabs\n * - Disabled tab states\n * \n * @example\n * ```tsx\n * // Uncontrolled\n * <Tabs>\n * <TabPanel label=\"General\">\n * <p>General settings content</p>\n * </TabPanel>\n * <TabPanel label=\"Advanced\">\n * <p>Advanced settings content</p>\n * </TabPanel>\n * </Tabs>\n * \n * // Controlled\n * <Tabs activeTab={activeIndex} onChange={setActiveIndex}>\n * <TabPanel label=\"Tab 1\">Content 1</TabPanel>\n * <TabPanel label=\"Tab 2\">Content 2</TabPanel>\n * </Tabs>\n * ```\n */\nexport const Tabs: React.FC<TabsProps> = ({\n\tchildren,\n\tdefaultActiveTab = 0,\n\tactiveTab: controlledActiveTab,\n\tonChange,\n\tsize = 'md',\n\tfullWidth = false,\n\tclassName = '',\n\ttabListClassName = '',\n\tpanelClassName = '',\n\tariaLabel = 'Tabs',\n}) => {\n\t// Controlled vs uncontrolled state\n\tconst [uncontrolledActiveTab, setUncontrolledActiveTab] = useState(defaultActiveTab);\n\tconst isControlled = controlledActiveTab !== undefined;\n\tconst activeTabIndex = isControlled ? controlledActiveTab : uncontrolledActiveTab;\n\n\t// Extract tab information from children\n\tconst tabs = Children.toArray(children).filter(\n\t\t(child): child is ReactElement<TabPanelProps> => isValidElement(child)\n\t);\n\n\t// Handle tab change\n\tconst handleTabChange = useCallback(\n\t\t(index: number) => {\n\t\t\tconst tab = tabs[index];\n\t\t\tif (!tab || tab.props.disabled) return;\n\n\t\t\tif (!isControlled) {\n\t\t\t\tsetUncontrolledActiveTab(index);\n\t\t\t}\n\t\t\tonChange?.(index, tab.props.value);\n\t\t},\n\t\t[tabs, isControlled, onChange]\n\t);\n\n\t// Keyboard navigation\n\tconst handleKeyDown = useCallback(\n\t\t(event: React.KeyboardEvent, currentIndex: number) => {\n\t\t\tlet newIndex = currentIndex;\n\n\t\t\tswitch (event.key) {\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tnewIndex = currentIndex - 1;\n\t\t\t\t\tif (newIndex < 0) newIndex = tabs.length - 1;\n\t\t\t\t\t// Skip disabled tabs\n\t\t\t\t\twhile (tabs[newIndex]?.props.disabled && newIndex !== currentIndex) {\n\t\t\t\t\t\tnewIndex--;\n\t\t\t\t\t\tif (newIndex < 0) newIndex = tabs.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tnewIndex = currentIndex + 1;\n\t\t\t\t\tif (newIndex >= tabs.length) newIndex = 0;\n\t\t\t\t\t// Skip disabled tabs\n\t\t\t\t\twhile (tabs[newIndex]?.props.disabled && newIndex !== currentIndex) {\n\t\t\t\t\t\tnewIndex++;\n\t\t\t\t\t\tif (newIndex >= tabs.length) newIndex = 0;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Home':\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tnewIndex = 0;\n\t\t\t\t\t// Skip disabled tabs\n\t\t\t\t\twhile (tabs[newIndex]?.props.disabled && newIndex < tabs.length - 1) {\n\t\t\t\t\t\tnewIndex++;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'End':\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tnewIndex = tabs.length - 1;\n\t\t\t\t\t// Skip disabled tabs\n\t\t\t\t\twhile (tabs[newIndex]?.props.disabled && newIndex > 0) {\n\t\t\t\t\t\tnewIndex--;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thandleTabChange(newIndex);\n\t\t},\n\t\t[tabs, handleTabChange]\n\t);\n\n\t// Class names\n\tconst containerClassNames = [styles.container, className].filter(Boolean).join(' ');\n\n\tconst tabListClassNames = [\n\t\tstyles.tabList,\n\t\tstyles[`tabList--${size}`],\n\t\tfullWidth && styles['tabList--full-width'],\n\t\ttabListClassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst panelContainerClassNames = [\n\t\tstyles.panelContainer,\n\t\tstyles[`panelContainer--${size}`],\n\t\tpanelClassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\treturn (\n\t\t<div className={containerClassNames}>\n\t\t\t<div role=\"tablist\" aria-label={ariaLabel} className={tabListClassNames}>\n\t\t\t\t{tabs.map((tab, index) => {\n\t\t\t\t\tconst isActive = index === activeTabIndex;\n\t\t\t\t\tconst isDisabled = tab.props.disabled;\n\n\t\t\t\t\tconst tabClassNames = [\n\t\t\t\t\t\tstyles.tab,\n\t\t\t\t\t\tstyles[`tab--${size}`],\n\t\t\t\t\t\tisActive && styles['tab--active'],\n\t\t\t\t\t\tisDisabled && styles['tab--disabled'],\n\t\t\t\t\t\tfullWidth && styles['tab--full-width'],\n\t\t\t\t\t]\n\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t.join(' ');\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-selected={isActive}\n\t\t\t\t\t\t\taria-controls={`panel-${index}`}\n\t\t\t\t\t\t\tid={`tab-${index}`}\n\t\t\t\t\t\t\ttabIndex={isActive ? 0 : -1}\n\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\tclassName={tabClassNames}\n\t\t\t\t\t\t\tonClick={() => handleTabChange(index)}\n\t\t\t\t\t\t\tonKeyDown={(e) => handleKeyDown(e, index)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{tab.props.icon && <span className={styles.tabIcon}>{tab.props.icon}</span>}\n\t\t\t\t\t\t\t{tab.props.label}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t{tabs.map((tab, index) => {\n\t\t\t\tconst isActive = index === activeTabIndex;\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\trole=\"tabpanel\"\n\t\t\t\t\t\tid={`panel-${index}`}\n\t\t\t\t\t\taria-labelledby={`tab-${index}`}\n\t\t\t\t\t\thidden={!isActive}\n\t\t\t\t\t\tclassName={panelContainerClassNames}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isActive && tab.props.children}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nTabs.displayName = 'Tabs';\n\nexport default Tabs;\n","// Window component - Mac OS 9 style\n// Classic window container with optional title bar\n\nimport React, { forwardRef } from 'react';\nimport styles from './Window.module.css';\n\nexport interface WindowProps {\n\t/**\n\t * Window content\n\t */\n\tchildren: React.ReactNode;\n\n\t/**\n\t * Window title (displays in title bar if no titleBar prop provided)\n\t */\n\ttitle?: string;\n\n\t/**\n\t * Custom title bar component\n\t * If provided, overrides the default title bar\n\t */\n\ttitleBar?: React.ReactNode;\n\n\t/**\n\t * Whether window is active/focused\n\t * @default true\n\t */\n\tactive?: boolean;\n\n\t/**\n\t * Width of the window\n\t * @default 'auto'\n\t */\n\twidth?: number | string;\n\n\t/**\n\t * Height of the window\n\t * @default 'auto'\n\t */\n\theight?: number | string;\n\n\t/**\n\t * Custom class name for the window container\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Custom class name for the content area\n\t */\n\tcontentClassName?: string;\n\n\t/**\n\t * Whether to show window controls (close, minimize, maximize)\n\t * @default true\n\t */\n\tshowControls?: boolean;\n\n\t/**\n\t * Callback when close button is clicked\n\t */\n\tonClose?: () => void;\n\n\t/**\n\t * Callback when minimize button is clicked\n\t */\n\tonMinimize?: () => void;\n\n\t/**\n\t * Callback when maximize button is clicked\n\t */\n\tonMaximize?: () => void;\n\n\t/**\n\t * Callback when mouse enters the window\n\t */\n\tonMouseEnter?: (event: React.MouseEvent<HTMLDivElement>) => void;\n\n\t/**\n\t * Whether the window has a resize handle\n\t * @default false\n\t */\n\tresizable?: boolean;\n}\n\n/**\n * Mac OS 9 style Window component\n * \n * Classic window container with title bar and content area.\n * \n * Features:\n * - Classic Mac OS 9 window styling with beveled edges\n * - Optional title bar with window controls\n * - Active/inactive states\n * - Composable with custom TitleBar component\n * - Flexible sizing\n * \n * @example\n * ```tsx\n * // Simple window with title\n * <Window title=\"My Window\">\n * <p>Window content goes here</p>\n * </Window>\n * \n * // Window with custom title bar\n * <Window titleBar={<TitleBar title=\"Custom\" />}>\n * <p>Content</p>\n * </Window>\n * \n * // Window with controls and callbacks\n * <Window \n * title=\"Document\"\n * onClose={() => console.log('Close')}\n * onMinimize={() => console.log('Minimize')}\n * >\n * <p>Content</p>\n * </Window>\n * ```\n */\nexport const Window = forwardRef<HTMLDivElement, WindowProps>(\n\t(\n\t\t{\n\t\t\tchildren,\n\t\t\ttitle,\n\t\t\ttitleBar,\n\t\t\tactive = true,\n\t\t\twidth = 'auto',\n\t\t\theight = 'auto',\n\t\t\tclassName = '',\n\t\t\tcontentClassName = '',\n\t\t\tshowControls = true,\n\t\t\tonClose,\n\t\t\tonMinimize,\n\t\t\tonMaximize,\n\t\t\tonMouseEnter,\n\t\t\tresizable = false,\n\t\t},\n\t\tref\n\t) => {\n\t\t// Class names\n\t\tconst windowClassNames = [\n\t\t\tstyles.window,\n\t\t\tactive ? styles['window--active'] : styles['window--inactive'],\n\t\t\tclassName,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\tconst contentClassNames = [styles.content, contentClassName].filter(Boolean).join(' ');\n\n\t\t// Window style\n\t\tconst windowStyle: React.CSSProperties = {};\n\t\tif (width !== 'auto') {\n\t\t\twindowStyle.width = typeof width === 'number' ? `${width}px` : width;\n\t\t}\n\t\tif (height !== 'auto') {\n\t\t\twindowStyle.height = typeof height === 'number' ? `${height}px` : height;\n\t\t}\n\n\t\t// Render title bar if title provided and no custom titleBar\n\t\tconst renderTitleBar = () => {\n\t\t\tif (titleBar) {\n\t\t\t\treturn titleBar;\n\t\t\t}\n\n\t\t\tif (title) {\n\t\t\t\treturn (\n\t\t\t\t\t<div className={styles.titleBar} data-numControls={\n\t\t\t\t\t\t[onClose, onMinimize, onMaximize].filter(Boolean).length\n\t\t\t\t\t}>\n\t\t\t\t\t\t{showControls && (\n\t\t\t\t\t\t\t<div className={styles.controls}>\n\t\t\t\t\t\t\t\t{onClose && (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName={styles.controlButton}\n\t\t\t\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t\t\t\t\taria-label=\"Close\"\n\t\t\t\t\t\t\t\t\ttitle=\"Close\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div className={styles.closeBox} />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{onMinimize && (\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tclassName={styles.controlButton}\n\t\t\t\t\t\t\t\t\t\tonClick={onMinimize}\n\t\t\t\t\t\t\t\t\t\taria-label=\"Minimize\"\n\t\t\t\t\t\t\t\t\t\ttitle=\"Minimize\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div className={styles.minimizeBox} />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{onMaximize && (\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tclassName={styles.controlButton}\n\t\t\t\t\t\t\t\t\t\tonClick={onMaximize}\n\t\t\t\t\t\t\t\t\t\taria-label=\"Maximize\"\n\t\t\t\t\t\t\t\t\t\ttitle=\"Maximize\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div className={styles.maximizeBox} />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className={styles.titleCenter}>\n\t\t\t\t\t\t<svg width=\"132\" height=\"13\" viewBox=\"0 0 132 13\" fill=\"none\" preserveAspectRatio=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<rect width=\"130.517\" height=\"13\" fill=\"#DDDDDD\"/>\n\t\t\t\t\t\t\t<rect width=\"1\" height=\"13\" fill=\"#EEEEEE\"/>\n\t\t\t\t\t\t\t<rect x=\"130\" width=\"1\" height=\"13\" fill=\"#C5C5C5\"/>\n\t\t\t\t\t\t\t<rect y=\"1\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t<rect y=\"5\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t<rect y=\"9\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t<rect y=\"3\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t<rect y=\"7\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t<rect y=\"11\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t<div className={`${styles.titleText} bold`}>{title}</div>\n\t\t\t\t\t\t\t<svg width=\"132\" height=\"13\" viewBox=\"0 0 132 13\" fill=\"none\" preserveAspectRatio=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t\t<rect width=\"130.517\" height=\"13\" fill=\"#DDDDDD\"/>\n\t\t\t\t\t\t\t\t<rect width=\"1\" height=\"13\" fill=\"#EEEEEE\"/>\n\t\t\t\t\t\t\t\t<rect x=\"130\" width=\"1\" height=\"13\" fill=\"#C5C5C5\"/>\n\t\t\t\t\t\t\t\t<rect y=\"1\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t\t<rect y=\"5\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t\t<rect y=\"9\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t\t<rect y=\"3\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t\t<rect y=\"7\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t\t<rect y=\"11\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t};\n\n\t\treturn (\n\t\t\t<div \n\t\t\t\tref={ref} \n\t\t\t\tclassName={windowClassNames} \n\t\t\t\tstyle={windowStyle}\n\t\t\t\tonMouseEnter={onMouseEnter}\n\t\t\t>\n\t\t\t\t{renderTitleBar()}\n\t\t\t\t<div className={contentClassNames}>{children}</div>\n\t\t\t{resizable && <div className={styles.resizeHandle} aria-hidden=\"true\" />}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nWindow.displayName = 'Window';\n\nexport default Window;\n","// Dialog component - Mac OS 9 style\n// Modal dialog with backdrop and focus trapping\n\nimport React, { forwardRef, useEffect, useRef, useCallback } from 'react';\nimport { Window, type WindowProps } from '../Window/Window';\nimport styles from './Dialog.module.css';\n\nexport interface DialogProps extends Omit<WindowProps, 'active'> {\n\t/**\n\t * Whether the dialog is open\n\t * @default false\n\t */\n\topen?: boolean;\n\n\t/**\n\t * Callback when dialog should close\n\t * Called when backdrop is clicked or Escape is pressed\n\t */\n\tonClose?: () => void;\n\n\t/**\n\t * Whether clicking the backdrop closes the dialog\n\t * @default true\n\t */\n\tcloseOnBackdropClick?: boolean;\n\n\t/**\n\t * Whether pressing Escape closes the dialog\n\t * @default true\n\t */\n\tcloseOnEscape?: boolean;\n\n\t/**\n\t * Custom backdrop className\n\t */\n\tbackdropClassName?: string;\n\n\t/**\n\t * Whether to trap focus within the dialog\n\t * @default true\n\t */\n\ttrapFocus?: boolean;\n\n\t/**\n\t * Initial focus element selector or ref\n\t */\n\tinitialFocus?: string | React.RefObject<HTMLElement>;\n}\n\n/**\n * Mac OS 9 style Dialog component\n * \n * Modal dialog with backdrop, focus trapping, and keyboard handling.\n * Built on top of the Window component.\n * \n * Features:\n * - Classic Mac OS 9 dialog styling\n * - Modal backdrop with click-to-close\n * - Escape key to close\n * - Focus trapping within dialog\n * - Centered on screen\n * - Prevents body scroll when open\n * \n * @example\n * ```tsx\n * const [open, setOpen] = useState(false);\n * \n * <Dialog\n * open={open}\n * onClose={() => setOpen(false)}\n * title=\"Confirm\"\n * width={350}\n * >\n * <p>Are you sure?</p>\n * <div>\n * <Button onClick={() => setOpen(false)}>Cancel</Button>\n * <Button variant=\"primary\">OK</Button>\n * </div>\n * </Dialog>\n * ```\n */\nexport const Dialog = forwardRef<HTMLDivElement, DialogProps>(\n\t(\n\t\t{\n\t\t\topen = false,\n\t\t\tonClose,\n\t\t\tcloseOnBackdropClick = true,\n\t\t\tcloseOnEscape = true,\n\t\t\tbackdropClassName = '',\n\t\t\ttrapFocus = true,\n\t\t\tinitialFocus,\n\t\t\tchildren,\n\t\t\t...windowProps\n\t\t},\n\t\tref\n\t) => {\n\t\tconst dialogRef = useRef<HTMLDivElement>(null);\n\t\tconst previousActiveElement = useRef<HTMLElement | null>(null);\n\n\t\t// Handle Escape key\n\t\tuseEffect(() => {\n\t\t\tif (!open || !closeOnEscape) return;\n\n\t\t\tconst handleEscape = (event: KeyboardEvent) => {\n\t\t\t\tif (event.key === 'Escape') {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tonClose?.();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdocument.addEventListener('keydown', handleEscape);\n\t\t\treturn () => document.removeEventListener('keydown', handleEscape);\n\t\t}, [open, closeOnEscape, onClose]);\n\n\t\t// Store previous active element and restore on close\n\t\tuseEffect(() => {\n\t\t\tif (open) {\n\t\t\t\tpreviousActiveElement.current = document.activeElement as HTMLElement;\n\t\t\t} else if (previousActiveElement.current) {\n\t\t\t\tpreviousActiveElement.current.focus();\n\t\t\t}\n\t\t}, [open]);\n\n\t\t// Set initial focus\n\t\tuseEffect(() => {\n\t\t\tif (!open || !initialFocus) return;\n\n\t\t\tconst focusElement = () => {\n\t\t\t\tif (typeof initialFocus === 'string') {\n\t\t\t\t\tconst element = dialogRef.current?.querySelector(initialFocus) as HTMLElement;\n\t\t\t\t\telement?.focus();\n\t\t\t\t} else if (initialFocus.current) {\n\t\t\t\t\tinitialFocus.current.focus();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Small delay to ensure dialog is rendered\n\t\t\tsetTimeout(focusElement, 10);\n\t\t}, [open, initialFocus]);\n\n\t\t// Focus trapping\n\t\tuseEffect(() => {\n\t\t\tif (!open || !trapFocus) return;\n\n\t\t\tconst handleTabKey = (event: KeyboardEvent) => {\n\t\t\t\tif (event.key !== 'Tab' || !dialogRef.current) return;\n\n\t\t\t\tconst focusableElements = dialogRef.current.querySelectorAll(\n\t\t\t\t\t'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n\t\t\t\t);\n\n\t\t\t\tconst firstElement = focusableElements[0] as HTMLElement;\n\t\t\t\tconst lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n\t\t\t\tif (event.shiftKey) {\n\t\t\t\t\t// Shift + Tab\n\t\t\t\t\tif (document.activeElement === firstElement) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tlastElement?.focus();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Tab\n\t\t\t\t\tif (document.activeElement === lastElement) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tfirstElement?.focus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdocument.addEventListener('keydown', handleTabKey);\n\t\t\treturn () => document.removeEventListener('keydown', handleTabKey);\n\t\t}, [open, trapFocus]);\n\n\t\t// Prevent body scroll when dialog is open\n\t\tuseEffect(() => {\n\t\t\tif (open) {\n\t\t\t\tdocument.body.style.overflow = 'hidden';\n\t\t\t} else {\n\t\t\t\tdocument.body.style.overflow = '';\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tdocument.body.style.overflow = '';\n\t\t\t};\n\t\t}, [open]);\n\n\t\t// Handle backdrop click\n\t\tconst handleBackdropClick = useCallback(\n\t\t\t(event: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (closeOnBackdropClick && event.target === event.currentTarget) {\n\t\t\t\t\tonClose?.();\n\t\t\t\t}\n\t\t\t},\n\t\t\t[closeOnBackdropClick, onClose]\n\t\t);\n\n\t\tif (!open) return null;\n\n\t\tconst backdropClassNames = [styles.backdrop, backdropClassName].filter(Boolean).join(' ');\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={backdropClassNames}\n\t\t\t\tonClick={handleBackdropClick}\n\t\t\t\trole=\"presentation\"\n\t\t\t\taria-modal=\"true\"\n\t\t\t>\n\t\t\t\t<div className={styles.dialogContainer} ref={dialogRef} role=\"dialog\" aria-modal=\"true\">\n\t\t\t\t\t<Window {...windowProps} ref={ref} active={true} onClose={onClose}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Window>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nDialog.displayName = 'Dialog';\n\nexport default Dialog;\n","// MenuBar component - Mac OS 9 style\n// Horizontal menu bar with dropdown menus, logo support, and status area\n\nimport React, { forwardRef, useRef, useState, useEffect, useCallback } from 'react';\nimport styles from './MenuBar.module.css';\n\nexport interface Menu {\n\t/**\n\t * Menu label (displayed in the menu bar)\n\t */\n\tlabel: string;\n\n\t/**\n\t * Menu type - determines behavior\n\t * @default 'dropdown'\n\t */\n\ttype?: 'dropdown' | 'link';\n\n\t/**\n\t * Menu items (content of the dropdown)\n\t * Required when type is 'dropdown'\n\t */\n\titems?: React.ReactNode;\n\n\t/**\n\t * Link href (for link-type menus)\n\t * Used when type is 'link'\n\t */\n\thref?: string;\n\n\t/**\n\t * Click handler (for link-type menus)\n\t * Used when type is 'link'\n\t */\n\tonClick?: () => void;\n\n\t/**\n\t * Whether the menu is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n}\n\nexport interface MenuBarProps {\n\t/**\n\t * Array of menus to display\n\t */\n\tmenus: Menu[];\n\n\t/**\n\t * Index of the currently open menu (controlled)\n\t */\n\topenMenuIndex?: number;\n\n\t/**\n\t * Callback when a menu is opened\n\t */\n\tonMenuOpen?: (index: number) => void;\n\n\t/**\n\t * Callback when menus are closed\n\t */\n\tonMenuClose?: () => void;\n\n\t/**\n\t * Custom class name for the menu bar\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Custom class name for menu dropdowns\n\t */\n\tdropdownClassName?: string;\n\n\t/**\n\t * Content to display on the left side (typically a logo)\n\t */\n\tleftContent?: React.ReactNode;\n\n\t/**\n\t * Content to display on the right side (status items, clock, etc.)\n\t * Can be a single element or array of elements\n\t */\n\trightContent?: React.ReactNode | React.ReactNode[];\n}\n\n/**\n * Mac OS 9 style MenuBar component\n * \n * Horizontal menu bar with dropdown menus, logo support, and status area.\n * \n * Features:\n * - Classic Mac OS 9 menu bar styling\n * - Horizontal menu layout\n * - Dropdown menus on click\n * - Link-type menu items for navigation\n * - Logo/icon support on the left\n * - Status area on the right (clock, system indicators, etc.)\n * - Keyboard navigation (Left/Right for menus, Up/Down for items)\n * - Click outside to close\n * - Escape key to close\n * - Controlled state (consumers manage open/closed)\n * - Disabled menu support\n * \n * @example\n * ```tsx\n * const [openMenu, setOpenMenu] = useState<number | undefined>();\n * \n * <MenuBar\n * leftContent={<img src=\"/logo.png\" alt=\"Logo\" width={16} height={16} />}\n * openMenuIndex={openMenu}\n * onMenuOpen={setOpenMenu}\n * onMenuClose={() => setOpenMenu(undefined)}\n * menus={[\n * {\n * label: 'File',\n * type: 'dropdown',\n * items: (\n * <>\n * <MenuItem label=\"Open...\" shortcut=\"⌘O\" onClick={() => {}} />\n * <MenuItem label=\"Save\" shortcut=\"⌘S\" onClick={() => {}} />\n * </>\n * ),\n * },\n * {\n * label: 'Home',\n * type: 'link',\n * href: '/',\n * },\n * ]}\n * rightContent={[\n * <Clock key=\"clock\" />,\n * <div key=\"divider\" className={styles.divider} />,\n * <SystemIndicator key=\"indicator\" />,\n * ]}\n * />\n * ```\n */\nexport const MenuBar = forwardRef<HTMLDivElement, MenuBarProps>(\n\t({ \n\t\tmenus, \n\t\topenMenuIndex, \n\t\tonMenuOpen, \n\t\tonMenuClose, \n\t\tclassName = '', \n\t\tdropdownClassName = '',\n\t\tleftContent,\n\t\trightContent,\n\t}, ref) => {\n\t\tconst [menuBarElement, setMenuBarElement] = useState<HTMLDivElement | null>(null);\n\t\tconst [focusedIndex, setFocusedIndex] = useState<number>(-1);\n\n\t\t// Handle click outside to close menu\n\t\tuseEffect(() => {\n\t\t\tif (openMenuIndex === undefined || !menuBarElement) return;\n\n\t\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\t\tif (menuBarElement && !menuBarElement.contains(event.target as Node)) {\n\t\t\t\t\tonMenuClose?.();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdocument.addEventListener('mousedown', handleClickOutside);\n\t\t\treturn () => document.removeEventListener('mousedown', handleClickOutside);\n\t\t}, [openMenuIndex, onMenuClose, menuBarElement]);\n\n\t\t// Handle Escape key to close menu\n\t\tuseEffect(() => {\n\t\t\tif (openMenuIndex === undefined) return;\n\n\t\t\tconst handleEscape = (event: KeyboardEvent) => {\n\t\t\t\tif (event.key === 'Escape') {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tonMenuClose?.();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdocument.addEventListener('keydown', handleEscape);\n\t\t\treturn () => document.removeEventListener('keydown', handleEscape);\n\t\t}, [openMenuIndex, onMenuClose]);\n\n\t\t// Handle keyboard navigation\n\t\tconst handleKeyDown = useCallback(\n\t\t\t(event: React.KeyboardEvent) => {\n\t\t\t\tswitch (event.key) {\n\t\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif (openMenuIndex !== undefined) {\n\t\t\t\t\t\t\t// Move to previous menu\n\t\t\t\t\t\t\tconst prevIndex = openMenuIndex > 0 ? openMenuIndex - 1 : menus.length - 1;\n\t\t\t\t\t\t\tif (!menus[prevIndex]?.disabled) {\n\t\t\t\t\t\t\t\tonMenuOpen?.(prevIndex);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (focusedIndex > 0) {\n\t\t\t\t\t\t\tsetFocusedIndex(focusedIndex - 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif (openMenuIndex !== undefined) {\n\t\t\t\t\t\t\t// Move to next menu\n\t\t\t\t\t\t\tconst nextIndex = openMenuIndex < menus.length - 1 ? openMenuIndex + 1 : 0;\n\t\t\t\t\t\t\tif (!menus[nextIndex]?.disabled) {\n\t\t\t\t\t\t\t\tonMenuOpen?.(nextIndex);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (focusedIndex < menus.length - 1) {\n\t\t\t\t\t\t\tsetFocusedIndex(focusedIndex + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif (openMenuIndex === undefined && focusedIndex >= 0) {\n\t\t\t\t\t\t\t// Open the focused menu (only if it's a dropdown)\n\t\t\t\t\t\t\tconst menu = menus[focusedIndex];\n\t\t\t\t\t\t\tif (!menu?.disabled && menu?.type !== 'link') {\n\t\t\t\t\t\t\t\tonMenuOpen?.(focusedIndex);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Enter':\n\t\t\t\t\tcase ' ':\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif (openMenuIndex === undefined && focusedIndex >= 0) {\n\t\t\t\t\t\t\tconst menu = menus[focusedIndex];\n\t\t\t\t\t\t\tif (!menu?.disabled) {\n\t\t\t\t\t\t\t\tif (menu.type === 'link') {\n\t\t\t\t\t\t\t\t\t// Trigger click handler for link-type menu\n\t\t\t\t\t\t\t\t\tmenu.onClick?.();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Open the focused dropdown menu\n\t\t\t\t\t\t\t\t\tonMenuOpen?.(focusedIndex);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\t[openMenuIndex, focusedIndex, menus, onMenuOpen, onMenuClose]\n\t\t);\n\n\t\t// Handle menu button click\n\t\tconst handleMenuClick = (index: number) => {\n\t\t\tconst menu = menus[index];\n\t\t\tif (menu?.disabled) return;\n\n\t\t\tif (menu.type === 'link') {\n\t\t\t\t// For link-type menus, trigger the onClick handler\n\t\t\t\tmenu.onClick?.();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (openMenuIndex === index) {\n\t\t\t\t// Clicking the same menu closes it\n\t\t\t\tonMenuClose?.();\n\t\t\t} else {\n\t\t\t\t// Open the clicked menu\n\t\t\t\tonMenuOpen?.(index);\n\t\t\t}\n\t\t};\n\n\t\t// Class names\n\t\tconst menuBarClassNames = [styles.menuBar, className].filter(Boolean).join(' ');\n\n\t\tconst dropdownClassNames = [styles.dropdown, dropdownClassName].filter(Boolean).join(' ');\n\n\t\t// Callback ref to handle both internal state and forwarded ref\n\t\tconst handleRef = useCallback(\n\t\t\t(node: HTMLDivElement | null) => {\n\t\t\t\tsetMenuBarElement(node);\n\t\t\t\tif (typeof ref === 'function') {\n\t\t\t\t\tref(node);\n\t\t\t\t} else if (ref) {\n\t\t\t\t\tref.current = node;\n\t\t\t\t}\n\t\t\t},\n\t\t\t[ref]\n\t\t);\n\n\t\treturn (\n\t\t\t<div ref={handleRef} className={menuBarClassNames} role=\"menubar\" onKeyDown={handleKeyDown}>\n\t\t\t\t{/* Left content (logo) */}\n\t\t\t\t{leftContent && (\n\t\t\t\t\t<div className={styles.leftContent}>\n\t\t\t\t\t\t{leftContent}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{/* Menu items */}\n\t\t\t\t<div className={styles.menusContainer}>\n\t\t\t\t\t{menus.map((menu, index) => {\n\t\t\t\t\t\tconst isOpen = openMenuIndex === index;\n\t\t\t\t\t\tconst isFocused = focusedIndex === index;\n\t\t\t\t\t\tconst isDropdown = menu.type !== 'link';\n\n\t\t\t\t\t\tconst menuButtonClassNames = [\n\t\t\t\t\t\t\tstyles.menuButton,\n\t\t\t\t\t\t\tisOpen ? styles['menuButton--open'] : '',\n\t\t\t\t\t\t\tmenu.disabled ? styles['menuButton--disabled'] : '',\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t.join(' ');\n\n\t\t\t\t\t\t// For link-type menus, render as anchor if href is provided\n\t\t\t\t\t\tif (menu.type === 'link' && menu.href) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={index} className={styles.menuContainer}>\n\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\thref={menu.href}\n\t\t\t\t\t\t\t\t\t\tclassName={menuButtonClassNames}\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\tif (menu.onClick) {\n\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\tmenu.onClick();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tonFocus={() => setFocusedIndex(index)}\n\t\t\t\t\t\t\t\t\t\tonBlur={() => setFocusedIndex(-1)}\n\t\t\t\t\t\t\t\t\t\taria-disabled={menu.disabled}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t\t\t\t\t{menu.label}\n\t\t\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Standard dropdown menu or link without href\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div key={index} className={styles.menuContainer}>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName={menuButtonClassNames}\n\t\t\t\t\t\t\t\t\tonClick={() => handleMenuClick(index)}\n\t\t\t\t\t\t\t\t\tonFocus={() => setFocusedIndex(index)}\n\t\t\t\t\t\t\t\t\tonBlur={() => setFocusedIndex(-1)}\n\t\t\t\t\t\t\t\t\tdisabled={menu.disabled}\n\t\t\t\t\t\t\t\t\taria-haspopup={isDropdown ? 'true' : undefined}\n\t\t\t\t\t\t\t\t\taria-expanded={isOpen}\n\t\t\t\t\t\t\t\t\taria-disabled={menu.disabled}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{menu.label}\n\t\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t\t\t{isOpen && isDropdown && menu.items && (\n\t\t\t\t\t\t\t\t\t<div className={dropdownClassNames} role=\"menu\">\n\t\t\t\t\t\t\t\t\t\t{menu.items}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\n\t\t\t\t{/* Right content (status area) */}\n\t\t\t\t{rightContent && (\n\t\t\t\t\t<div className={styles.rightContent}>\n\t\t\t\t\t\t{Array.isArray(rightContent) \n\t\t\t\t\t\t\t? rightContent.map((item, index) => (\n\t\t\t\t\t\t\t\t<React.Fragment key={index}>{item}</React.Fragment>\n\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t: rightContent\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nMenuBar.displayName = 'MenuBar';\n\nexport default MenuBar;","// MenuItem component - Mac OS 9 style\n// Individual menu item for use within MenuBar\n\nimport React, { forwardRef } from 'react';\nimport styles from './MenuItem.module.css';\n\nexport interface MenuItemProps {\n\t/**\n\t * Menu item label text\n\t */\n\tlabel: string;\n\n\t/**\n\t * Optional keyboard shortcut to display (e.g., \"⌘S\", \"Ctrl+O\")\n\t */\n\tshortcut?: string;\n\n\t/**\n\t * Whether the menu item is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Whether the menu item is selected/active\n\t * @default false\n\t */\n\tselected?: boolean;\n\n\t/**\n\t * Whether the menu item has a separator after it\n\t * @default false\n\t */\n\tseparator?: boolean;\n\n\t/**\n\t * Whether the menu item has a checkmark (for toggle items)\n\t * @default false\n\t */\n\tchecked?: boolean;\n\n\t/**\n\t * Optional icon to display before the label\n\t */\n\ticon?: React.ReactNode;\n\n\t/**\n\t * Callback when menu item is clicked\n\t */\n\tonClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n\n\t/**\n\t * Callback when menu item is focused\n\t */\n\tonFocus?: (event: React.FocusEvent<HTMLButtonElement>) => void;\n\n\t/**\n\t * Callback when menu item loses focus\n\t */\n\tonBlur?: (event: React.FocusEvent<HTMLButtonElement>) => void;\n\n\t/**\n\t * Custom class name for the menu item\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Whether the item has a submenu indicator (arrow)\n\t * @default false\n\t */\n\thasSubmenu?: boolean;\n}\n\n/**\n * Mac OS 9 style MenuItem component\n * \n * Individual menu item for use within MenuBar or dropdown menus.\n * \n * Features:\n * - Classic Mac OS 9 menu item styling\n * - Disabled state support\n * - Keyboard shortcut display\n * - Checkmark support for toggle items\n * - Separator support\n * - Selected/active state\n * - Icon support\n * - Submenu indicator\n * - Full keyboard and mouse support\n * \n * @example\n * ```tsx\n * // Basic menu item\n * <MenuItem label=\"Open...\" onClick={() => console.log('Open')} />\n * \n * // With keyboard shortcut\n * <MenuItem label=\"Save\" shortcut=\"⌘S\" onClick={() => console.log('Save')} />\n * \n * // Disabled item\n * <MenuItem label=\"Undo\" disabled />\n * \n * // Checked item (toggle)\n * <MenuItem label=\"Show Grid\" checked onClick={() => console.log('Toggle')} />\n * \n * // With separator\n * <MenuItem label=\"Preferences...\" separator onClick={() => console.log('Prefs')} />\n * \n * // With submenu indicator\n * <MenuItem label=\"Recent Files\" hasSubmenu />\n * ```\n */\nexport const MenuItem = forwardRef<HTMLButtonElement, MenuItemProps>(\n\t(\n\t\t{\n\t\t\tlabel,\n\t\t\tshortcut,\n\t\t\tdisabled = false,\n\t\t\tselected = false,\n\t\t\tseparator = false,\n\t\t\tchecked = false,\n\t\t\ticon,\n\t\t\tonClick,\n\t\t\tonFocus,\n\t\t\tonBlur,\n\t\t\tclassName = '',\n\t\t\thasSubmenu = false,\n\t\t},\n\t\tref\n\t) => {\n\t\t// Class names\n\t\tconst menuItemClassNames = [\n\t\t\tstyles.menuItem,\n\t\t\tselected ? styles['menuItem--selected'] : '',\n\t\t\tdisabled ? styles['menuItem--disabled'] : '',\n\t\t\tseparator ? styles['menuItem--separator'] : '',\n\t\t\tclassName,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\t// Handle click\n\t\tconst handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\tif (disabled) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonClick?.(event);\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<button\n\t\t\t\t\tref={ref}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={menuItemClassNames}\n\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\tonFocus={onFocus}\n\t\t\t\t\tonBlur={onBlur}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\taria-disabled={disabled}\n\t\t\t\t\taria-checked={checked ? 'true' : undefined}\n\t\t\t\t>\n\t\t\t\t\t{/* Checkmark area */}\n\t\t\t\t\t<span className={styles.checkmark}>{checked && '✓'}</span>\n\n\t\t\t\t\t{/* Icon area */}\n\t\t\t\t\t{icon && <span className={styles.icon}>{icon}</span>}\n\n\t\t\t\t\t{/* Label */}\n\t\t\t\t\t<span className={styles.label}>{label}</span>\n\n\t\t\t\t\t{/* Shortcut */}\n\t\t\t\t\t{shortcut && <span className={styles.shortcut}>{shortcut}</span>}\n\n\t\t\t\t\t{/* Submenu indicator */}\n\t\t\t\t\t{hasSubmenu && <span className={styles.submenuArrow}>▶</span>}\n\t\t\t\t</button>\n\n\t\t\t\t{/* Separator line if needed */}\n\t\t\t\t{separator && <div className={styles.separatorLine} role=\"separator\" />}\n\t\t\t</>\n\t\t);\n\t}\n);\n\nMenuItem.displayName = 'MenuItem';\n\nexport default MenuItem;","// Scrollbar component - Mac OS 9 style\n// Classic scrollbar with arrows and draggable thumb\n\n'use client';\n\nimport React, { forwardRef, useRef, useState, useEffect, useCallback } from 'react';\nimport styles from './Scrollbar.module.css';\n\nexport interface ScrollbarProps {\n\t/**\n\t * Scrollbar orientation\n\t * @default 'vertical'\n\t */\n\torientation?: 'vertical' | 'horizontal';\n\n\t/**\n\t * Current scroll position (0-1)\n\t */\n\tvalue?: number;\n\n\t/**\n\t * Viewport size relative to content size (0-1)\n\t * Used to calculate thumb size\n\t */\n\tviewportRatio?: number;\n\n\t/**\n\t * Callback when scroll position changes\n\t */\n\tonChange?: (value: number) => void;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Whether scrollbar is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n}\n\n/**\n * Mac OS 9 style Scrollbar component\n * \n * Classic scrollbar with arrow buttons and draggable thumb.\n * Can be used standalone or integrated with scrollable content.\n * \n * @example\n * ```tsx\n * <Scrollbar\n * orientation=\"vertical\"\n * value={0.5}\n * viewportRatio={0.3}\n * onChange={(value) => console.log('Scroll position:', value)}\n * />\n * ```\n */\nexport const Scrollbar = forwardRef<HTMLDivElement, ScrollbarProps>(\n\t(\n\t\t{\n\t\t\torientation = 'vertical',\n\t\t\tvalue = 0,\n\t\t\tviewportRatio = 0.2,\n\t\t\tonChange,\n\t\t\tclassName = '',\n\t\t\tdisabled = false,\n\t\t},\n\t\tref\n\t) => {\n\t\tconst trackRef = useRef<HTMLDivElement>(null);\n\t\tconst [isDragging, setIsDragging] = useState(false);\n\t\tconst [dragStartPos, setDragStartPos] = useState(0);\n\t\tconst [dragStartValue, setDragStartValue] = useState(0);\n\n\t\tconst isVertical = orientation === 'vertical';\n\n\t\t// Calculate thumb size based on viewport ratio\n\t\tconst thumbSize = Math.max(viewportRatio * 100, 10); // Minimum 10% size\n\n\t\t// Calculate thumb position\n\t\tconst maxThumbPos = 100 - thumbSize;\n\t\tconst thumbPos = value * maxThumbPos;\n\n\t\t// Class names\n\t\tconst classNames = [\n\t\t\tstyles.scrollbar,\n\t\t\tstyles[`scrollbar--${orientation}`],\n\t\t\tdisabled && styles['scrollbar--disabled'],\n\t\t\tclassName,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\t// Handle arrow clicks\n\t\tconst handleDecrement = useCallback(() => {\n\t\t\tif (disabled || !onChange) return;\n\t\t\tconst newValue = Math.max(0, value - 0.1);\n\t\t\tonChange(newValue);\n\t\t}, [disabled, onChange, value]);\n\n\t\tconst handleIncrement = useCallback(() => {\n\t\t\tif (disabled || !onChange) return;\n\t\t\tconst newValue = Math.min(1, value + 0.1);\n\t\t\tonChange(newValue);\n\t\t}, [disabled, onChange, value]);\n\n\t\t// Handle track clicks\n\t\tconst handleTrackClick = useCallback(\n\t\t\t(event: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (disabled || !onChange || !trackRef.current) return;\n\n\t\t\t\tconst rect = trackRef.current.getBoundingClientRect();\n\t\t\t\tconst clickPos = isVertical\n\t\t\t\t\t? event.clientY - rect.top\n\t\t\t\t\t: event.clientX - rect.left;\n\t\t\t\tconst trackSize = isVertical ? rect.height : rect.width;\n\n\t\t\t\t// Convert click position to scroll value (0-1)\n\t\t\t\tconst clickRatio = clickPos / trackSize;\n\t\t\t\tconst newValue = Math.max(0, Math.min(1, clickRatio));\n\t\t\t\tonChange(newValue);\n\t\t\t},\n\t\t\t[disabled, onChange, isVertical]\n\t\t);\n\n\t\t// Handle thumb drag start\n\t\tconst handleThumbMouseDown = useCallback(\n\t\t\t(event: React.MouseEvent) => {\n\t\t\t\tif (disabled) return;\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tsetIsDragging(true);\n\t\t\t\tsetDragStartPos(isVertical ? event.clientY : event.clientX);\n\t\t\t\tsetDragStartValue(value);\n\t\t\t},\n\t\t\t[disabled, isVertical, value]\n\t\t);\n\n\t\t// Handle drag move\n\t\tuseEffect(() => {\n\t\t\tif (!isDragging || !onChange || !trackRef.current) return;\n\n\t\t\tconst handleMouseMove = (event: MouseEvent) => {\n\t\t\t\tconst currentPos = isVertical ? event.clientY : event.clientX;\n\t\t\t\tconst delta = currentPos - dragStartPos;\n\n\t\t\t\tconst rect = trackRef.current!.getBoundingClientRect();\n\t\t\t\tconst trackSize = isVertical ? rect.height : rect.width;\n\t\t\t\tconst deltaRatio = delta / trackSize;\n\n\t\t\t\tconst newValue = Math.max(0, Math.min(1, dragStartValue + deltaRatio));\n\t\t\t\tonChange(newValue);\n\t\t\t};\n\n\t\t\tconst handleMouseUp = () => {\n\t\t\t\tsetIsDragging(false);\n\t\t\t};\n\n\t\t\tdocument.addEventListener('mousemove', handleMouseMove);\n\t\t\tdocument.addEventListener('mouseup', handleMouseUp);\n\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener('mousemove', handleMouseMove);\n\t\t\t\tdocument.removeEventListener('mouseup', handleMouseUp);\n\t\t\t};\n\t\t}, [isDragging, dragStartPos, dragStartValue, onChange, isVertical]);\n\n\t\treturn (\n\t\t\t<div ref={ref} className={classNames}>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={`${styles.arrow} ${styles['arrow--start']}`}\n\t\t\t\t\tonClick={handleDecrement}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\taria-label={isVertical ? 'Scroll up' : 'Scroll left'}\n\t\t\t\t>\n\t\t\t\t\t<div className={styles.arrowIcon} />\n\t\t\t\t</button>\n\n\t\t\t\t<div\n\t\t\t\t\tref={trackRef}\n\t\t\t\t\tclassName={styles.track}\n\t\t\t\t\tonClick={handleTrackClick}\n\t\t\t\t\trole=\"scrollbar\"\n\t\t\t\t\taria-valuenow={Math.round(value * 100)}\n\t\t\t\t\taria-valuemin={0}\n\t\t\t\t\taria-valuemax={100}\n\t\t\t\t\taria-orientation={orientation}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={styles.thumb}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t[isVertical ? 'height' : 'width']: `${thumbSize}%`,\n\t\t\t\t\t\t\t[isVertical ? 'top' : 'left']: `${thumbPos}%`,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonMouseDown={handleThumbMouseDown}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={`${styles.arrow} ${styles['arrow--end']}`}\n\t\t\t\t\tonClick={handleIncrement}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\taria-label={isVertical ? 'Scroll down' : 'Scroll right'}\n\t\t\t\t>\n\t\t\t\t\t<div className={styles.arrowIcon} />\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nScrollbar.displayName = 'Scrollbar';\n\nexport default Scrollbar;\n","// ListView component - Mac OS 9 style multi-column list\n// List view with sortable columns and row selection\n\n'use client';\n\nimport React, { forwardRef, useState, useCallback } from 'react';\nimport styles from './ListView.module.css';\n\nexport interface ListColumn {\n\t/**\n\t * Column key/identifier\n\t */\n\tkey: string;\n\n\t/**\n\t * Column header label\n\t */\n\tlabel: string;\n\n\t/**\n\t * Column width (px or percentage)\n\t * @default 'auto'\n\t */\n\twidth?: number | string;\n\n\t/**\n\t * Whether column is sortable\n\t * @default true\n\t */\n\tsortable?: boolean;\n}\n\nexport interface ListItem {\n\t/**\n\t * Unique item ID\n\t */\n\tid: string;\n\n\t/**\n\t * Item data - keys should match column keys\n\t */\n\t[key: string]: any;\n\n\t/**\n\t * Optional icon to display\n\t */\n\ticon?: React.ReactNode;\n}\n\nexport interface ListViewProps {\n\t/**\n\t * Column definitions\n\t */\n\tcolumns: ListColumn[];\n\n\t/**\n\t * List items\n\t */\n\titems: ListItem[];\n\n\t/**\n\t * Selected item IDs\n\t */\n\tselectedIds?: string[];\n\n\t/**\n\t * Callback when selection changes\n\t */\n\tonSelectionChange?: (selectedIds: string[]) => void;\n\n\t/**\n\t * Callback when item is double-clicked\n\t */\n\tonItemOpen?: (item: ListItem) => void;\n\n\t/**\n\t * Callback when mouse enters an item\n\t */\n\tonItemMouseEnter?: (item: ListItem) => void;\n\n\t/**\n\t * Callback when column is clicked for sorting\n\t */\n\tonSort?: (columnKey: string, direction: 'asc' | 'desc') => void;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Height of the list view\n\t */\n\theight?: number | string;\n}\n\n/**\n * Mac OS 9 style ListView component\n * \n * Multi-column list with sortable headers and row selection.\n * Similar to Finder list view.\n * \n * @example\n * ```tsx\n * <ListView\n * columns={[\n * { key: 'name', label: 'Name' },\n * { key: 'modified', label: 'Date Modified' },\n * { key: 'size', label: 'Size' }\n * ]}\n * items={[\n * { id: '1', name: 'Document.txt', modified: 'Today', size: '2 KB' },\n * { id: '2', name: 'Images', modified: 'Yesterday', size: '--' }\n * ]}\n * selectedIds={['1']}\n * onSelectionChange={(ids) => console.log('Selected:', ids)}\n * onItemMouseEnter={(item) => console.log('Hovering:', item.name)}\n * />\n * ```\n */\nexport const ListView = forwardRef<HTMLDivElement, ListViewProps>(\n\t(\n\t\t{\n\t\t\tcolumns,\n\t\t\titems,\n\t\t\tselectedIds = [],\n\t\t\tonSelectionChange,\n\t\t\tonItemOpen,\n\t\t\tonItemMouseEnter,\n\t\t\tonSort,\n\t\t\tclassName = '',\n\t\t\theight = 'auto',\n\t\t},\n\t\tref\n\t) => {\n\t\tconst [sortColumn, setSortColumn] = useState<string | null>(null);\n\t\tconst [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc');\n\n\t\t// Class names\n\t\tconst classNames = [styles.listView, className].filter(Boolean).join(' ');\n\n\t\t// Handle column header click\n\t\tconst handleColumnClick = useCallback(\n\t\t\t(columnKey: string, sortable: boolean = true) => {\n\t\t\t\tif (!sortable || !onSort) return;\n\n\t\t\t\tconst newDirection =\n\t\t\t\t\tsortColumn === columnKey && sortDirection === 'asc' ? 'desc' : 'asc';\n\t\t\t\tsetSortColumn(columnKey);\n\t\t\t\tsetSortDirection(newDirection);\n\t\t\t\tonSort(columnKey, newDirection);\n\t\t\t},\n\t\t\t[sortColumn, sortDirection, onSort]\n\t\t);\n\n\t\t// Handle row click\n\t\tconst handleRowClick = useCallback(\n\t\t\t(itemId: string, event: React.MouseEvent) => {\n\t\t\t\tif (!onSelectionChange) return;\n\n\t\t\t\tif (event.metaKey || event.ctrlKey) {\n\t\t\t\t\t// Multi-select with Cmd/Ctrl\n\t\t\t\t\tif (selectedIds.includes(itemId)) {\n\t\t\t\t\t\tonSelectionChange(selectedIds.filter((id) => id !== itemId));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonSelectionChange([...selectedIds, itemId]);\n\t\t\t\t\t}\n\t\t\t\t} else if (event.shiftKey && selectedIds.length > 0) {\n\t\t\t\t\t// Range select with Shift\n\t\t\t\t\tconst lastSelectedId = selectedIds[selectedIds.length - 1];\n\t\t\t\t\tconst lastIndex = items.findIndex((item) => item.id === lastSelectedId);\n\t\t\t\t\tconst currentIndex = items.findIndex((item) => item.id === itemId);\n\n\t\t\t\t\tconst start = Math.min(lastIndex, currentIndex);\n\t\t\t\t\tconst end = Math.max(lastIndex, currentIndex);\n\t\t\t\t\tconst rangeIds = items.slice(start, end + 1).map((item) => item.id);\n\n\t\t\t\t\tonSelectionChange(rangeIds);\n\t\t\t\t} else {\n\t\t\t\t\t// Single select\n\t\t\t\t\tonSelectionChange([itemId]);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[selectedIds, items, onSelectionChange]\n\t\t);\n\n\t\t// Handle row double-click\n\t\tconst handleRowDoubleClick = useCallback(\n\t\t\t(item: ListItem) => {\n\t\t\t\tif (onItemOpen) {\n\t\t\t\t\tonItemOpen(item);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[onItemOpen]\n\t\t);\n\n\t\t// Handle row mouse enter\n\t\tconst handleRowMouseEnter = useCallback(\n\t\t\t(item: ListItem) => {\n\t\t\t\tif (onItemMouseEnter) {\n\t\t\t\t\tonItemMouseEnter(item);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[onItemMouseEnter]\n\t\t);\n\n\t\t// Container style\n\t\tconst containerStyle: React.CSSProperties = {};\n\t\tif (height !== 'auto') {\n\t\t\tcontainerStyle.height = typeof height === 'number' ? `${height}px` : height;\n\t\t}\n\n\t\treturn (\n\t\t\t<div ref={ref} className={classNames} style={containerStyle}>\n\t\t\t\t{/* Column headers */}\n\t\t\t\t<div className={styles.header}>\n\t\t\t\t\t{columns.map((column) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={column.key}\n\t\t\t\t\t\t\tclassName={`${styles.headerCell} ${\n\t\t\t\t\t\t\t\tcolumn.sortable !== false ? styles.sortable : ''\n\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twidth:\n\t\t\t\t\t\t\t\t\ttypeof column.width === 'number'\n\t\t\t\t\t\t\t\t\t\t? `${column.width}px`\n\t\t\t\t\t\t\t\t\t\t: column.width,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={() => handleColumnClick(column.key, column.sortable)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{column.label}\n\t\t\t\t\t\t\t{sortColumn === column.key && (\n\t\t\t\t\t\t\t\t<span className={styles.sortIndicator}>\n\t\t\t\t\t\t\t\t\t{sortDirection === 'asc' ? '▲' : '▼'}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\n\t\t\t\t{/* List items */}\n\t\t\t\t<div className={styles.body}>\n\t\t\t\t\t{items.map((item) => {\n\t\t\t\t\t\tconst isSelected = selectedIds.includes(item.id);\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\tclassName={`${styles.row} ${isSelected ? styles.selected : ''}`}\n\t\t\t\t\t\t\t\tonClick={(e) => handleRowClick(item.id, e)}\n\t\t\t\t\t\t\t\tonDoubleClick={() => handleRowDoubleClick(item)}\n\t\t\t\t\t\t\t\tonMouseEnter={() => handleRowMouseEnter(item)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{columns.map((column, index) => (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tkey={column.key}\n\t\t\t\t\t\t\t\t\t\tclassName={styles.cell}\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\twidth:\n\t\t\t\t\t\t\t\t\t\t\t\ttypeof column.width === 'number'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? `${column.width}px`\n\t\t\t\t\t\t\t\t\t\t\t\t\t: column.width,\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{index === 0 && item.icon && (\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.icon}>{item.icon}</span>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{item[column.key]}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nListView.displayName = 'ListView';\n\nexport default ListView;\n","// FolderList component - Mac OS 9 style folder/file list window\n// Window component with integrated ListView for file browsing\n\n'use client';\n\nimport React, { forwardRef, useState } from 'react';\nimport { Window, WindowProps } from '../Window/Window';\nimport { ListView, ListColumn, ListItem } from '../ListView/ListView';\nimport styles from './FolderList.module.css';\n\nexport interface FolderListProps extends Omit<WindowProps, 'children'> {\n\t/**\n\t * Column definitions for the list\n\t * @default [{ key: 'name', label: 'Name' }, { key: 'modified', label: 'Date Modified' }, { key: 'size', label: 'Size' }]\n\t */\n\tcolumns?: ListColumn[];\n\n\t/**\n\t * Items to display in the list\n\t */\n\titems: ListItem[];\n\n\t/**\n\t * Selected item IDs\n\t */\n\tselectedIds?: string[];\n\n\t/**\n\t * Callback when selection changes\n\t */\n\tonSelectionChange?: (selectedIds: string[]) => void;\n\n\t/**\n\t * Callback when item is double-clicked (opened)\n\t */\n\tonItemOpen?: (item: ListItem) => void;\n\n\t/**\n\t * Callback when mouse enters an item\n\t */\n\tonItemMouseEnter?: (item: ListItem) => void;\n\n\t/**\n\t * Callback when column header is clicked for sorting\n\t */\n\tonSort?: (columnKey: string, direction: 'asc' | 'desc') => void;\n\n\t/**\n\t * Callback when mouse enters the folder list window\n\t */\n\tonMouseEnter?: (event: React.MouseEvent<HTMLDivElement>) => void;\n\n\t/**\n\t * Height of the list view area\n\t * @default 400\n\t */\n\tlistHeight?: number | string;\n}\n\n/**\n * Mac OS 9 style FolderList component\n * \n * Window with integrated ListView for browsing files and folders.\n * Similar to Finder list view in Mac OS 9.\n * \n * @example\n * ```tsx\n * <FolderList\n * title=\"My Documents\"\n * items={[\n * { id: '1', name: 'Document.txt', modified: 'Today', size: '2 KB', icon: <FileIcon /> },\n * { id: '2', name: 'Images', modified: 'Yesterday', size: '--', icon: <FolderIcon /> }\n * ]}\n * selectedIds={['1']}\n * onSelectionChange={(ids) => console.log('Selected:', ids)}\n * onItemOpen={(item) => console.log('Open:', item.name)}\n * onItemMouseEnter={(item) => console.log('Hovering:', item.name)}\n * onMouseEnter={(e) => console.log('Mouse entered folder list')}\n * />\n * ```\n */\nexport const FolderList = forwardRef<HTMLDivElement, FolderListProps>(\n\t(\n\t\t{\n\t\t\tcolumns = [\n\t\t\t\t{ key: 'name', label: 'Name', width: '40%' },\n\t\t\t\t{ key: 'modified', label: 'Date Modified', width: '30%' },\n\t\t\t\t{ key: 'size', label: 'Size', width: '30%' },\n\t\t\t],\n\t\t\titems,\n\t\t\tselectedIds,\n\t\t\tonSelectionChange,\n\t\t\tonItemOpen,\n\t\t\tonItemMouseEnter,\n\t\t\tonSort,\n\t\t\tonMouseEnter,\n\t\t\tlistHeight = 400,\n\t\t\t...windowProps\n\t\t},\n\t\tref\n\t) => {\n\t\t// Window content with ListView\n\t\treturn (\n\t\t\t<Window \n\t\t\t\tref={ref} \n\t\t\t\tcontentClassName={styles.folderListContent} \n\t\t\t\tonMouseEnter={onMouseEnter}\n\t\t\t\t{...windowProps}\n\t\t\t>\n\t\t\t\t<ListView\n\t\t\t\t\tcolumns={columns}\n\t\t\t\t\titems={items}\n\t\t\t\t\tselectedIds={selectedIds}\n\t\t\t\t\tonSelectionChange={onSelectionChange}\n\t\t\t\t\tonItemOpen={onItemOpen}\n\t\t\t\t\tonItemMouseEnter={onItemMouseEnter}\n\t\t\t\t\tonSort={onSort}\n\t\t\t\t\theight={listHeight}\n\t\t\t\t\tclassName={styles.listView}\n\t\t\t\t/>\n\t\t\t</Window>\n\t\t);\n\t}\n);\n\nFolderList.displayName = 'FolderList';\n\nexport default FolderList;\n","// Mac OS 9 Design Tokens\n// Extracted from Figma file: vy2T5MCXFz7QWf4Ba86eqN\n// Reference: docs/figma-map.md\n\n/**\n * Color tokens based on Mac OS 9 grayscale palette\n * Extracted from Figma styles and component analysis\n */\nexport const colors = {\n\t// Grayscale palette (Figma style IDs included for reference)\n\tgray100: '#FFFFFF', // 18:47 - White\n\tgray200: '#EEEEEE', // 19:2507 - Base UI background\n\tgray300: '#DDDDDD', // 18:60 - Inferred mid-tone\n\tgray400: '#CCCCCC', // 18:1970 - Inferred mid-tone\n\tgray500: '#999999', // 20:7306 - Inferred mid-tone\n\tgray600: '#666666', // 18:52 - Inferred dark tone\n\tgray700: '#4D4D4D', // 18:46 - Inferred dark tone\n\tgray800: '#333333', // 45:184845 - Inferred very dark\n\tgray900: '#262626', // 18:48 - Black (strokes, borders, text)\n\n\t// Accent colors\n\tlavender: '#CCCCFF', // 60:134029 - Cover background\n\tazul: '#0066CC', // 49:36229 - Accent (inferred)\n\tlinkRed: '#CC0000', // 102:398, 102:3935 - Link color (inferred)\n\n\t// Semantic mappings\n\tbackground: '#EEEEEE', // Gray 200\n\tforeground: '#262626', // Gray 900\n\tborder: '#262626', // Gray 900\n\ttext: '#262626', // Gray 900\n\ttextInverse: '#FFFFFF', // Gray 100\n\tsurface: '#EEEEEE', // Gray 200\n\tsurfaceInset: '#FFFFFF', // Gray 100 (for inset areas)\n\n\t// Legacy names for compatibility\n\tblack: '#262626',\n\twhite: '#FFFFFF',\n\n\t// Status colors (Mac OS 9 style)\n\tfocus: '#000080',\n\terror: '#CC0000',\n\tsuccess: '#008000',\n\twarning: '#FF8C00',\n} as const;\n\n/**\n * Typography tokens\n * Based on Figma text styles and authentic Mac OS 9 system fonts\n * \n * Mac OS 9 Typography:\n * - Charcoal: Primary system UI font (menus, buttons, dialogs)\n * - Geneva: Body text and secondary UI elements\n * - Chicago: Classic Mac system font (menu bar, earlier versions)\n * - Apple Garamond: Headlines and editorial content\n */\nexport const typography = {\n\tfontFamily: {\n\t\t// Charcoal - Primary system UI font used throughout Mac OS 9\n\t\t// Fallback chain: Try Charcoal variants, then Chicago, then modern system fonts\n\t\tsystem: 'Charcoal, \"Charcoal CY\", Chicago, \"Chicago Classic\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif',\n\t\t\n\t\t// Geneva - Used for dialog text and body content in Mac OS 9\n\t\t// More readable for longer text than Charcoal\n\t\tbody: 'Geneva, \"Geneva CY\", \"Lucida Grande\", \"Lucida Sans Unicode\", sans-serif',\n\t\t\n\t\t// Apple Garamond Light - Used for headlines in Figma\n\t\tdisplay: '\"Apple Garamond Light\", \"Apple Garamond\", Garamond, Georgia, serif',\n\t\t\n\t\t// Chicago - Classic Mac OS system font (menu bar, classic UI)\n\t\tchicago: 'Chicago, \"Chicago Classic\", \"Charcoal CY\", Charcoal, monospace',\n\t\t\n\t\t// Monaco - Mac OS 9 monospace font\n\t\tmono: 'Monaco, \"Monaco CY\", \"SF Mono\", \"Courier New\", Courier, monospace',\n\t},\n\tfontSize: {\n\t\txs: '9px', // Smallest UI text (9pt Chicago/Charcoal)\n\t\tsm: '10px', // Small labels (10pt)\n\t\tmd: '12px', // Standard UI text - Mac OS 9 default (12pt)\n\t\tlg: '13px', // Slightly larger UI text\n\t\txl: '14px', // Large UI text\n\t\t'2xl': '16px', // Headings\n\t\t'3xl': '18px', // Large headings\n\t\t'4xl': '20px', // Major headings\n\t\t'5xl': '24px', // Display text\n\t},\n\tfontWeight: {\n\t\tnormal: 700, // Charcoal Bold is the Mac OS 9 default\n\t\tmedium: 700, // Medium (same as bold for Charcoal)\n\t\tsemibold: 700, // Semibold (same as bold)\n\t\tbold: 700, // Bold weight\n\t\tlight: 400, // Light weight (regular Charcoal)\n\t},\n\tlineHeight: {\n\t\ttight: 1.2, // Tight leading (Mac OS 9 style)\n\t\tsnug: 1.3, // Snug\n\t\tnormal: 1.4, // Normal (Mac OS 9 used tighter line heights)\n\t\trelaxed: 1.5, // Relaxed\n\t\tloose: 1.6, // Loose\n\t},\n\tletterSpacing: {\n\t\ttighter: '-0.02em', // Slightly tighter\n\t\ttight: '-0.01em', // Tight\n\t\tnormal: '0', // Normal - Mac OS 9 default\n\t\twide: '0.01em', // Wide\n\t\twider: '0.02em', // Wider\n\t},\n} as const;\n\n/**\n * Spacing tokens based on Mac OS 9 measurements\n * Mac OS 9 used tight spacing; using 2px as base unit\n */\nexport const spacing = {\n\t'0': '0',\n\tpx: '1px',\n\t'0.5': '2px', // Minimal spacing\n\t'1': '4px', // Base grid unit\n\t'1.5': '6px',\n\t'2': '8px',\n\t'2.5': '10px',\n\t'3': '12px',\n\t'4': '16px',\n\t'5': '20px',\n\t'6': '24px',\n\t'8': '32px',\n\t'10': '40px',\n\t'12': '48px',\n\t'16': '64px',\n\n\t// Legacy names\n\txs: '2px',\n\tsm: '4px',\n\tmd: '8px',\n\tlg: '12px',\n\txl: '16px',\n\t'2xl': '24px',\n\t'3xl': '32px',\n} as const;\n\n/**\n * Shadow tokens for Mac OS 9 bevel effects\n * Exact values from Figma Window Shadow effect (67:95038)\n * \n * Classic 3-layer bevel:\n * 1. Hard drop shadow (2px, 2px, 0 blur) - creates depth\n * 2. Top-left highlight (light inner shadow)\n * 3. Bottom-right shadow (dark inner shadow)\n */\nexport const shadows = {\n\t// Standard raised bevel (default button state)\n\tbevel:\n\t\t'inset 2px 2px 0 rgba(255, 255, 255, 0.6), inset -2px -2px 0 rgba(38, 38, 38, 0.4), 2px 2px 0 rgba(38, 38, 38, 1)',\n\n\t// Inverted bevel for pressed/inset states\n\tinset:\n\t\t'inset -2px -2px 0 rgba(255, 255, 255, 0.6), inset 2px 2px 0 rgba(38, 38, 38, 0.4), 2px 2px 0 rgba(38, 38, 38, 1)',\n\n\t// Individual layers for custom composition\n\tdropShadow: '2px 2px 0 rgba(38, 38, 38, 1)',\n\tinnerHighlight: 'inset 2px 2px 0 rgba(255, 255, 255, 0.6)',\n\tinnerShadow: 'inset -2px -2px 0 rgba(38, 38, 38, 0.4)',\n\n\t// Legacy format for compatibility\n\traised: {\n\t\thighlight: 'inset 2px 2px 0 rgba(255, 255, 255, 0.6)',\n\t\tshadow: 'inset -2px -2px 0 rgba(38, 38, 38, 0.4)',\n\t\tfull: 'inset 2px 2px 0 rgba(255, 255, 255, 0.6), inset -2px -2px 0 rgba(38, 38, 38, 0.4), 2px 2px 0 rgba(38, 38, 38, 1)',\n\t},\n\n\t// No shadow (flat)\n\tnone: 'none',\n} as const;\n\n/**\n * Border tokens\n * Mac OS 9 used consistent 1px borders with sharp corners\n */\nexport const borders = {\n\twidth: {\n\t\tnone: '0',\n\t\tthin: '1px',\n\t\tmedium: '2px',\n\t\tthick: '3px',\n\t},\n\tstyle: {\n\t\tsolid: 'solid',\n\t\tdashed: 'dashed',\n\t\tdotted: 'dotted',\n\t\tnone: 'none',\n\t},\n\tradius: {\n\t\tnone: '0', // Mac OS 9 always used square corners\n\t\tsm: '0', // Kept for API consistency\n\t\tmd: '0',\n\t\tlg: '0',\n\t\tfull: '0',\n\t},\n} as const;\n\n/**\n * Z-index scale for layering\n */\nexport const zIndex = {\n\tbase: 0,\n\tdropdown: 1000,\n\tsticky: 1100,\n\tmodal: 1200,\n\tpopover: 1300,\n\ttooltip: 1400,\n} as const;\n\n/**\n * Transition/Animation tokens\n * Mac OS 9 had minimal animations, but we add subtle ones for modern feel\n */\nexport const transitions = {\n\tduration: {\n\t\tinstant: '0ms',\n\t\tfast: '100ms',\n\t\tnormal: '200ms',\n\t\tslow: '300ms',\n\t},\n\ttiming: {\n\t\tlinear: 'linear',\n\t\teaseIn: 'cubic-bezier(0.4, 0, 1, 1)',\n\t\teaseOut: 'cubic-bezier(0, 0, 0.2, 1)',\n\t\teaseInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n\t},\n} as const;\n\n// Export all tokens as a single object\nexport const tokens = {\n\tcolors,\n\ttypography,\n\tspacing,\n\tborders,\n\tshadows,\n\tzIndex,\n\ttransitions,\n} as const;\n\nexport default tokens;"],"names":["forwardRef","styles","_jsx","_jsxs","_Fragment","useState","Children","isValidElement","useCallback","useRef","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/components/Button/Button.tsx","../src/components/Icon/Icon.tsx","../src/components/Icon/categories/ui.tsx","../src/components/Icon/registry.ts","../src/components/Icon/IconLibrary.tsx","../src/components/IconButton/IconButton.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Radio/Radio.tsx","../src/components/TextField/TextField.tsx","../src/components/Select/Select.tsx","../src/components/Tabs/Tabs.tsx","../src/utils/classNames.ts","../src/components/Window/Window.tsx","../src/components/Dialog/Dialog.tsx","../src/components/MenuBar/MenuBar.tsx","../src/components/MenuBar/MenuItem.tsx","../src/components/MenuBar/MenuDropdown.tsx","../src/components/Scrollbar/Scrollbar.tsx","../src/components/ListView/ListView.tsx","../src/components/FolderList/FolderList.tsx","../src/tokens/index.ts"],"sourcesContent":["// Button component - Mac OS 9 style\n// Enhanced with polymorphic support, loading states, and icon support\n\nimport React, { forwardRef, ButtonHTMLAttributes, AnchorHTMLAttributes } from 'react';\nimport styles from './Button.module.css';\n\n// Common props shared by button and link variants\ninterface BaseButtonProps {\n\t/**\n\t * Button variant\n\t * @default 'default'\n\t */\n\tvariant?: 'default' | 'primary' | 'danger';\n\n\t/**\n\t * Button size\n\t * @default 'md'\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\n\t/**\n\t * Whether the button is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Whether the button should take full width\n\t * @default false\n\t */\n\tfullWidth?: boolean;\n\n\t/**\n\t * Loading state - shows loading indicator and disables interaction\n\t * @default false\n\t */\n\tloading?: boolean;\n\n\t/**\n\t * Text to show when loading (replaces children)\n\t */\n\tloadingText?: string;\n\n\t/**\n\t * Use Mac OS 9 style watch cursor during loading\n\t * @default false\n\t */\n\tuseCursorLoading?: boolean;\n\n\t/**\n\t * Icon to display before the button text\n\t */\n\tleftIcon?: React.ReactNode;\n\n\t/**\n\t * Icon to display after the button text\n\t */\n\trightIcon?: React.ReactNode;\n\n\t/**\n\t * If true, only displays icon (children used as aria-label)\n\t */\n\ticonOnly?: boolean;\n\n\t/**\n\t * Override aria-label\n\t */\n\tariaLabel?: string;\n\n\t/**\n\t * ID of element that describes this button\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * For toggle buttons - indicates pressed state\n\t */\n\tariaPressed?: boolean;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Button content\n\t */\n\tchildren: React.ReactNode;\n}\n\n// Button-specific props\ninterface ButtonAsButton extends BaseButtonProps, Omit<ButtonHTMLAttributes<HTMLButtonElement>, keyof BaseButtonProps | 'aria-label' | 'aria-describedby' | 'aria-pressed'> {\n\t/**\n\t * Render as button element\n\t * @default 'button'\n\t */\n\tas?: 'button';\n\n\t/**\n\t * Associate button with a form by ID\n\t */\n\tform?: string;\n\n\t/**\n\t * Override form action URL\n\t */\n\tformAction?: string;\n\n\t/**\n\t * Override form method\n\t */\n\tformMethod?: 'get' | 'post';\n\n\t/**\n\t * Skip form validation\n\t */\n\tformNoValidate?: boolean;\n\n\t/**\n\t * Where to display form response\n\t */\n\tformTarget?: string;\n}\n\n// Link-specific props\ninterface ButtonAsLink extends BaseButtonProps, Omit<AnchorHTMLAttributes<HTMLAnchorElement>, keyof BaseButtonProps | 'aria-label' | 'aria-describedby' | 'aria-pressed'> {\n\t/**\n\t * Render as anchor element\n\t */\n\tas: 'a';\n\n\t/**\n\t * URL for the link\n\t */\n\thref: string;\n\n\t/**\n\t * Where to open the link\n\t */\n\ttarget?: '_blank' | '_self' | '_parent' | '_top';\n\n\t/**\n\t * Relationship of linked resource\n\t * Auto-fills \"noopener noreferrer\" for external links if not provided\n\t */\n\trel?: string;\n\n\t/**\n\t * Prompt to download the linked resource\n\t */\n\tdownload?: boolean | string;\n}\n\nexport type ButtonProps = ButtonAsButton | ButtonAsLink;\n\n/**\n * Mac OS 9 style Button component\n * \n * Polymorphic component that can render as button or link with consistent styling.\n * \n * Features:\n * - Classic 3-layer bevel effect (highlight, shadow, drop shadow)\n * - Polymorphic - renders as <button> or <a> based on `as` prop\n * - Loading states with optional Mac OS 9 watch cursor\n * - Icon support (left, right, or icon-only)\n * - Full accessibility with ARIA support\n * - Form integration props\n * - Auto-security for external links\n * \n * @example\n * ```tsx\n * // Button\n * <Button onClick={handleClick}>Click Me</Button>\n * <Button variant=\"primary\" size=\"lg\">Primary Action</Button>\n * <Button loading loadingText=\"Saving...\">Save</Button>\n * \n * // Link styled as button\n * <Button as=\"a\" href=\"/dashboard\">Go to Dashboard</Button>\n * <Button as=\"a\" href=\"https://example.com\" target=\"_blank\">\n * External Link\n * </Button>\n * \n * // With icons\n * <Button leftIcon={<FolderIcon />}>Open</Button>\n * <Button iconOnly aria-label=\"Close\">\n * <CloseIcon />\n * </Button>\n * ```\n */\nexport const Button = forwardRef<HTMLButtonElement | HTMLAnchorElement, ButtonProps>(\n\t(props, ref) => {\n\t\tconst {\n\t\t\tvariant = 'default',\n\t\t\tsize = 'md',\n\t\t\tdisabled = false,\n\t\t\tfullWidth = false,\n\t\t\tloading = false,\n\t\t\tloadingText,\n\t\t\tuseCursorLoading = false,\n\t\t\tleftIcon,\n\t\t\trightIcon,\n\t\t\ticonOnly = false,\n\t\t\tariaLabel,\n\t\t\tariaDescribedBy,\n\t\t\tariaPressed,\n\t\t\tclassName = '',\n\t\t\tchildren,\n\t\t\t...restProps\n\t\t} = props;\n\n\t\t// Determine if rendering as link\n\t\tconst isLink = props.as === 'a';\n\t\tconst Component = isLink ? 'a' : 'button';\n\n\t\t// Build class names\n\t\tconst classNames = [\n\t\t\tstyles.button,\n\t\t\tstyles[`button--${variant}`],\n\t\t\tstyles[`button--${size}`],\n\t\t\tfullWidth && styles['button--full-width'],\n\t\t\tdisabled && styles['button--disabled'],\n\t\t\tloading && styles['button--loading'],\n\t\t\tloading && useCursorLoading && styles['button--cursor-loading'],\n\t\t\ticonOnly && styles['button--icon-only'],\n\t\t\t(leftIcon || rightIcon) && styles['button--with-icon'],\n\t\t\tclassName,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\t// Prepare ARIA attributes\n\t\tconst ariaAttributes: Record<string, any> = {\n\t\t\t'aria-label': iconOnly ? (ariaLabel || (typeof children === 'string' ? children : undefined)) : ariaLabel,\n\t\t\t'aria-describedby': ariaDescribedBy,\n\t\t\t'aria-pressed': ariaPressed,\n\t\t\t'aria-disabled': disabled || loading,\n\t\t\t'aria-busy': loading,\n\t\t};\n\n\t\t// Handle link-specific props\n\t\tif (isLink) {\n\t\t\tconst { href, target, rel, download, ...linkProps } = restProps as ButtonAsLink;\n\t\t\t\n\t\t\t// Auto-add security rel for external links\n\t\t\tlet finalRel = rel;\n\t\t\tif (target === '_blank' && !rel) {\n\t\t\t\tfinalRel = 'noopener noreferrer';\n\t\t\t}\n\n\t\t\t// Links can't be truly disabled, so prevent default\n\t\t\tconst handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n\t\t\t\tif (disabled || loading) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlinkProps.onClick?.(e);\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<a\n\t\t\t\t\tref={ref as React.Ref<HTMLAnchorElement>}\n\t\t\t\t\thref={disabled || loading ? undefined : href}\n\t\t\t\t\ttarget={target}\n\t\t\t\t\trel={finalRel}\n\t\t\t\t\tdownload={download}\n\t\t\t\t\tclassName={classNames}\n\t\t\t\t\t{...ariaAttributes}\n\t\t\t\t\t{...linkProps}\n\t\t\t\t\tonClick={handleClick}\n\t\t\t\t>\n\t\t\t\t\t{renderButtonContent()}\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\n\t\t// Handle button-specific props\n\t\tconst {\n\t\t\ttype = 'button',\n\t\t\tform,\n\t\t\tformAction,\n\t\t\tformMethod,\n\t\t\tformNoValidate,\n\t\t\tformTarget,\n\t\t\t...buttonProps\n\t\t} = restProps as ButtonAsButton;\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\tref={ref as React.Ref<HTMLButtonElement>}\n\t\t\t\ttype={type}\n\t\t\t\tdisabled={disabled || loading}\n\t\t\t\tform={form}\n\t\t\t\tformAction={formAction}\n\t\t\t\tformMethod={formMethod}\n\t\t\t\tformNoValidate={formNoValidate}\n\t\t\t\tformTarget={formTarget}\n\t\t\t\tclassName={classNames}\n\t\t\t\t{...ariaAttributes}\n\t\t\t\t{...buttonProps}\n\t\t\t>\n\t\t\t\t{renderButtonContent()}\n\t\t\t</button>\n\t\t);\n\n\t\t// Render button content with icons and loading state\n\t\tfunction renderButtonContent() {\n\t\t\t// Show loading state\n\t\t\tif (loading) {\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{!useCursorLoading && (\n\t\t\t\t\t\t\t<span className={styles['button__loading-spinner']} aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t⏳\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<span className={styles['button__text']}>\n\t\t\t\t\t\t\t{loadingText || children}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Icon-only button\n\t\t\tif (iconOnly) {\n\t\t\t\treturn <span className={styles['button__icon-only']}>{children}</span>;\n\t\t\t}\n\n\t\t\t// Button with icons\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{leftIcon && (\n\t\t\t\t\t\t<span className={styles['button__icon-left']} aria-hidden=\"true\">\n\t\t\t\t\t\t\t{leftIcon}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t\t<span className={styles['button__text']}>{children}</span>\n\t\t\t\t\t{rightIcon && (\n\t\t\t\t\t\t<span className={styles['button__icon-right']} aria-hidden=\"true\">\n\t\t\t\t\t\t\t{rightIcon}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t);\n\t\t}\n\t}\n);\n\nButton.displayName = 'Button';\n\nexport default Button;\n","// Icon component - Mac OS 9 style\n// Simple wrapper for SVG icons with consistent sizing\n\nimport React, { forwardRef, SVGAttributes } from 'react';\nimport styles from './Icon.module.css';\n\nexport interface IconProps extends SVGAttributes<SVGElement> {\n\t/**\n\t * Icon size\n\t * @default 'md'\n\t */\n\tsize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n\t/**\n\t * Icon content (SVG path or element)\n\t */\n\tchildren: React.ReactNode;\n\n\t/**\n\t * Optional label for accessibility\n\t */\n\tlabel?: string;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * Icon component for Mac OS 9 UI\n * \n * Wraps SVG content with consistent sizing and styling.\n * Use for inline icons in buttons, labels, etc.\n * \n * @example\n * ```tsx\n * <Icon size=\"sm\">\n * <path d=\"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\"/>\n * </Icon>\n * \n * <Icon label=\"Close\" size=\"md\">\n * <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n * </Icon>\n * ```\n */\nexport const Icon = forwardRef<SVGSVGElement, IconProps>(\n\t({ size = 'md', children, label, className = '', ...props }, ref) => {\n\tconst classNames = [styles.icon, styles[`icon--${size}`], className]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\t\treturn (\n\t\t\t<svg\n\t\t\t\tref={ref}\n\t\t\t\tclassName={classNames}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\taria-label={label}\n\t\t\t\taria-hidden={!label}\n\t\t\t\trole={label ? 'img' : 'presentation'}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</svg>\n\t\t);\n\t}\n);\n\nIcon.displayName = 'Icon';\n\nexport default Icon;\n","// UI control icons - Mac OS 9 React UI\n// User interface controls and elements\n\nimport React from 'react';\nimport { Icon } from '../Icon';\n\n/**\n * Divider icon\n * Vertical divider for menu bars and toolbars\n * Note: Uses a 10x32 viewBox instead of standard 24x24\n */\nexport const DividerIcon: React.FC = () => (\n\t<Icon label=\"Divider\" size=\"sm\" viewBox=\"0 0 10 32\">\n\t\t<g clipPath=\"url(#clip0_529_36832)\">\n\t\t\t<path d=\"M8 4H10V32H8V4Z\" fill=\"#999999\" />\n\t\t\t<path d=\"M8 0H10V4H8V0Z\" fill=\"#999999\" />\n\t\t\t<path d=\"M0 4H2V32H0V4Z\" fill=\"white\" />\n\t\t\t<path d=\"M0 0H2V4H0V0Z\" fill=\"white\" />\n\t\t\t<path d=\"M5 28H7V30H5V28Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M5 21H7V23H5V21Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M5 14H7V16H5V14Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M5 7H7V9H5V7Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M5 4H7V2H5V4Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M5 30H7V32H5V30Z\" fill=\"white\" />\n\t\t\t<path d=\"M5 23H7V25H5V23Z\" fill=\"white\" />\n\t\t\t<path d=\"M5 16H7V18H5V16Z\" fill=\"white\" />\n\t\t\t<path d=\"M5 9H7V11H5V9Z\" fill=\"white\" />\n\t\t\t<path d=\"M5 2H7V0H5V2Z\" fill=\"white\" />\n\t\t\t<path d=\"M3 28H5V30H3V28Z\" fill=\"#999999\" />\n\t\t\t<path d=\"M3 21H5V23H3V21Z\" fill=\"#999999\" />\n\t\t\t<path d=\"M3 14H5V16H3V14Z\" fill=\"#999999\" />\n\t\t\t<path d=\"M3 7H5V9H3V7Z\" fill=\"#999999\" />\n\t\t\t<path d=\"M3 4H5V2H3V4Z\" fill=\"#999999\" />\n\t\t\t<path d=\"M3 30H5V32H3V30Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M3 23H5V25H3V23Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M3 16H5V18H3V16Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M3 9H5V11H3V9Z\" fill=\"#BBBBBB\" />\n\t\t\t<path d=\"M3 2H5V0H3V2Z\" fill=\"#BBBBBB\" />\n\t\t</g>\n\t\t<defs>\n\t\t\t<clipPath id=\"clip0_529_36832\">\n\t\t\t\t<rect width=\"10\" height=\"32\" fill=\"white\" />\n\t\t\t</clipPath>\n\t\t</defs>\n\t</Icon>\n);","// Icon Registry - Mac OS 9 React UI\n// Central registry of all available icons with type-safe names\n\nimport { DividerIcon } from './categories/ui';\n\n/**\n * Central icon registry\n * Maps icon names to their components\n */\nexport const iconRegistry = {\n\t// UI\n\tdivider: DividerIcon,\n} as const;\n\n/**\n * Type-safe icon names\n * Auto-generated from the icon registry\n */\nexport type IconName = keyof typeof iconRegistry;\n\n/**\n * Get icon component by name\n * @param name - The icon name from the registry\n * @returns The icon component or undefined if not found\n */\nexport function getIcon(name: IconName) {\n\treturn iconRegistry[name];\n}\n\n/**\n * Check if an icon exists in the registry\n * @param name - The icon name to check\n * @returns True if the icon exists\n */\nexport function hasIcon(name: string): name is IconName {\n\treturn name in iconRegistry;\n}\n\n/**\n * Get all available icon names\n * @returns Array of all icon names\n */\nexport function getAllIconNames(): IconName[] {\n\treturn Object.keys(iconRegistry) as IconName[];\n}","// IconLibrary component - Mac OS 9 React UI\n// Select icons by name from the registry\n\nimport React, { forwardRef } from 'react';\nimport { IconName, getIcon } from './registry';\nimport { IconProps } from './Icon';\n\nexport interface IconLibraryProps\n\textends Omit<IconProps, 'children' | 'label'> {\n\t/**\n\t * Icon name from the registry\n\t */\n\ticon: IconName;\n\n\t/**\n\t * Optional custom label for accessibility\n\t * If not provided, uses the icon name\n\t */\n\tlabel?: string;\n}\n\n/**\n * IconLibrary component for Mac OS 9 UI\n *\n * Provides a convenient way to use icons by name rather than importing each one individually.\n * All icons are registered in the icon registry and can be accessed by their string names.\n *\n * @example\n * ```tsx\n * <IconLibrary icon=\"save\" size=\"md\" />\n * <IconLibrary icon=\"folder\" size=\"lg\" />\n * <IconLibrary icon=\"arrow-right\" size=\"sm\" />\n * ```\n */\nexport const IconLibrary: React.FC<IconLibraryProps> = ({ icon, ...props }) => {\n\tconst IconComponent = getIcon(icon);\n\n\tif (!IconComponent) {\n\t\tconsole.warn(`Icon \"${icon}\" not found in registry`);\n\t\treturn null;\n\t}\n\n\t// Render the icon component with any additional props\n\treturn <IconComponent {...props} />;\n};\n\nIconLibrary.displayName = 'IconLibrary';\n\nexport default IconLibrary;","// IconButton component - Mac OS 9 style button with icon\n// Button variant that includes an icon, with optional label\n\n'use client';\n\nimport React, { forwardRef, ButtonHTMLAttributes } from 'react';\nimport styles from './IconButton.module.css';\n\nexport interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n\t/**\n\t * Icon element to display\n\t */\n\ticon: React.ReactNode;\n\n\t/**\n\t * Optional text label to display alongside icon\n\t */\n\tlabel?: string;\n\n\t/**\n\t * Label position relative to icon\n\t * @default 'right'\n\t */\n\tlabelPosition?: 'left' | 'right' | 'top' | 'bottom';\n\n\t/**\n\t * Button variant\n\t * @default 'default'\n\t */\n\tvariant?: 'default' | 'primary' | 'danger';\n\n\t/**\n\t * Button size\n\t * @default 'md'\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\n\t/**\n\t * Whether button is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n}\n\n/**\n * IconButton component for Mac OS 9 UI\n * \n * Button with an icon, optionally with a text label.\n * Supports all button variants and sizes.\n * \n * @example\n * ```tsx\n * // Icon-only button\n * <IconButton icon={<SaveIcon />} />\n * \n * // Icon with label\n * <IconButton \n * icon={<FolderIcon />} \n * label=\"New Folder\"\n * variant=\"primary\"\n * />\n * \n * // Icon with label on different sides\n * <IconButton \n * icon={<SearchIcon />} \n * label=\"Search\"\n * labelPosition=\"right\"\n * />\n * ```\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n\t(\n\t\t{\n\t\t\ticon,\n\t\t\tlabel,\n\t\t\tlabelPosition = 'right',\n\t\t\tvariant = 'default',\n\t\t\tsize = 'md',\n\t\t\tdisabled = false,\n\t\t\tclassName = '',\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\t// Build class names\n\t\tconst classNames = [\n\t\t\tstyles.iconButton,\n\t\t\tstyles[`iconButton--${variant}`],\n\t\t\tstyles[`iconButton--${size}`],\n\t\t\tlabel && styles['iconButton--with-label'],\n\t\t\tlabel && styles[`iconButton--label-${labelPosition}`],\n\t\t\tdisabled && styles['iconButton--disabled'],\n\t\t\tclassName,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\tref={ref}\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={classNames}\n\t\t\t\tdisabled={disabled}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t{label && (labelPosition === 'left' || labelPosition === 'top') && (\n\t\t\t<span className={styles.label}>{label}</span>\n\t\t)}\n\t\t<span className={styles.icon}>{icon}</span>\n\t\t{label && (labelPosition === 'right' || labelPosition === 'bottom') && (\n\t\t\t<span className={styles.label}>{label}</span>\n\t\t)}\n\t\t\t</button>\n\t\t);\n\t}\n);\n\nIconButton.displayName = 'IconButton';\n\nexport default IconButton;\n","// Checkbox component - Mac OS 9 style\n// Classic checkbox with label support and full accessibility\n\nimport React, { forwardRef, InputHTMLAttributes } from 'react';\nimport styles from './Checkbox.module.css';\n\nexport interface CheckboxProps\n\textends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n\t/**\n\t * Whether the checkbox is checked\n\t * For controlled component usage\n\t */\n\tchecked?: boolean;\n\n\t/**\n\t * Default checked state\n\t * For uncontrolled component usage\n\t */\n\tdefaultChecked?: boolean;\n\n\t/**\n\t * Whether the checkbox is in an indeterminate state\n\t * (neither checked nor unchecked, typically for \"select all\" scenarios)\n\t * @default false\n\t */\n\tindeterminate?: boolean;\n\n\t/**\n\t * Whether the checkbox is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Label text for the checkbox\n\t */\n\tlabel?: React.ReactNode;\n\n\t/**\n\t * Position of the label relative to the checkbox\n\t * @default 'right'\n\t */\n\tlabelPosition?: 'left' | 'right';\n\n\t/**\n\t * Size of the checkbox\n\t * @default 'md'\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\n\t/**\n\t * Error state for form validation\n\t * @default false\n\t */\n\terror?: boolean;\n\n\t/**\n\t * Override aria-label (for checkboxes without visible labels)\n\t */\n\tariaLabel?: string;\n\n\t/**\n\t * ID of element that describes this checkbox\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Callback when checked state changes\n\t */\n\tonChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\n/**\n * Mac OS 9 style Checkbox component\n * \n * Classic checkbox with raised bevel effect and optional label.\n * Supports checked, unchecked, indeterminate, and disabled states.\n * \n * Features:\n * - Classic Mac OS 9 bevel styling\n * - Indeterminate state support\n * - Label positioning (left/right)\n * - Controlled and uncontrolled modes\n * - Full accessibility with ARIA support\n * - Keyboard navigation (Space to toggle)\n * - Form integration\n * \n * @example\n * ```tsx\n * // Uncontrolled\n * <Checkbox label=\"Accept terms\" />\n * \n * // Controlled\n * <Checkbox \n * checked={isChecked} \n * onChange={(e) => setIsChecked(e.target.checked)}\n * label=\"Subscribe to newsletter\"\n * />\n * \n * // Indeterminate (for \"select all\")\n * <Checkbox \n * indeterminate={someSelected && !allSelected}\n * checked={allSelected}\n * onChange={handleSelectAll}\n * label=\"Select all items\"\n * />\n * ```\n */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n\t(\n\t\t{\n\t\t\tchecked,\n\t\t\tdefaultChecked,\n\t\t\tindeterminate = false,\n\t\t\tdisabled = false,\n\t\t\tlabel,\n\t\t\tlabelPosition = 'right',\n\t\t\tsize = 'md',\n\t\t\terror = false,\n\t\t\tariaLabel,\n\t\t\tariaDescribedBy,\n\t\t\tclassName = '',\n\t\t\tonChange,\n\t\t\tid,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\tconst inputRef = React.useRef<HTMLInputElement>(null);\n\t\tconst combinedRef = (ref as React.RefObject<HTMLInputElement>) || inputRef;\n\n\t\t// Set indeterminate property via ref (can't be set via HTML attribute)\n\t\tReact.useEffect(() => {\n\t\t\tif (combinedRef?.current) {\n\t\t\t\tcombinedRef.current.indeterminate = indeterminate;\n\t\t\t}\n\t\t}, [indeterminate, combinedRef]);\n\n\t\t// Generate ID if not provided (for label association)\n\t\tconst checkboxId = id || React.useId();\n\n\t// Build class names\n\tconst wrapperClassNames = [\n\t\tstyles.wrapper,\n\t\tstyles[`wrapper--${size}`],\n\t\tstyles[`wrapper--label-${labelPosition}`],\n\t\tdisabled && styles['wrapper--disabled'],\n\t\terror && styles['wrapper--error'],\n\t\tclassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst checkboxClassNames = [\n\t\tstyles.checkbox,\n\t\tstyles[`checkbox--${size}`],\n\t\tindeterminate && styles['checkbox--indeterminate'],\n\t\terror && styles['checkbox--error'],\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst labelClassNames = [styles.label, styles[`label--${size}`]].filter(Boolean).join(' ');\n\n\t\t// ARIA attributes\n\t\tconst ariaAttributes = {\n\t\t\t'aria-label': !label ? ariaLabel : undefined,\n\t\t\t'aria-describedby': ariaDescribedBy,\n\t\t\t'aria-invalid': error,\n\t\t\t'aria-checked': indeterminate ? ('mixed' as const) : undefined,\n\t\t};\n\n\t\treturn (\n\t\t\t<div className={wrapperClassNames}>\n\t\t\t\t{label && labelPosition === 'left' && (\n\t\t\t\t\t<label htmlFor={checkboxId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tref={combinedRef}\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tid={checkboxId}\n\t\t\t\t\tclassName={checkboxClassNames}\n\t\t\t\t\tchecked={checked}\n\t\t\t\t\tdefaultChecked={defaultChecked}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t{...ariaAttributes}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\n\t\t\t\t{label && labelPosition === 'right' && (\n\t\t\t\t\t<label htmlFor={checkboxId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n","// Radio component - Mac OS 9 style\n// Classic radio button with label support and full accessibility\n\nimport React, { forwardRef, InputHTMLAttributes } from 'react';\nimport styles from './Radio.module.css';\n\nexport interface RadioProps\n\textends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n\t/**\n\t * Whether the radio is checked\n\t * For controlled component usage\n\t */\n\tchecked?: boolean;\n\n\t/**\n\t * Default checked state\n\t * For uncontrolled component usage\n\t */\n\tdefaultChecked?: boolean;\n\n\t/**\n\t * Whether the radio is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Label text for the radio\n\t */\n\tlabel?: React.ReactNode;\n\n\t/**\n\t * Position of the label relative to the radio\n\t * @default 'right'\n\t */\n\tlabelPosition?: 'left' | 'right';\n\n\t/**\n\t * Size of the radio\n\t * @default 'md'\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\n\t/**\n\t * Error state for form validation\n\t * @default false\n\t */\n\terror?: boolean;\n\n\t/**\n\t * Override aria-label (for radios without visible labels)\n\t */\n\tariaLabel?: string;\n\n\t/**\n\t * ID of element that describes this radio\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Value for the radio button (required for radio groups)\n\t */\n\tvalue?: string | number;\n\n\t/**\n\t * Name for the radio group (all radios in a group should share the same name)\n\t */\n\tname?: string;\n\n\t/**\n\t * Callback when checked state changes\n\t */\n\tonChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\n/**\n * Mac OS 9 style Radio component\n * \n * Classic radio button with raised bevel effect and optional label.\n * Radio buttons work in groups - only one can be selected at a time.\n * \n * Features:\n * - Classic Mac OS 9 circular bevel styling\n * - Radio group support via `name` attribute\n * - Label positioning (left/right)\n * - Controlled and uncontrolled modes\n * - Full accessibility with ARIA support\n * - Keyboard navigation (Arrow keys to navigate group, Space to select)\n * - Form integration\n * \n * @example\n * ```tsx\n * // Uncontrolled radio group\n * <div>\n * <Radio name=\"size\" value=\"small\" label=\"Small\" />\n * <Radio name=\"size\" value=\"medium\" label=\"Medium\" defaultChecked />\n * <Radio name=\"size\" value=\"large\" label=\"Large\" />\n * </div>\n * \n * // Controlled radio group\n * <div>\n * <Radio \n * name=\"color\" \n * value=\"red\" \n * checked={color === 'red'}\n * onChange={(e) => setColor(e.target.value)}\n * label=\"Red\"\n * />\n * <Radio \n * name=\"color\" \n * value=\"blue\" \n * checked={color === 'blue'}\n * onChange={(e) => setColor(e.target.value)}\n * label=\"Blue\"\n * />\n * </div>\n * ```\n */\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n\t(\n\t\t{\n\t\t\tchecked,\n\t\t\tdefaultChecked,\n\t\t\tdisabled = false,\n\t\t\tlabel,\n\t\t\tlabelPosition = 'right',\n\t\t\tsize = 'md',\n\t\t\terror = false,\n\t\t\tariaLabel,\n\t\t\tariaDescribedBy,\n\t\t\tclassName = '',\n\t\t\tvalue,\n\t\t\tname,\n\t\t\tonChange,\n\t\t\tid,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\t// Generate ID if not provided (for label association)\n\t\tconst radioId = id || React.useId();\n\n\t// Build class names\n\tconst wrapperClassNames = [\n\t\tstyles.wrapper,\n\t\tstyles[`wrapper--${size}`],\n\t\tstyles[`wrapper--label-${labelPosition}`],\n\t\tdisabled && styles['wrapper--disabled'],\n\t\terror && styles['wrapper--error'],\n\t\tclassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst radioClassNames = [\n\t\tstyles.radio,\n\t\tstyles[`radio--${size}`],\n\t\terror && styles['radio--error'],\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst labelClassNames = [styles.label, styles[`label--${size}`]].filter(Boolean).join(' ');\n\n\t\t// ARIA attributes\n\t\tconst ariaAttributes = {\n\t\t\t'aria-label': !label ? ariaLabel : undefined,\n\t\t\t'aria-describedby': ariaDescribedBy,\n\t\t\t'aria-invalid': error,\n\t\t};\n\n\t\treturn (\n\t\t\t<div className={wrapperClassNames}>\n\t\t\t\t{label && labelPosition === 'left' && (\n\t\t\t\t\t<label htmlFor={radioId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tref={ref}\n\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\tid={radioId}\n\t\t\t\t\tclassName={radioClassNames}\n\t\t\t\t\tchecked={checked}\n\t\t\t\t\tdefaultChecked={defaultChecked}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tname={name}\n\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t{...ariaAttributes}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\n\t\t\t\t{label && labelPosition === 'right' && (\n\t\t\t\t\t<label htmlFor={radioId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nRadio.displayName = 'Radio';\n\nexport default Radio;\n","// TextField component - Mac OS 9 style\n// Classic text input with label support and full accessibility\n\nimport React, { forwardRef, InputHTMLAttributes } from 'react';\nimport styles from './TextField.module.css';\n\nexport interface TextFieldProps\n\textends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n\t/**\n\t * Label text for the text field\n\t */\n\tlabel?: React.ReactNode;\n\n\t/**\n\t * Position of the label relative to the text field\n\t * @default 'top'\n\t */\n\tlabelPosition?: 'top' | 'left' | 'right';\n\n\t/**\n\t * Size of the text field\n\t * @default 'md'\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\n\t/**\n\t * Whether the text field takes full width of its container\n\t * @default false\n\t */\n\tfullWidth?: boolean;\n\n\t/**\n\t * Error state for form validation\n\t * @default false\n\t */\n\terror?: boolean;\n\n\t/**\n\t * Error message to display below the field\n\t */\n\terrorMessage?: string;\n\n\t/**\n\t * Helper text to display below the field\n\t */\n\thelperText?: string;\n\n\t/**\n\t * Icon to display before the input (left side)\n\t */\n\tleftIcon?: React.ReactNode;\n\n\t/**\n\t * Icon to display after the input (right side)\n\t */\n\trightIcon?: React.ReactNode;\n\n\t/**\n\t * Override aria-label\n\t */\n\tariaLabel?: string;\n\n\t/**\n\t * ID of element that describes this text field\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Custom wrapper class name\n\t */\n\twrapperClassName?: string;\n}\n\n/**\n * Mac OS 9 style TextField component\n * \n * Classic text input with inset bevel effect and optional label.\n * \n * Features:\n * - Classic Mac OS 9 inset bevel styling\n * - Label positioning (top/left/right)\n * - Size variants (sm/md/lg)\n * - Error states with messages\n * - Helper text support\n * - Icon support (left/right)\n * - Full accessibility with ARIA support\n * - Keyboard navigation\n * - Form integration\n * \n * @example\n * ```tsx\n * // Basic text field\n * <TextField placeholder=\"Enter text...\" />\n * \n * // With label\n * <TextField label=\"Username\" placeholder=\"Enter username\" />\n * \n * // With error\n * <TextField \n * label=\"Email\" \n * error \n * errorMessage=\"Invalid email address\"\n * value={email}\n * onChange={(e) => setEmail(e.target.value)}\n * />\n * \n * // With icons\n * <TextField \n * leftIcon={<SearchIcon />}\n * placeholder=\"Search...\"\n * />\n * ```\n */\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n\t(\n\t\t{\n\t\t\tlabel,\n\t\t\tlabelPosition = 'top',\n\t\t\tsize = 'md',\n\t\t\tfullWidth = false,\n\t\t\terror = false,\n\t\t\terrorMessage,\n\t\t\thelperText,\n\t\t\tleftIcon,\n\t\t\trightIcon,\n\t\t\tariaLabel,\n\t\t\tariaDescribedBy,\n\t\t\tclassName = '',\n\t\t\twrapperClassName = '',\n\t\t\ttype = 'text',\n\t\t\tid,\n\t\t\tdisabled,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\t// Generate ID if not provided (for label association)\n\t\tconst inputId = id || React.useId();\n\n\t\t// Generate helper/error text ID for aria-describedby\n\t\tconst helperId = `${inputId}-helper`;\n\t\tconst errorId = `${inputId}-error`;\n\n\t\t// Combine aria-describedby\n\t\tconst describedByIds = [\n\t\t\thelperText && helperId,\n\t\t\terror && errorMessage && errorId,\n\t\t\tariaDescribedBy,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t// Build class names\n\tconst wrapperClassNames = [\n\t\tstyles.wrapper,\n\t\tstyles[`wrapper--${size}`],\n\t\tstyles[`wrapper--label-${labelPosition}`],\n\t\tfullWidth && styles['wrapper--full-width'],\n\t\tdisabled && styles['wrapper--disabled'],\n\t\twrapperClassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst inputWrapperClassNames = [\n\t\tstyles['input-wrapper'],\n\t\t(leftIcon || rightIcon) && styles['input-wrapper--with-icon'],\n\t\tleftIcon && styles['input-wrapper--with-left-icon'],\n\t\trightIcon && styles['input-wrapper--with-right-icon'],\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst inputClassNames = [\n\t\tstyles.input,\n\t\tstyles[`input--${size}`],\n\t\terror && styles['input--error'],\n\t\tfullWidth && styles['input--full-width'],\n\t\tclassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst labelClassNames = [styles.label, styles[`label--${size}`]].filter(Boolean).join(' ');\n\n\t\t// ARIA attributes\n\t\tconst ariaAttributes = {\n\t\t\t'aria-label': !label ? ariaLabel : undefined,\n\t\t\t'aria-describedby': describedByIds || undefined,\n\t\t\t'aria-invalid': error,\n\t\t};\n\n\t\treturn (\n\t\t\t<div className={wrapperClassNames}>\n\t\t\t\t{label && (labelPosition === 'top' || labelPosition === 'left') && (\n\t\t\t\t\t<label htmlFor={inputId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\n\t\t\t\t<div className={inputWrapperClassNames}>\n\t\t\t{leftIcon && (\n\t\t\t\t<span className={styles['input-icon-left']} aria-hidden=\"true\">\n\t\t\t\t\t{leftIcon}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<input\n\t\t\t\tref={ref}\n\t\t\t\ttype={type}\n\t\t\t\tid={inputId}\n\t\t\t\tclassName={inputClassNames}\n\t\t\t\tdisabled={disabled}\n\t\t\t\t{...ariaAttributes}\n\t\t\t\t{...props}\n\t\t\t/>\n\n\t\t\t{rightIcon && (\n\t\t\t\t<span className={styles['input-icon-right']} aria-hidden=\"true\">\n\t\t\t\t\t{rightIcon}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{label && labelPosition === 'right' && (\n\t\t\t\t\t<label htmlFor={inputId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\n\t\t{helperText && !error && (\n\t\t\t<p id={helperId} className={styles['helper-text']}>\n\t\t\t\t{helperText}\n\t\t\t</p>\n\t\t)}\n\n\t\t{error && errorMessage && (\n\t\t\t<p id={errorId} className={styles['error-message']}>\n\t\t\t\t{errorMessage}\n\t\t\t</p>\n\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nTextField.displayName = 'TextField';\n\nexport default TextField;\n","// Select component - Mac OS 9 style\n// Classic dropdown select with label support and full accessibility\n\nimport React, { forwardRef, SelectHTMLAttributes } from 'react';\nimport styles from './Select.module.css';\n\nexport interface SelectOption {\n\tvalue: string | number;\n\tlabel: string;\n\tdisabled?: boolean;\n}\n\nexport interface SelectProps\n\textends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'size'> {\n\t/**\n\t * Label text for the select\n\t */\n\tlabel?: React.ReactNode;\n\n\t/**\n\t * Position of the label relative to the select\n\t * @default 'top'\n\t */\n\tlabelPosition?: 'top' | 'left' | 'right';\n\n\t/**\n\t * Size of the select\n\t * @default 'md'\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\n\t/**\n\t * Whether the select takes full width of its container\n\t * @default false\n\t */\n\tfullWidth?: boolean;\n\n\t/**\n\t * Error state for form validation\n\t * @default false\n\t */\n\terror?: boolean;\n\n\t/**\n\t * Error message to display below the field\n\t */\n\terrorMessage?: string;\n\n\t/**\n\t * Helper text to display below the field\n\t */\n\thelperText?: string;\n\n\t/**\n\t * Options for the select dropdown\n\t * Alternative to providing option elements as children\n\t */\n\toptions?: SelectOption[];\n\n\t/**\n\t * Placeholder text (creates a disabled first option)\n\t */\n\tplaceholder?: string;\n\n\t/**\n\t * Override aria-label\n\t */\n\tariaLabel?: string;\n\n\t/**\n\t * ID of element that describes this select\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Custom wrapper class name\n\t */\n\twrapperClassName?: string;\n}\n\n/**\n * Mac OS 9 style Select component\n * \n * Classic dropdown select with raised bevel effect and optional label.\n * \n * Features:\n * - Classic Mac OS 9 popup menu styling\n * - Label positioning (top/left/right)\n * - Size variants (sm/md/lg)\n * - Error states with messages\n * - Helper text support\n * - Option groups support\n * - Full accessibility with ARIA support\n * - Keyboard navigation\n * - Form integration\n * \n * @example\n * ```tsx\n * // With options prop\n * <Select\n * label=\"Choose a color\"\n * options={[\n * { value: 'red', label: 'Red' },\n * { value: 'blue', label: 'Blue' },\n * { value: 'green', label: 'Green' }\n * ]}\n * placeholder=\"Select a color...\"\n * />\n * \n * // With children\n * <Select label=\"Country\">\n * <option value=\"us\">United States</option>\n * <option value=\"ca\">Canada</option>\n * <option value=\"mx\">Mexico</option>\n * </Select>\n * ```\n */\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n\t(\n\t\t{\n\t\t\tlabel,\n\t\t\tlabelPosition = 'top',\n\t\t\tsize = 'md',\n\t\t\tfullWidth = false,\n\t\t\terror = false,\n\t\t\terrorMessage,\n\t\t\thelperText,\n\t\t\toptions,\n\t\t\tplaceholder,\n\t\t\tariaLabel,\n\t\t\tariaDescribedBy,\n\t\t\tclassName = '',\n\t\t\twrapperClassName = '',\n\t\t\tid,\n\t\t\tdisabled,\n\t\t\tchildren,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\t// Generate ID if not provided (for label association)\n\t\tconst selectId = id || React.useId();\n\n\t\t// Generate helper/error text ID for aria-describedby\n\t\tconst helperId = `${selectId}-helper`;\n\t\tconst errorId = `${selectId}-error`;\n\n\t\t// Combine aria-describedby\n\t\tconst describedByIds = [\n\t\t\thelperText && helperId,\n\t\t\terror && errorMessage && errorId,\n\t\t\tariaDescribedBy,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\t// Build class names\n\t\tconst wrapperClassNames = [\n\t\t\tstyles.wrapper,\n\t\t\tstyles[`wrapper--${size}`],\n\t\t\tstyles[`wrapper--label-${labelPosition}`],\n\t\t\tfullWidth && styles['wrapper--full-width'],\n\t\t\tdisabled && styles['wrapper--disabled'],\n\t\t\twrapperClassName,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\tconst selectClassNames = [\n\t\t\tstyles.select,\n\t\t\tstyles[`select--${size}`],\n\t\t\terror && styles['select--error'],\n\t\t\tfullWidth && styles['select--full-width'],\n\t\t\tclassName,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\tconst labelClassNames = [styles.label, styles[`label--${size}`]].filter(Boolean).join(' ');\n\n\t\t// ARIA attributes\n\t\tconst ariaAttributes = {\n\t\t\t'aria-label': !label ? ariaLabel : undefined,\n\t\t\t'aria-describedby': describedByIds || undefined,\n\t\t\t'aria-invalid': error,\n\t\t};\n\n\t\t// Render options from options prop\n\t\tconst renderOptions = () => {\n\t\t\tif (options) {\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{placeholder && (\n\t\t\t\t\t\t\t<option value=\"\" disabled>\n\t\t\t\t\t\t\t\t{placeholder}\n\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{options.map((option) => (\n\t\t\t\t\t\t\t<option key={option.value} value={option.value} disabled={option.disabled}>\n\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn children;\n\t\t};\n\n\t\treturn (\n\t\t\t<div className={wrapperClassNames}>\n\t\t\t\t{label && (labelPosition === 'top' || labelPosition === 'left') && (\n\t\t\t\t\t<label htmlFor={selectId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\n\t\t\t\t<select\n\t\t\t\t\tref={ref}\n\t\t\t\t\tid={selectId}\n\t\t\t\t\tclassName={selectClassNames}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t{...ariaAttributes}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t{renderOptions()}\n\t\t\t\t</select>\n\n\t\t\t\t{label && labelPosition === 'right' && (\n\t\t\t\t\t<label htmlFor={selectId} className={labelClassNames}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\n\t\t\t\t{helperText && !error && (\n\t\t\t\t\t<p id={helperId} className={styles['helper-text']}>\n\t\t\t\t\t\t{helperText}\n\t\t\t\t\t</p>\n\t\t\t\t)}\n\n\t\t\t\t{error && errorMessage && (\n\t\t\t\t\t<p id={errorId} className={styles['error-message']}>\n\t\t\t\t\t\t{errorMessage}\n\t\t\t\t\t</p>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;","// Tabs component - Mac OS 9 style\n// Classic tabbed navigation with raised tab appearance\n\nimport React, { useState, useCallback, Children, isValidElement, ReactElement } from 'react';\nimport styles from './Tabs.module.css';\n\nexport interface TabPanelProps {\n\t/**\n\t * Label for the tab\n\t */\n\tlabel: string;\n\n\t/**\n\t * Content of the tab panel\n\t */\n\tchildren: React.ReactNode;\n\n\t/**\n\t * Optional icon to display in the tab\n\t */\n\ticon?: React.ReactNode;\n\n\t/**\n\t * Whether this tab is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Value identifier for controlled tabs\n\t */\n\tvalue?: string;\n}\n\n/**\n * TabPanel component - Individual tab content\n * Must be used as a child of Tabs component\n */\nexport const TabPanel: React.FC<TabPanelProps> = ({ children }) => {\n\treturn <>{children}</>;\n};\n\nTabPanel.displayName = 'TabPanel';\n\nexport interface TabsProps {\n\t/**\n\t * Tab panels as children\n\t */\n\tchildren: ReactElement<TabPanelProps> | ReactElement<TabPanelProps>[];\n\n\t/**\n\t * Index of the default active tab (uncontrolled)\n\t * @default 0\n\t */\n\tdefaultActiveTab?: number;\n\n\t/**\n\t * Index of the active tab (controlled)\n\t */\n\tactiveTab?: number;\n\n\t/**\n\t * Callback when tab changes\n\t */\n\tonChange?: (index: number, value?: string) => void;\n\n\t/**\n\t * Size of the tabs\n\t * @default 'md'\n\t */\n\tsize?: 'sm' | 'md' | 'lg';\n\n\t/**\n\t * Whether tabs take full width\n\t * @default false\n\t */\n\tfullWidth?: boolean;\n\n\t/**\n\t * Custom class name for the container\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Custom class name for the tab list\n\t */\n\ttabListClassName?: string;\n\n\t/**\n\t * Custom class name for the tab panel container\n\t */\n\tpanelClassName?: string;\n\n\t/**\n\t * ARIA label for the tab list\n\t */\n\tariaLabel?: string;\n}\n\n/**\n * Mac OS 9 style Tabs component\n * \n * Classic tabbed navigation with raised tab appearance and inset panel.\n * \n * Features:\n * - Classic Mac OS 9 tab styling\n * - Controlled and uncontrolled modes\n * - Keyboard navigation (Arrow keys, Home, End)\n * - Full accessibility with ARIA\n * - Optional icons in tabs\n * - Disabled tab states\n * \n * @example\n * ```tsx\n * // Uncontrolled\n * <Tabs>\n * <TabPanel label=\"General\">\n * <p>General settings content</p>\n * </TabPanel>\n * <TabPanel label=\"Advanced\">\n * <p>Advanced settings content</p>\n * </TabPanel>\n * </Tabs>\n * \n * // Controlled\n * <Tabs activeTab={activeIndex} onChange={setActiveIndex}>\n * <TabPanel label=\"Tab 1\">Content 1</TabPanel>\n * <TabPanel label=\"Tab 2\">Content 2</TabPanel>\n * </Tabs>\n * ```\n */\nexport const Tabs: React.FC<TabsProps> = ({\n\tchildren,\n\tdefaultActiveTab = 0,\n\tactiveTab: controlledActiveTab,\n\tonChange,\n\tsize = 'md',\n\tfullWidth = false,\n\tclassName = '',\n\ttabListClassName = '',\n\tpanelClassName = '',\n\tariaLabel = 'Tabs',\n}) => {\n\t// Controlled vs uncontrolled state\n\tconst [uncontrolledActiveTab, setUncontrolledActiveTab] = useState(defaultActiveTab);\n\tconst isControlled = controlledActiveTab !== undefined;\n\tconst activeTabIndex = isControlled ? controlledActiveTab : uncontrolledActiveTab;\n\n\t// Extract tab information from children\n\tconst tabs = Children.toArray(children).filter(\n\t\t(child): child is ReactElement<TabPanelProps> => isValidElement(child)\n\t);\n\n\t// Handle tab change\n\tconst handleTabChange = useCallback(\n\t\t(index: number) => {\n\t\t\tconst tab = tabs[index];\n\t\t\tif (!tab || tab.props.disabled) return;\n\n\t\t\tif (!isControlled) {\n\t\t\t\tsetUncontrolledActiveTab(index);\n\t\t\t}\n\t\t\tonChange?.(index, tab.props.value);\n\t\t},\n\t\t[tabs, isControlled, onChange]\n\t);\n\n\t// Keyboard navigation\n\tconst handleKeyDown = useCallback(\n\t\t(event: React.KeyboardEvent, currentIndex: number) => {\n\t\t\tlet newIndex = currentIndex;\n\n\t\t\tswitch (event.key) {\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tnewIndex = currentIndex - 1;\n\t\t\t\t\tif (newIndex < 0) newIndex = tabs.length - 1;\n\t\t\t\t\t// Skip disabled tabs\n\t\t\t\t\twhile (tabs[newIndex]?.props.disabled && newIndex !== currentIndex) {\n\t\t\t\t\t\tnewIndex--;\n\t\t\t\t\t\tif (newIndex < 0) newIndex = tabs.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tnewIndex = currentIndex + 1;\n\t\t\t\t\tif (newIndex >= tabs.length) newIndex = 0;\n\t\t\t\t\t// Skip disabled tabs\n\t\t\t\t\twhile (tabs[newIndex]?.props.disabled && newIndex !== currentIndex) {\n\t\t\t\t\t\tnewIndex++;\n\t\t\t\t\t\tif (newIndex >= tabs.length) newIndex = 0;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Home':\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tnewIndex = 0;\n\t\t\t\t\t// Skip disabled tabs\n\t\t\t\t\twhile (tabs[newIndex]?.props.disabled && newIndex < tabs.length - 1) {\n\t\t\t\t\t\tnewIndex++;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'End':\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tnewIndex = tabs.length - 1;\n\t\t\t\t\t// Skip disabled tabs\n\t\t\t\t\twhile (tabs[newIndex]?.props.disabled && newIndex > 0) {\n\t\t\t\t\t\tnewIndex--;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thandleTabChange(newIndex);\n\t\t},\n\t\t[tabs, handleTabChange]\n\t);\n\n\t// Class names\n\tconst containerClassNames = [styles.container, className].filter(Boolean).join(' ');\n\n\tconst tabListClassNames = [\n\t\tstyles.tabList,\n\t\tstyles[`tabList--${size}`],\n\t\tfullWidth && styles['tabList--full-width'],\n\t\ttabListClassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst panelContainerClassNames = [\n\t\tstyles.panelContainer,\n\t\tstyles[`panelContainer--${size}`],\n\t\tpanelClassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\treturn (\n\t\t<div className={containerClassNames}>\n\t\t\t<div role=\"tablist\" aria-label={ariaLabel} className={tabListClassNames}>\n\t\t\t\t{tabs.map((tab, index) => {\n\t\t\t\t\tconst isActive = index === activeTabIndex;\n\t\t\t\t\tconst isDisabled = tab.props.disabled;\n\n\t\t\t\t\tconst tabClassNames = [\n\t\t\t\t\t\tstyles.tab,\n\t\t\t\t\t\tstyles[`tab--${size}`],\n\t\t\t\t\t\tisActive && styles['tab--active'],\n\t\t\t\t\t\tisDisabled && styles['tab--disabled'],\n\t\t\t\t\t\tfullWidth && styles['tab--full-width'],\n\t\t\t\t\t]\n\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t.join(' ');\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-selected={isActive}\n\t\t\t\t\t\t\taria-controls={`panel-${index}`}\n\t\t\t\t\t\t\tid={`tab-${index}`}\n\t\t\t\t\t\t\ttabIndex={isActive ? 0 : -1}\n\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\tclassName={tabClassNames}\n\t\t\t\t\t\t\tonClick={() => handleTabChange(index)}\n\t\t\t\t\t\t\tonKeyDown={(e) => handleKeyDown(e, index)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{tab.props.icon && <span className={styles.tabIcon}>{tab.props.icon}</span>}\n\t\t\t\t\t\t\t{tab.props.label}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t{tabs.map((tab, index) => {\n\t\t\t\tconst isActive = index === activeTabIndex;\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\trole=\"tabpanel\"\n\t\t\t\t\t\tid={`panel-${index}`}\n\t\t\t\t\t\taria-labelledby={`tab-${index}`}\n\t\t\t\t\t\thidden={!isActive}\n\t\t\t\t\t\tclassName={panelContainerClassNames}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isActive && tab.props.children}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nTabs.displayName = 'Tabs';\n\nexport default Tabs;\n","// Utility for merging CSS class names\n// Filters out falsy values and joins valid class names with spaces\n\n/**\n * Merges multiple class names into a single string\n * Filters out undefined, null, false, and empty strings\n * \n * @param classes - Class names to merge\n * @returns Merged class name string\n * \n * @example\n * ```ts\n * mergeClasses('base', isActive && 'active', undefined, 'custom')\n * // Returns: \"base active custom\"\n * ```\n */\nexport const mergeClasses = (...classes: (string | undefined | false | null)[]): string => {\n\treturn classes.filter(Boolean).join(' ');\n};\n\n/**\n * Creates a class name builder function with a base class\n * Useful for component-level class management\n * \n * @param baseClass - Base class name\n * @returns Function that merges additional classes with base\n * \n * @example\n * ```ts\n * const cn = createClassBuilder('button');\n * cn('primary', isDisabled && 'disabled')\n * // Returns: \"button primary disabled\"\n * ```\n */\nexport const createClassBuilder = (baseClass: string) => {\n\treturn (...additionalClasses: (string | undefined | false | null)[]) => {\n\t\treturn mergeClasses(baseClass, ...additionalClasses);\n\t};\n};\n","// Window component - Mac OS 9 style\n// Classic window container with optional title bar\n\nimport React, { forwardRef, useState, useRef, useEffect, useCallback } from 'react';\nimport { mergeClasses } from '../../utils/classNames';\nimport { WindowPosition } from '../../types';\nimport styles from './Window.module.css';\n\n/**\n * Classes for targeting Window sub-elements\n */\nexport interface WindowClasses {\n\t/** Root container */\n\troot?: string;\n\t/** Title bar */\n\ttitleBar?: string;\n\t/** Title text */\n\ttitleText?: string;\n\t/** Window controls container */\n\tcontrols?: string;\n\t/** Individual control button */\n\tcontrolButton?: string;\n\t/** Content area */\n\tcontent?: string;\n}\n\nexport interface WindowProps {\n\t/**\n\t * Window content\n\t */\n\tchildren: React.ReactNode;\n\n\t/**\n\t * Window title (displays in title bar if no titleBar prop provided)\n\t */\n\ttitle?: string;\n\n\t/**\n\t * Custom title bar component\n\t * If provided, overrides the default title bar\n\t */\n\ttitleBar?: React.ReactNode;\n\n\t/**\n\t * Whether window is active/focused\n\t * @default true\n\t */\n\tactive?: boolean;\n\n\t/**\n\t * Width of the window\n\t * @default 'auto'\n\t */\n\twidth?: number | string;\n\n\t/**\n\t * Height of the window\n\t * @default 'auto'\n\t */\n\theight?: number | string;\n\n\t/**\n\t * Custom class name for the window container\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Custom class name for the content area\n\t */\n\tcontentClassName?: string;\n\n\t/**\n\t * Custom classes for targeting sub-elements\n\t */\n\tclasses?: WindowClasses;\n\n\t/**\n\t * Whether to show window controls (close, minimize, maximize)\n\t * @default true\n\t */\n\tshowControls?: boolean;\n\n\t/**\n\t * Callback when close button is clicked\n\t */\n\tonClose?: () => void;\n\n\t/**\n\t * Callback when minimize button is clicked\n\t */\n\tonMinimize?: () => void;\n\n\t/**\n\t * Callback when maximize button is clicked\n\t */\n\tonMaximize?: () => void;\n\n\t/**\n\t * Callback when mouse enters the window\n\t */\n\tonMouseEnter?: (event: React.MouseEvent<HTMLDivElement>) => void;\n\n\t/**\n\t * Whether the window has a resize handle\n\t * @default false\n\t */\n\tresizable?: boolean;\n\n\t/**\n\t * Whether the window can be dragged by its title bar\n\t * Window starts in normal flow and becomes absolutely positioned when dragged\n\t * @default false\n\t */\n\tdraggable?: boolean;\n\n\t/**\n\t * Initial position for draggable windows (uncontrolled)\n\t * Only used when draggable is true\n\t */\n\tdefaultPosition?: WindowPosition;\n\n\t/**\n\t * Controlled position for draggable windows\n\t * Only used when draggable is true\n\t */\n\tposition?: WindowPosition;\n\n\t/**\n\t * Callback when window position changes (during drag)\n\t * Only called when draggable is true\n\t */\n\tonPositionChange?: (position: WindowPosition) => void;\n}\n\n/**\n * Mac OS 9 style Window component\n * \n * Classic window container with title bar and content area.\n * \n * Features:\n * - Classic Mac OS 9 window styling with beveled edges\n * - Optional title bar with window controls\n * - Active/inactive states\n * - Composable with custom TitleBar component\n * - Flexible sizing\n * - Draggable windows (optional) - drag by title bar\n * \n * @example\n * ```tsx\n * // Simple window with title\n * <Window title=\"My Window\">\n * <p>Window content goes here</p>\n * </Window>\n * \n * // Window with custom title bar\n * <Window titleBar={<TitleBar title=\"Custom\" />}>\n * <p>Content</p>\n * </Window>\n * \n * // Window with controls and callbacks\n * <Window \n * title=\"Document\"\n * onClose={() => console.log('Close')}\n * onMinimize={() => console.log('Minimize')}\n * >\n * <p>Content</p>\n * </Window>\n * \n * // Draggable window (uncontrolled)\n * <Window title=\"Draggable\" draggable>\n * <p>Drag me by the title bar!</p>\n * </Window>\n * \n * // Draggable window with initial position\n * <Window \n * title=\"Positioned\"\n * draggable\n * defaultPosition={{ x: 100, y: 100 }}\n * >\n * <p>Starts at a specific position</p>\n * </Window>\n * \n * // Controlled draggable window\n * const [pos, setPos] = useState({ x: 0, y: 0 });\n * <Window\n * title=\"Controlled\"\n * draggable\n * position={pos}\n * onPositionChange={setPos}\n * >\n * <p>Parent controls position</p>\n * </Window>\n * ```\n */\nexport const Window = forwardRef<HTMLDivElement, WindowProps>(\n\t(\n\t\t{\n\t\t\tchildren,\n\t\t\ttitle,\n\t\t\ttitleBar,\n\t\t\tactive = true,\n\t\t\twidth = 'auto',\n\t\t\theight = 'auto',\n\t\t\tclassName = '',\n\t\t\tcontentClassName = '',\n\t\t\tclasses,\n\t\t\tshowControls = true,\n\t\t\tonClose,\n\t\t\tonMinimize,\n\t\t\tonMaximize,\n\t\t\tonMouseEnter,\n\t\t\tresizable = false,\n\t\t\tdraggable = false,\n\t\t\tdefaultPosition,\n\t\t\tposition: controlledPosition,\n\t\t\tonPositionChange,\n\t\t},\n\t\tref\n\t) => {\n\t\t// Drag state management\n\t\tconst [internalPosition, setInternalPosition] = useState<WindowPosition | null>(\n\t\t\tdefaultPosition || null\n\t\t);\n\t\tconst [isDragging, setIsDragging] = useState(false);\n\t\tconst [hasBeenDragged, setHasBeenDragged] = useState(\n\t\t\t!!(defaultPosition || controlledPosition)\n\t\t);\n\t\tconst dragStartRef = useRef<{ x: number; y: number } | null>(null);\n\n\t\t// Use controlled position if provided, otherwise use internal state\n\t\tconst currentPosition = controlledPosition || internalPosition;\n\n\t\t// Handle mouse down on title bar to start dragging\n\t\tconst handleTitleBarMouseDown = useCallback(\n\t\t\t(event: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!draggable) return;\n\n\t\t\t\t// Don't start drag if clicking on buttons\n\t\t\t\tif ((event.target as HTMLElement).closest('button')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tconst windowElement = (event.currentTarget as HTMLElement).closest(\n\t\t\t\t\t`.${styles.window}`\n\t\t\t\t) as HTMLElement;\n\n\t\t\t\tif (!windowElement) return;\n\n\t\t\t\tconst rect = windowElement.getBoundingClientRect();\n\n\t\t\t\t// Store drag start info\n\t\t\t\tdragStartRef.current = {\n\t\t\t\t\tx: event.clientX - rect.left,\n\t\t\t\t\ty: event.clientY - rect.top,\n\t\t\t\t};\n\n\t\t\t\tsetIsDragging(true);\n\t\t\t},\n\t\t\t[draggable]\n\t\t);\n\n\t\t// Handle mouse move during drag\n\t\tuseEffect(() => {\n\t\t\tif (!isDragging || !dragStartRef.current) return;\n\n\t\t\tconst handleMouseMove = (event: MouseEvent) => {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (!dragStartRef.current) return;\n\n\t\t\t\tconst newPosition: WindowPosition = {\n\t\t\t\t\tx: event.clientX - dragStartRef.current.x,\n\t\t\t\t\ty: event.clientY - dragStartRef.current.y,\n\t\t\t\t};\n\n\t\t\t\t// Update position\n\t\t\t\tif (controlledPosition && onPositionChange) {\n\t\t\t\t\tonPositionChange(newPosition);\n\t\t\t\t} else {\n\t\t\t\t\tsetInternalPosition(newPosition);\n\t\t\t\t}\n\n\t\t\t\t// Mark as dragged\n\t\t\t\tif (!hasBeenDragged) {\n\t\t\t\t\tsetHasBeenDragged(true);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst handleMouseUp = () => {\n\t\t\t\tsetIsDragging(false);\n\t\t\t\tdragStartRef.current = null;\n\t\t\t};\n\n\t\t\tdocument.addEventListener('mousemove', handleMouseMove);\n\t\t\tdocument.addEventListener('mouseup', handleMouseUp);\n\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener('mousemove', handleMouseMove);\n\t\t\t\tdocument.removeEventListener('mouseup', handleMouseUp);\n\t\t\t};\n\t\t}, [isDragging, controlledPosition, onPositionChange, hasBeenDragged]);\n\n\t\t// Class names\n\t\tconst windowClassNames = mergeClasses(\n\t\t\tstyles.window,\n\t\t\tactive ? styles['window--active'] : styles['window--inactive'],\n\t\t\tdraggable && hasBeenDragged && styles['window--draggable'],\n\t\t\tclassName,\n\t\t\tclasses?.root\n\t\t);\n\n\t\tconst contentClassNames = mergeClasses(styles.content, contentClassName, classes?.content);\n\n\t\tconst titleBarClassNames = mergeClasses(\n\t\t\tstyles.titleBar,\n\t\t\tdraggable && styles['titleBar--draggable'],\n\t\t\tisDragging && styles['titleBar--dragging'],\n\t\t\tclasses?.titleBar\n\t\t);\n\n\t\t// Window style\n\t\tconst windowStyle: React.CSSProperties = {};\n\t\tif (width !== 'auto') {\n\t\t\twindowStyle.width = typeof width === 'number' ? `${width}px` : width;\n\t\t}\n\t\tif (height !== 'auto') {\n\t\t\twindowStyle.height = typeof height === 'number' ? `${height}px` : height;\n\t\t}\n\n\t\t// Apply position if draggable and has been dragged\n\t\tif (draggable && hasBeenDragged && currentPosition) {\n\t\t\twindowStyle.position = 'absolute';\n\t\t\twindowStyle.left = `${currentPosition.x}px`;\n\t\t\twindowStyle.top = `${currentPosition.y}px`;\n\t\t}\n\n\t\t// Render title bar if title provided and no custom titleBar\n\t\tconst renderTitleBar = () => {\n\t\t\tif (titleBar) {\n\t\t\t\treturn titleBar;\n\t\t\t}\n\n\t\t\tif (title) {\n\t\t\t\treturn (\n\t\t\t\t\t<div \n\t\t\t\t\t\tclassName={titleBarClassNames} \n\t\t\t\t\t\tdata-numControls={[onClose, onMinimize, onMaximize].filter(Boolean).length}\n\t\t\t\t\t\tonMouseDown={handleTitleBarMouseDown}\n\t\t\t\t\t>\n\t\t\t\t\t\t{showControls && (\n\t\t\t\t\t\t\t<div className={mergeClasses(styles.controls, classes?.controls)}>\n\t\t\t\t\t\t\t\t{onClose && (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName={mergeClasses(styles.controlButton, classes?.controlButton)}\n\t\t\t\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t\t\t\t\taria-label=\"Close\"\n\t\t\t\t\t\t\t\t\ttitle=\"Close\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div className={styles.closeBox} />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{onMinimize && (\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tclassName={mergeClasses(styles.controlButton, classes?.controlButton)}\n\t\t\t\t\t\t\t\t\t\tonClick={onMinimize}\n\t\t\t\t\t\t\t\t\t\taria-label=\"Minimize\"\n\t\t\t\t\t\t\t\t\t\ttitle=\"Minimize\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div className={styles.minimizeBox} />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{onMaximize && (\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tclassName={mergeClasses(styles.controlButton, classes?.controlButton)}\n\t\t\t\t\t\t\t\t\t\tonClick={onMaximize}\n\t\t\t\t\t\t\t\t\t\taria-label=\"Maximize\"\n\t\t\t\t\t\t\t\t\t\ttitle=\"Maximize\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div className={styles.maximizeBox} />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className={styles.titleCenter}>\n\t\t\t\t\t\t<svg width=\"132\" height=\"13\" viewBox=\"0 0 132 13\" fill=\"none\" preserveAspectRatio=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<rect width=\"130.517\" height=\"13\" fill=\"#DDDDDD\"/>\n\t\t\t\t\t\t\t<rect width=\"1\" height=\"13\" fill=\"#EEEEEE\"/>\n\t\t\t\t\t\t\t<rect x=\"130\" width=\"1\" height=\"13\" fill=\"#C5C5C5\"/>\n\t\t\t\t\t\t\t<rect y=\"1\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t<rect y=\"5\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t<rect y=\"9\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t<rect y=\"3\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t<rect y=\"7\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t<rect y=\"11\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t<div className={mergeClasses(styles.titleText, classes?.titleText, 'bold')}>{title}</div>\n\t\t\t\t\t\t\t<svg width=\"132\" height=\"13\" viewBox=\"0 0 132 13\" fill=\"none\" preserveAspectRatio=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t\t<rect width=\"130.517\" height=\"13\" fill=\"#DDDDDD\"/>\n\t\t\t\t\t\t\t\t<rect width=\"1\" height=\"13\" fill=\"#EEEEEE\"/>\n\t\t\t\t\t\t\t\t<rect x=\"130\" width=\"1\" height=\"13\" fill=\"#C5C5C5\"/>\n\t\t\t\t\t\t\t\t<rect y=\"1\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t\t<rect y=\"5\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t\t<rect y=\"9\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t\t<rect y=\"3\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t\t<rect y=\"7\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t\t<rect y=\"11\" width=\"131.268\" height=\"1\" fill=\"#999999\"/>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t};\n\n\t\treturn (\n\t\t\t<div \n\t\t\t\tref={ref} \n\t\t\t\tclassName={windowClassNames} \n\t\t\t\tstyle={windowStyle}\n\t\t\t\tonMouseEnter={onMouseEnter}\n\t\t\t>\n\t\t\t\t{renderTitleBar()}\n\t\t\t\t<div className={contentClassNames}>{children}</div>\n\t\t\t{resizable && <div className={styles.resizeHandle} aria-hidden=\"true\" />}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nWindow.displayName = 'Window';\n\nexport default Window;\n","// Dialog component - Mac OS 9 style\n// Modal dialog with backdrop and focus trapping\n\nimport React, { forwardRef, useEffect, useRef, useCallback } from 'react';\nimport { Window, type WindowProps } from '../Window/Window';\nimport styles from './Dialog.module.css';\n\nexport interface DialogProps extends Omit<WindowProps, 'active'> {\n\t/**\n\t * Whether the dialog is open\n\t * @default false\n\t */\n\topen?: boolean;\n\n\t/**\n\t * Callback when dialog should close\n\t * Called when backdrop is clicked or Escape is pressed\n\t */\n\tonClose?: () => void;\n\n\t/**\n\t * Whether clicking the backdrop closes the dialog\n\t * @default true\n\t */\n\tcloseOnBackdropClick?: boolean;\n\n\t/**\n\t * Whether pressing Escape closes the dialog\n\t * @default true\n\t */\n\tcloseOnEscape?: boolean;\n\n\t/**\n\t * Custom backdrop className\n\t */\n\tbackdropClassName?: string;\n\n\t/**\n\t * Whether to trap focus within the dialog\n\t * @default true\n\t */\n\ttrapFocus?: boolean;\n\n\t/**\n\t * Initial focus element selector or ref\n\t */\n\tinitialFocus?: string | React.RefObject<HTMLElement>;\n}\n\n/**\n * Mac OS 9 style Dialog component\n * \n * Modal dialog with backdrop, focus trapping, and keyboard handling.\n * Built on top of the Window component.\n * \n * Features:\n * - Classic Mac OS 9 dialog styling\n * - Modal backdrop with click-to-close\n * - Escape key to close\n * - Focus trapping within dialog\n * - Centered on screen\n * - Prevents body scroll when open\n * \n * @example\n * ```tsx\n * const [open, setOpen] = useState(false);\n * \n * <Dialog\n * open={open}\n * onClose={() => setOpen(false)}\n * title=\"Confirm\"\n * width={350}\n * >\n * <p>Are you sure?</p>\n * <div>\n * <Button onClick={() => setOpen(false)}>Cancel</Button>\n * <Button variant=\"primary\">OK</Button>\n * </div>\n * </Dialog>\n * ```\n */\nexport const Dialog = forwardRef<HTMLDivElement, DialogProps>(\n\t(\n\t\t{\n\t\t\topen = false,\n\t\t\tonClose,\n\t\t\tcloseOnBackdropClick = true,\n\t\t\tcloseOnEscape = true,\n\t\t\tbackdropClassName = '',\n\t\t\ttrapFocus = true,\n\t\t\tinitialFocus,\n\t\t\tchildren,\n\t\t\t...windowProps\n\t\t},\n\t\tref\n\t) => {\n\t\tconst dialogRef = useRef<HTMLDivElement>(null);\n\t\tconst previousActiveElement = useRef<HTMLElement | null>(null);\n\n\t\t// Handle Escape key\n\t\tuseEffect(() => {\n\t\t\tif (!open || !closeOnEscape) return;\n\n\t\t\tconst handleEscape = (event: KeyboardEvent) => {\n\t\t\t\tif (event.key === 'Escape') {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tonClose?.();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdocument.addEventListener('keydown', handleEscape);\n\t\t\treturn () => document.removeEventListener('keydown', handleEscape);\n\t\t}, [open, closeOnEscape, onClose]);\n\n\t\t// Store previous active element and restore on close\n\t\tuseEffect(() => {\n\t\t\tif (open) {\n\t\t\t\tpreviousActiveElement.current = document.activeElement as HTMLElement;\n\t\t\t} else if (previousActiveElement.current) {\n\t\t\t\tpreviousActiveElement.current.focus();\n\t\t\t}\n\t\t}, [open]);\n\n\t\t// Set initial focus\n\t\tuseEffect(() => {\n\t\t\tif (!open || !initialFocus) return;\n\n\t\t\tconst focusElement = () => {\n\t\t\t\tif (typeof initialFocus === 'string') {\n\t\t\t\t\tconst element = dialogRef.current?.querySelector(initialFocus) as HTMLElement;\n\t\t\t\t\telement?.focus();\n\t\t\t\t} else if (initialFocus.current) {\n\t\t\t\t\tinitialFocus.current.focus();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Small delay to ensure dialog is rendered\n\t\t\tsetTimeout(focusElement, 10);\n\t\t}, [open, initialFocus]);\n\n\t\t// Focus trapping\n\t\tuseEffect(() => {\n\t\t\tif (!open || !trapFocus) return;\n\n\t\t\tconst handleTabKey = (event: KeyboardEvent) => {\n\t\t\t\tif (event.key !== 'Tab' || !dialogRef.current) return;\n\n\t\t\t\tconst focusableElements = dialogRef.current.querySelectorAll(\n\t\t\t\t\t'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n\t\t\t\t);\n\n\t\t\t\tconst firstElement = focusableElements[0] as HTMLElement;\n\t\t\t\tconst lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n\t\t\t\tif (event.shiftKey) {\n\t\t\t\t\t// Shift + Tab\n\t\t\t\t\tif (document.activeElement === firstElement) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tlastElement?.focus();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Tab\n\t\t\t\t\tif (document.activeElement === lastElement) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tfirstElement?.focus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdocument.addEventListener('keydown', handleTabKey);\n\t\t\treturn () => document.removeEventListener('keydown', handleTabKey);\n\t\t}, [open, trapFocus]);\n\n\t\t// Prevent body scroll when dialog is open\n\t\tuseEffect(() => {\n\t\t\tif (open) {\n\t\t\t\tdocument.body.style.overflow = 'hidden';\n\t\t\t} else {\n\t\t\t\tdocument.body.style.overflow = '';\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tdocument.body.style.overflow = '';\n\t\t\t};\n\t\t}, [open]);\n\n\t\t// Handle backdrop click\n\t\tconst handleBackdropClick = useCallback(\n\t\t\t(event: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (closeOnBackdropClick && event.target === event.currentTarget) {\n\t\t\t\t\tonClose?.();\n\t\t\t\t}\n\t\t\t},\n\t\t\t[closeOnBackdropClick, onClose]\n\t\t);\n\n\t\tif (!open) return null;\n\n\t\tconst backdropClassNames = [styles.backdrop, backdropClassName].filter(Boolean).join(' ');\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={backdropClassNames}\n\t\t\t\tonClick={handleBackdropClick}\n\t\t\t\trole=\"presentation\"\n\t\t\t\taria-modal=\"true\"\n\t\t\t>\n\t\t\t\t<div className={styles.dialogContainer} ref={dialogRef} role=\"dialog\" aria-modal=\"true\">\n\t\t\t\t\t<Window {...windowProps} ref={ref} active={true} onClose={onClose}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Window>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nDialog.displayName = 'Dialog';\n\nexport default Dialog;\n","// MenuBar component - Mac OS 9 style\n// Horizontal menu bar with dropdown menus, logo support, and status area\n\nimport React, { forwardRef, useRef, useState, useEffect, useCallback } from 'react';\nimport styles from './MenuBar.module.css';\n\nexport interface Menu {\n\t/**\n\t * Menu label (displayed in the menu bar)\n\t */\n\tlabel: string;\n\n\t/**\n\t * Menu type - determines behavior\n\t * @default 'dropdown'\n\t */\n\ttype?: 'dropdown' | 'link';\n\n\t/**\n\t * Menu items (content of the dropdown)\n\t * Required when type is 'dropdown'\n\t */\n\titems?: React.ReactNode;\n\n\t/**\n\t * Link href (for link-type menus)\n\t * Used when type is 'link'\n\t */\n\thref?: string;\n\n\t/**\n\t * Click handler (for link-type menus)\n\t * Used when type is 'link'\n\t */\n\tonClick?: () => void;\n\n\t/**\n\t * Whether the menu is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n}\n\nexport interface MenuBarProps {\n\t/**\n\t * Array of menus to display\n\t */\n\tmenus: Menu[];\n\n\t/**\n\t * Index of the currently open menu (controlled)\n\t */\n\topenMenuIndex?: number;\n\n\t/**\n\t * Callback when a menu is opened\n\t */\n\tonMenuOpen?: (index: number) => void;\n\n\t/**\n\t * Callback when menus are closed\n\t */\n\tonMenuClose?: () => void;\n\n\t/**\n\t * Custom class name for the menu bar\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Custom class name for menu dropdowns\n\t */\n\tdropdownClassName?: string;\n\n\t/**\n\t * Content to display on the left side (typically a logo)\n\t */\n\tleftContent?: React.ReactNode;\n\n\t/**\n\t * Content to display on the right side (status items, clock, etc.)\n\t * Can be a single element or array of elements\n\t */\n\trightContent?: React.ReactNode | React.ReactNode[];\n}\n\n/**\n * Mac OS 9 style MenuBar component\n * \n * Horizontal menu bar with dropdown menus, logo support, and status area.\n * \n * Features:\n * - Classic Mac OS 9 menu bar styling\n * - Horizontal menu layout\n * - Dropdown menus on click\n * - Link-type menu items for navigation\n * - Logo/icon support on the left\n * - Status area on the right (clock, system indicators, etc.)\n * - Keyboard navigation (Left/Right for menus, Up/Down for items)\n * - Click outside to close\n * - Escape key to close\n * - Controlled state (consumers manage open/closed)\n * - Disabled menu support\n * \n * @example\n * ```tsx\n * const [openMenu, setOpenMenu] = useState<number | undefined>();\n * \n * <MenuBar\n * leftContent={<img src=\"/logo.png\" alt=\"Logo\" width={16} height={16} />}\n * openMenuIndex={openMenu}\n * onMenuOpen={setOpenMenu}\n * onMenuClose={() => setOpenMenu(undefined)}\n * menus={[\n * {\n * label: 'File',\n * type: 'dropdown',\n * items: (\n * <>\n * <MenuItem label=\"Open...\" shortcut=\"⌘O\" onClick={() => {}} />\n * <MenuItem label=\"Save\" shortcut=\"⌘S\" onClick={() => {}} />\n * </>\n * ),\n * },\n * {\n * label: 'Home',\n * type: 'link',\n * href: '/',\n * },\n * ]}\n * rightContent={[\n * <Clock key=\"clock\" />,\n * <div key=\"divider\" className={styles.divider} />,\n * <SystemIndicator key=\"indicator\" />,\n * ]}\n * />\n * ```\n */\nexport const MenuBar = forwardRef<HTMLDivElement, MenuBarProps>(\n\t({\n\t\tmenus,\n\t\topenMenuIndex,\n\t\tonMenuOpen,\n\t\tonMenuClose,\n\t\tclassName = '',\n\t\tdropdownClassName = '',\n\t\tleftContent,\n\t\trightContent,\n\t}, ref) => {\n\t\tconst [menuBarElement, setMenuBarElement] = useState<HTMLDivElement | null>(null);\n\t\tconst [focusedIndex, setFocusedIndex] = useState<number>(-1);\n\t\tconst [internalOpenIndex, setInternalOpenIndex] = useState<number | undefined>(undefined);\n\n\t\tconst isControlled = openMenuIndex !== undefined;\n\t\tconst activeOpenIndex = isControlled ? openMenuIndex : internalOpenIndex;\n\n\t\tconst handleMenuOpenInternal = (index: number) => {\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalOpenIndex(index);\n\t\t\t}\n\t\t\tonMenuOpen?.(index);\n\t\t};\n\n\t\tconst handleMenuCloseInternal = () => {\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalOpenIndex(undefined);\n\t\t\t}\n\t\t\tonMenuClose?.();\n\t\t};\n\n\t\t// Handle click outside to close menu\n\t\tuseEffect(() => {\n\t\t\tif (activeOpenIndex === undefined || !menuBarElement) return;\n\n\t\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\t\tif (menuBarElement && !menuBarElement.contains(event.target as Node)) {\n\t\t\t\t\thandleMenuCloseInternal();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdocument.addEventListener('mousedown', handleClickOutside);\n\t\t\treturn () => document.removeEventListener('mousedown', handleClickOutside);\n\t\t}, [activeOpenIndex, onMenuClose, menuBarElement, isControlled]);\n\n\t\t// Handle Escape key to close menu\n\t\tuseEffect(() => {\n\t\t\tif (activeOpenIndex === undefined) return;\n\n\t\t\tconst handleEscape = (event: KeyboardEvent) => {\n\t\t\t\tif (event.key === 'Escape') {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\thandleMenuCloseInternal();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdocument.addEventListener('keydown', handleEscape);\n\t\t\treturn () => document.removeEventListener('keydown', handleEscape);\n\t\t}, [activeOpenIndex, onMenuClose, isControlled]);\n\n\t\t// Handle keyboard navigation\n\t\tconst handleKeyDown = useCallback(\n\t\t\t(event: React.KeyboardEvent) => {\n\t\t\t\tswitch (event.key) {\n\t\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif (activeOpenIndex !== undefined) {\n\t\t\t\t\t\t\t// Move to previous menu\n\t\t\t\t\t\t\tconst prevIndex = activeOpenIndex > 0 ? activeOpenIndex - 1 : menus.length - 1;\n\t\t\t\t\t\t\tif (!menus[prevIndex]?.disabled) {\n\t\t\t\t\t\t\t\thandleMenuOpenInternal(prevIndex);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (focusedIndex > 0) {\n\t\t\t\t\t\t\tsetFocusedIndex(focusedIndex - 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif (activeOpenIndex !== undefined) {\n\t\t\t\t\t\t\t// Move to next menu\n\t\t\t\t\t\t\tconst nextIndex = activeOpenIndex < menus.length - 1 ? activeOpenIndex + 1 : 0;\n\t\t\t\t\t\t\tif (!menus[nextIndex]?.disabled) {\n\t\t\t\t\t\t\t\thandleMenuOpenInternal(nextIndex);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (focusedIndex < menus.length - 1) {\n\t\t\t\t\t\t\tsetFocusedIndex(focusedIndex + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif (activeOpenIndex === undefined && focusedIndex >= 0) {\n\t\t\t\t\t\t\t// Open the focused menu (only if it's a dropdown)\n\t\t\t\t\t\t\tconst menu = menus[focusedIndex];\n\t\t\t\t\t\t\tif (!menu?.disabled && menu?.type !== 'link') {\n\t\t\t\t\t\t\t\thandleMenuOpenInternal(focusedIndex);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Enter':\n\t\t\t\t\tcase ' ':\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif (activeOpenIndex === undefined && focusedIndex >= 0) {\n\t\t\t\t\t\t\tconst menu = menus[focusedIndex];\n\t\t\t\t\t\t\tif (!menu?.disabled) {\n\t\t\t\t\t\t\t\tif (menu.type === 'link') {\n\t\t\t\t\t\t\t\t\t// Trigger click handler for link-type menu\n\t\t\t\t\t\t\t\t\tmenu.onClick?.();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Open the focused dropdown menu\n\t\t\t\t\t\t\t\t\thandleMenuOpenInternal(focusedIndex);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\t[activeOpenIndex, focusedIndex, menus, onMenuOpen, onMenuClose, isControlled]\n\t\t);\n\n\t\t// Handle menu button click\n\t\tconst handleMenuClick = (index: number) => {\n\t\t\tconst menu = menus[index];\n\t\t\tif (menu?.disabled) return;\n\n\t\t\tif (menu.type === 'link') {\n\t\t\t\t// For link-type menus, trigger the onClick handler\n\t\t\t\tmenu.onClick?.();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (activeOpenIndex === index) {\n\t\t\t\t// Clicking the same menu closes it\n\t\t\t\thandleMenuCloseInternal();\n\t\t\t} else {\n\t\t\t\t// Open the clicked menu\n\t\t\t\thandleMenuOpenInternal(index);\n\t\t\t}\n\t\t};\n\n\t\t// Class names\n\t\tconst menuBarClassNames = [styles.menuBar, className].filter(Boolean).join(' ');\n\n\t\tconst dropdownClassNames = [styles.dropdown, dropdownClassName].filter(Boolean).join(' ');\n\n\t\t// Callback ref to handle both internal state and forwarded ref\n\t\tconst handleRef = useCallback(\n\t\t\t(node: HTMLDivElement | null) => {\n\t\t\t\tsetMenuBarElement(node);\n\t\t\t\tif (typeof ref === 'function') {\n\t\t\t\t\tref(node);\n\t\t\t\t} else if (ref) {\n\t\t\t\t\tref.current = node;\n\t\t\t\t}\n\t\t\t},\n\t\t\t[ref]\n\t\t);\n\n\t\treturn (\n\t\t\t<div ref={handleRef} className={menuBarClassNames} role=\"menubar\" onKeyDown={handleKeyDown}>\n\t\t\t\t{/* Left content (logo) */}\n\t\t\t\t{leftContent && (\n\t\t\t\t\t<div className={styles.leftContent}>\n\t\t\t\t\t\t{leftContent}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{/* Menu items */}\n\t\t\t\t<div className={styles.menusContainer}>\n\t\t\t\t\t{menus.map((menu, index) => {\n\t\t\t\t\t\tconst isOpen = activeOpenIndex === index;\n\t\t\t\t\t\tconst isFocused = focusedIndex === index;\n\t\t\t\t\t\tconst isDropdown = menu.type !== 'link';\n\n\t\t\t\t\t\tconst menuButtonClassNames = [\n\t\t\t\t\t\t\tstyles.menuButton,\n\t\t\t\t\t\t\tisOpen ? styles['menuButton--open'] : '',\n\t\t\t\t\t\t\tmenu.disabled ? styles['menuButton--disabled'] : '',\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t.join(' ');\n\n\t\t\t\t\t\t// For link-type menus, render as anchor if href is provided\n\t\t\t\t\t\tif (menu.type === 'link' && menu.href) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={index} className={styles.menuContainer}>\n\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\thref={menu.href}\n\t\t\t\t\t\t\t\t\t\tclassName={menuButtonClassNames}\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\tif (menu.onClick) {\n\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\tmenu.onClick();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tonFocus={() => setFocusedIndex(index)}\n\t\t\t\t\t\t\t\t\t\tonBlur={() => setFocusedIndex(-1)}\n\t\t\t\t\t\t\t\t\t\taria-disabled={menu.disabled}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t\t\t\t\t{menu.label}\n\t\t\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Standard dropdown menu or link without href\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div key={index} className={styles.menuContainer}>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName={menuButtonClassNames}\n\t\t\t\t\t\t\t\t\tonClick={() => handleMenuClick(index)}\n\t\t\t\t\t\t\t\t\tonFocus={() => setFocusedIndex(index)}\n\t\t\t\t\t\t\t\t\tonBlur={() => setFocusedIndex(-1)}\n\t\t\t\t\t\t\t\t\tdisabled={menu.disabled}\n\t\t\t\t\t\t\t\t\taria-haspopup={isDropdown ? 'true' : undefined}\n\t\t\t\t\t\t\t\t\taria-expanded={isOpen}\n\t\t\t\t\t\t\t\t\taria-disabled={menu.disabled}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t\t\t\t{menu.label}\n\t\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t\t\t{isOpen && isDropdown && menu.items && (\n\t\t\t\t\t\t\t\t\t<div className={dropdownClassNames} role=\"menu\">\n\t\t\t\t\t\t\t\t\t\t{menu.items}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\n\t\t\t\t{/* Right content (status area) */}\n\t\t\t\t{rightContent && (\n\t\t\t\t\t<div className={styles.rightContent}>\n\t\t\t\t\t\t{Array.isArray(rightContent)\n\t\t\t\t\t\t\t? rightContent.map((item, index) => (\n\t\t\t\t\t\t\t\t<React.Fragment key={index}>{item}</React.Fragment>\n\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t: rightContent\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nMenuBar.displayName = 'MenuBar';\n\nexport default MenuBar;","// MenuItem component - Mac OS 9 style\n// Individual menu item for use within MenuBar\n\nimport React, { forwardRef, useState } from 'react';\nimport styles from './MenuItem.module.css';\n\nexport interface MenuItemProps {\n\t/**\n\t * Menu item label text\n\t */\n\tlabel: string;\n\n\t/**\n\t * Optional keyboard shortcut to display (e.g., \"⌘S\", \"Ctrl+O\")\n\t */\n\tshortcut?: string;\n\n\t/**\n\t * Whether the menu item is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Whether the menu item is selected/active\n\t * @default false\n\t */\n\tselected?: boolean;\n\n\t/**\n\t * Whether the menu item has a separator after it\n\t * @default false\n\t */\n\tseparator?: boolean;\n\n\t/**\n\t * Whether the menu item has a checkmark (for toggle items)\n\t * @default false\n\t */\n\tchecked?: boolean;\n\n\t/**\n\t * Optional icon to display before the label\n\t */\n\ticon?: React.ReactNode;\n\n\t/**\n\t * Callback when menu item is clicked\n\t */\n\tonClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n\n\t/**\n\t * Callback when menu item is focused\n\t */\n\tonFocus?: (event: React.FocusEvent<HTMLButtonElement>) => void;\n\n\t/**\n\t * Callback when menu item loses focus\n\t */\n\tonBlur?: (event: React.FocusEvent<HTMLButtonElement>) => void;\n\n\t/**\n\t * Custom class name for the menu item\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Whether the item has a submenu indicator (arrow)\n\t * @default false\n\t */\n\thasSubmenu?: boolean;\n\n\t/**\n\t * Submenu items\n\t */\n\titems?: React.ReactNode;\n}\n\n/**\n * Mac OS 9 style MenuItem component\n * \n * Individual menu item for use within MenuBar or dropdown menus.\n * \n * Features:\n * - Classic Mac OS 9 menu item styling\n * - Disabled state support\n * - Keyboard shortcut display\n * - Checkmark support for toggle items\n * - Separator support\n * - Selected/active state\n * - Icon support\n * - Submenu indicator\n * - Full keyboard and mouse support\n * \n * @example\n * ```tsx\n * // Basic menu item\n * <MenuItem label=\"Open...\" onClick={() => console.log('Open')} />\n * \n * // With keyboard shortcut\n * <MenuItem label=\"Save\" shortcut=\"⌘S\" onClick={() => console.log('Save')} />\n * \n * // Disabled item\n * <MenuItem label=\"Undo\" disabled />\n * \n * // Checked item (toggle)\n * <MenuItem label=\"Show Grid\" checked onClick={() => console.log('Toggle')} />\n * \n * // With separator\n * <MenuItem label=\"Preferences...\" separator onClick={() => console.log('Prefs')} />\n * \n * // With submenu indicator\n * <MenuItem label=\"Recent Files\" hasSubmenu />\n * ```\n */\nexport const MenuItem = forwardRef<HTMLButtonElement, MenuItemProps>(\n\t(\n\t\t{\n\t\t\tlabel,\n\t\t\tshortcut,\n\t\t\tdisabled = false,\n\t\t\tselected = false,\n\t\t\tseparator = false,\n\t\t\tchecked = false,\n\t\t\ticon,\n\t\t\tonClick,\n\t\t\tonFocus,\n\t\t\tonBlur,\n\t\t\tclassName = '',\n\t\t\thasSubmenu = false,\n\t\t\titems,\n\t\t},\n\t\tref\n\t) => {\n\t\tconst [isSubmenuOpen, setIsSubmenuOpen] = useState(false);\n\t\tconst effectiveHasSubmenu = hasSubmenu || !!items;\n\n\t\t// Class names\n\t\tconst menuItemClassNames = [\n\t\t\tstyles.menuItem,\n\t\t\tselected ? styles['menuItem--selected'] : '',\n\t\t\tdisabled ? styles['menuItem--disabled'] : '',\n\t\t\tseparator ? styles['menuItem--separator'] : '',\n\t\t\tclassName,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\t// Handle click\n\t\tconst handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\tif (disabled) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonClick?.(event);\n\t\t};\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={styles.menuItemContainer}\n\t\t\t\tonMouseEnter={() => setIsSubmenuOpen(true)}\n\t\t\t\tonMouseLeave={() => setIsSubmenuOpen(false)}\n\t\t\t\tstyle={{ position: 'relative', width: '100%' }}\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\tref={ref}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={menuItemClassNames}\n\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\tonFocus={onFocus}\n\t\t\t\t\tonBlur={onBlur}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\taria-disabled={disabled}\n\t\t\t\t\taria-checked={checked ? 'true' : undefined}\n\t\t\t\t>\n\t\t\t\t\t{/* Checkmark area */}\n\t\t\t\t\t<span className={styles.checkmark}>{checked && '✓'}</span>\n\n\t\t\t\t\t{/* Icon area */}\n\t\t\t\t\t{icon && <span className={styles.icon}>{icon}</span>}\n\n\t\t\t\t\t{/* Label */}\n\t\t\t\t\t<span className={styles.label}>{label}</span>\n\n\t\t\t\t\t{/* Shortcut */}\n\t\t\t\t\t{shortcut && <span className={styles.shortcut}>{shortcut}</span>}\n\n\t\t\t\t\t{/* Submenu indicator */}\n\t\t\t\t\t{effectiveHasSubmenu && <span className={styles.submenuArrow}>▶</span>}\n\t\t\t\t</button>\n\n\t\t\t\t{/* Submenu */}\n\t\t\t\t{items && isSubmenuOpen && (\n\t\t\t\t\t<div className={styles.submenu} role=\"menu\">\n\t\t\t\t\t\t{items}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{/* Separator line if needed */}\n\t\t\t\t{separator && <div className={styles.separatorLine} role=\"separator\" />}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nMenuItem.displayName = 'MenuItem';\n\nexport default MenuItem;\n","import React, { useState, useEffect, useRef } from 'react';\nimport styles from './MenuBar.module.css';\n\nexport interface MenuDropdownProps {\n /**\n * Menu label (displayed in the menu bar/button)\n */\n label: React.ReactNode;\n\n /**\n * Menu items (content of the dropdown)\n */\n items: React.ReactNode;\n\n /**\n * Whether the menu is disabled\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Custom class name for the menu container\n */\n className?: string;\n\n /**\n * Custom class name for menu dropdown\n */\n dropdownClassName?: string;\n\n /**\n * Alignment of the dropdown menu\n * @default 'left'\n */\n align?: 'left' | 'right';\n}\n\n/**\n * Mac OS 9 style MenuDropdown component\n * \n * A standalone dropdown menu that shares the styling of the MenuBar.\n * Useful for placing menus in the status area (rightContent) or other parts of the app.\n */\nexport const MenuDropdown: React.FC<MenuDropdownProps> = ({\n label,\n items,\n disabled = false,\n className = '',\n dropdownClassName = '',\n align = 'left',\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Handle click outside to close menu\n useEffect(() => {\n if (!isOpen) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [isOpen]);\n\n // Handle Escape key to close menu\n useEffect(() => {\n if (!isOpen) return;\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n setIsOpen(false);\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [isOpen]);\n\n const handleToggle = () => {\n if (!disabled) {\n setIsOpen(!isOpen);\n }\n };\n\n const menuContainerClassNames = [\n styles.menuContainer,\n className\n ].filter(Boolean).join(' ');\n\n const menuButtonClassNames = [\n styles.menuButton,\n isOpen ? styles['menuButton--open'] : '',\n disabled ? styles['menuButton--disabled'] : '',\n ].filter(Boolean).join(' ');\n\n const dropdownClassNames = [\n styles.dropdown,\n align === 'right' ? styles['dropdown--right'] : '',\n dropdownClassName\n ].filter(Boolean).join(' ');\n\n return (\n <div ref={containerRef} className={menuContainerClassNames}>\n <button\n type=\"button\"\n className={menuButtonClassNames}\n onClick={handleToggle}\n disabled={disabled}\n aria-haspopup=\"true\"\n aria-expanded={isOpen}\n aria-disabled={disabled}\n >\n {typeof label === 'string' ? <h3>{label}</h3> : label}\n </button>\n\n {isOpen && (\n <div\n className={dropdownClassNames}\n role=\"menu\"\n onClick={() => setIsOpen(false)} // Close when an item is clicked\n >\n {items}\n </div>\n )}\n </div>\n );\n};\n","// Scrollbar component - Mac OS 9 style\n// Classic scrollbar with arrows and draggable thumb\n\n'use client';\n\nimport React, { forwardRef, useRef, useState, useEffect, useCallback } from 'react';\nimport styles from './Scrollbar.module.css';\n\nexport interface ScrollbarProps {\n\t/**\n\t * Scrollbar orientation\n\t * @default 'vertical'\n\t */\n\torientation?: 'vertical' | 'horizontal';\n\n\t/**\n\t * Current scroll position (0-1)\n\t */\n\tvalue?: number;\n\n\t/**\n\t * Viewport size relative to content size (0-1)\n\t * Used to calculate thumb size\n\t */\n\tviewportRatio?: number;\n\n\t/**\n\t * Callback when scroll position changes\n\t */\n\tonChange?: (value: number) => void;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Whether scrollbar is disabled\n\t * @default false\n\t */\n\tdisabled?: boolean;\n}\n\n/**\n * Mac OS 9 style Scrollbar component\n * \n * Classic scrollbar with arrow buttons and draggable thumb.\n * Can be used standalone or integrated with scrollable content.\n * \n * @example\n * ```tsx\n * <Scrollbar\n * orientation=\"vertical\"\n * value={0.5}\n * viewportRatio={0.3}\n * onChange={(value) => console.log('Scroll position:', value)}\n * />\n * ```\n */\nexport const Scrollbar = forwardRef<HTMLDivElement, ScrollbarProps>(\n\t(\n\t\t{\n\t\t\torientation = 'vertical',\n\t\t\tvalue = 0,\n\t\t\tviewportRatio = 0.2,\n\t\t\tonChange,\n\t\t\tclassName = '',\n\t\t\tdisabled = false,\n\t\t},\n\t\tref\n\t) => {\n\t\tconst trackRef = useRef<HTMLDivElement>(null);\n\t\tconst [isDragging, setIsDragging] = useState(false);\n\t\tconst [dragStartPos, setDragStartPos] = useState(0);\n\t\tconst [dragStartValue, setDragStartValue] = useState(0);\n\n\t\tconst isVertical = orientation === 'vertical';\n\n\t\t// Calculate thumb size based on viewport ratio\n\t\tconst thumbSize = Math.max(viewportRatio * 100, 10); // Minimum 10% size\n\n\t\t// Calculate thumb position\n\t\tconst maxThumbPos = 100 - thumbSize;\n\t\tconst thumbPos = value * maxThumbPos;\n\n\t\t// Class names\n\t\tconst classNames = [\n\t\t\tstyles.scrollbar,\n\t\t\tstyles[`scrollbar--${orientation}`],\n\t\t\tdisabled && styles['scrollbar--disabled'],\n\t\t\tclassName,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\t// Handle arrow clicks\n\t\tconst handleDecrement = useCallback(() => {\n\t\t\tif (disabled || !onChange) return;\n\t\t\tconst newValue = Math.max(0, value - 0.1);\n\t\t\tonChange(newValue);\n\t\t}, [disabled, onChange, value]);\n\n\t\tconst handleIncrement = useCallback(() => {\n\t\t\tif (disabled || !onChange) return;\n\t\t\tconst newValue = Math.min(1, value + 0.1);\n\t\t\tonChange(newValue);\n\t\t}, [disabled, onChange, value]);\n\n\t\t// Handle track clicks\n\t\tconst handleTrackClick = useCallback(\n\t\t\t(event: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (disabled || !onChange || !trackRef.current) return;\n\n\t\t\t\tconst rect = trackRef.current.getBoundingClientRect();\n\t\t\t\tconst clickPos = isVertical\n\t\t\t\t\t? event.clientY - rect.top\n\t\t\t\t\t: event.clientX - rect.left;\n\t\t\t\tconst trackSize = isVertical ? rect.height : rect.width;\n\n\t\t\t\t// Convert click position to scroll value (0-1)\n\t\t\t\tconst clickRatio = clickPos / trackSize;\n\t\t\t\tconst newValue = Math.max(0, Math.min(1, clickRatio));\n\t\t\t\tonChange(newValue);\n\t\t\t},\n\t\t\t[disabled, onChange, isVertical]\n\t\t);\n\n\t\t// Handle thumb drag start\n\t\tconst handleThumbMouseDown = useCallback(\n\t\t\t(event: React.MouseEvent) => {\n\t\t\t\tif (disabled) return;\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tsetIsDragging(true);\n\t\t\t\tsetDragStartPos(isVertical ? event.clientY : event.clientX);\n\t\t\t\tsetDragStartValue(value);\n\t\t\t},\n\t\t\t[disabled, isVertical, value]\n\t\t);\n\n\t\t// Handle drag move\n\t\tuseEffect(() => {\n\t\t\tif (!isDragging || !onChange || !trackRef.current) return;\n\n\t\t\tconst handleMouseMove = (event: MouseEvent) => {\n\t\t\t\tconst currentPos = isVertical ? event.clientY : event.clientX;\n\t\t\t\tconst delta = currentPos - dragStartPos;\n\n\t\t\t\tconst rect = trackRef.current!.getBoundingClientRect();\n\t\t\t\tconst trackSize = isVertical ? rect.height : rect.width;\n\t\t\t\tconst deltaRatio = delta / trackSize;\n\n\t\t\t\tconst newValue = Math.max(0, Math.min(1, dragStartValue + deltaRatio));\n\t\t\t\tonChange(newValue);\n\t\t\t};\n\n\t\t\tconst handleMouseUp = () => {\n\t\t\t\tsetIsDragging(false);\n\t\t\t};\n\n\t\t\tdocument.addEventListener('mousemove', handleMouseMove);\n\t\t\tdocument.addEventListener('mouseup', handleMouseUp);\n\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener('mousemove', handleMouseMove);\n\t\t\t\tdocument.removeEventListener('mouseup', handleMouseUp);\n\t\t\t};\n\t\t}, [isDragging, dragStartPos, dragStartValue, onChange, isVertical]);\n\n\t\treturn (\n\t\t\t<div ref={ref} className={classNames}>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={`${styles.arrow} ${styles['arrow--start']}`}\n\t\t\t\t\tonClick={handleDecrement}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\taria-label={isVertical ? 'Scroll up' : 'Scroll left'}\n\t\t\t\t>\n\t\t\t\t\t<div className={styles.arrowIcon} />\n\t\t\t\t</button>\n\n\t\t\t\t<div\n\t\t\t\t\tref={trackRef}\n\t\t\t\t\tclassName={styles.track}\n\t\t\t\t\tonClick={handleTrackClick}\n\t\t\t\t\trole=\"scrollbar\"\n\t\t\t\t\taria-valuenow={Math.round(value * 100)}\n\t\t\t\t\taria-valuemin={0}\n\t\t\t\t\taria-valuemax={100}\n\t\t\t\t\taria-orientation={orientation}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={styles.thumb}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t[isVertical ? 'height' : 'width']: `${thumbSize}%`,\n\t\t\t\t\t\t\t[isVertical ? 'top' : 'left']: `${thumbPos}%`,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonMouseDown={handleThumbMouseDown}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={`${styles.arrow} ${styles['arrow--end']}`}\n\t\t\t\t\tonClick={handleIncrement}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\taria-label={isVertical ? 'Scroll down' : 'Scroll right'}\n\t\t\t\t>\n\t\t\t\t\t<div className={styles.arrowIcon} />\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nScrollbar.displayName = 'Scrollbar';\n\nexport default Scrollbar;\n","// ListView component - Mac OS 9 style multi-column list\n// List view with sortable columns and row selection\n\n'use client';\n\nimport React, { forwardRef, useState, useCallback } from 'react';\nimport { mergeClasses } from '../../utils/classNames';\nimport styles from './ListView.module.css';\n\nexport interface ListColumn {\n\t/**\n\t * Column key/identifier\n\t */\n\tkey: string;\n\n\t/**\n\t * Column header label\n\t */\n\tlabel: string;\n\n\t/**\n\t * Column width (px or percentage)\n\t * @default 'auto'\n\t */\n\twidth?: number | string;\n\n\t/**\n\t * Whether column is sortable\n\t * @default true\n\t */\n\tsortable?: boolean;\n}\n\nexport interface ListItem {\n\t/**\n\t * Unique item ID\n\t */\n\tid: string;\n\n\t/**\n\t * Item data - keys should match column keys\n\t */\n\t[key: string]: any;\n\n\t/**\n\t * Optional icon to display\n\t */\n\ticon?: React.ReactNode;\n}\n\n/**\n * Classes for targeting ListView sub-elements\n */\nexport interface ListViewClasses {\n\t/** Root container */\n\troot?: string;\n\t/** Header row container */\n\theader?: string;\n\t/** Individual header cell */\n\theaderCell?: string;\n\t/** Body container (scrollable area) */\n\tbody?: string;\n\t/** Individual row */\n\trow?: string;\n\t/** Individual cell */\n\tcell?: string;\n}\n\n/**\n * Row render prop state\n */\nexport interface RowRenderState {\n\t/** Whether this row is selected */\n\tisSelected: boolean;\n\t/** Whether this row is being hovered */\n\tisHovered: boolean;\n\t/** Row index in the list */\n\tindex: number;\n}\n\n/**\n * Row render prop default props\n * Spread these on your custom element for accessibility and behavior\n */\nexport interface RowDefaultProps {\n\tkey: string;\n\tclassName: string;\n\tonClick: (e: React.MouseEvent) => void;\n\tonDoubleClick: () => void;\n\tonMouseEnter: () => void;\n\tonMouseLeave: () => void;\n\t'data-selected': boolean;\n\t'data-index': number;\n\t'data-item-id': string;\n}\n\n/**\n * Cell render prop state\n */\nexport interface CellRenderState {\n\t/** Whether this cell is being hovered */\n\tisHovered: boolean;\n\t/** Whether the row containing this cell is selected */\n\tisRowSelected: boolean;\n\t/** Column index */\n\tcolumnIndex: number;\n\t/** Row index */\n\trowIndex: number;\n}\n\n/**\n * Header cell render prop state\n */\nexport interface HeaderCellRenderState {\n\t/** Whether this column is currently sorted */\n\tisSorted: boolean;\n\t/** Current sort direction if sorted */\n\tsortDirection?: 'asc' | 'desc';\n}\n\n/**\n * Header cell render prop default props\n */\nexport interface HeaderCellDefaultProps {\n\tkey: string;\n\tclassName: string;\n\tstyle: React.CSSProperties;\n\tonClick: () => void;\n\t'data-column': string;\n\t'data-sortable': boolean;\n\t'data-sorted'?: boolean;\n\t'data-sort-direction'?: 'asc' | 'desc';\n}\n\nexport interface ListViewProps {\n\t/**\n\t * Column definitions\n\t */\n\tcolumns: ListColumn[];\n\n\t/**\n\t * List items\n\t */\n\titems: ListItem[];\n\n\t/**\n\t * Selected item IDs\n\t */\n\tselectedIds?: string[];\n\n\t/**\n\t * Callback when selection changes\n\t */\n\tonSelectionChange?: (selectedIds: string[]) => void;\n\n\t/**\n\t * Callback when item is double-clicked\n\t */\n\tonItemOpen?: (item: ListItem) => void;\n\n\t/**\n\t * Callback when mouse enters an item (row-level)\n\t */\n\tonItemMouseEnter?: (item: ListItem) => void;\n\n\t/**\n\t * Callback when mouse leaves an item (row-level)\n\t */\n\tonItemMouseLeave?: (item: ListItem) => void;\n\n\t/**\n\t * Callback when column is clicked for sorting\n\t */\n\tonSort?: (columnKey: string, direction: 'asc' | 'desc') => void;\n\n\t/**\n\t * Additional CSS class names\n\t */\n\tclassName?: string;\n\n\t/**\n\t * Height of the list view\n\t */\n\theight?: number | string;\n\n\t/**\n\t * Custom classes for targeting sub-elements\n\t */\n\tclasses?: ListViewClasses;\n\n\t/**\n\t * Override row rendering\n\t * @param item - The list item\n\t * @param state - Row state (selected, hovered, index)\n\t * @param defaultProps - Props to spread on custom element for accessibility\n\t * @returns Custom row element (fully replaces default)\n\t */\n\trenderRow?: (\n\t\titem: ListItem,\n\t\tstate: RowRenderState,\n\t\tdefaultProps: RowDefaultProps\n\t) => React.ReactNode;\n\n\t/**\n\t * Override cell rendering\n\t * @param value - Cell value (item[columnKey])\n\t * @param item - Full item object\n\t * @param column - Column definition\n\t * @param state - Cell state (hovered, selected row, indices)\n\t * @returns Custom cell content (fully replaces default)\n\t */\n\trenderCell?: (\n\t\tvalue: any,\n\t\titem: ListItem,\n\t\tcolumn: ListColumn,\n\t\tstate: CellRenderState\n\t) => React.ReactNode;\n\n\t/**\n\t * Override header cell rendering\n\t * @param column - Column definition\n\t * @param state - Header state (sorted, direction)\n\t * @param defaultProps - Props to spread on custom element\n\t * @returns Custom header cell element (fully replaces default)\n\t */\n\trenderHeaderCell?: (\n\t\tcolumn: ListColumn,\n\t\tstate: HeaderCellRenderState,\n\t\tdefaultProps: HeaderCellDefaultProps\n\t) => React.ReactNode;\n\n\t/**\n\t * Callback when a cell is clicked\n\t */\n\tonCellClick?: (\n\t\titem: ListItem,\n\t\tcolumn: ListColumn,\n\t\tevent: React.MouseEvent\n\t) => void;\n\n\t/**\n\t * Callback when mouse enters a cell\n\t */\n\tonCellMouseEnter?: (\n\t\titem: ListItem,\n\t\tcolumn: ListColumn\n\t) => void;\n\n\t/**\n\t * Callback when mouse leaves a cell\n\t */\n\tonCellMouseLeave?: (\n\t\titem: ListItem,\n\t\tcolumn: ListColumn\n\t) => void;\n}\n\n/**\n * Mac OS 9 style ListView component\n * \n * Multi-column list with sortable headers and row selection.\n * Similar to Finder list view.\n * \n * @example\n * ```tsx\n * <ListView\n * columns={[\n * { key: 'name', label: 'Name' },\n * { key: 'modified', label: 'Date Modified' },\n * { key: 'size', label: 'Size' }\n * ]}\n * items={[\n * { id: '1', name: 'Document.txt', modified: 'Today', size: '2 KB' },\n * { id: '2', name: 'Images', modified: 'Yesterday', size: '--' }\n * ]}\n * selectedIds={['1']}\n * onSelectionChange={(ids) => console.log('Selected:', ids)}\n * onItemMouseEnter={(item) => console.log('Hovering:', item.name)}\n * />\n * ```\n */\nexport const ListView = forwardRef<HTMLDivElement, ListViewProps>(\n\t(\n\t\t{\n\t\t\tcolumns,\n\t\t\titems,\n\t\t\tselectedIds = [],\n\t\t\tonSelectionChange,\n\t\t\tonItemOpen,\n\t\t\tonItemMouseEnter,\n\t\t\tonItemMouseLeave,\n\t\t\tonSort,\n\t\t\tclassName = '',\n\t\t\theight = 'auto',\n\t\t\tclasses,\n\t\t\trenderRow,\n\t\t\trenderCell,\n\t\t\trenderHeaderCell,\n\t\t\tonCellClick,\n\t\t\tonCellMouseEnter,\n\t\t\tonCellMouseLeave,\n\t\t},\n\t\tref\n\t) => {\n\t\tconst [sortColumn, setSortColumn] = useState<string | null>(null);\n\t\tconst [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc');\n\t\tconst [hoveredRow, setHoveredRow] = useState<string | null>(null);\n\t\tconst [hoveredCell, setHoveredCell] = useState<{\n\t\t\trowId: string;\n\t\t\tcolumnKey: string;\n\t\t} | null>(null);\n\n\t\t// Class names\n\t\tconst classNames = mergeClasses(styles.listView, className, classes?.root);\n\n\t\t// Handle column header click\n\t\tconst handleColumnClick = useCallback(\n\t\t\t(columnKey: string, sortable: boolean = true) => {\n\t\t\t\tif (!sortable || !onSort) return;\n\n\t\t\t\tconst newDirection =\n\t\t\t\t\tsortColumn === columnKey && sortDirection === 'asc' ? 'desc' : 'asc';\n\t\t\t\tsetSortColumn(columnKey);\n\t\t\t\tsetSortDirection(newDirection);\n\t\t\t\tonSort(columnKey, newDirection);\n\t\t\t},\n\t\t\t[sortColumn, sortDirection, onSort]\n\t\t);\n\n\t\t// Handle row click\n\t\tconst handleRowClick = useCallback(\n\t\t\t(itemId: string, event: React.MouseEvent) => {\n\t\t\t\tif (!onSelectionChange) return;\n\n\t\t\t\tif (event.metaKey || event.ctrlKey) {\n\t\t\t\t\t// Multi-select with Cmd/Ctrl\n\t\t\t\t\tif (selectedIds.includes(itemId)) {\n\t\t\t\t\t\tonSelectionChange(selectedIds.filter((id) => id !== itemId));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonSelectionChange([...selectedIds, itemId]);\n\t\t\t\t\t}\n\t\t\t\t} else if (event.shiftKey && selectedIds.length > 0) {\n\t\t\t\t\t// Range select with Shift\n\t\t\t\t\tconst lastSelectedId = selectedIds[selectedIds.length - 1];\n\t\t\t\t\tconst lastIndex = items.findIndex((item) => item.id === lastSelectedId);\n\t\t\t\t\tconst currentIndex = items.findIndex((item) => item.id === itemId);\n\n\t\t\t\t\tconst start = Math.min(lastIndex, currentIndex);\n\t\t\t\t\tconst end = Math.max(lastIndex, currentIndex);\n\t\t\t\t\tconst rangeIds = items.slice(start, end + 1).map((item) => item.id);\n\n\t\t\t\t\tonSelectionChange(rangeIds);\n\t\t\t\t} else {\n\t\t\t\t\t// Single select\n\t\t\t\t\tonSelectionChange([itemId]);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[selectedIds, items, onSelectionChange]\n\t\t);\n\n\t\t// Handle row double-click\n\t\tconst handleRowDoubleClick = useCallback(\n\t\t\t(item: ListItem) => {\n\t\t\t\tif (onItemOpen) {\n\t\t\t\t\tonItemOpen(item);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[onItemOpen]\n\t\t);\n\n\t\t// Handle row mouse enter\n\t\tconst handleRowMouseEnter = useCallback(\n\t\t\t(item: ListItem) => {\n\t\t\t\tif (onItemMouseEnter) {\n\t\t\t\t\tonItemMouseEnter(item);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[onItemMouseEnter]\n\t\t);\n\n\t\t// Container style\n\t\tconst containerStyle: React.CSSProperties = {};\n\t\tif (height !== 'auto') {\n\t\t\tcontainerStyle.height = typeof height === 'number' ? `${height}px` : height;\n\t\t}\n\n\t\treturn (\n\t\t\t<div ref={ref} className={classNames} style={containerStyle}>\n\t\t\t\t{/* Column headers */}\n\t\t\t\t<div className={mergeClasses(styles.header, classes?.header)}>\n\t\t\t\t\t{columns.map((column) => {\n\t\t\t\t\t\tconst isSorted = sortColumn === column.key;\n\t\t\t\t\t\tconst headerState: HeaderCellRenderState = {\n\t\t\t\t\t\t\tisSorted,\n\t\t\t\t\t\t\tsortDirection: isSorted ? sortDirection : undefined,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst headerDefaultProps: HeaderCellDefaultProps = {\n\t\t\t\t\t\t\tkey: column.key,\n\t\t\t\t\t\t\tclassName: mergeClasses(\n\t\t\t\t\t\t\t\tstyles.headerCell,\n\t\t\t\t\t\t\t\tcolumn.sortable !== false && styles.sortable,\n\t\t\t\t\t\t\t\tclasses?.headerCell\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\twidth:\n\t\t\t\t\t\t\t\t\ttypeof column.width === 'number'\n\t\t\t\t\t\t\t\t\t\t? `${column.width}px`\n\t\t\t\t\t\t\t\t\t\t: column.width,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonClick: () => handleColumnClick(column.key, column.sortable),\n\t\t\t\t\t\t\t'data-column': column.key,\n\t\t\t\t\t\t\t'data-sortable': column.sortable !== false,\n\t\t\t\t\t\t\t...(isSorted && {\n\t\t\t\t\t\t\t\t'data-sorted': true,\n\t\t\t\t\t\t\t\t'data-sort-direction': sortDirection,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Use custom render or default\n\t\t\t\t\t\tif (renderHeaderCell) {\n\t\t\t\t\t\t\treturn renderHeaderCell(column, headerState, headerDefaultProps);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Default header cell rendering\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div {...headerDefaultProps}>\n\t\t\t\t\t\t\t\t{column.label}\n\t\t\t\t\t\t\t\t{isSorted && (\n\t\t\t\t\t\t\t\t\t<span className={styles.sortIndicator}>\n\t\t\t\t\t\t\t\t\t\t{sortDirection === 'asc' ? '▲' : '▼'}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\n\t\t\t\t{/* List items */}\n\t\t\t\t<div className={mergeClasses(styles.body, classes?.body)}>\n\t\t\t\t\t{items.map((item, rowIndex) => {\n\t\t\t\t\t\tconst isSelected = selectedIds.includes(item.id);\n\t\t\t\t\t\tconst isHovered = hoveredRow === item.id;\n\n\t\t\t\t\t\tconst rowState: RowRenderState = {\n\t\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\t\tisHovered,\n\t\t\t\t\t\t\tindex: rowIndex,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst rowDefaultProps: RowDefaultProps = {\n\t\t\t\t\t\t\tkey: item.id,\n\t\t\t\t\t\t\tclassName: mergeClasses(\n\t\t\t\t\t\t\t\tstyles.row,\n\t\t\t\t\t\t\t\tisSelected && styles.selected,\n\t\t\t\t\t\t\t\tclasses?.row\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tonClick: (e) => handleRowClick(item.id, e),\n\t\t\t\t\t\t\tonDoubleClick: () => handleRowDoubleClick(item),\n\t\t\t\t\t\t\tonMouseEnter: () => {\n\t\t\t\t\t\t\t\tsetHoveredRow(item.id);\n\t\t\t\t\t\t\t\tonItemMouseEnter?.(item);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonMouseLeave: () => {\n\t\t\t\t\t\t\t\tsetHoveredRow(null);\n\t\t\t\t\t\t\t\tsetHoveredCell(null);\n\t\t\t\t\t\t\t\tonItemMouseLeave?.(item);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t'data-selected': isSelected,\n\t\t\t\t\t\t\t'data-index': rowIndex,\n\t\t\t\t\t\t\t'data-item-id': item.id,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Use custom row render or default\n\t\t\t\t\t\tif (renderRow) {\n\t\t\t\t\t\t\treturn renderRow(item, rowState, rowDefaultProps);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Default row rendering\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div {...rowDefaultProps}>\n\t\t\t\t\t\t\t\t{columns.map((column, columnIndex) => {\n\t\t\t\t\t\t\t\t\tconst value = item[column.key];\n\t\t\t\t\t\t\t\t\tconst isCellHovered = \n\t\t\t\t\t\t\t\t\t\thoveredCell?.rowId === item.id && \n\t\t\t\t\t\t\t\t\t\thoveredCell?.columnKey === column.key;\n\n\t\t\t\t\t\t\t\t\tconst cellState: CellRenderState = {\n\t\t\t\t\t\t\t\t\t\tisHovered: isCellHovered,\n\t\t\t\t\t\t\t\t\t\tisRowSelected: isSelected,\n\t\t\t\t\t\t\t\t\t\tcolumnIndex,\n\t\t\t\t\t\t\t\t\t\trowIndex,\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t// Cell event handlers\n\t\t\t\t\t\t\t\t\tconst handleCellClick = (e: React.MouseEvent) => {\n\t\t\t\t\t\t\t\t\t\tif (onCellClick) {\n\t\t\t\t\t\t\t\t\t\t\tonCellClick(item, column, e);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\tconst handleCellMouseEnter = () => {\n\t\t\t\t\t\t\t\t\t\tsetHoveredCell({ rowId: item.id, columnKey: column.key });\n\t\t\t\t\t\t\t\t\t\tif (onCellMouseEnter) {\n\t\t\t\t\t\t\t\t\t\t\tonCellMouseEnter(item, column);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\tconst handleCellMouseLeave = () => {\n\t\t\t\t\t\t\t\t\t\tsetHoveredCell(null);\n\t\t\t\t\t\t\t\t\t\tif (onCellMouseLeave) {\n\t\t\t\t\t\t\t\t\t\t\tonCellMouseLeave(item, column);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t// Use custom cell render or default\n\t\t\t\t\t\t\t\t\tif (renderCell) {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tkey={column.key}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={mergeClasses(styles.cell, classes?.cell)}\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttypeof column.width === 'number'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `${column.width}px`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: column.width,\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tdata-column={column.key}\n\t\t\t\t\t\t\t\t\t\t\t\tdata-hovered={isCellHovered}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={handleCellClick}\n\t\t\t\t\t\t\t\t\t\t\t\tonMouseEnter={handleCellMouseEnter}\n\t\t\t\t\t\t\t\t\t\t\t\tonMouseLeave={handleCellMouseLeave}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{renderCell(value, item, column, cellState)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Default cell rendering\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tkey={column.key}\n\t\t\t\t\t\t\t\t\t\t\tclassName={mergeClasses(styles.cell, classes?.cell)}\n\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\twidth:\n\t\t\t\t\t\t\t\t\t\t\t\t\ttypeof column.width === 'number'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `${column.width}px`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: column.width,\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tdata-column={column.key}\n\t\t\t\t\t\t\t\t\t\t\tdata-hovered={isCellHovered}\n\t\t\t\t\t\t\t\t\t\t\tonClick={handleCellClick}\n\t\t\t\t\t\t\t\t\t\t\tonMouseEnter={handleCellMouseEnter}\n\t\t\t\t\t\t\t\t\t\t\tonMouseLeave={handleCellMouseLeave}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{columnIndex === 0 && item.icon && (\n\t\t\t\t\t\t\t\t\t\t\t\t<span className={styles.icon}>{item.icon}</span>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nListView.displayName = 'ListView';\n\nexport default ListView;\n","// FolderList component - Mac OS 9 style folder/file list window\n// Window component with integrated ListView for file browsing\n\n'use client';\n\nimport React, { forwardRef, useState } from 'react';\nimport { Window, WindowProps } from '../Window/Window';\nimport { WindowPosition } from '../../types';\nimport { \n\tListView, \n\tListColumn, \n\tListItem,\n\tListViewClasses,\n\tRowRenderState,\n\tRowDefaultProps,\n\tCellRenderState,\n\tHeaderCellRenderState,\n\tHeaderCellDefaultProps\n} from '../ListView/ListView';\nimport styles from './FolderList.module.css';\n\n/**\n * Classes for targeting FolderList sub-elements\n */\nexport interface FolderListClasses {\n\t/** Root window container */\n\troot?: string;\n\t/** Window component */\n\twindow?: string;\n\t/** Title bar */\n\ttitleBar?: string;\n\t/** ListView container */\n\tlistView?: string;\n\t/** ListView header */\n\theader?: string;\n\t/** ListView header cell */\n\theaderCell?: string;\n\t/** ListView body */\n\tbody?: string;\n\t/** ListView row */\n\trow?: string;\n\t/** ListView cell */\n\tcell?: string;\n}\n\nexport interface FolderListProps extends Omit<WindowProps, 'children' | 'classes'> {\n\t/**\n\t * Column definitions for the list\n\t * @default [{ key: 'name', label: 'Name' }, { key: 'modified', label: 'Date Modified' }, { key: 'size', label: 'Size' }]\n\t */\n\tcolumns?: ListColumn[];\n\n\t/**\n\t * Whether the folder list window can be dragged by its title bar\n\t * Window starts in normal flow and becomes absolutely positioned when dragged\n\t * @default false\n\t */\n\tdraggable?: boolean;\n\n\t/**\n\t * Initial position for draggable folder lists (uncontrolled)\n\t * Only used when draggable is true\n\t */\n\tdefaultPosition?: WindowPosition;\n\n\t/**\n\t * Controlled position for draggable folder lists\n\t * Only used when draggable is true\n\t */\n\tposition?: WindowPosition;\n\n\t/**\n\t * Callback when folder list position changes (during drag)\n\t * Only called when draggable is true\n\t */\n\tonPositionChange?: (position: WindowPosition) => void;\n\n\t/**\n\t * Items to display in the list\n\t */\n\titems: ListItem[];\n\n\t/**\n\t * Selected item IDs\n\t */\n\tselectedIds?: string[];\n\n\t/**\n\t * Callback when selection changes\n\t */\n\tonSelectionChange?: (selectedIds: string[]) => void;\n\n\t/**\n\t * Callback when item is double-clicked (opened)\n\t */\n\tonItemOpen?: (item: ListItem) => void;\n\n\t/**\n\t * Callback when mouse enters an item (row-level)\n\t */\n\tonItemMouseEnter?: (item: ListItem) => void;\n\n\t/**\n\t * Callback when mouse leaves an item (row-level)\n\t */\n\tonItemMouseLeave?: (item: ListItem) => void;\n\n\t/**\n\t * Callback when column header is clicked for sorting\n\t */\n\tonSort?: (columnKey: string, direction: 'asc' | 'desc') => void;\n\n\t/**\n\t * Callback when mouse enters the folder list window\n\t */\n\tonMouseEnter?: (event: React.MouseEvent<HTMLDivElement>) => void;\n\n\t/**\n\t * Height of the list view area\n\t * @default 400\n\t */\n\tlistHeight?: number | string;\n\n\t/**\n\t * Custom classes for targeting sub-elements\n\t */\n\tclasses?: FolderListClasses;\n\n\t/**\n\t * Override row rendering\n\t * @param item - The list item\n\t * @param state - Row state (selected, hovered, index)\n\t * @param defaultProps - Props to spread on custom element for accessibility\n\t * @returns Custom row element (fully replaces default)\n\t */\n\trenderRow?: (\n\t\titem: ListItem,\n\t\tstate: RowRenderState,\n\t\tdefaultProps: RowDefaultProps\n\t) => React.ReactNode;\n\n\t/**\n\t * Override cell rendering\n\t * @param value - Cell value (item[columnKey])\n\t * @param item - Full item object\n\t * @param column - Column definition\n\t * @param state - Cell state (hovered, selected row, indices)\n\t * @returns Custom cell content (fully replaces default)\n\t */\n\trenderCell?: (\n\t\tvalue: any,\n\t\titem: ListItem,\n\t\tcolumn: ListColumn,\n\t\tstate: CellRenderState\n\t) => React.ReactNode;\n\n\t/**\n\t * Override header cell rendering\n\t * @param column - Column definition\n\t * @param state - Header state (sorted, direction)\n\t * @param defaultProps - Props to spread on custom element\n\t * @returns Custom header cell element (fully replaces default)\n\t */\n\trenderHeaderCell?: (\n\t\tcolumn: ListColumn,\n\t\tstate: HeaderCellRenderState,\n\t\tdefaultProps: HeaderCellDefaultProps\n\t) => React.ReactNode;\n\n\t/**\n\t * Callback when a cell is clicked\n\t */\n\tonCellClick?: (\n\t\titem: ListItem,\n\t\tcolumn: ListColumn,\n\t\tevent: React.MouseEvent\n\t) => void;\n\n\t/**\n\t * Callback when mouse enters a cell\n\t */\n\tonCellMouseEnter?: (\n\t\titem: ListItem,\n\t\tcolumn: ListColumn\n\t) => void;\n\n\t/**\n\t * Callback when mouse leaves a cell\n\t */\n\tonCellMouseLeave?: (\n\t\titem: ListItem,\n\t\tcolumn: ListColumn\n\t) => void;\n}\n\n/**\n * Mac OS 9 style FolderList component\n * \n * Window with integrated ListView for browsing files and folders.\n * Similar to Finder list view in Mac OS 9.\n * \n * @example\n * ```tsx\n * // Basic folder list\n * <FolderList\n * title=\"My Documents\"\n * items={[\n * { id: '1', name: 'Document.txt', modified: 'Today', size: '2 KB', icon: <FileIcon /> },\n * { id: '2', name: 'Images', modified: 'Yesterday', size: '--', icon: <FolderIcon /> }\n * ]}\n * selectedIds={['1']}\n * onSelectionChange={(ids) => console.log('Selected:', ids)}\n * onItemOpen={(item) => console.log('Open:', item.name)}\n * />\n * \n * // Draggable folder list\n * <FolderList\n * title=\"My Documents\"\n * items={items}\n * draggable\n * defaultPosition={{ x: 100, y: 100 }}\n * />\n * ```\n */\nexport const FolderList = forwardRef<HTMLDivElement, FolderListProps>(\n\t(\n\t\t{\n\t\t\tcolumns = [\n\t\t\t\t{ key: 'name', label: 'Name', width: '40%' },\n\t\t\t\t{ key: 'modified', label: 'Date Modified', width: '30%' },\n\t\t\t\t{ key: 'size', label: 'Size', width: '30%' },\n\t\t\t],\n\t\t\titems,\n\t\t\tselectedIds,\n\t\t\tonSelectionChange,\n\t\t\tonItemOpen,\n\t\t\tonItemMouseEnter,\n\t\t\tonItemMouseLeave,\n\t\t\tonSort,\n\t\t\tonMouseEnter,\n\t\t\tlistHeight = 400,\n\t\t\tclasses,\n\t\t\trenderRow,\n\t\t\trenderCell,\n\t\t\trenderHeaderCell,\n\t\t\tonCellClick,\n\t\t\tonCellMouseEnter,\n\t\t\tonCellMouseLeave,\n\t\t\t...windowProps\n\t\t},\n\t\tref\n\t) => {\n\t\t// Build ListView classes from FolderList classes\n\t\tconst listViewClasses: ListViewClasses | undefined = classes ? {\n\t\t\troot: classes.listView,\n\t\t\theader: classes.header,\n\t\t\theaderCell: classes.headerCell,\n\t\t\tbody: classes.body,\n\t\t\trow: classes.row,\n\t\t\tcell: classes.cell,\n\t\t} : undefined;\n\n\t\t// Window content with ListView\n\t\treturn (\n\t\t\t<Window \n\t\t\t\tref={ref} \n\t\t\t\tcontentClassName={styles.folderListContent} \n\t\t\t\tonMouseEnter={onMouseEnter}\n\t\t\t\tclassName={classes?.root}\n\t\t\t\t{...windowProps}\n\t\t\t>\n\t\t\t\t<ListView\n\t\t\t\t\tcolumns={columns}\n\t\t\t\t\titems={items}\n\t\t\t\t\tselectedIds={selectedIds}\n\t\t\t\t\tonSelectionChange={onSelectionChange}\n\t\t\t\t\tonItemOpen={onItemOpen}\n\t\t\t\t\tonItemMouseEnter={onItemMouseEnter}\n\t\t\t\t\tonItemMouseLeave={onItemMouseLeave}\n\t\t\t\t\tonSort={onSort}\n\t\t\t\t\theight={listHeight}\n\t\t\t\t\tclassName={styles.listView}\n\t\t\t\t\tclasses={listViewClasses}\n\t\t\t\t\trenderRow={renderRow}\n\t\t\t\t\trenderCell={renderCell}\n\t\t\t\t\trenderHeaderCell={renderHeaderCell}\n\t\t\t\t\tonCellClick={onCellClick}\n\t\t\t\t\tonCellMouseEnter={onCellMouseEnter}\n\t\t\t\t\tonCellMouseLeave={onCellMouseLeave}\n\t\t\t\t/>\n\t\t\t</Window>\n\t\t);\n\t}\n);\n\nFolderList.displayName = 'FolderList';\n\nexport default FolderList;\n","// Mac OS 9 Design Tokens\n// Extracted from Figma file: vy2T5MCXFz7QWf4Ba86eqN\n// Reference: docs/figma-map.md\n\n/**\n * Color tokens based on Mac OS 9 grayscale palette\n * Extracted from Figma styles and component analysis\n */\nexport const colors = {\n\t// Grayscale palette (Figma style IDs included for reference)\n\tgray100: '#FFFFFF', // 18:47 - White\n\tgray200: '#EEEEEE', // 19:2507 - Base UI background\n\tgray300: '#DDDDDD', // 18:60 - Inferred mid-tone\n\tgray400: '#CCCCCC', // 18:1970 - Inferred mid-tone\n\tgray500: '#999999', // 20:7306 - Inferred mid-tone\n\tgray600: '#666666', // 18:52 - Inferred dark tone\n\tgray700: '#4D4D4D', // 18:46 - Inferred dark tone\n\tgray800: '#333333', // 45:184845 - Inferred very dark\n\tgray900: '#262626', // 18:48 - Black (strokes, borders, text)\n\n\t// Accent colors\n\tlavender: '#CCCCFF', // 60:134029 - Cover background\n\tazul: '#0066CC', // 49:36229 - Accent (inferred)\n\tlinkRed: '#CC0000', // 102:398, 102:3935 - Link color (inferred)\n\n\t// Semantic mappings\n\tbackground: '#EEEEEE', // Gray 200\n\tforeground: '#262626', // Gray 900\n\tborder: '#262626', // Gray 900\n\ttext: '#262626', // Gray 900\n\ttextInverse: '#FFFFFF', // Gray 100\n\tsurface: '#EEEEEE', // Gray 200\n\tsurfaceInset: '#FFFFFF', // Gray 100 (for inset areas)\n\n\t// Legacy names for compatibility\n\tblack: '#262626',\n\twhite: '#FFFFFF',\n\n\t// Status colors (Mac OS 9 style)\n\tfocus: '#000080',\n\terror: '#CC0000',\n\tsuccess: '#008000',\n\twarning: '#FF8C00',\n} as const;\n\n/**\n * Typography tokens\n * Based on Figma text styles and authentic Mac OS 9 system fonts\n * \n * Mac OS 9 Typography:\n * - Charcoal: Primary system UI font (menus, buttons, dialogs)\n * - Geneva: Body text and secondary UI elements\n * - Chicago: Classic Mac system font (menu bar, earlier versions)\n * - Apple Garamond: Headlines and editorial content\n */\nexport const typography = {\n\tfontFamily: {\n\t\t// Charcoal - Primary system UI font used throughout Mac OS 9\n\t\t// Fallback chain: Try Charcoal variants, then Chicago, then modern system fonts\n\t\tsystem: 'Charcoal, \"Charcoal CY\", Chicago, \"Chicago Classic\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif',\n\t\t\n\t\t// Geneva - Used for dialog text and body content in Mac OS 9\n\t\t// More readable for longer text than Charcoal\n\t\tbody: 'Geneva, \"Geneva CY\", \"Lucida Grande\", \"Lucida Sans Unicode\", sans-serif',\n\t\t\n\t\t// Apple Garamond Light - Used for headlines in Figma\n\t\tdisplay: '\"Apple Garamond Light\", \"Apple Garamond\", Garamond, Georgia, serif',\n\t\t\n\t\t// Chicago - Classic Mac OS system font (menu bar, classic UI)\n\t\tchicago: 'Chicago, \"Chicago Classic\", \"Charcoal CY\", Charcoal, monospace',\n\t\t\n\t\t// Monaco - Mac OS 9 monospace font\n\t\tmono: 'Monaco, \"Monaco CY\", \"SF Mono\", \"Courier New\", Courier, monospace',\n\t},\n\tfontSize: {\n\t\txs: '9px', // Smallest UI text (9pt Chicago/Charcoal)\n\t\tsm: '10px', // Small labels (10pt)\n\t\tmd: '12px', // Standard UI text - Mac OS 9 default (12pt)\n\t\tlg: '13px', // Slightly larger UI text\n\t\txl: '14px', // Large UI text\n\t\t'2xl': '16px', // Headings\n\t\t'3xl': '18px', // Large headings\n\t\t'4xl': '20px', // Major headings\n\t\t'5xl': '24px', // Display text\n\t},\n\tfontWeight: {\n\t\tnormal: 700, // Charcoal Bold is the Mac OS 9 default\n\t\tmedium: 700, // Medium (same as bold for Charcoal)\n\t\tsemibold: 700, // Semibold (same as bold)\n\t\tbold: 700, // Bold weight\n\t\tlight: 400, // Light weight (regular Charcoal)\n\t},\n\tlineHeight: {\n\t\ttight: 1.2, // Tight leading (Mac OS 9 style)\n\t\tsnug: 1.3, // Snug\n\t\tnormal: 1.4, // Normal (Mac OS 9 used tighter line heights)\n\t\trelaxed: 1.5, // Relaxed\n\t\tloose: 1.6, // Loose\n\t},\n\tletterSpacing: {\n\t\ttighter: '-0.02em', // Slightly tighter\n\t\ttight: '-0.01em', // Tight\n\t\tnormal: '0', // Normal - Mac OS 9 default\n\t\twide: '0.01em', // Wide\n\t\twider: '0.02em', // Wider\n\t},\n} as const;\n\n/**\n * Spacing tokens based on Mac OS 9 measurements\n * Mac OS 9 used tight spacing; using 2px as base unit\n */\nexport const spacing = {\n\t'0': '0',\n\tpx: '1px',\n\t'0.5': '2px', // Minimal spacing\n\t'1': '4px', // Base grid unit\n\t'1.5': '6px',\n\t'2': '8px',\n\t'2.5': '10px',\n\t'3': '12px',\n\t'4': '16px',\n\t'5': '20px',\n\t'6': '24px',\n\t'8': '32px',\n\t'10': '40px',\n\t'12': '48px',\n\t'16': '64px',\n\n\t// Legacy names\n\txs: '2px',\n\tsm: '4px',\n\tmd: '8px',\n\tlg: '12px',\n\txl: '16px',\n\t'2xl': '24px',\n\t'3xl': '32px',\n} as const;\n\n/**\n * Shadow tokens for Mac OS 9 bevel effects\n * Exact values from Figma Window Shadow effect (67:95038)\n * \n * Classic 3-layer bevel:\n * 1. Hard drop shadow (2px, 2px, 0 blur) - creates depth\n * 2. Top-left highlight (light inner shadow)\n * 3. Bottom-right shadow (dark inner shadow)\n */\nexport const shadows = {\n\t// Standard raised bevel (default button state)\n\tbevel:\n\t\t'inset 2px 2px 0 rgba(255, 255, 255, 0.6), inset -2px -2px 0 rgba(38, 38, 38, 0.4), 2px 2px 0 rgba(38, 38, 38, 1)',\n\n\t// Inverted bevel for pressed/inset states\n\tinset:\n\t\t'inset -2px -2px 0 rgba(255, 255, 255, 0.6), inset 2px 2px 0 rgba(38, 38, 38, 0.4), 2px 2px 0 rgba(38, 38, 38, 1)',\n\n\t// Individual layers for custom composition\n\tdropShadow: '2px 2px 0 rgba(38, 38, 38, 1)',\n\tinnerHighlight: 'inset 2px 2px 0 rgba(255, 255, 255, 0.6)',\n\tinnerShadow: 'inset -2px -2px 0 rgba(38, 38, 38, 0.4)',\n\n\t// Legacy format for compatibility\n\traised: {\n\t\thighlight: 'inset 2px 2px 0 rgba(255, 255, 255, 0.6)',\n\t\tshadow: 'inset -2px -2px 0 rgba(38, 38, 38, 0.4)',\n\t\tfull: 'inset 2px 2px 0 rgba(255, 255, 255, 0.6), inset -2px -2px 0 rgba(38, 38, 38, 0.4), 2px 2px 0 rgba(38, 38, 38, 1)',\n\t},\n\n\t// No shadow (flat)\n\tnone: 'none',\n} as const;\n\n/**\n * Border tokens\n * Mac OS 9 used consistent 1px borders with sharp corners\n */\nexport const borders = {\n\twidth: {\n\t\tnone: '0',\n\t\tthin: '1px',\n\t\tmedium: '2px',\n\t\tthick: '3px',\n\t},\n\tstyle: {\n\t\tsolid: 'solid',\n\t\tdashed: 'dashed',\n\t\tdotted: 'dotted',\n\t\tnone: 'none',\n\t},\n\tradius: {\n\t\tnone: '0', // Mac OS 9 always used square corners\n\t\tsm: '0', // Kept for API consistency\n\t\tmd: '0',\n\t\tlg: '0',\n\t\tfull: '0',\n\t},\n} as const;\n\n/**\n * Z-index scale for layering\n */\nexport const zIndex = {\n\tbase: 0,\n\tdropdown: 1000,\n\tsticky: 1100,\n\tmodal: 1200,\n\tpopover: 1300,\n\ttooltip: 1400,\n} as const;\n\n/**\n * Transition/Animation tokens\n * Mac OS 9 had minimal animations, but we add subtle ones for modern feel\n */\nexport const transitions = {\n\tduration: {\n\t\tinstant: '0ms',\n\t\tfast: '100ms',\n\t\tnormal: '200ms',\n\t\tslow: '300ms',\n\t},\n\ttiming: {\n\t\tlinear: 'linear',\n\t\teaseIn: 'cubic-bezier(0.4, 0, 1, 1)',\n\t\teaseOut: 'cubic-bezier(0, 0, 0.2, 1)',\n\t\teaseInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n\t},\n} as const;\n\n// Export all tokens as a single object\nexport const tokens = {\n\tcolors,\n\ttypography,\n\tspacing,\n\tborders,\n\tshadows,\n\tzIndex,\n\ttransitions,\n} as const;\n\nexport default tokens;"],"names":["forwardRef","styles","_jsx","_jsxs","_Fragment","useState","Children","isValidElement","useCallback","useRef","useEffect"],"mappings":";;;;;;;;AA2JA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCG;AACI,MAAM,MAAM,GAAGA,gBAAU,CAC/B,CAAC,KAAK,EAAE,GAAG,KAAI;IACd,MAAM,EACL,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,KAAK,EACf,WAAW,EACX,gBAAgB,GAAG,KAAK,EACxB,QAAQ,EACR,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,eAAe,EACf,WAAW,EACX,SAAS,GAAG,EAAE,EACd,QAAQ,EACR,GAAG,SAAS,EACZ,GAAG,KAAK;;AAGT,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,KAAK,GAAG;;AAI/B,IAAA,MAAM,UAAU,GAAG;AAClB,QAAAC,QAAM,CAAC,MAAM;AACb,QAAAA,QAAM,CAAC,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAC;AAC5B,QAAAA,QAAM,CAAC,CAAA,QAAA,EAAW,IAAI,CAAA,CAAE,CAAC;AACzB,QAAA,SAAS,IAAIA,QAAM,CAAC,oBAAoB,CAAC;AACzC,QAAA,QAAQ,IAAIA,QAAM,CAAC,kBAAkB,CAAC;AACtC,QAAA,OAAO,IAAIA,QAAM,CAAC,iBAAiB,CAAC;AACpC,QAAA,OAAO,IAAI,gBAAgB,IAAIA,QAAM,CAAC,wBAAwB,CAAC;AAC/D,QAAA,QAAQ,IAAIA,QAAM,CAAC,mBAAmB,CAAC;QACvC,CAAC,QAAQ,IAAI,SAAS,KAAKA,QAAM,CAAC,mBAAmB,CAAC;QACtD,SAAS;AACT;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;;AAGX,IAAA,MAAM,cAAc,GAAwB;QAC3C,YAAY,EAAE,QAAQ,IAAI,SAAS,KAAK,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,IAAI,SAAS;AACzG,QAAA,kBAAkB,EAAE,eAAe;AACnC,QAAA,cAAc,EAAE,WAAW;QAC3B,eAAe,EAAE,QAAQ,IAAI,OAAO;AACpC,QAAA,WAAW,EAAE,OAAO;KACpB;;IAGD,IAAI,MAAM,EAAE;AACX,QAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,SAAyB;;QAG/E,IAAI,QAAQ,GAAG,GAAG;AAClB,QAAA,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE;YAChC,QAAQ,GAAG,qBAAqB;QACjC;;AAGA,QAAA,MAAM,WAAW,GAAG,CAAC,CAAsC,KAAI;AAC9D,YAAA,IAAI,QAAQ,IAAI,OAAO,EAAE;gBACxB,CAAC,CAAC,cAAc,EAAE;gBAClB;YACD;AACA,YAAA,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;AACvB,QAAA,CAAC;QAED,QACCC,sBACC,GAAG,EAAE,GAAmC,EACxC,IAAI,EAAE,QAAQ,IAAI,OAAO,GAAG,SAAS,GAAG,IAAI,EAC5C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,UAAU,EAAA,GACjB,cAAc,KACd,SAAS,EACb,OAAO,EAAE,WAAW,YAEnB,mBAAmB,EAAE,EAAA,CACnB;IAEN;;IAGA,MAAM,EACL,IAAI,GAAG,QAAQ,EACf,IAAI,EACJ,UAAU,EACV,UAAU,EACV,cAAc,EACd,UAAU,EACV,GAAG,WAAW,EACd,GAAG,SAA2B;IAE/B,QACCA,2BACC,GAAG,EAAE,GAAmC,EACxC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,IAAI,OAAO,EAC7B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,EAAA,GACjB,cAAc,EAAA,GACd,WAAW,YAEd,mBAAmB,EAAE,EAAA,CACd;;AAIV,IAAA,SAAS,mBAAmB,GAAA;;QAE3B,IAAI,OAAO,EAAE;AACZ,YAAA,QACCC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA,CACE,CAAC,gBAAgB,KACjBF,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAED,QAAM,CAAC,yBAAyB,CAAC,iBAAc,MAAM,EAAA,QAAA,EAAA,QAAA,EAAA,CAE/D,CACP,EACDC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAED,QAAM,CAAC,cAAc,CAAC,EAAA,QAAA,EACrC,WAAW,IAAI,QAAQ,EAAA,CAClB,CAAA,EAAA,CACL;QAEL;;QAGA,IAAI,QAAQ,EAAE;YACb,OAAOC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAED,QAAM,CAAC,mBAAmB,CAAC,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAQ;QACvE;;QAGA,QACCE,kDACE,QAAQ,KACRD,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAED,QAAM,CAAC,mBAAmB,CAAC,EAAA,aAAA,EAAc,MAAM,YAC9D,QAAQ,EAAA,CACH,CACP,EACDC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAED,QAAM,CAAC,cAAc,CAAC,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAQ,EACzD,SAAS,KACTC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAED,QAAM,CAAC,oBAAoB,CAAC,iBAAc,MAAM,EAAA,QAAA,EAC/D,SAAS,EAAA,CACJ,CACP,CAAA,EAAA,CACC;IAEL;AACD,CAAC;AAGF,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;AC9T7B;;;;;;;;;;;;;;;;AAgBG;AACI,MAAM,IAAI,GAAGD,gBAAU,CAC7B,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;AACpE,IAAA,MAAM,UAAU,GAAG,CAACC,QAAM,CAAC,IAAI,EAAEA,QAAM,CAAC,SAAS,IAAI,CAAA,CAAE,CAAC,EAAE,SAAS;SACjE,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;IAEV,QACCC,wBACC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,UAAU,EACrB,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,EACnB,KAAK,EAAC,4BAA4B,EAAA,YAAA,EACtB,KAAK,EAAA,aAAA,EACJ,CAAC,KAAK,EACnB,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,cAAc,EAAA,GAChC,KAAK,YAER,QAAQ,EAAA,CACJ;AAER,CAAC;AAGF,IAAI,CAAC,WAAW,GAAG,MAAM;;AChEzB;;;;AAIG;AACI,MAAM,WAAW,GAAa,OACpCC,eAAA,CAAC,IAAI,EAAA,EAAC,KAAK,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,aAClDA,eAAA,CAAA,GAAA,EAAA,EAAG,QAAQ,EAAC,uBAAuB,aAClCD,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,iBAAiB,EAAC,IAAI,EAAC,SAAS,EAAA,CAAG,EAC3CA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,gBAAgB,EAAC,IAAI,EAAC,SAAS,EAAA,CAAG,EAC1CA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,gBAAgB,EAAC,IAAI,EAAC,OAAO,EAAA,CAAG,EACxCA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,eAAe,EAAC,IAAI,EAAC,OAAO,EAAA,CAAG,EACvCA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,kBAAkB,EAAC,IAAI,EAAC,SAAS,EAAA,CAAG,EAC5CA,yBAAM,CAAC,EAAC,kBAAkB,EAAC,IAAI,EAAC,SAAS,EAAA,CAAG,EAC5CA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,kBAAkB,EAAC,IAAI,EAAC,SAAS,GAAG,EAC5CA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,eAAe,EAAC,IAAI,EAAC,SAAS,GAAG,EACzCA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,eAAe,EAAC,IAAI,EAAC,SAAS,EAAA,CAAG,EACzCA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,kBAAkB,EAAC,IAAI,EAAC,OAAO,EAAA,CAAG,EAC1CA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,kBAAkB,EAAC,IAAI,EAAC,OAAO,EAAA,CAAG,EAC1CA,yBAAM,CAAC,EAAC,kBAAkB,EAAC,IAAI,EAAC,OAAO,EAAA,CAAG,EAC1CA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,gBAAgB,EAAC,IAAI,EAAC,OAAO,EAAA,CAAG,EACxCA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,eAAe,EAAC,IAAI,EAAC,OAAO,EAAA,CAAG,EACvCA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,kBAAkB,EAAC,IAAI,EAAC,SAAS,EAAA,CAAG,EAC5CA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,kBAAkB,EAAC,IAAI,EAAC,SAAS,EAAA,CAAG,EAC5CA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,kBAAkB,EAAC,IAAI,EAAC,SAAS,EAAA,CAAG,EAC5CA,yBAAM,CAAC,EAAC,eAAe,EAAC,IAAI,EAAC,SAAS,EAAA,CAAG,EACzCA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,eAAe,EAAC,IAAI,EAAC,SAAS,EAAA,CAAG,EACzCA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,kBAAkB,EAAC,IAAI,EAAC,SAAS,GAAG,EAC5CA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,kBAAkB,EAAC,IAAI,EAAC,SAAS,EAAA,CAAG,EAC5CA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,kBAAkB,EAAC,IAAI,EAAC,SAAS,EAAA,CAAG,EAC5CA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,gBAAgB,EAAC,IAAI,EAAC,SAAS,EAAA,CAAG,EAC1CA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,eAAe,EAAC,IAAI,EAAC,SAAS,EAAA,CAAG,CAAA,EAAA,CACtC,EACJA,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EACCA,cAAA,CAAA,UAAA,EAAA,EAAU,EAAE,EAAC,iBAAiB,EAAA,QAAA,EAC7BA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAA,CAAG,EAAA,CAClC,EAAA,CACL,CAAA,EAAA,CACD;;AC5CR;AACA;AAIA;;;AAGG;AACI,MAAM,YAAY,GAAG;;AAE3B,IAAA,OAAO,EAAE,WAAW;CACX;AAQV;;;;AAIG;AACG,SAAU,OAAO,CAAC,IAAc,EAAA;AACrC,IAAA,OAAO,YAAY,CAAC,IAAI,CAAC;AAC1B;;ACNA;;;;;;;;;;;;AAYG;AACI,MAAM,WAAW,GAA+B,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,KAAI;AAC7E,IAAA,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAEnC,IAAI,CAAC,aAAa,EAAE;AACnB,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,CAAA,uBAAA,CAAyB,CAAC;AACpD,QAAA,OAAO,IAAI;IACZ;;AAGA,IAAA,OAAOA,cAAA,CAAC,aAAa,EAAA,EAAA,GAAK,KAAK,GAAI;AACpC;AAEA,WAAW,CAAC,WAAW,GAAG,aAAa;;;;AC9CvC;AACA;AAgDA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACI,MAAM,UAAU,GAAGF,gBAAU,CACnC,CACC,EACC,IAAI,EACJ,KAAK,EACL,aAAa,GAAG,OAAO,EACvB,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,EAAE,EACd,GAAG,KAAK,EACR,EACD,GAAG,KACA;;AAEH,IAAA,MAAM,UAAU,GAAG;AAClB,QAAAC,QAAM,CAAC,UAAU;AACjB,QAAAA,QAAM,CAAC,CAAA,YAAA,EAAe,OAAO,CAAA,CAAE,CAAC;AAChC,QAAAA,QAAM,CAAC,CAAA,YAAA,EAAe,IAAI,CAAA,CAAE,CAAC;AAC7B,QAAA,KAAK,IAAIA,QAAM,CAAC,wBAAwB,CAAC;AACzC,QAAA,KAAK,IAAIA,QAAM,CAAC,CAAA,kBAAA,EAAqB,aAAa,EAAE,CAAC;AACrD,QAAA,QAAQ,IAAIA,QAAM,CAAC,sBAAsB,CAAC;QAC1C,SAAS;AACT;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;AAEX,IAAA,QACCE,eAAA,CAAA,QAAA,EAAA,EACC,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,QAAQ,EAAA,GACd,KAAK,EAAA,QAAA,EAAA,CAEV,KAAK,KAAK,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,KAAK,CAAC,KAC9DD,yBAAM,SAAS,EAAED,QAAM,CAAC,KAAK,EAAA,QAAA,EAAG,KAAK,GAAQ,CAC7C,EACDC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAED,QAAM,CAAC,IAAI,EAAA,QAAA,EAAG,IAAI,EAAA,CAAQ,EAC1C,KAAK,KAAK,aAAa,KAAK,OAAO,IAAI,aAAa,KAAK,QAAQ,CAAC,KAClEC,yBAAM,SAAS,EAAED,QAAM,CAAC,KAAK,EAAA,QAAA,EAAG,KAAK,GAAQ,CAC7C,CAAA,EAAA,CACS;AAEX,CAAC;AAGF,UAAU,CAAC,WAAW,GAAG,YAAY;;;;AC7CrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCG;AACI,MAAM,QAAQ,GAAGD,gBAAU,CACjC,CACC,EACC,OAAO,EACP,cAAc,EACd,aAAa,GAAG,KAAK,EACrB,QAAQ,GAAG,KAAK,EAChB,KAAK,EACL,aAAa,GAAG,OAAO,EACvB,IAAI,GAAG,IAAI,EACX,KAAK,GAAG,KAAK,EACb,SAAS,EACT,eAAe,EACf,SAAS,GAAG,EAAE,EACd,QAAQ,EACR,EAAE,EACF,GAAG,KAAK,EACR,EACD,GAAG,KACA;IACH,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAmB,IAAI,CAAC;AACrD,IAAA,MAAM,WAAW,GAAI,GAAyC,IAAI,QAAQ;;AAG1E,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACpB,QAAA,IAAI,WAAW,EAAE,OAAO,EAAE;AACzB,YAAA,WAAW,CAAC,OAAO,CAAC,aAAa,GAAG,aAAa;QAClD;AACD,IAAA,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;;IAGhC,MAAM,UAAU,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;;AAGvC,IAAA,MAAM,iBAAiB,GAAG;AACzB,QAAAC,QAAM,CAAC,OAAO;AACd,QAAAA,QAAM,CAAC,CAAA,SAAA,EAAY,IAAI,CAAA,CAAE,CAAC;AAC1B,QAAAA,QAAM,CAAC,CAAA,eAAA,EAAkB,aAAa,CAAA,CAAE,CAAC;AACzC,QAAA,QAAQ,IAAIA,QAAM,CAAC,mBAAmB,CAAC;AACvC,QAAA,KAAK,IAAIA,QAAM,CAAC,gBAAgB,CAAC;QACjC,SAAS;AACT;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;AAEX,IAAA,MAAM,kBAAkB,GAAG;AAC1B,QAAAA,QAAM,CAAC,QAAQ;AACf,QAAAA,QAAM,CAAC,CAAA,UAAA,EAAa,IAAI,CAAA,CAAE,CAAC;AAC3B,QAAA,aAAa,IAAIA,QAAM,CAAC,yBAAyB,CAAC;AAClD,QAAA,KAAK,IAAIA,QAAM,CAAC,iBAAiB,CAAC;AAClC;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;IAEX,MAAM,eAAe,GAAG,CAACA,QAAM,CAAC,KAAK,EAAEA,QAAM,CAAC,CAAA,OAAA,EAAU,IAAI,CAAA,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGzF,IAAA,MAAM,cAAc,GAAG;QACtB,YAAY,EAAE,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS;AAC5C,QAAA,kBAAkB,EAAE,eAAe;AACnC,QAAA,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,aAAa,GAAI,OAAiB,GAAG,SAAS;KAC9D;AAED,IAAA,QACCE,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,iBAAiB,EAAA,QAAA,EAAA,CAC/B,KAAK,IAAI,aAAa,KAAK,MAAM,KACjCD,cAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAA,QAAA,EACpD,KAAK,EAAA,CACC,CACR,EAEDA,cAAA,CAAA,OAAA,EAAA,EACC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,UAAU,EACd,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,KACd,cAAc,EAAA,GACd,KAAK,EAAA,CACR,EAED,KAAK,IAAI,aAAa,KAAK,OAAO,KAClCA,cAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAA,QAAA,EACpD,KAAK,GACC,CACR,CAAA,EAAA,CACI;AAER,CAAC;AAGF,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;AChIjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CG;AACI,MAAM,KAAK,GAAGF,gBAAU,CAC9B,CACC,EACC,OAAO,EACP,cAAc,EACd,QAAQ,GAAG,KAAK,EAChB,KAAK,EACL,aAAa,GAAG,OAAO,EACvB,IAAI,GAAG,IAAI,EACX,KAAK,GAAG,KAAK,EACb,SAAS,EACT,eAAe,EACf,SAAS,GAAG,EAAE,EACd,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,EAAE,EACF,GAAG,KAAK,EACR,EACD,GAAG,KACA;;IAEH,MAAM,OAAO,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;;AAGpC,IAAA,MAAM,iBAAiB,GAAG;AACzB,QAAAC,QAAM,CAAC,OAAO;AACd,QAAAA,QAAM,CAAC,CAAA,SAAA,EAAY,IAAI,CAAA,CAAE,CAAC;AAC1B,QAAAA,QAAM,CAAC,CAAA,eAAA,EAAkB,aAAa,CAAA,CAAE,CAAC;AACzC,QAAA,QAAQ,IAAIA,QAAM,CAAC,mBAAmB,CAAC;AACvC,QAAA,KAAK,IAAIA,QAAM,CAAC,gBAAgB,CAAC;QACjC,SAAS;AACT;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;AAEX,IAAA,MAAM,eAAe,GAAG;AACvB,QAAAA,QAAM,CAAC,KAAK;AACZ,QAAAA,QAAM,CAAC,CAAA,OAAA,EAAU,IAAI,CAAA,CAAE,CAAC;AACxB,QAAA,KAAK,IAAIA,QAAM,CAAC,cAAc,CAAC;AAC/B;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;IAEX,MAAM,eAAe,GAAG,CAACA,QAAM,CAAC,KAAK,EAAEA,QAAM,CAAC,CAAA,OAAA,EAAU,IAAI,CAAA,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGzF,IAAA,MAAM,cAAc,GAAG;QACtB,YAAY,EAAE,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS;AAC5C,QAAA,kBAAkB,EAAE,eAAe;AACnC,QAAA,cAAc,EAAE,KAAK;KACrB;IAED,QACCE,yBAAK,SAAS,EAAE,iBAAiB,EAAA,QAAA,EAAA,CAC/B,KAAK,IAAI,aAAa,KAAK,MAAM,KACjCD,0BAAO,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAA,QAAA,EACjD,KAAK,EAAA,CACC,CACR,EAEDA,cAAA,CAAA,OAAA,EAAA,EACC,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,OAAO,EACZ,EAAE,EAAE,OAAO,EACX,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAAA,GACd,cAAc,EAAA,GACd,KAAK,GACR,EAED,KAAK,IAAI,aAAa,KAAK,OAAO,KAClCA,0BAAO,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAA,QAAA,EACjD,KAAK,EAAA,CACC,CACR,CAAA,EAAA,CACI;AAER,CAAC;AAGF,KAAK,CAAC,WAAW,GAAG,OAAO;;;;ACnI3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCG;AACI,MAAM,SAAS,GAAGF,gBAAU,CAClC,CACC,EACC,KAAK,EACL,aAAa,GAAG,KAAK,EACrB,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,KAAK,EACjB,KAAK,GAAG,KAAK,EACb,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,EACT,eAAe,EACf,SAAS,GAAG,EAAE,EACd,gBAAgB,GAAG,EAAE,EACrB,IAAI,GAAG,MAAM,EACb,EAAE,EACF,QAAQ,EACR,GAAG,KAAK,EACR,EACD,GAAG,KACA;;IAEH,MAAM,OAAO,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;;AAGnC,IAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,OAAO,SAAS;AACpC,IAAA,MAAM,OAAO,GAAG,CAAA,EAAG,OAAO,QAAQ;;AAGlC,IAAA,MAAM,cAAc,GAAG;AACtB,QAAA,UAAU,IAAI,QAAQ;QACtB,KAAK,IAAI,YAAY,IAAI,OAAO;QAChC,eAAe;AACf;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;;AAGZ,IAAA,MAAM,iBAAiB,GAAG;AACzB,QAAAC,QAAM,CAAC,OAAO;AACd,QAAAA,QAAM,CAAC,CAAA,SAAA,EAAY,IAAI,CAAA,CAAE,CAAC;AAC1B,QAAAA,QAAM,CAAC,CAAA,eAAA,EAAkB,aAAa,CAAA,CAAE,CAAC;AACzC,QAAA,SAAS,IAAIA,QAAM,CAAC,qBAAqB,CAAC;AAC1C,QAAA,QAAQ,IAAIA,QAAM,CAAC,mBAAmB,CAAC;QACvC,gBAAgB;AAChB;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;AAEX,IAAA,MAAM,sBAAsB,GAAG;QAC9BA,QAAM,CAAC,eAAe,CAAC;QACvB,CAAC,QAAQ,IAAI,SAAS,KAAKA,QAAM,CAAC,0BAA0B,CAAC;AAC7D,QAAA,QAAQ,IAAIA,QAAM,CAAC,+BAA+B,CAAC;AACnD,QAAA,SAAS,IAAIA,QAAM,CAAC,gCAAgC,CAAC;AACrD;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;AAEX,IAAA,MAAM,eAAe,GAAG;AACvB,QAAAA,QAAM,CAAC,KAAK;AACZ,QAAAA,QAAM,CAAC,CAAA,OAAA,EAAU,IAAI,CAAA,CAAE,CAAC;AACxB,QAAA,KAAK,IAAIA,QAAM,CAAC,cAAc,CAAC;AAC/B,QAAA,SAAS,IAAIA,QAAM,CAAC,mBAAmB,CAAC;QACxC,SAAS;AACT;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;IAEX,MAAM,eAAe,GAAG,CAACA,QAAM,CAAC,KAAK,EAAEA,QAAM,CAAC,CAAA,OAAA,EAAU,IAAI,CAAA,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGzF,IAAA,MAAM,cAAc,GAAG;QACtB,YAAY,EAAE,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS;QAC5C,kBAAkB,EAAE,cAAc,IAAI,SAAS;AAC/C,QAAA,cAAc,EAAE,KAAK;KACrB;AAED,IAAA,QACCE,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,iBAAiB,aAC/B,KAAK,KAAK,aAAa,KAAK,KAAK,IAAI,aAAa,KAAK,MAAM,CAAC,KAC9DD,cAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAA,QAAA,EACjD,KAAK,EAAA,CACC,CACR,EAEDC,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,sBAAsB,aACtC,QAAQ,KACRD,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAED,QAAM,CAAC,iBAAiB,CAAC,EAAA,aAAA,EAAc,MAAM,EAAA,QAAA,EAC5D,QAAQ,GACH,CACP,EAEDC,0BACC,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,OAAO,EACX,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE,QAAQ,EAAA,GACd,cAAc,EAAA,GACd,KAAK,GACR,EAED,SAAS,KACTA,yBAAM,SAAS,EAAED,QAAM,CAAC,kBAAkB,CAAC,EAAA,aAAA,EAAc,MAAM,EAAA,QAAA,EAC7D,SAAS,EAAA,CACJ,CACP,CAAA,EAAA,CACM,EAEL,KAAK,IAAI,aAAa,KAAK,OAAO,KAClCC,cAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,YACjD,KAAK,EAAA,CACC,CACR,EAEF,UAAU,IAAI,CAAC,KAAK,KACpBA,sBAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAED,QAAM,CAAC,aAAa,CAAC,EAAA,QAAA,EAC/C,UAAU,GACR,CACJ,EAEA,KAAK,IAAI,YAAY,KACrBC,sBAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAED,QAAM,CAAC,eAAe,CAAC,EAAA,QAAA,EAChD,YAAY,GACV,CACJ,CAAA,EAAA,CACM;AAER,CAAC;AAGF,SAAS,CAAC,WAAW,GAAG,WAAW;;;;ACtKnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCG;AACI,MAAM,MAAM,GAAGD,gBAAU,CAC/B,CACC,EACC,KAAK,EACL,aAAa,GAAG,KAAK,EACrB,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,KAAK,EACjB,KAAK,GAAG,KAAK,EACb,YAAY,EACZ,UAAU,EACV,OAAO,EACP,WAAW,EACX,SAAS,EACT,eAAe,EACf,SAAS,GAAG,EAAE,EACd,gBAAgB,GAAG,EAAE,EACrB,EAAE,EACF,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACR,EACD,GAAG,KACA;;IAEH,MAAM,QAAQ,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;;AAGpC,IAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,QAAQ,SAAS;AACrC,IAAA,MAAM,OAAO,GAAG,CAAA,EAAG,QAAQ,QAAQ;;AAGnC,IAAA,MAAM,cAAc,GAAG;AACtB,QAAA,UAAU,IAAI,QAAQ;QACtB,KAAK,IAAI,YAAY,IAAI,OAAO;QAChC,eAAe;AACf;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;;AAGX,IAAA,MAAM,iBAAiB,GAAG;AACzB,QAAAC,QAAM,CAAC,OAAO;AACd,QAAAA,QAAM,CAAC,CAAA,SAAA,EAAY,IAAI,CAAA,CAAE,CAAC;AAC1B,QAAAA,QAAM,CAAC,CAAA,eAAA,EAAkB,aAAa,CAAA,CAAE,CAAC;AACzC,QAAA,SAAS,IAAIA,QAAM,CAAC,qBAAqB,CAAC;AAC1C,QAAA,QAAQ,IAAIA,QAAM,CAAC,mBAAmB,CAAC;QACvC,gBAAgB;AAChB;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;AAEX,IAAA,MAAM,gBAAgB,GAAG;AACxB,QAAAA,QAAM,CAAC,MAAM;AACb,QAAAA,QAAM,CAAC,CAAA,QAAA,EAAW,IAAI,CAAA,CAAE,CAAC;AACzB,QAAA,KAAK,IAAIA,QAAM,CAAC,eAAe,CAAC;AAChC,QAAA,SAAS,IAAIA,QAAM,CAAC,oBAAoB,CAAC;QACzC,SAAS;AACT;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;IAEX,MAAM,eAAe,GAAG,CAACA,QAAM,CAAC,KAAK,EAAEA,QAAM,CAAC,CAAA,OAAA,EAAU,IAAI,CAAA,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;AAG1F,IAAA,MAAM,cAAc,GAAG;QACtB,YAAY,EAAE,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS;QAC5C,kBAAkB,EAAE,cAAc,IAAI,SAAS;AAC/C,QAAA,cAAc,EAAE,KAAK;KACrB;;IAGD,MAAM,aAAa,GAAG,MAAK;QAC1B,IAAI,OAAO,EAAE;YACZ,QACCE,kDACE,WAAW,KACXD,cAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,EAAE,EAAC,QAAQ,kBACvB,WAAW,EAAA,CACJ,CACT,EACA,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,MACnBA,cAAA,CAAA,QAAA,EAAA,EAA2B,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAA,QAAA,EACvE,MAAM,CAAC,KAAK,EAAA,EADD,MAAM,CAAC,KAAK,CAEhB,CACT,CAAC,CAAA,EAAA,CACA;QAEL;AACA,QAAA,OAAO,QAAQ;AAChB,IAAA,CAAC;IAED,QACCC,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,iBAAiB,EAAA,QAAA,EAAA,CAC/B,KAAK,KAAK,aAAa,KAAK,KAAK,IAAI,aAAa,KAAK,MAAM,CAAC,KAC9DD,cAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAA,QAAA,EAClD,KAAK,GACC,CACR,EAEDA,cAAA,CAAA,QAAA,EAAA,EACC,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,gBAAgB,EAC3B,QAAQ,EAAE,QAAQ,EAAA,GACd,cAAc,EAAA,GACd,KAAK,EAAA,QAAA,EAER,aAAa,EAAE,EAAA,CACR,EAER,KAAK,IAAI,aAAa,KAAK,OAAO,KAClCA,cAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAA,QAAA,EAClD,KAAK,EAAA,CACC,CACR,EAEA,UAAU,IAAI,CAAC,KAAK,KACpBA,cAAA,CAAA,GAAA,EAAA,EAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAED,QAAM,CAAC,aAAa,CAAC,EAAA,QAAA,EAC/C,UAAU,EAAA,CACR,CACJ,EAEA,KAAK,IAAI,YAAY,KACrBC,cAAA,CAAA,GAAA,EAAA,EAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAED,QAAM,CAAC,eAAe,CAAC,EAAA,QAAA,EAChD,YAAY,EAAA,CACV,CACJ,CAAA,EAAA,CACI;AAER,CAAC;AAGF,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;AC5N7B;;;AAGG;MACU,QAAQ,GAA4B,CAAC,EAAE,QAAQ,EAAE,KAAI;IACjE,OAAOC,cAAA,CAAAE,mBAAA,EAAA,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAI;AACvB;AAEA,QAAQ,CAAC,WAAW,GAAG,UAAU;AAyDjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BG;AACI,MAAM,IAAI,GAAwB,CAAC,EACzC,QAAQ,EACR,gBAAgB,GAAG,CAAC,EACpB,SAAS,EAAE,mBAAmB,EAC9B,QAAQ,EACR,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,KAAK,EACjB,SAAS,GAAG,EAAE,EACd,gBAAgB,GAAG,EAAE,EACrB,cAAc,GAAG,EAAE,EACnB,SAAS,GAAG,MAAM,GAClB,KAAI;;IAEJ,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAGC,cAAQ,CAAC,gBAAgB,CAAC;AACpF,IAAA,MAAM,YAAY,GAAG,mBAAmB,KAAK,SAAS;IACtD,MAAM,cAAc,GAAG,YAAY,GAAG,mBAAmB,GAAG,qBAAqB;;IAGjF,MAAM,IAAI,GAAGC,cAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC7C,CAAC,KAAK,KAA2CC,oBAAc,CAAC,KAAK,CAAC,CACtE;;AAGD,IAAA,MAAM,eAAe,GAAGC,iBAAW,CAClC,CAAC,KAAa,KAAI;AACjB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ;YAAE;QAEhC,IAAI,CAAC,YAAY,EAAE;YAClB,wBAAwB,CAAC,KAAK,CAAC;QAChC;QACA,QAAQ,GAAG,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;IACnC,CAAC,EACD,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,CAC9B;;IAGD,MAAM,aAAa,GAAGA,iBAAW,CAChC,CAAC,KAA0B,EAAE,YAAoB,KAAI;QACpD,IAAI,QAAQ,GAAG,YAAY;AAE3B,QAAA,QAAQ,KAAK,CAAC,GAAG;AAChB,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,SAAS;gBACb,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,QAAQ,GAAG,YAAY,GAAG,CAAC;gBAC3B,IAAI,QAAQ,GAAG,CAAC;AAAE,oBAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;;AAE5C,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,KAAK,YAAY,EAAE;AACnE,oBAAA,QAAQ,EAAE;oBACV,IAAI,QAAQ,GAAG,CAAC;AAAE,wBAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;gBAC7C;gBACA;AACD,YAAA,KAAK,YAAY;AACjB,YAAA,KAAK,WAAW;gBACf,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,QAAQ,GAAG,YAAY,GAAG,CAAC;AAC3B,gBAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM;oBAAE,QAAQ,GAAG,CAAC;;AAEzC,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,KAAK,YAAY,EAAE;AACnE,oBAAA,QAAQ,EAAE;AACV,oBAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM;wBAAE,QAAQ,GAAG,CAAC;gBAC1C;gBACA;AACD,YAAA,KAAK,MAAM;gBACV,KAAK,CAAC,cAAc,EAAE;gBACtB,QAAQ,GAAG,CAAC;;AAEZ,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACpE,oBAAA,QAAQ,EAAE;gBACX;gBACA;AACD,YAAA,KAAK,KAAK;gBACT,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;;AAE1B,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE;AACtD,oBAAA,QAAQ,EAAE;gBACX;gBACA;AACD,YAAA;gBACC;;QAGF,eAAe,CAAC,QAAQ,CAAC;AAC1B,IAAA,CAAC,EACD,CAAC,IAAI,EAAE,eAAe,CAAC,CACvB;;AAGD,IAAA,MAAM,mBAAmB,GAAG,CAACP,QAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAEnF,IAAA,MAAM,iBAAiB,GAAG;AACzB,QAAAA,QAAM,CAAC,OAAO;AACd,QAAAA,QAAM,CAAC,CAAA,SAAA,EAAY,IAAI,CAAA,CAAE,CAAC;AAC1B,QAAA,SAAS,IAAIA,QAAM,CAAC,qBAAqB,CAAC;QAC1C,gBAAgB;AAChB;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;AAEX,IAAA,MAAM,wBAAwB,GAAG;AAChC,QAAAA,QAAM,CAAC,cAAc;AACrB,QAAAA,QAAM,CAAC,CAAA,gBAAA,EAAmB,IAAI,CAAA,CAAE,CAAC;QACjC,cAAc;AACd;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;IAEX,QACCE,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,mBAAmB,EAAA,QAAA,EAAA,CAClCD,cAAA,CAAA,KAAA,EAAA,EAAK,IAAI,EAAC,SAAS,EAAA,YAAA,EAAa,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAA,QAAA,EACrE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;AACxB,oBAAA,MAAM,QAAQ,GAAG,KAAK,KAAK,cAAc;AACzC,oBAAA,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ;AAErC,oBAAA,MAAM,aAAa,GAAG;AACrB,wBAAAD,QAAM,CAAC,GAAG;AACV,wBAAAA,QAAM,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,CAAC;AACtB,wBAAA,QAAQ,IAAIA,QAAM,CAAC,aAAa,CAAC;AACjC,wBAAA,UAAU,IAAIA,QAAM,CAAC,eAAe,CAAC;AACrC,wBAAA,SAAS,IAAIA,QAAM,CAAC,iBAAiB,CAAC;AACtC;yBACC,MAAM,CAAC,OAAO;yBACd,IAAI,CAAC,GAAG,CAAC;oBAEX,QACCE,4BAEC,IAAI,EAAC,KAAK,EACV,IAAI,EAAC,QAAQ,EAAA,eAAA,EACE,QAAQ,EAAA,eAAA,EACR,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,EAC/B,EAAE,EAAE,CAAA,IAAA,EAAO,KAAK,CAAA,CAAE,EAClB,QAAQ,EAAE,QAAQ,GAAG,CAAC,GAAG,EAAE,EAC3B,QAAQ,EAAE,UAAU,EACpB,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,MAAM,eAAe,CAAC,KAAK,CAAC,EACrC,SAAS,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,aAExC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAID,yBAAM,SAAS,EAAED,QAAM,CAAC,OAAO,YAAG,GAAG,CAAC,KAAK,CAAC,IAAI,GAAQ,EAC1E,GAAG,CAAC,KAAK,CAAC,KAAK,CAAA,EAAA,EAbX,KAAK,CAcF;AAEX,gBAAA,CAAC,CAAC,EAAA,CACG,EAEL,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;AACxB,gBAAA,MAAM,QAAQ,GAAG,KAAK,KAAK,cAAc;AACzC,gBAAA,QACCC,cAAA,CAAA,KAAA,EAAA,EAEC,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,CAAA,MAAA,EAAS,KAAK,EAAE,EAAA,iBAAA,EACH,CAAA,IAAA,EAAO,KAAK,CAAA,CAAE,EAC/B,MAAM,EAAE,CAAC,QAAQ,EACjB,SAAS,EAAE,wBAAwB,EAAA,QAAA,EAElC,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAA,EAP1B,KAAK,CAQL;YAER,CAAC,CAAC,CAAA,EAAA,CACG;AAER;AAEA,IAAI,CAAC,WAAW,GAAG,MAAM;;ACzSzB;AACA;AAEA;;;;;;;;;;;;AAYG;MACU,YAAY,GAAG,CAAC,GAAG,OAA8C,KAAY;IACzF,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACzC;AAEA;;;;;;;;;;;;;AAaG;AACI,MAAM,kBAAkB,GAAG,CAAC,SAAiB,KAAI;AACvD,IAAA,OAAO,CAAC,GAAG,iBAAwD,KAAI;AACtE,QAAA,OAAO,YAAY,CAAC,SAAS,EAAE,GAAG,iBAAiB,CAAC;AACrD,IAAA,CAAC;AACF;;;;ACgGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DG;AACI,MAAM,MAAM,GAAGF,gBAAU,CAC/B,CACC,EACC,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAM,GAAG,IAAI,EACb,KAAK,GAAG,MAAM,EACd,MAAM,GAAG,MAAM,EACf,SAAS,GAAG,EAAE,EACd,gBAAgB,GAAG,EAAE,EACrB,OAAO,EACP,YAAY,GAAG,IAAI,EACnB,OAAO,EACP,UAAU,EACV,UAAU,EACV,YAAY,EACZ,SAAS,GAAG,KAAK,EACjB,SAAS,GAAG,KAAK,EACjB,eAAe,EACf,QAAQ,EAAE,kBAAkB,EAC5B,gBAAgB,GAChB,EACD,GAAG,KACA;;AAEH,IAAA,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAGK,cAAQ,CACvD,eAAe,IAAI,IAAI,CACvB;IACD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC;AACnD,IAAA,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAGA,cAAQ,CACnD,CAAC,EAAE,eAAe,IAAI,kBAAkB,CAAC,CACzC;AACD,IAAA,MAAM,YAAY,GAAGI,YAAM,CAAkC,IAAI,CAAC;;AAGlE,IAAA,MAAM,eAAe,GAAG,kBAAkB,IAAI,gBAAgB;;AAG9D,IAAA,MAAM,uBAAuB,GAAGD,iBAAW,CAC1C,CAAC,KAAuC,KAAI;AAC3C,QAAA,IAAI,CAAC,SAAS;YAAE;;QAGhB,IAAK,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACpD;QACD;QAEA,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,MAAM,aAAa,GAAI,KAAK,CAAC,aAA6B,CAAC,OAAO,CACjE,CAAA,CAAA,EAAIP,QAAM,CAAC,MAAM,CAAA,CAAE,CACJ;AAEhB,QAAA,IAAI,CAAC,aAAa;YAAE;AAEpB,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,qBAAqB,EAAE;;QAGlD,YAAY,CAAC,OAAO,GAAG;AACtB,YAAA,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;AAC5B,YAAA,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;SAC3B;QAED,aAAa,CAAC,IAAI,CAAC;AACpB,IAAA,CAAC,EACD,CAAC,SAAS,CAAC,CACX;;IAGDS,eAAS,CAAC,MAAK;AACd,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,OAAO;YAAE;AAE1C,QAAA,MAAM,eAAe,GAAG,CAAC,KAAiB,KAAI;YAC7C,KAAK,CAAC,cAAc,EAAE;YAEtB,IAAI,CAAC,YAAY,CAAC,OAAO;gBAAE;AAE3B,YAAA,MAAM,WAAW,GAAmB;gBACnC,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;gBACzC,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;aACzC;;AAGD,YAAA,IAAI,kBAAkB,IAAI,gBAAgB,EAAE;gBAC3C,gBAAgB,CAAC,WAAW,CAAC;YAC9B;iBAAO;gBACN,mBAAmB,CAAC,WAAW,CAAC;YACjC;;YAGA,IAAI,CAAC,cAAc,EAAE;gBACpB,iBAAiB,CAAC,IAAI,CAAC;YACxB;AACD,QAAA,CAAC;QAED,MAAM,aAAa,GAAG,MAAK;YAC1B,aAAa,CAAC,KAAK,CAAC;AACpB,YAAA,YAAY,CAAC,OAAO,GAAG,IAAI;AAC5B,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC;AACvD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC;AAEnD,QAAA,OAAO,MAAK;AACX,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC;AAC1D,YAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC;AACvD,QAAA,CAAC;IACF,CAAC,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;;AAGtE,IAAA,MAAM,gBAAgB,GAAG,YAAY,CACpCT,QAAM,CAAC,MAAM,EACb,MAAM,GAAGA,QAAM,CAAC,gBAAgB,CAAC,GAAGA,QAAM,CAAC,kBAAkB,CAAC,EAC9D,SAAS,IAAI,cAAc,IAAIA,QAAM,CAAC,mBAAmB,CAAC,EAC1D,SAAS,EACT,OAAO,EAAE,IAAI,CACb;AAED,IAAA,MAAM,iBAAiB,GAAG,YAAY,CAACA,QAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,CAAC;IAE1F,MAAM,kBAAkB,GAAG,YAAY,CACtCA,QAAM,CAAC,QAAQ,EACf,SAAS,IAAIA,QAAM,CAAC,qBAAqB,CAAC,EAC1C,UAAU,IAAIA,QAAM,CAAC,oBAAoB,CAAC,EAC1C,OAAO,EAAE,QAAQ,CACjB;;IAGD,MAAM,WAAW,GAAwB,EAAE;AAC3C,IAAA,IAAI,KAAK,KAAK,MAAM,EAAE;AACrB,QAAA,WAAW,CAAC,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,GAAG,KAAK,CAAA,EAAA,CAAI,GAAG,KAAK;IACrE;AACA,IAAA,IAAI,MAAM,KAAK,MAAM,EAAE;AACtB,QAAA,WAAW,CAAC,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,GAAG,GAAG,MAAM,CAAA,EAAA,CAAI,GAAG,MAAM;IACzE;;AAGA,IAAA,IAAI,SAAS,IAAI,cAAc,IAAI,eAAe,EAAE;AACnD,QAAA,WAAW,CAAC,QAAQ,GAAG,UAAU;QACjC,WAAW,CAAC,IAAI,GAAG,CAAA,EAAG,eAAe,CAAC,CAAC,IAAI;QAC3C,WAAW,CAAC,GAAG,GAAG,CAAA,EAAG,eAAe,CAAC,CAAC,IAAI;IAC3C;;IAGA,MAAM,cAAc,GAAG,MAAK;QAC3B,IAAI,QAAQ,EAAE;AACb,YAAA,OAAO,QAAQ;QAChB;QAEA,IAAI,KAAK,EAAE;AACV,YAAA,QACCE,eAAA,CAAA,KAAA,EAAA,EACC,SAAS,EAAE,kBAAkB,EAAA,kBAAA,EACX,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAC1E,WAAW,EAAE,uBAAuB,EAAA,QAAA,EAAA,CAEnC,YAAY,KACZA,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,YAAY,CAACF,QAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAA,QAAA,EAAA,CAC9D,OAAO,KACRC,cAAA,CAAA,QAAA,EAAA,EACC,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,YAAY,CAACD,QAAM,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,EACrE,OAAO,EAAE,OAAO,EAAA,YAAA,EACL,OAAO,EAClB,KAAK,EAAC,OAAO,EAAA,QAAA,EAEbC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAED,QAAM,CAAC,QAAQ,EAAA,CAAI,EAAA,CAC3B,CACR,EACA,UAAU,KACVC,cAAA,CAAA,QAAA,EAAA,EACC,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,YAAY,CAACD,QAAM,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,EACrE,OAAO,EAAE,UAAU,EAAA,YAAA,EACR,UAAU,EACrB,KAAK,EAAC,UAAU,EAAA,QAAA,EAEhBC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAED,QAAM,CAAC,WAAW,EAAA,CAAI,EAAA,CAC9B,CACT,EACA,UAAU,KACVC,cAAA,CAAA,QAAA,EAAA,EACC,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,YAAY,CAACD,QAAM,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,EACrE,OAAO,EAAE,UAAU,EAAA,YAAA,EACR,UAAU,EACrB,KAAK,EAAC,UAAU,EAAA,QAAA,EAEhBC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAED,QAAM,CAAC,WAAW,EAAA,CAAI,EAAA,CAC9B,CACT,CAAA,EAAA,CACI,CACN,EACDE,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAEF,QAAM,CAAC,WAAW,EAAA,QAAA,EAAA,CAClCE,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,YAAY,EAAC,IAAI,EAAC,MAAM,EAAC,mBAAmB,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,EAAA,QAAA,EAAA,CAC1HD,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EAClDA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EAC5CA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,KAAK,EAAC,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EACpDA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EACvDA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EACvDA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EACvDA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EACvDA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EACvDA,yBAAM,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,CAAA,EAAA,CACnD,EACNA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,YAAY,CAACD,QAAM,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,EAAA,QAAA,EAAG,KAAK,EAAA,CAAO,EACxFE,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,YAAY,EAAC,IAAI,EAAC,MAAM,EAAC,mBAAmB,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,EAAA,QAAA,EAAA,CAC1HD,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EAClDA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EAC5CA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,KAAK,EAAC,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EACpDA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EACvDA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EACvDA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EACvDA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EACvDA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EACvDA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,CAAA,EAAA,CACnD,CAAA,EAAA,CACD,CAAA,EAAA,CAED;QAER;AAEA,QAAA,OAAO,IAAI;AACZ,IAAA,CAAC;AAED,IAAA,QACCC,eAAA,CAAA,KAAA,EAAA,EACC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,YAAY,EAAA,QAAA,EAAA,CAEzB,cAAc,EAAE,EACjBD,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,iBAAiB,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAO,EACnD,SAAS,IAAIA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAED,QAAM,CAAC,YAAY,EAAA,aAAA,EAAc,MAAM,EAAA,CAAG,CAAA,EAAA,CAClE;AAER,CAAC;AAGF,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;ACnY7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BG;AACI,MAAM,MAAM,GAAGD,gBAAU,CAC/B,CACC,EACC,IAAI,GAAG,KAAK,EACZ,OAAO,EACP,oBAAoB,GAAG,IAAI,EAC3B,aAAa,GAAG,IAAI,EACpB,iBAAiB,GAAG,EAAE,EACtB,SAAS,GAAG,IAAI,EAChB,YAAY,EACZ,QAAQ,EACR,GAAG,WAAW,EACd,EACD,GAAG,KACA;AACH,IAAA,MAAM,SAAS,GAAGS,YAAM,CAAiB,IAAI,CAAC;AAC9C,IAAA,MAAM,qBAAqB,GAAGA,YAAM,CAAqB,IAAI,CAAC;;IAG9DC,eAAS,CAAC,MAAK;AACd,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa;YAAE;AAE7B,QAAA,MAAM,YAAY,GAAG,CAAC,KAAoB,KAAI;AAC7C,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC3B,KAAK,CAAC,cAAc,EAAE;gBACtB,KAAK,CAAC,eAAe,EAAE;gBACvB,OAAO,IAAI;YACZ;AACD,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC;QAClD,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC;IACnE,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;;IAGlCA,eAAS,CAAC,MAAK;QACd,IAAI,IAAI,EAAE;AACT,YAAA,qBAAqB,CAAC,OAAO,GAAG,QAAQ,CAAC,aAA4B;QACtE;AAAO,aAAA,IAAI,qBAAqB,CAAC,OAAO,EAAE;AACzC,YAAA,qBAAqB,CAAC,OAAO,CAAC,KAAK,EAAE;QACtC;AACD,IAAA,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;;IAGVA,eAAS,CAAC,MAAK;AACd,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY;YAAE;QAE5B,MAAM,YAAY,GAAG,MAAK;AACzB,YAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;gBACrC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAgB;gBAC7E,OAAO,EAAE,KAAK,EAAE;YACjB;AAAO,iBAAA,IAAI,YAAY,CAAC,OAAO,EAAE;AAChC,gBAAA,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE;YAC7B;AACD,QAAA,CAAC;;AAGD,QAAA,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC;AAC7B,IAAA,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;;IAGxBA,eAAS,CAAC,MAAK;AACd,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS;YAAE;AAEzB,QAAA,MAAM,YAAY,GAAG,CAAC,KAAoB,KAAI;YAC7C,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE;YAE/C,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAC3D,0EAA0E,CAC1E;AAED,YAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAgB;YACxD,MAAM,WAAW,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAgB;AAElF,YAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;;AAEnB,gBAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,YAAY,EAAE;oBAC5C,KAAK,CAAC,cAAc,EAAE;oBACtB,WAAW,EAAE,KAAK,EAAE;gBACrB;YACD;iBAAO;;AAEN,gBAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,WAAW,EAAE;oBAC3C,KAAK,CAAC,cAAc,EAAE;oBACtB,YAAY,EAAE,KAAK,EAAE;gBACtB;YACD;AACD,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC;QAClD,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC;AACnE,IAAA,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;;IAGrBA,eAAS,CAAC,MAAK;QACd,IAAI,IAAI,EAAE;YACT,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;QACxC;aAAO;YACN,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;QAClC;AAEA,QAAA,OAAO,MAAK;YACX,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;AAClC,QAAA,CAAC;AACF,IAAA,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;;AAGV,IAAA,MAAM,mBAAmB,GAAGF,iBAAW,CACtC,CAAC,KAAuC,KAAI;QAC3C,IAAI,oBAAoB,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa,EAAE;YACjE,OAAO,IAAI;QACZ;AACD,IAAA,CAAC,EACD,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAC/B;AAED,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;AAEtB,IAAA,MAAM,kBAAkB,GAAG,CAACP,QAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAEzF,QACCC,cAAA,CAAA,KAAA,EAAA,EACC,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAC,cAAc,EAAA,YAAA,EACR,MAAM,EAAA,QAAA,EAEjBA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAED,QAAM,CAAC,eAAe,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAC,QAAQ,EAAA,YAAA,EAAY,MAAM,EAAA,QAAA,EACtFC,cAAA,CAAC,MAAM,EAAA,EAAA,GAAK,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAA,QAAA,EAC/D,QAAQ,EAAA,CACD,EAAA,CACJ,EAAA,CACD;AAER,CAAC;AAGF,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;ACpI7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDG;AACI,MAAM,OAAO,GAAGF,gBAAU,CAChC,CAAC,EACA,KAAK,EACL,aAAa,EACb,UAAU,EACV,WAAW,EACX,SAAS,GAAG,EAAE,EACd,iBAAiB,GAAG,EAAE,EACtB,WAAW,EACX,YAAY,GACZ,EAAE,GAAG,KAAI;IACT,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAGK,cAAQ,CAAwB,IAAI,CAAC;IACjF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAGA,cAAQ,CAAS,EAAE,CAAC;IAC5D,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAGA,cAAQ,CAAqB,SAAS,CAAC;AAEzF,IAAA,MAAM,YAAY,GAAG,aAAa,KAAK,SAAS;IAChD,MAAM,eAAe,GAAG,YAAY,GAAG,aAAa,GAAG,iBAAiB;AAExE,IAAA,MAAM,sBAAsB,GAAG,CAAC,KAAa,KAAI;QAChD,IAAI,CAAC,YAAY,EAAE;YAClB,oBAAoB,CAAC,KAAK,CAAC;QAC5B;AACA,QAAA,UAAU,GAAG,KAAK,CAAC;AACpB,IAAA,CAAC;IAED,MAAM,uBAAuB,GAAG,MAAK;QACpC,IAAI,CAAC,YAAY,EAAE;YAClB,oBAAoB,CAAC,SAAS,CAAC;QAChC;QACA,WAAW,IAAI;AAChB,IAAA,CAAC;;IAGDK,eAAS,CAAC,MAAK;AACd,QAAA,IAAI,eAAe,KAAK,SAAS,IAAI,CAAC,cAAc;YAAE;AAEtD,QAAA,MAAM,kBAAkB,GAAG,CAAC,KAAiB,KAAI;AAChD,YAAA,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;AACrE,gBAAA,uBAAuB,EAAE;YAC1B;AACD,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;QAC1D,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAC3E,CAAC,EAAE,CAAC,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;;IAGhEA,eAAS,CAAC,MAAK;QACd,IAAI,eAAe,KAAK,SAAS;YAAE;AAEnC,QAAA,MAAM,YAAY,GAAG,CAAC,KAAoB,KAAI;AAC7C,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC3B,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,uBAAuB,EAAE;YAC1B;AACD,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC;QAClD,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC;IACnE,CAAC,EAAE,CAAC,eAAe,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;;AAGhD,IAAA,MAAM,aAAa,GAAGF,iBAAW,CAChC,CAAC,KAA0B,KAAI;AAC9B,QAAA,QAAQ,KAAK,CAAC,GAAG;AAChB,YAAA,KAAK,WAAW;gBACf,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,eAAe,KAAK,SAAS,EAAE;;AAElC,oBAAA,MAAM,SAAS,GAAG,eAAe,GAAG,CAAC,GAAG,eAAe,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;oBAC9E,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE;wBAChC,sBAAsB,CAAC,SAAS,CAAC;oBAClC;gBACD;AAAO,qBAAA,IAAI,YAAY,GAAG,CAAC,EAAE;AAC5B,oBAAA,eAAe,CAAC,YAAY,GAAG,CAAC,CAAC;gBAClC;gBACA;AAED,YAAA,KAAK,YAAY;gBAChB,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,eAAe,KAAK,SAAS,EAAE;;AAElC,oBAAA,MAAM,SAAS,GAAG,eAAe,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,eAAe,GAAG,CAAC,GAAG,CAAC;oBAC9E,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE;wBAChC,sBAAsB,CAAC,SAAS,CAAC;oBAClC;gBACD;qBAAO,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,oBAAA,eAAe,CAAC,YAAY,GAAG,CAAC,CAAC;gBAClC;gBACA;AAED,YAAA,KAAK,WAAW;gBACf,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,eAAe,KAAK,SAAS,IAAI,YAAY,IAAI,CAAC,EAAE;;AAEvD,oBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC;oBAChC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE;wBAC7C,sBAAsB,CAAC,YAAY,CAAC;oBACrC;gBACD;gBACA;AAED,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACP,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,eAAe,KAAK,SAAS,IAAI,YAAY,IAAI,CAAC,EAAE;AACvD,oBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC;AAChC,oBAAA,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE;AACpB,wBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;;AAEzB,4BAAA,IAAI,CAAC,OAAO,IAAI;wBACjB;6BAAO;;4BAEN,sBAAsB,CAAC,YAAY,CAAC;wBACrC;oBACD;gBACD;gBACA;;AAEH,IAAA,CAAC,EACD,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,CAC7E;;AAGD,IAAA,MAAM,eAAe,GAAG,CAAC,KAAa,KAAI;AACzC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,IAAI,EAAE,QAAQ;YAAE;AAEpB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;;AAEzB,YAAA,IAAI,CAAC,OAAO,IAAI;YAChB;QACD;AAEA,QAAA,IAAI,eAAe,KAAK,KAAK,EAAE;;AAE9B,YAAA,uBAAuB,EAAE;QAC1B;aAAO;;YAEN,sBAAsB,CAAC,KAAK,CAAC;QAC9B;AACD,IAAA,CAAC;;AAGD,IAAA,MAAM,iBAAiB,GAAG,CAACP,QAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAE/E,IAAA,MAAM,kBAAkB,GAAG,CAACA,QAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGzF,IAAA,MAAM,SAAS,GAAGO,iBAAW,CAC5B,CAAC,IAA2B,KAAI;QAC/B,iBAAiB,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;YAC9B,GAAG,CAAC,IAAI,CAAC;QACV;aAAO,IAAI,GAAG,EAAE;AACf,YAAA,GAAG,CAAC,OAAO,GAAG,IAAI;QACnB;AACD,IAAA,CAAC,EACD,CAAC,GAAG,CAAC,CACL;IAED,QACCL,yBAAK,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAC,SAAS,EAAC,SAAS,EAAE,aAAa,aAExF,WAAW,KACXD,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAED,QAAM,CAAC,WAAW,YAChC,WAAW,EAAA,CACP,CACN,EAGDC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAED,QAAM,CAAC,cAAc,EAAA,QAAA,EACnC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC1B,oBAAA,MAAM,MAAM,GAAG,eAAe,KAAK,KAAK;AAExC,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM;AAEvC,oBAAA,MAAM,oBAAoB,GAAG;AAC5B,wBAAAA,QAAM,CAAC,UAAU;wBACjB,MAAM,GAAGA,QAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE;AACxC,wBAAA,IAAI,CAAC,QAAQ,GAAGA,QAAM,CAAC,sBAAsB,CAAC,GAAG,EAAE;AACnD;yBACC,MAAM,CAAC,OAAO;yBACd,IAAI,CAAC,GAAG,CAAC;;oBAGX,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;wBACtC,QACCC,cAAA,CAAA,KAAA,EAAA,EAAiB,SAAS,EAAED,QAAM,CAAC,aAAa,EAAA,QAAA,EAC/CC,cAAA,CAAA,GAAA,EAAA,EACC,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,SAAS,EAAE,oBAAoB,EAC/B,OAAO,EAAE,CAAC,CAAC,KAAI;AACd,oCAAA,IAAI,IAAI,CAAC,OAAO,EAAE;wCACjB,CAAC,CAAC,cAAc,EAAE;wCAClB,IAAI,CAAC,OAAO,EAAE;oCACf;AACD,gCAAA,CAAC,EACD,OAAO,EAAE,MAAM,eAAe,CAAC,KAAK,CAAC,EACrC,MAAM,EAAE,MAAM,eAAe,CAAC,EAAE,CAAC,EAAA,eAAA,EAClB,IAAI,CAAC,QAAQ,YAE5BA,cAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EACE,IAAI,CAAC,KAAK,GACP,EAAA,CACF,EAAA,EAjBK,KAAK,CAkBT;oBAER;;oBAGA,QACCC,yBAAiB,SAAS,EAAEF,QAAM,CAAC,aAAa,EAAA,QAAA,EAAA,CAC/CC,cAAA,CAAA,QAAA,EAAA,EACC,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,oBAAoB,EAC/B,OAAO,EAAE,MAAM,eAAe,CAAC,KAAK,CAAC,EACrC,OAAO,EAAE,MAAM,eAAe,CAAC,KAAK,CAAC,EACrC,MAAM,EAAE,MAAM,eAAe,CAAC,EAAE,CAAC,EACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAA,eAAA,EACR,UAAU,GAAG,MAAM,GAAG,SAAS,EAAA,eAAA,EAC/B,MAAM,mBACN,IAAI,CAAC,QAAQ,EAAA,QAAA,EAE5BA,cAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EACE,IAAI,CAAC,KAAK,EAAA,CACP,EAAA,CACG,EAER,MAAM,IAAI,UAAU,IAAI,IAAI,CAAC,KAAK,KAClCA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAC,MAAM,EAAA,QAAA,EAC7C,IAAI,CAAC,KAAK,EAAA,CACN,CACN,CAAA,EAAA,EArBQ,KAAK,CAsBT;AAER,gBAAA,CAAC,CAAC,EAAA,CACG,EAGL,YAAY,KACZA,wBAAK,SAAS,EAAED,QAAM,CAAC,YAAY,EAAA,QAAA,EACjC,KAAK,CAAC,OAAO,CAAC,YAAY;sBACxB,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAC9BC,cAAA,CAAC,KAAK,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAc,IAAI,EAAA,EAAZ,KAAK,CAAyB,CACnD;AACD,sBAAE,YAAY,EAAA,CAEV,CACN,CAAA,EAAA,CACI;AAER,CAAC;AAGF,OAAO,CAAC,WAAW,GAAG,SAAS;;;;AC3T/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCG;MACU,QAAQ,GAAGF,gBAAU,CACjC,CACC,EACC,KAAK,EACL,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,KAAK,EACf,IAAI,EACJ,OAAO,EACP,OAAO,EACP,MAAM,EACN,SAAS,GAAG,EAAE,EACd,UAAU,GAAG,KAAK,EAClB,KAAK,GACL,EACD,GAAG,KACA;IACH,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGK,cAAQ,CAAC,KAAK,CAAC;AACzD,IAAA,MAAM,mBAAmB,GAAG,UAAU,IAAI,CAAC,CAAC,KAAK;;AAGjD,IAAA,MAAM,kBAAkB,GAAG;AAC1B,QAAAJ,QAAM,CAAC,QAAQ;QACf,QAAQ,GAAGA,QAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE;QAC5C,QAAQ,GAAGA,QAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE;QAC5C,SAAS,GAAGA,QAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;QAC9C,SAAS;AACT;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;;AAGX,IAAA,MAAM,WAAW,GAAG,CAAC,KAA0C,KAAI;QAClE,IAAI,QAAQ,EAAE;YACb,KAAK,CAAC,cAAc,EAAE;YACtB;QACD;AACA,QAAA,OAAO,GAAG,KAAK,CAAC;AACjB,IAAA,CAAC;AAED,IAAA,QACCE,eAAA,CAAA,KAAA,EAAA,EACC,SAAS,EAAEF,QAAM,CAAC,iBAAiB,EACnC,YAAY,EAAE,MAAM,gBAAgB,CAAC,IAAI,CAAC,EAC1C,YAAY,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,EAC3C,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAE9CE,4BACC,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,UAAU,EAAA,eAAA,EACA,QAAQ,EAAA,cAAA,EACT,OAAO,GAAG,MAAM,GAAG,SAAS,EAAA,QAAA,EAAA,CAG1CD,yBAAM,SAAS,EAAED,QAAM,CAAC,SAAS,EAAA,QAAA,EAAG,OAAO,IAAI,GAAG,EAAA,CAAQ,EAGzD,IAAI,IAAIC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAED,QAAM,CAAC,IAAI,EAAA,QAAA,EAAG,IAAI,GAAQ,EAGpDC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAED,QAAM,CAAC,KAAK,YAAG,KAAK,EAAA,CAAQ,EAG5C,QAAQ,IAAIC,yBAAM,SAAS,EAAED,QAAM,CAAC,QAAQ,YAAG,QAAQ,EAAA,CAAQ,EAG/D,mBAAmB,IAAIC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAED,QAAM,CAAC,YAAY,EAAA,QAAA,EAAA,QAAA,EAAA,CAAU,CAAA,EAAA,CAC9D,EAGR,KAAK,IAAI,aAAa,KACtBC,wBAAK,SAAS,EAAED,QAAM,CAAC,OAAO,EAAE,IAAI,EAAC,MAAM,EAAA,QAAA,EACzC,KAAK,EAAA,CACD,CACN,EAGA,SAAS,IAAIC,wBAAK,SAAS,EAAED,QAAM,CAAC,aAAa,EAAE,IAAI,EAAC,WAAW,EAAA,CAAG,CAAA,EAAA,CAClE;AAER,CAAC;AAGF,QAAQ,CAAC,WAAW,GAAG,UAAU;;ACzKjC;;;;;AAKG;AACI,MAAM,YAAY,GAAgC,CAAC,EACtD,KAAK,EACL,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,EAAE,EACd,iBAAiB,GAAG,EAAE,EACtB,KAAK,GAAG,MAAM,GACjB,KAAI;IACD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGI,cAAQ,CAAC,KAAK,CAAC;AAC3C,IAAA,MAAM,YAAY,GAAGI,YAAM,CAAiB,IAAI,CAAC;;IAGjDC,eAAS,CAAC,MAAK;AACX,QAAA,IAAI,CAAC,MAAM;YAAE;AAEb,QAAA,MAAM,kBAAkB,GAAG,CAAC,KAAiB,KAAI;AAC7C,YAAA,IAAI,YAAY,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;gBAC9E,SAAS,CAAC,KAAK,CAAC;YACpB;AACJ,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;QAC1D,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC9E,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;;IAGZA,eAAS,CAAC,MAAK;AACX,QAAA,IAAI,CAAC,MAAM;YAAE;AAEb,QAAA,MAAM,YAAY,GAAG,CAAC,KAAoB,KAAI;AAC1C,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACxB,KAAK,CAAC,cAAc,EAAE;gBACtB,SAAS,CAAC,KAAK,CAAC;YACpB;AACJ,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC;QAClD,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC;AACtE,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAEZ,MAAM,YAAY,GAAG,MAAK;QACtB,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,SAAS,CAAC,CAAC,MAAM,CAAC;QACtB;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,uBAAuB,GAAG;AAC5B,QAAAT,QAAM,CAAC,aAAa;QACpB;KACH,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAE3B,IAAA,MAAM,oBAAoB,GAAG;AACzB,QAAAA,QAAM,CAAC,UAAU;QACjB,MAAM,GAAGA,QAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE;QACxC,QAAQ,GAAGA,QAAM,CAAC,sBAAsB,CAAC,GAAG,EAAE;KACjD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAE3B,IAAA,MAAM,kBAAkB,GAAG;AACvB,QAAAA,QAAM,CAAC,QAAQ;AACf,QAAA,KAAK,KAAK,OAAO,GAAGA,QAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE;QAClD;KACH,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAE3B,IAAA,QACIE,eAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAA,QAAA,EAAA,CACtDD,2BACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,oBAAoB,EAC/B,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,QAAQ,EAAA,eAAA,EACJ,MAAM,EAAA,eAAA,EACL,MAAM,mBACN,QAAQ,EAAA,QAAA,EAEtB,OAAO,KAAK,KAAK,QAAQ,GAAGA,iCAAK,KAAK,EAAA,CAAM,GAAG,KAAK,EAAA,CAChD,EAER,MAAM,KACHA,cAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,kBAAkB,EAC7B,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,MAAM,SAAS,CAAC,KAAK,CAAC,YAE9B,KAAK,EAAA,CACJ,CACT,CAAA,EAAA,CACC;AAEd;;;;ACnIA;AACA;AA0CA;;;;;;;;;;;;;;;AAeG;AACI,MAAM,SAAS,GAAGF,gBAAU,CAClC,CACC,EACC,WAAW,GAAG,UAAU,EACxB,KAAK,GAAG,CAAC,EACT,aAAa,GAAG,GAAG,EACnB,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,QAAQ,GAAG,KAAK,GAChB,EACD,GAAG,KACA;AACH,IAAA,MAAM,QAAQ,GAAGS,YAAM,CAAiB,IAAI,CAAC;IAC7C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGJ,cAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAGA,cAAQ,CAAC,CAAC,CAAC;IACnD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAGA,cAAQ,CAAC,CAAC,CAAC;AAEvD,IAAA,MAAM,UAAU,GAAG,WAAW,KAAK,UAAU;;AAG7C,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;;AAGpD,IAAA,MAAM,WAAW,GAAG,GAAG,GAAG,SAAS;AACnC,IAAA,MAAM,QAAQ,GAAG,KAAK,GAAG,WAAW;;AAGpC,IAAA,MAAM,UAAU,GAAG;AAClB,QAAAJ,QAAM,CAAC,SAAS;AAChB,QAAAA,QAAM,CAAC,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CAAC;AACnC,QAAA,QAAQ,IAAIA,QAAM,CAAC,qBAAqB,CAAC;QACzC,SAAS;AACT;SACC,MAAM,CAAC,OAAO;SACd,IAAI,CAAC,GAAG,CAAC;;AAGX,IAAA,MAAM,eAAe,GAAGO,iBAAW,CAAC,MAAK;QACxC,IAAI,QAAQ,IAAI,CAAC,QAAQ;YAAE;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC;QACzC,QAAQ,CAAC,QAAQ,CAAC;IACnB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAE/B,IAAA,MAAM,eAAe,GAAGA,iBAAW,CAAC,MAAK;QACxC,IAAI,QAAQ,IAAI,CAAC,QAAQ;YAAE;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC;QACzC,QAAQ,CAAC,QAAQ,CAAC;IACnB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;;AAG/B,IAAA,MAAM,gBAAgB,GAAGA,iBAAW,CACnC,CAAC,KAAuC,KAAI;QAC3C,IAAI,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE;QAEhD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE;QACrD,MAAM,QAAQ,GAAG;AAChB,cAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;cACrB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;AAC5B,QAAA,MAAM,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK;;AAGvD,QAAA,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS;AACvC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACrD,QAAQ,CAAC,QAAQ,CAAC;IACnB,CAAC,EACD,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAChC;;AAGD,IAAA,MAAM,oBAAoB,GAAGA,iBAAW,CACvC,CAAC,KAAuB,KAAI;AAC3B,QAAA,IAAI,QAAQ;YAAE;QACd,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,aAAa,CAAC,IAAI,CAAC;AACnB,QAAA,eAAe,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC3D,iBAAiB,CAAC,KAAK,CAAC;IACzB,CAAC,EACD,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAC7B;;IAGDE,eAAS,CAAC,MAAK;QACd,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE;AAEnD,QAAA,MAAM,eAAe,GAAG,CAAC,KAAiB,KAAI;AAC7C,YAAA,MAAM,UAAU,GAAG,UAAU,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC7D,YAAA,MAAM,KAAK,GAAG,UAAU,GAAG,YAAY;YAEvC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAQ,CAAC,qBAAqB,EAAE;AACtD,YAAA,MAAM,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK;AACvD,YAAA,MAAM,UAAU,GAAG,KAAK,GAAG,SAAS;AAEpC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,CAAC;YACtE,QAAQ,CAAC,QAAQ,CAAC;AACnB,QAAA,CAAC;QAED,MAAM,aAAa,GAAG,MAAK;YAC1B,aAAa,CAAC,KAAK,CAAC;AACrB,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC;AACvD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC;AAEnD,QAAA,OAAO,MAAK;AACX,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC;AAC1D,YAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC;AACvD,QAAA,CAAC;AACF,IAAA,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAEpE,QACCP,yBAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAA,QAAA,EAAA,CACnCD,2BACC,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,CAAA,EAAGD,QAAM,CAAC,KAAK,CAAA,CAAA,EAAIA,QAAM,CAAC,cAAc,CAAC,EAAE,EACtD,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,QAAQ,gBACN,UAAU,GAAG,WAAW,GAAG,aAAa,EAAA,QAAA,EAEpDC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAED,QAAM,CAAC,SAAS,EAAA,CAAI,EAAA,CAC5B,EAETC,cAAA,CAAA,KAAA,EAAA,EACC,GAAG,EAAE,QAAQ,EACb,SAAS,EAAED,QAAM,CAAC,KAAK,EACvB,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAC,WAAW,mBACD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,EAAA,eAAA,EACvB,CAAC,EAAA,eAAA,EACD,GAAG,sBACA,WAAW,EAAA,QAAA,EAE7BC,wBACC,SAAS,EAAED,QAAM,CAAC,KAAK,EACvB,KAAK,EAAE;AACN,wBAAA,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,CAAG;AAClD,wBAAA,CAAC,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAG;qBAC7C,EACD,WAAW,EAAE,oBAAoB,EAAA,CAChC,EAAA,CACG,EAENC,cAAA,CAAA,QAAA,EAAA,EACC,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,CAAA,EAAGD,QAAM,CAAC,KAAK,CAAA,CAAA,EAAIA,QAAM,CAAC,YAAY,CAAC,CAAA,CAAE,EACpD,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,QAAQ,EAAA,YAAA,EACN,UAAU,GAAG,aAAa,GAAG,cAAc,EAAA,QAAA,EAEvDC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAED,QAAM,CAAC,SAAS,EAAA,CAAI,EAAA,CAC5B,CAAA,EAAA,CACJ;AAER,CAAC;AAGF,SAAS,CAAC,WAAW,GAAG,WAAW;;;;ACvNnC;AACA;AAgQA;;;;;;;;;;;;;;;;;;;;;;;AAuBG;MACU,QAAQ,GAAGD,gBAAU,CACjC,CACC,EACC,OAAO,EACP,KAAK,EACL,WAAW,GAAG,EAAE,EAChB,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,EACN,SAAS,GAAG,EAAE,EACd,MAAM,GAAG,MAAM,EACf,OAAO,EACP,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,gBAAgB,GAChB,EACD,GAAG,KACA;IACH,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGK,cAAQ,CAAgB,IAAI,CAAC;IACjE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGA,cAAQ,CAAiB,KAAK,CAAC;IACzE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGA,cAAQ,CAAgB,IAAI,CAAC;IACjE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAGA,cAAQ,CAGpC,IAAI,CAAC;;AAGf,IAAA,MAAM,UAAU,GAAG,YAAY,CAACJ,QAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC;;IAG1E,MAAM,iBAAiB,GAAGO,iBAAW,CACpC,CAAC,SAAiB,EAAE,QAAA,GAAoB,IAAI,KAAI;AAC/C,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;YAAE;AAE1B,QAAA,MAAM,YAAY,GACjB,UAAU,KAAK,SAAS,IAAI,aAAa,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK;QACrE,aAAa,CAAC,SAAS,CAAC;QACxB,gBAAgB,CAAC,YAAY,CAAC;AAC9B,QAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC;IAChC,CAAC,EACD,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,CAAC,CACnC;;IAGD,MAAM,cAAc,GAAGA,iBAAW,CACjC,CAAC,MAAc,EAAE,KAAuB,KAAI;AAC3C,QAAA,IAAI,CAAC,iBAAiB;YAAE;QAExB,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;;AAEnC,YAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACjC,gBAAA,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC,CAAC;YAC7D;iBAAO;gBACN,iBAAiB,CAAC,CAAC,GAAG,WAAW,EAAE,MAAM,CAAC,CAAC;YAC5C;QACD;aAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;;YAEpD,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1D,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,cAAc,CAAC;AACvE,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC;YAElE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC;YAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC;YAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAEnE,iBAAiB,CAAC,QAAQ,CAAC;QAC5B;aAAO;;AAEN,YAAA,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5B;IACD,CAAC,EACD,CAAC,WAAW,EAAE,KAAK,EAAE,iBAAiB,CAAC,CACvC;;AAGD,IAAA,MAAM,oBAAoB,GAAGA,iBAAW,CACvC,CAAC,IAAc,KAAI;QAClB,IAAI,UAAU,EAAE;YACf,UAAU,CAAC,IAAI,CAAC;QACjB;AACD,IAAA,CAAC,EACD,CAAC,UAAU,CAAC,CACZ;;AAGD,IAA4BA,iBAAW,CACtC,CAAC,IAAc,KAAI;QAClB,IAAI,gBAAgB,EAAE;YACrB,gBAAgB,CAAC,IAAI,CAAC;QACvB;AACD,IAAA,CAAC,EACD,CAAC,gBAAgB,CAAC;;IAInB,MAAM,cAAc,GAAwB,EAAE;AAC9C,IAAA,IAAI,MAAM,KAAK,MAAM,EAAE;AACtB,QAAA,cAAc,CAAC,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,GAAG,GAAG,MAAM,CAAA,EAAA,CAAI,GAAG,MAAM;IAC5E;AAEA,IAAA,QACCL,eAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAA,QAAA,EAAA,CAE1DD,wBAAK,SAAS,EAAE,YAAY,CAACD,QAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAA,QAAA,EAC1D,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AACvB,oBAAA,MAAM,QAAQ,GAAG,UAAU,KAAK,MAAM,CAAC,GAAG;AAC1C,oBAAA,MAAM,WAAW,GAA0B;wBAC1C,QAAQ;wBACR,aAAa,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS;qBACnD;AAED,oBAAA,MAAM,kBAAkB,GAA2B;wBAClD,GAAG,EAAE,MAAM,CAAC,GAAG;wBACf,SAAS,EAAE,YAAY,CACtBA,QAAM,CAAC,UAAU,EACjB,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAIA,QAAM,CAAC,QAAQ,EAC5C,OAAO,EAAE,UAAU,CACnB;AACD,wBAAA,KAAK,EAAE;AACN,4BAAA,KAAK,EACJ,OAAO,MAAM,CAAC,KAAK,KAAK;AACvB,kCAAE,CAAA,EAAG,MAAM,CAAC,KAAK,CAAA,EAAA;kCACf,MAAM,CAAC,KAAK;AAChB,yBAAA;AACD,wBAAA,OAAO,EAAE,MAAM,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC;wBAC7D,aAAa,EAAE,MAAM,CAAC,GAAG;AACzB,wBAAA,eAAe,EAAE,MAAM,CAAC,QAAQ,KAAK,KAAK;wBAC1C,IAAI,QAAQ,IAAI;AACf,4BAAA,aAAa,EAAE,IAAI;AACnB,4BAAA,qBAAqB,EAAE,aAAa;yBACpC,CAAC;qBACF;;oBAGD,IAAI,gBAAgB,EAAE;wBACrB,OAAO,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,kBAAkB,CAAC;oBACjE;;AAGA,oBAAA,QACCE,eAAA,CAAA,KAAA,EAAA,EAAA,GAAS,kBAAkB,EAAA,QAAA,EAAA,CACzB,MAAM,CAAC,KAAK,EACZ,QAAQ,KACRD,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAED,QAAM,CAAC,aAAa,EAAA,QAAA,EACnC,aAAa,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG,EAAA,CAC9B,CACP,CAAA,EAAA,CACI;gBAER,CAAC,CAAC,EAAA,CACG,EAGNC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,YAAY,CAACD,QAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAA,QAAA,EACtD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAI;oBAC7B,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAChD,oBAAA,MAAM,SAAS,GAAG,UAAU,KAAK,IAAI,CAAC,EAAE;AAExC,oBAAA,MAAM,QAAQ,GAAmB;wBAChC,UAAU;wBACV,SAAS;AACT,wBAAA,KAAK,EAAE,QAAQ;qBACf;AAED,oBAAA,MAAM,eAAe,GAAoB;wBACxC,GAAG,EAAE,IAAI,CAAC,EAAE;AACZ,wBAAA,SAAS,EAAE,YAAY,CACtBA,QAAM,CAAC,GAAG,EACV,UAAU,IAAIA,QAAM,CAAC,QAAQ,EAC7B,OAAO,EAAE,GAAG,CACZ;AACD,wBAAA,OAAO,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1C,wBAAA,aAAa,EAAE,MAAM,oBAAoB,CAAC,IAAI,CAAC;wBAC/C,YAAY,EAAE,MAAK;AAClB,4BAAA,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AACtB,4BAAA,gBAAgB,GAAG,IAAI,CAAC;wBACzB,CAAC;wBACD,YAAY,EAAE,MAAK;4BAClB,aAAa,CAAC,IAAI,CAAC;4BACnB,cAAc,CAAC,IAAI,CAAC;AACpB,4BAAA,gBAAgB,GAAG,IAAI,CAAC;wBACzB,CAAC;AACD,wBAAA,eAAe,EAAE,UAAU;AAC3B,wBAAA,YAAY,EAAE,QAAQ;wBACtB,cAAc,EAAE,IAAI,CAAC,EAAE;qBACvB;;oBAGD,IAAI,SAAS,EAAE;wBACd,OAAO,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC;oBAClD;;AAGA,oBAAA,QACCC,cAAA,CAAA,KAAA,EAAA,EAAA,GAAS,eAAe,EAAA,QAAA,EACtB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,KAAI;4BACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;4BAC9B,MAAM,aAAa,GAClB,WAAW,EAAE,KAAK,KAAK,IAAI,CAAC,EAAE;AAC9B,gCAAA,WAAW,EAAE,SAAS,KAAK,MAAM,CAAC,GAAG;AAEtC,4BAAA,MAAM,SAAS,GAAoB;AAClC,gCAAA,SAAS,EAAE,aAAa;AACxB,gCAAA,aAAa,EAAE,UAAU;gCACzB,WAAW;gCACX,QAAQ;6BACR;;AAGD,4BAAA,MAAM,eAAe,GAAG,CAAC,CAAmB,KAAI;gCAC/C,IAAI,WAAW,EAAE;AAChB,oCAAA,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gCAC7B;AACD,4BAAA,CAAC;4BAED,MAAM,oBAAoB,GAAG,MAAK;AACjC,gCAAA,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;gCACzD,IAAI,gBAAgB,EAAE;AACrB,oCAAA,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC;gCAC/B;AACD,4BAAA,CAAC;4BAED,MAAM,oBAAoB,GAAG,MAAK;gCACjC,cAAc,CAAC,IAAI,CAAC;gCACpB,IAAI,gBAAgB,EAAE;AACrB,oCAAA,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC;gCAC/B;AACD,4BAAA,CAAC;;4BAGD,IAAI,UAAU,EAAE;AACf,gCAAA,QACCA,cAAA,CAAA,KAAA,EAAA,EAEC,SAAS,EAAE,YAAY,CAACD,QAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EACnD,KAAK,EAAE;AACN,wCAAA,KAAK,EACJ,OAAO,MAAM,CAAC,KAAK,KAAK;AACvB,8CAAE,CAAA,EAAG,MAAM,CAAC,KAAK,CAAA,EAAA;8CACf,MAAM,CAAC,KAAK;AAChB,qCAAA,EAAA,aAAA,EACY,MAAM,CAAC,GAAG,EAAA,cAAA,EACT,aAAa,EAC3B,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,oBAAoB,EAClC,YAAY,EAAE,oBAAoB,EAAA,QAAA,EAEjC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,IAdtC,MAAM,CAAC,GAAG,CAeV;4BAER;;AAGA,4BAAA,QACCE,eAAA,CAAA,KAAA,EAAA,EAEC,SAAS,EAAE,YAAY,CAACF,QAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EACnD,KAAK,EAAE;AACN,oCAAA,KAAK,EACJ,OAAO,MAAM,CAAC,KAAK,KAAK;AACvB,0CAAE,CAAA,EAAG,MAAM,CAAC,KAAK,CAAA,EAAA;0CACf,MAAM,CAAC,KAAK;iCAChB,EAAA,aAAA,EACY,MAAM,CAAC,GAAG,EAAA,cAAA,EACT,aAAa,EAC3B,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,oBAAoB,EAClC,YAAY,EAAE,oBAAoB,EAAA,QAAA,EAAA,CAEjC,WAAW,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAC9BC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAED,QAAM,CAAC,IAAI,EAAA,QAAA,EAAG,IAAI,CAAC,IAAI,EAAA,CAAQ,CAChD,EACA,KAAK,CAAA,EAAA,EAjBD,MAAM,CAAC,GAAG,CAkBV;wBAER,CAAC,CAAC,EAAA,CACG;AAER,gBAAA,CAAC,CAAC,EAAA,CACG,CAAA,EAAA,CACD;AAER,CAAC;AAGF,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;AC3jBjC;AACA;AAkMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;MACU,UAAU,GAAGD,gBAAU,CACnC,CACC,EACC,OAAO,GAAG;IACT,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;IAC5C,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE;IACzD,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AAC5C,CAAA,EACD,KAAK,EACL,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,UAAU,GAAG,GAAG,EAChB,OAAO,EACP,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,GAAG,WAAW,EACd,EACD,GAAG,KACA;;AAEH,IAAA,MAAM,eAAe,GAAgC,OAAO,GAAG;QAC9D,IAAI,EAAE,OAAO,CAAC,QAAQ;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;KAClB,GAAG,SAAS;;IAGb,QACCE,eAAC,MAAM,EAAA,EACN,GAAG,EAAE,GAAG,EACR,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,EAC1C,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,OAAO,EAAE,IAAI,EAAA,GACpB,WAAW,EAAA,QAAA,EAEfA,cAAA,CAAC,QAAQ,EAAA,EACR,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,MAAM,CAAC,QAAQ,EAC1B,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,EAAA,CACjC,EAAA,CACM;AAEX,CAAC;AAGF,UAAU,CAAC,WAAW,GAAG,YAAY;;ACvSrC;AACA;AACA;AAEA;;;AAGG;AACI,MAAM,MAAM,GAAG;;IAErB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;;IAGlB,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;;IAGlB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,SAAS;IACtB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,SAAS;;AAGvB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,KAAK,EAAE,SAAS;;AAGhB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;;AAGnB;;;;;;;;;AASG;AACI,MAAM,UAAU,GAAG;AACzB,IAAA,UAAU,EAAE;;;AAGX,QAAA,MAAM,EAAE,kIAAkI;;;AAI1I,QAAA,IAAI,EAAE,yEAAyE;;AAG/E,QAAA,OAAO,EAAE,oEAAoE;;AAG7E,QAAA,OAAO,EAAE,gEAAgE;;AAGzE,QAAA,IAAI,EAAE,mEAAmE;AACzE,KAAA;AACD,IAAA,QAAQ,EAAE;QACT,EAAE,EAAE,KAAK;QACT,EAAE,EAAE,MAAM;QACV,EAAE,EAAE,MAAM;QACV,EAAE,EAAE,MAAM;QACV,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,MAAM;AACb,KAAA;AACD,IAAA,UAAU,EAAE;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,QAAQ,EAAE,GAAG;QACb,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,GAAG;AACV,KAAA;AACD,IAAA,UAAU,EAAE;QACX,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,GAAG;AACV,KAAA;AACD,IAAA,aAAa,EAAE;QACd,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;AACf,KAAA;;AAGF;;;AAGG;AACI,MAAM,OAAO,GAAG;AACtB,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,EAAE,EAAE,KAAK;IACT,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,KAAK;AACV,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,GAAG,EAAE,MAAM;AACX,IAAA,GAAG,EAAE,MAAM;AACX,IAAA,GAAG,EAAE,MAAM;AACX,IAAA,GAAG,EAAE,MAAM;AACX,IAAA,GAAG,EAAE,MAAM;AACX,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,MAAM;;AAGZ,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,KAAK,EAAE,MAAM;;AAGd;;;;;;;;AAQG;AACI,MAAM,OAAO,GAAG;;AAEtB,IAAA,KAAK,EACJ,kHAAkH;;AAGnH,IAAA,KAAK,EACJ,kHAAkH;;AAGnH,IAAA,UAAU,EAAE,+BAA+B;AAC3C,IAAA,cAAc,EAAE,0CAA0C;AAC1D,IAAA,WAAW,EAAE,yCAAyC;;AAGtD,IAAA,MAAM,EAAE;AACP,QAAA,SAAS,EAAE,0CAA0C;AACrD,QAAA,MAAM,EAAE,yCAAyC;AACjD,QAAA,IAAI,EAAE,kHAAkH;AACxH,KAAA;;AAGD,IAAA,IAAI,EAAE,MAAM;;AAGb;;;AAGG;AACI,MAAM,OAAO,GAAG;AACtB,IAAA,KAAK,EAAE;AACN,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,KAAK,EAAE,KAAK;AACZ,KAAA;AACD,IAAA,KAAK,EAAE;AACN,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,KAAA;AACD,IAAA,MAAM,EAAE;QACP,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,GAAG;AACP,QAAA,EAAE,EAAE,GAAG;AACP,QAAA,EAAE,EAAE,GAAG;AACP,QAAA,IAAI,EAAE,GAAG;AACT,KAAA;;AAGF;;AAEG;AACI,MAAM,MAAM,GAAG;AACrB,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,OAAO,EAAE,IAAI;;AAGd;;;AAGG;AACI,MAAM,WAAW,GAAG;AAC1B,IAAA,QAAQ,EAAE;AACT,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,OAAO;AACf,QAAA,IAAI,EAAE,OAAO;AACb,KAAA;AACD,IAAA,MAAM,EAAE;AACP,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,MAAM,EAAE,4BAA4B;AACpC,QAAA,OAAO,EAAE,4BAA4B;AACrC,QAAA,SAAS,EAAE,8BAA8B;AACzC,KAAA;;AAGF;AACO,MAAM,MAAM,GAAG;IACrB,MAAM;IACN,UAAU;IACV,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}