@clarlabs/ui 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","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/Calendar/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","../src/components/ThemeToggle/index.tsx","../src/components/LanguageSelect/index.tsx","../src/components/Chat/index.tsx","../src/components/Hero/index.tsx","../src/components/Footer/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, useMemo } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface CalendarEvent {\n\tid: string\n\tdate: Date\n\ttitle: string\n\tcolor?: string\n}\n\nexport interface CalendarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n\tvalue?: Date\n\tonChange?: (date: Date) => void\n\tminDate?: Date\n\tmaxDate?: Date\n\tevents?: CalendarEvent[]\n\thighlightedDates?: Date[]\n\tdisabledDates?: Date[]\n\tshowWeekNumbers?: boolean\n\tfirstDayOfWeek?: 0 | 1 // 0 = Sunday, 1 = Monday\n\tvariant?: 'default' | 'minimal' | 'modern'\n}\n\nconst MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n\nconst DAYS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n\nexport function Calendar({\n\tvalue,\n\tonChange,\n\tminDate,\n\tmaxDate,\n\tevents = [],\n\thighlightedDates = [],\n\tdisabledDates = [],\n\tshowWeekNumbers = false,\n\tfirstDayOfWeek = 0,\n\tvariant = 'default',\n\tclassName = '',\n\t...props\n}: CalendarProps) {\n\tconst [currentDate, setCurrentDate] = useState(value || new Date())\n\tconst [selectedDate, setSelectedDate] = useState<Date | null>(value || null)\n\tconst [viewDate, setViewDate] = useState(value || new Date())\n\n\tconst daysOfWeek = useMemo(() => {\n\t\tif (firstDayOfWeek === 1) {\n\t\t\treturn [...DAYS.slice(1), DAYS[0]]\n\t\t}\n\t\treturn DAYS\n\t}, [firstDayOfWeek])\n\n\tconst isSameDay = (date1: Date, date2: Date) => {\n\t\treturn (\n\t\t\tdate1.getDate() === date2.getDate() && date1.getMonth() === date2.getMonth() && date1.getFullYear() === date2.getFullYear()\n\t\t)\n\t}\n\n\tconst isDateDisabled = (date: Date) => {\n\t\tif (minDate && date < minDate) return true\n\t\tif (maxDate && date > maxDate) return true\n\t\treturn disabledDates.some((disabledDate) => isSameDay(date, disabledDate))\n\t}\n\n\tconst isDateHighlighted = (date: Date) => {\n\t\treturn highlightedDates.some((highlightedDate) => isSameDay(date, highlightedDate))\n\t}\n\n\tconst getEventsForDate = (date: Date) => {\n\t\treturn events.filter((event) => isSameDay(event.date, date))\n\t}\n\n\tconst getDaysInMonth = (year: number, month: number) => {\n\t\treturn new Date(year, month + 1, 0).getDate()\n\t}\n\n\tconst getFirstDayOfMonth = (year: number, month: number) => {\n\t\tconst day = new Date(year, month, 1).getDay()\n\t\treturn firstDayOfWeek === 1 ? (day === 0 ? 6 : day - 1) : day\n\t}\n\n\tconst getWeekNumber = (date: Date) => {\n\t\tconst firstDayOfYear = new Date(date.getFullYear(), 0, 1)\n\t\tconst pastDaysOfYear = (date.getTime() - firstDayOfYear.getTime()) / 86400000\n\t\treturn Math.ceil((pastDaysOfYear + firstDayOfYear.getDay() + 1) / 7)\n\t}\n\n\tconst calendarDays = useMemo(() => {\n\t\tconst year = viewDate.getFullYear()\n\t\tconst month = viewDate.getMonth()\n\t\tconst daysInMonth = getDaysInMonth(year, month)\n\t\tconst firstDay = getFirstDayOfMonth(year, month)\n\n\t\tconst days: (Date | null)[] = []\n\n\t\t// Previous month days\n\t\tconst prevMonthDays = getDaysInMonth(year, month - 1)\n\t\tfor (let i = firstDay - 1; i >= 0; i--) {\n\t\t\tconst prevMonth = month === 0 ? 11 : month - 1\n\t\t\tconst prevYear = month === 0 ? year - 1 : year\n\t\t\tdays.push(new Date(prevYear, prevMonth, prevMonthDays - i))\n\t\t}\n\n\t\t// Current month days\n\t\tfor (let i = 1; i <= daysInMonth; i++) {\n\t\t\tdays.push(new Date(year, month, i))\n\t\t}\n\n\t\t// Next month days\n\t\tconst remainingDays = 42 - days.length // 6 rows x 7 days\n\t\tfor (let i = 1; i <= remainingDays; i++) {\n\t\t\tconst nextMonth = month === 11 ? 0 : month + 1\n\t\t\tconst nextYear = month === 11 ? year + 1 : year\n\t\t\tdays.push(new Date(nextYear, nextMonth, i))\n\t\t}\n\n\t\treturn days\n\t}, [viewDate, firstDayOfWeek])\n\n\tconst handlePreviousMonth = () => {\n\t\tsetViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() - 1))\n\t}\n\n\tconst handleNextMonth = () => {\n\t\tsetViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + 1))\n\t}\n\n\tconst handleDateClick = (date: Date) => {\n\t\tif (isDateDisabled(date)) return\n\t\tsetSelectedDate(date)\n\t\tonChange?.(date)\n\t}\n\n\tconst handleToday = () => {\n\t\tconst today = new Date()\n\t\tsetViewDate(today)\n\t\tsetSelectedDate(today)\n\t\tonChange?.(today)\n\t}\n\n\tconst isToday = (date: Date) => isSameDay(date, new Date())\n\tconst isSelected = (date: Date) => selectedDate && isSameDay(date, selectedDate)\n\tconst isCurrentMonth = (date: Date) => date.getMonth() === viewDate.getMonth()\n\n\t// Group days into weeks\n\tconst weeks = []\n\tfor (let i = 0; i < calendarDays.length; i += 7) {\n\t\tweeks.push(calendarDays.slice(i, i + 7))\n\t}\n\n\treturn (\n\t\t<div className={`${styles.calendar} ${styles[variant]} ${className}`} {...props}>\n\t\t\t<div className={styles.header}>\n\t\t\t\t<button type=\"button\" className={styles.navButton} onClick={handlePreviousMonth} aria-label=\"Previous month\">\n\t\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t<path d=\"M15 18L9 12L15 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t\t<div className={styles.monthYear}>\n\t\t\t\t\t<span className={styles.month}>{MONTHS[viewDate.getMonth()]}</span>\n\t\t\t\t\t<span className={styles.year}>{viewDate.getFullYear()}</span>\n\t\t\t\t</div>\n\t\t\t\t<button type=\"button\" className={styles.navButton} onClick={handleNextMonth} aria-label=\"Next month\">\n\t\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t<path d=\"M9 18L15 12L9 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div className={styles.weekdays}>\n\t\t\t\t{showWeekNumbers && <div className={styles.weekNumber}>Wk</div>}\n\t\t\t\t{daysOfWeek.map((day) => (\n\t\t\t\t\t<div key={day} className={styles.weekday}>\n\t\t\t\t\t\t{day}\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\n\t\t\t<div className={styles.days}>\n\t\t\t\t{weeks.map((week, weekIndex) => (\n\t\t\t\t\t<div key={weekIndex} className={styles.week}>\n\t\t\t\t\t\t{showWeekNumbers && week[0] && (\n\t\t\t\t\t\t\t<div className={styles.weekNumber}>{getWeekNumber(week[0] as Date)}</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{week.map((date, dayIndex) => {\n\t\t\t\t\t\t\tif (!date) return <div key={dayIndex} className={styles.day} />\n\n\t\t\t\t\t\t\tconst dayEvents = getEventsForDate(date)\n\t\t\t\t\t\t\tconst isHighlighted = isDateHighlighted(date)\n\t\t\t\t\t\t\tconst disabled = isDateDisabled(date)\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={dayIndex}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName={`${styles.day} ${isCurrentMonth(date) ? styles.currentMonth : styles.otherMonth} ${\n\t\t\t\t\t\t\t\t\t\tisToday(date) ? styles.today : ''\n\t\t\t\t\t\t\t\t\t} ${isSelected(date) ? styles.selected : ''} ${isHighlighted ? styles.highlighted : ''} ${\n\t\t\t\t\t\t\t\t\t\tdisabled ? styles.disabled : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => handleDateClick(date)}\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\taria-label={date.toDateString()}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span className={styles.dayNumber}>{date.getDate()}</span>\n\t\t\t\t\t\t\t\t\t{dayEvents.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t<div className={styles.eventIndicators}>\n\t\t\t\t\t\t\t\t\t\t\t{dayEvents.slice(0, 3).map((event) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={event.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={styles.eventDot}\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ backgroundColor: event.color || '#6366f1' }}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={event.title}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t))}\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</button>\n\t\t\t\t\t\t\t)\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<div className={styles.footer}>\n\t\t\t\t<button type=\"button\" className={styles.todayButton} onClick={handleToday}>\n\t\t\t\t\tToday\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport { Calendar } from '../Calendar'\nimport styles from './styles.module.scss'\n\nexport interface DatePickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n\tvalue?: Date\n\tonChange?: (date: Date | null) => void\n\tminDate?: Date\n\tmaxDate?: Date\n\tplaceholder?: string\n\tdisabled?: boolean\n\tvariant?: 'default' | 'minimal' | 'modern'\n}\n\nexport function DatePicker({\n\tvalue,\n\tonChange,\n\tminDate,\n\tmaxDate,\n\tplaceholder = 'Select a date',\n\tdisabled = false,\n\tvariant = 'default',\n\tclassName = '',\n\t...props\n}: DatePickerProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst containerRef = useRef<HTMLDivElement>(null)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (containerRef.current && !containerRef.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 handleDateChange = (date: Date) => {\n\t\tonChange?.(date)\n\t\tsetIsOpen(false)\n\t}\n\n\tconst handleClear = (e: React.MouseEvent) => {\n\t\te.stopPropagation()\n\t\tonChange?.(null)\n\t}\n\n\tconst formatDisplayDate = (date: Date): string => {\n\t\treturn date.toLocaleDateString('en-US', {\n\t\t\tyear: 'numeric',\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric'\n\t\t})\n\t}\n\n\treturn (\n\t\t<div className={`${styles.datePicker} ${className}`} ref={containerRef} {...props}>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={`${styles.input} ${disabled ? styles.disabled : ''}`}\n\t\t\t\tonClick={() => !disabled && setIsOpen(!isOpen)}\n\t\t\t\tdisabled={disabled}\n\t\t\t>\n\t\t\t\t<span className={styles.value}>\n\t\t\t\t\t{value ? formatDisplayDate(value) : placeholder}\n\t\t\t\t</span>\n\t\t\t\t<span className={styles.icons}>\n\t\t\t\t\t{value && !disabled && (\n\t\t\t\t\t\t<span className={styles.clearIcon} onClick={handleClear}>\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\t<span className={styles.icon}>📅</span>\n\t\t\t\t</span>\n\t\t\t</button>\n\t\t\t{isOpen && (\n\t\t\t\t<div className={styles.popover}>\n\t\t\t\t\t<Calendar\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tonChange={handleDateChange}\n\t\t\t\t\t\tminDate={minDate}\n\t\t\t\t\t\tmaxDate={maxDate}\n\t\t\t\t\t\tvariant={variant}\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, { useState, useRef, useEffect } from 'react'\nimport { Calendar } from '../Calendar'\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\tplaceholder?: string\n\tdisabled?: boolean\n\tvariant?: 'default' | 'minimal' | 'modern'\n}\n\nexport function DateRangePicker({\n\tvalue,\n\tonChange,\n\tminDate,\n\tmaxDate,\n\tclassName = '',\n\tplaceholder = 'Select date range',\n\tdisabled = false,\n\tvariant = 'default'\n}: DateRangePickerProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [tempRange, setTempRange] = useState<DateRange>({ start: null, end: null })\n\tconst [selectingEnd, setSelectingEnd] = useState(false)\n\tconst containerRef = useRef<HTMLDivElement>(null)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t\tsetTempRange({ start: null, end: null })\n\t\t\t\tsetSelectingEnd(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 handleDateClick = (date: Date) => {\n\t\tif (!selectingEnd) {\n\t\t\t// First click - set start date\n\t\t\tsetTempRange({ start: date, end: null })\n\t\t\tsetSelectingEnd(true)\n\t\t} else {\n\t\t\t// Second click - set end date\n\t\t\tconst start = tempRange.start!\n\t\t\tconst end = date\n\n\t\t\t// Ensure start is before end\n\t\t\tif (start > end) {\n\t\t\t\tonChange?.({ start: end, end: start })\n\t\t\t} else {\n\t\t\t\tonChange?.({ start, end })\n\t\t\t}\n\n\t\t\tsetIsOpen(false)\n\t\t\tsetTempRange({ start: null, end: null })\n\t\t\tsetSelectingEnd(false)\n\t\t}\n\t}\n\n\tconst handleClear = (e: React.MouseEvent) => {\n\t\te.stopPropagation()\n\t\tonChange?.({ start: null, end: null })\n\t\tsetTempRange({ start: null, end: null })\n\t\tsetSelectingEnd(false)\n\t}\n\n\tconst formatDisplayDate = (date: Date): string => {\n\t\treturn date.toLocaleDateString('en-US', {\n\t\t\tyear: 'numeric',\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric'\n\t\t})\n\t}\n\n\tconst getDisplayValue = () => {\n\t\tif (value?.start && value?.end) {\n\t\t\treturn `${formatDisplayDate(value.start)} → ${formatDisplayDate(value.end)}`\n\t\t}\n\t\tif (value?.start) {\n\t\t\treturn formatDisplayDate(value.start)\n\t\t}\n\t\treturn placeholder\n\t}\n\n\t// Get highlighted dates for the range\n\tconst getHighlightedDates = () => {\n\t\tconst dates: Date[] = []\n\t\tconst start = tempRange.start || value?.start\n\t\tconst end = tempRange.end || value?.end\n\n\t\tif (start && end) {\n\t\t\tconst current = new Date(start)\n\t\t\twhile (current <= end) {\n\t\t\t\tdates.push(new Date(current))\n\t\t\t\tcurrent.setDate(current.getDate() + 1)\n\t\t\t}\n\t\t}\n\n\t\treturn dates\n\t}\n\n\treturn (\n\t\t<div className={`${styles.dateRangePicker} ${className}`} ref={containerRef}>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={`${styles.input} ${disabled ? styles.disabled : ''}`}\n\t\t\t\tonClick={() => !disabled && setIsOpen(!isOpen)}\n\t\t\t\tdisabled={disabled}\n\t\t\t>\n\t\t\t\t<span className={styles.value}>{getDisplayValue()}</span>\n\t\t\t\t<span className={styles.icons}>\n\t\t\t\t\t{(value?.start || value?.end) && !disabled && (\n\t\t\t\t\t\t<span className={styles.clearIcon} onClick={handleClear}>\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\t<span className={styles.icon}>📅</span>\n\t\t\t\t</span>\n\t\t\t</button>\n\t\t\t{isOpen && (\n\t\t\t\t<div className={styles.popover}>\n\t\t\t\t\t<div className={styles.rangeInfo}>\n\t\t\t\t\t\t{!selectingEnd ? 'Select start date' : 'Select end date'}\n\t\t\t\t\t</div>\n\t\t\t\t\t<Calendar\n\t\t\t\t\t\tvalue={tempRange.start || value?.start || undefined}\n\t\t\t\t\t\tonChange={handleDateClick}\n\t\t\t\t\t\tminDate={minDate}\n\t\t\t\t\t\tmaxDate={maxDate}\n\t\t\t\t\t\thighlightedDates={getHighlightedDates()}\n\t\t\t\t\t\tvariant={variant}\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 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","import React, { useEffect, useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface ThemeToggleProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n\tdefaultTheme?: 'light' | 'dark'\n\tonThemeChange?: (theme: 'light' | 'dark') => void\n}\n\nexport function ThemeToggle({ defaultTheme = 'dark', onThemeChange, className = '', ...props }: ThemeToggleProps) {\n\tconst [theme, setTheme] = useState<'light' | 'dark'>(() => {\n\t\tif (typeof window === 'undefined') return defaultTheme\n\n\t\tconst savedTheme = localStorage.getItem('theme') as 'light' | 'dark' | null\n\t\treturn savedTheme || defaultTheme\n\t})\n\n\tuseEffect(() => {\n\t\t// Apply theme to body on mount and when theme changes\n\t\tif (theme === 'light') {\n\t\t\tdocument.body.classList.add('light-mode')\n\t\t} else {\n\t\t\tdocument.body.classList.remove('light-mode')\n\t\t}\n\n\t\t// Save to localStorage\n\t\tlocalStorage.setItem('theme', theme)\n\n\t\t// Call callback if provided\n\t\tonThemeChange?.(theme)\n\t}, [theme, onThemeChange])\n\n\tconst toggleTheme = () => {\n\t\tsetTheme((prev) => (prev === 'light' ? 'dark' : 'light'))\n\t}\n\n\treturn (\n\t\t<button type=\"button\" className={`${styles.themeToggle} ${className}`} onClick={toggleTheme} aria-label=\"Toggle theme\" {...props}>\n\t\t\t<div className={`${styles.iconContainer} ${theme === 'light' ? styles.light : styles.dark}`}>\n\t\t\t\t<svg className={`${styles.icon} ${styles.sun}`} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"5\" fill=\"currentColor\" />\n\t\t\t\t\t<line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t\t<line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t\t<line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t\t<line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t\t<line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t\t<line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t\t<line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t\t<line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t</svg>\n\t\t\t\t<svg className={`${styles.icon} ${styles.moon}`} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"\n\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t</button>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface Language {\n\tcode: string\n\tname: string\n\tnativeName: string\n\tflag: string\n}\n\nexport interface LanguageSelectProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n\tlanguages?: Language[]\n\tdefaultLanguage?: string\n\tonChange?: (language: Language) => void\n\tdisabled?: boolean\n\tshowSearch?: boolean\n\tlabel?: string\n}\n\nconst DEFAULT_LANGUAGES: Language[] = [\n\t{ code: 'en', name: 'English', nativeName: 'English', flag: '🇺🇸' },\n\t{ code: 'es', name: 'Spanish', nativeName: 'Español', flag: '🇪🇸' },\n\t{ code: 'fr', name: 'French', nativeName: 'Français', flag: '🇫🇷' },\n\t{ code: 'de', name: 'German', nativeName: 'Deutsch', flag: '🇩🇪' },\n\t{ code: 'it', name: 'Italian', nativeName: 'Italiano', flag: '🇮🇹' },\n\t{ code: 'pt', name: 'Portuguese', nativeName: 'Português', flag: '🇵🇹' },\n\t{ code: 'ru', name: 'Russian', nativeName: 'Русский', flag: '🇷🇺' },\n\t{ code: 'ja', name: 'Japanese', nativeName: '日本語', flag: '🇯🇵' },\n\t{ code: 'zh', name: 'Chinese', nativeName: '中文', flag: '🇨🇳' },\n\t{ code: 'ko', name: 'Korean', nativeName: '한국어', flag: '🇰🇷' },\n\t{ code: 'ar', name: 'Arabic', nativeName: 'العربية', flag: '🇸🇦' },\n\t{ code: 'hi', name: 'Hindi', nativeName: 'हिन्दी', flag: '🇮🇳' }\n]\n\nexport function LanguageSelect({\n\tlanguages = DEFAULT_LANGUAGES,\n\tdefaultLanguage = 'en',\n\tonChange,\n\tdisabled = false,\n\tshowSearch = false,\n\tlabel,\n\tclassName = '',\n\t...props\n}: LanguageSelectProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [selectedLanguage, setSelectedLanguage] = useState<Language>(() => {\n\t\treturn languages.find((lang) => lang.code === defaultLanguage) || languages[0]\n\t})\n\tconst [searchQuery, setSearchQuery] = useState('')\n\tconst [highlightedIndex, setHighlightedIndex] = useState(0)\n\tconst containerRef = useRef<HTMLDivElement>(null)\n\tconst searchInputRef = useRef<HTMLInputElement>(null)\n\n\tconst filteredLanguages = languages.filter(\n\t\t(lang) =>\n\t\t\tlang.name.toLowerCase().includes(searchQuery.toLowerCase()) ||\n\t\t\tlang.nativeName.toLowerCase().includes(searchQuery.toLowerCase()) ||\n\t\t\tlang.code.toLowerCase().includes(searchQuery.toLowerCase())\n\t)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (containerRef.current && !containerRef.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\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\tuseEffect(() => {\n\t\tif (isOpen && showSearch && searchInputRef.current) {\n\t\t\tsearchInputRef.current.focus()\n\t\t}\n\t}, [isOpen, showSearch])\n\n\tconst handleSelect = (language: Language) => {\n\t\tsetSelectedLanguage(language)\n\t\tsetIsOpen(false)\n\t\tsetSearchQuery('')\n\t\tonChange?.(language)\n\t}\n\n\tconst handleKeyDown = (e: React.KeyboardEvent) => {\n\t\tif (disabled) return\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\tif (!isOpen) {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\tsetIsOpen(true)\n\t\t\t\t} else if (filteredLanguages[highlightedIndex]) {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\thandleSelect(filteredLanguages[highlightedIndex])\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'Escape':\n\t\t\t\tsetIsOpen(false)\n\t\t\t\tsetSearchQuery('')\n\t\t\t\tbreak\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (!isOpen) {\n\t\t\t\t\tsetIsOpen(true)\n\t\t\t\t} else {\n\t\t\t\t\tsetHighlightedIndex((prev) => (prev < filteredLanguages.length - 1 ? prev + 1 : 0))\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (isOpen) {\n\t\t\t\t\tsetHighlightedIndex((prev) => (prev > 0 ? prev - 1 : filteredLanguages.length - 1))\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className={`${styles.languageSelectContainer} ${className}`} ref={containerRef} {...props}>\n\t\t\t{label && <label className={styles.label}>{label}</label>}\n\t\t\t<div className={`${styles.languageSelect} ${disabled ? styles.disabled : ''}`}>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={`${styles.trigger} ${isOpen ? styles.open : ''}`}\n\t\t\t\t\tonClick={() => !disabled && setIsOpen(!isOpen)}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\taria-expanded={isOpen}\n\t\t\t\t>\n\t\t\t\t\t<span className={styles.flag}>{selectedLanguage.flag}</span>\n\t\t\t\t\t<span className={styles.selectedText}>\n\t\t\t\t\t\t<span className={styles.languageName}>{selectedLanguage.name}</span>\n\t\t\t\t\t\t<span className={styles.nativeName}>{selectedLanguage.nativeName}</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<svg className={styles.chevron} viewBox=\"0 0 20 20\" fill=\"currentColor\">\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\t\t\t\td=\"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z\"\n\t\t\t\t\t\t\tclipRule=\"evenodd\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\n\t\t\t\t{isOpen && (\n\t\t\t\t\t<div className={styles.dropdown}>\n\t\t\t\t\t\t{showSearch && (\n\t\t\t\t\t\t\t<div className={styles.searchContainer}>\n\t\t\t\t\t\t\t\t<svg className={styles.searchIcon} viewBox=\"0 0 20 20\" fill=\"currentColor\">\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\td=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n\t\t\t\t\t\t\t\t\t\tclipRule=\"evenodd\"\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\t<input\n\t\t\t\t\t\t\t\t\tref={searchInputRef}\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\tclassName={styles.searchInput}\n\t\t\t\t\t\t\t\t\tplaceholder=\"Search languages...\"\n\t\t\t\t\t\t\t\t\tvalue={searchQuery}\n\t\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\t\tsetSearchQuery(e.target.value)\n\t\t\t\t\t\t\t\t\t\tsetHighlightedIndex(0)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<ul className={styles.list} role=\"listbox\">\n\t\t\t\t\t\t\t{filteredLanguages.length > 0 ? (\n\t\t\t\t\t\t\t\tfilteredLanguages.map((language, index) => (\n\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\tkey={language.code}\n\t\t\t\t\t\t\t\t\t\tclassName={`${styles.option} ${selectedLanguage.code === language.code ? styles.selected : ''} ${\n\t\t\t\t\t\t\t\t\t\t\tindex === highlightedIndex ? styles.highlighted : ''\n\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\tonClick={() => handleSelect(language)}\n\t\t\t\t\t\t\t\t\t\tonMouseEnter={() => setHighlightedIndex(index)}\n\t\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\t\taria-selected={selectedLanguage.code === language.code}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<span className={styles.optionFlag}>{language.flag}</span>\n\t\t\t\t\t\t\t\t\t\t<span className={styles.optionText}>\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.optionName}>{language.name}</span>\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.optionNative}>{language.nativeName}</span>\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t{selectedLanguage.code === language.code && (\n\t\t\t\t\t\t\t\t\t\t\t<svg className={styles.checkIcon} viewBox=\"0 0 20 20\" fill=\"currentColor\">\n\t\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\t\t\t\td=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclipRule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<li className={styles.noResults}>No languages found</li>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t)}\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 interface ChatMessage {\n\tid: string\n\tcontent: string\n\tsender: 'user' | 'bot' | 'system'\n\ttimestamp: Date\n\tavatar?: string\n\tsenderName?: string\n\tisTyping?: boolean\n}\n\nexport interface ChatProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSubmit'> {\n\tmessages: ChatMessage[]\n\tonSendMessage?: (message: string) => void\n\tplaceholder?: string\n\tdisabled?: boolean\n\tshowTimestamps?: boolean\n\tshowAvatars?: boolean\n\tmaxHeight?: string\n\ttypingIndicator?: boolean\n\tuserName?: string\n\tbotName?: string\n\tenableMarkdown?: boolean\n}\n\nexport function Chat({\n\tmessages,\n\tonSendMessage,\n\tplaceholder = 'Type a message...',\n\tdisabled = false,\n\tshowTimestamps = false,\n\tshowAvatars = true,\n\tmaxHeight = '600px',\n\ttypingIndicator = false,\n\tuserName = 'You',\n\tbotName = 'Assistant',\n\tclassName = '',\n\t...props\n}: ChatProps) {\n\tconst [inputValue, setInputValue] = useState('')\n\tconst [isFocused, setIsFocused] = useState(false)\n\tconst messagesEndRef = useRef<HTMLDivElement>(null)\n\tconst inputRef = useRef<HTMLTextAreaElement>(null)\n\n\tconst scrollToBottom = () => {\n\t\tmessagesEndRef.current?.scrollIntoView({ behavior: 'smooth' })\n\t}\n\n\tuseEffect(() => {\n\t\tscrollToBottom()\n\t}, [messages])\n\n\tconst handleSubmit = (e: React.FormEvent) => {\n\t\te.preventDefault()\n\t\tif (inputValue.trim() && onSendMessage && !disabled) {\n\t\t\tonSendMessage(inputValue.trim())\n\t\t\tsetInputValue('')\n\t\t\tif (inputRef.current) {\n\t\t\t\tinputRef.current.style.height = 'auto'\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n\t\tif (e.key === 'Enter' && !e.shiftKey) {\n\t\t\te.preventDefault()\n\t\t\thandleSubmit(e)\n\t\t}\n\t}\n\n\tconst handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n\t\tsetInputValue(e.target.value)\n\t\t// Auto-resize textarea\n\t\te.target.style.height = 'auto'\n\t\te.target.style.height = `${Math.min(e.target.scrollHeight, 120)}px`\n\t}\n\n\tconst formatTime = (date: Date) => {\n\t\treturn date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })\n\t}\n\n\tconst getInitials = (name: string) => {\n\t\treturn name\n\t\t\t.split(' ')\n\t\t\t.map((n) => n[0])\n\t\t\t.join('')\n\t\t\t.toUpperCase()\n\t\t\t.slice(0, 2)\n\t}\n\n\treturn (\n\t\t<div className={`${styles.chatContainer} ${className}`} {...props}>\n\t\t\t<div className={styles.messagesWrapper} style={{ maxHeight }}>\n\t\t\t\t{messages.length === 0 ? (\n\t\t\t\t\t<div className={styles.emptyState}>\n\t\t\t\t\t\t<div className={styles.emptyIcon}>💬</div>\n\t\t\t\t\t\t<p className={styles.emptyText}>No messages yet</p>\n\t\t\t\t\t\t<p className={styles.emptySubtext}>Start a conversation!</p>\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<div className={styles.messagesList}>\n\t\t\t\t\t\t{messages.map((message, index) => {\n\t\t\t\t\t\t\tconst isUser = message.sender === 'user'\n\t\t\t\t\t\t\tconst isSystem = message.sender === 'system'\n\t\t\t\t\t\t\tconst showAvatar = showAvatars && !isSystem\n\t\t\t\t\t\t\tconst senderName = isUser ? userName : message.senderName || botName\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={message.id}\n\t\t\t\t\t\t\t\t\tclassName={`${styles.messageGroup} ${isUser ? styles.userMessage : ''} ${isSystem ? styles.systemMessage : ''}`}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{showAvatar && (\n\t\t\t\t\t\t\t\t\t\t<div className={styles.avatarWrapper}>\n\t\t\t\t\t\t\t\t\t\t\t{message.avatar ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<img src={message.avatar} alt={senderName} className={styles.avatar} />\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={`${styles.avatarPlaceholder} ${isUser ? styles.userAvatar : styles.botAvatar}`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{getInitials(senderName)}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\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\t<div className={styles.messageContent}>\n\t\t\t\t\t\t\t\t\t\t{!isSystem && !isUser && (\n\t\t\t\t\t\t\t\t\t\t\t<div className={styles.senderName}>{senderName}</div>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t<div className={`${styles.messageBubble} ${message.isTyping ? styles.typing : ''}`}>\n\t\t\t\t\t\t\t\t\t\t\t{message.isTyping ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={styles.typingIndicator}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className={styles.dot}></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className={styles.dot}></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className={styles.dot}></span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<p className={styles.messageText}>{message.content}</p>\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\t{showTimestamps && !message.isTyping && (\n\t\t\t\t\t\t\t\t\t\t\t<div className={styles.timestamp}>{formatTime(message.timestamp)}</div>\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\t\t\t\t\t\t})}\n\t\t\t\t\t\t{typingIndicator && (\n\t\t\t\t\t\t\t<div className={`${styles.messageGroup}`}>\n\t\t\t\t\t\t\t\t{showAvatars && (\n\t\t\t\t\t\t\t\t\t<div className={styles.avatarWrapper}>\n\t\t\t\t\t\t\t\t\t\t<div className={`${styles.avatarPlaceholder} ${styles.botAvatar}`}>\n\t\t\t\t\t\t\t\t\t\t\t{getInitials(botName)}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div className={styles.messageContent}>\n\t\t\t\t\t\t\t\t\t<div className={styles.senderName}>{botName}</div>\n\t\t\t\t\t\t\t\t\t<div className={`${styles.messageBubble} ${styles.typing}`}>\n\t\t\t\t\t\t\t\t\t\t<div className={styles.typingIndicator}>\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.dot}></span>\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.dot}></span>\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.dot}></span>\n\t\t\t\t\t\t\t\t\t\t</div>\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</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div ref={messagesEndRef} />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<form onSubmit={handleSubmit} className={styles.inputForm}>\n\t\t\t\t<div className={`${styles.inputWrapper} ${isFocused ? styles.focused : ''}`}>\n\t\t\t\t\t<textarea\n\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\tclassName={styles.input}\n\t\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t\tonFocus={() => setIsFocused(true)}\n\t\t\t\t\t\tonBlur={() => setIsFocused(false)}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\trows={1}\n\t\t\t\t\t/>\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tclassName={`${styles.sendButton} ${inputValue.trim() ? styles.active : ''}`}\n\t\t\t\t\t\tdisabled={!inputValue.trim() || disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t<svg className={styles.sendIcon} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M22 2L11 13M22 2L15 22L11 13M22 2L2 9L11 13\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type HeroVariant = 'default' | 'gradient' | 'image' | 'video' | 'split' | 'centered' | 'minimal'\nexport type HeroSize = 'small' | 'medium' | 'large' | 'fullscreen'\nexport type HeroAlignment = 'left' | 'center' | 'right'\n\nexport interface HeroProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {\n\t/** Hero variant style */\n\tvariant?: HeroVariant\n\t/** Hero size */\n\tsize?: HeroSize\n\t/** Content alignment */\n\talignment?: HeroAlignment\n\t/** Hero title */\n\ttitle?: React.ReactNode\n\t/** Hero subtitle or description */\n\tsubtitle?: React.ReactNode\n\t/** Background image URL */\n\tbackgroundImage?: string\n\t/** Background video URL */\n\tbackgroundVideo?: string\n\t/** Background overlay opacity (0-1) */\n\toverlayOpacity?: number\n\t/** Primary action button */\n\tprimaryAction?: {\n\t\tlabel: string\n\t\tonClick?: () => void\n\t\thref?: string\n\t}\n\t/** Secondary action button */\n\tsecondaryAction?: {\n\t\tlabel: string\n\t\tonClick?: () => void\n\t\thref?: string\n\t}\n\t/** Additional content to render in the hero */\n\tchildren?: React.ReactNode\n\t/** Image to display (for split variant) */\n\timage?: string\n\t/** Image alt text */\n\timageAlt?: string\n\t/** Image position (for split variant) */\n\timagePosition?: 'left' | 'right'\n}\n\nexport function Hero({\n\tvariant = 'default',\n\tsize = 'large',\n\talignment = 'center',\n\ttitle,\n\tsubtitle,\n\tbackgroundImage,\n\tbackgroundVideo,\n\toverlayOpacity = 0.5,\n\tprimaryAction,\n\tsecondaryAction,\n\tchildren,\n\timage,\n\timageAlt = 'Hero image',\n\timagePosition = 'right',\n\tclassName = '',\n\tstyle,\n\t...props\n}: HeroProps) {\n\tconst heroStyles: React.CSSProperties = {\n\t\t...style\n\t}\n\n\t// Handle background image\n\tif (backgroundImage && variant === 'image') {\n\t\theroStyles.backgroundImage = `url(${backgroundImage})`\n\t}\n\n\tconst renderActions = () => {\n\t\tif (!primaryAction && !secondaryAction) return null\n\n\t\treturn (\n\t\t\t<div className={styles.actions}>\n\t\t\t\t{primaryAction && (\n\t\t\t\t\tprimaryAction.href ? (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={primaryAction.href}\n\t\t\t\t\t\t\tclassName={`${styles.button} ${styles.primary}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{primaryAction.label}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={primaryAction.onClick}\n\t\t\t\t\t\t\tclassName={`${styles.button} ${styles.primary}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{primaryAction.label}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t\t{secondaryAction && (\n\t\t\t\t\tsecondaryAction.href ? (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={secondaryAction.href}\n\t\t\t\t\t\t\tclassName={`${styles.button} ${styles.secondary}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{secondaryAction.label}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={secondaryAction.onClick}\n\t\t\t\t\t\t\tclassName={`${styles.button} ${styles.secondary}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{secondaryAction.label}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t</div>\n\t\t)\n\t}\n\n\tconst renderContent = () => (\n\t\t<div className={styles.content}>\n\t\t\t{title && <h1 className={styles.title}>{title}</h1>}\n\t\t\t{subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n\t\t\t{renderActions()}\n\t\t\t{children && <div className={styles.children}>{children}</div>}\n\t\t</div>\n\t)\n\n\tconst renderVideoBackground = () => {\n\t\tif (!backgroundVideo || variant !== 'video') return null\n\n\t\treturn (\n\t\t\t<video\n\t\t\t\tclassName={styles.backgroundVideo}\n\t\t\t\tautoPlay\n\t\t\t\tloop\n\t\t\t\tmuted\n\t\t\t\tplaysInline\n\t\t\t>\n\t\t\t\t<source src={backgroundVideo} type=\"video/mp4\" />\n\t\t\t</video>\n\t\t)\n\t}\n\n\tconst renderOverlay = () => {\n\t\tif ((variant === 'image' || variant === 'video') && overlayOpacity > 0) {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tclassName={styles.overlay}\n\t\t\t\t\tstyle={{ opacity: overlayOpacity }}\n\t\t\t\t/>\n\t\t\t)\n\t\t}\n\t\treturn null\n\t}\n\n\t// Split variant with image\n\tif (variant === 'split' && image) {\n\t\treturn (\n\t\t\t<section\n\t\t\t\tclassName={`${styles.hero} ${styles[variant]} ${styles[size]} ${styles[alignment]} ${imagePosition === 'left' ? styles.imageLeft : styles.imageRight} ${className}`}\n\t\t\t\tstyle={heroStyles}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div className={styles.container}>\n\t\t\t\t\t<div className={styles.splitContent}>\n\t\t\t\t\t\t{renderContent()}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={styles.splitImage}>\n\t\t\t\t\t\t<img src={image} alt={imageAlt} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</section>\n\t\t)\n\t}\n\n\t// Standard hero variants\n\treturn (\n\t\t<section\n\t\t\tclassName={`${styles.hero} ${styles[variant]} ${styles[size]} ${styles[alignment]} ${className}`}\n\t\t\tstyle={heroStyles}\n\t\t\t{...props}\n\t\t>\n\t\t\t{renderVideoBackground()}\n\t\t\t{renderOverlay()}\n\t\t\t<div className={styles.container}>\n\t\t\t\t{renderContent()}\n\t\t\t</div>\n\t\t</section>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type FooterVariant = 'default' | 'minimal' | 'centered' | 'stacked'\n\nexport interface FooterLink {\n\tlabel: string\n\thref: string\n\texternal?: boolean\n}\n\nexport interface FooterSection {\n\ttitle: string\n\tlinks: FooterLink[]\n}\n\nexport interface SocialLink {\n\tplatform: string\n\thref: string\n\ticon?: React.ReactNode\n}\n\nexport interface FooterProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {\n\t/** Footer variant style */\n\tvariant?: FooterVariant\n\t/** Company or brand name */\n\tbrandName?: string\n\t/** Brand logo */\n\tbrandLogo?: React.ReactNode\n\t/** Brand description or tagline */\n\tbrandDescription?: string\n\t/** Footer sections with links */\n\tsections?: FooterSection[]\n\t/** Social media links */\n\tsocialLinks?: SocialLink[]\n\t/** Copyright text */\n\tcopyright?: string\n\t/** Show current year in copyright */\n\tshowYear?: boolean\n\t/** Bottom links (Privacy, Terms, etc) */\n\tbottomLinks?: FooterLink[]\n\t/** Additional content */\n\tchildren?: React.ReactNode\n}\n\nexport function Footer({\n\tvariant = 'default',\n\tbrandName,\n\tbrandLogo,\n\tbrandDescription,\n\tsections = [],\n\tsocialLinks = [],\n\tcopyright,\n\tshowYear = true,\n\tbottomLinks = [],\n\tchildren,\n\tclassName = '',\n\t...props\n}: FooterProps) {\n\tconst currentYear = new Date().getFullYear()\n\n\tconst renderBrand = () => {\n\t\tif (!brandName && !brandLogo && !brandDescription) return null\n\n\t\treturn (\n\t\t\t<div className={styles.brand}>\n\t\t\t\t{(brandLogo || brandName) && (\n\t\t\t\t\t<div className={styles.brandHeader}>\n\t\t\t\t\t\t{brandLogo && <div className={styles.brandLogo}>{brandLogo}</div>}\n\t\t\t\t\t\t{brandName && <div className={styles.brandName}>{brandName}</div>}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{brandDescription && (\n\t\t\t\t\t<p className={styles.brandDescription}>{brandDescription}</p>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t)\n\t}\n\n\tconst renderSections = () => {\n\t\tif (sections.length === 0) return null\n\n\t\treturn (\n\t\t\t<div className={styles.sections}>\n\t\t\t\t{sections.map((section, index) => (\n\t\t\t\t\t<div key={index} className={styles.section}>\n\t\t\t\t\t\t<h3 className={styles.sectionTitle}>{section.title}</h3>\n\t\t\t\t\t\t<ul className={styles.linkList}>\n\t\t\t\t\t\t\t{section.links.map((link, linkIndex) => (\n\t\t\t\t\t\t\t\t<li key={linkIndex}>\n\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\thref={link.href}\n\t\t\t\t\t\t\t\t\t\tclassName={styles.link}\n\t\t\t\t\t\t\t\t\t\ttarget={link.external ? '_blank' : undefined}\n\t\t\t\t\t\t\t\t\t\trel={link.external ? 'noopener noreferrer' : undefined}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{link.label}\n\t\t\t\t\t\t\t\t\t\t{link.external && (\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.externalIcon} aria-label=\"Opens in new tab\">\n\t\t\t\t\t\t\t\t\t\t\t\t↗\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t)\n\t}\n\n\tconst renderSocialLinks = () => {\n\t\tif (socialLinks.length === 0) return null\n\n\t\treturn (\n\t\t\t<div className={styles.social}>\n\t\t\t\t<div className={styles.socialTitle}>Follow Us</div>\n\t\t\t\t<div className={styles.socialLinks}>\n\t\t\t\t\t{socialLinks.map((social, index) => (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\thref={social.href}\n\t\t\t\t\t\t\tclassName={styles.socialLink}\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\taria-label={social.platform}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{social.icon || social.platform}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n\n\tconst renderBottom = () => {\n\t\tconst copyrightText = copyright || (brandName ? `© ${brandName}` : '© All rights reserved')\n\t\tconst fullCopyright = showYear ? `${copyrightText} ${currentYear}` : copyrightText\n\n\t\treturn (\n\t\t\t<div className={styles.bottom}>\n\t\t\t\t<div className={styles.copyright}>{fullCopyright}</div>\n\t\t\t\t{bottomLinks.length > 0 && (\n\t\t\t\t\t<div className={styles.bottomLinks}>\n\t\t\t\t\t\t{bottomLinks.map((link, index) => (\n\t\t\t\t\t\t\t<React.Fragment key={index}>\n\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\thref={link.href}\n\t\t\t\t\t\t\t\t\tclassName={styles.bottomLink}\n\t\t\t\t\t\t\t\t\ttarget={link.external ? '_blank' : undefined}\n\t\t\t\t\t\t\t\t\trel={link.external ? 'noopener noreferrer' : undefined}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{link.label}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t{index < bottomLinks.length - 1 && (\n\t\t\t\t\t\t\t\t\t<span className={styles.separator}>•</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn (\n\t\t<footer className={`${styles.footer} ${styles[variant]} ${className}`} {...props}>\n\t\t\t<div className={styles.container}>\n\t\t\t\t{variant === 'centered' ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className={styles.centeredContent}>\n\t\t\t\t\t\t\t{renderBrand()}\n\t\t\t\t\t\t\t{renderSocialLinks()}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{sections.length > 0 && (\n\t\t\t\t\t\t\t<div className={styles.centeredSections}>\n\t\t\t\t\t\t\t\t{renderSections()}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{children && <div className={styles.children}>{children}</div>}\n\t\t\t\t\t\t{renderBottom()}\n\t\t\t\t\t</>\n\t\t\t\t) : variant === 'stacked' ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{renderBrand()}\n\t\t\t\t\t\t{renderSections()}\n\t\t\t\t\t\t{renderSocialLinks()}\n\t\t\t\t\t\t{children && <div className={styles.children}>{children}</div>}\n\t\t\t\t\t\t{renderBottom()}\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className={styles.main}>\n\t\t\t\t\t\t\t{renderBrand()}\n\t\t\t\t\t\t\t{renderSections()}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{(socialLinks.length > 0 || children) && (\n\t\t\t\t\t\t\t<div className={styles.sidebar}>\n\t\t\t\t\t\t\t\t{renderSocialLinks()}\n\t\t\t\t\t\t\t\t{children && <div className={styles.children}>{children}</div>}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{renderBottom()}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</footer>\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","MONTHS","DAYS","Calendar","value","minDate","maxDate","events","highlightedDates","disabledDates","showWeekNumbers","firstDayOfWeek","currentDate","setCurrentDate","selectedDate","setSelectedDate","viewDate","setViewDate","daysOfWeek","useMemo","isSameDay","date1","date2","isDateDisabled","date","disabledDate","isDateHighlighted","highlightedDate","getEventsForDate","event","getDaysInMonth","year","month","getFirstDayOfMonth","day","getWeekNumber","firstDayOfYear","pastDaysOfYear","calendarDays","daysInMonth","firstDay","days","prevMonthDays","i","prevMonth","prevYear","remainingDays","nextMonth","nextYear","handlePreviousMonth","handleNextMonth","handleDateClick","handleToday","today","isToday","isSelected","isCurrentMonth","weeks","week","weekIndex","dayIndex","dayEvents","isHighlighted","DatePicker","containerRef","handleDateChange","handleClear","formatDisplayDate","DateRangePicker","tempRange","setTempRange","selectingEnd","setSelectingEnd","start","end","getDisplayValue","getHighlightedDates","dates","current","Divider","dividerClass","Dropdown","selectedValue","setSelectedValue","dropdownRef","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","_","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","handleChange","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","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","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","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","ThemeToggle","defaultTheme","onThemeChange","theme","setTheme","toggleTheme","DEFAULT_LANGUAGES","LanguageSelect","languages","defaultLanguage","showSearch","selectedLanguage","setSelectedLanguage","lang","searchInputRef","filteredLanguages","language","Chat","messages","onSendMessage","showTimestamps","showAvatars","maxHeight","typingIndicator","userName","botName","isFocused","setIsFocused","messagesEndRef","scrollToBottom","handleSubmit","formatTime","n","isUser","isSystem","showAvatar","senderName","Hero","alignment","backgroundImage","backgroundVideo","overlayOpacity","primaryAction","secondaryAction","imageAlt","imagePosition","heroStyles","renderActions","renderVideoBackground","renderOverlay","Footer","brandName","brandLogo","brandDescription","sections","socialLinks","copyright","showYear","bottomLinks","currentYear","renderBrand","renderSections","section","link","linkIndex","renderSocialLinks","social","renderBottom","copyrightText","fullCopyright"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","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/Calendar/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","../src/components/ThemeToggle/index.tsx","../src/components/LanguageSelect/index.tsx","../src/components/Chat/index.tsx","../src/components/Hero/index.tsx","../src/components/Footer/index.tsx","../src/components/Title/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, useMemo } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface CalendarEvent {\n\tid: string\n\tdate: Date\n\ttitle: string\n\tcolor?: string\n}\n\nexport interface CalendarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n\tvalue?: Date\n\tonChange?: (date: Date) => void\n\tminDate?: Date\n\tmaxDate?: Date\n\tevents?: CalendarEvent[]\n\thighlightedDates?: Date[]\n\tdisabledDates?: Date[]\n\tshowWeekNumbers?: boolean\n\tfirstDayOfWeek?: 0 | 1 // 0 = Sunday, 1 = Monday\n\tvariant?: 'default' | 'minimal' | 'modern'\n}\n\nconst MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n\nconst DAYS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n\nexport function Calendar({\n\tvalue,\n\tonChange,\n\tminDate,\n\tmaxDate,\n\tevents = [],\n\thighlightedDates = [],\n\tdisabledDates = [],\n\tshowWeekNumbers = false,\n\tfirstDayOfWeek = 0,\n\tvariant = 'default',\n\tclassName = '',\n\t...props\n}: CalendarProps) {\n\tconst [currentDate, setCurrentDate] = useState(value || new Date())\n\tconst [selectedDate, setSelectedDate] = useState<Date | null>(value || null)\n\tconst [viewDate, setViewDate] = useState(value || new Date())\n\n\tconst daysOfWeek = useMemo(() => {\n\t\tif (firstDayOfWeek === 1) {\n\t\t\treturn [...DAYS.slice(1), DAYS[0]]\n\t\t}\n\t\treturn DAYS\n\t}, [firstDayOfWeek])\n\n\tconst isSameDay = (date1: Date, date2: Date) => {\n\t\treturn (\n\t\t\tdate1.getDate() === date2.getDate() && date1.getMonth() === date2.getMonth() && date1.getFullYear() === date2.getFullYear()\n\t\t)\n\t}\n\n\tconst isDateDisabled = (date: Date) => {\n\t\tif (minDate && date < minDate) return true\n\t\tif (maxDate && date > maxDate) return true\n\t\treturn disabledDates.some((disabledDate) => isSameDay(date, disabledDate))\n\t}\n\n\tconst isDateHighlighted = (date: Date) => {\n\t\treturn highlightedDates.some((highlightedDate) => isSameDay(date, highlightedDate))\n\t}\n\n\tconst getEventsForDate = (date: Date) => {\n\t\treturn events.filter((event) => isSameDay(event.date, date))\n\t}\n\n\tconst getDaysInMonth = (year: number, month: number) => {\n\t\treturn new Date(year, month + 1, 0).getDate()\n\t}\n\n\tconst getFirstDayOfMonth = (year: number, month: number) => {\n\t\tconst day = new Date(year, month, 1).getDay()\n\t\treturn firstDayOfWeek === 1 ? (day === 0 ? 6 : day - 1) : day\n\t}\n\n\tconst getWeekNumber = (date: Date) => {\n\t\tconst firstDayOfYear = new Date(date.getFullYear(), 0, 1)\n\t\tconst pastDaysOfYear = (date.getTime() - firstDayOfYear.getTime()) / 86400000\n\t\treturn Math.ceil((pastDaysOfYear + firstDayOfYear.getDay() + 1) / 7)\n\t}\n\n\tconst calendarDays = useMemo(() => {\n\t\tconst year = viewDate.getFullYear()\n\t\tconst month = viewDate.getMonth()\n\t\tconst daysInMonth = getDaysInMonth(year, month)\n\t\tconst firstDay = getFirstDayOfMonth(year, month)\n\n\t\tconst days: (Date | null)[] = []\n\n\t\t// Previous month days\n\t\tconst prevMonthDays = getDaysInMonth(year, month - 1)\n\t\tfor (let i = firstDay - 1; i >= 0; i--) {\n\t\t\tconst prevMonth = month === 0 ? 11 : month - 1\n\t\t\tconst prevYear = month === 0 ? year - 1 : year\n\t\t\tdays.push(new Date(prevYear, prevMonth, prevMonthDays - i))\n\t\t}\n\n\t\t// Current month days\n\t\tfor (let i = 1; i <= daysInMonth; i++) {\n\t\t\tdays.push(new Date(year, month, i))\n\t\t}\n\n\t\t// Next month days\n\t\tconst remainingDays = 42 - days.length // 6 rows x 7 days\n\t\tfor (let i = 1; i <= remainingDays; i++) {\n\t\t\tconst nextMonth = month === 11 ? 0 : month + 1\n\t\t\tconst nextYear = month === 11 ? year + 1 : year\n\t\t\tdays.push(new Date(nextYear, nextMonth, i))\n\t\t}\n\n\t\treturn days\n\t}, [viewDate, firstDayOfWeek])\n\n\tconst handlePreviousMonth = () => {\n\t\tsetViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() - 1))\n\t}\n\n\tconst handleNextMonth = () => {\n\t\tsetViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + 1))\n\t}\n\n\tconst handleDateClick = (date: Date) => {\n\t\tif (isDateDisabled(date)) return\n\t\tsetSelectedDate(date)\n\t\tonChange?.(date)\n\t}\n\n\tconst handleToday = () => {\n\t\tconst today = new Date()\n\t\tsetViewDate(today)\n\t\tsetSelectedDate(today)\n\t\tonChange?.(today)\n\t}\n\n\tconst isToday = (date: Date) => isSameDay(date, new Date())\n\tconst isSelected = (date: Date) => selectedDate && isSameDay(date, selectedDate)\n\tconst isCurrentMonth = (date: Date) => date.getMonth() === viewDate.getMonth()\n\n\t// Group days into weeks\n\tconst weeks = []\n\tfor (let i = 0; i < calendarDays.length; i += 7) {\n\t\tweeks.push(calendarDays.slice(i, i + 7))\n\t}\n\n\treturn (\n\t\t<div className={`${styles.calendar} ${styles[variant]} ${className}`} {...props}>\n\t\t\t<div className={styles.header}>\n\t\t\t\t<button type=\"button\" className={styles.navButton} onClick={handlePreviousMonth} aria-label=\"Previous month\">\n\t\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t<path d=\"M15 18L9 12L15 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t\t<div className={styles.monthYear}>\n\t\t\t\t\t<span className={styles.month}>{MONTHS[viewDate.getMonth()]}</span>\n\t\t\t\t\t<span className={styles.year}>{viewDate.getFullYear()}</span>\n\t\t\t\t</div>\n\t\t\t\t<button type=\"button\" className={styles.navButton} onClick={handleNextMonth} aria-label=\"Next month\">\n\t\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t<path d=\"M9 18L15 12L9 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div className={styles.weekdays}>\n\t\t\t\t{showWeekNumbers && <div className={styles.weekNumber}>Wk</div>}\n\t\t\t\t{daysOfWeek.map((day) => (\n\t\t\t\t\t<div key={day} className={styles.weekday}>\n\t\t\t\t\t\t{day}\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\n\t\t\t<div className={styles.days}>\n\t\t\t\t{weeks.map((week, weekIndex) => (\n\t\t\t\t\t<div key={weekIndex} className={styles.week}>\n\t\t\t\t\t\t{showWeekNumbers && week[0] && (\n\t\t\t\t\t\t\t<div className={styles.weekNumber}>{getWeekNumber(week[0] as Date)}</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{week.map((date, dayIndex) => {\n\t\t\t\t\t\t\tif (!date) return <div key={dayIndex} className={styles.day} />\n\n\t\t\t\t\t\t\tconst dayEvents = getEventsForDate(date)\n\t\t\t\t\t\t\tconst isHighlighted = isDateHighlighted(date)\n\t\t\t\t\t\t\tconst disabled = isDateDisabled(date)\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={dayIndex}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName={`${styles.day} ${isCurrentMonth(date) ? styles.currentMonth : styles.otherMonth} ${\n\t\t\t\t\t\t\t\t\t\tisToday(date) ? styles.today : ''\n\t\t\t\t\t\t\t\t\t} ${isSelected(date) ? styles.selected : ''} ${isHighlighted ? styles.highlighted : ''} ${\n\t\t\t\t\t\t\t\t\t\tdisabled ? styles.disabled : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => handleDateClick(date)}\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\taria-label={date.toDateString()}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span className={styles.dayNumber}>{date.getDate()}</span>\n\t\t\t\t\t\t\t\t\t{dayEvents.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t<div className={styles.eventIndicators}>\n\t\t\t\t\t\t\t\t\t\t\t{dayEvents.slice(0, 3).map((event) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={event.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={styles.eventDot}\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ backgroundColor: event.color || '#6366f1' }}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={event.title}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t))}\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</button>\n\t\t\t\t\t\t\t)\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<div className={styles.footer}>\n\t\t\t\t<button type=\"button\" className={styles.todayButton} onClick={handleToday}>\n\t\t\t\t\tToday\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport { Calendar } from '../Calendar'\nimport styles from './styles.module.scss'\n\nexport interface DatePickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n\tvalue?: Date\n\tonChange?: (date: Date | null) => void\n\tminDate?: Date\n\tmaxDate?: Date\n\tplaceholder?: string\n\tdisabled?: boolean\n\tvariant?: 'default' | 'minimal' | 'modern'\n}\n\nexport function DatePicker({\n\tvalue,\n\tonChange,\n\tminDate,\n\tmaxDate,\n\tplaceholder = 'Select a date',\n\tdisabled = false,\n\tvariant = 'default',\n\tclassName = '',\n\t...props\n}: DatePickerProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst containerRef = useRef<HTMLDivElement>(null)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (containerRef.current && !containerRef.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 handleDateChange = (date: Date) => {\n\t\tonChange?.(date)\n\t\tsetIsOpen(false)\n\t}\n\n\tconst handleClear = (e: React.MouseEvent) => {\n\t\te.stopPropagation()\n\t\tonChange?.(null)\n\t}\n\n\tconst formatDisplayDate = (date: Date): string => {\n\t\treturn date.toLocaleDateString('en-US', {\n\t\t\tyear: 'numeric',\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric'\n\t\t})\n\t}\n\n\treturn (\n\t\t<div className={`${styles.datePicker} ${className}`} ref={containerRef} {...props}>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={`${styles.input} ${disabled ? styles.disabled : ''}`}\n\t\t\t\tonClick={() => !disabled && setIsOpen(!isOpen)}\n\t\t\t\tdisabled={disabled}\n\t\t\t>\n\t\t\t\t<span className={styles.value}>\n\t\t\t\t\t{value ? formatDisplayDate(value) : placeholder}\n\t\t\t\t</span>\n\t\t\t\t<span className={styles.icons}>\n\t\t\t\t\t{value && !disabled && (\n\t\t\t\t\t\t<span className={styles.clearIcon} onClick={handleClear}>\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\t<span className={styles.icon}>📅</span>\n\t\t\t\t</span>\n\t\t\t</button>\n\t\t\t{isOpen && (\n\t\t\t\t<div className={styles.popover}>\n\t\t\t\t\t<Calendar\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tonChange={handleDateChange}\n\t\t\t\t\t\tminDate={minDate}\n\t\t\t\t\t\tmaxDate={maxDate}\n\t\t\t\t\t\tvariant={variant}\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, { useState, useRef, useEffect } from 'react'\nimport { Calendar } from '../Calendar'\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\tplaceholder?: string\n\tdisabled?: boolean\n\tvariant?: 'default' | 'minimal' | 'modern'\n}\n\nexport function DateRangePicker({\n\tvalue,\n\tonChange,\n\tminDate,\n\tmaxDate,\n\tclassName = '',\n\tplaceholder = 'Select date range',\n\tdisabled = false,\n\tvariant = 'default'\n}: DateRangePickerProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [tempRange, setTempRange] = useState<DateRange>({ start: null, end: null })\n\tconst [selectingEnd, setSelectingEnd] = useState(false)\n\tconst containerRef = useRef<HTMLDivElement>(null)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t\tsetTempRange({ start: null, end: null })\n\t\t\t\tsetSelectingEnd(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 handleDateClick = (date: Date) => {\n\t\tif (!selectingEnd) {\n\t\t\t// First click - set start date\n\t\t\tsetTempRange({ start: date, end: null })\n\t\t\tsetSelectingEnd(true)\n\t\t} else {\n\t\t\t// Second click - set end date\n\t\t\tconst start = tempRange.start!\n\t\t\tconst end = date\n\n\t\t\t// Ensure start is before end\n\t\t\tif (start > end) {\n\t\t\t\tonChange?.({ start: end, end: start })\n\t\t\t} else {\n\t\t\t\tonChange?.({ start, end })\n\t\t\t}\n\n\t\t\tsetIsOpen(false)\n\t\t\tsetTempRange({ start: null, end: null })\n\t\t\tsetSelectingEnd(false)\n\t\t}\n\t}\n\n\tconst handleClear = (e: React.MouseEvent) => {\n\t\te.stopPropagation()\n\t\tonChange?.({ start: null, end: null })\n\t\tsetTempRange({ start: null, end: null })\n\t\tsetSelectingEnd(false)\n\t}\n\n\tconst formatDisplayDate = (date: Date): string => {\n\t\treturn date.toLocaleDateString('en-US', {\n\t\t\tyear: 'numeric',\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric'\n\t\t})\n\t}\n\n\tconst getDisplayValue = () => {\n\t\tif (value?.start && value?.end) {\n\t\t\treturn `${formatDisplayDate(value.start)} → ${formatDisplayDate(value.end)}`\n\t\t}\n\t\tif (value?.start) {\n\t\t\treturn formatDisplayDate(value.start)\n\t\t}\n\t\treturn placeholder\n\t}\n\n\t// Get highlighted dates for the range\n\tconst getHighlightedDates = () => {\n\t\tconst dates: Date[] = []\n\t\tconst start = tempRange.start || value?.start\n\t\tconst end = tempRange.end || value?.end\n\n\t\tif (start && end) {\n\t\t\tconst current = new Date(start)\n\t\t\twhile (current <= end) {\n\t\t\t\tdates.push(new Date(current))\n\t\t\t\tcurrent.setDate(current.getDate() + 1)\n\t\t\t}\n\t\t}\n\n\t\treturn dates\n\t}\n\n\treturn (\n\t\t<div className={`${styles.dateRangePicker} ${className}`} ref={containerRef}>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={`${styles.input} ${disabled ? styles.disabled : ''}`}\n\t\t\t\tonClick={() => !disabled && setIsOpen(!isOpen)}\n\t\t\t\tdisabled={disabled}\n\t\t\t>\n\t\t\t\t<span className={styles.value}>{getDisplayValue()}</span>\n\t\t\t\t<span className={styles.icons}>\n\t\t\t\t\t{(value?.start || value?.end) && !disabled && (\n\t\t\t\t\t\t<span className={styles.clearIcon} onClick={handleClear}>\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\t<span className={styles.icon}>📅</span>\n\t\t\t\t</span>\n\t\t\t</button>\n\t\t\t{isOpen && (\n\t\t\t\t<div className={styles.popover}>\n\t\t\t\t\t<div className={styles.rangeInfo}>\n\t\t\t\t\t\t{!selectingEnd ? 'Select start date' : 'Select end date'}\n\t\t\t\t\t</div>\n\t\t\t\t\t<Calendar\n\t\t\t\t\t\tvalue={tempRange.start || value?.start || undefined}\n\t\t\t\t\t\tonChange={handleDateClick}\n\t\t\t\t\t\tminDate={minDate}\n\t\t\t\t\t\tmaxDate={maxDate}\n\t\t\t\t\t\thighlightedDates={getHighlightedDates()}\n\t\t\t\t\t\tvariant={variant}\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 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","import React, { useEffect, useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface ThemeToggleProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n\tdefaultTheme?: 'light' | 'dark'\n\tonThemeChange?: (theme: 'light' | 'dark') => void\n}\n\nexport function ThemeToggle({ defaultTheme = 'dark', onThemeChange, className = '', ...props }: ThemeToggleProps) {\n\tconst [theme, setTheme] = useState<'light' | 'dark'>(() => {\n\t\tif (typeof window === 'undefined') return defaultTheme\n\n\t\tconst savedTheme = localStorage.getItem('theme') as 'light' | 'dark' | null\n\t\treturn savedTheme || defaultTheme\n\t})\n\n\tuseEffect(() => {\n\t\t// Apply theme to body on mount and when theme changes\n\t\tif (theme === 'light') {\n\t\t\tdocument.body.classList.add('light-mode')\n\t\t} else {\n\t\t\tdocument.body.classList.remove('light-mode')\n\t\t}\n\n\t\t// Save to localStorage\n\t\tlocalStorage.setItem('theme', theme)\n\n\t\t// Call callback if provided\n\t\tonThemeChange?.(theme)\n\t}, [theme, onThemeChange])\n\n\tconst toggleTheme = () => {\n\t\tsetTheme((prev) => (prev === 'light' ? 'dark' : 'light'))\n\t}\n\n\treturn (\n\t\t<button type=\"button\" className={`${styles.themeToggle} ${className}`} onClick={toggleTheme} aria-label=\"Toggle theme\" {...props}>\n\t\t\t<div className={`${styles.iconContainer} ${theme === 'light' ? styles.light : styles.dark}`}>\n\t\t\t\t<svg className={`${styles.icon} ${styles.sun}`} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"5\" fill=\"currentColor\" />\n\t\t\t\t\t<line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t\t<line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t\t<line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t\t<line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t\t<line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t\t<line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t\t<line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t\t<line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n\t\t\t\t</svg>\n\t\t\t\t<svg className={`${styles.icon} ${styles.moon}`} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"\n\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t</button>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface Language {\n\tcode: string\n\tname: string\n\tnativeName: string\n\tflag: string\n}\n\nexport interface LanguageSelectProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n\tlanguages?: Language[]\n\tdefaultLanguage?: string\n\tonChange?: (language: Language) => void\n\tdisabled?: boolean\n\tshowSearch?: boolean\n\tlabel?: string\n}\n\nconst DEFAULT_LANGUAGES: Language[] = [\n\t{ code: 'en', name: 'English', nativeName: 'English', flag: '🇺🇸' },\n\t{ code: 'es', name: 'Spanish', nativeName: 'Español', flag: '🇪🇸' },\n\t{ code: 'fr', name: 'French', nativeName: 'Français', flag: '🇫🇷' },\n\t{ code: 'de', name: 'German', nativeName: 'Deutsch', flag: '🇩🇪' },\n\t{ code: 'it', name: 'Italian', nativeName: 'Italiano', flag: '🇮🇹' },\n\t{ code: 'pt', name: 'Portuguese', nativeName: 'Português', flag: '🇵🇹' },\n\t{ code: 'ru', name: 'Russian', nativeName: 'Русский', flag: '🇷🇺' },\n\t{ code: 'ja', name: 'Japanese', nativeName: '日本語', flag: '🇯🇵' },\n\t{ code: 'zh', name: 'Chinese', nativeName: '中文', flag: '🇨🇳' },\n\t{ code: 'ko', name: 'Korean', nativeName: '한국어', flag: '🇰🇷' },\n\t{ code: 'ar', name: 'Arabic', nativeName: 'العربية', flag: '🇸🇦' },\n\t{ code: 'hi', name: 'Hindi', nativeName: 'हिन्दी', flag: '🇮🇳' }\n]\n\nexport function LanguageSelect({\n\tlanguages = DEFAULT_LANGUAGES,\n\tdefaultLanguage = 'en',\n\tonChange,\n\tdisabled = false,\n\tshowSearch = false,\n\tlabel,\n\tclassName = '',\n\t...props\n}: LanguageSelectProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [selectedLanguage, setSelectedLanguage] = useState<Language>(() => {\n\t\treturn languages.find((lang) => lang.code === defaultLanguage) || languages[0]\n\t})\n\tconst [searchQuery, setSearchQuery] = useState('')\n\tconst [highlightedIndex, setHighlightedIndex] = useState(0)\n\tconst containerRef = useRef<HTMLDivElement>(null)\n\tconst searchInputRef = useRef<HTMLInputElement>(null)\n\n\tconst filteredLanguages = languages.filter(\n\t\t(lang) =>\n\t\t\tlang.name.toLowerCase().includes(searchQuery.toLowerCase()) ||\n\t\t\tlang.nativeName.toLowerCase().includes(searchQuery.toLowerCase()) ||\n\t\t\tlang.code.toLowerCase().includes(searchQuery.toLowerCase())\n\t)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (containerRef.current && !containerRef.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\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\tuseEffect(() => {\n\t\tif (isOpen && showSearch && searchInputRef.current) {\n\t\t\tsearchInputRef.current.focus()\n\t\t}\n\t}, [isOpen, showSearch])\n\n\tconst handleSelect = (language: Language) => {\n\t\tsetSelectedLanguage(language)\n\t\tsetIsOpen(false)\n\t\tsetSearchQuery('')\n\t\tonChange?.(language)\n\t}\n\n\tconst handleKeyDown = (e: React.KeyboardEvent) => {\n\t\tif (disabled) return\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\tif (!isOpen) {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\tsetIsOpen(true)\n\t\t\t\t} else if (filteredLanguages[highlightedIndex]) {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\thandleSelect(filteredLanguages[highlightedIndex])\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'Escape':\n\t\t\t\tsetIsOpen(false)\n\t\t\t\tsetSearchQuery('')\n\t\t\t\tbreak\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (!isOpen) {\n\t\t\t\t\tsetIsOpen(true)\n\t\t\t\t} else {\n\t\t\t\t\tsetHighlightedIndex((prev) => (prev < filteredLanguages.length - 1 ? prev + 1 : 0))\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (isOpen) {\n\t\t\t\t\tsetHighlightedIndex((prev) => (prev > 0 ? prev - 1 : filteredLanguages.length - 1))\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className={`${styles.languageSelectContainer} ${className}`} ref={containerRef} {...props}>\n\t\t\t{label && <label className={styles.label}>{label}</label>}\n\t\t\t<div className={`${styles.languageSelect} ${disabled ? styles.disabled : ''}`}>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName={`${styles.trigger} ${isOpen ? styles.open : ''}`}\n\t\t\t\t\tonClick={() => !disabled && setIsOpen(!isOpen)}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\taria-expanded={isOpen}\n\t\t\t\t>\n\t\t\t\t\t<span className={styles.flag}>{selectedLanguage.flag}</span>\n\t\t\t\t\t<span className={styles.selectedText}>\n\t\t\t\t\t\t<span className={styles.languageName}>{selectedLanguage.name}</span>\n\t\t\t\t\t\t<span className={styles.nativeName}>{selectedLanguage.nativeName}</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<svg className={styles.chevron} viewBox=\"0 0 20 20\" fill=\"currentColor\">\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\t\t\t\td=\"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z\"\n\t\t\t\t\t\t\tclipRule=\"evenodd\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\n\t\t\t\t{isOpen && (\n\t\t\t\t\t<div className={styles.dropdown}>\n\t\t\t\t\t\t{showSearch && (\n\t\t\t\t\t\t\t<div className={styles.searchContainer}>\n\t\t\t\t\t\t\t\t<svg className={styles.searchIcon} viewBox=\"0 0 20 20\" fill=\"currentColor\">\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\td=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n\t\t\t\t\t\t\t\t\t\tclipRule=\"evenodd\"\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\t<input\n\t\t\t\t\t\t\t\t\tref={searchInputRef}\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\tclassName={styles.searchInput}\n\t\t\t\t\t\t\t\t\tplaceholder=\"Search languages...\"\n\t\t\t\t\t\t\t\t\tvalue={searchQuery}\n\t\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\t\tsetSearchQuery(e.target.value)\n\t\t\t\t\t\t\t\t\t\tsetHighlightedIndex(0)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<ul className={styles.list} role=\"listbox\">\n\t\t\t\t\t\t\t{filteredLanguages.length > 0 ? (\n\t\t\t\t\t\t\t\tfilteredLanguages.map((language, index) => (\n\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\tkey={language.code}\n\t\t\t\t\t\t\t\t\t\tclassName={`${styles.option} ${selectedLanguage.code === language.code ? styles.selected : ''} ${\n\t\t\t\t\t\t\t\t\t\t\tindex === highlightedIndex ? styles.highlighted : ''\n\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\tonClick={() => handleSelect(language)}\n\t\t\t\t\t\t\t\t\t\tonMouseEnter={() => setHighlightedIndex(index)}\n\t\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\t\taria-selected={selectedLanguage.code === language.code}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<span className={styles.optionFlag}>{language.flag}</span>\n\t\t\t\t\t\t\t\t\t\t<span className={styles.optionText}>\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.optionName}>{language.name}</span>\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.optionNative}>{language.nativeName}</span>\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t{selectedLanguage.code === language.code && (\n\t\t\t\t\t\t\t\t\t\t\t<svg className={styles.checkIcon} viewBox=\"0 0 20 20\" fill=\"currentColor\">\n\t\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\t\t\t\td=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclipRule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<li className={styles.noResults}>No languages found</li>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t)}\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 interface ChatMessage {\n\tid: string\n\tcontent: string\n\tsender: 'user' | 'bot' | 'system'\n\ttimestamp: Date\n\tavatar?: string\n\tsenderName?: string\n\tisTyping?: boolean\n}\n\nexport interface ChatProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSubmit'> {\n\tmessages: ChatMessage[]\n\tonSendMessage?: (message: string) => void\n\tplaceholder?: string\n\tdisabled?: boolean\n\tshowTimestamps?: boolean\n\tshowAvatars?: boolean\n\tmaxHeight?: string\n\ttypingIndicator?: boolean\n\tuserName?: string\n\tbotName?: string\n\tenableMarkdown?: boolean\n}\n\nexport function Chat({\n\tmessages,\n\tonSendMessage,\n\tplaceholder = 'Type a message...',\n\tdisabled = false,\n\tshowTimestamps = false,\n\tshowAvatars = true,\n\tmaxHeight = '600px',\n\ttypingIndicator = false,\n\tuserName = 'You',\n\tbotName = 'Assistant',\n\tclassName = '',\n\t...props\n}: ChatProps) {\n\tconst [inputValue, setInputValue] = useState('')\n\tconst [isFocused, setIsFocused] = useState(false)\n\tconst messagesEndRef = useRef<HTMLDivElement>(null)\n\tconst inputRef = useRef<HTMLTextAreaElement>(null)\n\n\tconst scrollToBottom = () => {\n\t\tmessagesEndRef.current?.scrollIntoView({ behavior: 'smooth' })\n\t}\n\n\tuseEffect(() => {\n\t\tscrollToBottom()\n\t}, [messages])\n\n\tconst handleSubmit = (e: React.FormEvent) => {\n\t\te.preventDefault()\n\t\tif (inputValue.trim() && onSendMessage && !disabled) {\n\t\t\tonSendMessage(inputValue.trim())\n\t\t\tsetInputValue('')\n\t\t\tif (inputRef.current) {\n\t\t\t\tinputRef.current.style.height = 'auto'\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n\t\tif (e.key === 'Enter' && !e.shiftKey) {\n\t\t\te.preventDefault()\n\t\t\thandleSubmit(e)\n\t\t}\n\t}\n\n\tconst handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n\t\tsetInputValue(e.target.value)\n\t\t// Auto-resize textarea\n\t\te.target.style.height = 'auto'\n\t\te.target.style.height = `${Math.min(e.target.scrollHeight, 120)}px`\n\t}\n\n\tconst formatTime = (date: Date) => {\n\t\treturn date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })\n\t}\n\n\tconst getInitials = (name: string) => {\n\t\treturn name\n\t\t\t.split(' ')\n\t\t\t.map((n) => n[0])\n\t\t\t.join('')\n\t\t\t.toUpperCase()\n\t\t\t.slice(0, 2)\n\t}\n\n\treturn (\n\t\t<div className={`${styles.chatContainer} ${className}`} {...props}>\n\t\t\t<div className={styles.messagesWrapper} style={{ maxHeight }}>\n\t\t\t\t{messages.length === 0 ? (\n\t\t\t\t\t<div className={styles.emptyState}>\n\t\t\t\t\t\t<div className={styles.emptyIcon}>💬</div>\n\t\t\t\t\t\t<p className={styles.emptyText}>No messages yet</p>\n\t\t\t\t\t\t<p className={styles.emptySubtext}>Start a conversation!</p>\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<div className={styles.messagesList}>\n\t\t\t\t\t\t{messages.map((message, index) => {\n\t\t\t\t\t\t\tconst isUser = message.sender === 'user'\n\t\t\t\t\t\t\tconst isSystem = message.sender === 'system'\n\t\t\t\t\t\t\tconst showAvatar = showAvatars && !isSystem\n\t\t\t\t\t\t\tconst senderName = isUser ? userName : message.senderName || botName\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={message.id}\n\t\t\t\t\t\t\t\t\tclassName={`${styles.messageGroup} ${isUser ? styles.userMessage : ''} ${isSystem ? styles.systemMessage : ''}`}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{showAvatar && (\n\t\t\t\t\t\t\t\t\t\t<div className={styles.avatarWrapper}>\n\t\t\t\t\t\t\t\t\t\t\t{message.avatar ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<img src={message.avatar} alt={senderName} className={styles.avatar} />\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={`${styles.avatarPlaceholder} ${isUser ? styles.userAvatar : styles.botAvatar}`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{getInitials(senderName)}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\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\t<div className={styles.messageContent}>\n\t\t\t\t\t\t\t\t\t\t{!isSystem && !isUser && (\n\t\t\t\t\t\t\t\t\t\t\t<div className={styles.senderName}>{senderName}</div>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t<div className={`${styles.messageBubble} ${message.isTyping ? styles.typing : ''}`}>\n\t\t\t\t\t\t\t\t\t\t\t{message.isTyping ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={styles.typingIndicator}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className={styles.dot}></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className={styles.dot}></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className={styles.dot}></span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<p className={styles.messageText}>{message.content}</p>\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\t{showTimestamps && !message.isTyping && (\n\t\t\t\t\t\t\t\t\t\t\t<div className={styles.timestamp}>{formatTime(message.timestamp)}</div>\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\t\t\t\t\t\t})}\n\t\t\t\t\t\t{typingIndicator && (\n\t\t\t\t\t\t\t<div className={`${styles.messageGroup}`}>\n\t\t\t\t\t\t\t\t{showAvatars && (\n\t\t\t\t\t\t\t\t\t<div className={styles.avatarWrapper}>\n\t\t\t\t\t\t\t\t\t\t<div className={`${styles.avatarPlaceholder} ${styles.botAvatar}`}>\n\t\t\t\t\t\t\t\t\t\t\t{getInitials(botName)}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div className={styles.messageContent}>\n\t\t\t\t\t\t\t\t\t<div className={styles.senderName}>{botName}</div>\n\t\t\t\t\t\t\t\t\t<div className={`${styles.messageBubble} ${styles.typing}`}>\n\t\t\t\t\t\t\t\t\t\t<div className={styles.typingIndicator}>\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.dot}></span>\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.dot}></span>\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.dot}></span>\n\t\t\t\t\t\t\t\t\t\t</div>\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</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div ref={messagesEndRef} />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<form onSubmit={handleSubmit} className={styles.inputForm}>\n\t\t\t\t<div className={`${styles.inputWrapper} ${isFocused ? styles.focused : ''}`}>\n\t\t\t\t\t<textarea\n\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\tclassName={styles.input}\n\t\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t\tonFocus={() => setIsFocused(true)}\n\t\t\t\t\t\tonBlur={() => setIsFocused(false)}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\trows={1}\n\t\t\t\t\t/>\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tclassName={`${styles.sendButton} ${inputValue.trim() ? styles.active : ''}`}\n\t\t\t\t\t\tdisabled={!inputValue.trim() || disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t<svg className={styles.sendIcon} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M22 2L11 13M22 2L15 22L11 13M22 2L2 9L11 13\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type HeroVariant = 'default' | 'gradient' | 'image' | 'video' | 'split' | 'centered' | 'minimal'\nexport type HeroSize = 'small' | 'medium' | 'large' | 'fullscreen'\nexport type HeroAlignment = 'left' | 'center' | 'right'\n\nexport interface HeroProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {\n\t/** Hero variant style */\n\tvariant?: HeroVariant\n\t/** Hero size */\n\tsize?: HeroSize\n\t/** Content alignment */\n\talignment?: HeroAlignment\n\t/** Hero title */\n\ttitle?: React.ReactNode\n\t/** Hero subtitle or description */\n\tsubtitle?: React.ReactNode\n\t/** Background image URL */\n\tbackgroundImage?: string\n\t/** Background video URL */\n\tbackgroundVideo?: string\n\t/** Background overlay opacity (0-1) */\n\toverlayOpacity?: number\n\t/** Primary action button */\n\tprimaryAction?: {\n\t\tlabel: string\n\t\tonClick?: () => void\n\t\thref?: string\n\t}\n\t/** Secondary action button */\n\tsecondaryAction?: {\n\t\tlabel: string\n\t\tonClick?: () => void\n\t\thref?: string\n\t}\n\t/** Additional content to render in the hero */\n\tchildren?: React.ReactNode\n\t/** Image to display (for split variant) */\n\timage?: string\n\t/** Image alt text */\n\timageAlt?: string\n\t/** Image position (for split variant) */\n\timagePosition?: 'left' | 'right'\n}\n\nexport function Hero({\n\tvariant = 'default',\n\tsize = 'large',\n\talignment = 'center',\n\ttitle,\n\tsubtitle,\n\tbackgroundImage,\n\tbackgroundVideo,\n\toverlayOpacity = 0.5,\n\tprimaryAction,\n\tsecondaryAction,\n\tchildren,\n\timage,\n\timageAlt = 'Hero image',\n\timagePosition = 'right',\n\tclassName = '',\n\tstyle,\n\t...props\n}: HeroProps) {\n\tconst heroStyles: React.CSSProperties = {\n\t\t...style\n\t}\n\n\t// Handle background image\n\tif (backgroundImage && variant === 'image') {\n\t\theroStyles.backgroundImage = `url(${backgroundImage})`\n\t}\n\n\tconst renderActions = () => {\n\t\tif (!primaryAction && !secondaryAction) return null\n\n\t\treturn (\n\t\t\t<div className={styles.actions}>\n\t\t\t\t{primaryAction && (\n\t\t\t\t\tprimaryAction.href ? (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={primaryAction.href}\n\t\t\t\t\t\t\tclassName={`${styles.button} ${styles.primary}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{primaryAction.label}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={primaryAction.onClick}\n\t\t\t\t\t\t\tclassName={`${styles.button} ${styles.primary}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{primaryAction.label}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t\t{secondaryAction && (\n\t\t\t\t\tsecondaryAction.href ? (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={secondaryAction.href}\n\t\t\t\t\t\t\tclassName={`${styles.button} ${styles.secondary}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{secondaryAction.label}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={secondaryAction.onClick}\n\t\t\t\t\t\t\tclassName={`${styles.button} ${styles.secondary}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{secondaryAction.label}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t</div>\n\t\t)\n\t}\n\n\tconst renderContent = () => (\n\t\t<div className={styles.content}>\n\t\t\t{title && <h1 className={styles.title}>{title}</h1>}\n\t\t\t{subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n\t\t\t{renderActions()}\n\t\t\t{children && <div className={styles.children}>{children}</div>}\n\t\t</div>\n\t)\n\n\tconst renderVideoBackground = () => {\n\t\tif (!backgroundVideo || variant !== 'video') return null\n\n\t\treturn (\n\t\t\t<video\n\t\t\t\tclassName={styles.backgroundVideo}\n\t\t\t\tautoPlay\n\t\t\t\tloop\n\t\t\t\tmuted\n\t\t\t\tplaysInline\n\t\t\t>\n\t\t\t\t<source src={backgroundVideo} type=\"video/mp4\" />\n\t\t\t</video>\n\t\t)\n\t}\n\n\tconst renderOverlay = () => {\n\t\tif ((variant === 'image' || variant === 'video') && overlayOpacity > 0) {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tclassName={styles.overlay}\n\t\t\t\t\tstyle={{ opacity: overlayOpacity }}\n\t\t\t\t/>\n\t\t\t)\n\t\t}\n\t\treturn null\n\t}\n\n\t// Split variant with image\n\tif (variant === 'split' && image) {\n\t\treturn (\n\t\t\t<section\n\t\t\t\tclassName={`${styles.hero} ${styles[variant]} ${styles[size]} ${styles[alignment]} ${imagePosition === 'left' ? styles.imageLeft : styles.imageRight} ${className}`}\n\t\t\t\tstyle={heroStyles}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div className={styles.container}>\n\t\t\t\t\t<div className={styles.splitContent}>\n\t\t\t\t\t\t{renderContent()}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={styles.splitImage}>\n\t\t\t\t\t\t<img src={image} alt={imageAlt} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</section>\n\t\t)\n\t}\n\n\t// Standard hero variants\n\treturn (\n\t\t<section\n\t\t\tclassName={`${styles.hero} ${styles[variant]} ${styles[size]} ${styles[alignment]} ${className}`}\n\t\t\tstyle={heroStyles}\n\t\t\t{...props}\n\t\t>\n\t\t\t{renderVideoBackground()}\n\t\t\t{renderOverlay()}\n\t\t\t<div className={styles.container}>\n\t\t\t\t{renderContent()}\n\t\t\t</div>\n\t\t</section>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type FooterVariant = 'default' | 'minimal' | 'centered' | 'stacked'\n\nexport interface FooterLink {\n\tlabel: string\n\thref: string\n\texternal?: boolean\n}\n\nexport interface FooterSection {\n\ttitle: string\n\tlinks: FooterLink[]\n}\n\nexport interface SocialLink {\n\tplatform: string\n\thref: string\n\ticon?: React.ReactNode\n}\n\nexport interface FooterProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {\n\t/** Footer variant style */\n\tvariant?: FooterVariant\n\t/** Company or brand name */\n\tbrandName?: string\n\t/** Brand logo */\n\tbrandLogo?: React.ReactNode\n\t/** Brand description or tagline */\n\tbrandDescription?: string\n\t/** Footer sections with links */\n\tsections?: FooterSection[]\n\t/** Social media links */\n\tsocialLinks?: SocialLink[]\n\t/** Copyright text */\n\tcopyright?: string\n\t/** Show current year in copyright */\n\tshowYear?: boolean\n\t/** Bottom links (Privacy, Terms, etc) */\n\tbottomLinks?: FooterLink[]\n\t/** Additional content */\n\tchildren?: React.ReactNode\n}\n\nexport function Footer({\n\tvariant = 'default',\n\tbrandName,\n\tbrandLogo,\n\tbrandDescription,\n\tsections = [],\n\tsocialLinks = [],\n\tcopyright,\n\tshowYear = true,\n\tbottomLinks = [],\n\tchildren,\n\tclassName = '',\n\t...props\n}: FooterProps) {\n\tconst currentYear = new Date().getFullYear()\n\n\tconst renderBrand = () => {\n\t\tif (!brandName && !brandLogo && !brandDescription) return null\n\n\t\treturn (\n\t\t\t<div className={styles.brand}>\n\t\t\t\t{(brandLogo || brandName) && (\n\t\t\t\t\t<div className={styles.brandHeader}>\n\t\t\t\t\t\t{brandLogo && <div className={styles.brandLogo}>{brandLogo}</div>}\n\t\t\t\t\t\t{brandName && <div className={styles.brandName}>{brandName}</div>}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{brandDescription && (\n\t\t\t\t\t<p className={styles.brandDescription}>{brandDescription}</p>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t)\n\t}\n\n\tconst renderSections = () => {\n\t\tif (sections.length === 0) return null\n\n\t\treturn (\n\t\t\t<div className={styles.sections}>\n\t\t\t\t{sections.map((section, index) => (\n\t\t\t\t\t<div key={index} className={styles.section}>\n\t\t\t\t\t\t<h3 className={styles.sectionTitle}>{section.title}</h3>\n\t\t\t\t\t\t<ul className={styles.linkList}>\n\t\t\t\t\t\t\t{section.links.map((link, linkIndex) => (\n\t\t\t\t\t\t\t\t<li key={linkIndex}>\n\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\thref={link.href}\n\t\t\t\t\t\t\t\t\t\tclassName={styles.link}\n\t\t\t\t\t\t\t\t\t\ttarget={link.external ? '_blank' : undefined}\n\t\t\t\t\t\t\t\t\t\trel={link.external ? 'noopener noreferrer' : undefined}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{link.label}\n\t\t\t\t\t\t\t\t\t\t{link.external && (\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.externalIcon} aria-label=\"Opens in new tab\">\n\t\t\t\t\t\t\t\t\t\t\t\t↗\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t)\n\t}\n\n\tconst renderSocialLinks = () => {\n\t\tif (socialLinks.length === 0) return null\n\n\t\treturn (\n\t\t\t<div className={styles.social}>\n\t\t\t\t<div className={styles.socialTitle}>Follow Us</div>\n\t\t\t\t<div className={styles.socialLinks}>\n\t\t\t\t\t{socialLinks.map((social, index) => (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\thref={social.href}\n\t\t\t\t\t\t\tclassName={styles.socialLink}\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\taria-label={social.platform}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{social.icon || social.platform}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n\n\tconst renderBottom = () => {\n\t\tconst copyrightText = copyright || (brandName ? `© ${brandName}` : '© All rights reserved')\n\t\tconst fullCopyright = showYear ? `${copyrightText} ${currentYear}` : copyrightText\n\n\t\treturn (\n\t\t\t<div className={styles.bottom}>\n\t\t\t\t<div className={styles.copyright}>{fullCopyright}</div>\n\t\t\t\t{bottomLinks.length > 0 && (\n\t\t\t\t\t<div className={styles.bottomLinks}>\n\t\t\t\t\t\t{bottomLinks.map((link, index) => (\n\t\t\t\t\t\t\t<React.Fragment key={index}>\n\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\thref={link.href}\n\t\t\t\t\t\t\t\t\tclassName={styles.bottomLink}\n\t\t\t\t\t\t\t\t\ttarget={link.external ? '_blank' : undefined}\n\t\t\t\t\t\t\t\t\trel={link.external ? 'noopener noreferrer' : undefined}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{link.label}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t{index < bottomLinks.length - 1 && (\n\t\t\t\t\t\t\t\t\t<span className={styles.separator}>•</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn (\n\t\t<footer className={`${styles.footer} ${styles[variant]} ${className}`} {...props}>\n\t\t\t<div className={styles.container}>\n\t\t\t\t{variant === 'centered' ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className={styles.centeredContent}>\n\t\t\t\t\t\t\t{renderBrand()}\n\t\t\t\t\t\t\t{renderSocialLinks()}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{sections.length > 0 && (\n\t\t\t\t\t\t\t<div className={styles.centeredSections}>\n\t\t\t\t\t\t\t\t{renderSections()}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{children && <div className={styles.children}>{children}</div>}\n\t\t\t\t\t\t{renderBottom()}\n\t\t\t\t\t</>\n\t\t\t\t) : variant === 'stacked' ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{renderBrand()}\n\t\t\t\t\t\t{renderSections()}\n\t\t\t\t\t\t{renderSocialLinks()}\n\t\t\t\t\t\t{children && <div className={styles.children}>{children}</div>}\n\t\t\t\t\t\t{renderBottom()}\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className={styles.main}>\n\t\t\t\t\t\t\t{renderBrand()}\n\t\t\t\t\t\t\t{renderSections()}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{(socialLinks.length > 0 || children) && (\n\t\t\t\t\t\t\t<div className={styles.sidebar}>\n\t\t\t\t\t\t\t\t{renderSocialLinks()}\n\t\t\t\t\t\t\t\t{children && <div className={styles.children}>{children}</div>}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{renderBottom()}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</footer>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface TitleProps {\n\tchildren: React.ReactNode\n\tsubtitle?: string\n\tlevel?: 1 | 2 | 3 | 4 | 5 | 6\n\talign?: 'left' | 'center' | 'right'\n\tclassName?: string\n}\n\nexport function Title({ children, subtitle, level = 1, align = 'left', className = '' }: TitleProps) {\n\tconst HeadingTag = `h${level}` as keyof JSX.IntrinsicElements\n\n\treturn (\n\t\t<div className={`${styles.titleWrapper} ${styles[align]} ${className}`}>\n\t\t\t<HeadingTag className={styles.title}>{children}</HeadingTag>\n\t\t\t{subtitle && <p className={styles.subtitle}>{subtitle}</p>}\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","MONTHS","DAYS","Calendar","value","minDate","maxDate","events","highlightedDates","disabledDates","showWeekNumbers","firstDayOfWeek","currentDate","setCurrentDate","selectedDate","setSelectedDate","viewDate","setViewDate","daysOfWeek","useMemo","isSameDay","date1","date2","isDateDisabled","date","disabledDate","isDateHighlighted","highlightedDate","getEventsForDate","event","getDaysInMonth","year","month","getFirstDayOfMonth","day","getWeekNumber","firstDayOfYear","pastDaysOfYear","calendarDays","daysInMonth","firstDay","days","prevMonthDays","i","prevMonth","prevYear","remainingDays","nextMonth","nextYear","handlePreviousMonth","handleNextMonth","handleDateClick","handleToday","today","isToday","isSelected","isCurrentMonth","weeks","week","weekIndex","dayIndex","dayEvents","isHighlighted","DatePicker","containerRef","handleDateChange","handleClear","formatDisplayDate","DateRangePicker","tempRange","setTempRange","selectingEnd","setSelectingEnd","start","end","getDisplayValue","getHighlightedDates","dates","current","Divider","dividerClass","Dropdown","selectedValue","setSelectedValue","dropdownRef","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","_","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","handleChange","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","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","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","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","ThemeToggle","defaultTheme","onThemeChange","theme","setTheme","toggleTheme","DEFAULT_LANGUAGES","LanguageSelect","languages","defaultLanguage","showSearch","selectedLanguage","setSelectedLanguage","lang","searchInputRef","filteredLanguages","language","Chat","messages","onSendMessage","showTimestamps","showAvatars","maxHeight","typingIndicator","userName","botName","isFocused","setIsFocused","messagesEndRef","scrollToBottom","handleSubmit","formatTime","n","isUser","isSystem","showAvatar","senderName","Hero","alignment","backgroundImage","backgroundVideo","overlayOpacity","primaryAction","secondaryAction","imageAlt","imagePosition","heroStyles","renderActions","renderVideoBackground","renderOverlay","Footer","brandName","brandLogo","brandDescription","sections","socialLinks","copyright","showYear","bottomLinks","currentYear","renderBrand","renderSections","section","link","linkIndex","renderSocialLinks","social","renderBottom","copyrightText","fullCopyright","Title","HeadingTag"],"mappings":"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"}