@dnotrever2/super-kit 0.1.16 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +145 -5
- package/dist/Button/Button.d.ts +2 -0
- package/dist/DateTimeInput/DateTimeInput.d.ts +34 -0
- package/dist/DateTimeInput/index.d.ts +1 -0
- package/dist/Input/Input.d.ts +2 -0
- package/dist/Link/Link.d.ts +22 -0
- package/dist/Link/index.d.ts +1 -0
- package/dist/Steps/Steps.d.ts +25 -0
- package/dist/Steps/index.d.ts +1 -0
- package/dist/Tooltip/Tooltip.d.ts +3 -1
- package/dist/index.d.ts +3 -0
- package/dist/super-kit.cjs +1 -1
- package/dist/super-kit.cjs.map +1 -1
- package/dist/super-kit.css +1 -1
- package/dist/super-kit.js +1890 -1317
- package/dist/super-kit.js.map +1 -1
- package/package.json +1 -1
package/dist/super-kit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"super-kit.js","sources":["../src/hooks/useControlledState.ts","../src/Accordion/Accordion.tsx","../src/Badge/Badge.tsx","../src/Breadcrumb/Breadcrumb.tsx","../src/Scrollable/Scrollable.tsx","../src/Button/Button.tsx","../src/Card/Card.tsx","../src/utils/mask.ts","../src/Input/Input.tsx","../src/Markers/Markers.tsx","../src/Menu/Menu.tsx","../src/Modal/Modal.tsx","../src/Popover/Popover.tsx","../src/Progress/Progress.tsx","../src/PushButton/PushButton.tsx","../src/Select/Select.tsx","../src/Spinner/Spinner.tsx","../src/Tabs/Tabs.tsx","../src/Textarea/Textarea.tsx","../src/Toast/Toast.tsx","../src/Tooltip/Tooltip.tsx"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\nexport function useControlledState<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void\n) {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : internalValue;\n\n const setValue = useCallback(\n (nextValue: T) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange]\n );\n\n return [value, setValue, isControlled] as const;\n}\n","import { useId } from \"react\";\nimport type { ButtonHTMLAttributes, CSSProperties, HTMLAttributes, ReactNode } from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport styles from \"./Accordion.module.css\";\n\nconst ChevronIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"14\" height=\"14\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n);\n\nconst PlusIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.9\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"13\" height=\"13\" aria-hidden=\"true\">\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n);\n\nconst MinusIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.9\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"13\" height=\"13\" aria-hidden=\"true\">\n <path d=\"M5 12h14\" />\n </svg>\n);\n\nexport type AccordionValue = string | string[];\nexport type AccordionIndicator = \"chevron\" | \"plus-minus\";\nexport type AccordionBorder = \"boxed\" | \"none\" | \"divider\";\nexport type AccordionHighlight = \"none\" | \"item\" | \"header\";\nexport type AccordionRadius = \"rounded\" | \"square\";\n\nexport type AccordionItem = {\n value: string;\n title: ReactNode;\n content: ReactNode;\n disabled?: boolean;\n icon?: ReactNode;\n className?: string;\n triggerProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n contentProps?: HTMLAttributes<HTMLDivElement>;\n};\n\nexport type AccordionProps = Omit<HTMLAttributes<HTMLDivElement>, \"defaultValue\" | \"onChange\"> & {\n items: AccordionItem[];\n value?: AccordionValue;\n defaultValue?: AccordionValue;\n onValueChange?: (value: AccordionValue) => void;\n multiple?: boolean;\n hideIndicator?: boolean;\n indicator?: AccordionIndicator;\n border?: AccordionBorder;\n highlight?: AccordionHighlight;\n radius?: AccordionRadius;\n hoverHighlight?: boolean;\n spacing?: number | string;\n disabled?: boolean;\n itemClassName?: string;\n headerClassName?: string;\n headerStyle?: CSSProperties;\n bodyClassName?: string;\n bodyStyle?: CSSProperties;\n triggerClassName?: string;\n contentClassName?: string;\n};\n\nfunction getDefaultValue(defaultValue: AccordionValue | undefined, multiple: boolean): AccordionValue {\n if (defaultValue !== undefined) return defaultValue;\n return multiple ? [] : \"\";\n}\n\nfunction isItemOpen(currentValue: AccordionValue, itemValue: string, multiple: boolean) {\n if (multiple) {\n return Array.isArray(currentValue)\n ? currentValue.includes(itemValue)\n : currentValue === itemValue;\n }\n\n return currentValue === itemValue;\n}\n\nfunction getNextValue(\n currentValue: AccordionValue,\n itemValue: string,\n multiple: boolean\n): AccordionValue {\n const open = isItemOpen(currentValue, itemValue, multiple);\n\n if (multiple) {\n const values = Array.isArray(currentValue) ? currentValue : currentValue ? [currentValue] : [];\n if (open) {\n return values.filter((value) => value !== itemValue);\n }\n\n return [...values, itemValue];\n }\n\n if (open) return \"\";\n return itemValue;\n}\n\nfunction formatSpacing(spacing: number | string | undefined) {\n if (typeof spacing === \"number\") return `${spacing}px`;\n return spacing;\n}\n\nexport function Accordion({\n items,\n value,\n defaultValue,\n onValueChange,\n multiple = true,\n hideIndicator = false,\n indicator = \"chevron\",\n border = \"boxed\",\n highlight = \"none\",\n radius = \"rounded\",\n hoverHighlight = true,\n spacing,\n disabled = false,\n itemClassName,\n headerClassName,\n headerStyle,\n bodyClassName,\n bodyStyle,\n triggerClassName,\n contentClassName,\n className,\n style,\n ...props\n}: AccordionProps) {\n const id = useId();\n const [openValue, setOpenValue] = useControlledState<AccordionValue>(\n value,\n getDefaultValue(defaultValue, multiple),\n onValueChange\n );\n\n const cls = [\n styles.accordion,\n styles[border],\n radius === \"square\" ? styles.square : null,\n highlight === \"item\" ? styles.highlightItem : null,\n highlight === \"header\" ? styles.highlightHeader : null,\n hoverHighlight ? null : styles.noHoverHighlight,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n const rootStyle = {\n ...style,\n ...(spacing !== undefined ? { \"--accordion-gap\": formatSpacing(spacing) } : null)\n } as CSSProperties;\n\n return (\n <div {...props} className={cls} style={rootStyle}>\n {items.map((item) => {\n const open = isItemOpen(openValue, item.value, multiple);\n const itemDisabled = disabled || item.disabled;\n const triggerId = `${id}-${item.value}-trigger`;\n const contentId = `${id}-${item.value}-content`;\n\n return (\n <section\n key={item.value}\n className={[styles.item, open ? styles.open : null, itemDisabled ? styles.disabled : null, itemClassName, item.className]\n .filter(Boolean)\n .join(\" \")}\n data-open={open ? \"true\" : undefined}\n >\n <button\n {...item.triggerProps}\n type=\"button\"\n id={triggerId}\n className={[styles.trigger, triggerClassName, headerClassName, item.triggerProps?.className]\n .filter(Boolean)\n .join(\" \")}\n style={{ ...headerStyle, ...item.triggerProps?.style }}\n aria-expanded={open}\n aria-controls={contentId}\n disabled={itemDisabled}\n onClick={(event) => {\n item.triggerProps?.onClick?.(event);\n if (!event.defaultPrevented) {\n setOpenValue(getNextValue(openValue, item.value, multiple));\n }\n }}\n >\n {item.icon && <span className={styles.icon}>{item.icon}</span>}\n <span className={styles.title}>{item.title}</span>\n {!hideIndicator && (\n <span className={[styles.indicator, indicator === \"plus-minus\" ? styles.plusMinus : styles.chevron]\n .filter(Boolean)\n .join(\" \")}\n >\n {indicator === \"plus-minus\" ? (open ? <MinusIcon /> : <PlusIcon />) : <ChevronIcon />}\n </span>\n )}\n </button>\n\n <div\n id={contentId}\n className={styles.contentWrap}\n role=\"region\"\n aria-labelledby={triggerId}\n aria-hidden={!open}\n >\n <div\n {...item.contentProps}\n className={[styles.content, contentClassName, bodyClassName, item.contentProps?.className]\n .filter(Boolean)\n .join(\" \")}\n style={{ ...bodyStyle, ...item.contentProps?.style }}\n >\n {item.content}\n </div>\n </div>\n </section>\n );\n })}\n </div>\n );\n}\n\nAccordion.displayName = \"Accordion\";\n","import type { HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Badge.module.css\";\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"10\" height=\"10\">\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nexport type BadgeVariant =\n | \"primary\"\n | \"secondary\"\n | \"ghost\"\n | \"danger\"\n | \"success\"\n | \"warning\";\n\nexport type BadgeProps = HTMLAttributes<HTMLSpanElement> & {\n variant?: BadgeVariant;\n icon?: ReactNode;\n pill?: boolean;\n outline?: boolean;\n coloredText?: boolean;\n indicator?: boolean;\n label?: boolean;\n labelDirection?: \"left\" | \"right\";\n dismissable?: boolean;\n onDismiss?: () => void;\n children?: ReactNode;\n};\n\nexport function Badge({\n variant = \"secondary\",\n icon,\n pill = false,\n outline = false,\n coloredText = false,\n indicator = false,\n label = false,\n labelDirection = \"right\",\n dismissable = false,\n onDismiss,\n children,\n className,\n ...props\n}: BadgeProps) {\n const cls = [\n styles.badge,\n styles[variant],\n outline ? styles.outline : null,\n coloredText ? styles.coloredText : null,\n indicator ? styles.indicator : null,\n pill ? styles.pill : null,\n label && !indicator ? styles.label : null,\n label && !indicator ? styles[`label-${labelDirection}`] : null,\n dismissable && !indicator ? styles.dismiss : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <span {...props} className={cls}>\n {!indicator && icon ? icon : null}\n {!indicator ? children : null}\n {dismissable && !indicator && (\n <button\n type=\"button\"\n className={styles.dismissBtn}\n aria-label=\"Remove\"\n onClick={onDismiss}\n >\n <XIcon />\n </button>\n )}\n </span>\n );\n}\n\nBadge.displayName = \"Badge\";\n","import type { AnchorHTMLAttributes, ButtonHTMLAttributes, HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Breadcrumb.module.css\";\n\nconst ChevronRightIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"12\" height=\"12\">\n <path d=\"m9 18 6-6-6-6\"/>\n </svg>\n);\n\nexport type BreadcrumbItem = {\n label: ReactNode;\n href?: string;\n current?: boolean;\n disabled?: boolean;\n onClick?: () => void;\n linkProps?: AnchorHTMLAttributes<HTMLAnchorElement>;\n buttonProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n};\n\nexport type BreadcrumbProps = HTMLAttributes<HTMLElement> & {\n items: BreadcrumbItem[];\n separator?: ReactNode;\n label?: string;\n};\n\nexport function Breadcrumb({\n items,\n separator = <ChevronRightIcon />,\n label = \"Breadcrumb\",\n className,\n ...props\n}: BreadcrumbProps) {\n const cls = [styles.breadcrumb, className].filter(Boolean).join(\" \");\n\n return (\n <nav {...props} className={cls} aria-label={label}>\n <ol className={styles.list}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n const isCurrent = item.current ?? isLast;\n const isDisabled = item.disabled || isCurrent;\n\n return (\n <li className={styles.item} key={index}>\n {index > 0 && (\n <span className={styles.separator} aria-hidden=\"true\">\n {separator}\n </span>\n )}\n\n {item.href && !isDisabled ? (\n <a\n {...item.linkProps}\n className={[styles.link, item.linkProps?.className]\n .filter(Boolean)\n .join(\" \")}\n href={item.href}\n >\n {item.label}\n </a>\n ) : item.onClick && !isDisabled ? (\n <button\n {...item.buttonProps}\n type=\"button\"\n className={[styles.link, styles.button, item.buttonProps?.className]\n .filter(Boolean)\n .join(\" \")}\n onClick={item.onClick}\n >\n {item.label}\n </button>\n ) : (\n <span\n className={[styles.current, item.disabled ? styles.disabled : null]\n .filter(Boolean)\n .join(\" \")}\n aria-current={isCurrent ? \"page\" : undefined}\n >\n {item.label}\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n\nBreadcrumb.displayName = \"Breadcrumb\";\n\nexport const BreadCrumb = Breadcrumb;\n","import type { CSSProperties, HTMLAttributes, ReactNode } from \"react\";\n\nexport type ScrollableDirection = \"vertical\" | \"horizontal\" | \"both\";\n\nexport type ScrollableProps = HTMLAttributes<HTMLDivElement> & {\n direction?: ScrollableDirection;\n track?: boolean;\n arrows?: boolean;\n autoHide?: boolean;\n expand?: boolean;\n scrollbarSize?: number;\n height?: string | number;\n children?: ReactNode;\n};\n\nexport function Scrollable({\n direction = \"vertical\",\n track = false,\n arrows = false,\n autoHide = false,\n expand = false,\n scrollbarSize,\n height,\n children,\n className,\n style,\n ...props\n}: ScrollableProps) {\n const classes = [\n \"sb\",\n track ? \"sb-track\" : null,\n arrows ? \"sb-arrows\" : null,\n autoHide ? \"sb-auto-hide\" : null,\n expand ? \"sb-expand\" : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const overflowStyle: CSSProperties =\n direction === \"vertical\"\n ? { overflowY: \"auto\", overflowX: \"hidden\" }\n : direction === \"horizontal\"\n ? { overflowX: \"auto\", overflowY: \"hidden\" }\n : { overflow: \"auto\" };\n\n const sizeVar = scrollbarSize !== undefined\n ? { \"--sb-w\": `${scrollbarSize}px` } as CSSProperties\n : undefined;\n\n return (\n <div\n {...props}\n className={classes}\n style={{ height, ...overflowStyle, ...sizeVar, ...style }}\n >\n {children}\n </div>\n );\n}\n\nScrollable.displayName = \"Scrollable\";\n","import { forwardRef } from \"react\";\nimport type { ButtonHTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Button.module.css\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"danger\" | \"success\" | \"warning\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n variant?: ButtonVariant;\n size?: ButtonSize;\n icon?: ReactNode;\n outline?: boolean;\n rounded?: boolean;\n coloredText?: boolean;\n children?: ReactNode;\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n type = \"button\",\n variant = \"secondary\",\n size = \"md\",\n icon,\n outline = false,\n rounded = false,\n coloredText = false,\n children,\n className,\n disabled,\n ...props\n },\n ref\n ) => {\n const classes = [\n styles.btn,\n styles[variant],\n styles[size],\n outline ? styles.outline : null,\n rounded ? styles.rounded : null,\n coloredText ? styles.coloredText : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled}\n className={classes}\n {...props}\n >\n {icon ? <span className={styles.icon}>{icon}</span> : null}\n {children}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import type { ButtonHTMLAttributes, HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Card.module.css\";\n\nexport type CardPadding = \"none\" | \"sm\" | \"md\" | \"lg\";\n\nexport type CardProps = HTMLAttributes<HTMLDivElement> & {\n padding?: CardPadding;\n bordered?: boolean;\n tilt?: boolean;\n onClose?: () => void;\n closeBtnProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n children?: ReactNode;\n};\n\nconst PAD_MAP: Record<CardPadding, string> = {\n none: styles.padNone,\n sm: styles.padSm,\n md: styles.padMd,\n lg: styles.padLg\n};\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"10\" height=\"10\">\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nexport function Card({\n padding = \"md\",\n bordered = false,\n tilt = false,\n onClose,\n closeBtnProps,\n children,\n className,\n ...props\n}: CardProps) {\n const cls = [styles.card, PAD_MAP[padding], bordered ? styles.bordered : null, tilt ? styles.tilt : null, className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div {...props} className={cls}>\n {onClose && (\n <button\n type=\"button\"\n aria-label=\"Close\"\n {...closeBtnProps}\n className={[styles.closeBtn, closeBtnProps?.className].filter(Boolean).join(\" \")}\n onClick={onClose}\n >\n <XIcon />\n </button>\n )}\n {children}\n </div>\n );\n}\n\nCard.displayName = \"Card\";\n\n/* ---------- Sub-components for convenience ---------- */\n\nexport type CardHeaderProps = HTMLAttributes<HTMLDivElement> & {\n icon?: ReactNode;\n title: ReactNode;\n subtitle?: ReactNode;\n};\n\nexport function CardHeader({\n icon,\n title,\n subtitle,\n className,\n ...props\n}: CardHeaderProps) {\n return (\n <div {...props} className={[styles.header, className].filter(Boolean).join(\" \")}>\n {icon && <span className={styles.headerIcon}>{icon}</span>}\n <div>\n <div className={styles.title}>{title}</div>\n {subtitle && <div className={styles.subtitle}>{subtitle}</div>}\n </div>\n </div>\n );\n}\n\nCardHeader.displayName = \"CardHeader\";\n\nexport type CardStatProps = HTMLAttributes<HTMLDivElement> & {\n value: ReactNode;\n unit?: string;\n delta?: string;\n deltaDirection?: \"positive\" | \"negative\" | \"neutral\";\n};\n\nexport function CardStat({\n value,\n unit,\n delta,\n deltaDirection = \"positive\",\n className,\n ...props\n}: CardStatProps) {\n const deltaClass = [\n styles.statDelta,\n deltaDirection === \"positive\"\n ? styles.deltaPositive\n : deltaDirection === \"negative\"\n ? styles.deltaNegative\n : styles.deltaNeutral\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div {...props} className={[styles.stat, className].filter(Boolean).join(\" \")}>\n <span className={styles.statValue}>\n {value}\n {unit && <span className={styles.statUnit}> {unit}</span>}\n </span>\n {delta && <span className={deltaClass}>{delta}</span>}\n </div>\n );\n}\n\nCardStat.displayName = \"CardStat\";\n","export type MaskValueOptions = {\n placeholder?: string;\n allowedPattern?: RegExp;\n};\n\nconst DEFAULT_PLACEHOLDER = \"X\";\nconst DEFAULT_ALLOWED_PATTERN = /[a-zA-Z0-9]/;\n\nexport function getRawMaskValue(value: string, options: MaskValueOptions = {}) {\n const allowedPattern = options.allowedPattern ?? DEFAULT_ALLOWED_PATTERN;\n\n return value\n .split(\"\")\n .filter((char) => allowedPattern.test(char))\n .join(\"\");\n}\n\nexport function applyMask(\n value: string,\n mask: string,\n options: MaskValueOptions = {}\n) {\n const placeholder = options.placeholder ?? DEFAULT_PLACEHOLDER;\n const rawValue = getRawMaskValue(value, options);\n let rawIndex = 0;\n let maskedValue = \"\";\n\n for (const maskChar of mask) {\n if (rawIndex >= rawValue.length) {\n break;\n }\n\n if (maskChar === placeholder) {\n maskedValue += rawValue[rawIndex];\n rawIndex += 1;\n continue;\n }\n\n maskedValue += maskChar;\n }\n\n return maskedValue;\n}\n","import React, {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef\n} from \"react\";\nimport type {\n ButtonHTMLAttributes,\n ChangeEvent,\n HTMLAttributes,\n InputHTMLAttributes,\n ReactNode\n} from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport { applyMask, getRawMaskValue } from \"../utils\";\nimport styles from \"./Input.module.css\";\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"12\" height=\"12\">\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nexport type InputValueChange = {\n value: string;\n rawValue: string;\n};\n\nexport type InputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"defaultValue\" | \"onChange\" | \"value\"\n> & {\n label?: string;\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n value?: string;\n defaultValue?: string;\n mask?: string;\n maskPlaceholder?: string;\n maskAllowedPattern?: RegExp;\n clearable?: boolean;\n clearLabel?: string;\n selectOnFocus?: boolean;\n textAlign?: \"left\" | \"center\" | \"right\";\n inputProps?: InputHTMLAttributes<HTMLInputElement>;\n wrapperProps?: HTMLAttributes<HTMLSpanElement>;\n fieldProps?: HTMLAttributes<HTMLDivElement>;\n clearButtonProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n onValueChange?: (change: InputValueChange) => void;\n};\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n label,\n icon,\n iconPosition = \"left\",\n clearable = false,\n clearButtonProps,\n clearLabel,\n defaultValue = \"\",\n disabled,\n mask,\n maskAllowedPattern,\n maskPlaceholder,\n selectOnFocus = false,\n textAlign,\n inputProps,\n onChange,\n onValueChange,\n value,\n wrapperProps,\n fieldProps,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [currentValue, setCurrentValue] = useControlledState(\n value,\n defaultValue,\n (nextValue) => {\n onValueChange?.({\n value: nextValue,\n rawValue: mask\n ? getRawMaskValue(nextValue, {\n allowedPattern: maskAllowedPattern,\n placeholder: maskPlaceholder\n })\n : nextValue\n });\n }\n );\n\n useImperativeHandle(ref, () => inputRef.current as HTMLInputElement);\n\n const formatValue = useCallback(\n (nextValue: string) => {\n if (!mask) return nextValue;\n return applyMask(nextValue, mask, {\n allowedPattern: maskAllowedPattern,\n placeholder: maskPlaceholder\n });\n },\n [mask, maskAllowedPattern, maskPlaceholder]\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const formattedValue = formatValue(event.target.value);\n event.target.value = formattedValue;\n setCurrentValue(formattedValue);\n onChange?.(event);\n inputProps?.onChange?.(event);\n };\n\n const handleClear = () => {\n setCurrentValue(\"\");\n inputRef.current?.focus();\n };\n\n const iconRight = icon && iconPosition === \"right\";\n const iconLeft = icon && iconPosition === \"left\";\n\n const inputClass = [\n styles.input,\n iconLeft ? styles.hasIcon : null,\n iconRight ? styles.hasIconRight : null,\n clearable && iconRight ? styles.hasClearAndIconRight : clearable ? styles.hasClear : null,\n className,\n inputProps?.className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (selectOnFocus) e.target.select();\n props.onFocus?.(e);\n inputProps?.onFocus?.(e);\n };\n\n const inputStyle = {\n ...style,\n ...inputProps?.style,\n ...(textAlign ? { textAlign } : null)\n };\n const isDisabled = disabled || inputProps?.disabled;\n\n const inputEl = (\n <input\n {...props}\n {...inputProps}\n ref={inputRef}\n disabled={isDisabled}\n value={formatValue(currentValue)}\n onChange={handleChange}\n onFocus={handleFocus}\n className={inputClass}\n style={inputStyle}\n />\n );\n\n const wrapperClass = [styles.wrapper, wrapperProps?.className]\n .filter(Boolean)\n .join(\" \");\n\n const inner = (\n <span {...wrapperProps} className={wrapperClass}>\n {iconLeft ? <span className={styles.iconSlot}>{icon}</span> : null}\n {inputEl}\n {iconRight ? (\n <span className={[styles.iconSlotRight, clearable ? styles.iconSlotRightWithClear : null].filter(Boolean).join(\" \")}>\n {icon}\n </span>\n ) : null}\n {clearable ? (\n <button\n type=\"button\"\n aria-label=\"Clear\"\n title=\"Clear\"\n disabled={isDisabled || currentValue.length === 0}\n onClick={handleClear}\n className={styles.clearBtn}\n {...clearButtonProps}\n >\n {clearButtonProps?.children ?? <XIcon />}\n </button>\n ) : null}\n </span>\n );\n\n if (!label && !fieldProps) {\n return inner;\n }\n\n return (\n <div {...fieldProps} className={[styles.field, fieldProps?.className].filter(Boolean).join(\" \")}>\n {label ? <label className={styles.label}>{label}</label> : null}\n {inner}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n","import type { HTMLAttributes, InputHTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Markers.module.css\";\n\nconst CheckIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\"/>\n </svg>\n);\n\n/* ── Checkbox ── */\n\nexport type CheckboxProps = Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"onChange\"> & {\n label?: ReactNode;\n checked?: boolean;\n defaultChecked?: boolean;\n indeterminate?: boolean;\n onChange?: (checked: boolean) => void;\n};\n\nexport function Checkbox({\n label,\n checked,\n defaultChecked,\n indeterminate = false,\n disabled = false,\n onChange,\n className,\n ...props\n}: CheckboxProps) {\n const isChecked = checked ?? defaultChecked ?? false;\n\n const cls = [\n styles.checkbox,\n isChecked && !indeterminate ? styles.checked : null,\n indeterminate ? styles.indeterminate : null,\n disabled ? styles.disabled : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label className={cls}>\n <input\n {...props}\n type=\"checkbox\"\n checked={isChecked}\n disabled={disabled}\n style={{ display: \"none\" }}\n onChange={(e) => onChange?.(e.currentTarget.checked)}\n />\n <span className={styles.checkboxBox}>\n {!indeterminate && <CheckIcon />}\n </span>\n {label}\n </label>\n );\n}\n\nCheckbox.displayName = \"Checkbox\";\n\n/* ── Radio ── */\n\nexport type RadioProps = Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"onChange\"> & {\n label?: ReactNode;\n checked?: boolean;\n onChange?: (value: string) => void;\n};\n\nexport function Radio({\n label,\n checked = false,\n disabled = false,\n onChange,\n value,\n className,\n ...props\n}: RadioProps) {\n const cls = [\n styles.radio,\n checked ? styles.radioChecked : null,\n disabled ? styles.radioDisabled : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label className={cls}>\n <input\n {...props}\n type=\"radio\"\n checked={checked}\n disabled={disabled}\n value={value}\n style={{ display: \"none\" }}\n onChange={(e) => onChange?.(e.currentTarget.value)}\n />\n <span className={styles.radioDot} />\n {label}\n </label>\n );\n}\n\nRadio.displayName = \"Radio\";\n\nexport type RadioGroupProps = HTMLAttributes<HTMLDivElement> & {\n children?: ReactNode;\n};\n\nexport function RadioGroup({ children, className, ...props }: RadioGroupProps) {\n const cls = [styles.radioGroup, className].filter(Boolean).join(\" \");\n return (\n <div {...props} className={cls} role=\"radiogroup\">\n {children}\n </div>\n );\n}\n\nRadioGroup.displayName = \"RadioGroup\";\n\n/* ── Switch ── */\n\nexport type SwitchProps = Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"onChange\"> & {\n label?: ReactNode;\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n};\n\nexport function Switch({\n label,\n checked,\n defaultChecked,\n disabled = false,\n onChange,\n className,\n ...props\n}: SwitchProps) {\n const isOn = checked ?? defaultChecked ?? false;\n\n const cls = [\n styles.switchWrap,\n isOn ? styles.switchOn : null,\n disabled ? styles.switchDisabled : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label className={cls}>\n <input\n {...props}\n type=\"checkbox\"\n checked={isOn}\n disabled={disabled}\n style={{ display: \"none\" }}\n onChange={(e) => onChange?.(e.currentTarget.checked)}\n />\n <span className={styles.switchTrack} />\n {label}\n </label>\n );\n}\n\nSwitch.displayName = \"Switch\";\n","import type { ButtonHTMLAttributes, HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Menu.module.css\";\n\nexport type MenuProps = HTMLAttributes<HTMLDivElement> & {\n children?: ReactNode;\n};\n\nexport function Menu({ children, className, ...props }: MenuProps) {\n const cls = [styles.menu, className].filter(Boolean).join(\" \");\n return (\n <div {...props} className={cls} role=\"menu\">\n {children}\n </div>\n );\n}\n\nMenu.displayName = \"Menu\";\n\nexport type MenuItemProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n icon?: ReactNode;\n kbd?: string;\n active?: boolean;\n danger?: boolean;\n children?: ReactNode;\n};\n\nexport function MenuItem({\n icon,\n kbd,\n active = false,\n danger = false,\n disabled = false,\n children,\n className,\n ...props\n}: MenuItemProps) {\n const cls = [\n styles.item,\n active ? styles.active : null,\n danger ? styles.danger : null,\n disabled ? styles.disabled : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <button {...props} type=\"button\" className={cls} disabled={disabled} role=\"menuitem\">\n {icon}\n {children}\n {kbd && <span className={styles.kbd}>{kbd}</span>}\n </button>\n );\n}\n\nMenuItem.displayName = \"MenuItem\";\n\nexport function MenuSeparator({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n const cls = [styles.separator, className].filter(Boolean).join(\" \");\n return <div {...props} className={cls} role=\"separator\" />;\n}\n\nMenuSeparator.displayName = \"MenuSeparator\";\n","import {\n useEffect,\n useRef,\n forwardRef,\n useImperativeHandle\n} from \"react\";\nimport type {\n ButtonHTMLAttributes,\n HTMLAttributes,\n MouseEvent,\n ReactNode\n} from \"react\";\nimport styles from \"./Modal.module.css\";\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"11\" height=\"11\">\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nexport type ModalProps = {\n open: boolean;\n title?: ReactNode;\n subtitle?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n closeOnBackdrop?: boolean;\n showCloseButton?: boolean;\n backdropProps?: HTMLAttributes<HTMLDivElement>;\n modalProps?: HTMLAttributes<HTMLDivElement>;\n headerProps?: HTMLAttributes<HTMLElement>;\n bodyProps?: HTMLAttributes<HTMLElement>;\n footerProps?: HTMLAttributes<HTMLElement>;\n closeButtonProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n onOpenChange?: (open: boolean) => void;\n onClose?: () => void;\n};\n\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n open,\n title,\n subtitle,\n children,\n footer,\n closeOnBackdrop = true,\n showCloseButton = true,\n backdropProps,\n modalProps,\n headerProps,\n bodyProps,\n footerProps,\n closeButtonProps,\n onOpenChange,\n onClose\n },\n ref\n ) => {\n const innerRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement);\n\n useEffect(() => {\n if (!open) return;\n\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") requestClose();\n };\n\n document.addEventListener(\"keydown\", handleKey);\n return () => document.removeEventListener(\"keydown\", handleKey);\n }, [open]);\n\n const requestClose = () => {\n onOpenChange?.(false);\n onClose?.();\n };\n\n const handleBackdropClick = (event: MouseEvent<HTMLDivElement>) => {\n if (closeOnBackdrop && event.target === event.currentTarget) {\n requestClose();\n }\n };\n\n if (!open) return null;\n\n const backdropClass = [styles.backdrop, backdropProps?.className]\n .filter(Boolean)\n .join(\" \");\n\n const modalClass = [styles.modal, modalProps?.className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n {...backdropProps}\n className={backdropClass}\n onClick={handleBackdropClick}\n role=\"presentation\"\n >\n <div\n ref={innerRef}\n {...modalProps}\n className={modalClass}\n role=\"dialog\"\n aria-modal=\"true\"\n >\n {(title || showCloseButton) && (\n <header {...headerProps} className={[styles.header, headerProps?.className].filter(Boolean).join(\" \")}>\n <div className={styles.titleBlock}>\n {title ? <div className={styles.title}>{title}</div> : null}\n {subtitle ? <div className={styles.subtitle}>{subtitle}</div> : null}\n </div>\n {showCloseButton && (\n <button\n type=\"button\"\n aria-label=\"Close\"\n className={styles.closeBtn}\n onClick={requestClose}\n {...closeButtonProps}\n >\n {closeButtonProps?.children ?? <XIcon />}\n </button>\n )}\n </header>\n )}\n <section\n {...bodyProps}\n className={[styles.body, bodyProps?.className].filter(Boolean).join(\" \")}\n >\n {children}\n </section>\n {footer && (\n <footer\n {...footerProps}\n className={[styles.footer, footerProps?.className].filter(Boolean).join(\" \")}\n >\n {footer}\n </footer>\n )}\n </div>\n </div>\n );\n }\n);\n\nModal.displayName = \"Modal\";\n","import { useState, useRef, useEffect, type HTMLAttributes, type ReactNode } from \"react\";\nimport styles from \"./Popover.module.css\";\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/>\n </svg>\n);\n\nexport type PopoverSide = \"bottom-start\" | \"bottom-end\" | \"top-start\" | \"top-end\";\n\nexport type PopoverProps = {\n open?: boolean;\n defaultOpen?: boolean;\n title?: ReactNode;\n children?: ReactNode;\n trigger?: ReactNode;\n side?: PopoverSide;\n showCloseButton?: boolean;\n onOpenChange?: (open: boolean) => void;\n popProps?: HTMLAttributes<HTMLDivElement>;\n};\n\nexport function Popover({\n open: openProp,\n defaultOpen = false,\n title,\n children,\n trigger,\n side = \"bottom-start\",\n showCloseButton = true,\n onOpenChange,\n popProps\n}: PopoverProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = openProp !== undefined;\n const isOpen = isControlled ? openProp : internalOpen;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n function setOpen(value: boolean) {\n if (!isControlled) setInternalOpen(value);\n onOpenChange?.(value);\n }\n\n useEffect(() => {\n function handleClick(e: MouseEvent) {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }\n if (isOpen) document.addEventListener(\"mousedown\", handleClick);\n return () => document.removeEventListener(\"mousedown\", handleClick);\n }, [isOpen]);\n\n const isTop = side.startsWith(\"top\");\n const isEnd = side.endsWith(\"end\");\n\n const popCls = [\n styles.pop,\n isEnd ? styles.sideRight : null,\n isTop ? styles.sideTop : null,\n popProps?.className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div ref={wrapperRef} className={styles.wrapper}>\n {trigger && (\n <div onClick={() => setOpen(!isOpen)} style={{ display: \"inline-flex\" }}>\n {trigger}\n </div>\n )}\n {isOpen && (\n <div {...popProps} className={popCls}>\n <span className={styles.arrow} />\n {(title || showCloseButton) && (\n <div className={styles.head}>\n {title && <span className={styles.title}>{title}</span>}\n {showCloseButton && (\n <button\n type=\"button\"\n className={styles.closeBtn}\n aria-label=\"Close\"\n onClick={() => setOpen(false)}\n >\n <XIcon />\n </button>\n )}\n </div>\n )}\n <div className={styles.body}>{children}</div>\n </div>\n )}\n </div>\n );\n}\n\nPopover.displayName = \"Popover\";\n","import type { CSSProperties, HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Progress.module.css\";\n\nexport type ProgressVariant = \"accent\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"neutral\";\nexport type ProgressSize = \"sm\" | \"md\" | \"lg\";\nexport type ProgressShape = \"bar\" | \"circle\";\n\nexport type ProgressProps = HTMLAttributes<HTMLDivElement> & {\n value?: number;\n max?: number;\n variant?: ProgressVariant;\n size?: ProgressSize;\n shape?: ProgressShape;\n label?: ReactNode;\n valueLabel?: string;\n showValue?: boolean;\n indeterminate?: boolean;\n};\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function Progress({\n value,\n max = 100,\n variant = \"accent\",\n size = \"md\",\n shape = \"bar\",\n label,\n valueLabel,\n showValue,\n indeterminate = false,\n className,\n ...props\n}: ProgressProps) {\n const safeMax = max > 0 ? max : 100;\n const isIndeterminate = indeterminate || typeof value !== \"number\";\n const safeValue = typeof value === \"number\" ? clamp(value, 0, safeMax) : 0;\n const percent = Math.round((safeValue / safeMax) * 100);\n const shouldShowValue = showValue ?? shape === \"circle\";\n\n const cls = [\n styles.progress,\n styles[variant],\n shape === \"circle\" ? styles.circular : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const progressbarProps = {\n role: \"progressbar\",\n \"aria-valuemin\": isIndeterminate ? undefined : 0,\n \"aria-valuemax\": isIndeterminate ? undefined : safeMax,\n \"aria-valuenow\": isIndeterminate ? undefined : safeValue,\n \"aria-valuetext\": valueLabel\n };\n\n if (shape === \"circle\") {\n const circleClass = [\n styles.circle,\n styles[`circle-${size}`],\n isIndeterminate ? styles.indeterminateCircle : null\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div {...props} className={cls}>\n {label && <span className={styles.circleLabel}>{label}</span>}\n <div\n className={circleClass}\n style={{ \"--progress-percent\": `${percent}%` } as CSSProperties}\n {...progressbarProps}\n >\n {shouldShowValue && (\n <span className={styles.circleValue}>\n {valueLabel ?? (isIndeterminate ? \"Loading\" : `${percent}%`)}\n </span>\n )}\n </div>\n </div>\n );\n }\n\n const trackClass = [\n styles.track,\n styles[`bar-${size}`],\n isIndeterminate ? styles.indeterminate : null\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div {...props} className={cls}>\n {(label || shouldShowValue) && (\n <div className={styles.header}>\n {label && <span className={styles.label}>{label}</span>}\n {shouldShowValue && (\n <span className={styles.value}>\n {valueLabel ?? (isIndeterminate ? \"Loading\" : `${percent}%`)}\n </span>\n )}\n </div>\n )}\n <div className={trackClass} {...progressbarProps}>\n <span\n className={styles.fill}\n style={isIndeterminate ? undefined : { width: `${percent}%` }}\n />\n </div>\n </div>\n );\n}\n\nProgress.displayName = \"Progress\";\n","import type { ButtonHTMLAttributes, HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./PushButton.module.css\";\n\nexport type PushButtonGroupProps = HTMLAttributes<HTMLDivElement> & {\n children?: ReactNode;\n};\n\nexport function PushButtonGroup({ children, className, ...props }: PushButtonGroupProps) {\n const cls = [styles.group, className].filter(Boolean).join(\" \");\n return (\n <div {...props} className={cls} role=\"group\">\n {children}\n </div>\n );\n}\n\nPushButtonGroup.displayName = \"PushButtonGroup\";\n\nexport type PushButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n on?: boolean;\n accent?: boolean;\n solo?: boolean;\n icon?: ReactNode;\n children?: ReactNode;\n};\n\nexport function PushButton({\n on = false,\n accent = false,\n solo = false,\n icon,\n children,\n disabled = false,\n className,\n ...props\n}: PushButtonProps) {\n const cls = [\n styles.pb,\n on ? styles.on : null,\n on && accent ? styles.accent : null,\n solo ? styles.solo : null,\n disabled ? styles.disabled : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <button {...props} type=\"button\" className={cls} disabled={disabled}>\n {icon}\n {children}\n </button>\n );\n}\n\nPushButton.displayName = \"PushButton\";\n","import {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState\n} from \"react\";\nimport type {\n ButtonHTMLAttributes,\n HTMLAttributes,\n KeyboardEvent,\n MouseEvent as ReactMouseEvent,\n ReactNode\n} from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport styles from \"./Select.module.css\";\n\nconst ChevronIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"14\" height=\"14\">\n <path d=\"m6 9 6 6 6-6\"/>\n </svg>\n);\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"12\" height=\"12\">\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nconst SearchIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"7\"/>\n <path d=\"m20 20-3.5-3.5\"/>\n </svg>\n);\n\nconst CheckIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"10\" height=\"10\">\n <path d=\"M20 6 9 17l-5-5\"/>\n </svg>\n);\n\nexport type SelectOption<Value extends string = string> = {\n value: Value;\n label: ReactNode;\n meta?: string;\n disabled?: boolean;\n};\n\nexport type SelectValue<Value extends string = string> =\n | Value\n | Value[]\n | null;\n\nexport type SelectOptionsPosition = \"bottom\" | \"top\";\nexport type SelectOptionsAlign = \"left\" | \"center\" | \"right\";\n\nexport type SelectProps<Value extends string = string> = Omit<\n HTMLAttributes<HTMLDivElement>,\n \"defaultValue\" | \"onChange\"\n> & {\n label?: string;\n options: SelectOption<Value>[];\n value?: SelectValue<Value>;\n defaultValue?: SelectValue<Value>;\n multiple?: boolean;\n searchable?: boolean;\n clearable?: boolean;\n disabled?: boolean;\n placeholder?: string;\n searchPlaceholder?: string;\n emptyLabel?: string;\n loadingLabel?: string;\n isLoading?: boolean;\n optionsPosition?: SelectOptionsPosition;\n optionsAlign?: SelectOptionsAlign;\n showSelectedCount?: boolean;\n showClearAll?: boolean;\n showSelectedValues?: boolean;\n closeOnSelect?: boolean;\n selectProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n filterOptions?: (\n options: SelectOption<Value>[],\n searchValue: string\n ) => SelectOption<Value>[];\n onSearchChange?: (searchValue: string) => void;\n onValueChange?: (\n value: SelectValue<Value>,\n selectedOptions: SelectOption<Value>[]\n ) => void;\n};\n\nconst defaultFilterOptions = <Value extends string>(\n options: SelectOption<Value>[],\n searchValue: string\n) => {\n const norm = searchValue.trim().toLowerCase();\n if (!norm) return options;\n return options.filter((o) =>\n String(o.label).toLowerCase().includes(norm)\n );\n};\n\nexport const Select = forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n label,\n clearable = false,\n defaultValue = null,\n disabled = false,\n emptyLabel = \"No options found\",\n filterOptions = defaultFilterOptions,\n isLoading = false,\n loadingLabel = \"Loading...\",\n multiple = false,\n onSearchChange,\n onValueChange,\n options,\n optionsAlign = \"left\",\n optionsPosition = \"bottom\",\n placeholder = \"Select\",\n searchable = false,\n searchPlaceholder = \"Search...\",\n showSelectedCount = true,\n showClearAll = true,\n showSelectedValues = true,\n closeOnSelect,\n selectProps,\n value,\n className,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const [searchValue, setSearchValue] = useState(\"\");\n const rootRef = useRef<HTMLDivElement>(null);\n\n const [selectedValue, setSelectedValue] = useControlledState(\n value as SelectValue,\n defaultValue as SelectValue,\n (nextValue) => {\n const selected = options.filter((o) =>\n Array.isArray(nextValue)\n ? nextValue.includes(o.value)\n : o.value === nextValue\n );\n onValueChange?.(nextValue, selected);\n }\n );\n\n const selectedValues = useMemo(\n () =>\n Array.isArray(selectedValue)\n ? selectedValue\n : selectedValue\n ? [selectedValue]\n : [],\n [selectedValue]\n );\n\n const selectedOptions = useMemo(\n () => options.filter((o) => selectedValues.includes(o.value)),\n [options, selectedValues]\n );\n\n const filteredOptions = useMemo(\n () => filterOptions(options, searchValue),\n [filterOptions, options, searchValue]\n );\n\n // Close on outside click\n useEffect(() => {\n if (!open) return;\n const handleClick = (e: MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClick);\n return () => document.removeEventListener(\"mousedown\", handleClick);\n }, [open]);\n\n const updateSearch = (next: string) => {\n setSearchValue(next);\n onSearchChange?.(next);\n };\n\n const selectOption = (option: SelectOption) => {\n if (option.disabled) return;\n if (multiple) {\n const next = selectedValues.includes(option.value)\n ? selectedValues.filter((v) => v !== option.value)\n : [...selectedValues, option.value];\n setSelectedValue(next);\n if (closeOnSelect) setOpen(false);\n return;\n }\n setSelectedValue(option.value);\n if (closeOnSelect ?? true) setOpen(false);\n };\n\n const clearValue = () => {\n setSelectedValue(multiple ? [] : null);\n updateSearch(\"\");\n };\n\n const toggleAllValues = () => {\n if (selectedValues.length > 0) {\n clearValue();\n return;\n }\n\n setSelectedValue(options.filter((o) => !o.disabled).map((o) => o.value));\n };\n\n const handleTriggerClick = (e: ReactMouseEvent<HTMLButtonElement>) => {\n selectProps?.onClick?.(e);\n if (!e.defaultPrevented && !disabled) setOpen((o) => !o);\n };\n\n const handleTriggerKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n selectProps?.onKeyDown?.(e);\n if (e.defaultPrevented) return;\n\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setOpen((o) => !o);\n }\n if (e.key === \"Escape\") setOpen(false);\n };\n\n const isOptionsTop = optionsPosition === \"top\";\n const triggerClass = [\n styles.trigger,\n open ? styles.triggerOpen : null,\n open\n ? isOptionsTop\n ? styles.triggerConnectedTop\n : styles.triggerConnectedBottom\n : null,\n selectProps?.className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const showSelectedValuesInTrigger = !multiple || showSelectedValues;\n const showChips = multiple && showSelectedValues && selectedOptions.length > 0;\n const showOptionCheckbox = multiple;\n const showFooter = multiple && (selectedValues.length > 0 || showClearAll);\n const hasVisibleTriggerValue = showSelectedValuesInTrigger && selectedOptions.length > 0;\n const maxChips = 2;\n const overflowCount = selectedOptions.length - maxChips;\n\n const rootClass = [styles.root, className].filter(Boolean).join(\" \");\n const optionsAlignClass = {\n left: styles.itemAlignLeft,\n center: styles.itemAlignCenter,\n right: styles.itemAlignRight\n }[optionsAlign];\n\n const inner = (\n <div ref={rootRef} {...props} className={rootClass}>\n <button\n {...selectProps}\n type=\"button\"\n className={triggerClass}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n onClick={handleTriggerClick}\n onKeyDown={handleTriggerKeyDown}\n >\n {showChips ? (\n <div className={styles.chips}>\n {selectedOptions.slice(0, maxChips).map((o) => (\n <span key={o.value} className={styles.chip}>{o.label}</span>\n ))}\n {overflowCount > 0 && (\n <span className={[styles.chip, styles.chipOverflow].join(\" \")}>\n +{overflowCount}\n </span>\n )}\n </div>\n ) : (\n <span className={[styles.triggerValue, !hasVisibleTriggerValue ? styles.triggerPlaceholder : null].filter(Boolean).join(\" \")}>\n {hasVisibleTriggerValue\n ? selectedOptions.map((o) => o.label).join(\", \")\n : placeholder}\n </span>\n )}\n {clearable && selectedValues.length > 0 && (\n <button\n type=\"button\"\n aria-label=\"Clear\"\n className={styles.clearBtn}\n disabled={disabled}\n onClick={(e) => { e.stopPropagation(); clearValue(); }}\n >\n <XIcon />\n </button>\n )}\n <span className={[styles.chevron, open ? styles.chevronOpen : null].filter(Boolean).join(\" \")}>\n <ChevronIcon />\n </span>\n </button>\n\n {open && (\n <div\n className={[\n styles.popover,\n isOptionsTop ? styles.popoverTop : styles.popoverBottom\n ].join(\" \")}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n >\n {searchable && (\n <div className={styles.search}>\n <span className={styles.searchIcon}><SearchIcon /></span>\n <input\n autoFocus\n value={searchValue}\n placeholder={searchPlaceholder}\n className={styles.searchInput}\n onChange={(e) => updateSearch(e.target.value)}\n />\n {searchValue && (\n <button className={styles.clearBtn} onClick={() => updateSearch(\"\")}>\n <XIcon />\n </button>\n )}\n </div>\n )}\n\n <ul className={[styles.list, \"sb\"].join(\" \")}>\n {isLoading && <li className={styles.emptyState}>{loadingLabel}</li>}\n {!isLoading && filteredOptions.length === 0 && (\n <li className={styles.emptyState}>{emptyLabel}</li>\n )}\n {!isLoading &&\n filteredOptions.map((option) => {\n const checked = selectedValues.includes(option.value);\n const itemClass = [\n styles.item,\n optionsAlignClass,\n checked ? styles.itemActive : null,\n option.disabled ? styles.itemDisabled : null\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <li\n key={option.value}\n className={itemClass}\n role=\"option\"\n aria-selected={checked}\n onClick={() => selectOption(option)}\n >\n {!showOptionCheckbox && optionsAlign === \"right\" && checked && (\n <span className={styles.checkIcon}><CheckIcon /></span>\n )}\n {showOptionCheckbox ? (\n <span className={[styles.checkbox, checked ? styles.checkboxChecked : null].filter(Boolean).join(\" \")}>\n {checked && <CheckIcon />}\n </span>\n ) : null}\n <span>{option.label}</span>\n {option.meta && <span className={styles.itemMeta}>{option.meta}</span>}\n {!showOptionCheckbox && optionsAlign !== \"right\" && checked && (\n <span className={styles.checkIcon}><CheckIcon /></span>\n )}\n </li>\n );\n })}\n </ul>\n\n {showFooter && (showSelectedCount || showClearAll) && (\n <div className={styles.popFooter}>\n {showSelectedCount && <span>{selectedValues.length} selected</span>}\n {showClearAll && (\n <button className={styles.popFooterBtn} onClick={toggleAllValues}>\n {selectedValues.length > 0 ? \"Clear all\" : \"Check all\"}\n </button>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n );\n\n if (!label) return inner;\n\n return (\n <div className={styles.field}>\n <label className={styles.label}>\n {label}\n {multiple && showSelectedCount && selectedValues.length > 0 && (\n <span className={styles.labelMeta}>· {selectedValues.length} selected</span>\n )}\n </label>\n {inner}\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n","import type { HTMLAttributes } from \"react\";\nimport styles from \"./Spinner.module.css\";\n\nexport type SpinnerVariant = \"ring\" | \"dots\" | \"bar\";\nexport type SpinnerSize = \"sm\" | \"md\" | \"lg\";\n\nexport type SpinnerProps = HTMLAttributes<HTMLSpanElement> & {\n variant?: SpinnerVariant;\n size?: SpinnerSize;\n muted?: boolean;\n onAccent?: boolean;\n};\n\nexport function Spinner({\n variant = \"ring\",\n size = \"md\",\n muted = false,\n onAccent = false,\n className,\n ...props\n}: SpinnerProps) {\n if (variant === \"dots\") {\n const cls = [styles.dots, className].filter(Boolean).join(\" \");\n return (\n <span {...props} className={cls} role=\"status\" aria-label=\"Loading\">\n <span className={styles.dot} />\n <span className={styles.dot} />\n <span className={styles.dot} />\n </span>\n );\n }\n\n if (variant === \"bar\") {\n const cls = [styles.bar, className].filter(Boolean).join(\" \");\n return (\n <span {...props} className={cls} role=\"status\" aria-label=\"Loading\">\n <span className={styles.barFill} />\n </span>\n );\n }\n\n const cls = [\n styles.ring,\n styles[size],\n muted ? styles.ringMuted : null,\n onAccent ? styles.onAccent : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <span\n {...props}\n className={cls}\n role=\"status\"\n aria-label=\"Loading\"\n />\n );\n}\n\nSpinner.displayName = \"Spinner\";\n","import { useId, useRef } from \"react\";\nimport type { ButtonHTMLAttributes, HTMLAttributes, KeyboardEvent, ReactNode } from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport styles from \"./Tabs.module.css\";\n\nexport type TabsVariant = \"raised\" | \"underline\" | \"rounded\";\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"11\" height=\"11\">\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nexport type TabItem = {\n value: string;\n label: ReactNode;\n content?: ReactNode;\n disabled?: boolean;\n closable?: boolean;\n closeLabel?: string;\n onClose?: (value: string) => void;\n className?: string;\n tabProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n closeButtonProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n panelProps?: HTMLAttributes<HTMLDivElement>;\n};\n\nexport type TabsProps = HTMLAttributes<HTMLDivElement> & {\n items: TabItem[];\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n variant?: TabsVariant;\n ariaLabel?: string;\n disabled?: boolean;\n closable?: boolean;\n closeLabel?: string;\n onTabClose?: (value: string) => void;\n tabClassName?: string;\n tabItemClassName?: string;\n transparent?: boolean;\n inactiveTransparent?: boolean;\n};\n\nfunction getDefaultValue(items: TabItem[]) {\n return items.find((item) => !item.disabled)?.value ?? items[0]?.value ?? \"\";\n}\n\nexport function Tabs({\n items,\n value,\n defaultValue,\n onValueChange,\n variant = \"raised\",\n ariaLabel = \"Tabs\",\n disabled = false,\n closable = false,\n closeLabel = \"Close tab\",\n onTabClose,\n tabClassName,\n tabItemClassName,\n transparent = false,\n inactiveTransparent = false,\n className,\n ...props\n}: TabsProps) {\n const id = useId();\n const tabRefs = useRef<Array<HTMLButtonElement | null>>([]);\n const [selectedValue, setSelectedValue] = useControlledState(\n value,\n defaultValue ?? getDefaultValue(items),\n onValueChange\n );\n\n const selectedItem = items.find((item) => item.value === selectedValue);\n const cls = [\n styles.tabs,\n styles[variant],\n transparent ? styles.transparent : null,\n inactiveTransparent ? styles.inactiveTransparent : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const focusTab = (startIndex: number, direction: 1 | -1) => {\n if (items.length === 0) return;\n\n for (let step = 1; step <= items.length; step += 1) {\n const nextIndex = (startIndex + step * direction + items.length) % items.length;\n if (!items[nextIndex]?.disabled && !disabled) {\n tabRefs.current[nextIndex]?.focus();\n setSelectedValue(items[nextIndex].value);\n return;\n }\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>, index: number) => {\n if (event.key === \"ArrowRight\") {\n event.preventDefault();\n focusTab(index, 1);\n return;\n }\n\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n focusTab(index, -1);\n return;\n }\n\n if (event.key === \"Home\") {\n event.preventDefault();\n const firstIndex = disabled ? -1 : items.findIndex((item) => !item.disabled);\n if (firstIndex >= 0) {\n tabRefs.current[firstIndex]?.focus();\n setSelectedValue(items[firstIndex].value);\n }\n return;\n }\n\n if (event.key === \"End\") {\n event.preventDefault();\n const lastIndex = disabled ? -1 : items.map((item) => !item.disabled).lastIndexOf(true);\n if (lastIndex >= 0) {\n tabRefs.current[lastIndex]?.focus();\n setSelectedValue(items[lastIndex].value);\n }\n }\n };\n\n return (\n <div {...props} className={cls}>\n <div className={styles.list} role=\"tablist\" aria-label={ariaLabel}>\n {items.map((item, index) => {\n const selected = item.value === selectedValue;\n const isDisabled = disabled || item.disabled;\n const isClosable = !isDisabled && (item.closable ?? closable);\n const tabId = `${id}-${item.value}-tab`;\n const panelId = `${id}-${item.value}-panel`;\n\n return (\n <span\n key={item.value}\n role=\"presentation\"\n className={[\n styles.tabItem,\n isClosable ? styles.closable : null,\n isDisabled ? styles.disabled : null,\n tabItemClassName,\n item.className\n ]\n .filter(Boolean)\n .join(\" \")}\n data-selected={selected ? \"true\" : undefined}\n >\n <button\n {...item.tabProps}\n ref={(node) => {\n tabRefs.current[index] = node;\n }}\n type=\"button\"\n role=\"tab\"\n id={tabId}\n aria-selected={selected}\n aria-controls={panelId}\n tabIndex={selected ? 0 : -1}\n disabled={isDisabled}\n className={[styles.tab, tabClassName, item.tabProps?.className]\n .filter(Boolean)\n .join(\" \")}\n onClick={(event) => {\n item.tabProps?.onClick?.(event);\n if (!event.defaultPrevented) setSelectedValue(item.value);\n }}\n onKeyDown={(event) => {\n item.tabProps?.onKeyDown?.(event);\n if (!event.defaultPrevented) handleKeyDown(event, index);\n }}\n >\n {item.label}\n </button>\n\n {isClosable && (\n <button\n {...item.closeButtonProps}\n type=\"button\"\n className={[styles.closeBtn, item.closeButtonProps?.className]\n .filter(Boolean)\n .join(\" \")}\n aria-label={item.closeLabel ?? closeLabel}\n disabled={isDisabled}\n onClick={(event) => {\n item.closeButtonProps?.onClick?.(event);\n if (event.defaultPrevented) return;\n item.onClose?.(item.value);\n onTabClose?.(item.value);\n }}\n >\n {item.closeButtonProps?.children ?? <XIcon />}\n </button>\n )}\n </span>\n );\n })}\n </div>\n\n {selectedItem?.content !== undefined && (\n <div\n {...selectedItem.panelProps}\n className={[styles.panel, selectedItem.panelProps?.className]\n .filter(Boolean)\n .join(\" \")}\n role=\"tabpanel\"\n id={`${id}-${selectedItem.value}-panel`}\n aria-labelledby={`${id}-${selectedItem.value}-tab`}\n >\n {selectedItem.content}\n </div>\n )}\n </div>\n );\n}\n\nTabs.displayName = \"Tabs\";\n","import { forwardRef, type ChangeEvent } from \"react\";\nimport type {\n ButtonHTMLAttributes,\n HTMLAttributes,\n TextareaHTMLAttributes\n} from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport styles from \"./Textarea.module.css\";\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"12\" height=\"12\">\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nexport type TextareaProps = Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"defaultValue\" | \"onChange\" | \"value\"\n> & {\n label?: string;\n helpText?: string;\n maxLength?: number;\n clearable?: boolean;\n mono?: boolean;\n value?: string;\n defaultValue?: string;\n textareaProps?: TextareaHTMLAttributes<HTMLTextAreaElement>;\n wrapperProps?: HTMLAttributes<HTMLDivElement>;\n fieldProps?: HTMLAttributes<HTMLDivElement>;\n clearButtonProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n onChange?: TextareaHTMLAttributes<HTMLTextAreaElement>[\"onChange\"];\n onValueChange?: (value: string) => void;\n};\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n label,\n helpText,\n maxLength,\n clearable = false,\n mono = false,\n value,\n defaultValue = \"\",\n disabled,\n textareaProps,\n wrapperProps,\n fieldProps,\n clearButtonProps,\n onChange,\n onValueChange,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const [currentValue, setCurrentValue] = useControlledState(\n value,\n defaultValue,\n (next) => onValueChange?.(next)\n );\n\n const handleChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n setCurrentValue(e.target.value);\n onChange?.(e);\n textareaProps?.onChange?.(e);\n };\n\n const handleClear = () => {\n setCurrentValue(\"\");\n };\n\n const isOver = maxLength !== undefined && currentValue.length > maxLength;\n\n const textareaClass = [\n styles.textarea,\n \"sb\",\n mono ? styles.mono : null,\n clearable ? styles.hasClear : null,\n className,\n textareaProps?.className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const wrapperClass = [styles.wrapper, wrapperProps?.className]\n .filter(Boolean)\n .join(\" \");\n const fieldClass = [styles.field, fieldProps?.className]\n .filter(Boolean)\n .join(\" \");\n const textareaStyle = {\n ...style,\n ...textareaProps?.style\n };\n const isDisabled = disabled || textareaProps?.disabled;\n\n const inner = (\n <div {...wrapperProps} className={wrapperClass}>\n <textarea\n {...props}\n {...textareaProps}\n ref={ref}\n disabled={isDisabled}\n maxLength={maxLength}\n value={currentValue}\n onChange={handleChange}\n className={textareaClass}\n style={textareaStyle}\n />\n {clearable && (\n <button\n type=\"button\"\n className={styles.clearBtn}\n disabled={isDisabled || currentValue.length === 0}\n aria-label=\"Clear\"\n onClick={handleClear}\n {...clearButtonProps}\n >\n {clearButtonProps?.children ?? <XIcon />}\n </button>\n )}\n </div>\n );\n\n if (!label && !helpText && maxLength === undefined) return inner;\n\n return (\n <div {...fieldProps} className={fieldClass}>\n {label && <label className={styles.label}>{label}</label>}\n {inner}\n {(helpText || maxLength !== undefined) && (\n <div className={styles.footer}>\n {helpText && <span className={styles.helpText}>{helpText}</span>}\n {maxLength !== undefined && (\n <span className={[styles.charCount, isOver ? styles.charCountOver : null].filter(Boolean).join(\" \")}>\n {currentValue.length} / {maxLength}\n </span>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nTextarea.displayName = \"Textarea\";\n","import {\n createContext,\n useCallback,\n useContext,\n useState\n} from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Spinner } from \"../Spinner\";\nimport styles from \"./Toast.module.css\";\n\nconst CheckIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"16\" height=\"16\">\n <path d=\"M20 6 9 17l-5-5\"/>\n </svg>\n);\n\nconst XIcon = ({ size = 11 }: { size?: number }) => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width={size} height={size}>\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nconst AlertIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"16\" height=\"16\">\n <path d=\"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"/>\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"/>\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"/>\n </svg>\n);\n\nconst InfoIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"16\" height=\"16\">\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"/>\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"/>\n </svg>\n);\n\nconst LEAD_ICONS: Record<ToastVariant, ReactNode> = {\n ok: <CheckIcon />,\n error: <XIcon size={18} />,\n warning: <AlertIcon />,\n info: <InfoIcon />,\n loading: <Spinner size=\"sm\" muted />\n};\n\nexport type ToastVariant = \"ok\" | \"error\" | \"warning\" | \"info\" | \"loading\";\n\nexport type ToastItem = {\n id: string;\n variant: ToastVariant;\n title: string;\n message?: string;\n duration?: number;\n overlay?: boolean;\n};\n\nexport type ToastProps = HTMLAttributes<HTMLDivElement> & {\n variant?: ToastVariant;\n title: string;\n message?: string;\n overlay?: boolean;\n onDismiss?: () => void;\n};\n\nexport function Toast({\n variant = \"ok\",\n title,\n message,\n overlay = false,\n onDismiss,\n className,\n ...props\n}: ToastProps) {\n const isLoading = variant === \"loading\";\n const cls = [\n styles.toast,\n styles[variant],\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const toast = (\n <div {...props} className={cls} role=\"alert\">\n <span className={styles.lead}>{LEAD_ICONS[variant]}</span>\n <div className={styles.body}>\n <div className={styles.title}>{title}</div>\n {message && <div className={styles.message}>{message}</div>}\n </div>\n {onDismiss && !isLoading && (\n <button\n type=\"button\"\n className={styles.closeBtn}\n aria-label=\"Dismiss\"\n onClick={onDismiss}\n >\n <XIcon />\n </button>\n )}\n </div>\n );\n\n if (!overlay || !isLoading) return toast;\n\n return (\n <>\n <div className={styles.overlay} aria-hidden=\"true\" />\n {toast}\n </>\n );\n}\n\nToast.displayName = \"Toast\";\n\n/* ============================================================\n ToastProvider + useToast\n ============================================================ */\n\ntype ToastContextValue = {\n toast: (options: Omit<ToastItem, \"id\">) => string;\n dismiss: (id: string) => void;\n};\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nexport function ToastProvider({ children }: { children: ReactNode }) {\n const [items, setItems] = useState<ToastItem[]>([]);\n\n const dismiss = useCallback((id: string) => {\n setItems((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const toast = useCallback(\n (options: Omit<ToastItem, \"id\">) => {\n const id = Math.random().toString(36).slice(2);\n const duration = options.duration ?? (options.variant === \"loading\" ? 0 : 4000);\n\n setItems((prev) => [...prev, { ...options, id }]);\n\n if (duration > 0) {\n setTimeout(() => dismiss(id), duration);\n }\n\n return id;\n },\n [dismiss]\n );\n\n const hasOverlay = items.some((item) => item.variant === \"loading\" && item.overlay);\n\n return (\n <ToastContext.Provider value={{ toast, dismiss }}>\n {children}\n {typeof document !== \"undefined\" &&\n createPortal(\n <>\n {hasOverlay && <div className={styles.overlay} aria-hidden=\"true\" />}\n <div className={styles.stack}>\n {items.map((item) => (\n <Toast\n key={item.id}\n variant={item.variant}\n title={item.title}\n message={item.message}\n onDismiss={() => dismiss(item.id)}\n />\n ))}\n </div>\n </>,\n document.body\n )}\n </ToastContext.Provider>\n );\n}\n\nexport function useToast() {\n const ctx = useContext(ToastContext);\n if (!ctx) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return ctx;\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport type { FocusEvent, HTMLAttributes, MouseEvent, ReactNode } from \"react\";\nimport styles from \"./Tooltip.module.css\";\n\nexport type TooltipSide = \"top\" | \"bottom\" | \"left\" | \"right\";\nconst DEFAULT_TOOLTIP_DELAY = 800;\n\nexport type TooltipProps = {\n content: ReactNode;\n side?: TooltipSide;\n delay?: number;\n children: ReactNode;\n wrapperProps?: HTMLAttributes<HTMLSpanElement>;\n disabled?: boolean;\n};\n\nexport function Tooltip({\n content,\n side = \"top\",\n delay = DEFAULT_TOOLTIP_DELAY,\n children,\n wrapperProps,\n disabled = false\n}: TooltipProps) {\n const [visible, setVisible] = useState(false);\n const showTimerRef = useRef<number | null>(null);\n\n const clearShowTimer = () => {\n if (showTimerRef.current !== null) {\n window.clearTimeout(showTimerRef.current);\n showTimerRef.current = null;\n }\n };\n\n useEffect(() => {\n return clearShowTimer;\n }, []);\n\n if (disabled) return <>{children}</>;\n\n const showTooltip = () => {\n clearShowTimer();\n\n if (delay <= 0) {\n setVisible(true);\n return;\n }\n\n showTimerRef.current = window.setTimeout(() => {\n setVisible(true);\n showTimerRef.current = null;\n }, delay);\n };\n\n const hideTooltip = () => {\n clearShowTimer();\n setVisible(false);\n };\n\n const handleMouseEnter = (event: MouseEvent<HTMLSpanElement>) => {\n wrapperProps?.onMouseEnter?.(event);\n showTooltip();\n };\n\n const handleMouseLeave = (event: MouseEvent<HTMLSpanElement>) => {\n wrapperProps?.onMouseLeave?.(event);\n hideTooltip();\n };\n\n const handleFocus = (event: FocusEvent<HTMLSpanElement>) => {\n wrapperProps?.onFocus?.(event);\n showTooltip();\n };\n\n const handleBlur = (event: FocusEvent<HTMLSpanElement>) => {\n wrapperProps?.onBlur?.(event);\n hideTooltip();\n };\n\n const tooltipClass = [styles.tooltip, styles[side]]\n .filter(Boolean)\n .join(\" \");\n\n const wrapperClass = [styles.wrapper, wrapperProps?.className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <span\n {...wrapperProps}\n className={wrapperClass}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {children}\n {visible && (\n <span className={tooltipClass} role=\"tooltip\">\n {content}\n </span>\n )}\n </span>\n );\n}\n\nTooltip.displayName = \"Tooltip\";\n"],"names":["useControlledState","controlledValue","defaultValue","onChange","internalValue","setInternalValue","useState","isControlled","value","setValue","useCallback","nextValue","ChevronIcon","jsx","PlusIcon","MinusIcon","getDefaultValue","multiple","isItemOpen","currentValue","itemValue","getNextValue","open","values","formatSpacing","spacing","Accordion","items","onValueChange","hideIndicator","indicator","border","highlight","radius","hoverHighlight","disabled","itemClassName","headerClassName","headerStyle","bodyClassName","bodyStyle","triggerClassName","contentClassName","className","style","props","id","useId","openValue","setOpenValue","cls","styles","rootStyle","item","itemDisabled","triggerId","contentId","jsxs","_a","_b","event","_c","_d","XIcon","Badge","variant","icon","pill","outline","coloredText","label","labelDirection","dismissable","onDismiss","children","ChevronRightIcon","Breadcrumb","separator","index","isLast","isCurrent","isDisabled","BreadCrumb","Scrollable","direction","track","arrows","autoHide","expand","scrollbarSize","height","classes","overflowStyle","sizeVar","Button","forwardRef","type","size","rounded","ref","PAD_MAP","Card","padding","bordered","tilt","onClose","closeBtnProps","CardHeader","title","subtitle","CardStat","unit","delta","deltaDirection","deltaClass","DEFAULT_PLACEHOLDER","DEFAULT_ALLOWED_PATTERN","getRawMaskValue","options","allowedPattern","char","applyMask","mask","placeholder","rawValue","rawIndex","maskedValue","maskChar","Input","iconPosition","clearable","clearButtonProps","clearLabel","maskAllowedPattern","maskPlaceholder","selectOnFocus","textAlign","inputProps","wrapperProps","fieldProps","inputRef","useRef","setCurrentValue","useImperativeHandle","formatValue","handleChange","formattedValue","handleClear","iconRight","iconLeft","inputClass","handleFocus","e","inputStyle","inputEl","wrapperClass","inner","CheckIcon","Checkbox","checked","defaultChecked","indeterminate","isChecked","Radio","RadioGroup","Switch","isOn","Menu","MenuItem","kbd","active","danger","MenuSeparator","Modal","footer","closeOnBackdrop","showCloseButton","backdropProps","modalProps","headerProps","bodyProps","footerProps","closeButtonProps","onOpenChange","innerRef","useEffect","handleKey","requestClose","handleBackdropClick","backdropClass","modalClass","Popover","openProp","defaultOpen","trigger","side","popProps","internalOpen","setInternalOpen","isOpen","wrapperRef","setOpen","handleClick","isTop","isEnd","popCls","clamp","min","max","Progress","shape","valueLabel","showValue","safeMax","isIndeterminate","safeValue","percent","shouldShowValue","progressbarProps","circleClass","trackClass","PushButtonGroup","PushButton","on","accent","solo","SearchIcon","defaultFilterOptions","searchValue","norm","o","Select","emptyLabel","filterOptions","isLoading","loadingLabel","onSearchChange","optionsAlign","optionsPosition","searchable","searchPlaceholder","showSelectedCount","showClearAll","showSelectedValues","closeOnSelect","selectProps","setSearchValue","rootRef","selectedValue","setSelectedValue","selected","selectedValues","useMemo","selectedOptions","filteredOptions","updateSearch","next","selectOption","option","v","clearValue","toggleAllValues","handleTriggerClick","handleTriggerKeyDown","isOptionsTop","triggerClass","showSelectedValuesInTrigger","showChips","showOptionCheckbox","showFooter","hasVisibleTriggerValue","maxChips","overflowCount","rootClass","optionsAlignClass","itemClass","Spinner","muted","onAccent","Tabs","ariaLabel","closable","closeLabel","onTabClose","tabClassName","tabItemClassName","transparent","inactiveTransparent","tabRefs","selectedItem","focusTab","startIndex","step","nextIndex","handleKeyDown","firstIndex","lastIndex","isClosable","tabId","panelId","node","Textarea","helpText","maxLength","mono","textareaProps","isOver","textareaClass","fieldClass","textareaStyle","AlertIcon","InfoIcon","LEAD_ICONS","Toast","message","overlay","toast","Fragment","ToastContext","createContext","ToastProvider","setItems","dismiss","prev","t","duration","hasOverlay","createPortal","useToast","ctx","useContext","DEFAULT_TOOLTIP_DELAY","Tooltip","content","delay","visible","setVisible","showTimerRef","clearShowTimer","showTooltip","hideTooltip","handleMouseEnter","handleMouseLeave","handleBlur","tooltipClass"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"super-kit.js","sources":["../src/hooks/useControlledState.ts","../src/Accordion/Accordion.tsx","../src/Badge/Badge.tsx","../src/Breadcrumb/Breadcrumb.tsx","../src/Scrollable/Scrollable.tsx","../src/Button/Button.tsx","../src/Card/Card.tsx","../src/DateTimeInput/DateTimeInput.tsx","../src/utils/mask.ts","../src/Input/Input.tsx","../src/Link/Link.tsx","../src/Markers/Markers.tsx","../src/Menu/Menu.tsx","../src/Modal/Modal.tsx","../src/Popover/Popover.tsx","../src/Progress/Progress.tsx","../src/PushButton/PushButton.tsx","../src/Select/Select.tsx","../src/Spinner/Spinner.tsx","../src/Steps/Steps.tsx","../src/Tabs/Tabs.tsx","../src/Textarea/Textarea.tsx","../src/Toast/Toast.tsx","../src/Tooltip/Tooltip.tsx"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\nexport function useControlledState<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void\n) {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : internalValue;\n\n const setValue = useCallback(\n (nextValue: T) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange]\n );\n\n return [value, setValue, isControlled] as const;\n}\n","import { useId } from \"react\";\nimport type { ButtonHTMLAttributes, CSSProperties, HTMLAttributes, ReactNode } from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport styles from \"./Accordion.module.css\";\n\nconst ChevronIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"14\" height=\"14\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n);\n\nconst PlusIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.9\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"13\" height=\"13\" aria-hidden=\"true\">\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n);\n\nconst MinusIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.9\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"13\" height=\"13\" aria-hidden=\"true\">\n <path d=\"M5 12h14\" />\n </svg>\n);\n\nexport type AccordionValue = string | string[];\nexport type AccordionIndicator = \"chevron\" | \"plus-minus\";\nexport type AccordionBorder = \"boxed\" | \"none\" | \"divider\";\nexport type AccordionHighlight = \"none\" | \"item\" | \"header\";\nexport type AccordionRadius = \"rounded\" | \"square\";\n\nexport type AccordionItem = {\n value: string;\n title: ReactNode;\n content: ReactNode;\n disabled?: boolean;\n icon?: ReactNode;\n className?: string;\n triggerProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n contentProps?: HTMLAttributes<HTMLDivElement>;\n};\n\nexport type AccordionProps = Omit<HTMLAttributes<HTMLDivElement>, \"defaultValue\" | \"onChange\"> & {\n items: AccordionItem[];\n value?: AccordionValue;\n defaultValue?: AccordionValue;\n onValueChange?: (value: AccordionValue) => void;\n multiple?: boolean;\n hideIndicator?: boolean;\n indicator?: AccordionIndicator;\n border?: AccordionBorder;\n highlight?: AccordionHighlight;\n radius?: AccordionRadius;\n hoverHighlight?: boolean;\n spacing?: number | string;\n disabled?: boolean;\n itemClassName?: string;\n headerClassName?: string;\n headerStyle?: CSSProperties;\n bodyClassName?: string;\n bodyStyle?: CSSProperties;\n triggerClassName?: string;\n contentClassName?: string;\n};\n\nfunction getDefaultValue(defaultValue: AccordionValue | undefined, multiple: boolean): AccordionValue {\n if (defaultValue !== undefined) return defaultValue;\n return multiple ? [] : \"\";\n}\n\nfunction isItemOpen(currentValue: AccordionValue, itemValue: string, multiple: boolean) {\n if (multiple) {\n return Array.isArray(currentValue)\n ? currentValue.includes(itemValue)\n : currentValue === itemValue;\n }\n\n return currentValue === itemValue;\n}\n\nfunction getNextValue(\n currentValue: AccordionValue,\n itemValue: string,\n multiple: boolean\n): AccordionValue {\n const open = isItemOpen(currentValue, itemValue, multiple);\n\n if (multiple) {\n const values = Array.isArray(currentValue) ? currentValue : currentValue ? [currentValue] : [];\n if (open) {\n return values.filter((value) => value !== itemValue);\n }\n\n return [...values, itemValue];\n }\n\n if (open) return \"\";\n return itemValue;\n}\n\nfunction formatSpacing(spacing: number | string | undefined) {\n if (typeof spacing === \"number\") return `${spacing}px`;\n return spacing;\n}\n\nexport function Accordion({\n items,\n value,\n defaultValue,\n onValueChange,\n multiple = true,\n hideIndicator = false,\n indicator = \"chevron\",\n border = \"boxed\",\n highlight = \"none\",\n radius = \"rounded\",\n hoverHighlight = true,\n spacing,\n disabled = false,\n itemClassName,\n headerClassName,\n headerStyle,\n bodyClassName,\n bodyStyle,\n triggerClassName,\n contentClassName,\n className,\n style,\n ...props\n}: AccordionProps) {\n const id = useId();\n const [openValue, setOpenValue] = useControlledState<AccordionValue>(\n value,\n getDefaultValue(defaultValue, multiple),\n onValueChange\n );\n\n const cls = [\n styles.accordion,\n styles[border],\n radius === \"square\" ? styles.square : null,\n highlight === \"item\" ? styles.highlightItem : null,\n highlight === \"header\" ? styles.highlightHeader : null,\n hoverHighlight ? null : styles.noHoverHighlight,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n const rootStyle = {\n ...style,\n ...(spacing !== undefined ? { \"--accordion-gap\": formatSpacing(spacing) } : null)\n } as CSSProperties;\n\n return (\n <div {...props} className={cls} style={rootStyle}>\n {items.map((item) => {\n const open = isItemOpen(openValue, item.value, multiple);\n const itemDisabled = disabled || item.disabled;\n const triggerId = `${id}-${item.value}-trigger`;\n const contentId = `${id}-${item.value}-content`;\n\n return (\n <section\n key={item.value}\n className={[styles.item, open ? styles.open : null, itemDisabled ? styles.disabled : null, itemClassName, item.className]\n .filter(Boolean)\n .join(\" \")}\n data-open={open ? \"true\" : undefined}\n >\n <button\n {...item.triggerProps}\n type=\"button\"\n id={triggerId}\n className={[styles.trigger, triggerClassName, headerClassName, item.triggerProps?.className]\n .filter(Boolean)\n .join(\" \")}\n style={{ ...headerStyle, ...item.triggerProps?.style }}\n aria-expanded={open}\n aria-controls={contentId}\n disabled={itemDisabled}\n onClick={(event) => {\n item.triggerProps?.onClick?.(event);\n if (!event.defaultPrevented) {\n setOpenValue(getNextValue(openValue, item.value, multiple));\n }\n }}\n >\n {item.icon && <span className={styles.icon}>{item.icon}</span>}\n <span className={styles.title}>{item.title}</span>\n {!hideIndicator && (\n <span className={[styles.indicator, indicator === \"plus-minus\" ? styles.plusMinus : styles.chevron]\n .filter(Boolean)\n .join(\" \")}\n >\n {indicator === \"plus-minus\" ? (open ? <MinusIcon /> : <PlusIcon />) : <ChevronIcon />}\n </span>\n )}\n </button>\n\n <div\n id={contentId}\n className={styles.contentWrap}\n role=\"region\"\n aria-labelledby={triggerId}\n aria-hidden={!open}\n >\n <div\n {...item.contentProps}\n className={[styles.content, contentClassName, bodyClassName, item.contentProps?.className]\n .filter(Boolean)\n .join(\" \")}\n style={{ ...bodyStyle, ...item.contentProps?.style }}\n >\n {item.content}\n </div>\n </div>\n </section>\n );\n })}\n </div>\n );\n}\n\nAccordion.displayName = \"Accordion\";\n","import type { HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Badge.module.css\";\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"10\" height=\"10\">\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nexport type BadgeVariant =\n | \"primary\"\n | \"secondary\"\n | \"ghost\"\n | \"danger\"\n | \"success\"\n | \"warning\";\n\nexport type BadgeProps = HTMLAttributes<HTMLSpanElement> & {\n variant?: BadgeVariant;\n icon?: ReactNode;\n pill?: boolean;\n outline?: boolean;\n coloredText?: boolean;\n indicator?: boolean;\n label?: boolean;\n labelDirection?: \"left\" | \"right\";\n dismissable?: boolean;\n onDismiss?: () => void;\n children?: ReactNode;\n};\n\nexport function Badge({\n variant = \"secondary\",\n icon,\n pill = false,\n outline = false,\n coloredText = false,\n indicator = false,\n label = false,\n labelDirection = \"right\",\n dismissable = false,\n onDismiss,\n children,\n className,\n ...props\n}: BadgeProps) {\n const cls = [\n styles.badge,\n styles[variant],\n outline ? styles.outline : null,\n coloredText ? styles.coloredText : null,\n indicator ? styles.indicator : null,\n pill ? styles.pill : null,\n label && !indicator ? styles.label : null,\n label && !indicator ? styles[`label-${labelDirection}`] : null,\n dismissable && !indicator ? styles.dismiss : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <span {...props} className={cls}>\n {!indicator && icon ? icon : null}\n {!indicator ? children : null}\n {dismissable && !indicator && (\n <button\n type=\"button\"\n className={styles.dismissBtn}\n aria-label=\"Remove\"\n onClick={onDismiss}\n >\n <XIcon />\n </button>\n )}\n </span>\n );\n}\n\nBadge.displayName = \"Badge\";\n","import type { AnchorHTMLAttributes, ButtonHTMLAttributes, HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Breadcrumb.module.css\";\n\nconst ChevronRightIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"12\" height=\"12\">\n <path d=\"m9 18 6-6-6-6\"/>\n </svg>\n);\n\nexport type BreadcrumbItem = {\n label: ReactNode;\n href?: string;\n current?: boolean;\n disabled?: boolean;\n onClick?: () => void;\n linkProps?: AnchorHTMLAttributes<HTMLAnchorElement>;\n buttonProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n};\n\nexport type BreadcrumbProps = HTMLAttributes<HTMLElement> & {\n items: BreadcrumbItem[];\n separator?: ReactNode;\n label?: string;\n};\n\nexport function Breadcrumb({\n items,\n separator = <ChevronRightIcon />,\n label = \"Breadcrumb\",\n className,\n ...props\n}: BreadcrumbProps) {\n const cls = [styles.breadcrumb, className].filter(Boolean).join(\" \");\n\n return (\n <nav {...props} className={cls} aria-label={label}>\n <ol className={styles.list}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n const isCurrent = item.current ?? isLast;\n const isDisabled = item.disabled || isCurrent;\n\n return (\n <li className={styles.item} key={index}>\n {index > 0 && (\n <span className={styles.separator} aria-hidden=\"true\">\n {separator}\n </span>\n )}\n\n {item.href && !isDisabled ? (\n <a\n {...item.linkProps}\n className={[styles.link, item.linkProps?.className]\n .filter(Boolean)\n .join(\" \")}\n href={item.href}\n >\n {item.label}\n </a>\n ) : item.onClick && !isDisabled ? (\n <button\n {...item.buttonProps}\n type=\"button\"\n className={[styles.link, styles.button, item.buttonProps?.className]\n .filter(Boolean)\n .join(\" \")}\n onClick={item.onClick}\n >\n {item.label}\n </button>\n ) : (\n <span\n className={[styles.current, item.disabled ? styles.disabled : null]\n .filter(Boolean)\n .join(\" \")}\n aria-current={isCurrent ? \"page\" : undefined}\n >\n {item.label}\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n\nBreadcrumb.displayName = \"Breadcrumb\";\n\nexport const BreadCrumb = Breadcrumb;\n","import type { CSSProperties, HTMLAttributes, ReactNode } from \"react\";\n\nexport type ScrollableDirection = \"vertical\" | \"horizontal\" | \"both\";\n\nexport type ScrollableProps = HTMLAttributes<HTMLDivElement> & {\n direction?: ScrollableDirection;\n track?: boolean;\n arrows?: boolean;\n autoHide?: boolean;\n expand?: boolean;\n scrollbarSize?: number;\n height?: string | number;\n children?: ReactNode;\n};\n\nexport function Scrollable({\n direction = \"vertical\",\n track = false,\n arrows = false,\n autoHide = false,\n expand = false,\n scrollbarSize,\n height,\n children,\n className,\n style,\n ...props\n}: ScrollableProps) {\n const classes = [\n \"sb\",\n track ? \"sb-track\" : null,\n arrows ? \"sb-arrows\" : null,\n autoHide ? \"sb-auto-hide\" : null,\n expand ? \"sb-expand\" : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const overflowStyle: CSSProperties =\n direction === \"vertical\"\n ? { overflowY: \"auto\", overflowX: \"hidden\" }\n : direction === \"horizontal\"\n ? { overflowX: \"auto\", overflowY: \"hidden\" }\n : { overflow: \"auto\" };\n\n const sizeVar = scrollbarSize !== undefined\n ? { \"--sb-w\": `${scrollbarSize}px` } as CSSProperties\n : undefined;\n\n return (\n <div\n {...props}\n className={classes}\n style={{ height, ...overflowStyle, ...sizeVar, ...style }}\n >\n {children}\n </div>\n );\n}\n\nScrollable.displayName = \"Scrollable\";\n","import { forwardRef } from \"react\";\nimport type { ButtonHTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Button.module.css\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"danger\" | \"success\" | \"warning\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n variant?: ButtonVariant;\n size?: ButtonSize;\n icon?: ReactNode;\n outline?: boolean;\n rounded?: boolean;\n coloredText?: boolean;\n transparent?: boolean;\n children?: ReactNode;\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n type = \"button\",\n variant = \"secondary\",\n size = \"md\",\n icon,\n outline = false,\n rounded = false,\n coloredText = false,\n transparent = false,\n children,\n className,\n disabled,\n ...props\n },\n ref\n ) => {\n const classes = [\n styles.btn,\n styles[variant],\n styles[size],\n outline ? styles.outline : null,\n rounded ? styles.rounded : null,\n coloredText ? styles.coloredText : null,\n transparent ? styles.transparent : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled}\n className={classes}\n {...props}\n >\n {icon ? <span className={styles.icon}>{icon}</span> : null}\n {children !== undefined && children !== null ? (\n <span className={styles.content}>{children}</span>\n ) : null}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import type { ButtonHTMLAttributes, HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Card.module.css\";\n\nexport type CardPadding = \"none\" | \"sm\" | \"md\" | \"lg\";\n\nexport type CardProps = HTMLAttributes<HTMLDivElement> & {\n padding?: CardPadding;\n bordered?: boolean;\n tilt?: boolean;\n onClose?: () => void;\n closeBtnProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n children?: ReactNode;\n};\n\nconst PAD_MAP: Record<CardPadding, string> = {\n none: styles.padNone,\n sm: styles.padSm,\n md: styles.padMd,\n lg: styles.padLg\n};\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"10\" height=\"10\">\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nexport function Card({\n padding = \"md\",\n bordered = false,\n tilt = false,\n onClose,\n closeBtnProps,\n children,\n className,\n ...props\n}: CardProps) {\n const cls = [styles.card, PAD_MAP[padding], bordered ? styles.bordered : null, tilt ? styles.tilt : null, className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div {...props} className={cls}>\n {onClose && (\n <button\n type=\"button\"\n aria-label=\"Close\"\n {...closeBtnProps}\n className={[styles.closeBtn, closeBtnProps?.className].filter(Boolean).join(\" \")}\n onClick={onClose}\n >\n <XIcon />\n </button>\n )}\n {children}\n </div>\n );\n}\n\nCard.displayName = \"Card\";\n\n/* ---------- Sub-components for convenience ---------- */\n\nexport type CardHeaderProps = HTMLAttributes<HTMLDivElement> & {\n icon?: ReactNode;\n title: ReactNode;\n subtitle?: ReactNode;\n};\n\nexport function CardHeader({\n icon,\n title,\n subtitle,\n className,\n ...props\n}: CardHeaderProps) {\n return (\n <div {...props} className={[styles.header, className].filter(Boolean).join(\" \")}>\n {icon && <span className={styles.headerIcon}>{icon}</span>}\n <div>\n <div className={styles.title}>{title}</div>\n {subtitle && <div className={styles.subtitle}>{subtitle}</div>}\n </div>\n </div>\n );\n}\n\nCardHeader.displayName = \"CardHeader\";\n\nexport type CardStatProps = HTMLAttributes<HTMLDivElement> & {\n value: ReactNode;\n unit?: string;\n delta?: string;\n deltaDirection?: \"positive\" | \"negative\" | \"neutral\";\n};\n\nexport function CardStat({\n value,\n unit,\n delta,\n deltaDirection = \"positive\",\n className,\n ...props\n}: CardStatProps) {\n const deltaClass = [\n styles.statDelta,\n deltaDirection === \"positive\"\n ? styles.deltaPositive\n : deltaDirection === \"negative\"\n ? styles.deltaNegative\n : styles.deltaNeutral\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div {...props} className={[styles.stat, className].filter(Boolean).join(\" \")}>\n <span className={styles.statValue}>\n {value}\n {unit && <span className={styles.statUnit}> {unit}</span>}\n </span>\n {delta && <span className={deltaClass}>{delta}</span>}\n </div>\n );\n}\n\nCardStat.displayName = \"CardStat\";\n","import React, {\n useEffect,\n forwardRef,\n useImperativeHandle,\n useRef,\n useState\n} from \"react\";\nimport type {\n ButtonHTMLAttributes,\n ChangeEvent,\n HTMLAttributes,\n InputHTMLAttributes\n} from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport styles from \"./DateTimeInput.module.css\";\n\nconst CalendarIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"14\" height=\"14\" aria-hidden=\"true\">\n <path d=\"M8 2v4M16 2v4\" />\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"3\" />\n <path d=\"M3 10h18\" />\n </svg>\n);\n\nconst ClockIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"14\" height=\"14\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"M12 7v5l3 2\" />\n </svg>\n);\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"12\" height=\"12\" aria-hidden=\"true\">\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n);\n\nexport type DateTimeInputMode = \"date\" | \"time\" | \"datetime\" | \"month\";\n\nexport type DateTimeInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"defaultValue\" | \"onChange\" | \"type\" | \"value\"\n> & {\n mode?: DateTimeInputMode;\n label?: string;\n value?: string;\n defaultValue?: string;\n clearable?: boolean;\n clearLabel?: string;\n showIcon?: boolean;\n openPickerOnClick?: boolean;\n inputProps?: InputHTMLAttributes<HTMLInputElement>;\n wrapperProps?: HTMLAttributes<HTMLSpanElement>;\n fieldProps?: HTMLAttributes<HTMLDivElement>;\n clearButtonProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n onValueChange?: (value: string) => void;\n};\n\nconst placeholderByMode: Record<DateTimeInputMode, string> = {\n date: \"yyyy-mm-dd\",\n time: \"hh:mm\",\n datetime: \"yyyy-mm-dd hh:mm\",\n month: \"yyyy-mm\"\n};\n\nconst monthNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\n\nconst dayNames = [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"];\nconst hourOptions = Array.from({ length: 24 }, (_, index) => pad(index));\nconst minuteOptions = Array.from({ length: 60 }, (_, index) => pad(index));\n\nfunction getModeIcon(mode: DateTimeInputMode) {\n return mode === \"time\" ? <ClockIcon /> : <CalendarIcon />;\n}\n\nfunction pad(value: number) {\n return String(value).padStart(2, \"0\");\n}\n\nfunction formatDateValue(date: Date) {\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n}\n\nfunction formatMonthValue(date: Date) {\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}`;\n}\n\nfunction parseDate(value: string, mode: DateTimeInputMode) {\n const datePart = mode === \"month\" ? `${value}-01` : value.slice(0, 10);\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(datePart)) return null;\n\n const [year, month, day] = datePart.split(\"-\").map(Number);\n const date = new Date(year, month - 1, day);\n\n if (\n date.getFullYear() !== year ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day\n ) {\n return null;\n }\n\n return date;\n}\n\nfunction getTimePart(value: string) {\n const time = value.split(\"T\")[1];\n return time?.slice(0, 5) ?? \"\";\n}\n\nfunction parseTime(value: string, mode: DateTimeInputMode) {\n const timeValue = mode === \"datetime\" ? getTimePart(value) : value.slice(0, 5);\n if (!/^\\d{2}:\\d{2}$/.test(timeValue)) return \"12:00\";\n\n const [hour, minute] = timeValue.split(\":\").map(Number);\n if (hour > 23 || minute > 59) return \"12:00\";\n\n return timeValue;\n}\n\nfunction getCalendarDays(viewDate: Date) {\n const year = viewDate.getFullYear();\n const month = viewDate.getMonth();\n const firstDay = new Date(year, month, 1);\n const start = new Date(year, month, 1 - firstDay.getDay());\n\n return Array.from({ length: 42 }, (_, index) => {\n const date = new Date(start);\n date.setDate(start.getDate() + index);\n return date;\n });\n}\n\nfunction isValueDisabled(value: string, min?: string | number, max?: string | number) {\n const minValue = typeof min === \"string\" ? min : undefined;\n const maxValue = typeof max === \"string\" ? max : undefined;\n return Boolean((minValue && value < minValue) || (maxValue && value > maxValue));\n}\n\nexport const DateTimeInput = forwardRef<HTMLInputElement, DateTimeInputProps>(\n (\n {\n mode = \"date\",\n label,\n value,\n defaultValue = \"\",\n clearable = false,\n clearLabel = \"Clear\",\n showIcon = true,\n openPickerOnClick = true,\n disabled,\n inputProps,\n wrapperProps,\n fieldProps,\n clearButtonProps,\n onChange,\n onValueChange,\n className,\n style,\n placeholder,\n min,\n max,\n step,\n ...props\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const wrapperRef = useRef<HTMLSpanElement>(null);\n const [pickerOpen, setPickerOpen] = useState(false);\n const [viewDate, setViewDate] = useState(() => parseDate(defaultValue, mode) ?? new Date());\n const [currentValue, setCurrentValue] = useControlledState(\n value,\n defaultValue,\n onValueChange\n );\n\n useImperativeHandle(ref, () => inputRef.current as HTMLInputElement);\n\n const isDisabled = disabled || inputProps?.disabled;\n const hasValue = currentValue.length > 0;\n const type = \"text\";\n const inputMin = min ?? inputProps?.min;\n const inputMax = max ?? inputProps?.max;\n const inputStep = step ?? inputProps?.step;\n const [selectedHour, selectedMinute] = parseTime(currentValue, mode).split(\":\");\n const pickerMin = typeof inputMin === \"string\"\n ? mode === \"month\" ? inputMin.slice(0, 7) : inputMin.slice(0, 10)\n : undefined;\n const pickerMax = typeof inputMax === \"string\"\n ? mode === \"month\" ? inputMax.slice(0, 7) : inputMax.slice(0, 10)\n : undefined;\n\n useEffect(() => {\n if (!pickerOpen) return;\n\n const selectedDate = parseDate(currentValue, mode);\n setViewDate(selectedDate ?? new Date());\n }, [currentValue, mode, pickerOpen]);\n\n useEffect(() => {\n if (!pickerOpen) return;\n\n const handlePointerDown = (event: PointerEvent) => {\n if (!wrapperRef.current?.contains(event.target as Node)) {\n setPickerOpen(false);\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") setPickerOpen(false);\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n document.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown);\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [pickerOpen]);\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setCurrentValue(event.target.value);\n onChange?.(event);\n inputProps?.onChange?.(event);\n };\n\n const handleClear = () => {\n setCurrentValue(\"\");\n setPickerOpen(false);\n inputRef.current?.focus();\n };\n\n const handleWrapperClick = (event: React.MouseEvent<HTMLSpanElement>) => {\n wrapperProps?.onClick?.(event);\n if (event.defaultPrevented || !openPickerOnClick || isDisabled) return;\n\n setPickerOpen(true);\n };\n\n const updateDateValue = (date: Date) => {\n const dateValue = formatDateValue(date);\n\n if (mode === \"datetime\") {\n setCurrentValue(`${dateValue}T${getTimePart(currentValue) || \"12:00\"}`);\n return;\n }\n\n setCurrentValue(dateValue);\n setPickerOpen(false);\n };\n\n const updateMonthValue = (date: Date) => {\n setCurrentValue(formatMonthValue(date));\n setPickerOpen(false);\n };\n\n const updateTimeValue = (timeValue: string) => {\n if (mode === \"time\") {\n setCurrentValue(timeValue);\n return;\n }\n\n const selectedDate = parseDate(currentValue, mode) ?? new Date();\n setCurrentValue(`${formatDateValue(selectedDate)}T${timeValue}`);\n };\n\n const updateTimePart = (part: \"hour\" | \"minute\", nextValue: string) => {\n const [currentHour, currentMinute] = parseTime(currentValue, mode).split(\":\");\n const nextTime = part === \"hour\"\n ? `${nextValue}:${currentMinute}`\n : `${currentHour}:${nextValue}`;\n\n updateTimeValue(nextTime);\n };\n\n const moveMonth = (offset: number) => {\n setViewDate((currentDate) => {\n const nextDate = new Date(currentDate);\n nextDate.setMonth(currentDate.getMonth() + offset);\n return nextDate;\n });\n };\n\n const moveYear = (offset: number) => {\n setViewDate((currentDate) => {\n const nextDate = new Date(currentDate);\n nextDate.setFullYear(currentDate.getFullYear() + offset);\n return nextDate;\n });\n };\n\n const handleToday = () => {\n const today = new Date();\n\n if (mode === \"month\") {\n updateMonthValue(today);\n return;\n }\n\n if (mode === \"time\") {\n updateTimeValue(`${pad(today.getHours())}:${pad(today.getMinutes())}`);\n return;\n }\n\n updateDateValue(today);\n };\n\n const renderTimeColumn = (\n part: \"hour\" | \"minute\",\n labelText: string,\n options: string[]\n ) => (\n <div className={styles.timeColumn} aria-label={labelText}>\n <span className={styles.timeColumnLabel}>{labelText}</span>\n <div className={styles.timeOptions}>\n {options.map((option) => {\n const selected = part === \"hour\"\n ? selectedHour === option\n : selectedMinute === option;\n const nextTime = part === \"hour\"\n ? `${option}:${selectedMinute}`\n : `${selectedHour}:${option}`;\n const timeDisabled = mode === \"time\"\n ? isValueDisabled(nextTime, inputMin, inputMax)\n : false;\n\n return (\n <button\n key={option}\n type=\"button\"\n className={[styles.timeOption, selected ? styles.selectedTime : null]\n .filter(Boolean)\n .join(\" \")}\n disabled={timeDisabled}\n onClick={() => updateTimePart(part, option)}\n >\n {option}\n </button>\n );\n })}\n </div>\n </div>\n );\n\n const inputClass = [\n styles.input,\n showIcon ? styles.hasIcon : null,\n clearable ? styles.hasClear : null,\n className,\n inputProps?.className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const wrapperClass = [\n styles.wrapper,\n isDisabled ? styles.disabled : null,\n wrapperProps?.className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const inputEl = (\n <span\n {...wrapperProps}\n ref={wrapperRef}\n className={wrapperClass}\n onClick={handleWrapperClick}\n >\n {showIcon ? <span className={styles.iconSlot}>{getModeIcon(mode)}</span> : null}\n <input\n {...props}\n {...inputProps}\n ref={inputRef}\n type={type}\n min={inputMin}\n max={inputMax}\n step={inputStep}\n readOnly={true}\n disabled={isDisabled}\n value={currentValue.replace(\"T\", \" \")}\n placeholder={placeholder ?? placeholderByMode[mode]}\n onChange={handleChange}\n onFocus={(event) => {\n props.onFocus?.(event);\n inputProps?.onFocus?.(event);\n if (openPickerOnClick && !isDisabled) setPickerOpen(true);\n }}\n className={inputClass}\n style={{ ...style, ...inputProps?.style }}\n />\n {clearable ? (\n <button\n type=\"button\"\n aria-label={clearLabel}\n title={clearLabel}\n disabled={isDisabled || !hasValue}\n onClick={(event) => {\n event.stopPropagation();\n clearButtonProps?.onClick?.(event);\n if (!event.defaultPrevented) handleClear();\n }}\n className={[styles.clearBtn, clearButtonProps?.className]\n .filter(Boolean)\n .join(\" \")}\n >\n {clearButtonProps?.children ?? <XIcon />}\n </button>\n ) : null}\n {pickerOpen && !isDisabled ? (\n <div\n className={styles.picker}\n role=\"dialog\"\n aria-label={label ?? \"Choose date and time\"}\n onClick={(event) => event.stopPropagation()}\n >\n {mode === \"time\" ? (\n <div className={styles.timePicker}>\n {renderTimeColumn(\"hour\", \"Hour\", hourOptions)}\n {renderTimeColumn(\"minute\", \"Minute\", minuteOptions)}\n </div>\n ) : (\n <>\n <div className={styles.pickerHeader}>\n <button type=\"button\" className={styles.navBtn} aria-label=\"Previous month\" onClick={() => mode === \"month\" ? moveYear(-1) : moveMonth(-1)}>\n <span aria-hidden=\"true\">‹</span>\n </button>\n <span className={styles.pickerTitle}>\n {mode === \"month\" ? viewDate.getFullYear() : `${monthNames[viewDate.getMonth()]} ${viewDate.getFullYear()}`}\n </span>\n <button type=\"button\" className={styles.navBtn} aria-label=\"Next month\" onClick={() => mode === \"month\" ? moveYear(1) : moveMonth(1)}>\n <span aria-hidden=\"true\">›</span>\n </button>\n </div>\n\n {mode === \"month\" ? (\n <div className={styles.monthGrid}>\n {monthNames.map((monthName, index) => {\n const monthDate = new Date(viewDate.getFullYear(), index, 1);\n const monthValue = formatMonthValue(monthDate);\n const selected = monthValue === currentValue.slice(0, 7);\n const monthDisabled = isValueDisabled(monthValue, pickerMin, pickerMax);\n\n return (\n <button\n key={monthName}\n type=\"button\"\n className={[styles.monthBtn, selected ? styles.selectedMonth : null]\n .filter(Boolean)\n .join(\" \")}\n disabled={monthDisabled}\n onClick={() => updateMonthValue(monthDate)}\n >\n {monthName.slice(0, 3)}\n </button>\n );\n })}\n </div>\n ) : (\n <>\n <div className={styles.weekDays}>\n {dayNames.map((dayName, index) => (\n <span key={`${dayName}-${index}`}>{dayName}</span>\n ))}\n </div>\n <div className={styles.dayGrid}>\n {getCalendarDays(viewDate).map((date) => {\n const dateValue = formatDateValue(date);\n const selected = dateValue === currentValue.slice(0, 10);\n const today = dateValue === formatDateValue(new Date());\n const outside = date.getMonth() !== viewDate.getMonth();\n const dateDisabled = isValueDisabled(dateValue, pickerMin, pickerMax);\n\n return (\n <button\n key={dateValue}\n type=\"button\"\n className={[\n styles.dayBtn,\n selected ? styles.selectedDay : null,\n today ? styles.today : null,\n outside ? styles.outsideDay : null\n ]\n .filter(Boolean)\n .join(\" \")}\n disabled={dateDisabled}\n onClick={() => updateDateValue(date)}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n {mode === \"datetime\" ? (\n <div className={styles.inlineTimePicker}>\n {renderTimeColumn(\"hour\", \"Hour\", hourOptions)}\n {renderTimeColumn(\"minute\", \"Minute\", minuteOptions)}\n </div>\n ) : null}\n </>\n )}\n </>\n )}\n\n <div className={styles.pickerFooter}>\n <button type=\"button\" className={styles.footerBtn} onClick={handleClear}>Clear</button>\n <button type=\"button\" className={styles.footerBtn} onClick={handleToday}>\n {mode === \"month\" ? \"This month\" : mode === \"time\" ? \"Now\" : \"Today\"}\n </button>\n </div>\n </div>\n ) : null}\n </span>\n );\n\n if (!label && !fieldProps) {\n return inputEl;\n }\n\n return (\n <div {...fieldProps} className={[styles.field, fieldProps?.className].filter(Boolean).join(\" \")}>\n {label ? <label className={styles.label}>{label}</label> : null}\n {inputEl}\n </div>\n );\n }\n);\n\nDateTimeInput.displayName = \"DateTimeInput\";\n","export type MaskValueOptions = {\n placeholder?: string;\n allowedPattern?: RegExp;\n};\n\nconst DEFAULT_PLACEHOLDER = \"X\";\nconst DEFAULT_ALLOWED_PATTERN = /[a-zA-Z0-9]/;\n\nexport function getRawMaskValue(value: string, options: MaskValueOptions = {}) {\n const allowedPattern = options.allowedPattern ?? DEFAULT_ALLOWED_PATTERN;\n\n return value\n .split(\"\")\n .filter((char) => allowedPattern.test(char))\n .join(\"\");\n}\n\nexport function applyMask(\n value: string,\n mask: string,\n options: MaskValueOptions = {}\n) {\n const placeholder = options.placeholder ?? DEFAULT_PLACEHOLDER;\n const rawValue = getRawMaskValue(value, options);\n let rawIndex = 0;\n let maskedValue = \"\";\n\n for (const maskChar of mask) {\n if (rawIndex >= rawValue.length) {\n break;\n }\n\n if (maskChar === placeholder) {\n maskedValue += rawValue[rawIndex];\n rawIndex += 1;\n continue;\n }\n\n maskedValue += maskChar;\n }\n\n return maskedValue;\n}\n","import React, {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef\n} from \"react\";\nimport type {\n ButtonHTMLAttributes,\n ChangeEvent,\n HTMLAttributes,\n InputHTMLAttributes,\n ReactNode\n} from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport { applyMask, getRawMaskValue } from \"../utils\";\nimport styles from \"./Input.module.css\";\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"12\" height=\"12\">\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nexport type InputValueChange = {\n value: string;\n rawValue: string;\n};\n\nexport type InputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"defaultValue\" | \"onChange\" | \"value\"\n> & {\n label?: string;\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n value?: string;\n defaultValue?: string;\n mask?: string;\n maskPlaceholder?: string;\n maskAllowedPattern?: RegExp;\n clearable?: boolean;\n clearLabel?: string;\n rounded?: boolean;\n selectOnFocus?: boolean;\n textAlign?: \"left\" | \"center\" | \"right\";\n inputProps?: InputHTMLAttributes<HTMLInputElement>;\n wrapperProps?: HTMLAttributes<HTMLSpanElement>;\n fieldProps?: HTMLAttributes<HTMLDivElement>;\n clearButtonProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n onValueChange?: (change: InputValueChange) => void;\n};\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n label,\n icon,\n iconPosition = \"left\",\n clearable = false,\n clearButtonProps,\n clearLabel,\n rounded = false,\n defaultValue = \"\",\n disabled,\n mask,\n maskAllowedPattern,\n maskPlaceholder,\n selectOnFocus = false,\n textAlign,\n inputProps,\n onChange,\n onValueChange,\n value,\n wrapperProps,\n fieldProps,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [currentValue, setCurrentValue] = useControlledState(\n value,\n defaultValue,\n (nextValue) => {\n onValueChange?.({\n value: nextValue,\n rawValue: mask\n ? getRawMaskValue(nextValue, {\n allowedPattern: maskAllowedPattern,\n placeholder: maskPlaceholder\n })\n : nextValue\n });\n }\n );\n\n useImperativeHandle(ref, () => inputRef.current as HTMLInputElement);\n\n const formatValue = useCallback(\n (nextValue: string) => {\n if (!mask) return nextValue;\n return applyMask(nextValue, mask, {\n allowedPattern: maskAllowedPattern,\n placeholder: maskPlaceholder\n });\n },\n [mask, maskAllowedPattern, maskPlaceholder]\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const formattedValue = formatValue(event.target.value);\n event.target.value = formattedValue;\n setCurrentValue(formattedValue);\n onChange?.(event);\n inputProps?.onChange?.(event);\n };\n\n const handleClear = () => {\n setCurrentValue(\"\");\n inputRef.current?.focus();\n };\n\n const iconRight = icon && iconPosition === \"right\";\n const iconLeft = icon && iconPosition === \"left\";\n\n const inputClass = [\n styles.input,\n rounded ? styles.rounded : null,\n iconLeft ? styles.hasIcon : null,\n iconRight ? styles.hasIconRight : null,\n clearable && iconRight ? styles.hasClearAndIconRight : clearable ? styles.hasClear : null,\n className,\n inputProps?.className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (selectOnFocus) e.target.select();\n props.onFocus?.(e);\n inputProps?.onFocus?.(e);\n };\n\n const inputStyle = {\n ...style,\n ...inputProps?.style,\n ...(textAlign ? { textAlign } : null)\n };\n const isDisabled = disabled || inputProps?.disabled;\n\n const inputEl = (\n <input\n {...props}\n {...inputProps}\n ref={inputRef}\n disabled={isDisabled}\n value={formatValue(currentValue)}\n onChange={handleChange}\n onFocus={handleFocus}\n className={inputClass}\n style={inputStyle}\n />\n );\n\n const wrapperClass = [styles.wrapper, wrapperProps?.className]\n .filter(Boolean)\n .join(\" \");\n\n const inner = (\n <span {...wrapperProps} className={wrapperClass}>\n {iconLeft ? <span className={styles.iconSlot}>{icon}</span> : null}\n {inputEl}\n {iconRight ? (\n <span className={[styles.iconSlotRight, clearable ? styles.iconSlotRightWithClear : null].filter(Boolean).join(\" \")}>\n {icon}\n </span>\n ) : null}\n {clearable ? (\n <button\n type=\"button\"\n aria-label=\"Clear\"\n title=\"Clear\"\n disabled={isDisabled || currentValue.length === 0}\n onClick={handleClear}\n className={styles.clearBtn}\n {...clearButtonProps}\n >\n {clearButtonProps?.children ?? <XIcon />}\n </button>\n ) : null}\n </span>\n );\n\n if (!label && !fieldProps) {\n return inner;\n }\n\n return (\n <div {...fieldProps} className={[styles.field, fieldProps?.className].filter(Boolean).join(\" \")}>\n {label ? <label className={styles.label}>{label}</label> : null}\n {inner}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n","import { forwardRef } from \"react\";\nimport type { AnchorHTMLAttributes, CSSProperties, MouseEvent, ReactNode } from \"react\";\nimport styles from \"./Link.module.css\";\n\nexport type LinkVariant = \"primary\" | \"secondary\" | \"ghost\" | \"danger\" | \"success\" | \"warning\";\n\nexport type LinkProps = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"aria-disabled\"> & {\n variant?: LinkVariant;\n underlined?: boolean;\n opacity?: number;\n disabled?: boolean;\n noreferrer?: boolean;\n noopener?: boolean;\n icon?: ReactNode;\n children?: ReactNode;\n};\n\nfunction mergeRel(rel: string | undefined, values: Array<string | false>) {\n const parts = new Set((rel ?? \"\").split(/\\s+/).filter(Boolean));\n values.forEach((value) => {\n if (value) parts.add(value);\n });\n\n return parts.size > 0 ? Array.from(parts).join(\" \") : undefined;\n}\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n variant = \"primary\",\n underlined = false,\n opacity,\n disabled = false,\n noreferrer = false,\n noopener,\n icon,\n children,\n className,\n style,\n href,\n rel,\n target,\n tabIndex,\n onClick,\n ...props\n },\n ref\n ) => {\n const externalNoopener = noopener ?? target === \"_blank\";\n const cls = [\n styles.link,\n styles[variant],\n underlined ? styles.underlined : null,\n disabled ? styles.disabled : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const linkStyle = {\n ...style,\n ...(opacity !== undefined ? { \"--link-opacity\": opacity } : null)\n } as CSSProperties;\n\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n onClick?.(event);\n if (disabled) event.preventDefault();\n };\n\n return (\n <a\n ref={ref}\n {...props}\n href={disabled ? undefined : href}\n target={target}\n rel={mergeRel(rel, [externalNoopener && \"noopener\", noreferrer && \"noreferrer\"])}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : tabIndex}\n className={cls}\n style={linkStyle}\n onClick={handleClick}\n >\n {icon && <span className={styles.icon}>{icon}</span>}\n {children}\n </a>\n );\n }\n);\n\nLink.displayName = \"Link\";\n","import type { HTMLAttributes, InputHTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Markers.module.css\";\n\nconst CheckIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\"/>\n </svg>\n);\n\n/* ── Checkbox ── */\n\nexport type CheckboxProps = Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"onChange\"> & {\n label?: ReactNode;\n checked?: boolean;\n defaultChecked?: boolean;\n indeterminate?: boolean;\n onChange?: (checked: boolean) => void;\n};\n\nexport function Checkbox({\n label,\n checked,\n defaultChecked,\n indeterminate = false,\n disabled = false,\n onChange,\n className,\n ...props\n}: CheckboxProps) {\n const isChecked = checked ?? defaultChecked ?? false;\n\n const cls = [\n styles.checkbox,\n isChecked && !indeterminate ? styles.checked : null,\n indeterminate ? styles.indeterminate : null,\n disabled ? styles.disabled : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label className={cls}>\n <input\n {...props}\n type=\"checkbox\"\n checked={isChecked}\n disabled={disabled}\n style={{ display: \"none\" }}\n onChange={(e) => onChange?.(e.currentTarget.checked)}\n />\n <span className={styles.checkboxBox}>\n {!indeterminate && <CheckIcon />}\n </span>\n {label}\n </label>\n );\n}\n\nCheckbox.displayName = \"Checkbox\";\n\n/* ── Radio ── */\n\nexport type RadioProps = Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"onChange\"> & {\n label?: ReactNode;\n checked?: boolean;\n onChange?: (value: string) => void;\n};\n\nexport function Radio({\n label,\n checked = false,\n disabled = false,\n onChange,\n value,\n className,\n ...props\n}: RadioProps) {\n const cls = [\n styles.radio,\n checked ? styles.radioChecked : null,\n disabled ? styles.radioDisabled : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label className={cls}>\n <input\n {...props}\n type=\"radio\"\n checked={checked}\n disabled={disabled}\n value={value}\n style={{ display: \"none\" }}\n onChange={(e) => onChange?.(e.currentTarget.value)}\n />\n <span className={styles.radioDot} />\n {label}\n </label>\n );\n}\n\nRadio.displayName = \"Radio\";\n\nexport type RadioGroupProps = HTMLAttributes<HTMLDivElement> & {\n children?: ReactNode;\n};\n\nexport function RadioGroup({ children, className, ...props }: RadioGroupProps) {\n const cls = [styles.radioGroup, className].filter(Boolean).join(\" \");\n return (\n <div {...props} className={cls} role=\"radiogroup\">\n {children}\n </div>\n );\n}\n\nRadioGroup.displayName = \"RadioGroup\";\n\n/* ── Switch ── */\n\nexport type SwitchProps = Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"onChange\"> & {\n label?: ReactNode;\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n};\n\nexport function Switch({\n label,\n checked,\n defaultChecked,\n disabled = false,\n onChange,\n className,\n ...props\n}: SwitchProps) {\n const isOn = checked ?? defaultChecked ?? false;\n\n const cls = [\n styles.switchWrap,\n isOn ? styles.switchOn : null,\n disabled ? styles.switchDisabled : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label className={cls}>\n <input\n {...props}\n type=\"checkbox\"\n checked={isOn}\n disabled={disabled}\n style={{ display: \"none\" }}\n onChange={(e) => onChange?.(e.currentTarget.checked)}\n />\n <span className={styles.switchTrack} />\n {label}\n </label>\n );\n}\n\nSwitch.displayName = \"Switch\";\n","import type { ButtonHTMLAttributes, HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Menu.module.css\";\n\nexport type MenuProps = HTMLAttributes<HTMLDivElement> & {\n children?: ReactNode;\n};\n\nexport function Menu({ children, className, ...props }: MenuProps) {\n const cls = [styles.menu, className].filter(Boolean).join(\" \");\n return (\n <div {...props} className={cls} role=\"menu\">\n {children}\n </div>\n );\n}\n\nMenu.displayName = \"Menu\";\n\nexport type MenuItemProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n icon?: ReactNode;\n kbd?: string;\n active?: boolean;\n danger?: boolean;\n children?: ReactNode;\n};\n\nexport function MenuItem({\n icon,\n kbd,\n active = false,\n danger = false,\n disabled = false,\n children,\n className,\n ...props\n}: MenuItemProps) {\n const cls = [\n styles.item,\n active ? styles.active : null,\n danger ? styles.danger : null,\n disabled ? styles.disabled : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <button {...props} type=\"button\" className={cls} disabled={disabled} role=\"menuitem\">\n {icon}\n {children}\n {kbd && <span className={styles.kbd}>{kbd}</span>}\n </button>\n );\n}\n\nMenuItem.displayName = \"MenuItem\";\n\nexport function MenuSeparator({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n const cls = [styles.separator, className].filter(Boolean).join(\" \");\n return <div {...props} className={cls} role=\"separator\" />;\n}\n\nMenuSeparator.displayName = \"MenuSeparator\";\n","import {\n useEffect,\n useRef,\n forwardRef,\n useImperativeHandle\n} from \"react\";\nimport type {\n ButtonHTMLAttributes,\n HTMLAttributes,\n MouseEvent,\n ReactNode\n} from \"react\";\nimport styles from \"./Modal.module.css\";\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"11\" height=\"11\">\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nexport type ModalProps = {\n open: boolean;\n title?: ReactNode;\n subtitle?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n closeOnBackdrop?: boolean;\n showCloseButton?: boolean;\n backdropProps?: HTMLAttributes<HTMLDivElement>;\n modalProps?: HTMLAttributes<HTMLDivElement>;\n headerProps?: HTMLAttributes<HTMLElement>;\n bodyProps?: HTMLAttributes<HTMLElement>;\n footerProps?: HTMLAttributes<HTMLElement>;\n closeButtonProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n onOpenChange?: (open: boolean) => void;\n onClose?: () => void;\n};\n\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n open,\n title,\n subtitle,\n children,\n footer,\n closeOnBackdrop = true,\n showCloseButton = true,\n backdropProps,\n modalProps,\n headerProps,\n bodyProps,\n footerProps,\n closeButtonProps,\n onOpenChange,\n onClose\n },\n ref\n ) => {\n const innerRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement);\n\n useEffect(() => {\n if (!open) return;\n\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") requestClose();\n };\n\n document.addEventListener(\"keydown\", handleKey);\n return () => document.removeEventListener(\"keydown\", handleKey);\n }, [open]);\n\n const requestClose = () => {\n onOpenChange?.(false);\n onClose?.();\n };\n\n const handleBackdropClick = (event: MouseEvent<HTMLDivElement>) => {\n if (closeOnBackdrop && event.target === event.currentTarget) {\n requestClose();\n }\n };\n\n if (!open) return null;\n\n const backdropClass = [styles.backdrop, backdropProps?.className]\n .filter(Boolean)\n .join(\" \");\n\n const modalClass = [styles.modal, modalProps?.className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n {...backdropProps}\n className={backdropClass}\n onClick={handleBackdropClick}\n role=\"presentation\"\n >\n <div\n ref={innerRef}\n {...modalProps}\n className={modalClass}\n role=\"dialog\"\n aria-modal=\"true\"\n >\n {(title || showCloseButton) && (\n <header {...headerProps} className={[styles.header, headerProps?.className].filter(Boolean).join(\" \")}>\n <div className={styles.titleBlock}>\n {title ? <div className={styles.title}>{title}</div> : null}\n {subtitle ? <div className={styles.subtitle}>{subtitle}</div> : null}\n </div>\n {showCloseButton && (\n <button\n type=\"button\"\n aria-label=\"Close\"\n className={styles.closeBtn}\n onClick={requestClose}\n {...closeButtonProps}\n >\n {closeButtonProps?.children ?? <XIcon />}\n </button>\n )}\n </header>\n )}\n <section\n {...bodyProps}\n className={[styles.body, bodyProps?.className].filter(Boolean).join(\" \")}\n >\n {children}\n </section>\n {footer && (\n <footer\n {...footerProps}\n className={[styles.footer, footerProps?.className].filter(Boolean).join(\" \")}\n >\n {footer}\n </footer>\n )}\n </div>\n </div>\n );\n }\n);\n\nModal.displayName = \"Modal\";\n","import { useState, useRef, useEffect, type HTMLAttributes, type ReactNode } from \"react\";\nimport styles from \"./Popover.module.css\";\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/>\n </svg>\n);\n\nexport type PopoverSide = \"bottom-start\" | \"bottom-end\" | \"top-start\" | \"top-end\";\n\nexport type PopoverProps = {\n open?: boolean;\n defaultOpen?: boolean;\n title?: ReactNode;\n children?: ReactNode;\n trigger?: ReactNode;\n side?: PopoverSide;\n showCloseButton?: boolean;\n onOpenChange?: (open: boolean) => void;\n popProps?: HTMLAttributes<HTMLDivElement>;\n};\n\nexport function Popover({\n open: openProp,\n defaultOpen = false,\n title,\n children,\n trigger,\n side = \"bottom-start\",\n showCloseButton = true,\n onOpenChange,\n popProps\n}: PopoverProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = openProp !== undefined;\n const isOpen = isControlled ? openProp : internalOpen;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n function setOpen(value: boolean) {\n if (!isControlled) setInternalOpen(value);\n onOpenChange?.(value);\n }\n\n useEffect(() => {\n function handleClick(e: MouseEvent) {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }\n if (isOpen) document.addEventListener(\"mousedown\", handleClick);\n return () => document.removeEventListener(\"mousedown\", handleClick);\n }, [isOpen]);\n\n const isTop = side.startsWith(\"top\");\n const isEnd = side.endsWith(\"end\");\n\n const popCls = [\n styles.pop,\n isEnd ? styles.sideRight : null,\n isTop ? styles.sideTop : null,\n popProps?.className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div ref={wrapperRef} className={styles.wrapper}>\n {trigger && (\n <div onClick={() => setOpen(!isOpen)} style={{ display: \"inline-flex\" }}>\n {trigger}\n </div>\n )}\n {isOpen && (\n <div {...popProps} className={popCls}>\n <span className={styles.arrow} />\n {(title || showCloseButton) && (\n <div className={styles.head}>\n {title && <span className={styles.title}>{title}</span>}\n {showCloseButton && (\n <button\n type=\"button\"\n className={styles.closeBtn}\n aria-label=\"Close\"\n onClick={() => setOpen(false)}\n >\n <XIcon />\n </button>\n )}\n </div>\n )}\n <div className={styles.body}>{children}</div>\n </div>\n )}\n </div>\n );\n}\n\nPopover.displayName = \"Popover\";\n","import type { CSSProperties, HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Progress.module.css\";\n\nexport type ProgressVariant = \"accent\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"neutral\";\nexport type ProgressSize = \"sm\" | \"md\" | \"lg\";\nexport type ProgressShape = \"bar\" | \"circle\";\n\nexport type ProgressProps = HTMLAttributes<HTMLDivElement> & {\n value?: number;\n max?: number;\n variant?: ProgressVariant;\n size?: ProgressSize;\n shape?: ProgressShape;\n label?: ReactNode;\n valueLabel?: string;\n showValue?: boolean;\n indeterminate?: boolean;\n};\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function Progress({\n value,\n max = 100,\n variant = \"accent\",\n size = \"md\",\n shape = \"bar\",\n label,\n valueLabel,\n showValue,\n indeterminate = false,\n className,\n ...props\n}: ProgressProps) {\n const safeMax = max > 0 ? max : 100;\n const isIndeterminate = indeterminate || typeof value !== \"number\";\n const safeValue = typeof value === \"number\" ? clamp(value, 0, safeMax) : 0;\n const percent = Math.round((safeValue / safeMax) * 100);\n const shouldShowValue = showValue ?? shape === \"circle\";\n\n const cls = [\n styles.progress,\n styles[variant],\n shape === \"circle\" ? styles.circular : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const progressbarProps = {\n role: \"progressbar\",\n \"aria-valuemin\": isIndeterminate ? undefined : 0,\n \"aria-valuemax\": isIndeterminate ? undefined : safeMax,\n \"aria-valuenow\": isIndeterminate ? undefined : safeValue,\n \"aria-valuetext\": valueLabel\n };\n\n if (shape === \"circle\") {\n const circleClass = [\n styles.circle,\n styles[`circle-${size}`],\n isIndeterminate ? styles.indeterminateCircle : null\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div {...props} className={cls}>\n {label && <span className={styles.circleLabel}>{label}</span>}\n <div\n className={circleClass}\n style={{ \"--progress-percent\": `${percent}%` } as CSSProperties}\n {...progressbarProps}\n >\n {shouldShowValue && (\n <span className={styles.circleValue}>\n {valueLabel ?? (isIndeterminate ? \"Loading\" : `${percent}%`)}\n </span>\n )}\n </div>\n </div>\n );\n }\n\n const trackClass = [\n styles.track,\n styles[`bar-${size}`],\n isIndeterminate ? styles.indeterminate : null\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div {...props} className={cls}>\n {(label || shouldShowValue) && (\n <div className={styles.header}>\n {label && <span className={styles.label}>{label}</span>}\n {shouldShowValue && (\n <span className={styles.value}>\n {valueLabel ?? (isIndeterminate ? \"Loading\" : `${percent}%`)}\n </span>\n )}\n </div>\n )}\n <div className={trackClass} {...progressbarProps}>\n <span\n className={styles.fill}\n style={isIndeterminate ? undefined : { width: `${percent}%` }}\n />\n </div>\n </div>\n );\n}\n\nProgress.displayName = \"Progress\";\n","import type { ButtonHTMLAttributes, HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./PushButton.module.css\";\n\nexport type PushButtonGroupProps = HTMLAttributes<HTMLDivElement> & {\n children?: ReactNode;\n};\n\nexport function PushButtonGroup({ children, className, ...props }: PushButtonGroupProps) {\n const cls = [styles.group, className].filter(Boolean).join(\" \");\n return (\n <div {...props} className={cls} role=\"group\">\n {children}\n </div>\n );\n}\n\nPushButtonGroup.displayName = \"PushButtonGroup\";\n\nexport type PushButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n on?: boolean;\n accent?: boolean;\n solo?: boolean;\n icon?: ReactNode;\n children?: ReactNode;\n};\n\nexport function PushButton({\n on = false,\n accent = false,\n solo = false,\n icon,\n children,\n disabled = false,\n className,\n ...props\n}: PushButtonProps) {\n const cls = [\n styles.pb,\n on ? styles.on : null,\n on && accent ? styles.accent : null,\n solo ? styles.solo : null,\n disabled ? styles.disabled : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <button {...props} type=\"button\" className={cls} disabled={disabled}>\n {icon}\n {children}\n </button>\n );\n}\n\nPushButton.displayName = \"PushButton\";\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState\n} from \"react\";\nimport type {\n ButtonHTMLAttributes,\n CSSProperties,\n HTMLAttributes,\n KeyboardEvent,\n MouseEvent as ReactMouseEvent,\n ReactNode\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useControlledState } from \"../hooks\";\nimport styles from \"./Select.module.css\";\n\nconst ChevronIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"14\" height=\"14\">\n <path d=\"m6 9 6 6 6-6\"/>\n </svg>\n);\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"12\" height=\"12\">\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nconst SearchIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"7\"/>\n <path d=\"m20 20-3.5-3.5\"/>\n </svg>\n);\n\nconst CheckIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"10\" height=\"10\">\n <path d=\"M20 6 9 17l-5-5\"/>\n </svg>\n);\n\nexport type SelectOption<Value extends string = string> = {\n value: Value;\n label: ReactNode;\n meta?: string;\n disabled?: boolean;\n};\n\nexport type SelectValue<Value extends string = string> =\n | Value\n | Value[]\n | null;\n\nexport type SelectOptionsPosition = \"bottom\" | \"top\";\nexport type SelectOptionsAlign = \"left\" | \"center\" | \"right\";\n\nexport type SelectProps<Value extends string = string> = Omit<\n HTMLAttributes<HTMLDivElement>,\n \"defaultValue\" | \"onChange\"\n> & {\n label?: string;\n options: SelectOption<Value>[];\n value?: SelectValue<Value>;\n defaultValue?: SelectValue<Value>;\n multiple?: boolean;\n searchable?: boolean;\n clearable?: boolean;\n disabled?: boolean;\n placeholder?: string;\n searchPlaceholder?: string;\n emptyLabel?: string;\n loadingLabel?: string;\n isLoading?: boolean;\n optionsPosition?: SelectOptionsPosition;\n optionsAlign?: SelectOptionsAlign;\n showSelectedCount?: boolean;\n showClearAll?: boolean;\n showSelectedValues?: boolean;\n closeOnSelect?: boolean;\n selectProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n filterOptions?: (\n options: SelectOption<Value>[],\n searchValue: string\n ) => SelectOption<Value>[];\n onSearchChange?: (searchValue: string) => void;\n onValueChange?: (\n value: SelectValue<Value>,\n selectedOptions: SelectOption<Value>[]\n ) => void;\n};\n\nconst defaultFilterOptions = <Value extends string>(\n options: SelectOption<Value>[],\n searchValue: string\n) => {\n const norm = searchValue.trim().toLowerCase();\n if (!norm) return options;\n return options.filter((o) =>\n String(o.label).toLowerCase().includes(norm)\n );\n};\n\nconst useSafeLayoutEffect =\n typeof window === \"undefined\" ? useEffect : useLayoutEffect;\n\nexport const Select = forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n label,\n clearable = false,\n defaultValue = null,\n disabled = false,\n emptyLabel = \"No options found\",\n filterOptions = defaultFilterOptions,\n isLoading = false,\n loadingLabel = \"Loading...\",\n multiple = false,\n onSearchChange,\n onValueChange,\n options,\n optionsAlign = \"left\",\n optionsPosition = \"bottom\",\n placeholder = \"Select\",\n searchable = false,\n searchPlaceholder = \"Search...\",\n showSelectedCount = true,\n showClearAll = true,\n showSelectedValues = true,\n closeOnSelect,\n selectProps,\n value,\n className,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const [searchValue, setSearchValue] = useState(\"\");\n const [portalNode, setPortalNode] = useState<HTMLElement | null>(null);\n const [popoverStyle, setPopoverStyle] = useState<CSSProperties>({});\n const rootRef = useRef<HTMLDivElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n\n const [selectedValue, setSelectedValue] = useControlledState(\n value as SelectValue,\n defaultValue as SelectValue,\n (nextValue) => {\n const selected = options.filter((o) =>\n Array.isArray(nextValue)\n ? nextValue.includes(o.value)\n : o.value === nextValue\n );\n onValueChange?.(nextValue, selected);\n }\n );\n\n const selectedValues = useMemo(\n () =>\n Array.isArray(selectedValue)\n ? selectedValue\n : selectedValue\n ? [selectedValue]\n : [],\n [selectedValue]\n );\n\n const selectedOptions = useMemo(\n () => options.filter((o) => selectedValues.includes(o.value)),\n [options, selectedValues]\n );\n\n const filteredOptions = useMemo(\n () => filterOptions(options, searchValue),\n [filterOptions, options, searchValue]\n );\n\n useEffect(() => {\n setPortalNode(document.body);\n }, []);\n\n const isOptionsTop = optionsPosition === \"top\";\n\n const updatePopoverPosition = useCallback(() => {\n const rect = rootRef.current?.getBoundingClientRect();\n if (!rect) return;\n\n const nextStyle: CSSProperties = {\n position: \"fixed\",\n left: rect.left,\n right: \"auto\",\n width: rect.width,\n zIndex: 110\n };\n\n if (isOptionsTop) {\n nextStyle.top = \"auto\";\n nextStyle.bottom = window.innerHeight - rect.top;\n } else {\n nextStyle.top = rect.bottom;\n nextStyle.bottom = \"auto\";\n }\n\n setPopoverStyle(nextStyle);\n }, [isOptionsTop]);\n\n useSafeLayoutEffect(() => {\n if (open) updatePopoverPosition();\n }, [open, updatePopoverPosition]);\n\n useEffect(() => {\n if (!open) return;\n\n updatePopoverPosition();\n window.addEventListener(\"resize\", updatePopoverPosition);\n window.addEventListener(\"scroll\", updatePopoverPosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", updatePopoverPosition);\n window.removeEventListener(\"scroll\", updatePopoverPosition, true);\n };\n }, [open, updatePopoverPosition]);\n\n // Close on outside click\n useEffect(() => {\n if (!open) return;\n const handleClick = (e: MouseEvent) => {\n const target = e.target as Node;\n const clickedTrigger = rootRef.current?.contains(target);\n const clickedPopover = popoverRef.current?.contains(target);\n\n if (!clickedTrigger && !clickedPopover) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClick);\n return () => document.removeEventListener(\"mousedown\", handleClick);\n }, [open]);\n\n const updateSearch = (next: string) => {\n setSearchValue(next);\n onSearchChange?.(next);\n };\n\n const selectOption = (option: SelectOption) => {\n if (option.disabled) return;\n if (multiple) {\n const next = selectedValues.includes(option.value)\n ? selectedValues.filter((v) => v !== option.value)\n : [...selectedValues, option.value];\n setSelectedValue(next);\n if (closeOnSelect) setOpen(false);\n return;\n }\n setSelectedValue(option.value);\n if (closeOnSelect ?? true) setOpen(false);\n };\n\n const clearValue = () => {\n setSelectedValue(multiple ? [] : null);\n updateSearch(\"\");\n };\n\n const toggleAllValues = () => {\n if (selectedValues.length > 0) {\n clearValue();\n return;\n }\n\n setSelectedValue(options.filter((o) => !o.disabled).map((o) => o.value));\n };\n\n const handleTriggerClick = (e: ReactMouseEvent<HTMLButtonElement>) => {\n selectProps?.onClick?.(e);\n if (!e.defaultPrevented && !disabled) setOpen((o) => !o);\n };\n\n const handleTriggerKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n selectProps?.onKeyDown?.(e);\n if (e.defaultPrevented) return;\n\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setOpen((o) => !o);\n }\n if (e.key === \"Escape\") setOpen(false);\n };\n\n const triggerClass = [\n styles.trigger,\n open ? styles.triggerOpen : null,\n open\n ? isOptionsTop\n ? styles.triggerConnectedTop\n : styles.triggerConnectedBottom\n : null,\n selectProps?.className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const showSelectedValuesInTrigger = !multiple || showSelectedValues;\n const showChips = multiple && showSelectedValues && selectedOptions.length > 0;\n const showOptionCheckbox = multiple;\n const showFooter = multiple && (selectedValues.length > 0 || showClearAll);\n const hasVisibleTriggerValue = showSelectedValuesInTrigger && selectedOptions.length > 0;\n const maxChips = 2;\n const overflowCount = selectedOptions.length - maxChips;\n\n const rootClass = [styles.root, className].filter(Boolean).join(\" \");\n const optionsAlignClass = {\n left: styles.itemAlignLeft,\n center: styles.itemAlignCenter,\n right: styles.itemAlignRight\n }[optionsAlign];\n\n const popover = open ? (\n <div\n ref={popoverRef}\n className={[\n styles.popover,\n isOptionsTop ? styles.popoverTop : styles.popoverBottom\n ].join(\" \")}\n style={popoverStyle}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n >\n {searchable && (\n <div className={styles.search}>\n <span className={styles.searchIcon}><SearchIcon /></span>\n <input\n autoFocus\n value={searchValue}\n placeholder={searchPlaceholder}\n className={styles.searchInput}\n onChange={(e) => updateSearch(e.target.value)}\n />\n {searchValue && (\n <button className={styles.clearBtn} onClick={() => updateSearch(\"\")}>\n <XIcon />\n </button>\n )}\n </div>\n )}\n\n <ul className={[styles.list, \"sb\"].join(\" \")}>\n {isLoading && <li className={styles.emptyState}>{loadingLabel}</li>}\n {!isLoading && filteredOptions.length === 0 && (\n <li className={styles.emptyState}>{emptyLabel}</li>\n )}\n {!isLoading &&\n filteredOptions.map((option) => {\n const checked = selectedValues.includes(option.value);\n const itemClass = [\n styles.item,\n optionsAlignClass,\n checked ? styles.itemActive : null,\n option.disabled ? styles.itemDisabled : null\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <li\n key={option.value}\n className={itemClass}\n role=\"option\"\n aria-selected={checked}\n onClick={() => selectOption(option)}\n >\n {!showOptionCheckbox && optionsAlign === \"right\" && checked && (\n <span className={styles.checkIcon}><CheckIcon /></span>\n )}\n {showOptionCheckbox ? (\n <span className={[styles.checkbox, checked ? styles.checkboxChecked : null].filter(Boolean).join(\" \")}>\n {checked && <CheckIcon />}\n </span>\n ) : null}\n <span>{option.label}</span>\n {option.meta && <span className={styles.itemMeta}>{option.meta}</span>}\n {!showOptionCheckbox && optionsAlign !== \"right\" && checked && (\n <span className={styles.checkIcon}><CheckIcon /></span>\n )}\n </li>\n );\n })}\n </ul>\n\n {showFooter && (showSelectedCount || showClearAll) && (\n <div className={styles.popFooter}>\n {showSelectedCount && <span>{selectedValues.length} selected</span>}\n {showClearAll && (\n <button className={styles.popFooterBtn} onClick={toggleAllValues}>\n {selectedValues.length > 0 ? \"Clear all\" : \"Check all\"}\n </button>\n )}\n </div>\n )}\n </div>\n ) : null;\n\n const inner = (\n <div ref={rootRef} {...props} className={rootClass}>\n <button\n {...selectProps}\n type=\"button\"\n className={triggerClass}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n onClick={handleTriggerClick}\n onKeyDown={handleTriggerKeyDown}\n >\n {showChips ? (\n <div className={styles.chips}>\n {selectedOptions.slice(0, maxChips).map((o) => (\n <span key={o.value} className={styles.chip}>{o.label}</span>\n ))}\n {overflowCount > 0 && (\n <span className={[styles.chip, styles.chipOverflow].join(\" \")}>\n +{overflowCount}\n </span>\n )}\n </div>\n ) : (\n <span className={[styles.triggerValue, !hasVisibleTriggerValue ? styles.triggerPlaceholder : null].filter(Boolean).join(\" \")}>\n {hasVisibleTriggerValue\n ? selectedOptions.map((o) => o.label).join(\", \")\n : placeholder}\n </span>\n )}\n {clearable && selectedValues.length > 0 && (\n <button\n type=\"button\"\n aria-label=\"Clear\"\n className={styles.clearBtn}\n disabled={disabled}\n onClick={(e) => { e.stopPropagation(); clearValue(); }}\n >\n <XIcon />\n </button>\n )}\n <span className={[styles.chevron, open ? styles.chevronOpen : null].filter(Boolean).join(\" \")}>\n <ChevronIcon />\n </span>\n </button>\n\n {popover && portalNode ? createPortal(popover, portalNode) : popover}\n </div>\n );\n\n if (!label) return inner;\n\n return (\n <div className={styles.field}>\n <label className={styles.label}>\n {label}\n {multiple && showSelectedCount && selectedValues.length > 0 && (\n <span className={styles.labelMeta}>· {selectedValues.length} selected</span>\n )}\n </label>\n {inner}\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n","import type { HTMLAttributes } from \"react\";\nimport styles from \"./Spinner.module.css\";\n\nexport type SpinnerVariant = \"ring\" | \"dots\" | \"bar\";\nexport type SpinnerSize = \"sm\" | \"md\" | \"lg\";\n\nexport type SpinnerProps = HTMLAttributes<HTMLSpanElement> & {\n variant?: SpinnerVariant;\n size?: SpinnerSize;\n muted?: boolean;\n onAccent?: boolean;\n};\n\nexport function Spinner({\n variant = \"ring\",\n size = \"md\",\n muted = false,\n onAccent = false,\n className,\n ...props\n}: SpinnerProps) {\n if (variant === \"dots\") {\n const cls = [styles.dots, className].filter(Boolean).join(\" \");\n return (\n <span {...props} className={cls} role=\"status\" aria-label=\"Loading\">\n <span className={styles.dot} />\n <span className={styles.dot} />\n <span className={styles.dot} />\n </span>\n );\n }\n\n if (variant === \"bar\") {\n const cls = [styles.bar, className].filter(Boolean).join(\" \");\n return (\n <span {...props} className={cls} role=\"status\" aria-label=\"Loading\">\n <span className={styles.barFill} />\n </span>\n );\n }\n\n const cls = [\n styles.ring,\n styles[size],\n muted ? styles.ringMuted : null,\n onAccent ? styles.onAccent : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <span\n {...props}\n className={cls}\n role=\"status\"\n aria-label=\"Loading\"\n />\n );\n}\n\nSpinner.displayName = \"Spinner\";\n","import type { ButtonHTMLAttributes, HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Steps.module.css\";\n\nexport type StepsVariant = \"line\" | \"arrow\";\nexport type StepsSize = \"sm\" | \"md\" | \"lg\";\n\nexport type StepItem = {\n label: ReactNode;\n description?: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n className?: string;\n stepProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n};\n\nexport type StepsProps = Omit<HTMLAttributes<HTMLOListElement>, \"onChange\"> & {\n items: StepItem[];\n currentStep?: number;\n variant?: StepsVariant;\n size?: StepsSize;\n clickable?: boolean;\n showNumbers?: boolean;\n onStepChange?: (step: number) => void;\n stepClassName?: string;\n};\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function Steps({\n items,\n currentStep = 1,\n variant = \"line\",\n size = \"md\",\n clickable = false,\n showNumbers = true,\n onStepChange,\n stepClassName,\n className,\n ...props\n}: StepsProps) {\n const safeStep = items.length > 0 ? clamp(currentStep, 1, items.length) : 0;\n const isArrow = variant === \"arrow\";\n\n const cls = [\n styles.steps,\n isArrow ? styles.arrow : styles.line,\n styles[size],\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <ol {...props} className={cls}>\n {items.map((item, index) => {\n const step = index + 1;\n const completed = step < safeStep;\n const active = step === safeStep;\n const pending = step > safeStep;\n const interactive = clickable && !item.disabled;\n const status = active ? \"current\" : completed ? \"complete\" : \"pending\";\n const showMarker = !isArrow || item.icon || showNumbers;\n const content = (\n <>\n {showMarker && (\n <span className={styles.marker}>\n {item.icon ?? (showNumbers ? step : null)}\n </span>\n )}\n <span className={styles.text}>\n <span className={styles.label}>{item.label}</span>\n {item.description && <span className={styles.description}>{item.description}</span>}\n </span>\n </>\n );\n\n return (\n <li\n key={step}\n className={[\n styles.item,\n completed ? styles.complete : null,\n active ? styles.current : null,\n pending ? styles.pending : null,\n item.disabled ? styles.disabled : null,\n stepClassName,\n item.className\n ]\n .filter(Boolean)\n .join(\" \")}\n data-status={status}\n aria-current={active ? \"step\" : undefined}\n >\n {interactive ? (\n <button\n {...item.stepProps}\n type=\"button\"\n className={[styles.stepButton, item.stepProps?.className]\n .filter(Boolean)\n .join(\" \")}\n disabled={item.disabled}\n onClick={(event) => {\n item.stepProps?.onClick?.(event);\n if (!event.defaultPrevented) onStepChange?.(step);\n }}\n >\n {content}\n </button>\n ) : (\n <span className={styles.stepButton}>{content}</span>\n )}\n </li>\n );\n })}\n </ol>\n );\n}\n\nSteps.displayName = \"Steps\";\n","import { useId, useRef } from \"react\";\nimport type { ButtonHTMLAttributes, HTMLAttributes, KeyboardEvent, ReactNode } from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport styles from \"./Tabs.module.css\";\n\nexport type TabsVariant = \"raised\" | \"underline\" | \"rounded\";\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"11\" height=\"11\">\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nexport type TabItem = {\n value: string;\n label: ReactNode;\n content?: ReactNode;\n disabled?: boolean;\n closable?: boolean;\n closeLabel?: string;\n onClose?: (value: string) => void;\n className?: string;\n tabProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n closeButtonProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n panelProps?: HTMLAttributes<HTMLDivElement>;\n};\n\nexport type TabsProps = HTMLAttributes<HTMLDivElement> & {\n items: TabItem[];\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n variant?: TabsVariant;\n ariaLabel?: string;\n disabled?: boolean;\n closable?: boolean;\n closeLabel?: string;\n onTabClose?: (value: string) => void;\n tabClassName?: string;\n tabItemClassName?: string;\n transparent?: boolean;\n inactiveTransparent?: boolean;\n};\n\nfunction getDefaultValue(items: TabItem[]) {\n return items.find((item) => !item.disabled)?.value ?? items[0]?.value ?? \"\";\n}\n\nexport function Tabs({\n items,\n value,\n defaultValue,\n onValueChange,\n variant = \"raised\",\n ariaLabel = \"Tabs\",\n disabled = false,\n closable = false,\n closeLabel = \"Close tab\",\n onTabClose,\n tabClassName,\n tabItemClassName,\n transparent = false,\n inactiveTransparent = false,\n className,\n ...props\n}: TabsProps) {\n const id = useId();\n const tabRefs = useRef<Array<HTMLButtonElement | null>>([]);\n const [selectedValue, setSelectedValue] = useControlledState(\n value,\n defaultValue ?? getDefaultValue(items),\n onValueChange\n );\n\n const selectedItem = items.find((item) => item.value === selectedValue);\n const cls = [\n styles.tabs,\n styles[variant],\n transparent ? styles.transparent : null,\n inactiveTransparent ? styles.inactiveTransparent : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const focusTab = (startIndex: number, direction: 1 | -1) => {\n if (items.length === 0) return;\n\n for (let step = 1; step <= items.length; step += 1) {\n const nextIndex = (startIndex + step * direction + items.length) % items.length;\n if (!items[nextIndex]?.disabled && !disabled) {\n tabRefs.current[nextIndex]?.focus();\n setSelectedValue(items[nextIndex].value);\n return;\n }\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>, index: number) => {\n if (event.key === \"ArrowRight\") {\n event.preventDefault();\n focusTab(index, 1);\n return;\n }\n\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n focusTab(index, -1);\n return;\n }\n\n if (event.key === \"Home\") {\n event.preventDefault();\n const firstIndex = disabled ? -1 : items.findIndex((item) => !item.disabled);\n if (firstIndex >= 0) {\n tabRefs.current[firstIndex]?.focus();\n setSelectedValue(items[firstIndex].value);\n }\n return;\n }\n\n if (event.key === \"End\") {\n event.preventDefault();\n const lastIndex = disabled ? -1 : items.map((item) => !item.disabled).lastIndexOf(true);\n if (lastIndex >= 0) {\n tabRefs.current[lastIndex]?.focus();\n setSelectedValue(items[lastIndex].value);\n }\n }\n };\n\n return (\n <div {...props} className={cls}>\n <div className={styles.list} role=\"tablist\" aria-label={ariaLabel}>\n {items.map((item, index) => {\n const selected = item.value === selectedValue;\n const isDisabled = disabled || item.disabled;\n const isClosable = !isDisabled && (item.closable ?? closable);\n const tabId = `${id}-${item.value}-tab`;\n const panelId = `${id}-${item.value}-panel`;\n\n return (\n <span\n key={item.value}\n role=\"presentation\"\n className={[\n styles.tabItem,\n isClosable ? styles.closable : null,\n isDisabled ? styles.disabled : null,\n tabItemClassName,\n item.className\n ]\n .filter(Boolean)\n .join(\" \")}\n data-selected={selected ? \"true\" : undefined}\n >\n <button\n {...item.tabProps}\n ref={(node) => {\n tabRefs.current[index] = node;\n }}\n type=\"button\"\n role=\"tab\"\n id={tabId}\n aria-selected={selected}\n aria-controls={panelId}\n tabIndex={selected ? 0 : -1}\n disabled={isDisabled}\n className={[styles.tab, tabClassName, item.tabProps?.className]\n .filter(Boolean)\n .join(\" \")}\n onClick={(event) => {\n item.tabProps?.onClick?.(event);\n if (!event.defaultPrevented) setSelectedValue(item.value);\n }}\n onKeyDown={(event) => {\n item.tabProps?.onKeyDown?.(event);\n if (!event.defaultPrevented) handleKeyDown(event, index);\n }}\n >\n {item.label}\n </button>\n\n {isClosable && (\n <button\n {...item.closeButtonProps}\n type=\"button\"\n className={[styles.closeBtn, item.closeButtonProps?.className]\n .filter(Boolean)\n .join(\" \")}\n aria-label={item.closeLabel ?? closeLabel}\n disabled={isDisabled}\n onClick={(event) => {\n item.closeButtonProps?.onClick?.(event);\n if (event.defaultPrevented) return;\n item.onClose?.(item.value);\n onTabClose?.(item.value);\n }}\n >\n {item.closeButtonProps?.children ?? <XIcon />}\n </button>\n )}\n </span>\n );\n })}\n </div>\n\n {selectedItem?.content !== undefined && (\n <div\n {...selectedItem.panelProps}\n className={[styles.panel, selectedItem.panelProps?.className]\n .filter(Boolean)\n .join(\" \")}\n role=\"tabpanel\"\n id={`${id}-${selectedItem.value}-panel`}\n aria-labelledby={`${id}-${selectedItem.value}-tab`}\n >\n {selectedItem.content}\n </div>\n )}\n </div>\n );\n}\n\nTabs.displayName = \"Tabs\";\n","import { forwardRef, type ChangeEvent } from \"react\";\nimport type {\n ButtonHTMLAttributes,\n HTMLAttributes,\n TextareaHTMLAttributes\n} from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport styles from \"./Textarea.module.css\";\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"12\" height=\"12\">\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nexport type TextareaProps = Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"defaultValue\" | \"onChange\" | \"value\"\n> & {\n label?: string;\n helpText?: string;\n maxLength?: number;\n clearable?: boolean;\n mono?: boolean;\n value?: string;\n defaultValue?: string;\n textareaProps?: TextareaHTMLAttributes<HTMLTextAreaElement>;\n wrapperProps?: HTMLAttributes<HTMLDivElement>;\n fieldProps?: HTMLAttributes<HTMLDivElement>;\n clearButtonProps?: ButtonHTMLAttributes<HTMLButtonElement>;\n onChange?: TextareaHTMLAttributes<HTMLTextAreaElement>[\"onChange\"];\n onValueChange?: (value: string) => void;\n};\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n label,\n helpText,\n maxLength,\n clearable = false,\n mono = false,\n value,\n defaultValue = \"\",\n disabled,\n textareaProps,\n wrapperProps,\n fieldProps,\n clearButtonProps,\n onChange,\n onValueChange,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const [currentValue, setCurrentValue] = useControlledState(\n value,\n defaultValue,\n (next) => onValueChange?.(next)\n );\n\n const handleChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n setCurrentValue(e.target.value);\n onChange?.(e);\n textareaProps?.onChange?.(e);\n };\n\n const handleClear = () => {\n setCurrentValue(\"\");\n };\n\n const isOver = maxLength !== undefined && currentValue.length > maxLength;\n\n const textareaClass = [\n styles.textarea,\n \"sb\",\n mono ? styles.mono : null,\n clearable ? styles.hasClear : null,\n className,\n textareaProps?.className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const wrapperClass = [styles.wrapper, wrapperProps?.className]\n .filter(Boolean)\n .join(\" \");\n const fieldClass = [styles.field, fieldProps?.className]\n .filter(Boolean)\n .join(\" \");\n const textareaStyle = {\n ...style,\n ...textareaProps?.style\n };\n const isDisabled = disabled || textareaProps?.disabled;\n\n const inner = (\n <div {...wrapperProps} className={wrapperClass}>\n <textarea\n {...props}\n {...textareaProps}\n ref={ref}\n disabled={isDisabled}\n maxLength={maxLength}\n value={currentValue}\n onChange={handleChange}\n className={textareaClass}\n style={textareaStyle}\n />\n {clearable && (\n <button\n type=\"button\"\n className={styles.clearBtn}\n disabled={isDisabled || currentValue.length === 0}\n aria-label=\"Clear\"\n onClick={handleClear}\n {...clearButtonProps}\n >\n {clearButtonProps?.children ?? <XIcon />}\n </button>\n )}\n </div>\n );\n\n if (!label && !helpText && maxLength === undefined) return inner;\n\n return (\n <div {...fieldProps} className={fieldClass}>\n {label && <label className={styles.label}>{label}</label>}\n {inner}\n {(helpText || maxLength !== undefined) && (\n <div className={styles.footer}>\n {helpText && <span className={styles.helpText}>{helpText}</span>}\n {maxLength !== undefined && (\n <span className={[styles.charCount, isOver ? styles.charCountOver : null].filter(Boolean).join(\" \")}>\n {currentValue.length} / {maxLength}\n </span>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nTextarea.displayName = \"Textarea\";\n","import {\n createContext,\n useCallback,\n useContext,\n useState\n} from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Spinner } from \"../Spinner\";\nimport styles from \"./Toast.module.css\";\n\nconst CheckIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"16\" height=\"16\">\n <path d=\"M20 6 9 17l-5-5\"/>\n </svg>\n);\n\nconst XIcon = ({ size = 11 }: { size?: number }) => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width={size} height={size}>\n <path d=\"M18 6 6 18M6 6l12 12\"/>\n </svg>\n);\n\nconst AlertIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"16\" height=\"16\">\n <path d=\"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"/>\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"/>\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"/>\n </svg>\n);\n\nconst InfoIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" width=\"16\" height=\"16\">\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"/>\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"/>\n </svg>\n);\n\nconst LEAD_ICONS: Record<ToastVariant, ReactNode> = {\n ok: <CheckIcon />,\n error: <XIcon size={18} />,\n warning: <AlertIcon />,\n info: <InfoIcon />,\n loading: <Spinner size=\"sm\" muted />\n};\n\nexport type ToastVariant = \"ok\" | \"error\" | \"warning\" | \"info\" | \"loading\";\n\nexport type ToastItem = {\n id: string;\n variant: ToastVariant;\n title: string;\n message?: string;\n duration?: number;\n overlay?: boolean;\n};\n\nexport type ToastProps = HTMLAttributes<HTMLDivElement> & {\n variant?: ToastVariant;\n title: string;\n message?: string;\n overlay?: boolean;\n onDismiss?: () => void;\n};\n\nexport function Toast({\n variant = \"ok\",\n title,\n message,\n overlay = false,\n onDismiss,\n className,\n ...props\n}: ToastProps) {\n const isLoading = variant === \"loading\";\n const cls = [\n styles.toast,\n styles[variant],\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n const toast = (\n <div {...props} className={cls} role=\"alert\">\n <span className={styles.lead}>{LEAD_ICONS[variant]}</span>\n <div className={styles.body}>\n <div className={styles.title}>{title}</div>\n {message && <div className={styles.message}>{message}</div>}\n </div>\n {onDismiss && !isLoading && (\n <button\n type=\"button\"\n className={styles.closeBtn}\n aria-label=\"Dismiss\"\n onClick={onDismiss}\n >\n <XIcon />\n </button>\n )}\n </div>\n );\n\n if (!overlay || !isLoading) return toast;\n\n return (\n <>\n <div className={styles.overlay} aria-hidden=\"true\" />\n {toast}\n </>\n );\n}\n\nToast.displayName = \"Toast\";\n\n/* ============================================================\n ToastProvider + useToast\n ============================================================ */\n\ntype ToastContextValue = {\n toast: (options: Omit<ToastItem, \"id\">) => string;\n dismiss: (id: string) => void;\n};\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nexport function ToastProvider({ children }: { children: ReactNode }) {\n const [items, setItems] = useState<ToastItem[]>([]);\n\n const dismiss = useCallback((id: string) => {\n setItems((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const toast = useCallback(\n (options: Omit<ToastItem, \"id\">) => {\n const id = Math.random().toString(36).slice(2);\n const duration = options.duration ?? (options.variant === \"loading\" ? 0 : 4000);\n\n setItems((prev) => [...prev, { ...options, id }]);\n\n if (duration > 0) {\n setTimeout(() => dismiss(id), duration);\n }\n\n return id;\n },\n [dismiss]\n );\n\n const hasOverlay = items.some((item) => item.variant === \"loading\" && item.overlay);\n\n return (\n <ToastContext.Provider value={{ toast, dismiss }}>\n {children}\n {typeof document !== \"undefined\" &&\n createPortal(\n <>\n {hasOverlay && <div className={styles.overlay} aria-hidden=\"true\" />}\n <div className={styles.stack}>\n {items.map((item) => (\n <Toast\n key={item.id}\n variant={item.variant}\n title={item.title}\n message={item.message}\n onDismiss={() => dismiss(item.id)}\n />\n ))}\n </div>\n </>,\n document.body\n )}\n </ToastContext.Provider>\n );\n}\n\nexport function useToast() {\n const ctx = useContext(ToastContext);\n if (!ctx) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return ctx;\n}\n","import { useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport type { CSSProperties, FocusEvent, HTMLAttributes, MouseEvent, ReactNode } from \"react\";\nimport styles from \"./Tooltip.module.css\";\n\nexport type TooltipSide = \"top\" | \"bottom\" | \"left\" | \"right\";\nconst DEFAULT_TOOLTIP_DELAY = 800;\nconst TOOLTIP_GAP = 8;\nconst DEFAULT_VIEWPORT_PADDING = 8;\n\nexport type TooltipProps = {\n content: ReactNode;\n side?: TooltipSide;\n delay?: number;\n dynamic?: boolean;\n viewportPadding?: number;\n children: ReactNode;\n wrapperProps?: HTMLAttributes<HTMLSpanElement>;\n disabled?: boolean;\n};\n\nconst oppositeSide: Record<TooltipSide, TooltipSide> = {\n top: \"bottom\",\n bottom: \"top\",\n left: \"right\",\n right: \"left\"\n};\n\nexport function Tooltip({\n content,\n side = \"top\",\n delay = DEFAULT_TOOLTIP_DELAY,\n dynamic = true,\n viewportPadding = DEFAULT_VIEWPORT_PADDING,\n children,\n wrapperProps,\n disabled = false\n}: TooltipProps) {\n const [visible, setVisible] = useState(false);\n const [renderedSide, setRenderedSide] = useState<TooltipSide>(side);\n const [tooltipStyle, setTooltipStyle] = useState<CSSProperties | undefined>();\n const wrapperRef = useRef<HTMLSpanElement>(null);\n const tooltipRef = useRef<HTMLSpanElement>(null);\n const showTimerRef = useRef<number | null>(null);\n\n const clearShowTimer = () => {\n if (showTimerRef.current !== null) {\n window.clearTimeout(showTimerRef.current);\n showTimerRef.current = null;\n }\n };\n\n useEffect(() => {\n return clearShowTimer;\n }, []);\n\n useEffect(() => {\n if (!visible) {\n setRenderedSide(side);\n setTooltipStyle(undefined);\n }\n }, [side, visible]);\n\n useLayoutEffect(() => {\n if (!visible || !dynamic) {\n setRenderedSide(side);\n setTooltipStyle(undefined);\n return;\n }\n\n const wrapper = wrapperRef.current;\n const tooltip = tooltipRef.current;\n if (!wrapper || !tooltip) return;\n\n const wrapperRect = wrapper.getBoundingClientRect();\n const tooltipWidth = tooltip.offsetWidth;\n const tooltipHeight = tooltip.offsetHeight;\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n const available = {\n top: wrapperRect.top - viewportPadding,\n bottom: viewportHeight - wrapperRect.bottom - viewportPadding,\n left: wrapperRect.left - viewportPadding,\n right: viewportWidth - wrapperRect.right - viewportPadding\n };\n\n const required = {\n top: tooltipHeight + TOOLTIP_GAP,\n bottom: tooltipHeight + TOOLTIP_GAP,\n left: tooltipWidth + TOOLTIP_GAP,\n right: tooltipWidth + TOOLTIP_GAP\n };\n\n const fits = (nextSide: TooltipSide) => available[nextSide] >= required[nextSide];\n const fallbackSide = oppositeSide[side];\n let nextSide = side;\n\n if (!fits(side)) {\n nextSide = fits(fallbackSide)\n ? fallbackSide\n : available[fallbackSide] > available[side]\n ? fallbackSide\n : side;\n }\n\n let shiftX = 0;\n let shiftY = 0;\n\n if (nextSide === \"top\" || nextSide === \"bottom\") {\n const centeredLeft = wrapperRect.left + wrapperRect.width / 2 - tooltipWidth / 2;\n const leftOverflow = viewportPadding - centeredLeft;\n const rightOverflow = centeredLeft + tooltipWidth - (viewportWidth - viewportPadding);\n\n if (leftOverflow > 0) shiftX = leftOverflow;\n if (rightOverflow > 0) shiftX = -rightOverflow;\n } else {\n const centeredTop = wrapperRect.top + wrapperRect.height / 2 - tooltipHeight / 2;\n const topOverflow = viewportPadding - centeredTop;\n const bottomOverflow = centeredTop + tooltipHeight - (viewportHeight - viewportPadding);\n\n if (topOverflow > 0) shiftY = topOverflow;\n if (bottomOverflow > 0) shiftY = -bottomOverflow;\n }\n\n setRenderedSide(nextSide);\n setTooltipStyle({\n \"--tooltip-shift-x\": `${shiftX}px`,\n \"--tooltip-shift-y\": `${shiftY}px`\n } as CSSProperties);\n }, [dynamic, side, viewportPadding, visible, content]);\n\n if (disabled) return <>{children}</>;\n\n const showTooltip = () => {\n clearShowTimer();\n\n if (delay <= 0) {\n setVisible(true);\n return;\n }\n\n showTimerRef.current = window.setTimeout(() => {\n setVisible(true);\n showTimerRef.current = null;\n }, delay);\n };\n\n const hideTooltip = () => {\n clearShowTimer();\n setVisible(false);\n };\n\n const handleMouseEnter = (event: MouseEvent<HTMLSpanElement>) => {\n wrapperProps?.onMouseEnter?.(event);\n showTooltip();\n };\n\n const handleMouseLeave = (event: MouseEvent<HTMLSpanElement>) => {\n wrapperProps?.onMouseLeave?.(event);\n hideTooltip();\n };\n\n const handleFocus = (event: FocusEvent<HTMLSpanElement>) => {\n wrapperProps?.onFocus?.(event);\n showTooltip();\n };\n\n const handleBlur = (event: FocusEvent<HTMLSpanElement>) => {\n wrapperProps?.onBlur?.(event);\n hideTooltip();\n };\n\n const tooltipClass = [styles.tooltip, styles[renderedSide]]\n .filter(Boolean)\n .join(\" \");\n\n const wrapperClass = [styles.wrapper, wrapperProps?.className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <span\n {...wrapperProps}\n ref={wrapperRef}\n className={wrapperClass}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {children}\n {visible && (\n <span ref={tooltipRef} className={tooltipClass} role=\"tooltip\" style={tooltipStyle}>\n {content}\n </span>\n )}\n </span>\n );\n}\n\nTooltip.displayName = \"Tooltip\";\n"],"names":["useControlledState","controlledValue","defaultValue","onChange","internalValue","setInternalValue","useState","isControlled","value","setValue","useCallback","nextValue","ChevronIcon","jsx","PlusIcon","MinusIcon","getDefaultValue","multiple","isItemOpen","currentValue","itemValue","getNextValue","open","values","formatSpacing","spacing","Accordion","items","onValueChange","hideIndicator","indicator","border","highlight","radius","hoverHighlight","disabled","itemClassName","headerClassName","headerStyle","bodyClassName","bodyStyle","triggerClassName","contentClassName","className","style","props","id","useId","openValue","setOpenValue","cls","styles","rootStyle","item","itemDisabled","triggerId","contentId","jsxs","_a","_b","event","_c","_d","XIcon","Badge","variant","icon","pill","outline","coloredText","label","labelDirection","dismissable","onDismiss","children","ChevronRightIcon","Breadcrumb","separator","index","isLast","isCurrent","isDisabled","BreadCrumb","Scrollable","direction","track","arrows","autoHide","expand","scrollbarSize","height","classes","overflowStyle","sizeVar","Button","forwardRef","type","size","rounded","transparent","ref","PAD_MAP","Card","padding","bordered","tilt","onClose","closeBtnProps","CardHeader","title","subtitle","CardStat","unit","delta","deltaDirection","deltaClass","CalendarIcon","ClockIcon","placeholderByMode","monthNames","dayNames","hourOptions","_","pad","minuteOptions","getModeIcon","mode","formatDateValue","date","formatMonthValue","parseDate","datePart","year","month","day","getTimePart","time","parseTime","timeValue","hour","minute","getCalendarDays","viewDate","firstDay","start","isValueDisabled","min","max","minValue","maxValue","DateTimeInput","clearable","clearLabel","showIcon","openPickerOnClick","inputProps","wrapperProps","fieldProps","clearButtonProps","placeholder","step","inputRef","useRef","wrapperRef","pickerOpen","setPickerOpen","setViewDate","setCurrentValue","useImperativeHandle","hasValue","inputMin","inputMax","inputStep","selectedHour","selectedMinute","pickerMin","pickerMax","useEffect","selectedDate","handlePointerDown","handleKeyDown","handleChange","handleClear","handleWrapperClick","updateDateValue","dateValue","updateMonthValue","updateTimeValue","updateTimePart","part","currentHour","currentMinute","nextTime","moveMonth","offset","currentDate","nextDate","moveYear","handleToday","today","renderTimeColumn","labelText","options","option","selected","timeDisabled","inputClass","wrapperClass","inputEl","Fragment","monthName","monthDate","monthValue","monthDisabled","dayName","outside","dateDisabled","DEFAULT_PLACEHOLDER","DEFAULT_ALLOWED_PATTERN","getRawMaskValue","allowedPattern","char","applyMask","mask","rawValue","rawIndex","maskedValue","maskChar","Input","iconPosition","maskAllowedPattern","maskPlaceholder","selectOnFocus","textAlign","formatValue","formattedValue","iconRight","iconLeft","handleFocus","e","inputStyle","inner","mergeRel","rel","parts","Link","underlined","opacity","noreferrer","noopener","href","target","tabIndex","onClick","externalNoopener","linkStyle","handleClick","CheckIcon","Checkbox","checked","defaultChecked","indeterminate","isChecked","Radio","RadioGroup","Switch","isOn","Menu","MenuItem","kbd","active","danger","MenuSeparator","Modal","footer","closeOnBackdrop","showCloseButton","backdropProps","modalProps","headerProps","bodyProps","footerProps","closeButtonProps","onOpenChange","innerRef","handleKey","requestClose","handleBackdropClick","backdropClass","modalClass","Popover","openProp","defaultOpen","trigger","side","popProps","internalOpen","setInternalOpen","isOpen","setOpen","isTop","isEnd","popCls","clamp","Progress","shape","valueLabel","showValue","safeMax","isIndeterminate","safeValue","percent","shouldShowValue","progressbarProps","circleClass","trackClass","PushButtonGroup","PushButton","on","accent","solo","SearchIcon","defaultFilterOptions","searchValue","norm","useSafeLayoutEffect","useLayoutEffect","Select","emptyLabel","filterOptions","isLoading","loadingLabel","onSearchChange","optionsAlign","optionsPosition","searchable","searchPlaceholder","showSelectedCount","showClearAll","showSelectedValues","closeOnSelect","selectProps","setSearchValue","portalNode","setPortalNode","popoverStyle","setPopoverStyle","rootRef","popoverRef","selectedValue","setSelectedValue","o","selectedValues","useMemo","selectedOptions","filteredOptions","isOptionsTop","updatePopoverPosition","rect","nextStyle","clickedTrigger","clickedPopover","updateSearch","next","selectOption","v","clearValue","toggleAllValues","handleTriggerClick","handleTriggerKeyDown","triggerClass","showSelectedValuesInTrigger","showChips","showOptionCheckbox","showFooter","hasVisibleTriggerValue","maxChips","overflowCount","rootClass","optionsAlignClass","popover","itemClass","createPortal","Spinner","muted","onAccent","Steps","currentStep","clickable","showNumbers","onStepChange","stepClassName","safeStep","isArrow","completed","pending","interactive","status","showMarker","content","Tabs","ariaLabel","closable","closeLabel","onTabClose","tabClassName","tabItemClassName","inactiveTransparent","tabRefs","selectedItem","focusTab","startIndex","nextIndex","firstIndex","lastIndex","isClosable","tabId","panelId","node","Textarea","helpText","maxLength","mono","textareaProps","isOver","textareaClass","fieldClass","textareaStyle","AlertIcon","InfoIcon","LEAD_ICONS","Toast","message","overlay","toast","ToastContext","createContext","ToastProvider","setItems","dismiss","prev","t","duration","hasOverlay","useToast","ctx","useContext","DEFAULT_TOOLTIP_DELAY","TOOLTIP_GAP","DEFAULT_VIEWPORT_PADDING","oppositeSide","Tooltip","delay","dynamic","viewportPadding","visible","setVisible","renderedSide","setRenderedSide","tooltipStyle","setTooltipStyle","tooltipRef","showTimerRef","clearShowTimer","wrapper","tooltip","wrapperRect","tooltipWidth","tooltipHeight","viewportWidth","viewportHeight","available","required","fits","nextSide","fallbackSide","shiftX","shiftY","centeredLeft","leftOverflow","rightOverflow","centeredTop","topOverflow","bottomOverflow","showTooltip","hideTooltip","handleMouseEnter","handleMouseLeave","handleBlur","tooltipClass"],"mappings":"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"}
|