@clarlabs/ui 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +717 -0
- package/dist/index.js +22 -22
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3295 -1159
- package/dist/index.mjs.map +1 -1
- package/dist/ui.css +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/Accordion/index.tsx","../src/components/Alert/index.tsx","../src/components/Avatar/index.tsx","../src/components/Badge/index.tsx","../src/components/Breadcrumbs/index.tsx","../src/components/Button/index.tsx","../src/components/ButtonGroup/index.tsx","../src/components/Card/index.tsx","../src/components/Checkbox/index.tsx","../src/components/Combobox/index.tsx","../src/components/Datagrid/index.tsx","../src/components/DatePicker/index.tsx","../src/components/DateRangePicker/index.tsx","../src/components/Divider/index.tsx","../src/components/Dropdown/index.tsx","../src/components/FilePicker/index.tsx","../src/components/Header/index.tsx","../src/components/Input/index.tsx","../src/components/Label/index.tsx","../src/components/List/index.tsx","../src/components/Modal/index.tsx","../src/components/Pagination/index.tsx","../src/components/ProgressBar/index.tsx","../src/components/RadioButton/index.tsx","../src/components/RangeInput/index.tsx","../src/components/RichSelect/index.tsx","../src/components/SidePanel/index.tsx","../src/components/Signpost/index.tsx","../src/components/Spinner/index.tsx","../src/components/StackView/index.tsx","../src/components/Stepper/index.tsx","../src/components/Table/index.tsx","../src/components/Tabs/index.tsx","../src/components/Textarea/index.tsx","../src/components/Timeline/index.tsx","../src/components/ToggleSwitch/index.tsx","../src/components/Tooltip/index.tsx","../src/components/Toast/index.tsx","../src/components/TreeView/index.tsx","../src/components/VerticalNav/index.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface AccordionItemProps {\n\tid: string\n\ttitle: string\n\tcontent: React.ReactNode\n}\n\nexport interface AccordionProps {\n\titems: AccordionItemProps[]\n\tallowMultiple?: boolean\n\tdefaultOpenIds?: string[]\n\tclassName?: string\n}\n\nexport function Accordion({ items, allowMultiple = false, defaultOpenIds = [], className = '' }: AccordionProps) {\n\tconst [openIds, setOpenIds] = useState<Set<string>>(new Set(defaultOpenIds))\n\n\tconst toggleItem = (id: string) => {\n\t\tsetOpenIds((prev) => {\n\t\t\tconst newSet = new Set(prev)\n\t\t\tif (newSet.has(id)) {\n\t\t\t\tnewSet.delete(id)\n\t\t\t} else {\n\t\t\t\tif (!allowMultiple) {\n\t\t\t\t\tnewSet.clear()\n\t\t\t\t}\n\t\t\t\tnewSet.add(id)\n\t\t\t}\n\t\t\treturn newSet\n\t\t})\n\t}\n\n\treturn (\n\t\t<div className={`${styles.accordion} ${className}`}>\n\t\t\t{items.map((item) => (\n\t\t\t\t<AccordionItem key={item.id} item={item} isOpen={openIds.has(item.id)} onToggle={() => toggleItem(item.id)} />\n\t\t\t))}\n\t\t</div>\n\t)\n}\n\ninterface AccordionItemInternalProps {\n\titem: AccordionItemProps\n\tisOpen: boolean\n\tonToggle: () => void\n}\n\nfunction AccordionItem({ item, isOpen, onToggle }: AccordionItemInternalProps) {\n\treturn (\n\t\t<div className={`${styles.item} ${isOpen ? styles.open : ''}`}>\n\t\t\t<button className={styles.header} onClick={onToggle} aria-expanded={isOpen}>\n\t\t\t\t<span className={styles.title}>{item.title}</span>\n\t\t\t\t<span className={`${styles.icon} ${isOpen ? styles.iconOpen : ''}`}>▼</span>\n\t\t\t</button>\n\t\t\t<div className={`${styles.content} ${isOpen ? styles.contentOpen : ''}`}>\n\t\t\t\t<div className={styles.contentInner}>{item.content}</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'error'\n\nexport interface AlertProps {\n\tvariant?: AlertVariant\n\ttitle?: string\n\tmessage: string\n\tdismissible?: boolean\n\tonDismiss?: () => void\n\tclassName?: string\n}\n\nexport function Alert({ variant = 'info', title, message, dismissible = false, onDismiss, className = '' }: AlertProps) {\n\tconst icons = {\n\t\tinfo: 'ℹ',\n\t\tsuccess: '✓',\n\t\twarning: '⚠',\n\t\terror: '✕'\n\t}\n\n\treturn (\n\t\t<div className={`${styles.alert} ${styles[variant]} ${className}`} role=\"alert\">\n\t\t\t<div className={styles.icon}>{icons[variant]}</div>\n\t\t\t<div className={styles.content}>\n\t\t\t\t{title && <div className={styles.title}>{title}</div>}\n\t\t\t\t<div className={styles.message}>{message}</div>\n\t\t\t</div>\n\t\t\t{dismissible && (\n\t\t\t\t<button className={styles.dismissButton} onClick={onDismiss} aria-label=\"Dismiss alert\">\n\t\t\t\t\t✕\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface AvatarProps {\n\tsrc?: string\n\talt?: string\n\tinitials?: string\n\tsize?: AvatarSize\n\tstatus?: 'online' | 'offline' | 'busy' | 'away'\n\tclassName?: string\n}\n\nexport function Avatar({ src, alt = 'Avatar', initials, size = 'md', status, className = '' }: AvatarProps) {\n\tconst getInitials = () => {\n\t\tif (initials) return initials\n\t\tif (alt) {\n\t\t\tconst words = alt.split(' ')\n\t\t\tif (words.length >= 2) {\n\t\t\t\treturn `${words[0][0]}${words[1][0]}`.toUpperCase()\n\t\t\t}\n\t\t\treturn alt.slice(0, 2).toUpperCase()\n\t\t}\n\t\treturn '?'\n\t}\n\n\treturn (\n\t\t<div className={`${styles.avatar} ${styles[size]} ${className}`}>\n\t\t\t{src ? <img src={src} alt={alt} className={styles.image} /> : <div className={styles.initials}>{getInitials()}</div>}\n\t\t\t{status && <span className={`${styles.status} ${styles[status]}`} aria-label={`Status: ${status}`} />}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type BadgeVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info'\nexport type BadgeSize = 'sm' | 'md' | 'lg'\n\nexport interface BadgeProps {\n\tchildren: React.ReactNode\n\tvariant?: BadgeVariant\n\tsize?: BadgeSize\n\tdot?: boolean\n\tclassName?: string\n}\n\nexport function Badge({ children, variant = 'default', size = 'md', dot = false, className = '' }: BadgeProps) {\n\treturn (\n\t\t<span className={`${styles.badge} ${styles[variant]} ${styles[size]} ${className}`}>\n\t\t\t{dot && <span className={styles.dot} />}\n\t\t\t{children}\n\t\t</span>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface BreadcrumbItem {\n\tlabel: string\n\thref?: string\n\tonClick?: () => void\n}\n\nexport interface BreadcrumbsProps {\n\titems: BreadcrumbItem[]\n\tseparator?: string\n\tclassName?: string\n}\n\nexport function Breadcrumbs({ items, separator = '/', className = '' }: BreadcrumbsProps) {\n\treturn (\n\t\t<nav className={`${styles.breadcrumbs} ${className}`} aria-label=\"Breadcrumb\">\n\t\t\t<ol className={styles.list}>\n\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\tconst isLast = index === items.length - 1\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li key={index} className={styles.item}>\n\t\t\t\t\t\t\t{item.href && !isLast ? (\n\t\t\t\t\t\t\t\t<a href={item.href} className={styles.link}>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t) : item.onClick && !isLast ? (\n\t\t\t\t\t\t\t\t<button onClick={item.onClick} className={styles.button}>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<span className={`${styles.text} ${isLast ? styles.current : ''}`}>{item.label}</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!isLast && (\n\t\t\t\t\t\t\t\t<span className={styles.separator} aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t{separator}\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</li>\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t</ol>\n\t\t</nav>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'success' | 'danger' | 'outline' | 'ghost'\nexport type ButtonSize = 'sm' | 'md' | 'lg'\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n\tvariant?: ButtonVariant\n\tsize?: ButtonSize\n\tfullWidth?: boolean\n\tloading?: boolean\n\tchildren: React.ReactNode\n}\n\nexport function Button({ variant = 'primary', size = 'md', fullWidth = false, loading = false, disabled, className = '', children, ...props }: ButtonProps) {\n\treturn (\n\t\t<button\n\t\t\tclassName={`\n ${styles.button}\n ${styles[variant]}\n ${styles[size]}\n ${fullWidth ? styles.fullWidth : ''}\n ${loading ? styles.loading : ''}\n ${className}\n `}\n\t\t\tdisabled={disabled || loading}\n\t\t\t{...props}\n\t\t>\n\t\t\t{loading && <span className={styles.spinner} />}\n\t\t\t<span className={loading ? styles.hiddenContent : ''}>{children}</span>\n\t\t</button>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type ButtonGroupOrientation = 'horizontal' | 'vertical'\n\nexport interface ButtonGroupProps {\n\tchildren: React.ReactNode\n\torientation?: ButtonGroupOrientation\n\tfullWidth?: boolean\n\tclassName?: string\n}\n\nexport function ButtonGroup({ children, orientation = 'horizontal', fullWidth = false, className = '' }: ButtonGroupProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={`\n ${styles.buttonGroup}\n ${styles[orientation]}\n ${fullWidth ? styles.fullWidth : ''}\n ${className}\n `}\n\t\t\trole=\"group\"\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface CardProps {\n\tchildren: React.ReactNode\n\ttitle?: string\n\tsubtitle?: string\n\tfooter?: React.ReactNode\n\timage?: string\n\thoverable?: boolean\n\tclassName?: string\n\tonClick?: () => void\n}\n\nexport function Card({ children, title, subtitle, footer, image, hoverable = false, className = '', onClick }: CardProps) {\n\tconst isClickable = !!onClick\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`\n ${styles.card}\n ${hoverable ? styles.hoverable : ''}\n ${isClickable ? styles.clickable : ''}\n ${className}\n `}\n\t\t\tonClick={onClick}\n\t\t\trole={isClickable ? 'button' : undefined}\n\t\t\ttabIndex={isClickable ? 0 : undefined}\n\t\t>\n\t\t\t{image && (\n\t\t\t\t<div className={styles.imageWrapper}>\n\t\t\t\t\t<img src={image} alt={title || ''} className={styles.image} />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div className={styles.content}>\n\t\t\t\t{(title || subtitle) && (\n\t\t\t\t\t<div className={styles.header}>\n\t\t\t\t\t\t{title && <h3 className={styles.title}>{title}</h3>}\n\t\t\t\t\t\t{subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div className={styles.body}>{children}</div>\n\t\t\t\t{footer && <div className={styles.footer}>{footer}</div>}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n\tlabel?: string\n\tindeterminate?: boolean\n}\n\nexport function Checkbox({ label, indeterminate = false, className = '', ...props }: CheckboxProps) {\n\tconst checkboxRef = React.useRef<HTMLInputElement>(null)\n\n\tReact.useEffect(() => {\n\t\tif (checkboxRef.current) {\n\t\t\tcheckboxRef.current.indeterminate = indeterminate\n\t\t}\n\t}, [indeterminate])\n\n\treturn (\n\t\t<label className={`${styles.checkboxWrapper} ${className}`}>\n\t\t\t<input ref={checkboxRef} type=\"checkbox\" className={styles.checkbox} {...props} />\n\t\t\t<span className={styles.checkmark}>\n\t\t\t\t{indeterminate ? <span className={styles.indeterminateIcon}>−</span> : <span className={styles.checkIcon}>✓</span>}\n\t\t\t</span>\n\t\t\t{label && <span className={styles.label}>{label}</span>}\n\t\t</label>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface ComboboxOption {\n\tvalue: string\n\tlabel: string\n\tdisabled?: boolean\n}\n\nexport interface ComboboxProps {\n\toptions: ComboboxOption[]\n\tvalue?: string\n\tdefaultValue?: string\n\tonChange?: (value: string) => void\n\tplaceholder?: string\n\tdisabled?: boolean\n\tclassName?: string\n\tallowCustomValue?: boolean\n\tfilterFunction?: (option: ComboboxOption, searchTerm: string) => boolean\n}\n\nexport function Combobox({\n\toptions,\n\tvalue: controlledValue,\n\tdefaultValue = '',\n\tonChange,\n\tplaceholder = 'Select or type...',\n\tdisabled = false,\n\tclassName = '',\n\tallowCustomValue = false,\n\tfilterFunction\n}: ComboboxProps) {\n\tconst [inputValue, setInputValue] = useState(defaultValue)\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [highlightedIndex, setHighlightedIndex] = useState(-1)\n\tconst inputRef = useRef<HTMLInputElement>(null)\n\tconst listRef = useRef<HTMLUListElement>(null)\n\tconst wrapperRef = useRef<HTMLDivElement>(null)\n\n\tconst isControlled = controlledValue !== undefined\n\tconst currentValue = isControlled ? controlledValue : inputValue\n\n\tconst defaultFilter = (option: ComboboxOption, searchTerm: string) => {\n\t\treturn option.label.toLowerCase().includes(searchTerm.toLowerCase())\n\t}\n\n\tconst filterFunc = filterFunction || defaultFilter\n\n\tconst filteredOptions = options.filter((option) => filterFunc(option, currentValue))\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (e: MouseEvent) => {\n\t\t\tif (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t}\n\t\t}\n\n\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside)\n\t}, [])\n\n\tuseEffect(() => {\n\t\tif (isOpen && highlightedIndex >= 0 && listRef.current) {\n\t\t\tconst highlightedElement = listRef.current.children[highlightedIndex] as HTMLElement\n\t\t\tif (highlightedElement) {\n\t\t\t\thighlightedElement.scrollIntoView({ block: 'nearest' })\n\t\t\t}\n\t\t}\n\t}, [highlightedIndex, isOpen])\n\n\tconst handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst newValue = e.target.value\n\n\t\tif (!isControlled) {\n\t\t\tsetInputValue(newValue)\n\t\t}\n\n\t\tonChange?.(newValue)\n\t\tsetIsOpen(true)\n\t\tsetHighlightedIndex(-1)\n\t}\n\n\tconst handleOptionClick = (option: ComboboxOption) => {\n\t\tif (option.disabled) return\n\n\t\tconst newValue = option.value\n\n\t\tif (!isControlled) {\n\t\t\tsetInputValue(option.label)\n\t\t}\n\n\t\tonChange?.(newValue)\n\t\tsetIsOpen(false)\n\t\tsetHighlightedIndex(-1)\n\t\tinputRef.current?.blur()\n\t}\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\tif (disabled) return\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tsetIsOpen(true)\n\t\t\t\tsetHighlightedIndex((prev) => {\n\t\t\t\t\tconst maxIndex = filteredOptions.length - 1\n\t\t\t\t\tif (prev >= maxIndex) return maxIndex\n\t\t\t\t\tlet nextIndex = prev + 1\n\t\t\t\t\twhile (nextIndex <= maxIndex && filteredOptions[nextIndex].disabled) {\n\t\t\t\t\t\tnextIndex++\n\t\t\t\t\t}\n\t\t\t\t\treturn nextIndex <= maxIndex ? nextIndex : prev\n\t\t\t\t})\n\t\t\t\tbreak\n\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tsetHighlightedIndex((prev) => {\n\t\t\t\t\tif (prev <= 0) return -1\n\t\t\t\t\tlet prevIndex = prev - 1\n\t\t\t\t\twhile (prevIndex >= 0 && filteredOptions[prevIndex].disabled) {\n\t\t\t\t\t\tprevIndex--\n\t\t\t\t\t}\n\t\t\t\t\treturn prevIndex >= 0 ? prevIndex : -1\n\t\t\t\t})\n\t\t\t\tbreak\n\n\t\t\tcase 'Enter':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (isOpen && highlightedIndex >= 0) {\n\t\t\t\t\thandleOptionClick(filteredOptions[highlightedIndex])\n\t\t\t\t} else if (allowCustomValue) {\n\t\t\t\t\tonChange?.(currentValue)\n\t\t\t\t\tsetIsOpen(false)\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tcase 'Escape':\n\t\t\t\te.preventDefault()\n\t\t\t\tsetIsOpen(false)\n\t\t\t\tsetHighlightedIndex(-1)\n\t\t\t\tinputRef.current?.blur()\n\t\t\t\tbreak\n\n\t\t\tcase 'Tab':\n\t\t\t\tsetIsOpen(false)\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tconst handleInputFocus = () => {\n\t\tif (!disabled) {\n\t\t\tsetIsOpen(true)\n\t\t}\n\t}\n\n\tconst selectedOption = options.find((opt) => opt.value === currentValue)\n\tconst displayValue = selectedOption ? selectedOption.label : currentValue\n\n\treturn (\n\t\t<div ref={wrapperRef} className={`${styles.combobox} ${className}`}>\n\t\t\t<div className={styles.inputWrapper}>\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tclassName={`${styles.input} ${disabled ? styles.disabled : ''}`}\n\t\t\t\t\tvalue={displayValue}\n\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tonFocus={handleInputFocus}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-expanded={isOpen}\n\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\taria-controls=\"combobox-listbox\"\n\t\t\t\t/>\n\t\t\t\t<span className={`${styles.arrow} ${isOpen ? styles.open : ''}`}>▼</span>\n\t\t\t</div>\n\n\t\t\t{isOpen && filteredOptions.length > 0 && (\n\t\t\t\t<ul ref={listRef} id=\"combobox-listbox\" className={styles.menu} role=\"listbox\">\n\t\t\t\t\t{filteredOptions.map((option, index) => (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\tclassName={`${styles.option} ${highlightedIndex === index ? styles.highlighted : ''} ${\n\t\t\t\t\t\t\t\toption.disabled ? styles.optionDisabled : ''\n\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\tonClick={() => handleOptionClick(option)}\n\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\taria-selected={option.value === currentValue}\n\t\t\t\t\t\t\taria-disabled={option.disabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t)}\n\n\t\t\t{isOpen && filteredOptions.length === 0 && (\n\t\t\t\t<div className={styles.noResults}>{allowCustomValue ? 'Press Enter to use custom value' : 'No results found'}</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface DatagridColumn<T = any> {\n\tkey: string\n\theader: string\n\twidth?: string\n\trender?: (value: any, row: T) => React.ReactNode\n}\n\nexport interface DatagridProps<T = any> {\n\tcolumns: DatagridColumn<T>[]\n\tdata: T[]\n\tonRowClick?: (row: T) => void\n\tstriped?: boolean\n\thoverable?: boolean\n\tclassName?: string\n}\n\nexport function Datagrid<T extends Record<string, any>>({ columns, data, onRowClick, striped = false, hoverable = true, className = '' }: DatagridProps<T>) {\n\treturn (\n\t\t<div className={`${styles.datagridWrapper} ${className}`}>\n\t\t\t<table className={styles.datagrid}>\n\t\t\t\t<thead className={styles.thead}>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t{columns.map((column) => (\n\t\t\t\t\t\t\t<th key={column.key} className={styles.th} style={{ width: column.width }}>\n\t\t\t\t\t\t\t\t{column.header}\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody className={styles.tbody}>\n\t\t\t\t\t{data.map((row, rowIndex) => (\n\t\t\t\t\t\t<tr\n\t\t\t\t\t\t\tkey={rowIndex}\n\t\t\t\t\t\t\tclassName={`\n ${styles.tr}\n ${striped && rowIndex % 2 === 1 ? styles.striped : ''}\n ${hoverable ? styles.hoverable : ''}\n ${onRowClick ? styles.clickable : ''}\n `}\n\t\t\t\t\t\t\tonClick={() => onRowClick?.(row)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{columns.map((column) => (\n\t\t\t\t\t\t\t\t<td key={column.key} className={styles.td}>\n\t\t\t\t\t\t\t\t\t{column.render ? column.render(row[column.key], row) : row[column.key]}\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t))}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t)\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface DatePickerProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'value' | 'onChange'> {\n\tvalue?: Date\n\tonChange?: (date: Date | null) => void\n\tminDate?: Date\n\tmaxDate?: Date\n}\n\nexport function DatePicker({ value, onChange, minDate, maxDate, className = '', ...props }: DatePickerProps) {\n\tconst [inputValue, setInputValue] = useState<string>(value ? formatDate(value) : '')\n\n\tconst handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst dateValue = e.target.value\n\t\tsetInputValue(dateValue)\n\n\t\tif (dateValue) {\n\t\t\tconst date = new Date(dateValue)\n\t\t\tif (!isNaN(date.getTime())) {\n\t\t\t\tonChange?.(date)\n\t\t\t}\n\t\t} else {\n\t\t\tonChange?.(null)\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className={`${styles.datePicker} ${className}`}>\n\t\t\t<input\n\t\t\t\ttype=\"date\"\n\t\t\t\tclassName={styles.input}\n\t\t\t\tvalue={inputValue}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tmin={minDate ? formatDate(minDate) : undefined}\n\t\t\t\tmax={maxDate ? formatDate(maxDate) : undefined}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t\t<span className={styles.icon}>📅</span>\n\t\t</div>\n\t)\n}\n\nfunction formatDate(date: Date): string {\n\tconst year = date.getFullYear()\n\tconst month = String(date.getMonth() + 1).padStart(2, '0')\n\tconst day = String(date.getDate()).padStart(2, '0')\n\treturn `${year}-${month}-${day}`\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface DateRange {\n\tstart: Date | null\n\tend: Date | null\n}\n\nexport interface DateRangePickerProps {\n\tvalue?: DateRange\n\tonChange?: (range: DateRange) => void\n\tminDate?: Date\n\tmaxDate?: Date\n\tclassName?: string\n}\n\nexport function DateRangePicker({ value, onChange, minDate, maxDate, className = '' }: DateRangePickerProps) {\n\tconst [startValue, setStartValue] = useState<string>(value?.start ? formatDate(value.start) : '')\n\tconst [endValue, setEndValue] = useState<string>(value?.end ? formatDate(value.end) : '')\n\n\tconst handleStartChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst dateValue = e.target.value\n\t\tsetStartValue(dateValue)\n\n\t\tconst startDate = dateValue ? new Date(dateValue) : null\n\t\tconst endDate = endValue ? new Date(endValue) : null\n\n\t\tif (startDate && !isNaN(startDate.getTime())) {\n\t\t\tonChange?.({ start: startDate, end: endDate })\n\t\t} else {\n\t\t\tonChange?.({ start: null, end: endDate })\n\t\t}\n\t}\n\n\tconst handleEndChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst dateValue = e.target.value\n\t\tsetEndValue(dateValue)\n\n\t\tconst startDate = startValue ? new Date(startValue) : null\n\t\tconst endDate = dateValue ? new Date(dateValue) : null\n\n\t\tif (endDate && !isNaN(endDate.getTime())) {\n\t\t\tonChange?.({ start: startDate, end: endDate })\n\t\t} else {\n\t\t\tonChange?.({ start: startDate, end: null })\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className={`${styles.dateRangePicker} ${className}`}>\n\t\t\t<div className={styles.inputWrapper}>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\tclassName={styles.input}\n\t\t\t\t\tvalue={startValue}\n\t\t\t\t\tonChange={handleStartChange}\n\t\t\t\t\tmin={minDate ? formatDate(minDate) : undefined}\n\t\t\t\t\tmax={endValue || (maxDate ? formatDate(maxDate) : undefined)}\n\t\t\t\t\tplaceholder=\"Start date\"\n\t\t\t\t/>\n\t\t\t\t<span className={styles.icon}>📅</span>\n\t\t\t</div>\n\t\t\t<span className={styles.separator}>→</span>\n\t\t\t<div className={styles.inputWrapper}>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\tclassName={styles.input}\n\t\t\t\t\tvalue={endValue}\n\t\t\t\t\tonChange={handleEndChange}\n\t\t\t\t\tmin={startValue || (minDate ? formatDate(minDate) : undefined)}\n\t\t\t\t\tmax={maxDate ? formatDate(maxDate) : undefined}\n\t\t\t\t\tplaceholder=\"End date\"\n\t\t\t\t/>\n\t\t\t\t<span className={styles.icon}>📅</span>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nfunction formatDate(date: Date): string {\n\tconst year = date.getFullYear()\n\tconst month = String(date.getMonth() + 1).padStart(2, '0')\n\tconst day = String(date.getDate()).padStart(2, '0')\n\treturn `${year}-${month}-${day}`\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type DividerOrientation = 'horizontal' | 'vertical'\nexport type DividerVariant = 'solid' | 'dashed' | 'dotted'\n\nexport interface DividerProps {\n\torientation?: DividerOrientation\n\tvariant?: DividerVariant\n\tlabel?: string\n\tclassName?: string\n}\n\nexport function Divider({ orientation = 'horizontal', variant = 'solid', label, className = '' }: DividerProps) {\n\tconst dividerClass = `${styles.divider} ${styles[orientation]} ${styles[variant]} ${className}`\n\n\tif (label && orientation === 'horizontal') {\n\t\treturn (\n\t\t\t<div className={dividerClass}>\n\t\t\t\t<span className={styles.line}></span>\n\t\t\t\t<span className={styles.label}>{label}</span>\n\t\t\t\t<span className={styles.line}></span>\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn <div className={dividerClass}></div>\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface DropdownOption {\n\tlabel: string\n\tvalue: string\n\tdisabled?: boolean\n}\n\nexport interface DropdownProps {\n\toptions: DropdownOption[]\n\tvalue?: string\n\tonChange?: (value: string) => void\n\tplaceholder?: string\n\tdisabled?: boolean\n\tclassName?: string\n}\n\nexport function Dropdown({ options, value, onChange, placeholder = 'Select an option', disabled = false, className = '' }: DropdownProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [selectedValue, setSelectedValue] = useState(value || '')\n\tconst dropdownRef = useRef<HTMLDivElement>(null)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t}\n\t\t}\n\n\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside)\n\t}, [])\n\n\tconst handleSelect = (optionValue: string) => {\n\t\tif (disabled) return\n\t\tsetSelectedValue(optionValue)\n\t\tsetIsOpen(false)\n\t\tonChange?.(optionValue)\n\t}\n\n\tconst selectedOption = options.find((opt) => opt.value === selectedValue)\n\tconst displayText = selectedOption?.label || placeholder\n\n\treturn (\n\t\t<div className={`${styles.dropdown} ${className}`} ref={dropdownRef}>\n\t\t\t<button\n\t\t\t\tclassName={`${styles.trigger} ${disabled ? styles.disabled : ''}`}\n\t\t\t\tonClick={() => !disabled && setIsOpen(!isOpen)}\n\t\t\t\tdisabled={disabled}\n\t\t\t\ttype=\"button\"\n\t\t\t>\n\t\t\t\t<span className={selectedOption ? styles.selected : styles.placeholder}>{displayText}</span>\n\t\t\t\t<span className={`${styles.arrow} ${isOpen ? styles.open : ''}`}>▼</span>\n\t\t\t</button>\n\t\t\t{isOpen && (\n\t\t\t\t<div className={styles.menu}>\n\t\t\t\t\t{options.map((option) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\tclassName={`${styles.option} ${option.value === selectedValue ? styles.active : ''} ${\n\t\t\t\t\t\t\t\toption.disabled ? styles.optionDisabled : ''\n\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\tonClick={() => !option.disabled && handleSelect(option.value)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React, { useRef, useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport type FileStatus = 'idle' | 'processing' | 'uploaded' | 'failed'\n\nexport interface FileItem {\n\tfile: File\n\tstatus: FileStatus\n\tprogress?: number\n\terror?: string\n}\n\nexport interface FilePickerProps {\n\taccept?: string\n\tmultiple?: boolean\n\tmaxSize?: number\n\tdisabled?: boolean\n\tonChange?: (files: FileItem[]) => void\n\tonUpload?: (file: File) => Promise<void>\n\tclassName?: string\n}\n\nexport function FilePicker({ accept, multiple = false, maxSize, disabled = false, onChange, onUpload, className = '' }: FilePickerProps) {\n\tconst [files, setFiles] = useState<FileItem[]>([])\n\tconst inputRef = useRef<HTMLInputElement>(null)\n\n\tconst handleFileSelect = async (selectedFiles: FileList | null) => {\n\t\tif (!selectedFiles || disabled) return\n\n\t\tconst newFiles: FileItem[] = Array.from(selectedFiles).map((file) => {\n\t\t\tif (maxSize && file.size > maxSize) {\n\t\t\t\treturn { file, status: 'failed' as FileStatus, error: 'File too large' }\n\t\t\t}\n\t\t\treturn { file, status: 'idle' as FileStatus }\n\t\t})\n\n\t\tsetFiles((prev) => [...prev, ...newFiles])\n\t\tonChange?.(newFiles)\n\n\t\tif (onUpload) {\n\t\t\tfor (const fileItem of newFiles) {\n\t\t\t\tif (fileItem.status !== 'failed') {\n\t\t\t\t\tawait processFile(fileItem)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst processFile = async (fileItem: FileItem) => {\n\t\tupdateFileStatus(fileItem.file.name, 'processing')\n\n\t\ttry {\n\t\t\tawait onUpload?.(fileItem.file)\n\t\t\tupdateFileStatus(fileItem.file.name, 'uploaded')\n\t\t} catch (error) {\n\t\t\tupdateFileStatus(fileItem.file.name, 'failed', (error as Error).message)\n\t\t}\n\t}\n\n\tconst updateFileStatus = (fileName: string, status: FileStatus, error?: string) => {\n\t\tsetFiles((prev) => prev.map((f) => (f.file.name === fileName ? { ...f, status, error } : f)))\n\t}\n\n\tconst removeFile = (fileName: string) => {\n\t\tsetFiles((prev) => prev.filter((f) => f.file.name !== fileName))\n\t}\n\n\tconst getStatusIcon = (status: FileStatus) => {\n\t\tswitch (status) {\n\t\t\tcase 'processing':\n\t\t\t\treturn '⏳'\n\t\t\tcase 'uploaded':\n\t\t\t\treturn '✓'\n\t\t\tcase 'failed':\n\t\t\t\treturn '✗'\n\t\t\tdefault:\n\t\t\t\treturn '📄'\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className={`${styles.filePicker} ${className}`}>\n\t\t\t<div className={`${styles.dropzone} ${disabled ? styles.disabled : ''}`} onClick={() => !disabled && inputRef.current?.click()}>\n\t\t\t\t<span className={styles.icon}>📁</span>\n\t\t\t\t<span className={styles.text}>Click to select files</span>\n\t\t\t</div>\n\t\t\t<input\n\t\t\t\tref={inputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept={accept}\n\t\t\t\tmultiple={multiple}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={(e) => handleFileSelect(e.target.files)}\n\t\t\t\tclassName={styles.input}\n\t\t\t/>\n\t\t\t{files.length > 0 && (\n\t\t\t\t<div className={styles.fileList}>\n\t\t\t\t\t{files.map((fileItem, index) => (\n\t\t\t\t\t\t<div key={`${fileItem.file.name}-${index}`} className={`${styles.fileItem} ${styles[fileItem.status]}`}>\n\t\t\t\t\t\t\t<span className={styles.fileIcon}>{getStatusIcon(fileItem.status)}</span>\n\t\t\t\t\t\t\t<span className={styles.fileName}>{fileItem.file.name}</span>\n\t\t\t\t\t\t\t<span className={styles.fileSize}>{(fileItem.file.size / 1024).toFixed(1)} KB</span>\n\t\t\t\t\t\t\t{fileItem.error && <span className={styles.error}>{fileItem.error}</span>}\n\t\t\t\t\t\t\t<button className={styles.remove} onClick={() => removeFile(fileItem.file.name)}>\n\t\t\t\t\t\t\t\t×\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface HeaderProps {\n\tlogo?: React.ReactNode\n\ttitle?: string\n\tchildren?: React.ReactNode\n\tactions?: React.ReactNode\n\tsticky?: boolean\n\tclassName?: string\n}\n\nexport function Header({ logo, title, children, actions, sticky = false, className = '' }: HeaderProps) {\n\treturn (\n\t\t<header className={`${styles.header} ${sticky ? styles.sticky : ''} ${className}`}>\n\t\t\t<div className={styles.content}>\n\t\t\t\t{(logo || title) && (\n\t\t\t\t\t<div className={styles.brand}>\n\t\t\t\t\t\t{logo && <div className={styles.logo}>{logo}</div>}\n\t\t\t\t\t\t{title && <h1 className={styles.title}>{title}</h1>}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{children && <div className={styles.nav}>{children}</div>}\n\t\t\t\t{actions && <div className={styles.actions}>{actions}</div>}\n\t\t\t</div>\n\t\t</header>\n\t)\n}\n","import React, { forwardRef } from 'react'\nimport styles from './styles.module.scss'\n\nexport type InputSize = 'sm' | 'md' | 'lg'\nexport type InputVariant = 'default' | 'error' | 'success'\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n\tlabel?: string\n\terror?: string\n\thelperText?: string\n\tsize?: InputSize\n\tvariant?: InputVariant\n\ticon?: React.ReactNode\n\tfullWidth?: boolean\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n\t({ label, error, helperText, size = 'md', variant = 'default', icon, fullWidth = false, className = '', disabled = false, ...props }, ref) => {\n\t\tconst finalVariant = error ? 'error' : variant\n\t\tconst containerClass = `${styles.inputContainer} ${fullWidth ? styles.fullWidth : ''} ${className}`\n\t\tconst inputClass = `${styles.input} ${styles[size]} ${styles[finalVariant]} ${icon ? styles.withIcon : ''} ${disabled ? styles.disabled : ''}`\n\n\t\treturn (\n\t\t\t<div className={containerClass}>\n\t\t\t\t{label && <label className={styles.label}>{label}</label>}\n\t\t\t\t<div className={styles.wrapper}>\n\t\t\t\t\t{icon && <span className={styles.icon}>{icon}</span>}\n\t\t\t\t\t<input ref={ref} className={inputClass} disabled={disabled} {...props} />\n\t\t\t\t</div>\n\t\t\t\t{(error || helperText) && <span className={`${styles.helperText} ${error ? styles.errorText : ''}`}>{error || helperText}</span>}\n\t\t\t</div>\n\t\t)\n\t}\n)\n\nInput.displayName = 'Input'\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type LabelSize = 'sm' | 'md' | 'lg'\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n\tsize?: LabelSize\n\trequired?: boolean\n\tdisabled?: boolean\n\tchildren: React.ReactNode\n}\n\nexport function Label({ size = 'md', required = false, disabled = false, className = '', children, ...props }: LabelProps) {\n\treturn (\n\t\t<label className={`${styles.label} ${styles[size]} ${disabled ? styles.disabled : ''} ${className}`} {...props}>\n\t\t\t{children}\n\t\t\t{required && <span className={styles.required}>*</span>}\n\t\t</label>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface ListItem {\n\tid: string\n\tcontent: React.ReactNode\n\ticon?: React.ReactNode\n\tbadge?: React.ReactNode\n\tdisabled?: boolean\n\tonClick?: () => void\n}\n\nexport interface ListProps {\n\titems: ListItem[]\n\thoverable?: boolean\n\tdividers?: boolean\n\tclassName?: string\n}\n\nexport function List({ items, hoverable = false, dividers = false, className = '' }: ListProps) {\n\treturn (\n\t\t<ul className={`${styles.list} ${dividers ? styles.dividers : ''} ${className}`}>\n\t\t\t{items.map((item) => (\n\t\t\t\t<li\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\tclassName={`${styles.item} ${hoverable && !item.disabled ? styles.hoverable : ''} ${\n\t\t\t\t\t\titem.disabled ? styles.disabled : ''\n\t\t\t\t\t} ${item.onClick && !item.disabled ? styles.clickable : ''}`}\n\t\t\t\t\tonClick={item.disabled ? undefined : item.onClick}\n\t\t\t\t>\n\t\t\t\t\t{item.icon && <span className={styles.icon}>{item.icon}</span>}\n\t\t\t\t\t<span className={styles.content}>{item.content}</span>\n\t\t\t\t\t{item.badge && <span className={styles.badge}>{item.badge}</span>}\n\t\t\t\t</li>\n\t\t\t))}\n\t\t</ul>\n\t)\n}\n","import React, { useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface ModalProps {\n\tisOpen: boolean\n\tonClose: () => void\n\ttitle?: string\n\tchildren: React.ReactNode\n\tfooter?: React.ReactNode\n\tsize?: ModalSize\n\tcloseOnOverlayClick?: boolean\n\tshowCloseButton?: boolean\n\tclassName?: string\n}\n\nexport function Modal({\n\tisOpen,\n\tonClose,\n\ttitle,\n\tchildren,\n\tfooter,\n\tsize = 'md',\n\tcloseOnOverlayClick = true,\n\tshowCloseButton = true,\n\tclassName = ''\n}: ModalProps) {\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tdocument.body.style.overflow = 'hidden'\n\t\t} else {\n\t\t\tdocument.body.style.overflow = ''\n\t\t}\n\t\treturn () => {\n\t\t\tdocument.body.style.overflow = ''\n\t\t}\n\t}, [isOpen])\n\n\tuseEffect(() => {\n\t\tconst handleEscape = (e: KeyboardEvent) => {\n\t\t\tif (e.key === 'Escape' && isOpen) {\n\t\t\t\tonClose()\n\t\t\t}\n\t\t}\n\t\tdocument.addEventListener('keydown', handleEscape)\n\t\treturn () => document.removeEventListener('keydown', handleEscape)\n\t}, [isOpen, onClose])\n\n\tif (!isOpen) return null\n\n\treturn (\n\t\t<div className={styles.overlay} onClick={closeOnOverlayClick ? onClose : undefined}>\n\t\t\t<div className={`${styles.modal} ${styles[size]} ${className}`} onClick={(e) => e.stopPropagation()}>\n\t\t\t\t{(title || showCloseButton) && (\n\t\t\t\t\t<div className={styles.header}>\n\t\t\t\t\t\t{title && <h2 className={styles.title}>{title}</h2>}\n\t\t\t\t\t\t{showCloseButton && (\n\t\t\t\t\t\t\t<button className={styles.closeButton} onClick={onClose} type=\"button\">\n\t\t\t\t\t\t\t\t×\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div className={styles.content}>{children}</div>\n\t\t\t\t{footer && <div className={styles.footer}>{footer}</div>}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface PaginationProps {\n\tcurrentPage: number\n\ttotalPages: number\n\tonPageChange: (page: number) => void\n\tshowFirstLast?: boolean\n\tsiblingCount?: number\n\tclassName?: string\n}\n\nexport function Pagination({ currentPage, totalPages, onPageChange, showFirstLast = true, siblingCount = 1, className = '' }: PaginationProps) {\n\tconst range = (start: number, end: number) => {\n\t\treturn Array.from({ length: end - start + 1 }, (_, i) => start + i)\n\t}\n\n\tconst getPaginationRange = () => {\n\t\tconst totalPageNumbers = siblingCount + 5\n\n\t\tif (totalPages <= totalPageNumbers) {\n\t\t\treturn range(1, totalPages)\n\t\t}\n\n\t\tconst leftSiblingIndex = Math.max(currentPage - siblingCount, 1)\n\t\tconst rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages)\n\t\tconst showLeftDots = leftSiblingIndex > 2\n\t\tconst showRightDots = rightSiblingIndex < totalPages - 1\n\n\t\tif (!showLeftDots && showRightDots) {\n\t\t\tconst leftRange = range(1, 3 + 2 * siblingCount)\n\t\t\treturn [...leftRange, '...', totalPages]\n\t\t}\n\n\t\tif (showLeftDots && !showRightDots) {\n\t\t\tconst rightRange = range(totalPages - (2 + 2 * siblingCount), totalPages)\n\t\t\treturn [1, '...', ...rightRange]\n\t\t}\n\n\t\tconst middleRange = range(leftSiblingIndex, rightSiblingIndex)\n\t\treturn [1, '...', ...middleRange, '...', totalPages]\n\t}\n\n\tconst paginationRange = getPaginationRange()\n\n\tconst handlePrevious = () => {\n\t\tif (currentPage > 1) onPageChange(currentPage - 1)\n\t}\n\n\tconst handleNext = () => {\n\t\tif (currentPage < totalPages) onPageChange(currentPage + 1)\n\t}\n\n\treturn (\n\t\t<nav className={`${styles.pagination} ${className}`}>\n\t\t\t{showFirstLast && (\n\t\t\t\t<button className={styles.pageButton} onClick={() => onPageChange(1)} disabled={currentPage === 1}>\n\t\t\t\t\t«\n\t\t\t\t</button>\n\t\t\t)}\n\t\t\t<button className={styles.pageButton} onClick={handlePrevious} disabled={currentPage === 1}>\n\t\t\t\t‹\n\t\t\t</button>\n\t\t\t{paginationRange.map((pageNumber, index) => {\n\t\t\t\tif (pageNumber === '...') {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<span key={`dots-${index}`} className={styles.dots}>\n\t\t\t\t\t\t\t...\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\tkey={pageNumber}\n\t\t\t\t\t\tclassName={`${styles.pageButton} ${pageNumber === currentPage ? styles.active : ''}`}\n\t\t\t\t\t\tonClick={() => onPageChange(pageNumber as number)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{pageNumber}\n\t\t\t\t\t</button>\n\t\t\t\t)\n\t\t\t})}\n\t\t\t<button className={styles.pageButton} onClick={handleNext} disabled={currentPage === totalPages}>\n\t\t\t\t›\n\t\t\t</button>\n\t\t\t{showFirstLast && (\n\t\t\t\t<button className={styles.pageButton} onClick={() => onPageChange(totalPages)} disabled={currentPage === totalPages}>\n\t\t\t\t\t»\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</nav>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type ProgressBarVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type ProgressBarSize = 'sm' | 'md' | 'lg'\n\nexport interface ProgressBarProps {\n\tvalue: number\n\tmax?: number\n\tvariant?: ProgressBarVariant\n\tsize?: ProgressBarSize\n\tshowLabel?: boolean\n\tlabel?: string\n\tanimated?: boolean\n\tstriped?: boolean\n\tclassName?: string\n}\n\nexport function ProgressBar({\n\tvalue,\n\tmax = 100,\n\tvariant = 'default',\n\tsize = 'md',\n\tshowLabel = false,\n\tlabel,\n\tanimated = false,\n\tstriped = false,\n\tclassName = ''\n}: ProgressBarProps) {\n\tconst percentage = Math.min(Math.max((value / max) * 100, 0), 100)\n\tconst displayLabel = label || `${Math.round(percentage)}%`\n\n\treturn (\n\t\t<div className={`${styles.container} ${className}`}>\n\t\t\t<div className={`${styles.progressBar} ${styles[size]}`}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${styles.fill} ${styles[variant]} ${striped ? styles.striped : ''} ${animated ? styles.animated : ''}`}\n\t\t\t\t\tstyle={{ width: `${percentage}%` }}\n\t\t\t\t>\n\t\t\t\t\t{showLabel && <span className={styles.label}>{displayLabel}</span>}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface RadioButtonProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n\tlabel?: string\n\tvalue: string\n\tname: string\n\tchecked?: boolean\n\tdisabled?: boolean\n\tonChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nexport function RadioButton({ label, value, name, checked = false, disabled = false, onChange, className = '', ...props }: RadioButtonProps) {\n\treturn (\n\t\t<label className={`${styles.radioButton} ${disabled ? styles.disabled : ''} ${className}`}>\n\t\t\t<input type=\"radio\" name={name} value={value} checked={checked} disabled={disabled} onChange={onChange} className={styles.input} {...props} />\n\t\t\t<span className={styles.radio}></span>\n\t\t\t{label && <span className={styles.label}>{label}</span>}\n\t\t</label>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface RangeInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n\tlabel?: string\n\tmin?: number\n\tmax?: number\n\tstep?: number\n\tvalue?: number\n\tshowValue?: boolean\n\tshowMinMax?: boolean\n\tonChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nexport function RangeInput({\n\tlabel,\n\tmin = 0,\n\tmax = 100,\n\tstep = 1,\n\tvalue = 50,\n\tshowValue = false,\n\tshowMinMax = false,\n\tonChange,\n\tclassName = '',\n\tdisabled = false,\n\t...props\n}: RangeInputProps) {\n\tconst percentage = ((value - min) / (max - min)) * 100\n\n\treturn (\n\t\t<div className={`${styles.container} ${className}`}>\n\t\t\t{label && <label className={styles.label}>{label}</label>}\n\t\t\t<div className={styles.rangeWrapper}>\n\t\t\t\t{showMinMax && <span className={styles.minMax}>{min}</span>}\n\t\t\t\t<div className={styles.inputWrapper}>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"range\"\n\t\t\t\t\t\tmin={min}\n\t\t\t\t\t\tmax={max}\n\t\t\t\t\t\tstep={step}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={`${styles.input} ${disabled ? styles.disabled : ''}`}\n\t\t\t\t\t\tstyle={{ '--percentage': `${percentage}%` } as React.CSSProperties}\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{showMinMax && <span className={styles.minMax}>{max}</span>}\n\t\t\t</div>\n\t\t\t{showValue && <span className={styles.value}>{value}</span>}\n\t\t</div>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface RichSelectOption {\n\tlabel: string\n\tvalue: string\n\tdescription?: string\n\ticon?: React.ReactNode\n\tdisabled?: boolean\n}\n\nexport interface RichSelectProps {\n\toptions: RichSelectOption[]\n\tvalue?: string\n\tonChange?: (value: string) => void\n\tplaceholder?: string\n\tdisabled?: boolean\n\tsearchable?: boolean\n\tclassName?: string\n}\n\nexport function RichSelect({\n\toptions,\n\tvalue,\n\tonChange,\n\tplaceholder = 'Select an option',\n\tdisabled = false,\n\tsearchable = false,\n\tclassName = ''\n}: RichSelectProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [searchQuery, setSearchQuery] = useState('')\n\tconst selectRef = useRef<HTMLDivElement>(null)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (selectRef.current && !selectRef.current.contains(event.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t\tsetSearchQuery('')\n\t\t\t}\n\t\t}\n\n\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside)\n\t}, [])\n\n\tconst handleSelect = (optionValue: string) => {\n\t\tif (disabled) return\n\t\tonChange?.(optionValue)\n\t\tsetIsOpen(false)\n\t\tsetSearchQuery('')\n\t}\n\n\tconst selectedOption = options.find((opt) => opt.value === value)\n\tconst filteredOptions = searchable ? options.filter((opt) => opt.label.toLowerCase().includes(searchQuery.toLowerCase())) : options\n\n\treturn (\n\t\t<div className={`${styles.richSelect} ${className}`} ref={selectRef}>\n\t\t\t<button\n\t\t\t\tclassName={`${styles.trigger} ${disabled ? styles.disabled : ''}`}\n\t\t\t\tonClick={() => !disabled && setIsOpen(!isOpen)}\n\t\t\t\tdisabled={disabled}\n\t\t\t\ttype=\"button\"\n\t\t\t>\n\t\t\t\t{selectedOption ? (\n\t\t\t\t\t<div className={styles.selectedContent}>\n\t\t\t\t\t\t{selectedOption.icon && <span className={styles.icon}>{selectedOption.icon}</span>}\n\t\t\t\t\t\t<div className={styles.textContent}>\n\t\t\t\t\t\t\t<span className={styles.label}>{selectedOption.label}</span>\n\t\t\t\t\t\t\t{selectedOption.description && <span className={styles.description}>{selectedOption.description}</span>}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<span className={styles.placeholder}>{placeholder}</span>\n\t\t\t\t)}\n\t\t\t\t<span className={`${styles.arrow} ${isOpen ? styles.open : ''}`}>▼</span>\n\t\t\t</button>\n\t\t\t{isOpen && (\n\t\t\t\t<div className={styles.menu}>\n\t\t\t\t\t{searchable && (\n\t\t\t\t\t\t<div className={styles.searchWrapper}>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tclassName={styles.searchInput}\n\t\t\t\t\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t\t\t\t\tvalue={searchQuery}\n\t\t\t\t\t\t\t\tonChange={(e) => setSearchQuery(e.target.value)}\n\t\t\t\t\t\t\t\tautoFocus\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\t<div className={styles.optionsList}>\n\t\t\t\t\t\t{filteredOptions.map((option) => (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\tclassName={`${styles.option} ${option.value === value ? styles.active : ''} ${option.disabled ? styles.optionDisabled : ''}`}\n\t\t\t\t\t\t\t\tonClick={() => !option.disabled && handleSelect(option.value)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{option.icon && <span className={styles.icon}>{option.icon}</span>}\n\t\t\t\t\t\t\t\t<div className={styles.textContent}>\n\t\t\t\t\t\t\t\t\t<span className={styles.label}>{option.label}</span>\n\t\t\t\t\t\t\t\t\t{option.description && <span className={styles.description}>{option.description}</span>}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{filteredOptions.length === 0 && <div className={styles.noResults}>No results found</div>}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React, { useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type SidePanelPosition = 'left' | 'right'\nexport type SidePanelSize = 'sm' | 'md' | 'lg'\n\nexport interface SidePanelProps {\n\tisOpen: boolean\n\tonClose: () => void\n\ttitle?: string\n\tchildren: React.ReactNode\n\tfooter?: React.ReactNode\n\tposition?: SidePanelPosition\n\tsize?: SidePanelSize\n\tcloseOnOverlayClick?: boolean\n\tshowCloseButton?: boolean\n\tclassName?: string\n}\n\nexport function SidePanel({\n\tisOpen,\n\tonClose,\n\ttitle,\n\tchildren,\n\tfooter,\n\tposition = 'right',\n\tsize = 'md',\n\tcloseOnOverlayClick = true,\n\tshowCloseButton = true,\n\tclassName = ''\n}: SidePanelProps) {\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tdocument.body.style.overflow = 'hidden'\n\t\t} else {\n\t\t\tdocument.body.style.overflow = ''\n\t\t}\n\t\treturn () => {\n\t\t\tdocument.body.style.overflow = ''\n\t\t}\n\t}, [isOpen])\n\n\tuseEffect(() => {\n\t\tconst handleEscape = (e: KeyboardEvent) => {\n\t\t\tif (e.key === 'Escape' && isOpen) {\n\t\t\t\tonClose()\n\t\t\t}\n\t\t}\n\t\tdocument.addEventListener('keydown', handleEscape)\n\t\treturn () => document.removeEventListener('keydown', handleEscape)\n\t}, [isOpen, onClose])\n\n\tif (!isOpen) return null\n\n\treturn (\n\t\t<div className={styles.overlay} onClick={closeOnOverlayClick ? onClose : undefined}>\n\t\t\t<div className={`${styles.sidePanel} ${styles[position]} ${styles[size]} ${className}`} onClick={(e) => e.stopPropagation()}>\n\t\t\t\t{(title || showCloseButton) && (\n\t\t\t\t\t<div className={styles.header}>\n\t\t\t\t\t\t{title && <h2 className={styles.title}>{title}</h2>}\n\t\t\t\t\t\t{showCloseButton && (\n\t\t\t\t\t\t\t<button className={styles.closeButton} onClick={onClose} type=\"button\">\n\t\t\t\t\t\t\t\t×\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div className={styles.content}>{children}</div>\n\t\t\t\t{footer && <div className={styles.footer}>{footer}</div>}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type SignpostPosition = 'top' | 'bottom' | 'left' | 'right'\n\nexport interface SignpostProps {\n\ttrigger: React.ReactNode\n\tchildren: React.ReactNode\n\tposition?: SignpostPosition\n\tclassName?: string\n}\n\nexport function Signpost({ trigger, children, position = 'top', className = '' }: SignpostProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst signpostRef = useRef<HTMLDivElement>(null)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (signpostRef.current && !signpostRef.current.contains(event.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t}\n\t\t}\n\n\t\tif (isOpen) {\n\t\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\t\t}\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside)\n\t}, [isOpen])\n\n\treturn (\n\t\t<div className={`${styles.signpost} ${className}`} ref={signpostRef}>\n\t\t\t<div className={styles.trigger} onClick={() => setIsOpen(!isOpen)}>\n\t\t\t\t{trigger}\n\t\t\t</div>\n\t\t\t{isOpen && (\n\t\t\t\t<div className={`${styles.content} ${styles[position]}`}>\n\t\t\t\t\t<div className={styles.arrow}></div>\n\t\t\t\t\t<div className={styles.inner}>{children}</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\nexport type SpinnerVariant = 'default' | 'primary' | 'secondary'\n\nexport interface SpinnerProps {\n\tsize?: SpinnerSize\n\tvariant?: SpinnerVariant\n\tclassName?: string\n\tlabel?: string\n}\n\nexport function Spinner({ size = 'md', variant = 'default', className = '', label }: SpinnerProps) {\n\treturn (\n\t\t<div className={`${styles.spinnerWrapper} ${className}`}>\n\t\t\t<div className={`${styles.spinner} ${styles[size]} ${styles[variant]}`} role=\"status\" aria-label={label || 'Loading'}>\n\t\t\t\t<div className={styles.circle}></div>\n\t\t\t</div>\n\t\t\t{label && <span className={styles.label}>{label}</span>}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type StackViewDirection = 'horizontal' | 'vertical'\nexport type StackViewAlign = 'start' | 'center' | 'end' | 'stretch'\nexport type StackViewJustify = 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly'\nexport type StackViewSpacing = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface StackViewProps {\n\tchildren: React.ReactNode\n\tdirection?: StackViewDirection\n\talign?: StackViewAlign\n\tjustify?: StackViewJustify\n\tspacing?: StackViewSpacing\n\twrap?: boolean\n\tclassName?: string\n\tstyle?: React.CSSProperties\n}\n\nexport function StackView({\n\tchildren,\n\tdirection = 'horizontal',\n\talign = 'start',\n\tjustify = 'start',\n\tspacing = 'md',\n\twrap = false,\n\tclassName = '',\n\tstyle\n}: StackViewProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={`${styles.stackView} ${styles[direction]} ${styles[`align-${align}`]} ${styles[`justify-${justify}`]} ${styles[`spacing-${spacing}`]} ${wrap ? styles.wrap : ''} ${className}`}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type StepperOrientation = 'horizontal' | 'vertical'\n\nexport interface StepperStep {\n\tlabel: string\n\tdescription?: string\n\ticon?: React.ReactNode\n}\n\nexport interface StepperProps {\n\tsteps: StepperStep[]\n\tcurrentStep: number\n\torientation?: StepperOrientation\n\tonStepClick?: (index: number) => void\n\tclassName?: string\n}\n\nexport function Stepper({ steps, currentStep, orientation = 'horizontal', onStepClick, className = '' }: StepperProps) {\n\treturn (\n\t\t<div className={`${styles.stepper} ${styles[orientation]} ${className}`}>\n\t\t\t{steps.map((step, index) => {\n\t\t\t\tconst isCompleted = index < currentStep\n\t\t\t\tconst isCurrent = index === currentStep\n\t\t\t\tconst isClickable = onStepClick && (isCompleted || isCurrent)\n\n\t\t\t\treturn (\n\t\t\t\t\t<React.Fragment key={index}>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={`${styles.step} ${isCompleted ? styles.completed : ''} ${isCurrent ? styles.current : ''} ${isClickable ? styles.clickable : ''}`}\n\t\t\t\t\t\t\tonClick={() => isClickable && onStepClick(index)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className={styles.stepIndicator}>\n\t\t\t\t\t\t\t\t{isCompleted ? (\n\t\t\t\t\t\t\t\t\t<span className={styles.checkmark}>✓</span>\n\t\t\t\t\t\t\t\t) : step.icon ? (\n\t\t\t\t\t\t\t\t\tstep.icon\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<span className={styles.stepNumber}>{index + 1}</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\t<div className={styles.stepContent}>\n\t\t\t\t\t\t\t\t<div className={styles.stepLabel}>{step.label}</div>\n\t\t\t\t\t\t\t\t{step.description && <div className={styles.stepDescription}>{step.description}</div>}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{index < steps.length - 1 && <div className={`${styles.connector} ${isCompleted ? styles.completed : ''}`}></div>}\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t)\n\t\t\t})}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface TableColumn<T = any> {\n\tkey: string\n\theader: string\n\twidth?: string\n\trender?: (value: any, row: T) => React.ReactNode\n}\n\nexport interface TableProps<T = any> {\n\tcolumns: TableColumn<T>[]\n\tdata: T[]\n\tstriped?: boolean\n\thoverable?: boolean\n\tbordered?: boolean\n\tcompact?: boolean\n\tonRowClick?: (row: T) => void\n\tclassName?: string\n}\n\nexport function Table<T = any>({\n\tcolumns,\n\tdata,\n\tstriped = false,\n\thoverable = false,\n\tbordered = false,\n\tcompact = false,\n\tonRowClick,\n\tclassName = ''\n}: TableProps<T>) {\n\treturn (\n\t\t<div className={`${styles.tableWrapper} ${className}`}>\n\t\t\t<table\n\t\t\t\tclassName={`${styles.table} ${striped ? styles.striped : ''} ${hoverable ? styles.hoverable : ''} ${bordered ? styles.bordered : ''} ${compact ? styles.compact : ''}`}\n\t\t\t>\n\t\t\t\t<thead className={styles.thead}>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t{columns.map((column) => (\n\t\t\t\t\t\t\t<th key={column.key} className={styles.th} style={{ width: column.width }}>\n\t\t\t\t\t\t\t\t{column.header}\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody className={styles.tbody}>\n\t\t\t\t\t{data.map((row, index) => (\n\t\t\t\t\t\t<tr key={index} className={`${styles.tr} ${onRowClick ? styles.clickable : ''}`} onClick={() => onRowClick?.(row)}>\n\t\t\t\t\t\t\t{columns.map((column) => (\n\t\t\t\t\t\t\t\t<td key={column.key} className={styles.td}>\n\t\t\t\t\t\t\t\t\t{column.render ? column.render(row[column.key as keyof T], row) : String(row[column.key as keyof T] ?? '')}\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t))}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t{data.length === 0 && <div className={styles.empty}>No data available</div>}\n\t\t</div>\n\t)\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface TabItem {\n\tid: string\n\tlabel: string\n\tcontent: React.ReactNode\n\tdisabled?: boolean\n\ticon?: React.ReactNode\n}\n\nexport type TabsVariant = 'default' | 'pills' | 'underline'\n\nexport interface TabsProps {\n\titems: TabItem[]\n\tdefaultActiveId?: string\n\tvariant?: TabsVariant\n\tfullWidth?: boolean\n\tonChange?: (id: string) => void\n\tclassName?: string\n}\n\nexport function Tabs({ items, defaultActiveId, variant = 'default', fullWidth = false, onChange, className = '' }: TabsProps) {\n\tconst [activeId, setActiveId] = useState(defaultActiveId || items[0]?.id)\n\n\tconst handleTabClick = (id: string, disabled?: boolean) => {\n\t\tif (disabled) return\n\t\tsetActiveId(id)\n\t\tonChange?.(id)\n\t}\n\n\tconst activeItem = items.find((item) => item.id === activeId)\n\n\treturn (\n\t\t<div className={`${styles.tabsContainer} ${className}`}>\n\t\t\t<div className={`${styles.tabsList} ${styles[variant]} ${fullWidth ? styles.fullWidth : ''}`} role=\"tablist\">\n\t\t\t\t{items.map((item) => (\n\t\t\t\t\t<button\n\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\taria-selected={item.id === activeId}\n\t\t\t\t\t\taria-disabled={item.disabled}\n\t\t\t\t\t\tclassName={`${styles.tab} ${item.id === activeId ? styles.active : ''} ${item.disabled ? styles.disabled : ''}`}\n\t\t\t\t\t\tonClick={() => handleTabClick(item.id, item.disabled)}\n\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.icon && <span className={styles.icon}>{item.icon}</span>}\n\t\t\t\t\t\t<span>{item.label}</span>\n\t\t\t\t\t</button>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t<div className={styles.tabContent} role=\"tabpanel\">\n\t\t\t\t{activeItem?.content}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type TextareaSize = 'sm' | 'md' | 'lg'\nexport type TextareaVariant = 'default' | 'success' | 'error'\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n\tlabel?: string\n\thelperText?: string\n\terror?: string\n\tsize?: TextareaSize\n\tvariant?: TextareaVariant\n\tfullWidth?: boolean\n\tresize?: 'none' | 'vertical' | 'horizontal' | 'both'\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n\t({ label, helperText, error, size = 'md', variant = 'default', fullWidth = false, resize = 'vertical', className = '', disabled, ...rest }, ref) => {\n\t\tconst computedVariant = error ? 'error' : variant\n\n\t\treturn (\n\t\t\t<div className={`${styles.textareaWrapper} ${fullWidth ? styles.fullWidth : ''} ${className}`}>\n\t\t\t\t{label && <label className={styles.label}>{label}</label>}\n\t\t\t\t<textarea\n\t\t\t\t\tref={ref}\n\t\t\t\t\tclassName={`${styles.textarea} ${styles[size]} ${styles[computedVariant]} ${styles[`resize-${resize}`]} ${disabled ? styles.disabled : ''}`}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t{...rest}\n\t\t\t\t/>\n\t\t\t\t{error && <span className={styles.errorText}>{error}</span>}\n\t\t\t\t{!error && helperText && <span className={styles.helperText}>{helperText}</span>}\n\t\t\t</div>\n\t\t)\n\t}\n)\n\nTextarea.displayName = 'Textarea'\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface TimelineItem {\n\tid: string\n\ttitle: string\n\tdescription?: string\n\tdate?: string\n\ticon?: React.ReactNode\n\tcolor?: 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info'\n}\n\nexport type TimelineOrientation = 'vertical' | 'horizontal'\n\nexport interface TimelineProps {\n\titems: TimelineItem[]\n\torientation?: TimelineOrientation\n\tclassName?: string\n}\n\nexport function Timeline({ items, orientation = 'vertical', className = '' }: TimelineProps) {\n\treturn (\n\t\t<div className={`${styles.timeline} ${styles[orientation]} ${className}`}>\n\t\t\t{items.map((item, index) => (\n\t\t\t\t<div key={item.id} className={styles.timelineItem}>\n\t\t\t\t\t<div className={`${styles.timelineMarker} ${item.color ? styles[item.color] : styles.default}`}>\n\t\t\t\t\t\t{item.icon ? <span className={styles.icon}>{item.icon}</span> : <span className={styles.dot}></span>}\n\t\t\t\t\t</div>\n\t\t\t\t\t{index < items.length - 1 && <div className={`${styles.timelineConnector} ${item.color ? styles[item.color] : styles.default}`}></div>}\n\t\t\t\t\t<div className={styles.timelineContent}>\n\t\t\t\t\t\t{item.date && <span className={styles.date}>{item.date}</span>}\n\t\t\t\t\t\t<h4 className={styles.title}>{item.title}</h4>\n\t\t\t\t\t\t{item.description && <p className={styles.description}>{item.description}</p>}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type ToggleSwitchSize = 'sm' | 'md' | 'lg'\n\nexport interface ToggleSwitchProps {\n\tchecked?: boolean\n\tdefaultChecked?: boolean\n\tonChange?: (checked: boolean) => void\n\tlabel?: string\n\tdisabled?: boolean\n\tsize?: ToggleSwitchSize\n\tclassName?: string\n}\n\nexport function ToggleSwitch({ checked, defaultChecked = false, onChange, label, disabled = false, size = 'md', className = '' }: ToggleSwitchProps) {\n\tconst [internalChecked, setInternalChecked] = React.useState(defaultChecked)\n\tconst isControlled = checked !== undefined\n\tconst isChecked = isControlled ? checked : internalChecked\n\n\tconst handleChange = () => {\n\t\tif (disabled) return\n\n\t\tconst newChecked = !isChecked\n\t\tif (!isControlled) {\n\t\t\tsetInternalChecked(newChecked)\n\t\t}\n\t\tonChange?.(newChecked)\n\t}\n\n\treturn (\n\t\t<label className={`${styles.toggleSwitch} ${disabled ? styles.disabled : ''} ${className}`}>\n\t\t\t<input type=\"checkbox\" checked={isChecked} onChange={handleChange} disabled={disabled} className={styles.input} />\n\t\t\t<span className={`${styles.switch} ${styles[size]} ${isChecked ? styles.checked : ''}`}>\n\t\t\t\t<span className={styles.slider}></span>\n\t\t\t</span>\n\t\t\t{label && <span className={styles.label}>{label}</span>}\n\t\t</label>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right'\n\nexport interface TooltipProps {\n\tchildren: React.ReactElement\n\tcontent: React.ReactNode\n\tposition?: TooltipPosition\n\tdelay?: number\n\tclassName?: string\n}\n\nexport function Tooltip({ children, content, position = 'top', delay = 200, className = '' }: TooltipProps) {\n\tconst [isVisible, setIsVisible] = useState(false)\n\tconst timeoutRef = useRef<NodeJS.Timeout>()\n\tconst triggerRef = useRef<HTMLDivElement>(null)\n\n\tconst showTooltip = () => {\n\t\ttimeoutRef.current = setTimeout(() => {\n\t\t\tsetIsVisible(true)\n\t\t}, delay)\n\t}\n\n\tconst hideTooltip = () => {\n\t\tif (timeoutRef.current) {\n\t\t\tclearTimeout(timeoutRef.current)\n\t\t}\n\t\tsetIsVisible(false)\n\t}\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tif (timeoutRef.current) {\n\t\t\t\tclearTimeout(timeoutRef.current)\n\t\t\t}\n\t\t}\n\t}, [])\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`${styles.tooltipWrapper} ${className}`}\n\t\t\tref={triggerRef}\n\t\t\tonMouseEnter={showTooltip}\n\t\t\tonMouseLeave={hideTooltip}\n\t\t\tonFocus={showTooltip}\n\t\t\tonBlur={hideTooltip}\n\t\t>\n\t\t\t{children}\n\t\t\t{isVisible && (\n\t\t\t\t<div className={`${styles.tooltip} ${styles[position]}`} role=\"tooltip\">\n\t\t\t\t\t<div className={styles.tooltipContent}>{content}</div>\n\t\t\t\t\t<div className={styles.tooltipArrow}></div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React, { createContext, useContext, useState, useCallback, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type ToastVariant = 'info' | 'success' | 'warning' | 'error'\nexport type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right'\n\nexport interface ToastOptions {\n\tvariant?: ToastVariant\n\tduration?: number\n\tdismissible?: boolean\n}\n\ninterface ToastItem extends ToastOptions {\n\tid: string\n\tmessage: string\n}\n\ninterface ToastContextValue {\n\tshowToast: (message: string, options?: ToastOptions) => void\n}\n\nconst ToastContext = createContext<ToastContextValue | undefined>(undefined)\n\nexport interface ToastProviderProps {\n\tchildren: React.ReactNode\n\tposition?: ToastPosition\n\tmaxToasts?: number\n}\n\nexport function ToastProvider({ children, position = 'top-right', maxToasts = 5 }: ToastProviderProps) {\n\tconst [toasts, setToasts] = useState<ToastItem[]>([])\n\n\tconst showToast = useCallback(\n\t\t(message: string, options: ToastOptions = {}) => {\n\t\t\tconst id = Math.random().toString(36).substring(2, 9)\n\t\t\tconst newToast: ToastItem = {\n\t\t\t\tid,\n\t\t\t\tmessage,\n\t\t\t\tvariant: options.variant || 'info',\n\t\t\t\tduration: options.duration ?? 5000,\n\t\t\t\tdismissible: options.dismissible ?? true\n\t\t\t}\n\n\t\t\tsetToasts((prev) => {\n\t\t\t\tconst updated = [...prev, newToast]\n\t\t\t\treturn updated.slice(-maxToasts)\n\t\t\t})\n\n\t\t\tif (newToast.duration && newToast.duration > 0) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tremoveToast(id)\n\t\t\t\t}, newToast.duration)\n\t\t\t}\n\t\t},\n\t\t[maxToasts]\n\t)\n\n\tconst removeToast = useCallback((id: string) => {\n\t\tsetToasts((prev) => prev.filter((toast) => toast.id !== id))\n\t}, [])\n\n\tconst getPositionClasses = () => {\n\t\tconst positionMap: Record<ToastPosition, string> = {\n\t\t\t'top-left': styles.topLeft,\n\t\t\t'top-center': styles.topCenter,\n\t\t\t'top-right': styles.topRight,\n\t\t\t'bottom-left': styles.bottomLeft,\n\t\t\t'bottom-center': styles.bottomCenter,\n\t\t\t'bottom-right': styles.bottomRight\n\t\t}\n\t\treturn positionMap[position]\n\t}\n\n\tconst getIcon = (variant: ToastVariant) => {\n\t\tconst icons = {\n\t\t\tinfo: 'ℹ',\n\t\t\tsuccess: '✓',\n\t\t\twarning: '⚠',\n\t\t\terror: '✕'\n\t\t}\n\t\treturn icons[variant]\n\t}\n\n\treturn (\n\t\t<ToastContext.Provider value={{ showToast }}>\n\t\t\t{children}\n\t\t\t<div className={`${styles.toastContainer} ${getPositionClasses()}`}>\n\t\t\t\t{toasts.map((toast) => (\n\t\t\t\t\t<div key={toast.id} className={`${styles.toast} ${styles[toast.variant || 'info']}`} role=\"alert\" aria-live=\"polite\">\n\t\t\t\t\t\t<div className={styles.icon}>{getIcon(toast.variant || 'info')}</div>\n\t\t\t\t\t\t<div className={styles.message}>{toast.message}</div>\n\t\t\t\t\t\t{toast.dismissible && (\n\t\t\t\t\t\t\t<button className={styles.closeButton} onClick={() => removeToast(toast.id)} aria-label=\"Close\">\n\t\t\t\t\t\t\t\t✕\n\t\t\t\t\t\t\t</button>\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</ToastContext.Provider>\n\t)\n}\n\nexport function useToast() {\n\tconst context = useContext(ToastContext)\n\tif (!context) {\n\t\tthrow new Error('useToast must be used within a ToastProvider')\n\t}\n\treturn context\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface TreeNode {\n\tid: string\n\tlabel: string\n\ticon?: React.ReactNode\n\tchildren?: TreeNode[]\n\tdisabled?: boolean\n}\n\nexport interface TreeViewProps {\n\tdata: TreeNode[]\n\tdefaultExpandedIds?: string[]\n\tonNodeClick?: (node: TreeNode) => void\n\tclassName?: string\n}\n\ninterface TreeNodeItemProps {\n\tnode: TreeNode\n\tlevel: number\n\texpandedIds: Set<string>\n\tonToggle: (id: string) => void\n\tonNodeClick?: (node: TreeNode) => void\n}\n\nfunction TreeNodeItem({ node, level, expandedIds, onToggle, onNodeClick }: TreeNodeItemProps) {\n\tconst hasChildren = node.children && node.children.length > 0\n\tconst isExpanded = expandedIds.has(node.id)\n\n\tconst handleClick = () => {\n\t\tif (node.disabled) return\n\t\tif (hasChildren) {\n\t\t\tonToggle(node.id)\n\t\t}\n\t\tonNodeClick?.(node)\n\t}\n\n\treturn (\n\t\t<div className={styles.treeNodeWrapper}>\n\t\t\t<div className={`${styles.treeNode} ${node.disabled ? styles.disabled : ''}`} style={{ paddingLeft: `${level * 1.5}rem` }} onClick={handleClick}>\n\t\t\t\t{hasChildren && <span className={`${styles.expandIcon} ${isExpanded ? styles.expanded : ''}`}>▶</span>}\n\t\t\t\t{!hasChildren && <span className={styles.spacer}></span>}\n\t\t\t\t{node.icon && <span className={styles.icon}>{node.icon}</span>}\n\t\t\t\t<span className={styles.label}>{node.label}</span>\n\t\t\t</div>\n\t\t\t{hasChildren && isExpanded && (\n\t\t\t\t<div className={styles.children}>\n\t\t\t\t\t{node.children!.map((child) => (\n\t\t\t\t\t\t<TreeNodeItem key={child.id} node={child} level={level + 1} expandedIds={expandedIds} onToggle={onToggle} onNodeClick={onNodeClick} />\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport function TreeView({ data, defaultExpandedIds = [], onNodeClick, className = '' }: TreeViewProps) {\n\tconst [expandedIds, setExpandedIds] = useState<Set<string>>(new Set(defaultExpandedIds))\n\n\tconst handleToggle = (id: string) => {\n\t\tsetExpandedIds((prev) => {\n\t\t\tconst next = new Set(prev)\n\t\t\tif (next.has(id)) {\n\t\t\t\tnext.delete(id)\n\t\t\t} else {\n\t\t\t\tnext.add(id)\n\t\t\t}\n\t\t\treturn next\n\t\t})\n\t}\n\n\treturn (\n\t\t<div className={`${styles.treeView} ${className}`}>\n\t\t\t{data.map((node) => (\n\t\t\t\t<TreeNodeItem key={node.id} node={node} level={0} expandedIds={expandedIds} onToggle={handleToggle} onNodeClick={onNodeClick} />\n\t\t\t))}\n\t\t</div>\n\t)\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface NavItem {\n\tid: string\n\tlabel: string\n\ticon?: React.ReactNode\n\thref?: string\n\tonClick?: () => void\n\tchildren?: NavItem[]\n\tdisabled?: boolean\n\tbadge?: React.ReactNode\n\tmegaMenu?: boolean\n}\n\nexport type NavOrientation = 'vertical' | 'horizontal'\n\nexport interface VerticalNavProps {\n\titems: NavItem[]\n\torientation?: NavOrientation\n\tdefaultExpandedIds?: string[]\n\tonItemClick?: (item: NavItem) => void\n\tclassName?: string\n\tcollapsed?: boolean\n}\n\ninterface NavItemComponentProps {\n\titem: NavItem\n\tlevel: number\n\texpandedIds: Set<string>\n\tonToggle: (id: string) => void\n\tonItemClick?: (item: NavItem) => void\n\torientation: NavOrientation\n\tcollapsed?: boolean\n}\n\nfunction NavItemComponent({ item, level, expandedIds, onToggle, onItemClick, orientation, collapsed }: NavItemComponentProps) {\n\tconst hasChildren = item.children && item.children.length > 0\n\tconst isExpanded = expandedIds.has(item.id)\n\tconst isMegaMenu = item.megaMenu && hasChildren\n\n\tconst handleClick = (e: React.MouseEvent) => {\n\t\tif (item.disabled) return\n\n\t\tif (hasChildren && orientation === 'vertical') {\n\t\t\te.preventDefault()\n\t\t\tonToggle(item.id)\n\t\t}\n\n\t\tif (item.onClick) {\n\t\t\titem.onClick()\n\t\t}\n\n\t\tonItemClick?.(item)\n\t}\n\n\tconst renderContent = () => (\n\t\t<>\n\t\t\t{item.icon && <span className={styles.icon}>{item.icon}</span>}\n\t\t\t{!collapsed && <span className={styles.label}>{item.label}</span>}\n\t\t\t{!collapsed && item.badge && <span className={styles.badge}>{item.badge}</span>}\n\t\t\t{!collapsed && hasChildren && orientation === 'vertical' && <span className={`${styles.expandIcon} ${isExpanded ? styles.expanded : ''}`}>▶</span>}\n\t\t\t{!collapsed && hasChildren && orientation === 'horizontal' && <span className={styles.dropdownIcon}>▼</span>}\n\t\t</>\n\t)\n\n\tconst content = item.href ? (\n\t\t<a href={item.href} className={`${styles.navItem} ${item.disabled ? styles.disabled : ''} ${level > 0 ? styles.nested : ''}`} onClick={handleClick}>\n\t\t\t{renderContent()}\n\t\t</a>\n\t) : (\n\t\t<button type=\"button\" className={`${styles.navItem} ${item.disabled ? styles.disabled : ''} ${level > 0 ? styles.nested : ''}`} onClick={handleClick}>\n\t\t\t{renderContent()}\n\t\t</button>\n\t)\n\n\treturn (\n\t\t<div className={`${styles.navItemWrapper} ${isMegaMenu ? styles.megaMenuWrapper : ''}`}>\n\t\t\t{content}\n\t\t\t{hasChildren && (\n\t\t\t\t<>\n\t\t\t\t\t{orientation === 'vertical' && isExpanded && (\n\t\t\t\t\t\t<div className={styles.children}>\n\t\t\t\t\t\t\t{item.children!.map((child) => (\n\t\t\t\t\t\t\t\t<NavItemComponent\n\t\t\t\t\t\t\t\t\tkey={child.id}\n\t\t\t\t\t\t\t\t\titem={child}\n\t\t\t\t\t\t\t\t\tlevel={level + 1}\n\t\t\t\t\t\t\t\t\texpandedIds={expandedIds}\n\t\t\t\t\t\t\t\t\tonToggle={onToggle}\n\t\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t\torientation={orientation}\n\t\t\t\t\t\t\t\t\tcollapsed={collapsed}\n\t\t\t\t\t\t\t\t/>\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\t{orientation === 'horizontal' && (\n\t\t\t\t\t\t<div className={`${styles.dropdown} ${isMegaMenu ? styles.megaMenu : ''}`}>\n\t\t\t\t\t\t\t{isMegaMenu ? (\n\t\t\t\t\t\t\t\t<div className={styles.megaMenuGrid}>\n\t\t\t\t\t\t\t\t\t{item.children!.map((child) => (\n\t\t\t\t\t\t\t\t\t\t<div key={child.id} className={styles.megaMenuColumn}>\n\t\t\t\t\t\t\t\t\t\t\t<NavItemComponent\n\t\t\t\t\t\t\t\t\t\t\t\titem={child}\n\t\t\t\t\t\t\t\t\t\t\t\tlevel={level + 1}\n\t\t\t\t\t\t\t\t\t\t\t\texpandedIds={expandedIds}\n\t\t\t\t\t\t\t\t\t\t\t\tonToggle={onToggle}\n\t\t\t\t\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t\t\t\t\torientation={orientation}\n\t\t\t\t\t\t\t\t\t\t\t\tcollapsed={collapsed}\n\t\t\t\t\t\t\t\t\t\t\t/>\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</div>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\titem.children!.map((child) => (\n\t\t\t\t\t\t\t\t\t<NavItemComponent\n\t\t\t\t\t\t\t\t\t\tkey={child.id}\n\t\t\t\t\t\t\t\t\t\titem={child}\n\t\t\t\t\t\t\t\t\t\tlevel={level + 1}\n\t\t\t\t\t\t\t\t\t\texpandedIds={expandedIds}\n\t\t\t\t\t\t\t\t\t\tonToggle={onToggle}\n\t\t\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t\t\torientation={orientation}\n\t\t\t\t\t\t\t\t\t\tcollapsed={collapsed}\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)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport function VerticalNav({ items, orientation = 'vertical', defaultExpandedIds = [], onItemClick, className = '', collapsed = false }: VerticalNavProps) {\n\tconst [expandedIds, setExpandedIds] = useState<Set<string>>(new Set(defaultExpandedIds))\n\n\tconst handleToggle = (id: string) => {\n\t\tsetExpandedIds((prev) => {\n\t\t\tconst next = new Set(prev)\n\t\t\tif (next.has(id)) {\n\t\t\t\tnext.delete(id)\n\t\t\t} else {\n\t\t\t\tnext.add(id)\n\t\t\t}\n\t\t\treturn next\n\t\t})\n\t}\n\n\treturn (\n\t\t<nav className={`${styles.nav} ${styles[orientation]} ${collapsed ? styles.collapsed : ''} ${className}`}>\n\t\t\t{items.map((item) => (\n\t\t\t\t<NavItemComponent\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\titem={item}\n\t\t\t\t\tlevel={0}\n\t\t\t\t\texpandedIds={expandedIds}\n\t\t\t\t\tonToggle={handleToggle}\n\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\torientation={orientation}\n\t\t\t\t\tcollapsed={collapsed}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</nav>\n\t)\n}\n"],"names":["Accordion","items","allowMultiple","defaultOpenIds","className","openIds","setOpenIds","useState","toggleItem","id","prev","newSet","jsx","styles","item","AccordionItem","isOpen","onToggle","jsxs","Alert","variant","title","message","dismissible","onDismiss","icons","Avatar","src","alt","initials","size","status","getInitials","words","Badge","children","dot","Breadcrumbs","separator","index","isLast","Button","fullWidth","loading","disabled","props","ButtonGroup","orientation","Card","subtitle","footer","image","hoverable","onClick","isClickable","Checkbox","label","indeterminate","checkboxRef","React","Combobox","options","controlledValue","defaultValue","onChange","placeholder","allowCustomValue","filterFunction","inputValue","setInputValue","setIsOpen","highlightedIndex","setHighlightedIndex","inputRef","useRef","listRef","wrapperRef","isControlled","currentValue","filterFunc","option","searchTerm","filteredOptions","useEffect","handleClickOutside","e","highlightedElement","handleInputChange","newValue","handleOptionClick","handleKeyDown","maxIndex","nextIndex","prevIndex","handleInputFocus","selectedOption","opt","displayValue","Datagrid","columns","data","onRowClick","striped","column","row","rowIndex","DatePicker","value","minDate","maxDate","formatDate","handleChange","dateValue","date","year","month","day","DateRangePicker","startValue","setStartValue","endValue","setEndValue","handleStartChange","startDate","endDate","handleEndChange","Divider","dividerClass","Dropdown","selectedValue","setSelectedValue","dropdownRef","event","handleSelect","optionValue","displayText","FilePicker","accept","multiple","maxSize","onUpload","files","setFiles","handleFileSelect","selectedFiles","newFiles","file","fileItem","processFile","updateFileStatus","error","fileName","f","removeFile","getStatusIcon","Header","logo","actions","sticky","Input","forwardRef","helperText","icon","ref","finalVariant","containerClass","inputClass","Label","required","List","dividers","Modal","onClose","closeOnOverlayClick","showCloseButton","handleEscape","Pagination","currentPage","totalPages","onPageChange","showFirstLast","siblingCount","range","start","end","_","i","paginationRange","totalPageNumbers","leftSiblingIndex","rightSiblingIndex","showLeftDots","showRightDots","handlePrevious","handleNext","pageNumber","ProgressBar","max","showLabel","animated","percentage","displayLabel","RadioButton","name","checked","RangeInput","min","step","showValue","showMinMax","RichSelect","searchable","searchQuery","setSearchQuery","selectRef","SidePanel","position","Signpost","trigger","signpostRef","Spinner","StackView","direction","align","justify","spacing","wrap","style","Stepper","steps","currentStep","onStepClick","isCompleted","isCurrent","Table","bordered","compact","Tabs","defaultActiveId","activeId","setActiveId","handleTabClick","activeItem","Textarea","resize","rest","computedVariant","Timeline","ToggleSwitch","defaultChecked","internalChecked","setInternalChecked","isChecked","newChecked","Tooltip","content","delay","isVisible","setIsVisible","timeoutRef","triggerRef","showTooltip","hideTooltip","ToastContext","createContext","ToastProvider","maxToasts","toasts","setToasts","showToast","useCallback","newToast","removeToast","toast","getPositionClasses","getIcon","useToast","context","useContext","TreeNodeItem","node","level","expandedIds","onNodeClick","hasChildren","isExpanded","handleClick","child","TreeView","defaultExpandedIds","setExpandedIds","handleToggle","next","NavItemComponent","onItemClick","collapsed","isMegaMenu","renderContent","Fragment","VerticalNav"],"mappings":"gjBAgBO,SAASA,GAAU,CAAE,MAAAC,EAAO,cAAAC,EAAgB,GAAO,eAAAC,EAAiB,CAAA,EAAI,UAAAC,EAAY,IAAsB,CAChH,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAsB,IAAI,IAAIJ,CAAc,CAAC,EAErEK,EAAcC,GAAe,CAClCH,EAAYI,GAAS,CACpB,MAAMC,EAAS,IAAI,IAAID,CAAI,EAC3B,OAAIC,EAAO,IAAIF,CAAE,EAChBE,EAAO,OAAOF,CAAE,GAEXP,GACJS,EAAO,MAAA,EAERA,EAAO,IAAIF,CAAE,GAEPE,CACR,CAAC,CACF,EAEA,OACCC,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,SAAS,IAAIT,CAAS,GAC9C,SAAAH,EAAM,IAAKa,GACXF,MAACG,GAAA,CAA4B,KAAAD,EAAY,OAAQT,EAAQ,IAAIS,EAAK,EAAE,EAAG,SAAU,IAAMN,EAAWM,EAAK,EAAE,CAAA,EAArFA,EAAK,EAAmF,CAC5G,EACF,CAEF,CAQA,SAASC,GAAc,CAAE,KAAAD,EAAM,OAAAE,EAAQ,SAAAC,GAAwC,CAC9E,OACCC,EAAAA,KAAC,MAAA,CAAI,UAAW,GAAGL,EAAO,IAAI,IAAIG,EAASH,EAAO,KAAO,EAAE,GAC1D,SAAA,CAAAK,EAAAA,KAAC,UAAO,UAAWL,EAAO,OAAQ,QAASI,EAAU,gBAAeD,EACnE,SAAA,CAAAJ,MAAC,OAAA,CAAK,UAAWC,EAAO,MAAQ,WAAK,MAAM,EAC3CD,EAAAA,IAAC,OAAA,CAAK,UAAW,GAAGC,EAAO,IAAI,IAAIG,EAASH,EAAO,SAAW,EAAE,GAAI,SAAA,GAAA,CAAC,CAAA,EACtE,QACC,MAAA,CAAI,UAAW,GAAGA,EAAO,OAAO,IAAIG,EAASH,EAAO,YAAc,EAAE,GACpE,eAAC,MAAA,CAAI,UAAWA,EAAO,aAAe,SAAAC,EAAK,QAAQ,CAAA,CACpD,CAAA,EACD,CAEF,2cC/CO,SAASK,GAAM,CAAE,QAAAC,EAAU,OAAQ,MAAAC,EAAO,QAAAC,EAAS,YAAAC,EAAc,GAAO,UAAAC,EAAW,UAAApB,EAAY,EAAA,EAAkB,CACvH,MAAMqB,EAAQ,CACb,KAAM,IACN,QAAS,IACT,QAAS,IACT,MAAO,GAAA,EAGR,OACCP,EAAAA,KAAC,MAAA,CAAI,UAAW,GAAGL,EAAO,KAAK,IAAIA,EAAOO,CAAO,CAAC,IAAIhB,CAAS,GAAI,KAAK,QACvE,SAAA,CAAAQ,MAAC,OAAI,UAAWC,EAAO,KAAO,SAAAY,EAAML,CAAO,EAAE,EAC7CF,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,QACrB,SAAA,CAAAQ,GAAST,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,MAAQ,SAAAQ,EAAM,EAC/CT,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,QAAU,SAAAS,CAAA,CAAQ,CAAA,EAC1C,EACCC,GACAX,EAAAA,IAAC,SAAA,CAAO,UAAWC,EAAO,cAAe,QAASW,EAAW,aAAW,gBAAgB,SAAA,GAAA,CAExF,CAAA,EAEF,CAEF,ufCtBO,SAASE,GAAO,CAAE,IAAAC,EAAK,IAAAC,EAAM,SAAU,SAAAC,EAAU,KAAAC,EAAO,KAAM,OAAAC,EAAQ,UAAA3B,EAAY,EAAA,EAAmB,CAC3G,MAAM4B,EAAc,IAAM,CACzB,GAAIH,EAAU,OAAOA,EACrB,GAAID,EAAK,CACR,MAAMK,EAAQL,EAAI,MAAM,GAAG,EAC3B,OAAIK,EAAM,QAAU,EACZ,GAAGA,EAAM,CAAC,EAAE,CAAC,CAAC,GAAGA,EAAM,CAAC,EAAE,CAAC,CAAC,GAAG,YAAA,EAEhCL,EAAI,MAAM,EAAG,CAAC,EAAE,YAAA,CACxB,CACA,MAAO,GACR,EAEA,OACCV,EAAAA,KAAC,MAAA,CAAI,UAAW,GAAGL,EAAO,MAAM,IAAIA,EAAOiB,CAAI,CAAC,IAAI1B,CAAS,GAC3D,SAAA,CAAAuB,EAAMf,EAAAA,IAAC,MAAA,CAAI,IAAAe,EAAU,IAAAC,EAAU,UAAWf,EAAO,KAAA,CAAO,EAAKD,MAAC,MAAA,CAAI,UAAWC,EAAO,SAAW,aAAc,EAC7GkB,GAAUnB,EAAAA,IAAC,OAAA,CAAK,UAAW,GAAGC,EAAO,MAAM,IAAIA,EAAOkB,CAAM,CAAC,GAAI,aAAY,WAAWA,CAAM,EAAA,CAAI,CAAA,EACpG,CAEF,4cCnBO,SAASG,GAAM,CAAE,SAAAC,EAAU,QAAAf,EAAU,UAAW,KAAAU,EAAO,KAAM,IAAAM,EAAM,GAAO,UAAAhC,EAAY,EAAA,EAAkB,CAC9G,cACE,OAAA,CAAK,UAAW,GAAGS,GAAO,KAAK,IAAIA,GAAOO,CAAO,CAAC,IAAIP,GAAOiB,CAAI,CAAC,IAAI1B,CAAS,GAC9E,SAAA,CAAAgC,GAAOxB,EAAAA,IAAC,OAAA,CAAK,UAAWC,GAAO,IAAK,EACpCsB,CAAA,EACF,CAEF,6WCNO,SAASE,GAAY,CAAE,MAAApC,EAAO,UAAAqC,EAAY,IAAK,UAAAlC,EAAY,IAAwB,CACzF,OACCQ,MAAC,OAAI,UAAW,GAAGC,EAAO,WAAW,IAAIT,CAAS,GAAI,aAAW,aAChE,SAAAQ,MAAC,KAAA,CAAG,UAAWC,EAAO,KACpB,WAAM,IAAI,CAACC,EAAMyB,IAAU,CAC3B,MAAMC,EAASD,IAAUtC,EAAM,OAAS,EAExC,OACCiB,EAAAA,KAAC,KAAA,CAAe,UAAWL,EAAO,KAChC,SAAA,CAAAC,EAAK,MAAQ,CAAC0B,QACb,IAAA,CAAE,KAAM1B,EAAK,KAAM,UAAWD,EAAO,KACpC,SAAAC,EAAK,MACP,EACGA,EAAK,SAAW,CAAC0B,QACnB,SAAA,CAAO,QAAS1B,EAAK,QAAS,UAAWD,EAAO,OAC/C,WAAK,KAAA,CACP,QAEC,OAAA,CAAK,UAAW,GAAGA,EAAO,IAAI,IAAI2B,EAAS3B,EAAO,QAAU,EAAE,GAAK,WAAK,KAAA,CAAM,EAE/E,CAAC2B,GACD5B,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,UAAW,cAAY,OAC7C,SAAAyB,CAAA,CACF,CAAA,CAAA,EAfOC,CAiBT,CAEF,CAAC,EACF,EACD,CAEF,qqBChCO,SAASE,GAAO,CAAE,QAAArB,EAAU,UAAW,KAAAU,EAAO,KAAM,UAAAY,EAAY,GAAO,QAAAC,EAAU,GAAO,SAAAC,EAAU,UAAAxC,EAAY,GAAI,SAAA+B,EAAU,GAAGU,GAAsB,CAC3J,OACC3B,EAAAA,KAAC,SAAA,CACA,UAAW;AAAA,UACJL,EAAO,MAAM;AAAA,UACbA,EAAOO,CAAO,CAAC;AAAA,UACfP,EAAOiB,CAAI,CAAC;AAAA,UACZY,EAAY7B,EAAO,UAAY,EAAE;AAAA,UACjC8B,EAAU9B,EAAO,QAAU,EAAE;AAAA,UAC7BT,CAAS;AAAA,QAEhB,SAAUwC,GAAYD,EACrB,GAAGE,EAEH,SAAA,CAAAF,GAAW/B,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,QAAS,QAC5C,OAAA,CAAK,UAAW8B,EAAU9B,EAAO,cAAgB,GAAK,SAAAsB,CAAA,CAAS,CAAA,CAAA,CAAA,CAGnE,wNCpBO,SAASW,GAAY,CAAE,SAAAX,EAAU,YAAAY,EAAc,aAAc,UAAAL,EAAY,GAAO,UAAAtC,EAAY,IAAwB,CAC1H,OACCQ,EAAAA,IAAC,MAAA,CACA,UAAW;AAAA,UACJC,GAAO,WAAW;AAAA,UAClBA,GAAOkC,CAAW,CAAC;AAAA,UACnBL,EAAY7B,GAAO,UAAY,EAAE;AAAA,UACjCT,CAAS;AAAA,QAEhB,KAAK,QAEJ,SAAA+B,CAAA,CAAA,CAGJ,igBCZO,SAASa,GAAK,CAAE,SAAAb,EAAU,MAAAd,EAAO,SAAA4B,EAAU,OAAAC,EAAQ,MAAAC,EAAO,UAAAC,EAAY,GAAO,UAAAhD,EAAY,GAAI,QAAAiD,CAAA,EAAsB,CACzH,MAAMC,EAAc,CAAC,CAACD,EAEtB,OACCnC,EAAAA,KAAC,MAAA,CACA,UAAW;AAAA,UACJL,EAAO,IAAI;AAAA,UACXuC,EAAYvC,EAAO,UAAY,EAAE;AAAA,UACjCyC,EAAczC,EAAO,UAAY,EAAE;AAAA,UACnCT,CAAS;AAAA,QAEhB,QAAAiD,EACA,KAAMC,EAAc,SAAW,OAC/B,SAAUA,EAAc,EAAI,OAE3B,SAAA,CAAAH,GACAvC,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,aACtB,SAAAD,EAAAA,IAAC,MAAA,CAAI,IAAKuC,EAAO,IAAK9B,GAAS,GAAI,UAAWR,EAAO,MAAO,EAC7D,EAEDK,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,QACpB,SAAA,EAAAQ,GAAS4B,IACV/B,OAAC,MAAA,CAAI,UAAWL,EAAO,OACrB,SAAA,CAAAQ,GAAST,EAAAA,IAAC,KAAA,CAAG,UAAWC,EAAO,MAAQ,SAAAQ,EAAM,EAC7C4B,GAAYrC,EAAAA,IAAC,IAAA,CAAE,UAAWC,EAAO,SAAW,SAAAoC,CAAA,CAAS,CAAA,EACvD,EAEDrC,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,KAAO,SAAAsB,EAAS,EACtCe,GAAUtC,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,OAAS,SAAAqC,CAAA,CAAO,CAAA,CAAA,CACnD,CAAA,CAAA,CAAA,CAGH,0UCtCO,SAASK,GAAS,CAAE,MAAAC,EAAO,cAAAC,EAAgB,GAAO,UAAArD,EAAY,GAAI,GAAGyC,GAAwB,CACnG,MAAMa,EAAcC,EAAM,OAAyB,IAAI,EAEvD,OAAAA,EAAM,UAAU,IAAM,CACjBD,EAAY,UACfA,EAAY,QAAQ,cAAgBD,EAEtC,EAAG,CAACA,CAAa,CAAC,EAGjBvC,OAAC,SAAM,UAAW,GAAGL,GAAO,eAAe,IAAIT,CAAS,GACvD,SAAA,CAAAQ,EAAAA,IAAC,QAAA,CAAM,IAAK8C,EAAa,KAAK,WAAW,UAAW7C,GAAO,SAAW,GAAGgC,CAAA,CAAO,QAC/E,OAAA,CAAK,UAAWhC,GAAO,UACtB,SAAA4C,QAAiB,OAAA,CAAK,UAAW5C,GAAO,kBAAmB,SAAA,GAAA,CAAC,EAAUD,EAAAA,IAAC,OAAA,CAAK,UAAWC,GAAO,UAAW,aAAC,CAAA,CAC5G,EACC2C,GAAS5C,EAAAA,IAAC,OAAA,CAAK,UAAWC,GAAO,MAAQ,SAAA2C,CAAA,CAAM,CAAA,EACjD,CAEF,uhBCLO,SAASI,GAAS,CACxB,QAAAC,EACA,MAAOC,EACP,aAAAC,EAAe,GACf,SAAAC,EACA,YAAAC,EAAc,oBACd,SAAArB,EAAW,GACX,UAAAxC,EAAY,GACZ,iBAAA8D,EAAmB,GACnB,eAAAC,CACD,EAAkB,CACjB,KAAM,CAACC,EAAYC,CAAa,EAAI9D,EAAAA,SAASwD,CAAY,EACnD,CAAC/C,EAAQsD,CAAS,EAAI/D,EAAAA,SAAS,EAAK,EACpC,CAACgE,EAAkBC,CAAmB,EAAIjE,EAAAA,SAAS,EAAE,EACrDkE,EAAWC,EAAAA,OAAyB,IAAI,EACxCC,EAAUD,EAAAA,OAAyB,IAAI,EACvCE,EAAaF,EAAAA,OAAuB,IAAI,EAExCG,GAAef,IAAoB,OACnCgB,EAAeD,GAAef,EAAkBM,EAMhDW,GAAaZ,IAJG,CAACa,EAAwBC,IACvCD,EAAO,MAAM,YAAA,EAAc,SAASC,EAAW,aAAa,GAK9DC,EAAkBrB,EAAQ,OAAQmB,GAAWD,GAAWC,EAAQF,CAAY,CAAC,EAEnFK,EAAAA,UAAU,IAAM,CACf,MAAMC,EAAsBC,GAAkB,CACzCT,EAAW,SAAW,CAACA,EAAW,QAAQ,SAASS,EAAE,MAAc,GACtEf,EAAU,EAAK,CAEjB,EAEA,gBAAS,iBAAiB,YAAac,CAAkB,EAClD,IAAM,SAAS,oBAAoB,YAAaA,CAAkB,CAC1E,EAAG,CAAA,CAAE,EAELD,EAAAA,UAAU,IAAM,CACf,GAAInE,GAAUuD,GAAoB,GAAKI,EAAQ,QAAS,CACvD,MAAMW,EAAqBX,EAAQ,QAAQ,SAASJ,CAAgB,EAChEe,GACHA,EAAmB,eAAe,CAAE,MAAO,SAAA,CAAW,CAExD,CACD,EAAG,CAACf,EAAkBvD,CAAM,CAAC,EAE7B,MAAMuE,GAAqBF,GAA2C,CACrE,MAAMG,EAAWH,EAAE,OAAO,MAErBR,IACJR,EAAcmB,CAAQ,EAGvBxB,IAAWwB,CAAQ,EACnBlB,EAAU,EAAI,EACdE,EAAoB,EAAE,CACvB,EAEMiB,GAAqBT,GAA2B,CACrD,GAAIA,EAAO,SAAU,OAErB,MAAMQ,EAAWR,EAAO,MAEnBH,IACJR,EAAcW,EAAO,KAAK,EAG3BhB,IAAWwB,CAAQ,EACnBlB,EAAU,EAAK,EACfE,EAAoB,EAAE,EACtBC,EAAS,SAAS,KAAA,CACnB,EAEMiB,GAAiBL,GAA6C,CACnE,GAAI,CAAAzC,EAEJ,OAAQyC,EAAE,IAAA,CACT,IAAK,YACJA,EAAE,eAAA,EACFf,EAAU,EAAI,EACdE,EAAqB9D,GAAS,CAC7B,MAAMiF,EAAWT,EAAgB,OAAS,EAC1C,GAAIxE,GAAQiF,EAAU,OAAOA,EAC7B,IAAIC,GAAYlF,EAAO,EACvB,KAAOkF,IAAaD,GAAYT,EAAgBU,EAAS,EAAE,UAC1DA,KAED,OAAOA,IAAaD,EAAWC,GAAYlF,CAC5C,CAAC,EACD,MAED,IAAK,UACJ2E,EAAE,eAAA,EACFb,EAAqB9D,GAAS,CAC7B,GAAIA,GAAQ,EAAG,MAAO,GACtB,IAAImF,EAAYnF,EAAO,EACvB,KAAOmF,GAAa,GAAKX,EAAgBW,CAAS,EAAE,UACnDA,IAED,OAAOA,GAAa,EAAIA,EAAY,EACrC,CAAC,EACD,MAED,IAAK,QACJR,EAAE,eAAA,EACErE,GAAUuD,GAAoB,EACjCkB,GAAkBP,EAAgBX,CAAgB,CAAC,EACzCL,IACVF,IAAWc,CAAY,EACvBR,EAAU,EAAK,GAEhB,MAED,IAAK,SACJe,EAAE,eAAA,EACFf,EAAU,EAAK,EACfE,EAAoB,EAAE,EACtBC,EAAS,SAAS,KAAA,EAClB,MAED,IAAK,MACJH,EAAU,EAAK,EACf,KAAA,CAEH,EAEMwB,GAAmB,IAAM,CACzBlD,GACJ0B,EAAU,EAAI,CAEhB,EAEMyB,GAAiBlC,EAAQ,KAAMmC,GAAQA,EAAI,QAAUlB,CAAY,EACjEmB,GAAeF,GAAiBA,GAAe,MAAQjB,EAE7D,OACC5D,EAAAA,KAAC,MAAA,CAAI,IAAK0D,EAAY,UAAW,GAAG/D,EAAO,QAAQ,IAAIT,CAAS,GAC/D,SAAA,CAAAc,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,aACtB,SAAA,CAAAD,EAAAA,IAAC,QAAA,CACA,IAAK6D,EACL,KAAK,OACL,UAAW,GAAG5D,EAAO,KAAK,IAAI+B,EAAW/B,EAAO,SAAW,EAAE,GAC7D,MAAOoF,GACP,SAAUV,GACV,UAAWG,GACX,QAASI,GACT,YAAA7B,EACA,SAAArB,EACA,aAAa,MACb,KAAK,WACL,gBAAe5B,EACf,oBAAkB,OAClB,gBAAc,kBAAA,CAAA,EAEfJ,EAAAA,IAAC,OAAA,CAAK,UAAW,GAAGC,EAAO,KAAK,IAAIG,EAASH,EAAO,KAAO,EAAE,GAAI,SAAA,GAAA,CAAC,CAAA,EACnE,EAECG,GAAUkE,EAAgB,OAAS,GACnCtE,EAAAA,IAAC,KAAA,CAAG,IAAK+D,EAAS,GAAG,mBAAmB,UAAW9D,EAAO,KAAM,KAAK,UACnE,WAAgB,IAAI,CAACmE,EAAQzC,IAC7B3B,EAAAA,IAAC,KAAA,CAEA,UAAW,GAAGC,EAAO,MAAM,IAAI0D,IAAqBhC,EAAQ1B,EAAO,YAAc,EAAE,IAClFmE,EAAO,SAAWnE,EAAO,eAAiB,EAC3C,GACA,QAAS,IAAM4E,GAAkBT,CAAM,EACvC,KAAK,SACL,gBAAeA,EAAO,QAAUF,EAChC,gBAAeE,EAAO,SAErB,SAAAA,EAAO,KAAA,EATHA,EAAO,KAAA,CAWb,EACF,EAGAhE,GAAUkE,EAAgB,SAAW,GACrCtE,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,UAAY,SAAAqD,EAAmB,kCAAoC,kBAAA,CAAmB,CAAA,EAE/G,CAEF,2cC1LO,SAASgC,GAAwC,CAAE,QAAAC,EAAS,KAAAC,EAAM,WAAAC,EAAY,QAAAC,EAAU,GAAO,UAAAlD,EAAY,GAAM,UAAAhD,EAAY,EAAA,EAAwB,CAC3J,OACCQ,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,eAAe,IAAIT,CAAS,GACrD,SAAAc,EAAAA,KAAC,QAAA,CAAM,UAAWL,EAAO,SACxB,SAAA,CAAAD,EAAAA,IAAC,QAAA,CAAM,UAAWC,EAAO,MACxB,SAAAD,EAAAA,IAAC,KAAA,CACC,SAAAuF,EAAQ,IAAKI,GACb3F,EAAAA,IAAC,KAAA,CAAoB,UAAWC,EAAO,GAAI,MAAO,CAAE,MAAO0F,EAAO,KAAA,EAChE,SAAAA,EAAO,MAAA,EADAA,EAAO,GAEhB,CACA,CAAA,CACF,EACD,EACA3F,EAAAA,IAAC,SAAM,UAAWC,EAAO,MACvB,SAAAuF,EAAK,IAAI,CAACI,EAAKC,IACf7F,EAAAA,IAAC,KAAA,CAEA,UAAW;AAAA,kBACAC,EAAO,EAAE;AAAA,kBACTyF,GAAWG,EAAW,IAAM,EAAI5F,EAAO,QAAU,EAAE;AAAA,kBACnDuC,EAAYvC,EAAO,UAAY,EAAE;AAAA,kBACjCwF,EAAaxF,EAAO,UAAY,EAAE;AAAA,gBAE7C,QAAS,IAAMwF,IAAaG,CAAG,EAE9B,SAAAL,EAAQ,IAAKI,GACb3F,EAAAA,IAAC,MAAoB,UAAWC,EAAO,GACrC,SAAA0F,EAAO,OAASA,EAAO,OAAOC,EAAID,EAAO,GAAG,EAAGC,CAAG,EAAIA,EAAID,EAAO,GAAG,GAD7DA,EAAO,GAEhB,CACA,CAAA,EAbIE,CAAA,CAeN,CAAA,CACF,CAAA,CAAA,CACD,CAAA,CACD,CAEF,kJC7CO,SAASC,GAAW,CAAE,MAAAC,EAAO,SAAA3C,EAAU,QAAA4C,EAAS,QAAAC,EAAS,UAAAzG,EAAY,GAAI,GAAGyC,GAA0B,CAC5G,KAAM,CAACuB,EAAYC,CAAa,EAAI9D,EAAAA,SAAiBoG,EAAQG,GAAWH,CAAK,EAAI,EAAE,EAE7EI,EAAgB1B,GAA2C,CAChE,MAAM2B,EAAY3B,EAAE,OAAO,MAG3B,GAFAhB,EAAc2C,CAAS,EAEnBA,EAAW,CACd,MAAMC,EAAO,IAAI,KAAKD,CAAS,EAC1B,MAAMC,EAAK,QAAA,CAAS,GACxBjD,IAAWiD,CAAI,CAEjB,MACCjD,IAAW,IAAI,CAEjB,EAEA,OACC9C,OAAC,OAAI,UAAW,GAAGL,GAAO,UAAU,IAAIT,CAAS,GAChD,SAAA,CAAAQ,EAAAA,IAAC,QAAA,CACA,KAAK,OACL,UAAWC,GAAO,MAClB,MAAOuD,EACP,SAAU2C,EACV,IAAKH,EAAUE,GAAWF,CAAO,EAAI,OACrC,IAAKC,EAAUC,GAAWD,CAAO,EAAI,OACpC,GAAGhE,CAAA,CAAA,EAELjC,EAAAA,IAAC,OAAA,CAAK,UAAWC,GAAO,KAAM,SAAA,IAAA,CAAE,CAAA,EACjC,CAEF,CAEA,SAASiG,GAAWG,EAAoB,CACvC,MAAMC,EAAOD,EAAK,YAAA,EACZE,EAAQ,OAAOF,EAAK,SAAA,EAAa,CAAC,EAAE,SAAS,EAAG,GAAG,EACnDG,EAAM,OAAOH,EAAK,QAAA,CAAS,EAAE,SAAS,EAAG,GAAG,EAClD,MAAO,GAAGC,CAAI,IAAIC,CAAK,IAAIC,CAAG,EAC/B,qQChCO,SAASC,GAAgB,CAAE,MAAAV,EAAO,SAAA3C,EAAU,QAAA4C,EAAS,QAAAC,EAAS,UAAAzG,EAAY,IAA4B,CAC5G,KAAM,CAACkH,EAAYC,CAAa,EAAIhH,WAAiBoG,GAAO,MAAQG,GAAWH,EAAM,KAAK,EAAI,EAAE,EAC1F,CAACa,EAAUC,CAAW,EAAIlH,WAAiBoG,GAAO,IAAMG,GAAWH,EAAM,GAAG,EAAI,EAAE,EAElFe,EAAqBrC,GAA2C,CACrE,MAAM2B,EAAY3B,EAAE,OAAO,MAC3BkC,EAAcP,CAAS,EAEvB,MAAMW,EAAYX,EAAY,IAAI,KAAKA,CAAS,EAAI,KAC9CY,EAAUJ,EAAW,IAAI,KAAKA,CAAQ,EAAI,KAE5CG,GAAa,CAAC,MAAMA,EAAU,QAAA,CAAS,EAC1C3D,IAAW,CAAE,MAAO2D,EAAW,IAAKC,EAAS,EAE7C5D,IAAW,CAAE,MAAO,KAAM,IAAK4D,EAAS,CAE1C,EAEMC,EAAmBxC,GAA2C,CACnE,MAAM2B,EAAY3B,EAAE,OAAO,MAC3BoC,EAAYT,CAAS,EAErB,MAAMW,EAAYL,EAAa,IAAI,KAAKA,CAAU,EAAI,KAChDM,EAAUZ,EAAY,IAAI,KAAKA,CAAS,EAAI,KAE9CY,GAAW,CAAC,MAAMA,EAAQ,QAAA,CAAS,EACtC5D,IAAW,CAAE,MAAO2D,EAAW,IAAKC,EAAS,EAE7C5D,IAAW,CAAE,MAAO2D,EAAW,IAAK,KAAM,CAE5C,EAEA,OACCzG,OAAC,OAAI,UAAW,GAAGL,EAAO,eAAe,IAAIT,CAAS,GACrD,SAAA,CAAAc,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,aACtB,SAAA,CAAAD,EAAAA,IAAC,QAAA,CACA,KAAK,OACL,UAAWC,EAAO,MAClB,MAAOyG,EACP,SAAUI,EACV,IAAKd,EAAUE,GAAWF,CAAO,EAAI,OACrC,IAAKY,IAAaX,EAAUC,GAAWD,CAAO,EAAI,QAClD,YAAY,YAAA,CAAA,EAEbjG,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,KAAM,SAAA,IAAA,CAAE,CAAA,EACjC,EACAD,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,UAAW,SAAA,IAAC,EACpCK,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,aACtB,SAAA,CAAAD,EAAAA,IAAC,QAAA,CACA,KAAK,OACL,UAAWC,EAAO,MAClB,MAAO2G,EACP,SAAUK,EACV,IAAKP,IAAeV,EAAUE,GAAWF,CAAO,EAAI,QACpD,IAAKC,EAAUC,GAAWD,CAAO,EAAI,OACrC,YAAY,UAAA,CAAA,EAEbjG,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,KAAM,SAAA,IAAA,CAAE,CAAA,CAAA,CACjC,CAAA,EACD,CAEF,CAEA,SAASiG,GAAWG,EAAoB,CACvC,MAAMC,EAAOD,EAAK,YAAA,EACZE,EAAQ,OAAOF,EAAK,SAAA,EAAa,CAAC,EAAE,SAAS,EAAG,GAAG,EACnDG,EAAM,OAAOH,EAAK,QAAA,CAAS,EAAE,SAAS,EAAG,GAAG,EAClD,MAAO,GAAGC,CAAI,IAAIC,CAAK,IAAIC,CAAG,EAC/B,kXCvEO,SAASU,GAAQ,CAAE,YAAA/E,EAAc,aAAc,QAAA3B,EAAU,QAAS,MAAAoC,EAAO,UAAApD,EAAY,IAAoB,CAC/G,MAAM2H,EAAe,GAAGlH,GAAO,OAAO,IAAIA,GAAOkC,CAAW,CAAC,IAAIlC,GAAOO,CAAO,CAAC,IAAIhB,CAAS,GAE7F,OAAIoD,GAAST,IAAgB,aAE3B7B,EAAAA,KAAC,MAAA,CAAI,UAAW6G,EACf,SAAA,CAAAnH,EAAAA,IAAC,OAAA,CAAK,UAAWC,GAAO,IAAA,CAAM,EAC9BD,EAAAA,IAAC,OAAA,CAAK,UAAWC,GAAO,MAAQ,SAAA2C,EAAM,EACtC5C,EAAAA,IAAC,OAAA,CAAK,UAAWC,GAAO,IAAA,CAAM,CAAA,EAC/B,EAIKD,EAAAA,IAAC,MAAA,CAAI,UAAWmH,CAAA,CAAc,CACtC,6gBCTO,SAASC,GAAS,CAAE,QAAAnE,EAAS,MAAA8C,EAAO,SAAA3C,EAAU,YAAAC,EAAc,mBAAoB,SAAArB,EAAW,GAAO,UAAAxC,EAAY,EAAA,EAAqB,CACzI,KAAM,CAACY,EAAQsD,CAAS,EAAI/D,EAAAA,SAAS,EAAK,EACpC,CAAC0H,EAAeC,CAAgB,EAAI3H,EAAAA,SAASoG,GAAS,EAAE,EACxDwB,EAAczD,EAAAA,OAAuB,IAAI,EAE/CS,EAAAA,UAAU,IAAM,CACf,MAAMC,EAAsBgD,GAAsB,CAC7CD,EAAY,SAAW,CAACA,EAAY,QAAQ,SAASC,EAAM,MAAc,GAC5E9D,EAAU,EAAK,CAEjB,EAEA,gBAAS,iBAAiB,YAAac,CAAkB,EAClD,IAAM,SAAS,oBAAoB,YAAaA,CAAkB,CAC1E,EAAG,CAAA,CAAE,EAEL,MAAMiD,EAAgBC,GAAwB,CACzC1F,IACJsF,EAAiBI,CAAW,EAC5BhE,EAAU,EAAK,EACfN,IAAWsE,CAAW,EACvB,EAEMvC,EAAiBlC,EAAQ,KAAMmC,GAAQA,EAAI,QAAUiC,CAAa,EAClEM,EAAcxC,GAAgB,OAAS9B,EAE7C,OACC/C,EAAAA,KAAC,MAAA,CAAI,UAAW,GAAGL,EAAO,QAAQ,IAAIT,CAAS,GAAI,IAAK+H,EACvD,SAAA,CAAAjH,EAAAA,KAAC,SAAA,CACA,UAAW,GAAGL,EAAO,OAAO,IAAI+B,EAAW/B,EAAO,SAAW,EAAE,GAC/D,QAAS,IAAM,CAAC+B,GAAY0B,EAAU,CAACtD,CAAM,EAC7C,SAAA4B,EACA,KAAK,SAEL,SAAA,CAAAhC,EAAAA,IAAC,QAAK,UAAWmF,EAAiBlF,EAAO,SAAWA,EAAO,YAAc,SAAA0H,CAAA,CAAY,EACrF3H,EAAAA,IAAC,OAAA,CAAK,UAAW,GAAGC,EAAO,KAAK,IAAIG,EAASH,EAAO,KAAO,EAAE,GAAI,SAAA,GAAA,CAAC,CAAA,CAAA,CAAA,EAElEG,SACC,MAAA,CAAI,UAAWH,EAAO,KACrB,SAAAgD,EAAQ,IAAKmB,GACbpE,EAAAA,IAAC,MAAA,CAEA,UAAW,GAAGC,EAAO,MAAM,IAAImE,EAAO,QAAUiD,EAAgBpH,EAAO,OAAS,EAAE,IACjFmE,EAAO,SAAWnE,EAAO,eAAiB,EAC3C,GACA,QAAS,IAAM,CAACmE,EAAO,UAAYqD,EAAarD,EAAO,KAAK,EAE3D,SAAAA,EAAO,KAAA,EANHA,EAAO,KAAA,CAQb,CAAA,CACF,CAAA,EAEF,CAEF,+uBClDO,SAASwD,GAAW,CAAE,OAAAC,EAAQ,SAAAC,EAAW,GAAO,QAAAC,EAAS,SAAA/F,EAAW,GAAO,SAAAoB,EAAU,SAAA4E,EAAU,UAAAxI,EAAY,EAAA,EAAuB,CACxI,KAAM,CAACyI,EAAOC,CAAQ,EAAIvI,EAAAA,SAAqB,CAAA,CAAE,EAC3CkE,EAAWC,EAAAA,OAAyB,IAAI,EAExCqE,EAAmB,MAAOC,GAAmC,CAClE,GAAI,CAACA,GAAiBpG,EAAU,OAEhC,MAAMqG,EAAuB,MAAM,KAAKD,CAAa,EAAE,IAAKE,GACvDP,GAAWO,EAAK,KAAOP,EACnB,CAAE,KAAAO,EAAM,OAAQ,SAAwB,MAAO,gBAAA,EAEhD,CAAE,KAAAA,EAAM,OAAQ,MAAA,CACvB,EAKD,GAHAJ,EAAUpI,GAAS,CAAC,GAAGA,EAAM,GAAGuI,CAAQ,CAAC,EACzCjF,IAAWiF,CAAQ,EAEfL,EACH,UAAWO,KAAYF,EAClBE,EAAS,SAAW,UACvB,MAAMC,EAAYD,CAAQ,CAI9B,EAEMC,EAAc,MAAOD,GAAuB,CACjDE,EAAiBF,EAAS,KAAK,KAAM,YAAY,EAEjD,GAAI,CACH,MAAMP,IAAWO,EAAS,IAAI,EAC9BE,EAAiBF,EAAS,KAAK,KAAM,UAAU,CAChD,OAASG,EAAO,CACfD,EAAiBF,EAAS,KAAK,KAAM,SAAWG,EAAgB,OAAO,CACxE,CACD,EAEMD,EAAmB,CAACE,EAAkBxH,EAAoBuH,IAAmB,CAClFR,EAAUpI,IAASA,GAAK,IAAK8I,GAAOA,EAAE,KAAK,OAASD,EAAW,CAAE,GAAGC,EAAG,OAAAzH,EAAQ,MAAAuH,CAAA,EAAUE,CAAE,CAAC,CAC7F,EAEMC,EAAcF,GAAqB,CACxCT,EAAUpI,GAASA,EAAK,OAAQ8I,GAAMA,EAAE,KAAK,OAASD,CAAQ,CAAC,CAChE,EAEMG,EAAiB3H,GAAuB,CAC7C,OAAQA,EAAA,CACP,IAAK,aACJ,MAAO,IACR,IAAK,WACJ,MAAO,IACR,IAAK,SACJ,MAAO,IACR,QACC,MAAO,IAAA,CAEV,EAEA,OACCb,OAAC,OAAI,UAAW,GAAGL,EAAO,UAAU,IAAIT,CAAS,GAChD,SAAA,CAAAc,OAAC,OAAI,UAAW,GAAGL,EAAO,QAAQ,IAAI+B,EAAW/B,EAAO,SAAW,EAAE,GAAI,QAAS,IAAM,CAAC+B,GAAY6B,EAAS,SAAS,QACtH,SAAA,CAAA7D,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,KAAM,SAAA,KAAE,EAChCD,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,KAAM,SAAA,uBAAA,CAAqB,CAAA,EACpD,EACAD,EAAAA,IAAC,QAAA,CACA,IAAK6D,EACL,KAAK,OACL,OAAAgE,EACA,SAAAC,EACA,SAAA9F,EACA,SAAWyC,GAAM0D,EAAiB1D,EAAE,OAAO,KAAK,EAChD,UAAWxE,EAAO,KAAA,CAAA,EAElBgI,EAAM,OAAS,GACfjI,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,SACrB,SAAAgI,EAAM,IAAI,CAACM,EAAU5G,IACrBrB,EAAAA,KAAC,MAAA,CAA2C,UAAW,GAAGL,EAAO,QAAQ,IAAIA,EAAOsI,EAAS,MAAM,CAAC,GACnG,SAAA,CAAAvI,EAAAA,IAAC,QAAK,UAAWC,EAAO,SAAW,SAAA6I,EAAcP,EAAS,MAAM,EAAE,QACjE,OAAA,CAAK,UAAWtI,EAAO,SAAW,SAAAsI,EAAS,KAAK,KAAK,EACtDjI,EAAAA,KAAC,OAAA,CAAK,UAAWL,EAAO,SAAY,SAAA,EAAAsI,EAAS,KAAK,KAAO,MAAM,QAAQ,CAAC,EAAE,KAAA,EAAG,EAC5EA,EAAS,OAASvI,MAAC,OAAA,CAAK,UAAWC,EAAO,MAAQ,WAAS,KAAA,CAAM,EAClED,EAAAA,IAAC,SAAA,CAAO,UAAWC,EAAO,OAAQ,QAAS,IAAM4I,EAAWN,EAAS,KAAK,IAAI,EAAG,SAAA,GAAA,CAEjF,CAAA,GAPS,GAAGA,EAAS,KAAK,IAAI,IAAI5G,CAAK,EAQxC,CACA,CAAA,CACF,CAAA,EAEF,CAEF,iWCpGO,SAASoH,GAAO,CAAE,KAAAC,EAAM,MAAAvI,EAAO,SAAAc,EAAU,QAAA0H,EAAS,OAAAC,EAAS,GAAO,UAAA1J,EAAY,IAAmB,CACvG,aACE,SAAA,CAAO,UAAW,GAAGS,EAAO,MAAM,IAAIiJ,EAASjJ,EAAO,OAAS,EAAE,IAAIT,CAAS,GAC9E,gBAAC,MAAA,CAAI,UAAWS,EAAO,QACpB,SAAA,EAAA+I,GAAQvI,IACTH,OAAC,MAAA,CAAI,UAAWL,EAAO,MACrB,SAAA,CAAA+I,GAAQhJ,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,KAAO,SAAA+I,EAAK,EAC3CvI,GAAST,EAAAA,IAAC,KAAA,CAAG,UAAWC,EAAO,MAAQ,SAAAQ,CAAA,CAAM,CAAA,EAC/C,EAEAc,GAAYvB,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,IAAM,SAAAsB,EAAS,EAClD0H,GAAWjJ,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,QAAU,SAAAgJ,CAAA,CAAQ,CAAA,CAAA,CACtD,CAAA,CACD,CAEF,yoBCXaE,GAAQC,EAAAA,WACpB,CAAC,CAAE,MAAAxG,EAAO,MAAA8F,EAAO,WAAAW,EAAY,KAAAnI,EAAO,KAAM,QAAAV,EAAU,UAAW,KAAA8I,EAAM,UAAAxH,EAAY,GAAO,UAAAtC,EAAY,GAAI,SAAAwC,EAAW,GAAO,GAAGC,CAAA,EAASsH,IAAQ,CAC7I,MAAMC,EAAed,EAAQ,QAAUlI,EACjCiJ,EAAiB,GAAGxJ,EAAO,cAAc,IAAI6B,EAAY7B,EAAO,UAAY,EAAE,IAAIT,CAAS,GAC3FkK,EAAa,GAAGzJ,EAAO,KAAK,IAAIA,EAAOiB,CAAI,CAAC,IAAIjB,EAAOuJ,CAAY,CAAC,IAAIF,EAAOrJ,EAAO,SAAW,EAAE,IAAI+B,EAAW/B,EAAO,SAAW,EAAE,GAE5I,OACCK,EAAAA,KAAC,MAAA,CAAI,UAAWmJ,EACd,SAAA,CAAA7G,GAAS5C,EAAAA,IAAC,QAAA,CAAM,UAAWC,EAAO,MAAQ,SAAA2C,EAAM,EACjDtC,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,QACrB,SAAA,CAAAqJ,GAAQtJ,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,KAAO,SAAAqJ,EAAK,QAC5C,QAAA,CAAM,IAAAC,EAAU,UAAWG,EAAY,SAAA1H,EAAqB,GAAGC,CAAA,CAAO,CAAA,EACxE,GACEyG,GAASW,IAAerJ,EAAAA,IAAC,OAAA,CAAK,UAAW,GAAGC,EAAO,UAAU,IAAIyI,EAAQzI,EAAO,UAAY,EAAE,GAAK,YAASoJ,CAAA,CAAW,CAAA,EAC1H,CAEF,CACD,EAEAF,GAAM,YAAc,yQCvBb,SAASQ,GAAM,CAAE,KAAAzI,EAAO,KAAM,SAAA0I,EAAW,GAAO,SAAA5H,EAAW,GAAO,UAAAxC,EAAY,GAAI,SAAA+B,EAAU,GAAGU,GAAqB,CAC1H,cACE,QAAA,CAAM,UAAW,GAAGhC,GAAO,KAAK,IAAIA,GAAOiB,CAAI,CAAC,IAAIc,EAAW/B,GAAO,SAAW,EAAE,IAAIT,CAAS,GAAK,GAAGyC,EACvG,SAAA,CAAAV,EACAqI,GAAY5J,EAAAA,IAAC,OAAA,CAAK,UAAWC,GAAO,SAAU,SAAA,GAAA,CAAC,CAAA,EACjD,CAEF,+ZCAO,SAAS4J,GAAK,CAAE,MAAAxK,EAAO,UAAAmD,EAAY,GAAO,SAAAsH,EAAW,GAAO,UAAAtK,EAAY,IAAiB,CAC/F,aACE,KAAA,CAAG,UAAW,GAAGS,EAAO,IAAI,IAAI6J,EAAW7J,EAAO,SAAW,EAAE,IAAIT,CAAS,GAC3E,SAAAH,EAAM,IAAKa,GACXI,EAAAA,KAAC,KAAA,CAEA,UAAW,GAAGL,EAAO,IAAI,IAAIuC,GAAa,CAACtC,EAAK,SAAWD,EAAO,UAAY,EAAE,IAC/EC,EAAK,SAAWD,EAAO,SAAW,EACnC,IAAIC,EAAK,SAAW,CAACA,EAAK,SAAWD,EAAO,UAAY,EAAE,GAC1D,QAASC,EAAK,SAAW,OAAYA,EAAK,QAEzC,SAAA,CAAAA,EAAK,MAAQF,MAAC,OAAA,CAAK,UAAWC,EAAO,KAAO,WAAK,IAAA,CAAK,QACtD,OAAA,CAAK,UAAWA,EAAO,QAAU,WAAK,QAAQ,EAC9CC,EAAK,OAASF,MAAC,OAAA,CAAK,UAAWC,EAAO,MAAQ,WAAK,KAAA,CAAM,CAAA,CAAA,EARrDC,EAAK,EAAA,CAUX,EACF,CAEF,mjBCpBO,SAAS6J,GAAM,CACrB,OAAA3J,EACA,QAAA4J,EACA,MAAAvJ,EACA,SAAAc,EACA,OAAAe,EACA,KAAApB,EAAO,KACP,oBAAA+I,EAAsB,GACtB,gBAAAC,EAAkB,GAClB,UAAA1K,EAAY,EACb,EAAe,CAsBd,OArBA+E,EAAAA,UAAU,KACLnE,EACH,SAAS,KAAK,MAAM,SAAW,SAE/B,SAAS,KAAK,MAAM,SAAW,GAEzB,IAAM,CACZ,SAAS,KAAK,MAAM,SAAW,EAChC,GACE,CAACA,CAAM,CAAC,EAEXmE,EAAAA,UAAU,IAAM,CACf,MAAM4F,EAAgB1F,GAAqB,CACtCA,EAAE,MAAQ,UAAYrE,GACzB4J,EAAA,CAEF,EACA,gBAAS,iBAAiB,UAAWG,CAAY,EAC1C,IAAM,SAAS,oBAAoB,UAAWA,CAAY,CAClE,EAAG,CAAC/J,EAAQ4J,CAAO,CAAC,EAEf5J,EAGJJ,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,QAAS,QAASgK,EAAsBD,EAAU,OACxE,SAAA1J,EAAAA,KAAC,MAAA,CAAI,UAAW,GAAGL,EAAO,KAAK,IAAIA,EAAOiB,CAAI,CAAC,IAAI1B,CAAS,GAAI,QAAUiF,GAAMA,EAAE,gBAAA,EAC/E,SAAA,EAAAhE,GAASyJ,IACV5J,OAAC,MAAA,CAAI,UAAWL,EAAO,OACrB,SAAA,CAAAQ,GAAST,EAAAA,IAAC,KAAA,CAAG,UAAWC,EAAO,MAAQ,SAAAQ,EAAM,EAC7CyJ,GACAlK,EAAAA,IAAC,SAAA,CAAO,UAAWC,EAAO,YAAa,QAAS+J,EAAS,KAAK,SAAS,SAAA,GAAA,CAEvE,CAAA,EAEF,EAEDhK,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,QAAU,SAAAsB,EAAS,EACzCe,GAAUtC,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,OAAS,SAAAqC,CAAA,CAAO,CAAA,CAAA,CACnD,CAAA,CACD,EAlBmB,IAoBrB,uMCzDO,SAAS8H,GAAW,CAAE,YAAAC,EAAa,WAAAC,EAAY,aAAAC,EAAc,cAAAC,EAAgB,GAAM,aAAAC,EAAe,EAAG,UAAAjL,EAAY,EAAA,EAAuB,CAC9I,MAAMkL,EAAQ,CAACC,EAAeC,IACtB,MAAM,KAAK,CAAE,OAAQA,EAAMD,EAAQ,CAAA,EAAK,CAACE,EAAGC,IAAMH,EAAQG,CAAC,EA6B7DC,GA1BqB,IAAM,CAChC,MAAMC,EAAmBP,EAAe,EAExC,GAAIH,GAAcU,EACjB,OAAON,EAAM,EAAGJ,CAAU,EAG3B,MAAMW,EAAmB,KAAK,IAAIZ,EAAcI,EAAc,CAAC,EACzDS,EAAoB,KAAK,IAAIb,EAAcI,EAAcH,CAAU,EACnEa,EAAeF,EAAmB,EAClCG,EAAgBF,EAAoBZ,EAAa,EAEvD,MAAI,CAACa,GAAgBC,EAEb,CAAC,GADUV,EAAM,EAAG,EAAI,EAAID,CAAY,EACzB,MAAOH,CAAU,EAGpCa,GAAgB,CAACC,EAEb,CAAC,EAAG,MAAO,GADCV,EAAMJ,GAAc,EAAI,EAAIG,GAAeH,CAAU,CACzC,EAIzB,CAAC,EAAG,MAAO,GADEI,EAAMO,EAAkBC,CAAiB,EAC3B,MAAOZ,CAAU,CACpD,GAEwB,EAElBe,EAAiB,IAAM,CACxBhB,EAAc,GAAGE,EAAaF,EAAc,CAAC,CAClD,EAEMiB,EAAa,IAAM,CACpBjB,EAAcC,GAAYC,EAAaF,EAAc,CAAC,CAC3D,EAEA,OACC/J,OAAC,OAAI,UAAW,GAAGL,EAAO,UAAU,IAAIT,CAAS,GAC/C,SAAA,CAAAgL,GACAxK,EAAAA,IAAC,SAAA,CAAO,UAAWC,EAAO,WAAY,QAAS,IAAMsK,EAAa,CAAC,EAAG,SAAUF,IAAgB,EAAG,SAAA,IAEnG,EAEDrK,EAAAA,IAAC,SAAA,CAAO,UAAWC,EAAO,WAAY,QAASoL,EAAgB,SAAUhB,IAAgB,EAAG,SAAA,GAAA,CAE5F,EACCU,EAAgB,IAAI,CAACQ,EAAY5J,IAC7B4J,IAAe,MAEjBvL,MAAC,QAA2B,UAAWC,EAAO,KAAM,SAAA,KAAA,EAAzC,QAAQ0B,CAAK,EAExB,EAID3B,EAAAA,IAAC,SAAA,CAEA,UAAW,GAAGC,EAAO,UAAU,IAAIsL,IAAelB,EAAcpK,EAAO,OAAS,EAAE,GAClF,QAAS,IAAMsK,EAAagB,CAAoB,EAE/C,SAAAA,CAAA,EAJIA,CAAA,CAOP,EACDvL,EAAAA,IAAC,SAAA,CAAO,UAAWC,EAAO,WAAY,QAASqL,EAAY,SAAUjB,IAAgBC,EAAY,SAAA,GAAA,CAEjG,EACCE,GACAxK,EAAAA,IAAC,SAAA,CAAO,UAAWC,EAAO,WAAY,QAAS,IAAMsK,EAAaD,CAAU,EAAG,SAAUD,IAAgBC,EAAY,SAAA,GAAA,CAErH,CAAA,EAEF,CAEF,guBCzEO,SAASkB,GAAY,CAC3B,MAAAzF,EACA,IAAA0F,EAAM,IACN,QAAAjL,EAAU,UACV,KAAAU,EAAO,KACP,UAAAwK,EAAY,GACZ,MAAA9I,EACA,SAAA+I,EAAW,GACX,QAAAjG,EAAU,GACV,UAAAlG,EAAY,EACb,EAAqB,CACpB,MAAMoM,EAAa,KAAK,IAAI,KAAK,IAAK7F,EAAQ0F,EAAO,IAAK,CAAC,EAAG,GAAG,EAC3DI,EAAejJ,GAAS,GAAG,KAAK,MAAMgJ,CAAU,CAAC,IAEvD,aACE,MAAA,CAAI,UAAW,GAAG3L,EAAO,SAAS,IAAIT,CAAS,GAC/C,eAAC,MAAA,CAAI,UAAW,GAAGS,EAAO,WAAW,IAAIA,EAAOiB,CAAI,CAAC,GACpD,SAAAlB,EAAAA,IAAC,MAAA,CACA,UAAW,GAAGC,EAAO,IAAI,IAAIA,EAAOO,CAAO,CAAC,IAAIkF,EAAUzF,EAAO,QAAU,EAAE,IAAI0L,EAAW1L,EAAO,SAAW,EAAE,GAChH,MAAO,CAAE,MAAO,GAAG2L,CAAU,GAAA,EAE5B,YAAa5L,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,MAAQ,SAAA4L,CAAA,CAAa,CAAA,CAAA,EAE7D,CAAA,CACD,CAEF,gPChCO,SAASC,GAAY,CAAE,MAAAlJ,EAAO,MAAAmD,EAAO,KAAAgG,EAAM,QAAAC,EAAU,GAAO,SAAAhK,EAAW,GAAO,SAAAoB,EAAU,UAAA5D,EAAY,GAAI,GAAGyC,GAA2B,CAC5I,OACC3B,EAAAA,KAAC,QAAA,CAAM,UAAW,GAAGL,GAAO,WAAW,IAAI+B,EAAW/B,GAAO,SAAW,EAAE,IAAIT,CAAS,GACtF,SAAA,CAAAQ,EAAAA,IAAC,QAAA,CAAM,KAAK,QAAQ,KAAA+L,EAAY,MAAAhG,EAAc,QAAAiG,EAAkB,SAAAhK,EAAoB,SAAAoB,EAAoB,UAAWnD,GAAO,MAAQ,GAAGgC,CAAA,CAAO,EAC5IjC,EAAAA,IAAC,OAAA,CAAK,UAAWC,GAAO,KAAA,CAAO,EAC9B2C,GAAS5C,EAAAA,IAAC,OAAA,CAAK,UAAWC,GAAO,MAAQ,SAAA2C,CAAA,CAAM,CAAA,EACjD,CAEF,uYCNO,SAASqJ,GAAW,CAC1B,MAAArJ,EACA,IAAAsJ,EAAM,EACN,IAAAT,EAAM,IACN,KAAAU,EAAO,EACP,MAAApG,EAAQ,GACR,UAAAqG,EAAY,GACZ,WAAAC,EAAa,GACb,SAAAjJ,EACA,UAAA5D,EAAY,GACZ,SAAAwC,EAAW,GACX,GAAGC,CACJ,EAAoB,CACnB,MAAM2J,GAAe7F,EAAQmG,IAAQT,EAAMS,GAAQ,IAEnD,OACC5L,OAAC,OAAI,UAAW,GAAGL,EAAO,SAAS,IAAIT,CAAS,GAC9C,SAAA,CAAAoD,GAAS5C,EAAAA,IAAC,QAAA,CAAM,UAAWC,EAAO,MAAQ,SAAA2C,EAAM,EACjDtC,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,aACrB,SAAA,CAAAoM,GAAcrM,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,OAAS,SAAAiM,EAAI,EACpDlM,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,aACtB,SAAAD,EAAAA,IAAC,QAAA,CACA,KAAK,QACL,IAAAkM,EACA,IAAAT,EACA,KAAAU,EACA,MAAApG,EACA,SAAA3C,EACA,SAAApB,EACA,UAAW,GAAG/B,EAAO,KAAK,IAAI+B,EAAW/B,EAAO,SAAW,EAAE,GAC7D,MAAO,CAAE,eAAgB,GAAG2L,CAAU,GAAA,EACrC,GAAG3J,CAAA,CAAA,EAEN,EACCoK,GAAcrM,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,OAAS,SAAAwL,CAAA,CAAI,CAAA,EACrD,EACCW,GAAapM,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,MAAQ,SAAA8F,CAAA,CAAM,CAAA,EACrD,CAEF,q7BChCO,SAASuG,GAAW,CAC1B,QAAArJ,EACA,MAAA8C,EACA,SAAA3C,EACA,YAAAC,EAAc,mBACd,SAAArB,EAAW,GACX,WAAAuK,EAAa,GACb,UAAA/M,EAAY,EACb,EAAoB,CACnB,KAAM,CAACY,EAAQsD,CAAS,EAAI/D,EAAAA,SAAS,EAAK,EACpC,CAAC6M,EAAaC,CAAc,EAAI9M,EAAAA,SAAS,EAAE,EAC3C+M,EAAY5I,EAAAA,OAAuB,IAAI,EAE7CS,EAAAA,UAAU,IAAM,CACf,MAAMC,EAAsBgD,GAAsB,CAC7CkF,EAAU,SAAW,CAACA,EAAU,QAAQ,SAASlF,EAAM,MAAc,IACxE9D,EAAU,EAAK,EACf+I,EAAe,EAAE,EAEnB,EAEA,gBAAS,iBAAiB,YAAajI,CAAkB,EAClD,IAAM,SAAS,oBAAoB,YAAaA,CAAkB,CAC1E,EAAG,CAAA,CAAE,EAEL,MAAMiD,EAAgBC,GAAwB,CACzC1F,IACJoB,IAAWsE,CAAW,EACtBhE,EAAU,EAAK,EACf+I,EAAe,EAAE,EAClB,EAEMtH,EAAiBlC,EAAQ,KAAMmC,GAAQA,EAAI,QAAUW,CAAK,EAC1DzB,EAAkBiI,EAAatJ,EAAQ,OAAQmC,GAAQA,EAAI,MAAM,YAAA,EAAc,SAASoH,EAAY,YAAA,CAAa,CAAC,EAAIvJ,EAE5H,OACC3C,EAAAA,KAAC,MAAA,CAAI,UAAW,GAAGL,EAAO,UAAU,IAAIT,CAAS,GAAI,IAAKkN,EACzD,SAAA,CAAApM,EAAAA,KAAC,SAAA,CACA,UAAW,GAAGL,EAAO,OAAO,IAAI+B,EAAW/B,EAAO,SAAW,EAAE,GAC/D,QAAS,IAAM,CAAC+B,GAAY0B,EAAU,CAACtD,CAAM,EAC7C,SAAA4B,EACA,KAAK,SAEJ,SAAA,CAAAmD,EACA7E,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,gBACrB,SAAA,CAAAkF,EAAe,MAAQnF,MAAC,OAAA,CAAK,UAAWC,EAAO,KAAO,WAAe,IAAA,CAAK,EAC3EK,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,YACtB,SAAA,CAAAD,MAAC,OAAA,CAAK,UAAWC,EAAO,MAAQ,WAAe,MAAM,EACpDkF,EAAe,aAAenF,MAAC,OAAA,CAAK,UAAWC,EAAO,YAAc,WAAe,WAAA,CAAY,CAAA,CAAA,CACjG,CAAA,EACD,EAEAD,MAAC,OAAA,CAAK,UAAWC,EAAO,YAAc,SAAAoD,EAAY,EAEnDrD,EAAAA,IAAC,OAAA,CAAK,UAAW,GAAGC,EAAO,KAAK,IAAIG,EAASH,EAAO,KAAO,EAAE,GAAI,SAAA,GAAA,CAAC,CAAA,CAAA,CAAA,EAElEG,GACAE,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,KACrB,SAAA,CAAAsM,GACAvM,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,cACtB,SAAAD,EAAAA,IAAC,QAAA,CACA,KAAK,OACL,UAAWC,EAAO,YAClB,YAAY,YACZ,MAAOuM,EACP,SAAW/H,GAAMgI,EAAehI,EAAE,OAAO,KAAK,EAC9C,UAAS,EAAA,CAAA,EAEX,EAEDnE,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,YACrB,SAAA,CAAAqE,EAAgB,IAAKF,GACrB9D,EAAAA,KAAC,MAAA,CAEA,UAAW,GAAGL,EAAO,MAAM,IAAImE,EAAO,QAAU2B,EAAQ9F,EAAO,OAAS,EAAE,IAAImE,EAAO,SAAWnE,EAAO,eAAiB,EAAE,GAC1H,QAAS,IAAM,CAACmE,EAAO,UAAYqD,EAAarD,EAAO,KAAK,EAE3D,SAAA,CAAAA,EAAO,MAAQpE,MAAC,OAAA,CAAK,UAAWC,EAAO,KAAO,WAAO,IAAA,CAAK,EAC3DK,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,YACtB,SAAA,CAAAD,MAAC,OAAA,CAAK,UAAWC,EAAO,MAAQ,WAAO,MAAM,EAC5CmE,EAAO,aAAepE,MAAC,OAAA,CAAK,UAAWC,EAAO,YAAc,WAAO,WAAA,CAAY,CAAA,CAAA,CACjF,CAAA,CAAA,EARKmE,EAAO,KAAA,CAUb,EACAE,EAAgB,SAAW,GAAKtE,EAAAA,IAAC,OAAI,UAAWC,EAAO,UAAW,SAAA,kBAAA,CAAgB,CAAA,CAAA,CACpF,CAAA,CAAA,CACD,CAAA,EAEF,CAEF,yqBC5FO,SAAS0M,GAAU,CACzB,OAAAvM,EACA,QAAA4J,EACA,MAAAvJ,EACA,SAAAc,EACA,OAAAe,EACA,SAAAsK,EAAW,QACX,KAAA1L,EAAO,KACP,oBAAA+I,EAAsB,GACtB,gBAAAC,EAAkB,GAClB,UAAA1K,EAAY,EACb,EAAmB,CAsBlB,OArBA+E,EAAAA,UAAU,KACLnE,EACH,SAAS,KAAK,MAAM,SAAW,SAE/B,SAAS,KAAK,MAAM,SAAW,GAEzB,IAAM,CACZ,SAAS,KAAK,MAAM,SAAW,EAChC,GACE,CAACA,CAAM,CAAC,EAEXmE,EAAAA,UAAU,IAAM,CACf,MAAM4F,EAAgB1F,GAAqB,CACtCA,EAAE,MAAQ,UAAYrE,GACzB4J,EAAA,CAEF,EACA,gBAAS,iBAAiB,UAAWG,CAAY,EAC1C,IAAM,SAAS,oBAAoB,UAAWA,CAAY,CAClE,EAAG,CAAC/J,EAAQ4J,CAAO,CAAC,EAEf5J,EAGJJ,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,QAAS,QAASgK,EAAsBD,EAAU,OACxE,SAAA1J,EAAAA,KAAC,MAAA,CAAI,UAAW,GAAGL,EAAO,SAAS,IAAIA,EAAO2M,CAAQ,CAAC,IAAI3M,EAAOiB,CAAI,CAAC,IAAI1B,CAAS,GAAI,QAAUiF,GAAMA,EAAE,kBACvG,SAAA,EAAAhE,GAASyJ,IACV5J,OAAC,MAAA,CAAI,UAAWL,EAAO,OACrB,SAAA,CAAAQ,GAAST,EAAAA,IAAC,KAAA,CAAG,UAAWC,EAAO,MAAQ,SAAAQ,EAAM,EAC7CyJ,GACAlK,EAAAA,IAAC,SAAA,CAAO,UAAWC,EAAO,YAAa,QAAS+J,EAAS,KAAK,SAAS,SAAA,GAAA,CAEvE,CAAA,EAEF,EAEDhK,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,QAAU,SAAAsB,EAAS,EACzCe,GAAUtC,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,OAAS,SAAAqC,CAAA,CAAO,CAAA,CAAA,CACnD,CAAA,CACD,EAlBmB,IAoBrB,4bC5DO,SAASuK,GAAS,CAAE,QAAAC,EAAS,SAAAvL,EAAU,SAAAqL,EAAW,MAAO,UAAApN,EAAY,IAAqB,CAChG,KAAM,CAACY,EAAQsD,CAAS,EAAI/D,EAAAA,SAAS,EAAK,EACpCoN,EAAcjJ,EAAAA,OAAuB,IAAI,EAE/CS,OAAAA,EAAAA,UAAU,IAAM,CACf,MAAMC,EAAsBgD,GAAsB,CAC7CuF,EAAY,SAAW,CAACA,EAAY,QAAQ,SAASvF,EAAM,MAAc,GAC5E9D,EAAU,EAAK,CAEjB,EAEA,OAAItD,GACH,SAAS,iBAAiB,YAAaoE,CAAkB,EAEnD,IAAM,SAAS,oBAAoB,YAAaA,CAAkB,CAC1E,EAAG,CAACpE,CAAM,CAAC,EAGVE,EAAAA,KAAC,MAAA,CAAI,UAAW,GAAGL,GAAO,QAAQ,IAAIT,CAAS,GAAI,IAAKuN,EACvD,SAAA,CAAA/M,EAAAA,IAAC,MAAA,CAAI,UAAWC,GAAO,QAAS,QAAS,IAAMyD,EAAU,CAACtD,CAAM,EAC9D,SAAA0M,CAAA,CACF,EACC1M,GACAE,EAAAA,KAAC,MAAA,CAAI,UAAW,GAAGL,GAAO,OAAO,IAAIA,GAAO2M,CAAQ,CAAC,GACpD,SAAA,CAAA5M,EAAAA,IAAC,MAAA,CAAI,UAAWC,GAAO,KAAA,CAAO,EAC9BD,EAAAA,IAAC,MAAA,CAAI,UAAWC,GAAO,MAAQ,SAAAsB,CAAA,CAAS,CAAA,CAAA,CACzC,CAAA,EAEF,CAEF,weC7BO,SAASyL,GAAQ,CAAE,KAAA9L,EAAO,KAAM,QAAAV,EAAU,UAAW,UAAAhB,EAAY,GAAI,MAAAoD,GAAuB,CAClG,OACCtC,OAAC,OAAI,UAAW,GAAGL,GAAO,cAAc,IAAIT,CAAS,GACpD,SAAA,CAAAQ,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,GAAO,OAAO,IAAIA,GAAOiB,CAAI,CAAC,IAAIjB,GAAOO,CAAO,CAAC,GAAI,KAAK,SAAS,aAAYoC,GAAS,UAC1G,eAAC,MAAA,CAAI,UAAW3C,GAAO,MAAA,CAAQ,CAAA,CAChC,EACC2C,GAAS5C,EAAAA,IAAC,OAAA,CAAK,UAAWC,GAAO,MAAQ,SAAA2C,CAAA,CAAM,CAAA,EACjD,CAEF,+6DCHO,SAASqK,GAAU,CACzB,SAAA1L,EACA,UAAA2L,EAAY,aACZ,MAAAC,EAAQ,QACR,QAAAC,EAAU,QACV,QAAAC,EAAU,KACV,KAAAC,EAAO,GACP,UAAA9N,EAAY,GACZ,MAAA+N,CACD,EAAmB,CAClB,OACCvN,EAAAA,IAAC,MAAA,CACA,UAAW,GAAGC,GAAO,SAAS,IAAIA,GAAOiN,CAAS,CAAC,IAAIjN,GAAO,SAASkN,CAAK,EAAE,CAAC,IAAIlN,GAAO,WAAWmN,CAAO,EAAE,CAAC,IAAInN,GAAO,WAAWoN,CAAO,EAAE,CAAC,IAAIC,EAAOrN,GAAO,KAAO,EAAE,IAAIT,CAAS,GACvL,MAAA+N,EAEC,SAAAhM,CAAA,CAAA,CAGJ,+sBClBO,SAASiM,GAAQ,CAAE,MAAAC,EAAO,YAAAC,EAAa,YAAAvL,EAAc,aAAc,YAAAwL,EAAa,UAAAnO,EAAY,IAAoB,CACtH,aACE,MAAA,CAAI,UAAW,GAAGS,EAAO,OAAO,IAAIA,EAAOkC,CAAW,CAAC,IAAI3C,CAAS,GACnE,WAAM,IAAI,CAAC2M,EAAMxK,IAAU,CAC3B,MAAMiM,EAAcjM,EAAQ+L,EACtBG,EAAYlM,IAAU+L,EACtBhL,EAAciL,IAAgBC,GAAeC,GAEnD,OACCvN,OAACyC,EAAM,SAAN,CACA,SAAA,CAAAzC,EAAAA,KAAC,MAAA,CACA,UAAW,GAAGL,EAAO,IAAI,IAAI2N,EAAc3N,EAAO,UAAY,EAAE,IAAI4N,EAAY5N,EAAO,QAAU,EAAE,IAAIyC,EAAczC,EAAO,UAAY,EAAE,GAC1I,QAAS,IAAMyC,GAAeiL,EAAYhM,CAAK,EAE/C,SAAA,CAAA3B,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,cACrB,WACAD,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,UAAW,SAAA,GAAA,CAAC,EACjCkM,EAAK,KACRA,EAAK,KAELnM,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,WAAa,SAAA0B,EAAQ,CAAA,CAAE,CAAA,CAEjD,EACArB,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,YACtB,SAAA,CAAAD,MAAC,MAAA,CAAI,UAAWC,EAAO,UAAY,WAAK,MAAM,EAC7CkM,EAAK,aAAenM,MAAC,MAAA,CAAI,UAAWC,EAAO,gBAAkB,WAAK,WAAA,CAAY,CAAA,CAAA,CAChF,CAAA,CAAA,CAAA,EAEA0B,EAAQ8L,EAAM,OAAS,SAAM,MAAA,CAAI,UAAW,GAAGxN,EAAO,SAAS,IAAI2N,EAAc3N,EAAO,UAAY,EAAE,EAAA,CAAI,CAAA,CAAA,EAnBvF0B,CAoBrB,CAEF,CAAC,CAAA,CACF,CAEF,ukBChCO,SAASmM,GAAe,CAC9B,QAAAvI,EACA,KAAAC,EACA,QAAAE,EAAU,GACV,UAAAlD,EAAY,GACZ,SAAAuL,EAAW,GACX,QAAAC,EAAU,GACV,WAAAvI,EACA,UAAAjG,EAAY,EACb,EAAkB,CACjB,OACCc,OAAC,OAAI,UAAW,GAAGL,EAAO,YAAY,IAAIT,CAAS,GAClD,SAAA,CAAAc,EAAAA,KAAC,QAAA,CACA,UAAW,GAAGL,EAAO,KAAK,IAAIyF,EAAUzF,EAAO,QAAU,EAAE,IAAIuC,EAAYvC,EAAO,UAAY,EAAE,IAAI8N,EAAW9N,EAAO,SAAW,EAAE,IAAI+N,EAAU/N,EAAO,QAAU,EAAE,GAEpK,SAAA,CAAAD,EAAAA,IAAC,QAAA,CAAM,UAAWC,EAAO,MACxB,SAAAD,EAAAA,IAAC,KAAA,CACC,SAAAuF,EAAQ,IAAKI,GACb3F,EAAAA,IAAC,KAAA,CAAoB,UAAWC,EAAO,GAAI,MAAO,CAAE,MAAO0F,EAAO,KAAA,EAChE,SAAAA,EAAO,MAAA,EADAA,EAAO,GAEhB,CACA,CAAA,CACF,EACD,EACA3F,EAAAA,IAAC,QAAA,CAAM,UAAWC,EAAO,MACvB,SAAAuF,EAAK,IAAI,CAACI,EAAKjE,IACf3B,EAAAA,IAAC,KAAA,CAAe,UAAW,GAAGC,EAAO,EAAE,IAAIwF,EAAaxF,EAAO,UAAY,EAAE,GAAI,QAAS,IAAMwF,IAAaG,CAAG,EAC9G,SAAAL,EAAQ,IAAKI,GACb3F,EAAAA,IAAC,KAAA,CAAoB,UAAWC,EAAO,GACrC,SAAA0F,EAAO,OAASA,EAAO,OAAOC,EAAID,EAAO,GAAc,EAAGC,CAAG,EAAI,OAAOA,EAAID,EAAO,GAAc,GAAK,EAAE,CAAA,EADjGA,EAAO,GAEhB,CACA,CAAA,EALOhE,CAMT,CACA,CAAA,CACF,CAAA,CAAA,CAAA,EAEA6D,EAAK,SAAW,GAAKxF,EAAAA,IAAC,OAAI,UAAWC,EAAO,MAAO,SAAA,mBAAA,CAAiB,CAAA,EACtE,CAEF,qjBCtCO,SAASgO,GAAK,CAAE,MAAA5O,EAAO,gBAAA6O,EAAiB,QAAA1N,EAAU,UAAW,UAAAsB,EAAY,GAAO,SAAAsB,EAAU,UAAA5D,EAAY,EAAA,EAAiB,CAC7H,KAAM,CAAC2O,EAAUC,CAAW,EAAIzO,EAAAA,SAASuO,GAAmB7O,EAAM,CAAC,GAAG,EAAE,EAElEgP,EAAiB,CAACxO,EAAYmC,IAAuB,CACtDA,IACJoM,EAAYvO,CAAE,EACduD,IAAWvD,CAAE,EACd,EAEMyO,EAAajP,EAAM,KAAMa,GAASA,EAAK,KAAOiO,CAAQ,EAE5D,OACC7N,OAAC,OAAI,UAAW,GAAGL,EAAO,aAAa,IAAIT,CAAS,GACnD,SAAA,CAAAQ,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,QAAQ,IAAIA,EAAOO,CAAO,CAAC,IAAIsB,EAAY7B,EAAO,UAAY,EAAE,GAAI,KAAK,UACjG,SAAAZ,EAAM,IAAKa,GACXI,EAAAA,KAAC,SAAA,CAEA,KAAK,MACL,gBAAeJ,EAAK,KAAOiO,EAC3B,gBAAejO,EAAK,SACpB,UAAW,GAAGD,EAAO,GAAG,IAAIC,EAAK,KAAOiO,EAAWlO,EAAO,OAAS,EAAE,IAAIC,EAAK,SAAWD,EAAO,SAAW,EAAE,GAC7G,QAAS,IAAMoO,EAAenO,EAAK,GAAIA,EAAK,QAAQ,EACpD,SAAUA,EAAK,SAEd,SAAA,CAAAA,EAAK,MAAQF,MAAC,OAAA,CAAK,UAAWC,EAAO,KAAO,WAAK,IAAA,CAAK,EACvDD,EAAAA,IAAC,OAAA,CAAM,SAAAE,EAAK,KAAA,CAAM,CAAA,CAAA,EATbA,EAAK,EAAA,CAWX,EACF,EACAF,EAAAA,IAAC,OAAI,UAAWC,EAAO,WAAY,KAAK,WACtC,YAAY,OAAA,CACd,CAAA,EACD,CAEF,2+BCxCasO,GAAWxL,EAAM,WAC7B,CAAC,CAAE,MAAAH,EAAO,WAAAyG,EAAY,MAAAX,EAAO,KAAAxH,EAAO,KAAM,QAAAV,EAAU,UAAW,UAAAsB,EAAY,GAAO,OAAA0M,EAAS,WAAY,UAAAhP,EAAY,GAAI,SAAAwC,EAAU,GAAGyM,CAAA,EAAQlF,IAAQ,CACnJ,MAAMmF,EAAkBhG,EAAQ,QAAUlI,EAE1C,OACCF,EAAAA,KAAC,MAAA,CAAI,UAAW,GAAGL,EAAO,eAAe,IAAI6B,EAAY7B,EAAO,UAAY,EAAE,IAAIT,CAAS,GACzF,SAAA,CAAAoD,GAAS5C,EAAAA,IAAC,QAAA,CAAM,UAAWC,EAAO,MAAQ,SAAA2C,EAAM,EACjD5C,EAAAA,IAAC,WAAA,CACA,IAAAuJ,EACA,UAAW,GAAGtJ,EAAO,QAAQ,IAAIA,EAAOiB,CAAI,CAAC,IAAIjB,EAAOyO,CAAe,CAAC,IAAIzO,EAAO,UAAUuO,CAAM,EAAE,CAAC,IAAIxM,EAAW/B,EAAO,SAAW,EAAE,GACzI,SAAA+B,EACC,GAAGyM,CAAA,CAAA,EAEJ/F,GAAS1I,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,UAAY,SAAAyI,EAAM,EACnD,CAACA,GAASW,GAAcrJ,EAAAA,IAAC,QAAK,UAAWC,EAAO,WAAa,SAAAoJ,CAAA,CAAW,CAAA,EAC1E,CAEF,CACD,EAEAkF,GAAS,YAAc,u3BChBhB,SAASI,GAAS,CAAE,MAAAtP,EAAO,YAAA8C,EAAc,WAAY,UAAA3C,EAAY,IAAqB,CAC5F,OACCQ,MAAC,OAAI,UAAW,GAAGC,EAAO,QAAQ,IAAIA,EAAOkC,CAAW,CAAC,IAAI3C,CAAS,GACpE,SAAAH,EAAM,IAAI,CAACa,EAAMyB,IACjBrB,OAAC,MAAA,CAAkB,UAAWL,EAAO,aACpC,SAAA,CAAAD,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,cAAc,IAAIC,EAAK,MAAQD,EAAOC,EAAK,KAAK,EAAID,EAAO,OAAO,GAC1F,SAAAC,EAAK,KAAOF,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,KAAO,SAAAC,EAAK,IAAA,CAAK,EAAUF,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,IAAK,EAC9F,EACC0B,EAAQtC,EAAM,OAAS,GAAKW,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,iBAAiB,IAAIC,EAAK,MAAQD,EAAOC,EAAK,KAAK,EAAID,EAAO,OAAO,GAAI,EAChIK,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,gBACrB,SAAA,CAAAC,EAAK,MAAQF,MAAC,OAAA,CAAK,UAAWC,EAAO,KAAO,WAAK,IAAA,CAAK,QACtD,KAAA,CAAG,UAAWA,EAAO,MAAQ,WAAK,MAAM,EACxCC,EAAK,aAAeF,MAAC,IAAA,CAAE,UAAWC,EAAO,YAAc,WAAK,WAAA,CAAY,CAAA,CAAA,CAC1E,CAAA,CAAA,EATSC,EAAK,EAUf,CACA,EACF,CAEF,mbCvBO,SAAS0O,GAAa,CAAE,QAAA5C,EAAS,eAAA6C,EAAiB,GAAO,SAAAzL,EAAU,MAAAR,EAAO,SAAAZ,EAAW,GAAO,KAAAd,EAAO,KAAM,UAAA1B,EAAY,IAAyB,CACpJ,KAAM,CAACsP,EAAiBC,CAAkB,EAAIhM,EAAM,SAAS8L,CAAc,EACrE5K,EAAe+H,IAAY,OAC3BgD,EAAY/K,EAAe+H,EAAU8C,EAErC3I,EAAe,IAAM,CAC1B,GAAInE,EAAU,OAEd,MAAMiN,EAAa,CAACD,EACf/K,GACJ8K,EAAmBE,CAAU,EAE9B7L,IAAW6L,CAAU,CACtB,EAEA,OACC3O,EAAAA,KAAC,QAAA,CAAM,UAAW,GAAGL,EAAO,YAAY,IAAI+B,EAAW/B,EAAO,SAAW,EAAE,IAAIT,CAAS,GACvF,SAAA,CAAAQ,EAAAA,IAAC,QAAA,CAAM,KAAK,WAAW,QAASgP,EAAW,SAAU7I,EAAc,SAAAnE,EAAoB,UAAW/B,EAAO,KAAA,CAAO,EAChHD,EAAAA,IAAC,QAAK,UAAW,GAAGC,EAAO,MAAM,IAAIA,EAAOiB,CAAI,CAAC,IAAI8N,EAAY/O,EAAO,QAAU,EAAE,GACnF,eAAC,OAAA,CAAK,UAAWA,EAAO,MAAA,CAAQ,CAAA,CACjC,EACC2C,GAAS5C,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,MAAQ,SAAA2C,CAAA,CAAM,CAAA,EACjD,CAEF,0bC1BO,SAASsM,GAAQ,CAAE,SAAA3N,EAAU,QAAA4N,EAAS,SAAAvC,EAAW,MAAO,MAAAwC,EAAQ,IAAK,UAAA5P,EAAY,IAAoB,CAC3G,KAAM,CAAC6P,EAAWC,CAAY,EAAI3P,EAAAA,SAAS,EAAK,EAC1C4P,EAAazL,EAAAA,OAAA,EACb0L,EAAa1L,EAAAA,OAAuB,IAAI,EAExC2L,EAAc,IAAM,CACzBF,EAAW,QAAU,WAAW,IAAM,CACrCD,EAAa,EAAI,CAClB,EAAGF,CAAK,CACT,EAEMM,EAAc,IAAM,CACrBH,EAAW,SACd,aAAaA,EAAW,OAAO,EAEhCD,EAAa,EAAK,CACnB,EAEA/K,OAAAA,EAAAA,UAAU,IACF,IAAM,CACRgL,EAAW,SACd,aAAaA,EAAW,OAAO,CAEjC,EACE,CAAA,CAAE,EAGJjP,EAAAA,KAAC,MAAA,CACA,UAAW,GAAGL,GAAO,cAAc,IAAIT,CAAS,GAChD,IAAKgQ,EACL,aAAcC,EACd,aAAcC,EACd,QAASD,EACT,OAAQC,EAEP,SAAA,CAAAnO,EACA8N,GACA/O,EAAAA,KAAC,MAAA,CAAI,UAAW,GAAGL,GAAO,OAAO,IAAIA,GAAO2M,CAAQ,CAAC,GAAI,KAAK,UAC7D,SAAA,CAAA5M,EAAAA,IAAC,MAAA,CAAI,UAAWC,GAAO,eAAiB,SAAAkP,EAAQ,EAChDnP,EAAAA,IAAC,MAAA,CAAI,UAAWC,GAAO,YAAA,CAAc,CAAA,CAAA,CACtC,CAAA,CAAA,CAAA,CAIJ,m6BCpCM0P,GAAeC,EAAAA,cAA6C,MAAS,EAQpE,SAASC,GAAc,CAAE,SAAAtO,EAAU,SAAAqL,EAAW,YAAa,UAAAkD,EAAY,GAAyB,CACtG,KAAM,CAACC,EAAQC,CAAS,EAAIrQ,EAAAA,SAAsB,CAAA,CAAE,EAE9CsQ,EAAYC,EAAAA,YACjB,CAACxP,EAAiBuC,EAAwB,KAAO,CAChD,MAAMpD,EAAK,KAAK,SAAS,SAAS,EAAE,EAAE,UAAU,EAAG,CAAC,EAC9CsQ,EAAsB,CAC3B,GAAAtQ,EACA,QAAAa,EACA,QAASuC,EAAQ,SAAW,OAC5B,SAAUA,EAAQ,UAAY,IAC9B,YAAaA,EAAQ,aAAe,EAAA,EAGrC+M,EAAWlQ,GACM,CAAC,GAAGA,EAAMqQ,CAAQ,EACnB,MAAM,CAACL,CAAS,CAC/B,EAEGK,EAAS,UAAYA,EAAS,SAAW,GAC5C,WAAW,IAAM,CAChBC,EAAYvQ,CAAE,CACf,EAAGsQ,EAAS,QAAQ,CAEtB,EACA,CAACL,CAAS,CAAA,EAGLM,EAAcF,cAAarQ,GAAe,CAC/CmQ,EAAWlQ,GAASA,EAAK,OAAQuQ,GAAUA,EAAM,KAAOxQ,CAAE,CAAC,CAC5D,EAAG,CAAA,CAAE,EAECyQ,EAAqB,KACyB,CAClD,WAAYrQ,EAAO,QACnB,aAAcA,EAAO,UACrB,YAAaA,EAAO,SACpB,cAAeA,EAAO,WACtB,gBAAiBA,EAAO,aACxB,eAAgBA,EAAO,WAAA,GAEL2M,CAAQ,EAGtB2D,EAAW/P,IACF,CACb,KAAM,IACN,QAAS,IACT,QAAS,IACT,MAAO,GAAA,GAEKA,CAAO,EAGrB,cACEmP,GAAa,SAAb,CAAsB,MAAO,CAAE,UAAAM,GAC9B,SAAA,CAAA1O,EACDvB,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,cAAc,IAAIqQ,EAAA,CAAoB,GAC9D,SAAAP,EAAO,IAAKM,GACZ/P,OAAC,MAAA,CAAmB,UAAW,GAAGL,EAAO,KAAK,IAAIA,EAAOoQ,EAAM,SAAW,MAAM,CAAC,GAAI,KAAK,QAAQ,YAAU,SAC3G,SAAA,CAAArQ,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,KAAO,WAAQoQ,EAAM,SAAW,MAAM,CAAA,CAAE,QAC9D,MAAA,CAAI,UAAWpQ,EAAO,QAAU,WAAM,QAAQ,EAC9CoQ,EAAM,aACNrQ,MAAC,SAAA,CAAO,UAAWC,EAAO,YAAa,QAAS,IAAMmQ,EAAYC,EAAM,EAAE,EAAG,aAAW,QAAQ,SAAA,GAAA,CAEhG,CAAA,GANQA,EAAM,EAQhB,CACA,CAAA,CACF,CAAA,EACD,CAEF,CAEO,SAASG,IAAW,CAC1B,MAAMC,EAAUC,EAAAA,WAAWf,EAAY,EACvC,GAAI,CAACc,EACJ,MAAM,IAAI,MAAM,8CAA8C,EAE/D,OAAOA,CACR,2eCnFA,SAASE,GAAa,CAAE,KAAAC,EAAM,MAAAC,EAAO,YAAAC,EAAa,SAAAzQ,EAAU,YAAA0Q,GAAkC,CAC7F,MAAMC,EAAcJ,EAAK,UAAYA,EAAK,SAAS,OAAS,EACtDK,EAAaH,EAAY,IAAIF,EAAK,EAAE,EAEpCM,EAAc,IAAM,CACrBN,EAAK,WACLI,GACH3Q,EAASuQ,EAAK,EAAE,EAEjBG,IAAcH,CAAI,EACnB,EAEA,OACCtQ,EAAAA,KAAC,MAAA,CAAI,UAAWL,EAAO,gBACtB,SAAA,CAAAK,EAAAA,KAAC,MAAA,CAAI,UAAW,GAAGL,EAAO,QAAQ,IAAI2Q,EAAK,SAAW3Q,EAAO,SAAW,EAAE,GAAI,MAAO,CAAE,YAAa,GAAG4Q,EAAQ,GAAG,KAAA,EAAS,QAASK,EAClI,SAAA,CAAAF,GAAehR,EAAAA,IAAC,OAAA,CAAK,UAAW,GAAGC,EAAO,UAAU,IAAIgR,EAAahR,EAAO,SAAW,EAAE,GAAI,SAAA,IAAC,EAC9F,CAAC+Q,GAAehR,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,OAAQ,EAChD2Q,EAAK,MAAQ5Q,MAAC,OAAA,CAAK,UAAWC,EAAO,KAAO,WAAK,IAAA,CAAK,QACtD,OAAA,CAAK,UAAWA,EAAO,MAAQ,WAAK,KAAA,CAAM,CAAA,EAC5C,EACC+Q,GAAeC,GACfjR,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,SACrB,SAAA2Q,EAAK,SAAU,IAAKO,SACnBR,GAAA,CAA4B,KAAMQ,EAAO,MAAON,EAAQ,EAAG,YAAAC,EAA0B,SAAAzQ,EAAoB,YAAA0Q,CAAA,EAAvFI,EAAM,EAA2G,CACpI,CAAA,CACF,CAAA,EAEF,CAEF,CAEO,SAASC,GAAS,CAAE,KAAA5L,EAAM,mBAAA6L,EAAqB,CAAA,EAAI,YAAAN,EAAa,UAAAvR,EAAY,IAAqB,CACvG,KAAM,CAACsR,EAAaQ,CAAc,EAAI3R,EAAAA,SAAsB,IAAI,IAAI0R,CAAkB,CAAC,EAEjFE,EAAgB1R,GAAe,CACpCyR,EAAgBxR,GAAS,CACxB,MAAM0R,EAAO,IAAI,IAAI1R,CAAI,EACzB,OAAI0R,EAAK,IAAI3R,CAAE,EACd2R,EAAK,OAAO3R,CAAE,EAEd2R,EAAK,IAAI3R,CAAE,EAEL2R,CACR,CAAC,CACF,EAEA,OACCxR,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,QAAQ,IAAIT,CAAS,GAC7C,SAAAgG,EAAK,IAAKoL,GACV5Q,EAAAA,IAAC2Q,GAAA,CAA2B,KAAAC,EAAY,MAAO,EAAG,YAAAE,EAA0B,SAAUS,EAAc,YAAAR,CAAA,EAAjFH,EAAK,EAAsG,CAC9H,CAAA,CACF,CAEF,yhCC3CA,SAASa,GAAiB,CAAE,KAAAvR,EAAM,MAAA2Q,EAAO,YAAAC,EAAa,SAAAzQ,EAAU,YAAAqR,EAAa,YAAAvP,EAAa,UAAAwP,GAAoC,CAC7H,MAAMX,EAAc9Q,EAAK,UAAYA,EAAK,SAAS,OAAS,EACtD+Q,EAAaH,EAAY,IAAI5Q,EAAK,EAAE,EACpC0R,EAAa1R,EAAK,UAAY8Q,EAE9BE,EAAezM,GAAwB,CACxCvE,EAAK,WAEL8Q,GAAe7O,IAAgB,aAClCsC,EAAE,eAAA,EACFpE,EAASH,EAAK,EAAE,GAGbA,EAAK,SACRA,EAAK,QAAA,EAGNwR,IAAcxR,CAAI,EACnB,EAEM2R,EAAgB,IACrBvR,EAAAA,KAAAwR,EAAAA,SAAA,CACE,SAAA,CAAA5R,EAAK,MAAQF,MAAC,OAAA,CAAK,UAAWC,EAAO,KAAO,WAAK,IAAA,CAAK,EACtD,CAAC0R,GAAa3R,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAO,MAAQ,WAAK,MAAM,EACzD,CAAC0R,GAAazR,EAAK,OAASF,EAAAA,IAAC,QAAK,UAAWC,EAAO,MAAQ,SAAAC,EAAK,KAAA,CAAM,EACvE,CAACyR,GAAaX,GAAe7O,IAAgB,kBAAe,OAAA,CAAK,UAAW,GAAGlC,EAAO,UAAU,IAAIgR,EAAahR,EAAO,SAAW,EAAE,GAAI,SAAA,IAAC,EAC1I,CAAC0R,GAAaX,GAAe7O,IAAgB,oBAAiB,OAAA,CAAK,UAAWlC,EAAO,aAAc,SAAA,GAAA,CAAC,CAAA,EACtG,EAGKkP,EAAUjP,EAAK,KACpBF,EAAAA,IAAC,IAAA,CAAE,KAAME,EAAK,KAAM,UAAW,GAAGD,EAAO,OAAO,IAAIC,EAAK,SAAWD,EAAO,SAAW,EAAE,IAAI4Q,EAAQ,EAAI5Q,EAAO,OAAS,EAAE,GAAI,QAASiR,EACrI,YAAc,CAChB,EAEAlR,EAAAA,IAAC,SAAA,CAAO,KAAK,SAAS,UAAW,GAAGC,EAAO,OAAO,IAAIC,EAAK,SAAWD,EAAO,SAAW,EAAE,IAAI4Q,EAAQ,EAAI5Q,EAAO,OAAS,EAAE,GAAI,QAASiR,EACvI,SAAAW,EAAA,CAAc,CAChB,EAGD,OACCvR,EAAAA,KAAC,MAAA,CAAI,UAAW,GAAGL,EAAO,cAAc,IAAI2R,EAAa3R,EAAO,gBAAkB,EAAE,GAClF,SAAA,CAAAkP,EACA6B,GACA1Q,EAAAA,KAAAwR,WAAA,CACE,SAAA,CAAA3P,IAAgB,YAAc8O,GAC9BjR,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,SACrB,SAAAC,EAAK,SAAU,IAAKiR,GACpBnR,EAAAA,IAACyR,GAAA,CAEA,KAAMN,EACN,MAAON,EAAQ,EACf,YAAAC,EACA,SAAAzQ,EACA,YAAAqR,EACA,YAAAvP,EACA,UAAAwP,CAAA,EAPKR,EAAM,EAAA,CASZ,EACF,EAEAhP,IAAgB,cAChBnC,MAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,QAAQ,IAAI2R,EAAa3R,EAAO,SAAW,EAAE,GACrE,SAAA2R,EACA5R,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,aACrB,SAAAC,EAAK,SAAU,IAAKiR,GACpBnR,EAAAA,IAAC,MAAA,CAAmB,UAAWC,EAAO,eACrC,SAAAD,EAAAA,IAACyR,GAAA,CACA,KAAMN,EACN,MAAON,EAAQ,EACf,YAAAC,EACA,SAAAzQ,EACA,YAAAqR,EACA,YAAAvP,EACA,UAAAwP,CAAA,CAAA,GARQR,EAAM,EAUhB,CACA,CAAA,CACF,EAEAjR,EAAK,SAAU,IAAKiR,GACnBnR,EAAAA,IAACyR,GAAA,CAEA,KAAMN,EACN,MAAON,EAAQ,EACf,YAAAC,EACA,SAAAzQ,EACA,YAAAqR,EACA,YAAAvP,EACA,UAAAwP,CAAA,EAPKR,EAAM,EAAA,CASZ,CAAA,CAEH,CAAA,CAAA,CAEF,CAAA,EAEF,CAEF,CAEO,SAASY,GAAY,CAAE,MAAA1S,EAAO,YAAA8C,EAAc,WAAY,mBAAAkP,EAAqB,GAAI,YAAAK,EAAa,UAAAlS,EAAY,GAAI,UAAAmS,EAAY,IAA2B,CAC3J,KAAM,CAACb,EAAaQ,CAAc,EAAI3R,EAAAA,SAAsB,IAAI,IAAI0R,CAAkB,CAAC,EAEjFE,EAAgB1R,GAAe,CACpCyR,EAAgBxR,GAAS,CACxB,MAAM0R,EAAO,IAAI,IAAI1R,CAAI,EACzB,OAAI0R,EAAK,IAAI3R,CAAE,EACd2R,EAAK,OAAO3R,CAAE,EAEd2R,EAAK,IAAI3R,CAAE,EAEL2R,CACR,CAAC,CACF,EAEA,OACCxR,MAAC,OAAI,UAAW,GAAGC,EAAO,GAAG,IAAIA,EAAOkC,CAAW,CAAC,IAAIwP,EAAY1R,EAAO,UAAY,EAAE,IAAIT,CAAS,GACpG,SAAAH,EAAM,IAAKa,GACXF,EAAAA,IAACyR,GAAA,CAEA,KAAAvR,EACA,MAAO,EACP,YAAA4Q,EACA,SAAUS,EACV,YAAAG,EACA,YAAAvP,EACA,UAAAwP,CAAA,EAPKzR,EAAK,EAAA,CASX,EACF,CAEF"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/Accordion/index.tsx","../src/components/Alert/index.tsx","../src/components/Avatar/index.tsx","../src/components/Badge/index.tsx","../src/components/Breadcrumbs/index.tsx","../src/components/Button/index.tsx","../src/components/ButtonGroup/index.tsx","../src/components/Card/index.tsx","../src/components/Checkbox/index.tsx","../src/components/Combobox/index.tsx","../src/components/Datagrid/index.tsx","../src/components/DatePicker/index.tsx","../src/components/DateRangePicker/index.tsx","../src/components/Divider/index.tsx","../src/components/Dropdown/index.tsx","../src/components/FilePicker/index.tsx","../src/components/Header/index.tsx","../src/components/Input/index.tsx","../src/components/Label/index.tsx","../src/components/List/index.tsx","../src/components/Modal/index.tsx","../src/components/Pagination/index.tsx","../src/components/ProgressBar/index.tsx","../src/components/RadioButton/index.tsx","../src/components/RangeInput/index.tsx","../src/components/RichSelect/index.tsx","../src/components/SidePanel/index.tsx","../src/components/Signpost/index.tsx","../src/components/Spinner/index.tsx","../src/components/StackView/index.tsx","../src/components/Stepper/index.tsx","../src/components/Table/index.tsx","../src/components/Tabs/index.tsx","../src/components/Textarea/index.tsx","../src/components/Timeline/index.tsx","../src/components/ToggleSwitch/index.tsx","../src/components/Tooltip/index.tsx","../src/components/Toast/index.tsx","../src/components/TreeView/index.tsx","../src/components/VerticalNav/index.tsx","../src/components/Select/index.tsx","../src/components/Grid/index.tsx","../src/components/Container/index.tsx","../src/components/Spacer/index.tsx","../src/components/Skeleton/index.tsx","../src/components/Video/index.tsx","../src/components/Audio/index.tsx","../src/components/TagInput/index.tsx","../src/components/PinInput/index.tsx","../src/components/Rating/index.tsx","../src/components/Window/index.tsx","../src/components/Gauge/index.tsx","../src/components/ColorPicker/index.tsx","../src/components/ContextMenu/index.tsx","../src/components/DataList/index.tsx","../src/components/StatCard/index.tsx","../src/components/Split/index.tsx","../src/components/ImageGallery/index.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface AccordionItemProps {\n\tid: string\n\ttitle: string\n\tcontent: React.ReactNode\n}\n\nexport interface AccordionProps {\n\titems: AccordionItemProps[]\n\tallowMultiple?: boolean\n\tdefaultOpenIds?: string[]\n\tclassName?: string\n}\n\nexport function Accordion({ items, allowMultiple = false, defaultOpenIds = [], className = '' }: AccordionProps) {\n\tconst [openIds, setOpenIds] = useState<Set<string>>(new Set(defaultOpenIds))\n\n\tconst toggleItem = (id: string) => {\n\t\tsetOpenIds((prev) => {\n\t\t\tconst newSet = new Set(prev)\n\t\t\tif (newSet.has(id)) {\n\t\t\t\tnewSet.delete(id)\n\t\t\t} else {\n\t\t\t\tif (!allowMultiple) {\n\t\t\t\t\tnewSet.clear()\n\t\t\t\t}\n\t\t\t\tnewSet.add(id)\n\t\t\t}\n\t\t\treturn newSet\n\t\t})\n\t}\n\n\treturn (\n\t\t<div className={`${styles.accordion} ${className}`}>\n\t\t\t{items.map((item) => (\n\t\t\t\t<AccordionItem key={item.id} item={item} isOpen={openIds.has(item.id)} onToggle={() => toggleItem(item.id)} />\n\t\t\t))}\n\t\t</div>\n\t)\n}\n\ninterface AccordionItemInternalProps {\n\titem: AccordionItemProps\n\tisOpen: boolean\n\tonToggle: () => void\n}\n\nfunction AccordionItem({ item, isOpen, onToggle }: AccordionItemInternalProps) {\n\treturn (\n\t\t<div className={`${styles.item} ${isOpen ? styles.open : ''}`}>\n\t\t\t<button className={styles.header} onClick={onToggle} aria-expanded={isOpen}>\n\t\t\t\t<span className={styles.title}>{item.title}</span>\n\t\t\t\t<span className={`${styles.icon} ${isOpen ? styles.iconOpen : ''}`}>▼</span>\n\t\t\t</button>\n\t\t\t<div className={`${styles.content} ${isOpen ? styles.contentOpen : ''}`}>\n\t\t\t\t<div className={styles.contentInner}>{item.content}</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'error'\n\nexport interface AlertProps {\n\tvariant?: AlertVariant\n\ttitle?: string\n\tmessage: string\n\tdismissible?: boolean\n\tonDismiss?: () => void\n\tclassName?: string\n}\n\nexport function Alert({ variant = 'info', title, message, dismissible = false, onDismiss, className = '' }: AlertProps) {\n\tconst icons = {\n\t\tinfo: 'ℹ',\n\t\tsuccess: '✓',\n\t\twarning: '⚠',\n\t\terror: '✕'\n\t}\n\n\treturn (\n\t\t<div className={`${styles.alert} ${styles[variant]} ${className}`} role=\"alert\">\n\t\t\t<div className={styles.icon}>{icons[variant]}</div>\n\t\t\t<div className={styles.content}>\n\t\t\t\t{title && <div className={styles.title}>{title}</div>}\n\t\t\t\t<div className={styles.message}>{message}</div>\n\t\t\t</div>\n\t\t\t{dismissible && (\n\t\t\t\t<button className={styles.dismissButton} onClick={onDismiss} aria-label=\"Dismiss alert\">\n\t\t\t\t\t✕\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface AvatarProps {\n\tsrc?: string\n\talt?: string\n\tinitials?: string\n\tsize?: AvatarSize\n\tstatus?: 'online' | 'offline' | 'busy' | 'away'\n\tclassName?: string\n}\n\nexport function Avatar({ src, alt = 'Avatar', initials, size = 'md', status, className = '' }: AvatarProps) {\n\tconst getInitials = () => {\n\t\tif (initials) return initials\n\t\tif (alt) {\n\t\t\tconst words = alt.split(' ')\n\t\t\tif (words.length >= 2) {\n\t\t\t\treturn `${words[0][0]}${words[1][0]}`.toUpperCase()\n\t\t\t}\n\t\t\treturn alt.slice(0, 2).toUpperCase()\n\t\t}\n\t\treturn '?'\n\t}\n\n\treturn (\n\t\t<div className={`${styles.avatar} ${styles[size]} ${className}`}>\n\t\t\t{src ? <img src={src} alt={alt} className={styles.image} /> : <div className={styles.initials}>{getInitials()}</div>}\n\t\t\t{status && <span className={`${styles.status} ${styles[status]}`} aria-label={`Status: ${status}`} />}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type BadgeVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info'\nexport type BadgeSize = 'sm' | 'md' | 'lg'\n\nexport interface BadgeProps {\n\tchildren: React.ReactNode\n\tvariant?: BadgeVariant\n\tsize?: BadgeSize\n\tdot?: boolean\n\tclassName?: string\n}\n\nexport function Badge({ children, variant = 'default', size = 'md', dot = false, className = '' }: BadgeProps) {\n\treturn (\n\t\t<span className={`${styles.badge} ${styles[variant]} ${styles[size]} ${className}`}>\n\t\t\t{dot && <span className={styles.dot} />}\n\t\t\t{children}\n\t\t</span>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface BreadcrumbItem {\n\tlabel: string\n\thref?: string\n\tonClick?: () => void\n}\n\nexport interface BreadcrumbsProps {\n\titems: BreadcrumbItem[]\n\tseparator?: string\n\tclassName?: string\n}\n\nexport function Breadcrumbs({ items, separator = '/', className = '' }: BreadcrumbsProps) {\n\treturn (\n\t\t<nav className={`${styles.breadcrumbs} ${className}`} aria-label=\"Breadcrumb\">\n\t\t\t<ol className={styles.list}>\n\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\tconst isLast = index === items.length - 1\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li key={index} className={styles.item}>\n\t\t\t\t\t\t\t{item.href && !isLast ? (\n\t\t\t\t\t\t\t\t<a href={item.href} className={styles.link}>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t) : item.onClick && !isLast ? (\n\t\t\t\t\t\t\t\t<button onClick={item.onClick} className={styles.button}>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<span className={`${styles.text} ${isLast ? styles.current : ''}`}>{item.label}</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!isLast && (\n\t\t\t\t\t\t\t\t<span className={styles.separator} aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t{separator}\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</li>\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t</ol>\n\t\t</nav>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'success' | 'danger' | 'outline' | 'ghost'\nexport type ButtonSize = 'sm' | 'md' | 'lg'\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n\tvariant?: ButtonVariant\n\tsize?: ButtonSize\n\tfullWidth?: boolean\n\tloading?: boolean\n\tchildren: React.ReactNode\n}\n\nexport function Button({ variant = 'primary', size = 'md', fullWidth = false, loading = false, disabled, className = '', children, ...props }: ButtonProps) {\n\treturn (\n\t\t<button\n\t\t\tclassName={`\n ${styles.button}\n ${styles[variant]}\n ${styles[size]}\n ${fullWidth ? styles.fullWidth : ''}\n ${loading ? styles.loading : ''}\n ${className}\n `}\n\t\t\tdisabled={disabled || loading}\n\t\t\t{...props}\n\t\t>\n\t\t\t{loading && <span className={styles.spinner} />}\n\t\t\t<span className={loading ? styles.hiddenContent : ''}>{children}</span>\n\t\t</button>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type ButtonGroupOrientation = 'horizontal' | 'vertical'\n\nexport interface ButtonGroupProps {\n\tchildren: React.ReactNode\n\torientation?: ButtonGroupOrientation\n\tfullWidth?: boolean\n\tclassName?: string\n}\n\nexport function ButtonGroup({ children, orientation = 'horizontal', fullWidth = false, className = '' }: ButtonGroupProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={`\n ${styles.buttonGroup}\n ${styles[orientation]}\n ${fullWidth ? styles.fullWidth : ''}\n ${className}\n `}\n\t\t\trole=\"group\"\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface CardProps {\n\tchildren: React.ReactNode\n\ttitle?: string\n\tsubtitle?: string\n\tfooter?: React.ReactNode\n\timage?: string\n\thoverable?: boolean\n\tclassName?: string\n\tonClick?: () => void\n}\n\nexport function Card({ children, title, subtitle, footer, image, hoverable = false, className = '', onClick }: CardProps) {\n\tconst isClickable = !!onClick\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`\n ${styles.card}\n ${hoverable ? styles.hoverable : ''}\n ${isClickable ? styles.clickable : ''}\n ${className}\n `}\n\t\t\tonClick={onClick}\n\t\t\trole={isClickable ? 'button' : undefined}\n\t\t\ttabIndex={isClickable ? 0 : undefined}\n\t\t>\n\t\t\t{image && (\n\t\t\t\t<div className={styles.imageWrapper}>\n\t\t\t\t\t<img src={image} alt={title || ''} className={styles.image} />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div className={styles.content}>\n\t\t\t\t{(title || subtitle) && (\n\t\t\t\t\t<div className={styles.header}>\n\t\t\t\t\t\t{title && <h3 className={styles.title}>{title}</h3>}\n\t\t\t\t\t\t{subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div className={styles.body}>{children}</div>\n\t\t\t\t{footer && <div className={styles.footer}>{footer}</div>}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n\tlabel?: string\n\tindeterminate?: boolean\n}\n\nexport function Checkbox({ label, indeterminate = false, className = '', ...props }: CheckboxProps) {\n\tconst checkboxRef = React.useRef<HTMLInputElement>(null)\n\n\tReact.useEffect(() => {\n\t\tif (checkboxRef.current) {\n\t\t\tcheckboxRef.current.indeterminate = indeterminate\n\t\t}\n\t}, [indeterminate])\n\n\treturn (\n\t\t<label className={`${styles.checkboxWrapper} ${className}`}>\n\t\t\t<input ref={checkboxRef} type=\"checkbox\" className={styles.checkbox} {...props} />\n\t\t\t<span className={styles.checkmark}>\n\t\t\t\t{indeterminate ? <span className={styles.indeterminateIcon}>−</span> : <span className={styles.checkIcon}>✓</span>}\n\t\t\t</span>\n\t\t\t{label && <span className={styles.label}>{label}</span>}\n\t\t</label>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface ComboboxOption {\n\tvalue: string\n\tlabel: string\n\tdisabled?: boolean\n}\n\nexport interface ComboboxProps {\n\toptions: ComboboxOption[]\n\tvalue?: string\n\tdefaultValue?: string\n\tonChange?: (value: string) => void\n\tplaceholder?: string\n\tdisabled?: boolean\n\tclassName?: string\n\tallowCustomValue?: boolean\n\tfilterFunction?: (option: ComboboxOption, searchTerm: string) => boolean\n}\n\nexport function Combobox({\n\toptions,\n\tvalue: controlledValue,\n\tdefaultValue = '',\n\tonChange,\n\tplaceholder = 'Select or type...',\n\tdisabled = false,\n\tclassName = '',\n\tallowCustomValue = false,\n\tfilterFunction\n}: ComboboxProps) {\n\tconst [inputValue, setInputValue] = useState(defaultValue)\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [highlightedIndex, setHighlightedIndex] = useState(-1)\n\tconst inputRef = useRef<HTMLInputElement>(null)\n\tconst listRef = useRef<HTMLUListElement>(null)\n\tconst wrapperRef = useRef<HTMLDivElement>(null)\n\n\tconst isControlled = controlledValue !== undefined\n\tconst currentValue = isControlled ? controlledValue : inputValue\n\n\tconst defaultFilter = (option: ComboboxOption, searchTerm: string) => {\n\t\treturn option.label.toLowerCase().includes(searchTerm.toLowerCase())\n\t}\n\n\tconst filterFunc = filterFunction || defaultFilter\n\n\tconst filteredOptions = options.filter((option) => filterFunc(option, currentValue))\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (e: MouseEvent) => {\n\t\t\tif (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t}\n\t\t}\n\n\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside)\n\t}, [])\n\n\tuseEffect(() => {\n\t\tif (isOpen && highlightedIndex >= 0 && listRef.current) {\n\t\t\tconst highlightedElement = listRef.current.children[highlightedIndex] as HTMLElement\n\t\t\tif (highlightedElement) {\n\t\t\t\thighlightedElement.scrollIntoView({ block: 'nearest' })\n\t\t\t}\n\t\t}\n\t}, [highlightedIndex, isOpen])\n\n\tconst handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst newValue = e.target.value\n\n\t\tif (!isControlled) {\n\t\t\tsetInputValue(newValue)\n\t\t}\n\n\t\tonChange?.(newValue)\n\t\tsetIsOpen(true)\n\t\tsetHighlightedIndex(-1)\n\t}\n\n\tconst handleOptionClick = (option: ComboboxOption) => {\n\t\tif (option.disabled) return\n\n\t\tconst newValue = option.value\n\n\t\tif (!isControlled) {\n\t\t\tsetInputValue(option.label)\n\t\t}\n\n\t\tonChange?.(newValue)\n\t\tsetIsOpen(false)\n\t\tsetHighlightedIndex(-1)\n\t\tinputRef.current?.blur()\n\t}\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\tif (disabled) return\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tsetIsOpen(true)\n\t\t\t\tsetHighlightedIndex((prev) => {\n\t\t\t\t\tconst maxIndex = filteredOptions.length - 1\n\t\t\t\t\tif (prev >= maxIndex) return maxIndex\n\t\t\t\t\tlet nextIndex = prev + 1\n\t\t\t\t\twhile (nextIndex <= maxIndex && filteredOptions[nextIndex].disabled) {\n\t\t\t\t\t\tnextIndex++\n\t\t\t\t\t}\n\t\t\t\t\treturn nextIndex <= maxIndex ? nextIndex : prev\n\t\t\t\t})\n\t\t\t\tbreak\n\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tsetHighlightedIndex((prev) => {\n\t\t\t\t\tif (prev <= 0) return -1\n\t\t\t\t\tlet prevIndex = prev - 1\n\t\t\t\t\twhile (prevIndex >= 0 && filteredOptions[prevIndex].disabled) {\n\t\t\t\t\t\tprevIndex--\n\t\t\t\t\t}\n\t\t\t\t\treturn prevIndex >= 0 ? prevIndex : -1\n\t\t\t\t})\n\t\t\t\tbreak\n\n\t\t\tcase 'Enter':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (isOpen && highlightedIndex >= 0) {\n\t\t\t\t\thandleOptionClick(filteredOptions[highlightedIndex])\n\t\t\t\t} else if (allowCustomValue) {\n\t\t\t\t\tonChange?.(currentValue)\n\t\t\t\t\tsetIsOpen(false)\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tcase 'Escape':\n\t\t\t\te.preventDefault()\n\t\t\t\tsetIsOpen(false)\n\t\t\t\tsetHighlightedIndex(-1)\n\t\t\t\tinputRef.current?.blur()\n\t\t\t\tbreak\n\n\t\t\tcase 'Tab':\n\t\t\t\tsetIsOpen(false)\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tconst handleInputFocus = () => {\n\t\tif (!disabled) {\n\t\t\tsetIsOpen(true)\n\t\t}\n\t}\n\n\tconst selectedOption = options.find((opt) => opt.value === currentValue)\n\tconst displayValue = selectedOption ? selectedOption.label : currentValue\n\n\treturn (\n\t\t<div ref={wrapperRef} className={`${styles.combobox} ${className}`}>\n\t\t\t<div className={styles.inputWrapper}>\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tclassName={`${styles.input} ${disabled ? styles.disabled : ''}`}\n\t\t\t\t\tvalue={displayValue}\n\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tonFocus={handleInputFocus}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-expanded={isOpen}\n\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\taria-controls=\"combobox-listbox\"\n\t\t\t\t/>\n\t\t\t\t<span className={`${styles.arrow} ${isOpen ? styles.open : ''}`}>▼</span>\n\t\t\t</div>\n\n\t\t\t{isOpen && filteredOptions.length > 0 && (\n\t\t\t\t<ul ref={listRef} id=\"combobox-listbox\" className={styles.menu} role=\"listbox\">\n\t\t\t\t\t{filteredOptions.map((option, index) => (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\tclassName={`${styles.option} ${highlightedIndex === index ? styles.highlighted : ''} ${\n\t\t\t\t\t\t\t\toption.disabled ? styles.optionDisabled : ''\n\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\tonClick={() => handleOptionClick(option)}\n\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\taria-selected={option.value === currentValue}\n\t\t\t\t\t\t\taria-disabled={option.disabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t)}\n\n\t\t\t{isOpen && filteredOptions.length === 0 && (\n\t\t\t\t<div className={styles.noResults}>{allowCustomValue ? 'Press Enter to use custom value' : 'No results found'}</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface DatagridColumn<T = any> {\n\tkey: string\n\theader: string\n\twidth?: string\n\trender?: (value: any, row: T) => React.ReactNode\n}\n\nexport interface DatagridProps<T = any> {\n\tcolumns: DatagridColumn<T>[]\n\tdata: T[]\n\tonRowClick?: (row: T) => void\n\tstriped?: boolean\n\thoverable?: boolean\n\tclassName?: string\n}\n\nexport function Datagrid<T extends Record<string, any>>({ columns, data, onRowClick, striped = false, hoverable = true, className = '' }: DatagridProps<T>) {\n\treturn (\n\t\t<div className={`${styles.datagridWrapper} ${className}`}>\n\t\t\t<table className={styles.datagrid}>\n\t\t\t\t<thead className={styles.thead}>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t{columns.map((column) => (\n\t\t\t\t\t\t\t<th key={column.key} className={styles.th} style={{ width: column.width }}>\n\t\t\t\t\t\t\t\t{column.header}\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody className={styles.tbody}>\n\t\t\t\t\t{data.map((row, rowIndex) => (\n\t\t\t\t\t\t<tr\n\t\t\t\t\t\t\tkey={rowIndex}\n\t\t\t\t\t\t\tclassName={`\n ${styles.tr}\n ${striped && rowIndex % 2 === 1 ? styles.striped : ''}\n ${hoverable ? styles.hoverable : ''}\n ${onRowClick ? styles.clickable : ''}\n `}\n\t\t\t\t\t\t\tonClick={() => onRowClick?.(row)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{columns.map((column) => (\n\t\t\t\t\t\t\t\t<td key={column.key} className={styles.td}>\n\t\t\t\t\t\t\t\t\t{column.render ? column.render(row[column.key], row) : row[column.key]}\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t))}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t)\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface DatePickerProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'value' | 'onChange'> {\n\tvalue?: Date\n\tonChange?: (date: Date | null) => void\n\tminDate?: Date\n\tmaxDate?: Date\n}\n\nexport function DatePicker({ value, onChange, minDate, maxDate, className = '', ...props }: DatePickerProps) {\n\tconst [inputValue, setInputValue] = useState<string>(value ? formatDate(value) : '')\n\n\tconst handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst dateValue = e.target.value\n\t\tsetInputValue(dateValue)\n\n\t\tif (dateValue) {\n\t\t\tconst date = new Date(dateValue)\n\t\t\tif (!isNaN(date.getTime())) {\n\t\t\t\tonChange?.(date)\n\t\t\t}\n\t\t} else {\n\t\t\tonChange?.(null)\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className={`${styles.datePicker} ${className}`}>\n\t\t\t<input\n\t\t\t\ttype=\"date\"\n\t\t\t\tclassName={styles.input}\n\t\t\t\tvalue={inputValue}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tmin={minDate ? formatDate(minDate) : undefined}\n\t\t\t\tmax={maxDate ? formatDate(maxDate) : undefined}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t\t<span className={styles.icon}>📅</span>\n\t\t</div>\n\t)\n}\n\nfunction formatDate(date: Date): string {\n\tconst year = date.getFullYear()\n\tconst month = String(date.getMonth() + 1).padStart(2, '0')\n\tconst day = String(date.getDate()).padStart(2, '0')\n\treturn `${year}-${month}-${day}`\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface DateRange {\n\tstart: Date | null\n\tend: Date | null\n}\n\nexport interface DateRangePickerProps {\n\tvalue?: DateRange\n\tonChange?: (range: DateRange) => void\n\tminDate?: Date\n\tmaxDate?: Date\n\tclassName?: string\n}\n\nexport function DateRangePicker({ value, onChange, minDate, maxDate, className = '' }: DateRangePickerProps) {\n\tconst [startValue, setStartValue] = useState<string>(value?.start ? formatDate(value.start) : '')\n\tconst [endValue, setEndValue] = useState<string>(value?.end ? formatDate(value.end) : '')\n\n\tconst handleStartChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst dateValue = e.target.value\n\t\tsetStartValue(dateValue)\n\n\t\tconst startDate = dateValue ? new Date(dateValue) : null\n\t\tconst endDate = endValue ? new Date(endValue) : null\n\n\t\tif (startDate && !isNaN(startDate.getTime())) {\n\t\t\tonChange?.({ start: startDate, end: endDate })\n\t\t} else {\n\t\t\tonChange?.({ start: null, end: endDate })\n\t\t}\n\t}\n\n\tconst handleEndChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst dateValue = e.target.value\n\t\tsetEndValue(dateValue)\n\n\t\tconst startDate = startValue ? new Date(startValue) : null\n\t\tconst endDate = dateValue ? new Date(dateValue) : null\n\n\t\tif (endDate && !isNaN(endDate.getTime())) {\n\t\t\tonChange?.({ start: startDate, end: endDate })\n\t\t} else {\n\t\t\tonChange?.({ start: startDate, end: null })\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className={`${styles.dateRangePicker} ${className}`}>\n\t\t\t<div className={styles.inputWrapper}>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\tclassName={styles.input}\n\t\t\t\t\tvalue={startValue}\n\t\t\t\t\tonChange={handleStartChange}\n\t\t\t\t\tmin={minDate ? formatDate(minDate) : undefined}\n\t\t\t\t\tmax={endValue || (maxDate ? formatDate(maxDate) : undefined)}\n\t\t\t\t\tplaceholder=\"Start date\"\n\t\t\t\t/>\n\t\t\t\t<span className={styles.icon}>📅</span>\n\t\t\t</div>\n\t\t\t<span className={styles.separator}>→</span>\n\t\t\t<div className={styles.inputWrapper}>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\tclassName={styles.input}\n\t\t\t\t\tvalue={endValue}\n\t\t\t\t\tonChange={handleEndChange}\n\t\t\t\t\tmin={startValue || (minDate ? formatDate(minDate) : undefined)}\n\t\t\t\t\tmax={maxDate ? formatDate(maxDate) : undefined}\n\t\t\t\t\tplaceholder=\"End date\"\n\t\t\t\t/>\n\t\t\t\t<span className={styles.icon}>📅</span>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nfunction formatDate(date: Date): string {\n\tconst year = date.getFullYear()\n\tconst month = String(date.getMonth() + 1).padStart(2, '0')\n\tconst day = String(date.getDate()).padStart(2, '0')\n\treturn `${year}-${month}-${day}`\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type DividerOrientation = 'horizontal' | 'vertical'\nexport type DividerVariant = 'solid' | 'dashed' | 'dotted'\n\nexport interface DividerProps {\n\torientation?: DividerOrientation\n\tvariant?: DividerVariant\n\tlabel?: string\n\tclassName?: string\n}\n\nexport function Divider({ orientation = 'horizontal', variant = 'solid', label, className = '' }: DividerProps) {\n\tconst dividerClass = `${styles.divider} ${styles[orientation]} ${styles[variant]} ${className}`\n\n\tif (label && orientation === 'horizontal') {\n\t\treturn (\n\t\t\t<div className={dividerClass}>\n\t\t\t\t<span className={styles.line}></span>\n\t\t\t\t<span className={styles.label}>{label}</span>\n\t\t\t\t<span className={styles.line}></span>\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn <div className={dividerClass}></div>\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface DropdownOption {\n\tlabel: string\n\tvalue: string\n\tdisabled?: boolean\n}\n\nexport interface DropdownProps {\n\toptions: DropdownOption[]\n\tvalue?: string\n\tonChange?: (value: string) => void\n\tplaceholder?: string\n\tdisabled?: boolean\n\tclassName?: string\n}\n\nexport function Dropdown({ options, value, onChange, placeholder = 'Select an option', disabled = false, className = '' }: DropdownProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [selectedValue, setSelectedValue] = useState(value || '')\n\tconst dropdownRef = useRef<HTMLDivElement>(null)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t}\n\t\t}\n\n\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside)\n\t}, [])\n\n\tconst handleSelect = (optionValue: string) => {\n\t\tif (disabled) return\n\t\tsetSelectedValue(optionValue)\n\t\tsetIsOpen(false)\n\t\tonChange?.(optionValue)\n\t}\n\n\tconst selectedOption = options.find((opt) => opt.value === selectedValue)\n\tconst displayText = selectedOption?.label || placeholder\n\n\treturn (\n\t\t<div className={`${styles.dropdown} ${className}`} ref={dropdownRef}>\n\t\t\t<button\n\t\t\t\tclassName={`${styles.trigger} ${disabled ? styles.disabled : ''}`}\n\t\t\t\tonClick={() => !disabled && setIsOpen(!isOpen)}\n\t\t\t\tdisabled={disabled}\n\t\t\t\ttype=\"button\"\n\t\t\t>\n\t\t\t\t<span className={selectedOption ? styles.selected : styles.placeholder}>{displayText}</span>\n\t\t\t\t<span className={`${styles.arrow} ${isOpen ? styles.open : ''}`}>▼</span>\n\t\t\t</button>\n\t\t\t{isOpen && (\n\t\t\t\t<div className={styles.menu}>\n\t\t\t\t\t{options.map((option) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\tclassName={`${styles.option} ${option.value === selectedValue ? styles.active : ''} ${\n\t\t\t\t\t\t\t\toption.disabled ? styles.optionDisabled : ''\n\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\tonClick={() => !option.disabled && handleSelect(option.value)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React, { useRef, useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport type FileStatus = 'idle' | 'processing' | 'uploaded' | 'failed'\n\nexport interface FileItem {\n\tfile: File\n\tstatus: FileStatus\n\tprogress?: number\n\terror?: string\n}\n\nexport interface FilePickerProps {\n\taccept?: string\n\tmultiple?: boolean\n\tmaxSize?: number\n\tdisabled?: boolean\n\tonChange?: (files: FileItem[]) => void\n\tonUpload?: (file: File) => Promise<void>\n\tclassName?: string\n}\n\nexport function FilePicker({ accept, multiple = false, maxSize, disabled = false, onChange, onUpload, className = '' }: FilePickerProps) {\n\tconst [files, setFiles] = useState<FileItem[]>([])\n\tconst inputRef = useRef<HTMLInputElement>(null)\n\n\tconst handleFileSelect = async (selectedFiles: FileList | null) => {\n\t\tif (!selectedFiles || disabled) return\n\n\t\tconst newFiles: FileItem[] = Array.from(selectedFiles).map((file) => {\n\t\t\tif (maxSize && file.size > maxSize) {\n\t\t\t\treturn { file, status: 'failed' as FileStatus, error: 'File too large' }\n\t\t\t}\n\t\t\treturn { file, status: 'idle' as FileStatus }\n\t\t})\n\n\t\tsetFiles((prev) => [...prev, ...newFiles])\n\t\tonChange?.(newFiles)\n\n\t\tif (onUpload) {\n\t\t\tfor (const fileItem of newFiles) {\n\t\t\t\tif (fileItem.status !== 'failed') {\n\t\t\t\t\tawait processFile(fileItem)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst processFile = async (fileItem: FileItem) => {\n\t\tupdateFileStatus(fileItem.file.name, 'processing')\n\n\t\ttry {\n\t\t\tawait onUpload?.(fileItem.file)\n\t\t\tupdateFileStatus(fileItem.file.name, 'uploaded')\n\t\t} catch (error) {\n\t\t\tupdateFileStatus(fileItem.file.name, 'failed', (error as Error).message)\n\t\t}\n\t}\n\n\tconst updateFileStatus = (fileName: string, status: FileStatus, error?: string) => {\n\t\tsetFiles((prev) => prev.map((f) => (f.file.name === fileName ? { ...f, status, error } : f)))\n\t}\n\n\tconst removeFile = (fileName: string) => {\n\t\tsetFiles((prev) => prev.filter((f) => f.file.name !== fileName))\n\t}\n\n\tconst getStatusIcon = (status: FileStatus) => {\n\t\tswitch (status) {\n\t\t\tcase 'processing':\n\t\t\t\treturn '⏳'\n\t\t\tcase 'uploaded':\n\t\t\t\treturn '✓'\n\t\t\tcase 'failed':\n\t\t\t\treturn '✗'\n\t\t\tdefault:\n\t\t\t\treturn '📄'\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className={`${styles.filePicker} ${className}`}>\n\t\t\t<div className={`${styles.dropzone} ${disabled ? styles.disabled : ''}`} onClick={() => !disabled && inputRef.current?.click()}>\n\t\t\t\t<span className={styles.icon}>📁</span>\n\t\t\t\t<span className={styles.text}>Click to select files</span>\n\t\t\t</div>\n\t\t\t<input\n\t\t\t\tref={inputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept={accept}\n\t\t\t\tmultiple={multiple}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={(e) => handleFileSelect(e.target.files)}\n\t\t\t\tclassName={styles.input}\n\t\t\t/>\n\t\t\t{files.length > 0 && (\n\t\t\t\t<div className={styles.fileList}>\n\t\t\t\t\t{files.map((fileItem, index) => (\n\t\t\t\t\t\t<div key={`${fileItem.file.name}-${index}`} className={`${styles.fileItem} ${styles[fileItem.status]}`}>\n\t\t\t\t\t\t\t<span className={styles.fileIcon}>{getStatusIcon(fileItem.status)}</span>\n\t\t\t\t\t\t\t<span className={styles.fileName}>{fileItem.file.name}</span>\n\t\t\t\t\t\t\t<span className={styles.fileSize}>{(fileItem.file.size / 1024).toFixed(1)} KB</span>\n\t\t\t\t\t\t\t{fileItem.error && <span className={styles.error}>{fileItem.error}</span>}\n\t\t\t\t\t\t\t<button className={styles.remove} onClick={() => removeFile(fileItem.file.name)}>\n\t\t\t\t\t\t\t\t×\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface HeaderProps {\n\tlogo?: React.ReactNode\n\ttitle?: string\n\tchildren?: React.ReactNode\n\tactions?: React.ReactNode\n\tsticky?: boolean\n\tclassName?: string\n}\n\nexport function Header({ logo, title, children, actions, sticky = false, className = '' }: HeaderProps) {\n\treturn (\n\t\t<header className={`${styles.header} ${sticky ? styles.sticky : ''} ${className}`}>\n\t\t\t<div className={styles.content}>\n\t\t\t\t{(logo || title) && (\n\t\t\t\t\t<div className={styles.brand}>\n\t\t\t\t\t\t{logo && <div className={styles.logo}>{logo}</div>}\n\t\t\t\t\t\t{title && <h1 className={styles.title}>{title}</h1>}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{children && <div className={styles.nav}>{children}</div>}\n\t\t\t\t{actions && <div className={styles.actions}>{actions}</div>}\n\t\t\t</div>\n\t\t</header>\n\t)\n}\n","import React, { forwardRef } from 'react'\nimport styles from './styles.module.scss'\n\nexport type InputSize = 'sm' | 'md' | 'lg'\nexport type InputVariant = 'default' | 'error' | 'success'\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n\tlabel?: string\n\terror?: string\n\thelperText?: string\n\tsize?: InputSize\n\tvariant?: InputVariant\n\ticon?: React.ReactNode\n\tfullWidth?: boolean\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n\t({ label, error, helperText, size = 'md', variant = 'default', icon, fullWidth = false, className = '', disabled = false, ...props }, ref) => {\n\t\tconst finalVariant = error ? 'error' : variant\n\t\tconst containerClass = `${styles.inputContainer} ${fullWidth ? styles.fullWidth : ''} ${className}`\n\t\tconst inputClass = `${styles.input} ${styles[size]} ${styles[finalVariant]} ${icon ? styles.withIcon : ''} ${disabled ? styles.disabled : ''}`\n\n\t\treturn (\n\t\t\t<div className={containerClass}>\n\t\t\t\t{label && <label className={styles.label}>{label}</label>}\n\t\t\t\t<div className={styles.wrapper}>\n\t\t\t\t\t{icon && <span className={styles.icon}>{icon}</span>}\n\t\t\t\t\t<input ref={ref} className={inputClass} disabled={disabled} {...props} />\n\t\t\t\t</div>\n\t\t\t\t{(error || helperText) && <span className={`${styles.helperText} ${error ? styles.errorText : ''}`}>{error || helperText}</span>}\n\t\t\t</div>\n\t\t)\n\t}\n)\n\nInput.displayName = 'Input'\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type LabelSize = 'sm' | 'md' | 'lg'\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n\tsize?: LabelSize\n\trequired?: boolean\n\tdisabled?: boolean\n\tchildren: React.ReactNode\n}\n\nexport function Label({ size = 'md', required = false, disabled = false, className = '', children, ...props }: LabelProps) {\n\treturn (\n\t\t<label className={`${styles.label} ${styles[size]} ${disabled ? styles.disabled : ''} ${className}`} {...props}>\n\t\t\t{children}\n\t\t\t{required && <span className={styles.required}>*</span>}\n\t\t</label>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface ListItem {\n\tid: string\n\tcontent: React.ReactNode\n\ticon?: React.ReactNode\n\tbadge?: React.ReactNode\n\tdisabled?: boolean\n\tonClick?: () => void\n}\n\nexport interface ListProps {\n\titems: ListItem[]\n\thoverable?: boolean\n\tdividers?: boolean\n\tclassName?: string\n}\n\nexport function List({ items, hoverable = false, dividers = false, className = '' }: ListProps) {\n\treturn (\n\t\t<ul className={`${styles.list} ${dividers ? styles.dividers : ''} ${className}`}>\n\t\t\t{items.map((item) => (\n\t\t\t\t<li\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\tclassName={`${styles.item} ${hoverable && !item.disabled ? styles.hoverable : ''} ${\n\t\t\t\t\t\titem.disabled ? styles.disabled : ''\n\t\t\t\t\t} ${item.onClick && !item.disabled ? styles.clickable : ''}`}\n\t\t\t\t\tonClick={item.disabled ? undefined : item.onClick}\n\t\t\t\t>\n\t\t\t\t\t{item.icon && <span className={styles.icon}>{item.icon}</span>}\n\t\t\t\t\t<span className={styles.content}>{item.content}</span>\n\t\t\t\t\t{item.badge && <span className={styles.badge}>{item.badge}</span>}\n\t\t\t\t</li>\n\t\t\t))}\n\t\t</ul>\n\t)\n}\n","import React, { useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface ModalProps {\n\tisOpen: boolean\n\tonClose: () => void\n\ttitle?: string\n\tchildren: React.ReactNode\n\tfooter?: React.ReactNode\n\tsize?: ModalSize\n\tcloseOnOverlayClick?: boolean\n\tshowCloseButton?: boolean\n\tclassName?: string\n}\n\nexport function Modal({\n\tisOpen,\n\tonClose,\n\ttitle,\n\tchildren,\n\tfooter,\n\tsize = 'md',\n\tcloseOnOverlayClick = true,\n\tshowCloseButton = true,\n\tclassName = ''\n}: ModalProps) {\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tdocument.body.style.overflow = 'hidden'\n\t\t} else {\n\t\t\tdocument.body.style.overflow = ''\n\t\t}\n\t\treturn () => {\n\t\t\tdocument.body.style.overflow = ''\n\t\t}\n\t}, [isOpen])\n\n\tuseEffect(() => {\n\t\tconst handleEscape = (e: KeyboardEvent) => {\n\t\t\tif (e.key === 'Escape' && isOpen) {\n\t\t\t\tonClose()\n\t\t\t}\n\t\t}\n\t\tdocument.addEventListener('keydown', handleEscape)\n\t\treturn () => document.removeEventListener('keydown', handleEscape)\n\t}, [isOpen, onClose])\n\n\tif (!isOpen) return null\n\n\treturn (\n\t\t<div className={styles.overlay} onClick={closeOnOverlayClick ? onClose : undefined}>\n\t\t\t<div className={`${styles.modal} ${styles[size]} ${className}`} onClick={(e) => e.stopPropagation()}>\n\t\t\t\t{(title || showCloseButton) && (\n\t\t\t\t\t<div className={styles.header}>\n\t\t\t\t\t\t{title && <h2 className={styles.title}>{title}</h2>}\n\t\t\t\t\t\t{showCloseButton && (\n\t\t\t\t\t\t\t<button className={styles.closeButton} onClick={onClose} type=\"button\">\n\t\t\t\t\t\t\t\t×\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div className={styles.content}>{children}</div>\n\t\t\t\t{footer && <div className={styles.footer}>{footer}</div>}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface PaginationProps {\n\tcurrentPage: number\n\ttotalPages: number\n\tonPageChange: (page: number) => void\n\tshowFirstLast?: boolean\n\tsiblingCount?: number\n\tclassName?: string\n}\n\nexport function Pagination({ currentPage, totalPages, onPageChange, showFirstLast = true, siblingCount = 1, className = '' }: PaginationProps) {\n\tconst range = (start: number, end: number) => {\n\t\treturn Array.from({ length: end - start + 1 }, (_, i) => start + i)\n\t}\n\n\tconst getPaginationRange = () => {\n\t\tconst totalPageNumbers = siblingCount + 5\n\n\t\tif (totalPages <= totalPageNumbers) {\n\t\t\treturn range(1, totalPages)\n\t\t}\n\n\t\tconst leftSiblingIndex = Math.max(currentPage - siblingCount, 1)\n\t\tconst rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages)\n\t\tconst showLeftDots = leftSiblingIndex > 2\n\t\tconst showRightDots = rightSiblingIndex < totalPages - 1\n\n\t\tif (!showLeftDots && showRightDots) {\n\t\t\tconst leftRange = range(1, 3 + 2 * siblingCount)\n\t\t\treturn [...leftRange, '...', totalPages]\n\t\t}\n\n\t\tif (showLeftDots && !showRightDots) {\n\t\t\tconst rightRange = range(totalPages - (2 + 2 * siblingCount), totalPages)\n\t\t\treturn [1, '...', ...rightRange]\n\t\t}\n\n\t\tconst middleRange = range(leftSiblingIndex, rightSiblingIndex)\n\t\treturn [1, '...', ...middleRange, '...', totalPages]\n\t}\n\n\tconst paginationRange = getPaginationRange()\n\n\tconst handlePrevious = () => {\n\t\tif (currentPage > 1) onPageChange(currentPage - 1)\n\t}\n\n\tconst handleNext = () => {\n\t\tif (currentPage < totalPages) onPageChange(currentPage + 1)\n\t}\n\n\treturn (\n\t\t<nav className={`${styles.pagination} ${className}`}>\n\t\t\t{showFirstLast && (\n\t\t\t\t<button className={styles.pageButton} onClick={() => onPageChange(1)} disabled={currentPage === 1}>\n\t\t\t\t\t«\n\t\t\t\t</button>\n\t\t\t)}\n\t\t\t<button className={styles.pageButton} onClick={handlePrevious} disabled={currentPage === 1}>\n\t\t\t\t‹\n\t\t\t</button>\n\t\t\t{paginationRange.map((pageNumber, index) => {\n\t\t\t\tif (pageNumber === '...') {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<span key={`dots-${index}`} className={styles.dots}>\n\t\t\t\t\t\t\t...\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\tkey={pageNumber}\n\t\t\t\t\t\tclassName={`${styles.pageButton} ${pageNumber === currentPage ? styles.active : ''}`}\n\t\t\t\t\t\tonClick={() => onPageChange(pageNumber as number)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{pageNumber}\n\t\t\t\t\t</button>\n\t\t\t\t)\n\t\t\t})}\n\t\t\t<button className={styles.pageButton} onClick={handleNext} disabled={currentPage === totalPages}>\n\t\t\t\t›\n\t\t\t</button>\n\t\t\t{showFirstLast && (\n\t\t\t\t<button className={styles.pageButton} onClick={() => onPageChange(totalPages)} disabled={currentPage === totalPages}>\n\t\t\t\t\t»\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</nav>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type ProgressBarVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type ProgressBarSize = 'sm' | 'md' | 'lg'\n\nexport interface ProgressBarProps {\n\tvalue: number\n\tmax?: number\n\tvariant?: ProgressBarVariant\n\tsize?: ProgressBarSize\n\tshowLabel?: boolean\n\tlabel?: string\n\tanimated?: boolean\n\tstriped?: boolean\n\tclassName?: string\n}\n\nexport function ProgressBar({\n\tvalue,\n\tmax = 100,\n\tvariant = 'default',\n\tsize = 'md',\n\tshowLabel = false,\n\tlabel,\n\tanimated = false,\n\tstriped = false,\n\tclassName = ''\n}: ProgressBarProps) {\n\tconst percentage = Math.min(Math.max((value / max) * 100, 0), 100)\n\tconst displayLabel = label || `${Math.round(percentage)}%`\n\n\treturn (\n\t\t<div className={`${styles.container} ${className}`}>\n\t\t\t<div className={`${styles.progressBar} ${styles[size]}`}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${styles.fill} ${styles[variant]} ${striped ? styles.striped : ''} ${animated ? styles.animated : ''}`}\n\t\t\t\t\tstyle={{ width: `${percentage}%` }}\n\t\t\t\t>\n\t\t\t\t\t{showLabel && <span className={styles.label}>{displayLabel}</span>}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface RadioButtonProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n\tlabel?: string\n\tvalue: string\n\tname: string\n\tchecked?: boolean\n\tdisabled?: boolean\n\tonChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nexport function RadioButton({ label, value, name, checked = false, disabled = false, onChange, className = '', ...props }: RadioButtonProps) {\n\treturn (\n\t\t<label className={`${styles.radioButton} ${disabled ? styles.disabled : ''} ${className}`}>\n\t\t\t<input type=\"radio\" name={name} value={value} checked={checked} disabled={disabled} onChange={onChange} className={styles.input} {...props} />\n\t\t\t<span className={styles.radio}></span>\n\t\t\t{label && <span className={styles.label}>{label}</span>}\n\t\t</label>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface RangeInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n\tlabel?: string\n\tmin?: number\n\tmax?: number\n\tstep?: number\n\tvalue?: number\n\tshowValue?: boolean\n\tshowMinMax?: boolean\n\tonChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nexport function RangeInput({\n\tlabel,\n\tmin = 0,\n\tmax = 100,\n\tstep = 1,\n\tvalue = 50,\n\tshowValue = false,\n\tshowMinMax = false,\n\tonChange,\n\tclassName = '',\n\tdisabled = false,\n\t...props\n}: RangeInputProps) {\n\tconst percentage = ((value - min) / (max - min)) * 100\n\n\treturn (\n\t\t<div className={`${styles.container} ${className}`}>\n\t\t\t{label && <label className={styles.label}>{label}</label>}\n\t\t\t<div className={styles.rangeWrapper}>\n\t\t\t\t{showMinMax && <span className={styles.minMax}>{min}</span>}\n\t\t\t\t<div className={styles.inputWrapper}>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"range\"\n\t\t\t\t\t\tmin={min}\n\t\t\t\t\t\tmax={max}\n\t\t\t\t\t\tstep={step}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={`${styles.input} ${disabled ? styles.disabled : ''}`}\n\t\t\t\t\t\tstyle={{ '--percentage': `${percentage}%` } as React.CSSProperties}\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{showMinMax && <span className={styles.minMax}>{max}</span>}\n\t\t\t</div>\n\t\t\t{showValue && <span className={styles.value}>{value}</span>}\n\t\t</div>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface RichSelectOption {\n\tlabel: string\n\tvalue: string\n\tdescription?: string\n\ticon?: React.ReactNode\n\tdisabled?: boolean\n}\n\nexport interface RichSelectProps {\n\toptions: RichSelectOption[]\n\tvalue?: string\n\tonChange?: (value: string) => void\n\tplaceholder?: string\n\tdisabled?: boolean\n\tsearchable?: boolean\n\tclassName?: string\n}\n\nexport function RichSelect({\n\toptions,\n\tvalue,\n\tonChange,\n\tplaceholder = 'Select an option',\n\tdisabled = false,\n\tsearchable = false,\n\tclassName = ''\n}: RichSelectProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [searchQuery, setSearchQuery] = useState('')\n\tconst selectRef = useRef<HTMLDivElement>(null)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (selectRef.current && !selectRef.current.contains(event.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t\tsetSearchQuery('')\n\t\t\t}\n\t\t}\n\n\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside)\n\t}, [])\n\n\tconst handleSelect = (optionValue: string) => {\n\t\tif (disabled) return\n\t\tonChange?.(optionValue)\n\t\tsetIsOpen(false)\n\t\tsetSearchQuery('')\n\t}\n\n\tconst selectedOption = options.find((opt) => opt.value === value)\n\tconst filteredOptions = searchable ? options.filter((opt) => opt.label.toLowerCase().includes(searchQuery.toLowerCase())) : options\n\n\treturn (\n\t\t<div className={`${styles.richSelect} ${className}`} ref={selectRef}>\n\t\t\t<button\n\t\t\t\tclassName={`${styles.trigger} ${disabled ? styles.disabled : ''}`}\n\t\t\t\tonClick={() => !disabled && setIsOpen(!isOpen)}\n\t\t\t\tdisabled={disabled}\n\t\t\t\ttype=\"button\"\n\t\t\t>\n\t\t\t\t{selectedOption ? (\n\t\t\t\t\t<div className={styles.selectedContent}>\n\t\t\t\t\t\t{selectedOption.icon && <span className={styles.icon}>{selectedOption.icon}</span>}\n\t\t\t\t\t\t<div className={styles.textContent}>\n\t\t\t\t\t\t\t<span className={styles.label}>{selectedOption.label}</span>\n\t\t\t\t\t\t\t{selectedOption.description && <span className={styles.description}>{selectedOption.description}</span>}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<span className={styles.placeholder}>{placeholder}</span>\n\t\t\t\t)}\n\t\t\t\t<span className={`${styles.arrow} ${isOpen ? styles.open : ''}`}>▼</span>\n\t\t\t</button>\n\t\t\t{isOpen && (\n\t\t\t\t<div className={styles.menu}>\n\t\t\t\t\t{searchable && (\n\t\t\t\t\t\t<div className={styles.searchWrapper}>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tclassName={styles.searchInput}\n\t\t\t\t\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t\t\t\t\tvalue={searchQuery}\n\t\t\t\t\t\t\t\tonChange={(e) => setSearchQuery(e.target.value)}\n\t\t\t\t\t\t\t\tautoFocus\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\t<div className={styles.optionsList}>\n\t\t\t\t\t\t{filteredOptions.map((option) => (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\tclassName={`${styles.option} ${option.value === value ? styles.active : ''} ${option.disabled ? styles.optionDisabled : ''}`}\n\t\t\t\t\t\t\t\tonClick={() => !option.disabled && handleSelect(option.value)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{option.icon && <span className={styles.icon}>{option.icon}</span>}\n\t\t\t\t\t\t\t\t<div className={styles.textContent}>\n\t\t\t\t\t\t\t\t\t<span className={styles.label}>{option.label}</span>\n\t\t\t\t\t\t\t\t\t{option.description && <span className={styles.description}>{option.description}</span>}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{filteredOptions.length === 0 && <div className={styles.noResults}>No results found</div>}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React, { useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type SidePanelPosition = 'left' | 'right'\nexport type SidePanelSize = 'sm' | 'md' | 'lg'\n\nexport interface SidePanelProps {\n\tisOpen: boolean\n\tonClose: () => void\n\ttitle?: string\n\tchildren: React.ReactNode\n\tfooter?: React.ReactNode\n\tposition?: SidePanelPosition\n\tsize?: SidePanelSize\n\tcloseOnOverlayClick?: boolean\n\tshowCloseButton?: boolean\n\tclassName?: string\n}\n\nexport function SidePanel({\n\tisOpen,\n\tonClose,\n\ttitle,\n\tchildren,\n\tfooter,\n\tposition = 'right',\n\tsize = 'md',\n\tcloseOnOverlayClick = true,\n\tshowCloseButton = true,\n\tclassName = ''\n}: SidePanelProps) {\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tdocument.body.style.overflow = 'hidden'\n\t\t} else {\n\t\t\tdocument.body.style.overflow = ''\n\t\t}\n\t\treturn () => {\n\t\t\tdocument.body.style.overflow = ''\n\t\t}\n\t}, [isOpen])\n\n\tuseEffect(() => {\n\t\tconst handleEscape = (e: KeyboardEvent) => {\n\t\t\tif (e.key === 'Escape' && isOpen) {\n\t\t\t\tonClose()\n\t\t\t}\n\t\t}\n\t\tdocument.addEventListener('keydown', handleEscape)\n\t\treturn () => document.removeEventListener('keydown', handleEscape)\n\t}, [isOpen, onClose])\n\n\tif (!isOpen) return null\n\n\treturn (\n\t\t<div className={styles.overlay} onClick={closeOnOverlayClick ? onClose : undefined}>\n\t\t\t<div className={`${styles.sidePanel} ${styles[position]} ${styles[size]} ${className}`} onClick={(e) => e.stopPropagation()}>\n\t\t\t\t{(title || showCloseButton) && (\n\t\t\t\t\t<div className={styles.header}>\n\t\t\t\t\t\t{title && <h2 className={styles.title}>{title}</h2>}\n\t\t\t\t\t\t{showCloseButton && (\n\t\t\t\t\t\t\t<button className={styles.closeButton} onClick={onClose} type=\"button\">\n\t\t\t\t\t\t\t\t×\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div className={styles.content}>{children}</div>\n\t\t\t\t{footer && <div className={styles.footer}>{footer}</div>}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type SignpostPosition = 'top' | 'bottom' | 'left' | 'right'\n\nexport interface SignpostProps {\n\ttrigger: React.ReactNode\n\tchildren: React.ReactNode\n\tposition?: SignpostPosition\n\tclassName?: string\n}\n\nexport function Signpost({ trigger, children, position = 'top', className = '' }: SignpostProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst signpostRef = useRef<HTMLDivElement>(null)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (signpostRef.current && !signpostRef.current.contains(event.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t}\n\t\t}\n\n\t\tif (isOpen) {\n\t\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\t\t}\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside)\n\t}, [isOpen])\n\n\treturn (\n\t\t<div className={`${styles.signpost} ${className}`} ref={signpostRef}>\n\t\t\t<div className={styles.trigger} onClick={() => setIsOpen(!isOpen)}>\n\t\t\t\t{trigger}\n\t\t\t</div>\n\t\t\t{isOpen && (\n\t\t\t\t<div className={`${styles.content} ${styles[position]}`}>\n\t\t\t\t\t<div className={styles.arrow}></div>\n\t\t\t\t\t<div className={styles.inner}>{children}</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\nexport type SpinnerVariant = 'default' | 'primary' | 'secondary'\n\nexport interface SpinnerProps {\n\tsize?: SpinnerSize\n\tvariant?: SpinnerVariant\n\tclassName?: string\n\tlabel?: string\n}\n\nexport function Spinner({ size = 'md', variant = 'default', className = '', label }: SpinnerProps) {\n\treturn (\n\t\t<div className={`${styles.spinnerWrapper} ${className}`}>\n\t\t\t<div className={`${styles.spinner} ${styles[size]} ${styles[variant]}`} role=\"status\" aria-label={label || 'Loading'}>\n\t\t\t\t<div className={styles.circle}></div>\n\t\t\t</div>\n\t\t\t{label && <span className={styles.label}>{label}</span>}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type StackViewDirection = 'horizontal' | 'vertical'\nexport type StackViewAlign = 'start' | 'center' | 'end' | 'stretch'\nexport type StackViewJustify = 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly'\nexport type StackViewSpacing = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface StackViewProps {\n\tchildren: React.ReactNode\n\tdirection?: StackViewDirection\n\talign?: StackViewAlign\n\tjustify?: StackViewJustify\n\tspacing?: StackViewSpacing\n\twrap?: boolean\n\tclassName?: string\n\tstyle?: React.CSSProperties\n}\n\nexport function StackView({\n\tchildren,\n\tdirection = 'horizontal',\n\talign = 'start',\n\tjustify = 'start',\n\tspacing = 'md',\n\twrap = false,\n\tclassName = '',\n\tstyle\n}: StackViewProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={`${styles.stackView} ${styles[direction]} ${styles[`align-${align}`]} ${styles[`justify-${justify}`]} ${styles[`spacing-${spacing}`]} ${wrap ? styles.wrap : ''} ${className}`}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type StepperOrientation = 'horizontal' | 'vertical'\n\nexport interface StepperStep {\n\tlabel: string\n\tdescription?: string\n\ticon?: React.ReactNode\n}\n\nexport interface StepperProps {\n\tsteps: StepperStep[]\n\tcurrentStep: number\n\torientation?: StepperOrientation\n\tonStepClick?: (index: number) => void\n\tclassName?: string\n}\n\nexport function Stepper({ steps, currentStep, orientation = 'horizontal', onStepClick, className = '' }: StepperProps) {\n\treturn (\n\t\t<div className={`${styles.stepper} ${styles[orientation]} ${className}`}>\n\t\t\t{steps.map((step, index) => {\n\t\t\t\tconst isCompleted = index < currentStep\n\t\t\t\tconst isCurrent = index === currentStep\n\t\t\t\tconst isClickable = onStepClick && (isCompleted || isCurrent)\n\n\t\t\t\treturn (\n\t\t\t\t\t<React.Fragment key={index}>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={`${styles.step} ${isCompleted ? styles.completed : ''} ${isCurrent ? styles.current : ''} ${isClickable ? styles.clickable : ''}`}\n\t\t\t\t\t\t\tonClick={() => isClickable && onStepClick(index)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className={styles.stepIndicator}>\n\t\t\t\t\t\t\t\t{isCompleted ? (\n\t\t\t\t\t\t\t\t\t<span className={styles.checkmark}>✓</span>\n\t\t\t\t\t\t\t\t) : step.icon ? (\n\t\t\t\t\t\t\t\t\tstep.icon\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<span className={styles.stepNumber}>{index + 1}</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\t<div className={styles.stepContent}>\n\t\t\t\t\t\t\t\t<div className={styles.stepLabel}>{step.label}</div>\n\t\t\t\t\t\t\t\t{step.description && <div className={styles.stepDescription}>{step.description}</div>}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{index < steps.length - 1 && <div className={`${styles.connector} ${isCompleted ? styles.completed : ''}`}></div>}\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t)\n\t\t\t})}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface TableColumn<T = any> {\n\tkey: string\n\theader: string\n\twidth?: string\n\trender?: (value: any, row: T) => React.ReactNode\n}\n\nexport interface TableProps<T = any> {\n\tcolumns: TableColumn<T>[]\n\tdata: T[]\n\tstriped?: boolean\n\thoverable?: boolean\n\tbordered?: boolean\n\tcompact?: boolean\n\tonRowClick?: (row: T) => void\n\tclassName?: string\n}\n\nexport function Table<T = any>({\n\tcolumns,\n\tdata,\n\tstriped = false,\n\thoverable = false,\n\tbordered = false,\n\tcompact = false,\n\tonRowClick,\n\tclassName = ''\n}: TableProps<T>) {\n\treturn (\n\t\t<div className={`${styles.tableWrapper} ${className}`}>\n\t\t\t<table\n\t\t\t\tclassName={`${styles.table} ${striped ? styles.striped : ''} ${hoverable ? styles.hoverable : ''} ${bordered ? styles.bordered : ''} ${compact ? styles.compact : ''}`}\n\t\t\t>\n\t\t\t\t<thead className={styles.thead}>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t{columns.map((column) => (\n\t\t\t\t\t\t\t<th key={column.key} className={styles.th} style={{ width: column.width }}>\n\t\t\t\t\t\t\t\t{column.header}\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody className={styles.tbody}>\n\t\t\t\t\t{data.map((row, index) => (\n\t\t\t\t\t\t<tr key={index} className={`${styles.tr} ${onRowClick ? styles.clickable : ''}`} onClick={() => onRowClick?.(row)}>\n\t\t\t\t\t\t\t{columns.map((column) => (\n\t\t\t\t\t\t\t\t<td key={column.key} className={styles.td}>\n\t\t\t\t\t\t\t\t\t{column.render ? column.render(row[column.key as keyof T], row) : String(row[column.key as keyof T] ?? '')}\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t))}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t{data.length === 0 && <div className={styles.empty}>No data available</div>}\n\t\t</div>\n\t)\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface TabItem {\n\tid: string\n\tlabel: string\n\tcontent: React.ReactNode\n\tdisabled?: boolean\n\ticon?: React.ReactNode\n}\n\nexport type TabsVariant = 'default' | 'pills' | 'underline'\n\nexport interface TabsProps {\n\titems: TabItem[]\n\tdefaultActiveId?: string\n\tvariant?: TabsVariant\n\tfullWidth?: boolean\n\tonChange?: (id: string) => void\n\tclassName?: string\n}\n\nexport function Tabs({ items, defaultActiveId, variant = 'default', fullWidth = false, onChange, className = '' }: TabsProps) {\n\tconst [activeId, setActiveId] = useState(defaultActiveId || items[0]?.id)\n\n\tconst handleTabClick = (id: string, disabled?: boolean) => {\n\t\tif (disabled) return\n\t\tsetActiveId(id)\n\t\tonChange?.(id)\n\t}\n\n\tconst activeItem = items.find((item) => item.id === activeId)\n\n\treturn (\n\t\t<div className={`${styles.tabsContainer} ${className}`}>\n\t\t\t<div className={`${styles.tabsList} ${styles[variant]} ${fullWidth ? styles.fullWidth : ''}`} role=\"tablist\">\n\t\t\t\t{items.map((item) => (\n\t\t\t\t\t<button\n\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\taria-selected={item.id === activeId}\n\t\t\t\t\t\taria-disabled={item.disabled}\n\t\t\t\t\t\tclassName={`${styles.tab} ${item.id === activeId ? styles.active : ''} ${item.disabled ? styles.disabled : ''}`}\n\t\t\t\t\t\tonClick={() => handleTabClick(item.id, item.disabled)}\n\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.icon && <span className={styles.icon}>{item.icon}</span>}\n\t\t\t\t\t\t<span>{item.label}</span>\n\t\t\t\t\t</button>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t<div className={styles.tabContent} role=\"tabpanel\">\n\t\t\t\t{activeItem?.content}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type TextareaSize = 'sm' | 'md' | 'lg'\nexport type TextareaVariant = 'default' | 'success' | 'error'\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n\tlabel?: string\n\thelperText?: string\n\terror?: string\n\tsize?: TextareaSize\n\tvariant?: TextareaVariant\n\tfullWidth?: boolean\n\tresize?: 'none' | 'vertical' | 'horizontal' | 'both'\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n\t({ label, helperText, error, size = 'md', variant = 'default', fullWidth = false, resize = 'vertical', className = '', disabled, ...rest }, ref) => {\n\t\tconst computedVariant = error ? 'error' : variant\n\n\t\treturn (\n\t\t\t<div className={`${styles.textareaWrapper} ${fullWidth ? styles.fullWidth : ''} ${className}`}>\n\t\t\t\t{label && <label className={styles.label}>{label}</label>}\n\t\t\t\t<textarea\n\t\t\t\t\tref={ref}\n\t\t\t\t\tclassName={`${styles.textarea} ${styles[size]} ${styles[computedVariant]} ${styles[`resize-${resize}`]} ${disabled ? styles.disabled : ''}`}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t{...rest}\n\t\t\t\t/>\n\t\t\t\t{error && <span className={styles.errorText}>{error}</span>}\n\t\t\t\t{!error && helperText && <span className={styles.helperText}>{helperText}</span>}\n\t\t\t</div>\n\t\t)\n\t}\n)\n\nTextarea.displayName = 'Textarea'\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface TimelineItem {\n\tid: string\n\ttitle: string\n\tdescription?: string\n\tdate?: string\n\ticon?: React.ReactNode\n\tcolor?: 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info'\n}\n\nexport type TimelineOrientation = 'vertical' | 'horizontal'\n\nexport interface TimelineProps {\n\titems: TimelineItem[]\n\torientation?: TimelineOrientation\n\tclassName?: string\n}\n\nexport function Timeline({ items, orientation = 'vertical', className = '' }: TimelineProps) {\n\treturn (\n\t\t<div className={`${styles.timeline} ${styles[orientation]} ${className}`}>\n\t\t\t{items.map((item, index) => (\n\t\t\t\t<div key={item.id} className={styles.timelineItem}>\n\t\t\t\t\t<div className={`${styles.timelineMarker} ${item.color ? styles[item.color] : styles.default}`}>\n\t\t\t\t\t\t{item.icon ? <span className={styles.icon}>{item.icon}</span> : <span className={styles.dot}></span>}\n\t\t\t\t\t</div>\n\t\t\t\t\t{index < items.length - 1 && <div className={`${styles.timelineConnector} ${item.color ? styles[item.color] : styles.default}`}></div>}\n\t\t\t\t\t<div className={styles.timelineContent}>\n\t\t\t\t\t\t{item.date && <span className={styles.date}>{item.date}</span>}\n\t\t\t\t\t\t<h4 className={styles.title}>{item.title}</h4>\n\t\t\t\t\t\t{item.description && <p className={styles.description}>{item.description}</p>}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type ToggleSwitchSize = 'sm' | 'md' | 'lg'\n\nexport interface ToggleSwitchProps {\n\tchecked?: boolean\n\tdefaultChecked?: boolean\n\tonChange?: (checked: boolean) => void\n\tlabel?: string\n\tdisabled?: boolean\n\tsize?: ToggleSwitchSize\n\tclassName?: string\n}\n\nexport function ToggleSwitch({ checked, defaultChecked = false, onChange, label, disabled = false, size = 'md', className = '' }: ToggleSwitchProps) {\n\tconst [internalChecked, setInternalChecked] = React.useState(defaultChecked)\n\tconst isControlled = checked !== undefined\n\tconst isChecked = isControlled ? checked : internalChecked\n\n\tconst handleChange = () => {\n\t\tif (disabled) return\n\n\t\tconst newChecked = !isChecked\n\t\tif (!isControlled) {\n\t\t\tsetInternalChecked(newChecked)\n\t\t}\n\t\tonChange?.(newChecked)\n\t}\n\n\treturn (\n\t\t<label className={`${styles.toggleSwitch} ${disabled ? styles.disabled : ''} ${className}`}>\n\t\t\t<input type=\"checkbox\" checked={isChecked} onChange={handleChange} disabled={disabled} className={styles.input} />\n\t\t\t<span className={`${styles.switch} ${styles[size]} ${isChecked ? styles.checked : ''}`}>\n\t\t\t\t<span className={styles.slider}></span>\n\t\t\t</span>\n\t\t\t{label && <span className={styles.label}>{label}</span>}\n\t\t</label>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right'\n\nexport interface TooltipProps {\n\tchildren: React.ReactElement\n\tcontent: React.ReactNode\n\tposition?: TooltipPosition\n\tdelay?: number\n\tclassName?: string\n}\n\nexport function Tooltip({ children, content, position = 'top', delay = 200, className = '' }: TooltipProps) {\n\tconst [isVisible, setIsVisible] = useState(false)\n\tconst timeoutRef = useRef<NodeJS.Timeout>()\n\tconst triggerRef = useRef<HTMLDivElement>(null)\n\n\tconst showTooltip = () => {\n\t\ttimeoutRef.current = setTimeout(() => {\n\t\t\tsetIsVisible(true)\n\t\t}, delay)\n\t}\n\n\tconst hideTooltip = () => {\n\t\tif (timeoutRef.current) {\n\t\t\tclearTimeout(timeoutRef.current)\n\t\t}\n\t\tsetIsVisible(false)\n\t}\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tif (timeoutRef.current) {\n\t\t\t\tclearTimeout(timeoutRef.current)\n\t\t\t}\n\t\t}\n\t}, [])\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`${styles.tooltipWrapper} ${className}`}\n\t\t\tref={triggerRef}\n\t\t\tonMouseEnter={showTooltip}\n\t\t\tonMouseLeave={hideTooltip}\n\t\t\tonFocus={showTooltip}\n\t\t\tonBlur={hideTooltip}\n\t\t>\n\t\t\t{children}\n\t\t\t{isVisible && (\n\t\t\t\t<div className={`${styles.tooltip} ${styles[position]}`} role=\"tooltip\">\n\t\t\t\t\t<div className={styles.tooltipContent}>{content}</div>\n\t\t\t\t\t<div className={styles.tooltipArrow}></div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React, { createContext, useContext, useState, useCallback, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type ToastVariant = 'info' | 'success' | 'warning' | 'error'\nexport type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right'\n\nexport interface ToastOptions {\n\tvariant?: ToastVariant\n\tduration?: number\n\tdismissible?: boolean\n}\n\ninterface ToastItem extends ToastOptions {\n\tid: string\n\tmessage: string\n}\n\ninterface ToastContextValue {\n\tshowToast: (message: string, options?: ToastOptions) => void\n}\n\nconst ToastContext = createContext<ToastContextValue | undefined>(undefined)\n\nexport interface ToastProviderProps {\n\tchildren: React.ReactNode\n\tposition?: ToastPosition\n\tmaxToasts?: number\n}\n\nexport function ToastProvider({ children, position = 'top-right', maxToasts = 5 }: ToastProviderProps) {\n\tconst [toasts, setToasts] = useState<ToastItem[]>([])\n\n\tconst showToast = useCallback(\n\t\t(message: string, options: ToastOptions = {}) => {\n\t\t\tconst id = Math.random().toString(36).substring(2, 9)\n\t\t\tconst newToast: ToastItem = {\n\t\t\t\tid,\n\t\t\t\tmessage,\n\t\t\t\tvariant: options.variant || 'info',\n\t\t\t\tduration: options.duration ?? 5000,\n\t\t\t\tdismissible: options.dismissible ?? true\n\t\t\t}\n\n\t\t\tsetToasts((prev) => {\n\t\t\t\tconst updated = [...prev, newToast]\n\t\t\t\treturn updated.slice(-maxToasts)\n\t\t\t})\n\n\t\t\tif (newToast.duration && newToast.duration > 0) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tremoveToast(id)\n\t\t\t\t}, newToast.duration)\n\t\t\t}\n\t\t},\n\t\t[maxToasts]\n\t)\n\n\tconst removeToast = useCallback((id: string) => {\n\t\tsetToasts((prev) => prev.filter((toast) => toast.id !== id))\n\t}, [])\n\n\tconst getPositionClasses = () => {\n\t\tconst positionMap: Record<ToastPosition, string> = {\n\t\t\t'top-left': styles.topLeft,\n\t\t\t'top-center': styles.topCenter,\n\t\t\t'top-right': styles.topRight,\n\t\t\t'bottom-left': styles.bottomLeft,\n\t\t\t'bottom-center': styles.bottomCenter,\n\t\t\t'bottom-right': styles.bottomRight\n\t\t}\n\t\treturn positionMap[position]\n\t}\n\n\tconst getIcon = (variant: ToastVariant) => {\n\t\tconst icons = {\n\t\t\tinfo: 'ℹ',\n\t\t\tsuccess: '✓',\n\t\t\twarning: '⚠',\n\t\t\terror: '✕'\n\t\t}\n\t\treturn icons[variant]\n\t}\n\n\treturn (\n\t\t<ToastContext.Provider value={{ showToast }}>\n\t\t\t{children}\n\t\t\t<div className={`${styles.toastContainer} ${getPositionClasses()}`}>\n\t\t\t\t{toasts.map((toast) => (\n\t\t\t\t\t<div key={toast.id} className={`${styles.toast} ${styles[toast.variant || 'info']}`} role=\"alert\" aria-live=\"polite\">\n\t\t\t\t\t\t<div className={styles.icon}>{getIcon(toast.variant || 'info')}</div>\n\t\t\t\t\t\t<div className={styles.message}>{toast.message}</div>\n\t\t\t\t\t\t{toast.dismissible && (\n\t\t\t\t\t\t\t<button className={styles.closeButton} onClick={() => removeToast(toast.id)} aria-label=\"Close\">\n\t\t\t\t\t\t\t\t✕\n\t\t\t\t\t\t\t</button>\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</ToastContext.Provider>\n\t)\n}\n\nexport function useToast() {\n\tconst context = useContext(ToastContext)\n\tif (!context) {\n\t\tthrow new Error('useToast must be used within a ToastProvider')\n\t}\n\treturn context\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface TreeNode {\n\tid: string\n\tlabel: string\n\ticon?: React.ReactNode\n\tchildren?: TreeNode[]\n\tdisabled?: boolean\n}\n\nexport interface TreeViewProps {\n\tdata: TreeNode[]\n\tdefaultExpandedIds?: string[]\n\tonNodeClick?: (node: TreeNode) => void\n\tclassName?: string\n}\n\ninterface TreeNodeItemProps {\n\tnode: TreeNode\n\tlevel: number\n\texpandedIds: Set<string>\n\tonToggle: (id: string) => void\n\tonNodeClick?: (node: TreeNode) => void\n}\n\nfunction TreeNodeItem({ node, level, expandedIds, onToggle, onNodeClick }: TreeNodeItemProps) {\n\tconst hasChildren = node.children && node.children.length > 0\n\tconst isExpanded = expandedIds.has(node.id)\n\n\tconst handleClick = () => {\n\t\tif (node.disabled) return\n\t\tif (hasChildren) {\n\t\t\tonToggle(node.id)\n\t\t}\n\t\tonNodeClick?.(node)\n\t}\n\n\treturn (\n\t\t<div className={styles.treeNodeWrapper}>\n\t\t\t<div className={`${styles.treeNode} ${node.disabled ? styles.disabled : ''}`} style={{ paddingLeft: `${level * 1.5}rem` }} onClick={handleClick}>\n\t\t\t\t{hasChildren && <span className={`${styles.expandIcon} ${isExpanded ? styles.expanded : ''}`}>▶</span>}\n\t\t\t\t{!hasChildren && <span className={styles.spacer}></span>}\n\t\t\t\t{node.icon && <span className={styles.icon}>{node.icon}</span>}\n\t\t\t\t<span className={styles.label}>{node.label}</span>\n\t\t\t</div>\n\t\t\t{hasChildren && isExpanded && (\n\t\t\t\t<div className={styles.children}>\n\t\t\t\t\t{node.children!.map((child) => (\n\t\t\t\t\t\t<TreeNodeItem key={child.id} node={child} level={level + 1} expandedIds={expandedIds} onToggle={onToggle} onNodeClick={onNodeClick} />\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport function TreeView({ data, defaultExpandedIds = [], onNodeClick, className = '' }: TreeViewProps) {\n\tconst [expandedIds, setExpandedIds] = useState<Set<string>>(new Set(defaultExpandedIds))\n\n\tconst handleToggle = (id: string) => {\n\t\tsetExpandedIds((prev) => {\n\t\t\tconst next = new Set(prev)\n\t\t\tif (next.has(id)) {\n\t\t\t\tnext.delete(id)\n\t\t\t} else {\n\t\t\t\tnext.add(id)\n\t\t\t}\n\t\t\treturn next\n\t\t})\n\t}\n\n\treturn (\n\t\t<div className={`${styles.treeView} ${className}`}>\n\t\t\t{data.map((node) => (\n\t\t\t\t<TreeNodeItem key={node.id} node={node} level={0} expandedIds={expandedIds} onToggle={handleToggle} onNodeClick={onNodeClick} />\n\t\t\t))}\n\t\t</div>\n\t)\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface NavItem {\n\tid: string\n\tlabel: string\n\ticon?: React.ReactNode\n\thref?: string\n\tonClick?: () => void\n\tchildren?: NavItem[]\n\tdisabled?: boolean\n\tbadge?: React.ReactNode\n\tmegaMenu?: boolean\n}\n\nexport type NavOrientation = 'vertical' | 'horizontal'\n\nexport interface VerticalNavProps {\n\titems: NavItem[]\n\torientation?: NavOrientation\n\tdefaultExpandedIds?: string[]\n\tonItemClick?: (item: NavItem) => void\n\tclassName?: string\n\tcollapsed?: boolean\n}\n\ninterface NavItemComponentProps {\n\titem: NavItem\n\tlevel: number\n\texpandedIds: Set<string>\n\tonToggle: (id: string) => void\n\tonItemClick?: (item: NavItem) => void\n\torientation: NavOrientation\n\tcollapsed?: boolean\n}\n\nfunction NavItemComponent({ item, level, expandedIds, onToggle, onItemClick, orientation, collapsed }: NavItemComponentProps) {\n\tconst hasChildren = item.children && item.children.length > 0\n\tconst isExpanded = expandedIds.has(item.id)\n\tconst isMegaMenu = item.megaMenu && hasChildren\n\n\tconst handleClick = (e: React.MouseEvent) => {\n\t\tif (item.disabled) return\n\n\t\tif (hasChildren && orientation === 'vertical') {\n\t\t\te.preventDefault()\n\t\t\tonToggle(item.id)\n\t\t}\n\n\t\tif (item.onClick) {\n\t\t\titem.onClick()\n\t\t}\n\n\t\tonItemClick?.(item)\n\t}\n\n\tconst renderContent = () => (\n\t\t<>\n\t\t\t{item.icon && <span className={styles.icon}>{item.icon}</span>}\n\t\t\t{!collapsed && <span className={styles.label}>{item.label}</span>}\n\t\t\t{!collapsed && item.badge && <span className={styles.badge}>{item.badge}</span>}\n\t\t\t{!collapsed && hasChildren && orientation === 'vertical' && <span className={`${styles.expandIcon} ${isExpanded ? styles.expanded : ''}`}>▶</span>}\n\t\t\t{!collapsed && hasChildren && orientation === 'horizontal' && <span className={styles.dropdownIcon}>▼</span>}\n\t\t</>\n\t)\n\n\tconst content = item.href ? (\n\t\t<a href={item.href} className={`${styles.navItem} ${item.disabled ? styles.disabled : ''} ${level > 0 ? styles.nested : ''}`} onClick={handleClick}>\n\t\t\t{renderContent()}\n\t\t</a>\n\t) : (\n\t\t<button type=\"button\" className={`${styles.navItem} ${item.disabled ? styles.disabled : ''} ${level > 0 ? styles.nested : ''}`} onClick={handleClick}>\n\t\t\t{renderContent()}\n\t\t</button>\n\t)\n\n\treturn (\n\t\t<div className={`${styles.navItemWrapper} ${isMegaMenu ? styles.megaMenuWrapper : ''}`}>\n\t\t\t{content}\n\t\t\t{hasChildren && (\n\t\t\t\t<>\n\t\t\t\t\t{orientation === 'vertical' && isExpanded && (\n\t\t\t\t\t\t<div className={styles.children}>\n\t\t\t\t\t\t\t{item.children!.map((child) => (\n\t\t\t\t\t\t\t\t<NavItemComponent\n\t\t\t\t\t\t\t\t\tkey={child.id}\n\t\t\t\t\t\t\t\t\titem={child}\n\t\t\t\t\t\t\t\t\tlevel={level + 1}\n\t\t\t\t\t\t\t\t\texpandedIds={expandedIds}\n\t\t\t\t\t\t\t\t\tonToggle={onToggle}\n\t\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t\torientation={orientation}\n\t\t\t\t\t\t\t\t\tcollapsed={collapsed}\n\t\t\t\t\t\t\t\t/>\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\t{orientation === 'horizontal' && (\n\t\t\t\t\t\t<div className={`${styles.dropdown} ${isMegaMenu ? styles.megaMenu : ''}`}>\n\t\t\t\t\t\t\t{isMegaMenu ? (\n\t\t\t\t\t\t\t\t<div className={styles.megaMenuGrid}>\n\t\t\t\t\t\t\t\t\t{item.children!.map((child) => (\n\t\t\t\t\t\t\t\t\t\t<div key={child.id} className={styles.megaMenuColumn}>\n\t\t\t\t\t\t\t\t\t\t\t<NavItemComponent\n\t\t\t\t\t\t\t\t\t\t\t\titem={child}\n\t\t\t\t\t\t\t\t\t\t\t\tlevel={level + 1}\n\t\t\t\t\t\t\t\t\t\t\t\texpandedIds={expandedIds}\n\t\t\t\t\t\t\t\t\t\t\t\tonToggle={onToggle}\n\t\t\t\t\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t\t\t\t\torientation={orientation}\n\t\t\t\t\t\t\t\t\t\t\t\tcollapsed={collapsed}\n\t\t\t\t\t\t\t\t\t\t\t/>\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</div>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\titem.children!.map((child) => (\n\t\t\t\t\t\t\t\t\t<NavItemComponent\n\t\t\t\t\t\t\t\t\t\tkey={child.id}\n\t\t\t\t\t\t\t\t\t\titem={child}\n\t\t\t\t\t\t\t\t\t\tlevel={level + 1}\n\t\t\t\t\t\t\t\t\t\texpandedIds={expandedIds}\n\t\t\t\t\t\t\t\t\t\tonToggle={onToggle}\n\t\t\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t\t\torientation={orientation}\n\t\t\t\t\t\t\t\t\t\tcollapsed={collapsed}\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)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport function VerticalNav({ items, orientation = 'vertical', defaultExpandedIds = [], onItemClick, className = '', collapsed = false }: VerticalNavProps) {\n\tconst [expandedIds, setExpandedIds] = useState<Set<string>>(new Set(defaultExpandedIds))\n\n\tconst handleToggle = (id: string) => {\n\t\tsetExpandedIds((prev) => {\n\t\t\tconst next = new Set(prev)\n\t\t\tif (next.has(id)) {\n\t\t\t\tnext.delete(id)\n\t\t\t} else {\n\t\t\t\tnext.add(id)\n\t\t\t}\n\t\t\treturn next\n\t\t})\n\t}\n\n\treturn (\n\t\t<nav className={`${styles.nav} ${styles[orientation]} ${collapsed ? styles.collapsed : ''} ${className}`}>\n\t\t\t{items.map((item) => (\n\t\t\t\t<NavItemComponent\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\titem={item}\n\t\t\t\t\tlevel={0}\n\t\t\t\t\texpandedIds={expandedIds}\n\t\t\t\t\tonToggle={handleToggle}\n\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\torientation={orientation}\n\t\t\t\t\tcollapsed={collapsed}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</nav>\n\t)\n}\n","import React, { forwardRef } from 'react'\nimport styles from './styles.module.scss'\n\nexport type SelectSize = 'sm' | 'md' | 'lg'\nexport type SelectVariant = 'default' | 'error' | 'success'\n\nexport interface SelectOption {\n\tvalue: string\n\tlabel: string\n\tdisabled?: boolean\n}\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'> {\n\tlabel?: string\n\terror?: string\n\thelperText?: string\n\tsize?: SelectSize\n\tvariant?: SelectVariant\n\tfullWidth?: boolean\n\toptions: SelectOption[]\n\tplaceholder?: string\n}\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n\t(\n\t\t{\n\t\t\tlabel,\n\t\t\terror,\n\t\t\thelperText,\n\t\t\tsize = 'md',\n\t\t\tvariant = 'default',\n\t\t\tfullWidth = false,\n\t\t\tclassName = '',\n\t\t\tdisabled = false,\n\t\t\toptions,\n\t\t\tplaceholder,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\tconst finalVariant = error ? 'error' : variant\n\t\tconst containerClass = `${styles.selectContainer} ${fullWidth ? styles.fullWidth : ''} ${className}`\n\t\tconst selectClass = `${styles.select} ${styles[size]} ${styles[finalVariant]} ${disabled ? styles.disabled : ''}`\n\n\t\treturn (\n\t\t\t<div className={containerClass}>\n\t\t\t\t{label && <label className={styles.label}>{label}</label>}\n\t\t\t\t<div className={styles.wrapper}>\n\t\t\t\t\t<select ref={ref} className={selectClass} disabled={disabled} {...props}>\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</select>\n\t\t\t\t\t<span className={styles.arrow}>▼</span>\n\t\t\t\t</div>\n\t\t\t\t{(error || helperText) && <span className={`${styles.helperText} ${error ? styles.errorText : ''}`}>{error || helperText}</span>}\n\t\t\t</div>\n\t\t)\n\t}\n)\n\nSelect.displayName = 'Select'\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type GridColumns = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12\nexport type GridGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\nexport type GridAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline'\nexport type GridJustify = 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly'\n\nexport interface GridProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'className'> {\n\t/** Number of columns (1-12) */\n\tcolumns?: GridColumns\n\t/** Number of columns on small screens (mobile) */\n\tcolumnsSm?: GridColumns\n\t/** Number of columns on medium screens (tablet) */\n\tcolumnsMd?: GridColumns\n\t/** Number of columns on large screens (desktop) */\n\tcolumnsLg?: GridColumns\n\t/** Number of columns on extra large screens */\n\tcolumnsXl?: GridColumns\n\t/** Gap between grid items */\n\tgap?: GridGap\n\t/** Row gap between grid items */\n\trowGap?: GridGap\n\t/** Column gap between grid items */\n\tcolumnGap?: GridGap\n\t/** Align items along the cross axis */\n\talignItems?: GridAlign\n\t/** Justify items along the main axis */\n\tjustifyItems?: GridAlign\n\t/** Justify content along the main axis */\n\tjustifyContent?: GridJustify\n\t/** Whether grid items should auto-flow */\n\tautoFlow?: 'row' | 'column' | 'dense' | 'row-dense' | 'column-dense'\n\t/** Custom className */\n\tclassName?: string\n\t/** Children */\n\tchildren: React.ReactNode\n}\n\nexport interface GridItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'className'> {\n\t/** Column span (1-12) */\n\tcolSpan?: GridColumns | 'full'\n\t/** Column span on small screens */\n\tcolSpanSm?: GridColumns | 'full'\n\t/** Column span on medium screens */\n\tcolSpanMd?: GridColumns | 'full'\n\t/** Column span on large screens */\n\tcolSpanLg?: GridColumns | 'full'\n\t/** Column span on extra large screens */\n\tcolSpanXl?: GridColumns | 'full'\n\t/** Row span */\n\trowSpan?: number\n\t/** Column start position */\n\tcolStart?: number\n\t/** Column end position */\n\tcolEnd?: number\n\t/** Row start position */\n\trowStart?: number\n\t/** Row end position */\n\trowEnd?: number\n\t/** Custom className */\n\tclassName?: string\n\t/** Children */\n\tchildren?: React.ReactNode\n}\n\nexport function Grid({\n\tcolumns = 12,\n\tcolumnsSm,\n\tcolumnsMd,\n\tcolumnsLg,\n\tcolumnsXl,\n\tgap = 'md',\n\trowGap,\n\tcolumnGap,\n\talignItems,\n\tjustifyItems,\n\tjustifyContent,\n\tautoFlow,\n\tclassName = '',\n\tchildren,\n\t...props\n}: GridProps) {\n\tconst classes = [\n\t\tstyles.grid,\n\t\tstyles[`columns-${columns}`],\n\t\tcolumnsSm && styles[`columns-sm-${columnsSm}`],\n\t\tcolumnsMd && styles[`columns-md-${columnsMd}`],\n\t\tcolumnsLg && styles[`columns-lg-${columnsLg}`],\n\t\tcolumnsXl && styles[`columns-xl-${columnsXl}`],\n\t\tstyles[`gap-${gap}`],\n\t\trowGap && styles[`row-gap-${rowGap}`],\n\t\tcolumnGap && styles[`column-gap-${columnGap}`],\n\t\talignItems && styles[`align-${alignItems}`],\n\t\tjustifyItems && styles[`justify-items-${justifyItems}`],\n\t\tjustifyContent && styles[`justify-content-${justifyContent}`],\n\t\tautoFlow && styles[`flow-${autoFlow}`],\n\t\tclassName\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ')\n\n\treturn (\n\t\t<div className={classes} {...props}>\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n\nexport function GridItem({\n\tcolSpan,\n\tcolSpanSm,\n\tcolSpanMd,\n\tcolSpanLg,\n\tcolSpanXl,\n\trowSpan,\n\tcolStart,\n\tcolEnd,\n\trowStart,\n\trowEnd,\n\tclassName = '',\n\tchildren,\n\t...props\n}: GridItemProps) {\n\tconst classes = [\n\t\tstyles.gridItem,\n\t\tcolSpan && styles[`col-span-${colSpan}`],\n\t\tcolSpanSm && styles[`col-span-sm-${colSpanSm}`],\n\t\tcolSpanMd && styles[`col-span-md-${colSpanMd}`],\n\t\tcolSpanLg && styles[`col-span-lg-${colSpanLg}`],\n\t\tcolSpanXl && styles[`col-span-xl-${colSpanXl}`],\n\t\trowSpan && styles[`row-span-${rowSpan}`],\n\t\tclassName\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ')\n\n\tconst inlineStyles: React.CSSProperties = {}\n\tif (colStart) inlineStyles.gridColumnStart = colStart\n\tif (colEnd) inlineStyles.gridColumnEnd = colEnd\n\tif (rowStart) inlineStyles.gridRowStart = rowStart\n\tif (rowEnd) inlineStyles.gridRowEnd = rowEnd\n\n\treturn (\n\t\t<div className={classes} style={inlineStyles} {...props}>\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n\nGrid.Item = GridItem\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type ContainerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full'\nexport type ContainerPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n\t/** Maximum width of the container */\n\tsize?: ContainerSize\n\t/** Padding on the sides */\n\tpadding?: ContainerPadding\n\t/** Whether to center the container */\n\tcentered?: boolean\n\t/** Whether the container should be fluid (no max-width) */\n\tfluid?: boolean\n\t/** Custom className */\n\tclassName?: string\n\t/** Children */\n\tchildren: React.ReactNode\n}\n\nexport function Container({ size = 'lg', padding = 'md', centered = true, fluid = false, className = '', children, ...props }: ContainerProps) {\n\tconst classes = [\n\t\tstyles.container,\n\t\t!fluid && styles[`size-${size}`],\n\t\tstyles[`padding-${padding}`],\n\t\tcentered && styles.centered,\n\t\tfluid && styles.fluid,\n\t\tclassName\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ')\n\n\treturn (\n\t\t<div className={classes} {...props}>\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type SpacerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl'\nexport type SpacerAxis = 'horizontal' | 'vertical' | 'both'\n\nexport interface SpacerProps {\n\t/** Size of the spacer */\n\tsize?: SpacerSize\n\t/** Direction of spacing */\n\taxis?: SpacerAxis\n\t/** Custom spacing value (overrides size) */\n\tspacing?: string | number\n\t/** Custom className */\n\tclassName?: string\n}\n\nexport function Spacer({ size = 'md', axis = 'vertical', spacing, className = '' }: SpacerProps) {\n\tconst classes = [styles.spacer, styles[`size-${size}`], styles[`axis-${axis}`], className].filter(Boolean).join(' ')\n\n\tconst customStyle: React.CSSProperties = {}\n\n\tif (spacing !== undefined) {\n\t\tconst spacingValue = typeof spacing === 'number' ? `${spacing}px` : spacing\n\n\t\tswitch (axis) {\n\t\t\tcase 'horizontal':\n\t\t\t\tcustomStyle.width = spacingValue\n\t\t\t\tcustomStyle.height = 0\n\t\t\t\tbreak\n\t\t\tcase 'vertical':\n\t\t\t\tcustomStyle.height = spacingValue\n\t\t\t\tcustomStyle.width = 0\n\t\t\t\tbreak\n\t\t\tcase 'both':\n\t\t\t\tcustomStyle.width = spacingValue\n\t\t\t\tcustomStyle.height = spacingValue\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\treturn <div className={classes} style={customStyle} aria-hidden=\"true\" />\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type SkeletonVariant = 'text' | 'circular' | 'rectangular' | 'rounded'\nexport type SkeletonAnimation = 'pulse' | 'wave' | 'none'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n\t/** Variant of the skeleton */\n\tvariant?: SkeletonVariant\n\t/** Width of the skeleton */\n\twidth?: string | number\n\t/** Height of the skeleton */\n\theight?: string | number\n\t/** Animation type */\n\tanimation?: SkeletonAnimation\n\t/** Custom className */\n\tclassName?: string\n\t/** Number of lines (for text variant) */\n\tlines?: number\n}\n\nexport function Skeleton({\n\tvariant = 'text',\n\twidth,\n\theight,\n\tanimation = 'pulse',\n\tclassName = '',\n\tlines = 1,\n\t...props\n}: SkeletonProps) {\n\tconst getStyles = (): React.CSSProperties => {\n\t\tconst customStyles: React.CSSProperties = {}\n\n\t\tif (width !== undefined) {\n\t\t\tcustomStyles.width = typeof width === 'number' ? `${width}px` : width\n\t\t}\n\n\t\tif (height !== undefined) {\n\t\t\tcustomStyles.height = typeof height === 'number' ? `${height}px` : height\n\t\t}\n\n\t\treturn customStyles\n\t}\n\n\tconst classes = [\n\t\tstyles.skeleton,\n\t\tstyles[`variant-${variant}`],\n\t\tanimation !== 'none' && styles[`animation-${animation}`],\n\t\tclassName\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ')\n\n\t// For text variant with multiple lines\n\tif (variant === 'text' && lines > 1) {\n\t\treturn (\n\t\t\t<div className={styles.textGroup} {...props}>\n\t\t\t\t{Array.from({ length: lines }, (_, i) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tclassName={classes}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t...getStyles(),\n\t\t\t\t\t\t\t...(i === lines - 1 && { width: width || '80%' }) // Last line is shorter\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn <div className={classes} style={getStyles()} {...props} />\n}\n\n// Convenience components for common skeleton patterns\nexport function SkeletonText({ lines = 3, ...props }: Omit<SkeletonProps, 'variant'>) {\n\treturn <Skeleton variant=\"text\" lines={lines} {...props} />\n}\n\nexport function SkeletonCircle({ size = 40, ...props }: Omit<SkeletonProps, 'variant' | 'width' | 'height'> & { size?: number }) {\n\treturn <Skeleton variant=\"circular\" width={size} height={size} {...props} />\n}\n\nexport function SkeletonRectangle({ width = '100%', height = 200, ...props }: Omit<SkeletonProps, 'variant'>) {\n\treturn <Skeleton variant=\"rectangular\" width={width} height={height} {...props} />\n}\n\n// Attach convenience components\nSkeleton.Text = SkeletonText\nSkeleton.Circle = SkeletonCircle\nSkeleton.Rectangle = SkeletonRectangle\n","import React, { forwardRef } from 'react'\nimport styles from './styles.module.scss'\n\nexport type VideoAspectRatio = '16:9' | '4:3' | '1:1' | '21:9' | 'auto'\n\nexport interface VideoProps extends Omit<React.VideoHTMLAttributes<HTMLVideoElement>, 'className'> {\n\t/** Video source URL */\n\tsrc: string\n\t/** Alternative sources for different formats */\n\tsources?: { src: string; type: string }[]\n\t/** Poster image URL */\n\tposter?: string\n\t/** Aspect ratio of the video */\n\taspectRatio?: VideoAspectRatio\n\t/** Whether to show native controls */\n\tcontrols?: boolean\n\t/** Whether to autoplay the video */\n\tautoPlay?: boolean\n\t/** Whether to loop the video */\n\tloop?: boolean\n\t/** Whether to mute the video */\n\tmuted?: boolean\n\t/** Whether to play inline on mobile */\n\tplaysInline?: boolean\n\t/** Width of the video container */\n\twidth?: string | number\n\t/** Height of the video container */\n\theight?: string | number\n\t/** Custom className for the container */\n\tclassName?: string\n\t/** Loading state placeholder */\n\tloading?: 'lazy' | 'eager'\n\t/** Error message to display if video fails to load */\n\tonError?: (error: React.SyntheticEvent<HTMLVideoElement>) => void\n}\n\nexport const Video = forwardRef<HTMLVideoElement, VideoProps>(\n\t(\n\t\t{\n\t\t\tsrc,\n\t\t\tsources,\n\t\t\tposter,\n\t\t\taspectRatio = '16:9',\n\t\t\tcontrols = true,\n\t\t\tautoPlay = false,\n\t\t\tloop = false,\n\t\t\tmuted = false,\n\t\t\tplaysInline = true,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tclassName = '',\n\t\t\tloading = 'lazy',\n\t\t\tonError,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\tconst containerStyle: React.CSSProperties = {}\n\t\tif (width) containerStyle.width = typeof width === 'number' ? `${width}px` : width\n\t\tif (height) containerStyle.height = typeof height === 'number' ? `${height}px` : height\n\n\t\tconst containerClasses = [\n\t\t\tstyles.videoContainer,\n\t\t\taspectRatio !== 'auto' && styles[`aspect-${aspectRatio.replace(':', '-')}`],\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<div className={containerClasses} style={containerStyle}>\n\t\t\t\t<video\n\t\t\t\t\tref={ref}\n\t\t\t\t\tclassName={styles.video}\n\t\t\t\t\tcontrols={controls}\n\t\t\t\t\tautoPlay={autoPlay}\n\t\t\t\t\tloop={loop}\n\t\t\t\t\tmuted={muted}\n\t\t\t\t\tplaysInline={playsInline}\n\t\t\t\t\tposter={poster}\n\t\t\t\t\tonError={onError}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t{sources && sources.length > 0 ? (\n\t\t\t\t\t\tsources.map((source, index) => <source key={index} src={source.src} type={source.type} />)\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<source src={src} />\n\t\t\t\t\t)}\n\t\t\t\t\tYour browser does not support the video tag.\n\t\t\t\t</video>\n\t\t\t</div>\n\t\t)\n\t}\n)\n\nVideo.displayName = 'Video'\n","import React, { forwardRef } from 'react'\nimport styles from './styles.module.scss'\n\nexport type AudioVariant = 'minimal' | 'standard' | 'detailed'\n\nexport interface AudioProps extends Omit<React.AudioHTMLAttributes<HTMLAudioElement>, 'className'> {\n\t/** Audio source URL */\n\tsrc: string\n\t/** Alternative sources for different formats */\n\tsources?: { src: string; type: string }[]\n\t/** Title/name of the audio track */\n\ttitle?: string\n\t/** Artist or creator name */\n\tartist?: string\n\t/** Album or collection name */\n\talbum?: string\n\t/** Cover art/thumbnail URL */\n\tcoverArt?: string\n\t/** Variant style of the player */\n\tvariant?: AudioVariant\n\t/** Whether to show native controls */\n\tcontrols?: boolean\n\t/** Whether to autoplay the audio */\n\tautoPlay?: boolean\n\t/** Whether to loop the audio */\n\tloop?: boolean\n\t/** Whether to mute the audio */\n\tmuted?: boolean\n\t/** Whether to preload the audio */\n\tpreload?: 'none' | 'metadata' | 'auto'\n\t/** Custom className for the container */\n\tclassName?: string\n\t/** Error callback */\n\tonError?: (error: React.SyntheticEvent<HTMLAudioElement>) => void\n\t/** Play callback */\n\tonPlay?: () => void\n\t/** Pause callback */\n\tonPause?: () => void\n\t/** Ended callback */\n\tonEnded?: () => void\n}\n\nexport const Audio = forwardRef<HTMLAudioElement, AudioProps>(\n\t(\n\t\t{\n\t\t\tsrc,\n\t\t\tsources,\n\t\t\ttitle,\n\t\t\tartist,\n\t\t\talbum,\n\t\t\tcoverArt,\n\t\t\tvariant = 'standard',\n\t\t\tcontrols = true,\n\t\t\tautoPlay = false,\n\t\t\tloop = false,\n\t\t\tmuted = false,\n\t\t\tpreload = 'metadata',\n\t\t\tclassName = '',\n\t\t\tonError,\n\t\t\tonPlay,\n\t\t\tonPause,\n\t\t\tonEnded,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\tconst containerClasses = [styles.audioContainer, styles[`variant-${variant}`], className].filter(Boolean).join(' ')\n\n\t\tconst hasMetadata = title || artist || album || coverArt\n\n\t\treturn (\n\t\t\t<div className={containerClasses}>\n\t\t\t\t{hasMetadata && variant !== 'minimal' && (\n\t\t\t\t\t<div className={styles.metadata}>\n\t\t\t\t\t\t{coverArt && (\n\t\t\t\t\t\t\t<div className={styles.coverArt}>\n\t\t\t\t\t\t\t\t<img src={coverArt} alt={title || 'Cover art'} />\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.info}>\n\t\t\t\t\t\t\t{title && <div className={styles.title}>{title}</div>}\n\t\t\t\t\t\t\t{artist && <div className={styles.artist}>{artist}</div>}\n\t\t\t\t\t\t\t{album && variant === 'detailed' && <div className={styles.album}>{album}</div>}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<audio\n\t\t\t\t\tref={ref}\n\t\t\t\t\tclassName={styles.audio}\n\t\t\t\t\tcontrols={controls}\n\t\t\t\t\tautoPlay={autoPlay}\n\t\t\t\t\tloop={loop}\n\t\t\t\t\tmuted={muted}\n\t\t\t\t\tpreload={preload}\n\t\t\t\t\tonError={onError}\n\t\t\t\t\tonPlay={onPlay}\n\t\t\t\t\tonPause={onPause}\n\t\t\t\t\tonEnded={onEnded}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t{sources && sources.length > 0 ? (\n\t\t\t\t\t\tsources.map((source, index) => <source key={index} src={source.src} type={source.type} />)\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<source src={src} />\n\t\t\t\t\t)}\n\t\t\t\t\tYour browser does not support the audio tag.\n\t\t\t\t</audio>\n\t\t\t</div>\n\t\t)\n\t}\n)\n\nAudio.displayName = 'Audio'\n","import React, { useState, useRef, KeyboardEvent } from 'react'\nimport styles from './styles.module.scss'\n\nexport type TagInputSize = 'sm' | 'md' | 'lg'\nexport type TagInputVariant = 'default' | 'error' | 'success'\n\nexport interface Tag {\n\tid: string\n\tlabel: string\n}\n\nexport interface TagInputProps {\n\t/** Array of tags */\n\ttags?: Tag[]\n\t/** Callback when tags change */\n\tonChange?: (tags: Tag[]) => void\n\t/** Callback when a tag is added */\n\tonTagAdd?: (tag: Tag) => void\n\t/** Callback when a tag is removed */\n\tonTagRemove?: (tag: Tag) => void\n\t/** Placeholder text */\n\tplaceholder?: string\n\t/** Label for the input */\n\tlabel?: string\n\t/** Error message */\n\terror?: string\n\t/** Helper text */\n\thelperText?: string\n\t/** Size of the input */\n\tsize?: TagInputSize\n\t/** Variant style */\n\tvariant?: TagInputVariant\n\t/** Whether the input is disabled */\n\tdisabled?: boolean\n\t/** Maximum number of tags allowed */\n\tmaxTags?: number\n\t/** Separator characters (default: Enter, comma) */\n\tseparators?: string[]\n\t/** Whether to allow duplicate tags */\n\tallowDuplicates?: boolean\n\t/** Custom validation function */\n\tvalidate?: (value: string) => boolean\n\t/** Whether tags should be removable */\n\tremovable?: boolean\n\t/** Full width */\n\tfullWidth?: boolean\n\t/** Custom className */\n\tclassName?: string\n}\n\nexport function TagInput({\n\ttags = [],\n\tonChange,\n\tonTagAdd,\n\tonTagRemove,\n\tplaceholder = 'Add tags...',\n\tlabel,\n\terror,\n\thelperText,\n\tsize = 'md',\n\tvariant = 'default',\n\tdisabled = false,\n\tmaxTags,\n\tseparators = ['Enter', ','],\n\tallowDuplicates = false,\n\tvalidate,\n\tremovable = true,\n\tfullWidth = false,\n\tclassName = ''\n}: TagInputProps) {\n\tconst [inputValue, setInputValue] = useState('')\n\tconst inputRef = useRef<HTMLInputElement>(null)\n\n\tconst finalVariant = error ? 'error' : variant\n\n\tconst addTag = (value: string) => {\n\t\tconst trimmedValue = value.trim()\n\n\t\tif (!trimmedValue) return\n\n\t\t// Check max tags\n\t\tif (maxTags && tags.length >= maxTags) return\n\n\t\t// Check duplicates\n\t\tif (!allowDuplicates && tags.some((tag) => tag.label.toLowerCase() === trimmedValue.toLowerCase())) {\n\t\t\treturn\n\t\t}\n\n\t\t// Custom validation\n\t\tif (validate && !validate(trimmedValue)) return\n\n\t\tconst newTag: Tag = {\n\t\t\tid: `${Date.now()}-${Math.random()}`,\n\t\t\tlabel: trimmedValue\n\t\t}\n\n\t\tconst newTags = [...tags, newTag]\n\t\tonChange?.(newTags)\n\t\tonTagAdd?.(newTag)\n\t\tsetInputValue('')\n\t}\n\n\tconst removeTag = (tagToRemove: Tag) => {\n\t\tif (!removable || disabled) return\n\n\t\tconst newTags = tags.filter((tag) => tag.id !== tagToRemove.id)\n\t\tonChange?.(newTags)\n\t\tonTagRemove?.(tagToRemove)\n\t}\n\n\tconst handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n\t\tconst value = inputValue.trim()\n\n\t\t// Handle separators\n\t\tif (separators.includes(e.key)) {\n\t\t\te.preventDefault()\n\t\t\taddTag(value)\n\t\t\treturn\n\t\t}\n\n\t\t// Handle backspace to remove last tag\n\t\tif (e.key === 'Backspace' && !inputValue && tags.length > 0 && removable) {\n\t\t\te.preventDefault()\n\t\t\tremoveTag(tags[tags.length - 1])\n\t\t}\n\t}\n\n\tconst handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst value = e.target.value\n\n\t\t// Check for comma in the input\n\t\tif (separators.includes(',') && value.includes(',')) {\n\t\t\tconst parts = value.split(',')\n\t\t\tparts.slice(0, -1).forEach((part) => addTag(part))\n\t\t\tsetInputValue(parts[parts.length - 1])\n\t\t} else {\n\t\t\tsetInputValue(value)\n\t\t}\n\t}\n\n\tconst handleContainerClick = () => {\n\t\tinputRef.current?.focus()\n\t}\n\n\tconst containerClasses = [\n\t\tstyles.tagInputContainer,\n\t\tfullWidth && styles.fullWidth,\n\t\tclassName\n\t].filter(Boolean).join(' ')\n\n\tconst inputWrapperClasses = [\n\t\tstyles.inputWrapper,\n\t\tstyles[size],\n\t\tstyles[finalVariant],\n\t\tdisabled && styles.disabled\n\t].filter(Boolean).join(' ')\n\n\treturn (\n\t\t<div className={containerClasses}>\n\t\t\t{label && <label className={styles.label}>{label}</label>}\n\n\t\t\t<div className={inputWrapperClasses} onClick={handleContainerClick}>\n\t\t\t\t<div className={styles.tagsContainer}>\n\t\t\t\t\t{tags.map((tag) => (\n\t\t\t\t\t\t<div key={tag.id} className={styles.tag}>\n\t\t\t\t\t\t\t<span className={styles.tagLabel}>{tag.label}</span>\n\t\t\t\t\t\t\t{removable && !disabled && (\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.removeButton}\n\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tremoveTag(tag)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\taria-label={`Remove ${tag.label}`}\n\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</button>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\n\t\t\t\t\t{(!maxTags || tags.length < maxTags) && (\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tclassName={styles.input}\n\t\t\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t\t\tonBlur={() => {\n\t\t\t\t\t\t\t\tif (inputValue.trim()) {\n\t\t\t\t\t\t\t\t\taddTag(inputValue)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tplaceholder={tags.length === 0 ? placeholder : ''}\n\t\t\t\t\t\t\tdisabled={disabled}\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\n\t\t\t{(error || helperText) && (\n\t\t\t\t<span className={`${styles.helperText} ${error ? styles.errorText : ''}`}>\n\t\t\t\t\t{error || helperText}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React, { useRef, useState, useEffect, KeyboardEvent, ClipboardEvent } from 'react'\nimport styles from './styles.module.scss'\n\nexport type PinInputSize = 'sm' | 'md' | 'lg'\nexport type PinInputVariant = 'default' | 'error' | 'success'\nexport type PinInputType = 'numeric' | 'alphanumeric' | 'alphabetic'\n\nexport interface PinInputProps {\n\t/** Number of input fields */\n\tlength?: number\n\t/** Type of characters allowed */\n\ttype?: PinInputType\n\t/** Size of the input fields */\n\tsize?: PinInputSize\n\t/** Variant style */\n\tvariant?: PinInputVariant\n\t/** Whether to mask the input (show dots) */\n\tmask?: boolean\n\t/** Whether to focus on mount */\n\tautoFocus?: boolean\n\t/** Whether the input is disabled */\n\tdisabled?: boolean\n\t/** Placeholder character */\n\tplaceholder?: string\n\t/** Label for the input */\n\tlabel?: string\n\t/** Error message */\n\terror?: string\n\t/** Helper text */\n\thelperText?: string\n\t/** Callback when value changes */\n\tonChange?: (value: string) => void\n\t/** Callback when all fields are filled */\n\tonComplete?: (value: string) => void\n\t/** Value (controlled) */\n\tvalue?: string\n\t/** Default value (uncontrolled) */\n\tdefaultValue?: string\n\t/** Whether to select input content on focus */\n\tselectOnFocus?: boolean\n\t/** Custom className */\n\tclassName?: string\n}\n\nexport function PinInput({\n\tlength = 6,\n\ttype = 'numeric',\n\tsize = 'md',\n\tvariant = 'default',\n\tmask = false,\n\tautoFocus = false,\n\tdisabled = false,\n\tplaceholder = '',\n\tlabel,\n\terror,\n\thelperText,\n\tonChange,\n\tonComplete,\n\tvalue: controlledValue,\n\tdefaultValue = '',\n\tselectOnFocus = true,\n\tclassName = ''\n}: PinInputProps) {\n\tconst [values, setValues] = useState<string[]>(\n\t\tcontrolledValue?.split('') || defaultValue.split('').slice(0, length) || Array(length).fill('')\n\t)\n\tconst inputRefs = useRef<(HTMLInputElement | null)[]>([])\n\tconst finalVariant = error ? 'error' : variant\n\n\t// Sync controlled value\n\tuseEffect(() => {\n\t\tif (controlledValue !== undefined) {\n\t\t\tconst newValues = controlledValue.split('').slice(0, length)\n\t\t\twhile (newValues.length < length) {\n\t\t\t\tnewValues.push('')\n\t\t\t}\n\t\t\tsetValues(newValues)\n\t\t}\n\t}, [controlledValue, length])\n\n\t// Auto focus first input on mount\n\tuseEffect(() => {\n\t\tif (autoFocus && inputRefs.current[0]) {\n\t\t\tinputRefs.current[0].focus()\n\t\t}\n\t}, [autoFocus])\n\n\tconst isValidChar = (char: string): boolean => {\n\t\tif (!char) return true\n\n\t\tswitch (type) {\n\t\t\tcase 'numeric':\n\t\t\t\treturn /^\\d$/.test(char)\n\t\t\tcase 'alphabetic':\n\t\t\t\treturn /^[a-zA-Z]$/.test(char)\n\t\t\tcase 'alphanumeric':\n\t\t\t\treturn /^[a-zA-Z0-9]$/.test(char)\n\t\t\tdefault:\n\t\t\t\treturn true\n\t\t}\n\t}\n\n\tconst focusInput = (index: number) => {\n\t\tif (inputRefs.current[index]) {\n\t\t\tinputRefs.current[index]?.focus()\n\t\t\tif (selectOnFocus) {\n\t\t\t\tinputRefs.current[index]?.select()\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChange = (index: number, newValue: string) => {\n\t\tconst char = newValue.slice(-1) // Get last character\n\n\t\tif (newValue && !isValidChar(char)) {\n\t\t\treturn\n\t\t}\n\n\t\tconst newValues = [...values]\n\t\tnewValues[index] = char\n\n\t\tsetValues(newValues)\n\n\t\tconst fullValue = newValues.join('')\n\t\tonChange?.(fullValue)\n\n\t\t// Auto-focus next input if value was added\n\t\tif (char && index < length - 1) {\n\t\t\tfocusInput(index + 1)\n\t\t}\n\n\t\t// Check if complete\n\t\tif (newValues.every((v) => v !== '')) {\n\t\t\tonComplete?.(fullValue)\n\t\t}\n\t}\n\n\tconst handleKeyDown = (index: number, e: KeyboardEvent<HTMLInputElement>) => {\n\t\t// Handle backspace\n\t\tif (e.key === 'Backspace') {\n\t\t\te.preventDefault()\n\t\t\tconst newValues = [...values]\n\n\t\t\tif (values[index]) {\n\t\t\t\t// Clear current field\n\t\t\t\tnewValues[index] = ''\n\t\t\t\tsetValues(newValues)\n\t\t\t\tonChange?.(newValues.join(''))\n\t\t\t} else if (index > 0) {\n\t\t\t\t// Move to previous field and clear it\n\t\t\t\tnewValues[index - 1] = ''\n\t\t\t\tsetValues(newValues)\n\t\t\t\tonChange?.(newValues.join(''))\n\t\t\t\tfocusInput(index - 1)\n\t\t\t}\n\t\t}\n\n\t\t// Handle delete\n\t\tif (e.key === 'Delete') {\n\t\t\te.preventDefault()\n\t\t\tconst newValues = [...values]\n\t\t\tnewValues[index] = ''\n\t\t\tsetValues(newValues)\n\t\t\tonChange?.(newValues.join(''))\n\t\t}\n\n\t\t// Handle arrow keys\n\t\tif (e.key === 'ArrowLeft' && index > 0) {\n\t\t\te.preventDefault()\n\t\t\tfocusInput(index - 1)\n\t\t}\n\n\t\tif (e.key === 'ArrowRight' && index < length - 1) {\n\t\t\te.preventDefault()\n\t\t\tfocusInput(index + 1)\n\t\t}\n\n\t\t// Handle home/end\n\t\tif (e.key === 'Home') {\n\t\t\te.preventDefault()\n\t\t\tfocusInput(0)\n\t\t}\n\n\t\tif (e.key === 'End') {\n\t\t\te.preventDefault()\n\t\t\tfocusInput(length - 1)\n\t\t}\n\t}\n\n\tconst handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {\n\t\te.preventDefault()\n\t\tconst pasteData = e.clipboardData.getData('text').slice(0, length)\n\t\tconst chars = pasteData.split('').filter(isValidChar)\n\n\t\tconst newValues = [...values]\n\t\tchars.forEach((char, i) => {\n\t\t\tif (i < length) {\n\t\t\t\tnewValues[i] = char\n\t\t\t}\n\t\t})\n\n\t\tsetValues(newValues)\n\t\tonChange?.(newValues.join(''))\n\n\t\t// Focus last filled input or first empty\n\t\tconst nextEmptyIndex = newValues.findIndex((v) => !v)\n\t\tfocusInput(nextEmptyIndex === -1 ? length - 1 : nextEmptyIndex)\n\n\t\t// Check if complete\n\t\tif (newValues.every((v) => v !== '')) {\n\t\t\tonComplete?.(newValues.join(''))\n\t\t}\n\t}\n\n\tconst handleFocus = (index: number) => {\n\t\tif (selectOnFocus && inputRefs.current[index]) {\n\t\t\tinputRefs.current[index]?.select()\n\t\t}\n\t}\n\n\tconst containerClasses = [styles.pinInputContainer, className].filter(Boolean).join(' ')\n\n\tconst inputClasses = [\n\t\tstyles.pinInput,\n\t\tstyles[size],\n\t\tstyles[finalVariant],\n\t\tmask && styles.masked,\n\t\tdisabled && styles.disabled\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ')\n\n\treturn (\n\t\t<div className={containerClasses}>\n\t\t\t{label && <label className={styles.label}>{label}</label>}\n\n\t\t\t<div className={styles.inputsWrapper}>\n\t\t\t\t{Array.from({ length }).map((_, index) => (\n\t\t\t\t\t<input\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tref={(el) => (inputRefs.current[index] = el)}\n\t\t\t\t\t\ttype={mask ? 'password' : 'text'}\n\t\t\t\t\t\tinputMode={type === 'numeric' ? 'numeric' : 'text'}\n\t\t\t\t\t\tmaxLength={1}\n\t\t\t\t\t\tvalue={values[index] || ''}\n\t\t\t\t\t\tonChange={(e) => handleChange(index, e.target.value)}\n\t\t\t\t\t\tonKeyDown={(e) => handleKeyDown(index, e)}\n\t\t\t\t\t\tonPaste={handlePaste}\n\t\t\t\t\t\tonFocus={() => handleFocus(index)}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\tclassName={inputClasses}\n\t\t\t\t\t\taria-label={`PIN digit ${index + 1}`}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\n\t\t\t{(error || helperText) && (\n\t\t\t\t<span className={`${styles.helperText} ${error ? styles.errorText : ''}`}>{error || helperText}</span>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport type RatingSize = 'sm' | 'md' | 'lg'\nexport type RatingPrecision = 0.5 | 1\n\nexport interface RatingProps {\n\t/** Current rating value */\n\tvalue?: number\n\t/** Default value (uncontrolled) */\n\tdefaultValue?: number\n\t/** Maximum rating value */\n\tmax?: number\n\t/** Precision of the rating (0.5 for half stars, 1 for full stars) */\n\tprecision?: RatingPrecision\n\t/** Size of the rating stars */\n\tsize?: RatingSize\n\t/** Whether the rating is read-only */\n\treadOnly?: boolean\n\t/** Whether the rating is disabled */\n\tdisabled?: boolean\n\t/** Label for the rating */\n\tlabel?: string\n\t/** Show the numeric value */\n\tshowValue?: boolean\n\t/** Custom empty icon */\n\temptyIcon?: React.ReactNode\n\t/** Custom filled icon */\n\tfilledIcon?: React.ReactNode\n\t/** Custom half icon (for half star precision) */\n\thalfIcon?: React.ReactNode\n\t/** Callback when value changes */\n\tonChange?: (value: number) => void\n\t/** Callback when hover value changes */\n\tonHoverChange?: (value: number) => void\n\t/** Custom className */\n\tclassName?: string\n\t/** Helper text */\n\thelperText?: string\n}\n\nexport function Rating({\n\tvalue: controlledValue,\n\tdefaultValue = 0,\n\tmax = 5,\n\tprecision = 1,\n\tsize = 'md',\n\treadOnly = false,\n\tdisabled = false,\n\tlabel,\n\tshowValue = false,\n\temptyIcon,\n\tfilledIcon,\n\thalfIcon,\n\tonChange,\n\tonHoverChange,\n\tclassName = '',\n\thelperText\n}: RatingProps) {\n\tconst [internalValue, setInternalValue] = useState(defaultValue)\n\tconst [hoverValue, setHoverValue] = useState<number | null>(null)\n\n\tconst value = controlledValue !== undefined ? controlledValue : internalValue\n\tconst displayValue = hoverValue !== null ? hoverValue : value\n\n\tconst isInteractive = !readOnly && !disabled\n\n\tconst handleClick = (newValue: number) => {\n\t\tif (!isInteractive) return\n\n\t\t// If clicking the same value, reset to 0\n\t\tconst finalValue = value === newValue ? 0 : newValue\n\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalValue(finalValue)\n\t\t}\n\t\tonChange?.(finalValue)\n\t}\n\n\tconst handleMouseMove = (index: number, event: React.MouseEvent<HTMLButtonElement>) => {\n\t\tif (!isInteractive) return\n\n\t\tif (precision === 0.5) {\n\t\t\tconst { left, width } = event.currentTarget.getBoundingClientRect()\n\t\t\tconst percent = (event.clientX - left) / width\n\t\t\tconst newValue = index + (percent > 0.5 ? 1 : 0.5)\n\t\t\tsetHoverValue(newValue)\n\t\t\tonHoverChange?.(newValue)\n\t\t} else {\n\t\t\tconst newValue = index + 1\n\t\t\tsetHoverValue(newValue)\n\t\t\tonHoverChange?.(newValue)\n\t\t}\n\t}\n\n\tconst handleMouseLeave = () => {\n\t\tif (!isInteractive) return\n\t\tsetHoverValue(null)\n\t\tonHoverChange?.(0)\n\t}\n\n\tconst getIconForPosition = (index: number) => {\n\t\tconst position = index + 1\n\t\tconst filled = displayValue >= position\n\t\tconst half = precision === 0.5 && displayValue >= position - 0.5 && displayValue < position\n\n\t\tif (filled) {\n\t\t\treturn filledIcon || '★'\n\t\t} else if (half) {\n\t\t\treturn halfIcon || '⯨'\n\t\t} else {\n\t\t\treturn emptyIcon || '☆'\n\t\t}\n\t}\n\n\tconst containerClasses = [\n\t\tstyles.ratingContainer,\n\t\tclassName\n\t].filter(Boolean).join(' ')\n\n\tconst ratingClasses = [\n\t\tstyles.rating,\n\t\tstyles[size],\n\t\tdisabled && styles.disabled,\n\t\treadOnly && styles.readOnly\n\t].filter(Boolean).join(' ')\n\n\treturn (\n\t\t<div className={containerClasses}>\n\t\t\t{label && <label className={styles.label}>{label}</label>}\n\n\t\t\t<div className={styles.ratingWrapper}>\n\t\t\t\t<div className={ratingClasses} onMouseLeave={handleMouseLeave}>\n\t\t\t\t\t{Array.from({ length: max }, (_, index) => (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName={styles.star}\n\t\t\t\t\t\t\tonClick={() => handleClick(index + 1)}\n\t\t\t\t\t\t\tonMouseMove={(e) => handleMouseMove(index, e)}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\taria-label={`Rate ${index + 1} out of ${max}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{getIconForPosition(index)}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\n\t\t\t\t{showValue && (\n\t\t\t\t\t<span className={styles.valueDisplay}>\n\t\t\t\t\t\t{displayValue.toFixed(precision === 0.5 ? 1 : 0)} / {max}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{helperText && <span className={styles.helperText}>{helperText}</span>}\n\t\t</div>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type WindowSize = 'sm' | 'md' | 'lg' | 'xl' | 'full'\nexport type WindowVariant = 'default' | 'dark' | 'light'\n\nexport interface WindowProps {\n\t/** Window title */\n\ttitle?: string\n\t/** Window size preset */\n\tsize?: WindowSize\n\t/** Visual variant */\n\tvariant?: WindowVariant\n\t/** Whether the window is open */\n\topen?: boolean\n\t/** Whether the window can be closed */\n\tclosable?: boolean\n\t/** Whether the window can be minimized */\n\tminimizable?: boolean\n\t/** Whether the window can be maximized */\n\tmaximizable?: boolean\n\t/** Whether the window is resizable */\n\tresizable?: boolean\n\t/** Whether the window is draggable */\n\tdraggable?: boolean\n\t/** Callback when close button is clicked */\n\tonClose?: () => void\n\t/** Callback when minimize button is clicked */\n\tonMinimize?: () => void\n\t/** Callback when maximize button is clicked */\n\tonMaximize?: () => void\n\t/** Custom width */\n\twidth?: string | number\n\t/** Custom height */\n\theight?: string | number\n\t/** Initial position X */\n\tinitialX?: number\n\t/** Initial position Y */\n\tinitialY?: number\n\t/** Window content */\n\tchildren: React.ReactNode\n\t/** Custom className */\n\tclassName?: string\n\t/** Show window controls */\n\tshowControls?: boolean\n\t/** Custom toolbar content */\n\ttoolbar?: React.ReactNode\n\t/** Footer content */\n\tfooter?: React.ReactNode\n}\n\nexport function Window({\n\ttitle = 'Window',\n\tsize = 'md',\n\tvariant = 'default',\n\topen = true,\n\tclosable = true,\n\tminimizable = false,\n\tmaximizable = true,\n\tresizable = false,\n\tdraggable = true,\n\tonClose,\n\tonMinimize,\n\tonMaximize,\n\twidth,\n\theight,\n\tinitialX = 0,\n\tinitialY = 0,\n\tchildren,\n\tclassName = '',\n\tshowControls = true,\n\ttoolbar,\n\tfooter\n}: WindowProps) {\n\tconst [isMaximized, setIsMaximized] = useState(false)\n\tconst [position, setPosition] = useState({ x: initialX, y: initialY })\n\tconst [isDragging, setIsDragging] = useState(false)\n\tconst [dragStart, setDragStart] = useState({ x: 0, y: 0 })\n\tconst windowRef = useRef<HTMLDivElement>(null)\n\n\tif (!open) return null\n\n\tconst handleMouseDown = (e: React.MouseEvent) => {\n\t\tif (!draggable || isMaximized) return\n\n\t\tsetIsDragging(true)\n\t\tsetDragStart({\n\t\t\tx: e.clientX - position.x,\n\t\t\ty: e.clientY - position.y\n\t\t})\n\t}\n\n\tconst handleMouseMove = (e: MouseEvent) => {\n\t\tif (!isDragging) return\n\n\t\tsetPosition({\n\t\t\tx: e.clientX - dragStart.x,\n\t\t\ty: e.clientY - dragStart.y\n\t\t})\n\t}\n\n\tconst handleMouseUp = () => {\n\t\tsetIsDragging(false)\n\t}\n\n\tuseEffect(() => {\n\t\tif (isDragging) {\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}\n\t}, [isDragging, dragStart])\n\n\tconst handleMaximize = () => {\n\t\tsetIsMaximized(!isMaximized)\n\t\tonMaximize?.()\n\t}\n\n\tconst windowStyle: React.CSSProperties = {}\n\tif (!isMaximized && draggable) {\n\t\twindowStyle.transform = `translate(${position.x}px, ${position.y}px)`\n\t}\n\tif (width) windowStyle.width = typeof width === 'number' ? `${width}px` : width\n\tif (height) windowStyle.height = typeof height === 'number' ? `${height}px` : height\n\n\tconst windowClasses = [\n\t\tstyles.window,\n\t\tstyles[`size-${size}`],\n\t\tstyles[`variant-${variant}`],\n\t\tisMaximized && styles.maximized,\n\t\tresizable && styles.resizable,\n\t\tclassName\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ')\n\n\treturn (\n\t\t<div ref={windowRef} className={windowClasses} style={windowStyle}>\n\t\t\t{/* Title Bar */}\n\t\t\t<div\n\t\t\t\tclassName={`${styles.titleBar} ${draggable && !isMaximized ? styles.draggable : ''}`}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t>\n\t\t\t\t<div className={styles.titleBarContent}>\n\t\t\t\t\t<span className={styles.title}>{title}</span>\n\t\t\t\t\t{toolbar && <div className={styles.toolbar}>{toolbar}</div>}\n\t\t\t\t</div>\n\n\t\t\t\t{showControls && (\n\t\t\t\t\t<div className={styles.controls}>\n\t\t\t\t\t\t{minimizable && (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tclassName={`${styles.control} ${styles.minimize}`}\n\t\t\t\t\t\t\t\tonClick={onMinimize}\n\t\t\t\t\t\t\t\taria-label=\"Minimize\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t−\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{maximizable && (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tclassName={`${styles.control} ${styles.maximize}`}\n\t\t\t\t\t\t\t\tonClick={handleMaximize}\n\t\t\t\t\t\t\t\taria-label={isMaximized ? 'Restore' : 'Maximize'}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{isMaximized ? '⧉' : '□'}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{closable && (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tclassName={`${styles.control} ${styles.close}`}\n\t\t\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t\t\t\taria-label=\"Close\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t×\n\t\t\t\t\t\t\t</button>\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\n\t\t\t{/* Content */}\n\t\t\t<div className={styles.content}>{children}</div>\n\n\t\t\t{/* Footer */}\n\t\t\t{footer && <div className={styles.footer}>{footer}</div>}\n\t\t</div>\n\t)\n}\n","import React, { useMemo } from 'react'\nimport styles from './styles.module.scss'\n\nexport type GaugeSize = 'sm' | 'md' | 'lg' | 'xl'\nexport type GaugeVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\n\nexport interface GaugeProps {\n\t/** Current value */\n\tvalue: number\n\t/** Minimum value */\n\tmin?: number\n\t/** Maximum value */\n\tmax?: number\n\t/** Size of the gauge */\n\tsize?: GaugeSize\n\t/** Visual variant (color scheme) */\n\tvariant?: GaugeVariant\n\t/** Thickness of the gauge arc */\n\tthickness?: number\n\t/** Label to display in the center */\n\tlabel?: string\n\t/** Show the numeric value */\n\tshowValue?: boolean\n\t/** Custom value formatter */\n\tvalueFormatter?: (value: number) => string\n\t/** Show min/max labels */\n\tshowMinMax?: boolean\n\t/** Start angle in degrees (0 = top, 90 = right) */\n\tstartAngle?: number\n\t/** End angle in degrees */\n\tendAngle?: number\n\t/** Whether to animate the gauge */\n\tanimate?: boolean\n\t/** Custom className */\n\tclassName?: string\n\t/** Unit to display after the value */\n\tunit?: string\n}\n\nexport function Gauge({\n\tvalue,\n\tmin = 0,\n\tmax = 100,\n\tsize = 'md',\n\tvariant = 'default',\n\tthickness = 12,\n\tlabel,\n\tshowValue = true,\n\tvalueFormatter,\n\tshowMinMax = false,\n\tstartAngle = -135,\n\tendAngle = 135,\n\tanimate = true,\n\tclassName = '',\n\tunit = ''\n}: GaugeProps) {\n\t// Clamp value between min and max\n\tconst clampedValue = Math.max(min, Math.min(max, value))\n\n\t// Calculate percentage\n\tconst percentage = ((clampedValue - min) / (max - min)) * 100\n\n\t// Calculate stroke properties\n\tconst radius = 50 - thickness / 2\n\tconst circumference = 2 * Math.PI * radius\n\n\t// Calculate angles in radians\n\tconst startAngleRad = (startAngle * Math.PI) / 180\n\tconst endAngleRad = (endAngle * Math.PI) / 180\n\tconst totalAngle = endAngleRad - startAngleRad\n\tconst currentAngle = startAngleRad + (totalAngle * percentage) / 100\n\n\t// Calculate arc path\n\tconst startX = 50 + radius * Math.sin(startAngleRad)\n\tconst startY = 50 - radius * Math.cos(startAngleRad)\n\tconst endX = 50 + radius * Math.sin(endAngleRad)\n\tconst endY = 50 - radius * Math.cos(endAngleRad)\n\n\t// Calculate current position\n\tconst currentX = 50 + radius * Math.sin(currentAngle)\n\tconst currentY = 50 - radius * Math.cos(currentAngle)\n\n\t// Determine if arc should be large (> 180 degrees)\n\tconst largeArcFlag = Math.abs(endAngle - startAngle) > 180 ? 1 : 0\n\tconst largeArcFlagCurrent = (percentage / 100) * Math.abs(endAngle - startAngle) > 180 ? 1 : 0\n\n\t// Create path for background arc\n\tconst backgroundPath = `M ${startX} ${startY} A ${radius} ${radius} 0 ${largeArcFlag} 1 ${endX} ${endY}`\n\n\t// Create path for value arc\n\tconst valuePath = percentage > 0 ? `M ${startX} ${startY} A ${radius} ${radius} 0 ${largeArcFlagCurrent} 1 ${currentX} ${currentY}` : ''\n\n\t// Format value\n\tconst displayValue = valueFormatter ? valueFormatter(clampedValue) : clampedValue.toFixed(0)\n\n\tconst containerClasses = [styles.gaugeContainer, styles[size], className].filter(Boolean).join(' ')\n\n\tconst variantColors: Record<GaugeVariant, string> = {\n\t\tdefault: 'rgba(99, 102, 241, 0.8)',\n\t\tsuccess: 'rgba(34, 197, 94, 0.8)',\n\t\twarning: 'rgba(251, 191, 36, 0.8)',\n\t\terror: 'rgba(239, 68, 68, 0.8)',\n\t\tinfo: 'rgba(59, 130, 246, 0.8)'\n\t}\n\n\treturn (\n\t\t<div className={containerClasses}>\n\t\t\t<svg className={styles.svg} viewBox=\"0 0 100 100\">\n\t\t\t\t{/* Background arc */}\n\t\t\t\t<path\n\t\t\t\t\td={backgroundPath}\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"rgba(255, 255, 255, 0.1)\"\n\t\t\t\t\tstrokeWidth={thickness}\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t/>\n\n\t\t\t\t{/* Value arc */}\n\t\t\t\t{percentage > 0 && (\n\t\t\t\t\t<path\n\t\t\t\t\t\td={valuePath}\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke={variantColors[variant]}\n\t\t\t\t\t\tstrokeWidth={thickness}\n\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\tclassName={animate ? styles.animatedPath : ''}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tstrokeDasharray: circumference,\n\t\t\t\t\t\t\tstrokeDashoffset: circumference * (1 - percentage / 100)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{/* Center text */}\n\t\t\t\t<g className={styles.centerText}>\n\t\t\t\t\t{showValue && (\n\t\t\t\t\t\t<text x=\"50\" y={label ? \"45\" : \"52\"} className={styles.value}>\n\t\t\t\t\t\t\t{displayValue}\n\t\t\t\t\t\t\t{unit && <tspan className={styles.unit}>{unit}</tspan>}\n\t\t\t\t\t\t</text>\n\t\t\t\t\t)}\n\t\t\t\t\t{label && (\n\t\t\t\t\t\t<text x=\"50\" y={showValue ? \"60\" : \"52\"} className={styles.label}>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</text>\n\t\t\t\t\t)}\n\t\t\t\t</g>\n\t\t\t</svg>\n\n\t\t\t{/* Min/Max labels */}\n\t\t\t{showMinMax && (\n\t\t\t\t<div className={styles.minMaxLabels}>\n\t\t\t\t\t<span className={styles.minLabel}>{min}</span>\n\t\t\t\t\t<span className={styles.maxLabel}>{max}</span>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type ColorFormat = 'hex' | 'rgb' | 'hsl'\n\nexport interface ColorPickerProps {\n\t/** Current color value */\n\tvalue?: string\n\t/** Default color value */\n\tdefaultValue?: string\n\t/** Callback when color changes */\n\tonChange?: (color: string) => void\n\t/** Color format */\n\tformat?: ColorFormat\n\t/** Label for the picker */\n\tlabel?: string\n\t/** Whether the picker is disabled */\n\tdisabled?: boolean\n\t/** Show preset colors */\n\tshowPresets?: boolean\n\t/** Custom preset colors */\n\tpresets?: string[]\n\t/** Show alpha channel */\n\tshowAlpha?: boolean\n\t/** Custom className */\n\tclassName?: string\n\t/** Helper text */\n\thelperText?: string\n\t/** Error message */\n\terror?: string\n}\n\n// Helper functions for color conversion\nconst hexToRgb = (hex: string): { r: number; g: number; b: number } | null => {\n\tconst result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\treturn result\n\t\t? {\n\t\t\t\tr: parseInt(result[1], 16),\n\t\t\t\tg: parseInt(result[2], 16),\n\t\t\t\tb: parseInt(result[3], 16)\n\t\t\t}\n\t\t: null\n}\n\nconst rgbToHex = (r: number, g: number, b: number): string => {\n\treturn '#' + [r, g, b].map((x) => x.toString(16).padStart(2, '0')).join('')\n}\n\nconst rgbToHsl = (r: number, g: number, b: number): { h: number; s: number; l: number } => {\n\tr /= 255\n\tg /= 255\n\tb /= 255\n\tconst max = Math.max(r, g, b)\n\tconst min = Math.min(r, g, b)\n\tlet h = 0\n\tlet s = 0\n\tconst l = (max + min) / 2\n\n\tif (max !== min) {\n\t\tconst d = max - min\n\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n\t\tswitch (max) {\n\t\t\tcase r:\n\t\t\t\th = ((g - b) / d + (g < b ? 6 : 0)) / 6\n\t\t\t\tbreak\n\t\t\tcase g:\n\t\t\t\th = ((b - r) / d + 2) / 6\n\t\t\t\tbreak\n\t\t\tcase b:\n\t\t\t\th = ((r - g) / d + 4) / 6\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\treturn { h: Math.round(h * 360), s: Math.round(s * 100), l: Math.round(l * 100) }\n}\n\nexport function ColorPicker({\n\tvalue: controlledValue,\n\tdefaultValue = '#6366f1',\n\tonChange,\n\tformat = 'hex',\n\tlabel,\n\tdisabled = false,\n\tshowPresets = true,\n\tpresets = ['#ef4444', '#f97316', '#f59e0b', '#84cc16', '#22c55e', '#14b8a6', '#06b6d4', '#3b82f6', '#6366f1', '#8b5cf6', '#a855f7', '#ec4899'],\n\tshowAlpha = false,\n\tclassName = '',\n\thelperText,\n\terror\n}: ColorPickerProps) {\n\tconst [internalValue, setInternalValue] = useState(defaultValue)\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst pickerRef = useRef<HTMLDivElement>(null)\n\n\tconst currentColor = controlledValue !== undefined ? controlledValue : internalValue\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (pickerRef.current && !pickerRef.current.contains(event.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t}\n\t\t}\n\n\t\tif (isOpen) {\n\t\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\t\t}\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleClickOutside)\n\t\t}\n\t}, [isOpen])\n\n\tconst handleColorChange = (newColor: string) => {\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalValue(newColor)\n\t\t}\n\t\tonChange?.(newColor)\n\t}\n\n\tconst formatColor = (color: string): string => {\n\t\tconst rgb = hexToRgb(color)\n\t\tif (!rgb) return color\n\n\t\tswitch (format) {\n\t\t\tcase 'rgb':\n\t\t\t\treturn `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`\n\t\t\tcase 'hsl':\n\t\t\t\tconst hsl = rgbToHsl(rgb.r, rgb.g, rgb.b)\n\t\t\t\treturn `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`\n\t\t\tdefault:\n\t\t\t\treturn color\n\t\t}\n\t}\n\n\tconst containerClasses = [styles.colorPickerContainer, className].filter(Boolean).join(' ')\n\n\treturn (\n\t\t<div className={containerClasses}>\n\t\t\t{label && <label className={styles.label}>{label}</label>}\n\n\t\t\t<div className={styles.inputWrapper} ref={pickerRef}>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={`${styles.colorButton} ${disabled ? styles.disabled : ''}`}\n\t\t\t\t\tonClick={() => !disabled && setIsOpen(!isOpen)}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tstyle={{ backgroundColor: currentColor }}\n\t\t\t\t\taria-label=\"Select color\"\n\t\t\t\t>\n\t\t\t\t\t<span className={styles.colorPreview} style={{ backgroundColor: currentColor }} />\n\t\t\t\t</button>\n\n\t\t\t\t<input\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tclassName={styles.colorInput}\n\t\t\t\t\tvalue={formatColor(currentColor)}\n\t\t\t\t\tonChange={(e) => handleColorChange(e.target.value)}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tplaceholder=\"#000000\"\n\t\t\t\t/>\n\n\t\t\t\t{isOpen && !disabled && (\n\t\t\t\t\t<div className={styles.popover}>\n\t\t\t\t\t\t<div className={styles.pickerContent}>\n\t\t\t\t\t\t\t{/* Native color picker */}\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"color\"\n\t\t\t\t\t\t\t\tclassName={styles.nativeColorPicker}\n\t\t\t\t\t\t\t\tvalue={currentColor}\n\t\t\t\t\t\t\t\tonChange={(e) => handleColorChange(e.target.value)}\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t{/* Preset colors */}\n\t\t\t\t\t\t\t{showPresets && (\n\t\t\t\t\t\t\t\t<div className={styles.presets}>\n\t\t\t\t\t\t\t\t\t<div className={styles.presetsLabel}>Presets</div>\n\t\t\t\t\t\t\t\t\t<div className={styles.presetsGrid}>\n\t\t\t\t\t\t\t\t\t\t{presets.map((preset) => (\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tkey={preset}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={`${styles.presetButton} ${preset === currentColor ? styles.active : ''}`}\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ backgroundColor: preset }}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleColorChange(preset)}\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={`Select ${preset}`}\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</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{/* Quick colors */}\n\t\t\t\t\t\t\t<div className={styles.quickColors}>\n\t\t\t\t\t\t\t\t<div className={styles.quickColorsLabel}>Quick Colors</div>\n\t\t\t\t\t\t\t\t<div className={styles.quickColorsGrid}>\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.quickColorButton}\n\t\t\t\t\t\t\t\t\t\tstyle={{ backgroundColor: '#000000' }}\n\t\t\t\t\t\t\t\t\t\tonClick={() => handleColorChange('#000000')}\n\t\t\t\t\t\t\t\t\t/>\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.quickColorButton}\n\t\t\t\t\t\t\t\t\t\tstyle={{ backgroundColor: '#ffffff' }}\n\t\t\t\t\t\t\t\t\t\tonClick={() => handleColorChange('#ffffff')}\n\t\t\t\t\t\t\t\t\t/>\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.quickColorButton}\n\t\t\t\t\t\t\t\t\t\tstyle={{ backgroundColor: '#808080' }}\n\t\t\t\t\t\t\t\t\t\tonClick={() => handleColorChange('#808080')}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{(error || helperText) && (\n\t\t\t\t<span className={`${styles.helperText} ${error ? styles.errorText : ''}`}>{error || helperText}</span>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React, { useState, useEffect, useRef } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface ContextMenuItem {\n\t/** Unique identifier */\n\tid: string\n\t/** Label to display */\n\tlabel: string\n\t/** Icon element */\n\ticon?: React.ReactNode\n\t/** Callback when item is clicked */\n\tonClick?: () => void\n\t/** Whether the item is disabled */\n\tdisabled?: boolean\n\t/** Separator after this item */\n\tseparator?: boolean\n\t/** Keyboard shortcut to display */\n\tshortcut?: string\n\t/** Danger variant (red styling) */\n\tdanger?: boolean\n\t/** Submenu items */\n\tsubmenu?: ContextMenuItem[]\n}\n\nexport interface ContextMenuProps {\n\t/** Menu items */\n\titems: ContextMenuItem[]\n\t/** Trigger element */\n\tchildren: React.ReactNode\n\t/** Custom className */\n\tclassName?: string\n\t/** Disabled state */\n\tdisabled?: boolean\n}\n\nexport function ContextMenu({ items, children, className = '', disabled = false }: ContextMenuProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [position, setPosition] = useState({ x: 0, y: 0 })\n\tconst [submenuStates, setSubmenuStates] = useState<Record<string, boolean>>({})\n\tconst menuRef = useRef<HTMLDivElement>(null)\n\tconst triggerRef = useRef<HTMLDivElement>(null)\n\n\tconst handleContextMenu = (e: React.MouseEvent) => {\n\t\tif (disabled) return\n\n\t\te.preventDefault()\n\t\te.stopPropagation()\n\n\t\t// Calculate position\n\t\tconst x = e.clientX\n\t\tconst y = e.clientY\n\n\t\t// Adjust if menu would go off screen\n\t\tconst menuWidth = 240\n\t\tconst menuHeight = items.length * 40 + 16 // Approximate\n\t\tconst viewportWidth = window.innerWidth\n\t\tconst viewportHeight = window.innerHeight\n\n\t\tconst adjustedX = x + menuWidth > viewportWidth ? viewportWidth - menuWidth - 10 : x\n\t\tconst adjustedY = y + menuHeight > viewportHeight ? viewportHeight - menuHeight - 10 : y\n\n\t\tsetPosition({ x: adjustedX, y: adjustedY })\n\t\tsetIsOpen(true)\n\t}\n\n\tconst handleClickOutside = (e: MouseEvent) => {\n\t\tif (\n\t\t\tmenuRef.current &&\n\t\t\t!menuRef.current.contains(e.target as Node) &&\n\t\t\ttriggerRef.current &&\n\t\t\t!triggerRef.current.contains(e.target as Node)\n\t\t) {\n\t\t\tsetIsOpen(false)\n\t\t\tsetSubmenuStates({})\n\t\t}\n\t}\n\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\t\t\tdocument.addEventListener('contextmenu', handleClickOutside)\n\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener('mousedown', handleClickOutside)\n\t\t\t\tdocument.removeEventListener('contextmenu', handleClickOutside)\n\t\t\t}\n\t\t}\n\t}, [isOpen])\n\n\tconst handleItemClick = (item: ContextMenuItem) => {\n\t\tif (item.disabled) return\n\n\t\tif (item.submenu) {\n\t\t\tsetSubmenuStates((prev) => ({ ...prev, [item.id]: !prev[item.id] }))\n\t\t} else {\n\t\t\titem.onClick?.()\n\t\t\tsetIsOpen(false)\n\t\t\tsetSubmenuStates({})\n\t\t}\n\t}\n\n\tconst handleSubmenuMouseEnter = (itemId: string) => {\n\t\tsetSubmenuStates((prev) => ({ ...prev, [itemId]: true }))\n\t}\n\n\tconst handleSubmenuMouseLeave = (itemId: string) => {\n\t\tsetSubmenuStates((prev) => ({ ...prev, [itemId]: false }))\n\t}\n\n\tconst renderMenuItem = (item: ContextMenuItem, depth = 0) => {\n\t\tconst hasSubmenu = item.submenu && item.submenu.length > 0\n\t\tconst isSubmenuOpen = submenuStates[item.id]\n\n\t\treturn (\n\t\t\t<React.Fragment key={item.id}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${styles.menuItem} ${item.disabled ? styles.disabled : ''} ${item.danger ? styles.danger : ''}`}\n\t\t\t\t\tonClick={() => handleItemClick(item)}\n\t\t\t\t\tonMouseEnter={() => hasSubmenu && handleSubmenuMouseEnter(item.id)}\n\t\t\t\t\tonMouseLeave={() => hasSubmenu && handleSubmenuMouseLeave(item.id)}\n\t\t\t\t\tstyle={{ paddingLeft: `${0.75 + depth * 0.5}rem` }}\n\t\t\t\t>\n\t\t\t\t\t<div className={styles.menuItemContent}>\n\t\t\t\t\t\t{item.icon && <span className={styles.icon}>{item.icon}</span>}\n\t\t\t\t\t\t<span className={styles.label}>{item.label}</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className={styles.menuItemRight}>\n\t\t\t\t\t\t{item.shortcut && <span className={styles.shortcut}>{item.shortcut}</span>}\n\t\t\t\t\t\t{hasSubmenu && <span className={styles.submenuIndicator}>›</span>}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{hasSubmenu && isSubmenuOpen && (\n\t\t\t\t\t\t<div className={styles.submenu}>\n\t\t\t\t\t\t\t{item.submenu!.map((subItem) => renderMenuItem(subItem, depth + 1))}\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{item.separator && <div className={styles.separator} />}\n\t\t\t</React.Fragment>\n\t\t)\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={triggerRef}\n\t\t\t\tonContextMenu={handleContextMenu}\n\t\t\t\tclassName={className}\n\t\t\t\tstyle={{ display: 'inline-block' }}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\n\t\t\t{isOpen && (\n\t\t\t\t<div\n\t\t\t\t\tref={menuRef}\n\t\t\t\t\tclassName={styles.contextMenu}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tleft: `${position.x}px`,\n\t\t\t\t\t\ttop: `${position.y}px`\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{items.map((item) => renderMenuItem(item))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type DataListOrientation = 'horizontal' | 'vertical'\nexport type DataListSize = 'sm' | 'md' | 'lg'\n\nexport interface DataListItem {\n\t/** Unique identifier */\n\tid: string\n\t/** Label/key to display */\n\tlabel: string\n\t/** Value to display */\n\tvalue: React.ReactNode\n\t/** Optional icon */\n\ticon?: React.ReactNode\n\t/** Optional help text for the label */\n\thelpText?: string\n\t/** Custom className for the item */\n\tclassName?: string\n\t/** Highlight this item */\n\thighlight?: boolean\n\t/** Make the value copyable */\n\tcopyable?: boolean\n}\n\nexport interface DataListProps {\n\t/** List of items to display */\n\titems: DataListItem[]\n\t/** Orientation of the list */\n\torientation?: DataListOrientation\n\t/** Size variant */\n\tsize?: DataListSize\n\t/** Show dividers between items */\n\tdividers?: boolean\n\t/** Make labels bold */\n\tboldLabels?: boolean\n\t/** Custom className */\n\tclassName?: string\n\t/** Custom label width (for horizontal orientation) */\n\tlabelWidth?: string\n\t/** Striped rows */\n\tstriped?: boolean\n\t/** Callback when a copyable value is copied */\n\tonCopy?: (item: DataListItem) => void\n}\n\nexport function DataList({\n\titems,\n\torientation = 'horizontal',\n\tsize = 'md',\n\tdividers = true,\n\tboldLabels = true,\n\tclassName = '',\n\tlabelWidth,\n\tstriped = false,\n\tonCopy\n}: DataListProps) {\n\tconst handleCopy = async (item: DataListItem) => {\n\t\tif (!item.copyable || typeof item.value !== 'string') return\n\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(item.value as string)\n\t\t\tonCopy?.(item)\n\t\t} catch (err) {\n\t\t\tconsole.error('Failed to copy:', err)\n\t\t}\n\t}\n\n\treturn (\n\t\t<dl\n\t\t\tclassName={`${styles.dataList} ${styles[orientation]} ${styles[size]} ${dividers ? styles.dividers : ''} ${striped ? styles.striped : ''} ${className}`}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t'--label-width': labelWidth\n\t\t\t\t} as React.CSSProperties\n\t\t\t}\n\t\t>\n\t\t\t{items.map((item, index) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\tclassName={`${styles.item} ${item.highlight ? styles.highlight : ''} ${item.className || ''}`}\n\t\t\t\t>\n\t\t\t\t\t<dt className={`${styles.label} ${boldLabels ? styles.bold : ''}`}>\n\t\t\t\t\t\t{item.icon && <span className={styles.icon}>{item.icon}</span>}\n\t\t\t\t\t\t<span className={styles.labelText}>\n\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t{item.helpText && (\n\t\t\t\t\t\t\t\t<span className={styles.helpText} title={item.helpText}>\n\t\t\t\t\t\t\t\t\t?\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</span>\n\t\t\t\t\t</dt>\n\t\t\t\t\t<dd className={styles.value}>\n\t\t\t\t\t\t<span className={styles.valueContent}>{item.value}</span>\n\t\t\t\t\t\t{item.copyable && (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tclassName={styles.copyButton}\n\t\t\t\t\t\t\t\tonClick={() => handleCopy(item)}\n\t\t\t\t\t\t\t\taria-label=\"Copy value\"\n\t\t\t\t\t\t\t\ttitle=\"Copy to clipboard\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\td=\"M5.5 2.5h-2a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-2m-5-8h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1z\"\n\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\tstrokeWidth=\"1.5\"\n\t\t\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</dd>\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</dl>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type StatCardVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info'\nexport type StatCardSize = 'sm' | 'md' | 'lg'\nexport type TrendDirection = 'up' | 'down' | 'neutral'\n\nexport interface StatCardProps {\n\t/** Main statistic value */\n\tvalue: string | number\n\t/** Label for the statistic */\n\tlabel: string\n\t/** Optional icon */\n\ticon?: React.ReactNode\n\t/** Color variant */\n\tvariant?: StatCardVariant\n\t/** Size variant */\n\tsize?: StatCardSize\n\t/** Change amount (e.g., \"+12.5%\") */\n\tchange?: string\n\t/** Trend direction */\n\ttrend?: TrendDirection\n\t/** Description or additional info */\n\tdescription?: string\n\t/** Footer content */\n\tfooter?: React.ReactNode\n\t/** Loading state */\n\tloading?: boolean\n\t/** Custom className */\n\tclassName?: string\n\t/** Click handler */\n\tonClick?: () => void\n\t/** Show border */\n\tbordered?: boolean\n\t/** Prefix for the value (e.g., \"$\", \"€\") */\n\tprefix?: string\n\t/** Suffix for the value (e.g., \"%\", \"ms\") */\n\tsuffix?: string\n}\n\nexport function StatCard({\n\tvalue,\n\tlabel,\n\ticon,\n\tvariant = 'default',\n\tsize = 'md',\n\tchange,\n\ttrend,\n\tdescription,\n\tfooter,\n\tloading = false,\n\tclassName = '',\n\tonClick,\n\tbordered = false,\n\tprefix,\n\tsuffix\n}: StatCardProps) {\n\tconst isClickable = !!onClick\n\n\tconst renderValue = () => {\n\t\tif (loading) {\n\t\t\treturn (\n\t\t\t\t<div className={styles.loadingSkeleton}>\n\t\t\t\t\t<div className={styles.skeletonValue} />\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\n\t\treturn (\n\t\t\t<div className={styles.valueContainer}>\n\t\t\t\t{prefix && <span className={styles.prefix}>{prefix}</span>}\n\t\t\t\t<span className={styles.value}>{value}</span>\n\t\t\t\t{suffix && <span className={styles.suffix}>{suffix}</span>}\n\t\t\t</div>\n\t\t)\n\t}\n\n\tconst renderTrend = () => {\n\t\tif (!change && !trend) return null\n\n\t\tconst trendClass = trend\n\t\t\t? styles[`trend-${trend}`]\n\t\t\t: change?.startsWith('+') || change?.startsWith('↑')\n\t\t\t\t? styles['trend-up']\n\t\t\t\t: change?.startsWith('-') || change?.startsWith('↓')\n\t\t\t\t\t? styles['trend-down']\n\t\t\t\t\t: styles['trend-neutral']\n\n\t\treturn (\n\t\t\t<div className={`${styles.changeContainer} ${trendClass}`}>\n\t\t\t\t{trend === 'up' && !change?.includes('↑') && !change?.includes('▲') && (\n\t\t\t\t\t<span className={styles.trendIcon}>↑</span>\n\t\t\t\t)}\n\t\t\t\t{trend === 'down' && !change?.includes('↓') && !change?.includes('▼') && (\n\t\t\t\t\t<span className={styles.trendIcon}>↓</span>\n\t\t\t\t)}\n\t\t\t\t{trend === 'neutral' && !change?.includes('→') && (\n\t\t\t\t\t<span className={styles.trendIcon}>→</span>\n\t\t\t\t)}\n\t\t\t\t{change && <span className={styles.change}>{change}</span>}\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`${styles.statCard} ${styles[variant]} ${styles[size]} ${isClickable ? styles.clickable : ''} ${bordered ? styles.bordered : ''} ${loading ? styles.loading : ''} ${className}`}\n\t\t\tonClick={onClick}\n\t\t\trole={isClickable ? 'button' : undefined}\n\t\t\ttabIndex={isClickable ? 0 : undefined}\n\t\t\tonKeyDown={\n\t\t\t\tisClickable\n\t\t\t\t\t? (e) => {\n\t\t\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\tonClick?.()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t>\n\t\t\t<div className={styles.header}>\n\t\t\t\t<div className={styles.labelContainer}>\n\t\t\t\t\t{icon && <span className={styles.icon}>{icon}</span>}\n\t\t\t\t\t<span className={styles.label}>{label}</span>\n\t\t\t\t</div>\n\t\t\t\t{renderTrend()}\n\t\t\t</div>\n\n\t\t\t<div className={styles.content}>\n\t\t\t\t{renderValue()}\n\t\t\t\t{description && !loading && <p className={styles.description}>{description}</p>}\n\t\t\t\t{loading && description && (\n\t\t\t\t\t<div className={styles.loadingSkeleton}>\n\t\t\t\t\t\t<div className={styles.skeletonDescription} />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{footer && !loading && <div className={styles.footer}>{footer}</div>}\n\t\t</div>\n\t)\n}\n","import React, { useState, useRef, useEffect, useCallback } from 'react'\nimport styles from './styles.module.scss'\n\nexport type SplitDirection = 'horizontal' | 'vertical'\n\nexport interface SplitProps {\n\t/** Direction of the split */\n\tdirection?: SplitDirection\n\t/** Initial size of the first pane (in percentage, 0-100) */\n\tinitialSize?: number\n\t/** Minimum size of the first pane (in pixels) */\n\tminSize?: number\n\t/** Maximum size of the first pane (in pixels) */\n\tmaxSize?: number\n\t/** First pane content */\n\tchildren: [React.ReactNode, React.ReactNode]\n\t/** Callback when size changes */\n\tonResize?: (size: number) => void\n\t/** Custom className */\n\tclassName?: string\n\t/** Disable resizing */\n\tdisabled?: boolean\n\t/** Show snap guides at common positions */\n\tsnapPositions?: number[]\n\t/** Snap threshold in pixels */\n\tsnapThreshold?: number\n\t/** Gutter size in pixels */\n\tgutterSize?: number\n}\n\nexport function Split({\n\tdirection = 'horizontal',\n\tinitialSize = 50,\n\tminSize = 100,\n\tmaxSize,\n\tchildren,\n\tonResize,\n\tclassName = '',\n\tdisabled = false,\n\tsnapPositions = [],\n\tsnapThreshold = 20,\n\tgutterSize = 8\n}: SplitProps) {\n\tconst [size, setSize] = useState(initialSize)\n\tconst [isDragging, setIsDragging] = useState(false)\n\tconst containerRef = useRef<HTMLDivElement>(null)\n\tconst startPositionRef = useRef<number>(0)\n\tconst startSizeRef = useRef<number>(0)\n\n\tconst isHorizontal = direction === 'horizontal'\n\n\tconst handleMouseDown = (e: React.MouseEvent) => {\n\t\tif (disabled) return\n\n\t\te.preventDefault()\n\t\tsetIsDragging(true)\n\t\tstartPositionRef.current = isHorizontal ? e.clientX : e.clientY\n\t\tstartSizeRef.current = size\n\t}\n\n\tconst handleMouseMove = useCallback(\n\t\t(e: MouseEvent) => {\n\t\t\tif (!isDragging || !containerRef.current) return\n\n\t\t\tconst container = containerRef.current\n\t\t\tconst containerRect = container.getBoundingClientRect()\n\t\t\tconst containerSize = isHorizontal ? containerRect.width : containerRect.height\n\t\t\tconst currentPosition = isHorizontal ? e.clientX : e.clientY\n\t\t\tconst startPosition = isHorizontal ? containerRect.left : containerRect.top\n\n\t\t\t// Calculate the new size as a percentage\n\t\t\tconst delta = currentPosition - startPositionRef.current\n\t\t\tconst deltaPercentage = (delta / containerSize) * 100\n\t\t\tlet newSize = startSizeRef.current + deltaPercentage\n\n\t\t\t// Apply min/max constraints\n\t\t\tconst minPercentage = (minSize / containerSize) * 100\n\t\t\tlet maxPercentage = 100 - minPercentage\n\n\t\t\tif (maxSize) {\n\t\t\t\tmaxPercentage = Math.min(maxPercentage, (maxSize / containerSize) * 100)\n\t\t\t}\n\n\t\t\tnewSize = Math.max(minPercentage, Math.min(maxPercentage, newSize))\n\n\t\t\t// Apply snap positions\n\t\t\tif (snapPositions.length > 0) {\n\t\t\t\tfor (const snapPos of snapPositions) {\n\t\t\t\t\tconst snapPixels = (snapPos / 100) * containerSize\n\t\t\t\t\tconst currentPixels = (newSize / 100) * containerSize\n\t\t\t\t\tconst diff = Math.abs(currentPixels - snapPixels)\n\n\t\t\t\t\tif (diff < snapThreshold) {\n\t\t\t\t\t\tnewSize = snapPos\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetSize(newSize)\n\t\t\tonResize?.(newSize)\n\t\t},\n\t\t[isDragging, isHorizontal, minSize, maxSize, snapPositions, snapThreshold, onResize]\n\t)\n\n\tconst handleMouseUp = useCallback(() => {\n\t\tif (isDragging) {\n\t\t\tsetIsDragging(false)\n\t\t}\n\t}, [isDragging])\n\n\tuseEffect(() => {\n\t\tif (isDragging) {\n\t\t\tdocument.addEventListener('mousemove', handleMouseMove)\n\t\t\tdocument.addEventListener('mouseup', handleMouseUp)\n\n\t\t\t// Prevent text selection while dragging\n\t\t\tdocument.body.style.userSelect = 'none'\n\t\t\tdocument.body.style.cursor = isHorizontal ? 'col-resize' : 'row-resize'\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\tdocument.body.style.userSelect = ''\n\t\t\t\tdocument.body.style.cursor = ''\n\t\t\t}\n\t\t}\n\t}, [isDragging, handleMouseMove, handleMouseUp, isHorizontal])\n\n\t// Handle touch events for mobile\n\tconst handleTouchStart = (e: React.TouchEvent) => {\n\t\tif (disabled) return\n\n\t\te.preventDefault()\n\t\tsetIsDragging(true)\n\t\tconst touch = e.touches[0]\n\t\tstartPositionRef.current = isHorizontal ? touch.clientX : touch.clientY\n\t\tstartSizeRef.current = size\n\t}\n\n\tconst handleTouchMove = useCallback(\n\t\t(e: TouchEvent) => {\n\t\t\tif (!isDragging || !containerRef.current) return\n\n\t\t\tconst touch = e.touches[0]\n\t\t\tconst container = containerRef.current\n\t\t\tconst containerRect = container.getBoundingClientRect()\n\t\t\tconst containerSize = isHorizontal ? containerRect.width : containerRect.height\n\t\t\tconst currentPosition = isHorizontal ? touch.clientX : touch.clientY\n\n\t\t\tconst delta = currentPosition - startPositionRef.current\n\t\t\tconst deltaPercentage = (delta / containerSize) * 100\n\t\t\tlet newSize = startSizeRef.current + deltaPercentage\n\n\t\t\tconst minPercentage = (minSize / containerSize) * 100\n\t\t\tlet maxPercentage = 100 - minPercentage\n\n\t\t\tif (maxSize) {\n\t\t\t\tmaxPercentage = Math.min(maxPercentage, (maxSize / containerSize) * 100)\n\t\t\t}\n\n\t\t\tnewSize = Math.max(minPercentage, Math.min(maxPercentage, newSize))\n\n\t\t\tif (snapPositions.length > 0) {\n\t\t\t\tfor (const snapPos of snapPositions) {\n\t\t\t\t\tconst snapPixels = (snapPos / 100) * containerSize\n\t\t\t\t\tconst currentPixels = (newSize / 100) * containerSize\n\t\t\t\t\tconst diff = Math.abs(currentPixels - snapPixels)\n\n\t\t\t\t\tif (diff < snapThreshold) {\n\t\t\t\t\t\tnewSize = snapPos\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetSize(newSize)\n\t\t\tonResize?.(newSize)\n\t\t},\n\t\t[isDragging, isHorizontal, minSize, maxSize, snapPositions, snapThreshold, onResize]\n\t)\n\n\tconst handleTouchEnd = useCallback(() => {\n\t\tif (isDragging) {\n\t\t\tsetIsDragging(false)\n\t\t}\n\t}, [isDragging])\n\n\tuseEffect(() => {\n\t\tif (isDragging) {\n\t\t\tdocument.addEventListener('touchmove', handleTouchMove)\n\t\t\tdocument.addEventListener('touchend', handleTouchEnd)\n\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener('touchmove', handleTouchMove)\n\t\t\t\tdocument.removeEventListener('touchend', handleTouchEnd)\n\t\t\t}\n\t\t}\n\t}, [isDragging, handleTouchMove, handleTouchEnd])\n\n\tconst [firstPane, secondPane] = children\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tclassName={`${styles.split} ${styles[direction]} ${isDragging ? styles.dragging : ''} ${disabled ? styles.disabled : ''} ${className}`}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={styles.pane}\n\t\t\t\tstyle={{\n\t\t\t\t\t[isHorizontal ? 'width' : 'height']: `${size}%`\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{firstPane}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={styles.gutter}\n\t\t\t\tstyle={{\n\t\t\t\t\t[isHorizontal ? 'width' : 'height']: `${gutterSize}px`\n\t\t\t\t}}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonTouchStart={handleTouchStart}\n\t\t\t\trole=\"separator\"\n\t\t\t\taria-orientation={direction}\n\t\t\t\taria-valuenow={size}\n\t\t\t\taria-valuemin={minSize}\n\t\t\t\taria-valuemax={maxSize || 100}\n\t\t\t>\n\t\t\t\t<div className={styles.gutterHandle} />\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={styles.pane}\n\t\t\t\tstyle={{\n\t\t\t\t\tflex: 1\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{secondPane}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React, { useState, useEffect, useCallback, useRef } from 'react'\nimport styles from './styles.module.scss'\n\nexport type ImageGalleryVariant = 'carousel' | 'grid' | 'masonry'\nexport type ImageGallerySize = 'sm' | 'md' | 'lg'\n\nexport interface GalleryImage {\n\t/** Unique identifier */\n\tid: string\n\t/** Image source URL */\n\tsrc: string\n\t/** Alt text for accessibility */\n\talt: string\n\t/** Optional caption */\n\tcaption?: string\n\t/** Optional thumbnail (for performance) */\n\tthumbnail?: string\n\t/** Optional title */\n\ttitle?: string\n}\n\nexport interface ImageGalleryProps {\n\t/** Array of images to display */\n\timages: GalleryImage[]\n\t/** Gallery variant */\n\tvariant?: ImageGalleryVariant\n\t/** Size variant */\n\tsize?: ImageGallerySize\n\t/** Initial image index (for carousel) */\n\tinitialIndex?: number\n\t/** Show thumbnails (carousel only) */\n\tshowThumbnails?: boolean\n\t/** Show captions */\n\tshowCaptions?: boolean\n\t/** Auto-play interval in ms (carousel only, 0 to disable) */\n\tautoPlay?: number\n\t/** Grid columns (grid/masonry only) */\n\tcolumns?: number\n\t/** Gap between images */\n\tgap?: number\n\t/** Enable lightbox on click */\n\tlightbox?: boolean\n\t/** Custom className */\n\tclassName?: string\n\t/** Callback when image is clicked */\n\tonImageClick?: (image: GalleryImage, index: number) => void\n\t/** Callback when current index changes (carousel only) */\n\tonIndexChange?: (index: number) => void\n\t/** Show navigation arrows */\n\tshowArrows?: boolean\n\t/** Show indicators/dots */\n\tshowIndicators?: boolean\n\t/** Enable infinite loop */\n\tinfinite?: boolean\n}\n\nexport function ImageGallery({\n\timages,\n\tvariant = 'carousel',\n\tsize = 'md',\n\tinitialIndex = 0,\n\tshowThumbnails = false,\n\tshowCaptions = true,\n\tautoPlay = 0,\n\tcolumns = 3,\n\tgap = 16,\n\tlightbox = true,\n\tclassName = '',\n\tonImageClick,\n\tonIndexChange,\n\tshowArrows = true,\n\tshowIndicators = true,\n\tinfinite = true\n}: ImageGalleryProps) {\n\tconst [currentIndex, setCurrentIndex] = useState(initialIndex)\n\tconst [lightboxOpen, setLightboxOpen] = useState(false)\n\tconst [lightboxIndex, setLightboxIndex] = useState(0)\n\tconst [isTransitioning, setIsTransitioning] = useState(false)\n\tconst autoPlayTimerRef = useRef<NodeJS.Timeout>()\n\n\tconst handlePrevious = useCallback(() => {\n\t\tif (isTransitioning) return\n\t\tsetIsTransitioning(true)\n\t\tsetCurrentIndex((prev) => {\n\t\t\tconst newIndex = prev === 0 ? (infinite ? images.length - 1 : 0) : prev - 1\n\t\t\tonIndexChange?.(newIndex)\n\t\t\treturn newIndex\n\t\t})\n\t\tsetTimeout(() => setIsTransitioning(false), 300)\n\t}, [images.length, infinite, onIndexChange, isTransitioning])\n\n\tconst handleNext = useCallback(() => {\n\t\tif (isTransitioning) return\n\t\tsetIsTransitioning(true)\n\t\tsetCurrentIndex((prev) => {\n\t\t\tconst newIndex = prev === images.length - 1 ? (infinite ? 0 : images.length - 1) : prev + 1\n\t\t\tonIndexChange?.(newIndex)\n\t\t\treturn newIndex\n\t\t})\n\t\tsetTimeout(() => setIsTransitioning(false), 300)\n\t}, [images.length, infinite, onIndexChange, isTransitioning])\n\n\tconst handleImageClick = (image: GalleryImage, index: number) => {\n\t\tonImageClick?.(image, index)\n\t\tif (lightbox) {\n\t\t\tsetLightboxIndex(index)\n\t\t\tsetLightboxOpen(true)\n\t\t}\n\t}\n\n\tconst handleThumbnailClick = (index: number) => {\n\t\tsetCurrentIndex(index)\n\t\tonIndexChange?.(index)\n\t}\n\n\tconst closeLightbox = () => {\n\t\tsetLightboxOpen(false)\n\t}\n\n\tconst handleLightboxPrevious = () => {\n\t\tsetLightboxIndex((prev) => (prev === 0 ? images.length - 1 : prev - 1))\n\t}\n\n\tconst handleLightboxNext = () => {\n\t\tsetLightboxIndex((prev) => (prev === images.length - 1 ? 0 : prev + 1))\n\t}\n\n\t// Auto-play functionality\n\tuseEffect(() => {\n\t\tif (variant === 'carousel' && autoPlay > 0) {\n\t\t\tautoPlayTimerRef.current = setInterval(() => {\n\t\t\t\thandleNext()\n\t\t\t}, autoPlay)\n\n\t\t\treturn () => {\n\t\t\t\tif (autoPlayTimerRef.current) {\n\t\t\t\t\tclearInterval(autoPlayTimerRef.current)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [variant, autoPlay, handleNext])\n\n\t// Keyboard navigation\n\tuseEffect(() => {\n\t\tconst handleKeyDown = (e: KeyboardEvent) => {\n\t\t\tif (lightboxOpen) {\n\t\t\t\tif (e.key === 'Escape') closeLightbox()\n\t\t\t\tif (e.key === 'ArrowLeft') handleLightboxPrevious()\n\t\t\t\tif (e.key === 'ArrowRight') handleLightboxNext()\n\t\t\t} else if (variant === 'carousel') {\n\t\t\t\tif (e.key === 'ArrowLeft') handlePrevious()\n\t\t\t\tif (e.key === 'ArrowRight') handleNext()\n\t\t\t}\n\t\t}\n\n\t\tdocument.addEventListener('keydown', handleKeyDown)\n\t\treturn () => document.removeEventListener('keydown', handleKeyDown)\n\t}, [lightboxOpen, variant, handlePrevious, handleNext])\n\n\tconst renderCarousel = () => (\n\t\t<div className={styles.carouselContainer}>\n\t\t\t<div className={styles.carouselMain}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={styles.carouselTrack}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\ttransform: `translateX(-${currentIndex * 100}%)`\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{images.map((image, index) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={image.id}\n\t\t\t\t\t\t\tclassName={styles.carouselSlide}\n\t\t\t\t\t\t\tonClick={() => handleImageClick(image, index)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<img src={image.src} alt={image.alt} className={styles.carouselImage} />\n\t\t\t\t\t\t\t{showCaptions && image.caption && (\n\t\t\t\t\t\t\t\t<div className={styles.caption}>{image.caption}</div>\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{showArrows && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName={`${styles.arrow} ${styles.arrowLeft}`}\n\t\t\t\t\t\t\tonClick={handlePrevious}\n\t\t\t\t\t\t\taria-label=\"Previous image\"\n\t\t\t\t\t\t\tdisabled={!infinite && currentIndex === 0}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t‹\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName={`${styles.arrow} ${styles.arrowRight}`}\n\t\t\t\t\t\t\tonClick={handleNext}\n\t\t\t\t\t\t\taria-label=\"Next image\"\n\t\t\t\t\t\t\tdisabled={!infinite && currentIndex === images.length - 1}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t›\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{showIndicators && (\n\t\t\t\t<div className={styles.indicators}>\n\t\t\t\t\t{images.map((_, index) => (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tclassName={`${styles.indicator} ${index === currentIndex ? styles.active : ''}`}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetCurrentIndex(index)\n\t\t\t\t\t\t\t\tonIndexChange?.(index)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-label={`Go to image ${index + 1}`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{showThumbnails && (\n\t\t\t\t<div className={styles.thumbnails}>\n\t\t\t\t\t{images.map((image, index) => (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tkey={image.id}\n\t\t\t\t\t\t\tclassName={`${styles.thumbnail} ${index === currentIndex ? styles.active : ''}`}\n\t\t\t\t\t\t\tonClick={() => handleThumbnailClick(index)}\n\t\t\t\t\t\t\taria-label={`Select image ${index + 1}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<img src={image.thumbnail || image.src} alt={image.alt} />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n\n\tconst renderGrid = () => (\n\t\t<div\n\t\t\tclassName={styles.grid}\n\t\t\tstyle={{\n\t\t\t\tgridTemplateColumns: `repeat(${columns}, 1fr)`,\n\t\t\t\tgap: `${gap}px`\n\t\t\t}}\n\t\t>\n\t\t\t{images.map((image, index) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={image.id}\n\t\t\t\t\tclassName={styles.gridItem}\n\t\t\t\t\tonClick={() => handleImageClick(image, index)}\n\t\t\t\t>\n\t\t\t\t\t<img src={image.thumbnail || image.src} alt={image.alt} />\n\t\t\t\t\t{showCaptions && (image.caption || image.title) && (\n\t\t\t\t\t\t<div className={styles.gridOverlay}>\n\t\t\t\t\t\t\t{image.title && <div className={styles.gridTitle}>{image.title}</div>}\n\t\t\t\t\t\t\t{image.caption && <div className={styles.gridCaption}>{image.caption}</div>}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t)\n\n\tconst renderMasonry = () => (\n\t\t<div\n\t\t\tclassName={styles.masonry}\n\t\t\tstyle={{\n\t\t\t\tcolumnCount: columns,\n\t\t\t\tcolumnGap: `${gap}px`\n\t\t\t}}\n\t\t>\n\t\t\t{images.map((image, index) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={image.id}\n\t\t\t\t\tclassName={styles.masonryItem}\n\t\t\t\t\tstyle={{ marginBottom: `${gap}px` }}\n\t\t\t\t\tonClick={() => handleImageClick(image, index)}\n\t\t\t\t>\n\t\t\t\t\t<img src={image.thumbnail || image.src} alt={image.alt} />\n\t\t\t\t\t{showCaptions && (image.caption || image.title) && (\n\t\t\t\t\t\t<div className={styles.masonryOverlay}>\n\t\t\t\t\t\t\t{image.title && <div className={styles.masonryTitle}>{image.title}</div>}\n\t\t\t\t\t\t\t{image.caption && <div className={styles.masonryCaption}>{image.caption}</div>}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t)\n\n\tconst renderLightbox = () => {\n\t\tif (!lightboxOpen) return null\n\n\t\tconst currentImage = images[lightboxIndex]\n\n\t\treturn (\n\t\t\t<div className={styles.lightbox} onClick={closeLightbox}>\n\t\t\t\t<button className={styles.lightboxClose} onClick={closeLightbox} aria-label=\"Close lightbox\">\n\t\t\t\t\t×\n\t\t\t\t</button>\n\n\t\t\t\t<button\n\t\t\t\t\tclassName={`${styles.lightboxArrow} ${styles.lightboxArrowLeft}`}\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\thandleLightboxPrevious()\n\t\t\t\t\t}}\n\t\t\t\t\taria-label=\"Previous image\"\n\t\t\t\t>\n\t\t\t\t\t‹\n\t\t\t\t</button>\n\n\t\t\t\t<div className={styles.lightboxContent} onClick={(e) => e.stopPropagation()}>\n\t\t\t\t\t<img src={currentImage.src} alt={currentImage.alt} />\n\t\t\t\t\t{(currentImage.caption || currentImage.title) && (\n\t\t\t\t\t\t<div className={styles.lightboxCaption}>\n\t\t\t\t\t\t\t{currentImage.title && <div className={styles.lightboxTitle}>{currentImage.title}</div>}\n\t\t\t\t\t\t\t{currentImage.caption && <div>{currentImage.caption}</div>}\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<button\n\t\t\t\t\tclassName={`${styles.lightboxArrow} ${styles.lightboxArrowRight}`}\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\thandleLightboxNext()\n\t\t\t\t\t}}\n\t\t\t\t\taria-label=\"Next image\"\n\t\t\t\t>\n\t\t\t\t\t›\n\t\t\t\t</button>\n\n\t\t\t\t<div className={styles.lightboxCounter}>\n\t\t\t\t\t{lightboxIndex + 1} / {images.length}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn (\n\t\t<div className={`${styles.imageGallery} ${styles[variant]} ${styles[size]} ${className}`}>\n\t\t\t{variant === 'carousel' && renderCarousel()}\n\t\t\t{variant === 'grid' && renderGrid()}\n\t\t\t{variant === 'masonry' && renderMasonry()}\n\t\t\t{renderLightbox()}\n\t\t</div>\n\t)\n}\n"],"names":["Accordion","items","allowMultiple","defaultOpenIds","className","openIds","setOpenIds","useState","toggleItem","id","prev","newSet","jsx","styles","item","AccordionItem","isOpen","onToggle","jsxs","Alert","variant","title","message","dismissible","onDismiss","icons","Avatar","src","alt","initials","size","status","getInitials","words","Badge","children","dot","Breadcrumbs","separator","index","isLast","Button","fullWidth","loading","disabled","props","ButtonGroup","orientation","Card","subtitle","footer","image","hoverable","onClick","isClickable","Checkbox","label","indeterminate","checkboxRef","React","Combobox","options","controlledValue","defaultValue","onChange","placeholder","allowCustomValue","filterFunction","inputValue","setInputValue","setIsOpen","highlightedIndex","setHighlightedIndex","inputRef","useRef","listRef","wrapperRef","isControlled","currentValue","filterFunc","option","searchTerm","filteredOptions","useEffect","handleClickOutside","e","highlightedElement","handleInputChange","newValue","handleOptionClick","handleKeyDown","maxIndex","nextIndex","prevIndex","handleInputFocus","selectedOption","opt","displayValue","Datagrid","columns","data","onRowClick","striped","column","row","rowIndex","DatePicker","value","minDate","maxDate","formatDate","handleChange","dateValue","date","year","month","day","DateRangePicker","startValue","setStartValue","endValue","setEndValue","handleStartChange","startDate","endDate","handleEndChange","Divider","dividerClass","Dropdown","selectedValue","setSelectedValue","dropdownRef","event","handleSelect","optionValue","displayText","FilePicker","accept","multiple","maxSize","onUpload","files","setFiles","handleFileSelect","selectedFiles","newFiles","file","fileItem","processFile","updateFileStatus","error","fileName","f","removeFile","getStatusIcon","Header","logo","actions","sticky","Input","forwardRef","helperText","icon","ref","finalVariant","containerClass","inputClass","Label","required","List","dividers","Modal","onClose","closeOnOverlayClick","showCloseButton","handleEscape","Pagination","currentPage","totalPages","onPageChange","showFirstLast","siblingCount","range","start","end","_","i","paginationRange","totalPageNumbers","leftSiblingIndex","rightSiblingIndex","showLeftDots","showRightDots","handlePrevious","handleNext","pageNumber","ProgressBar","max","showLabel","animated","percentage","displayLabel","RadioButton","name","checked","RangeInput","min","step","showValue","showMinMax","RichSelect","searchable","searchQuery","setSearchQuery","selectRef","SidePanel","position","Signpost","trigger","signpostRef","Spinner","StackView","direction","align","justify","spacing","wrap","style","Stepper","steps","currentStep","onStepClick","isCompleted","isCurrent","Table","bordered","compact","Tabs","defaultActiveId","activeId","setActiveId","handleTabClick","activeItem","Textarea","resize","rest","computedVariant","Timeline","ToggleSwitch","defaultChecked","internalChecked","setInternalChecked","isChecked","newChecked","Tooltip","content","delay","isVisible","setIsVisible","timeoutRef","triggerRef","showTooltip","hideTooltip","ToastContext","createContext","ToastProvider","maxToasts","toasts","setToasts","showToast","useCallback","newToast","removeToast","toast","getPositionClasses","getIcon","useToast","context","useContext","TreeNodeItem","node","level","expandedIds","onNodeClick","hasChildren","isExpanded","handleClick","child","TreeView","defaultExpandedIds","setExpandedIds","handleToggle","next","NavItemComponent","onItemClick","collapsed","isMegaMenu","renderContent","Fragment","VerticalNav","Select","selectClass","Grid","columnsSm","columnsMd","columnsLg","columnsXl","gap","rowGap","columnGap","alignItems","justifyItems","justifyContent","autoFlow","classes","GridItem","colSpan","colSpanSm","colSpanMd","colSpanLg","colSpanXl","rowSpan","colStart","colEnd","rowStart","rowEnd","inlineStyles","Container","padding","centered","fluid","Spacer","axis","customStyle","spacingValue","Skeleton","width","height","animation","lines","getStyles","customStyles","SkeletonText","SkeletonCircle","SkeletonRectangle","Video","sources","poster","aspectRatio","controls","autoPlay","loop","muted","playsInline","onError","containerStyle","containerClasses","source","Audio","artist","album","coverArt","preload","onPlay","onPause","onEnded","hasMetadata","TagInput","tags","onTagAdd","onTagRemove","maxTags","separators","allowDuplicates","validate","removable","addTag","trimmedValue","tag","newTag","newTags","removeTag","tagToRemove","parts","part","handleContainerClick","inputWrapperClasses","PinInput","length","type","mask","autoFocus","onComplete","selectOnFocus","values","setValues","inputRefs","newValues","isValidChar","char","focusInput","fullValue","v","handlePaste","chars","nextEmptyIndex","handleFocus","inputClasses","el","Rating","precision","readOnly","emptyIcon","filledIcon","halfIcon","onHoverChange","internalValue","setInternalValue","hoverValue","setHoverValue","isInteractive","finalValue","handleMouseMove","left","percent","handleMouseLeave","getIconForPosition","filled","half","ratingClasses","Window","open","closable","minimizable","maximizable","resizable","draggable","onMinimize","onMaximize","initialX","initialY","showControls","toolbar","isMaximized","setIsMaximized","setPosition","isDragging","setIsDragging","dragStart","setDragStart","windowRef","handleMouseDown","handleMouseUp","handleMaximize","windowStyle","windowClasses","Gauge","thickness","valueFormatter","startAngle","endAngle","animate","unit","clampedValue","radius","circumference","startAngleRad","endAngleRad","totalAngle","currentAngle","startX","startY","endX","endY","currentX","currentY","largeArcFlag","largeArcFlagCurrent","backgroundPath","valuePath","variantColors","hexToRgb","hex","result","rgbToHsl","r","g","b","h","s","l","d","ColorPicker","format","showPresets","presets","showAlpha","pickerRef","currentColor","handleColorChange","newColor","formatColor","color","rgb","hsl","preset","ContextMenu","submenuStates","setSubmenuStates","menuRef","handleContextMenu","x","y","menuWidth","menuHeight","viewportWidth","viewportHeight","adjustedX","adjustedY","handleItemClick","handleSubmenuMouseEnter","itemId","handleSubmenuMouseLeave","renderMenuItem","depth","hasSubmenu","isSubmenuOpen","subItem","DataList","boldLabels","labelWidth","onCopy","handleCopy","err","StatCard","change","trend","description","prefix","suffix","renderValue","renderTrend","trendClass","Split","initialSize","minSize","onResize","snapPositions","snapThreshold","gutterSize","setSize","containerRef","startPositionRef","startSizeRef","isHorizontal","containerRect","containerSize","currentPosition","deltaPercentage","newSize","minPercentage","maxPercentage","snapPos","snapPixels","currentPixels","handleTouchStart","touch","handleTouchMove","handleTouchEnd","firstPane","secondPane","ImageGallery","images","initialIndex","showThumbnails","showCaptions","lightbox","onImageClick","onIndexChange","showArrows","showIndicators","infinite","currentIndex","setCurrentIndex","lightboxOpen","setLightboxOpen","lightboxIndex","setLightboxIndex","isTransitioning","setIsTransitioning","autoPlayTimerRef","newIndex","handleImageClick","handleThumbnailClick","closeLightbox","handleLightboxPrevious","handleLightboxNext","renderCarousel","renderGrid","renderMasonry","renderLightbox","currentImage"],"mappings":"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"}
|