@dnotrever2/super-kit 0.1.3 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -7
- package/dist/super-kit.cjs +1 -1
- package/dist/super-kit.cjs.map +1 -1
- package/dist/super-kit.js +422 -416
- 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/Badge/Badge.tsx","../src/Scrollable/Scrollable.tsx","../src/Button/Button.tsx","../src/Card/Card.tsx","../src/hooks/useControlledState.ts","../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/PushButton/PushButton.tsx","../src/Select/Select.tsx","../src/Spinner/Spinner.tsx","../src/Textarea/Textarea.tsx","../src/Toast/Toast.tsx","../src/Tooltip/Tooltip.tsx"],"sourcesContent":["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 | \"neutral\"\n | \"accent\"\n | \"outline\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"info\"\n | \"count\"\n | \"mono\"\n | \"version\"\n | \"dot\";\n\nexport type BadgeProps = HTMLAttributes<HTMLSpanElement> & {\n variant?: BadgeVariant;\n icon?: ReactNode;\n pill?: boolean;\n dismissable?: boolean;\n onDismiss?: () => void;\n dotColor?: string;\n children?: ReactNode;\n};\n\nexport function Badge({\n variant = \"neutral\",\n icon,\n pill = false,\n dismissable = false,\n onDismiss,\n dotColor,\n children,\n className,\n ...props\n}: BadgeProps) {\n if (variant === \"dot\") {\n const cls = [styles.badge, styles.dot, className].filter(Boolean).join(\" \");\n return (\n <span {...props} className={cls}>\n <span\n className={styles.dotIndicator}\n style={{ background: dotColor ?? \"var(--accent)\" }}\n />\n {children}\n </span>\n );\n }\n\n const cls = [\n styles.badge,\n styles[variant],\n pill ? styles.pill : null,\n dismissable ? styles.dismiss : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <span {...props} className={cls}>\n {icon ? icon : null}\n {children}\n {dismissable && (\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 { 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 loading?: 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 loading = 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 className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\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","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","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 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 onChange,\n onValueChange,\n value,\n wrapperProps,\n fieldProps,\n className,\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 };\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 ]\n .filter(Boolean)\n .join(\" \");\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (selectOnFocus) e.target.select();\n props.onFocus?.(e);\n };\n\n const inputEl = (\n <input\n ref={inputRef}\n disabled={disabled}\n value={formatValue(currentValue)}\n onChange={handleChange}\n onFocus={handleFocus}\n className={inputClass}\n style={textAlign ? { textAlign, ...props.style } : props.style}\n {...props}\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={disabled || 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 { 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 HTMLAttributes,\n KeyboardEvent,\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 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 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 handleTriggerKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\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 ]\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;\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 type=\"button\"\n className={triggerClass}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n onClick={() => !disabled && setOpen((o) => !o)}\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={clearValue}>Clear all</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 { forwardRef, type ChangeEvent } from \"react\";\nimport type { TextareaHTMLAttributes } 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 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 onChange,\n onValueChange,\n className,\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 };\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 ]\n .filter(Boolean)\n .join(\" \");\n\n const inner = (\n <div className={styles.wrapper}>\n <textarea\n ref={ref}\n disabled={disabled}\n maxLength={maxLength}\n value={currentValue}\n onChange={handleChange}\n className={textareaClass}\n {...props}\n />\n {clearable && (\n <button\n type=\"button\"\n className={styles.clearBtn}\n disabled={disabled || currentValue.length === 0}\n aria-label=\"Clear\"\n onClick={handleClear}\n >\n <XIcon />\n </button>\n )}\n </div>\n );\n\n if (!label && !helpText && maxLength === undefined) return inner;\n\n return (\n <div className={styles.field}>\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 useId,\n useState\n} from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\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 = () => (\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\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 />,\n warning: <AlertIcon />,\n info: <InfoIcon />\n};\n\nexport type ToastVariant = \"ok\" | \"error\" | \"warning\" | \"info\";\n\nexport type ToastItem = {\n id: string;\n variant: ToastVariant;\n title: string;\n message?: string;\n duration?: number;\n};\n\nexport type ToastProps = HTMLAttributes<HTMLDivElement> & {\n variant?: ToastVariant;\n title: string;\n message?: string;\n onDismiss?: () => void;\n};\n\nexport function Toast({\n variant = \"ok\",\n title,\n message,\n onDismiss,\n className,\n ...props\n}: ToastProps) {\n const cls = [\n styles.toast,\n styles[variant],\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\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 && (\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\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 ?? 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 return (\n <ToastContext.Provider value={{ toast, dismiss }}>\n {children}\n {typeof document !== \"undefined\" &&\n createPortal(\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 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 { useState } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Tooltip.module.css\";\n\nexport type TooltipSide = \"top\" | \"bottom\";\n\nexport type TooltipProps = {\n content: ReactNode;\n side?: TooltipSide;\n children: ReactNode;\n wrapperProps?: HTMLAttributes<HTMLSpanElement>;\n disabled?: boolean;\n};\n\nexport function Tooltip({\n content,\n side = \"top\",\n children,\n wrapperProps,\n disabled = false\n}: TooltipProps) {\n const [visible, setVisible] = useState(false);\n\n if (disabled) return <>{children}</>;\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={() => setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n onFocus={() => setVisible(true)}\n onBlur={() => setVisible(false)}\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":["XIcon","jsx","Badge","variant","icon","pill","dismissable","onDismiss","dotColor","children","className","props","cls","styles","jsxs","Scrollable","direction","track","arrows","autoHide","expand","scrollbarSize","height","style","classes","overflowStyle","sizeVar","Button","forwardRef","type","size","loading","disabled","ref","PAD_MAP","Card","padding","bordered","tilt","onClose","closeBtnProps","CardHeader","title","subtitle","CardStat","value","unit","delta","deltaDirection","deltaClass","useControlledState","controlledValue","defaultValue","onChange","internalValue","setInternalValue","useState","isControlled","setValue","useCallback","nextValue","DEFAULT_PLACEHOLDER","DEFAULT_ALLOWED_PATTERN","getRawMaskValue","options","allowedPattern","char","applyMask","mask","placeholder","rawValue","rawIndex","maskedValue","maskChar","Input","label","iconPosition","clearable","clearButtonProps","clearLabel","maskAllowedPattern","maskPlaceholder","selectOnFocus","textAlign","onValueChange","wrapperProps","fieldProps","inputRef","useRef","currentValue","setCurrentValue","useImperativeHandle","formatValue","handleChange","event","formattedValue","handleClear","_a","iconRight","iconLeft","inputClass","handleFocus","e","inputEl","wrapperClass","inner","CheckIcon","Checkbox","checked","defaultChecked","indeterminate","isChecked","Radio","RadioGroup","Switch","isOn","Menu","MenuItem","kbd","active","danger","MenuSeparator","Modal","open","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","PushButtonGroup","PushButton","on","accent","solo","ChevronIcon","SearchIcon","defaultFilterOptions","searchValue","norm","o","Select","emptyLabel","filterOptions","isLoading","loadingLabel","multiple","onSearchChange","optionsAlign","optionsPosition","searchable","searchPlaceholder","showSelectedCount","showClearAll","showSelectedValues","closeOnSelect","setSearchValue","rootRef","selectedValue","setSelectedValue","selected","selectedValues","useMemo","selectedOptions","filteredOptions","updateSearch","next","selectOption","option","v","clearValue","handleTriggerKeyDown","isOptionsTop","triggerClass","showSelectedValuesInTrigger","showChips","showOptionCheckbox","showFooter","hasVisibleTriggerValue","maxChips","overflowCount","rootClass","optionsAlignClass","itemClass","Spinner","muted","onAccent","Textarea","helpText","maxLength","mono","isOver","textareaClass","AlertIcon","InfoIcon","LEAD_ICONS","Toast","message","ToastContext","createContext","ToastProvider","items","setItems","dismiss","id","prev","t","toast","duration","createPortal","item","useToast","ctx","useContext","Tooltip","content","visible","setVisible","Fragment","tooltipClass"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"super-kit.js","sources":["../src/Badge/Badge.tsx","../src/Scrollable/Scrollable.tsx","../src/Button/Button.tsx","../src/Card/Card.tsx","../src/hooks/useControlledState.ts","../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/PushButton/PushButton.tsx","../src/Select/Select.tsx","../src/Spinner/Spinner.tsx","../src/Textarea/Textarea.tsx","../src/Toast/Toast.tsx","../src/Tooltip/Tooltip.tsx"],"sourcesContent":["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 | \"neutral\"\n | \"accent\"\n | \"outline\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"info\"\n | \"count\"\n | \"mono\"\n | \"version\"\n | \"dot\";\n\nexport type BadgeProps = HTMLAttributes<HTMLSpanElement> & {\n variant?: BadgeVariant;\n icon?: ReactNode;\n pill?: boolean;\n dismissable?: boolean;\n onDismiss?: () => void;\n dotColor?: string;\n children?: ReactNode;\n};\n\nexport function Badge({\n variant = \"neutral\",\n icon,\n pill = false,\n dismissable = false,\n onDismiss,\n dotColor,\n children,\n className,\n ...props\n}: BadgeProps) {\n if (variant === \"dot\") {\n const cls = [styles.badge, styles.dot, className].filter(Boolean).join(\" \");\n return (\n <span {...props} className={cls}>\n <span\n className={styles.dotIndicator}\n style={{ background: dotColor ?? \"var(--accent)\" }}\n />\n {children}\n </span>\n );\n }\n\n const cls = [\n styles.badge,\n styles[variant],\n pill ? styles.pill : null,\n dismissable ? styles.dismiss : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <span {...props} className={cls}>\n {icon ? icon : null}\n {children}\n {dismissable && (\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 { 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 loading?: 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 loading = 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 className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\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","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","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 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 onChange,\n onValueChange,\n value,\n wrapperProps,\n fieldProps,\n className,\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 };\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 ]\n .filter(Boolean)\n .join(\" \");\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (selectOnFocus) e.target.select();\n props.onFocus?.(e);\n };\n\n const inputEl = (\n <input\n ref={inputRef}\n disabled={disabled}\n value={formatValue(currentValue)}\n onChange={handleChange}\n onFocus={handleFocus}\n className={inputClass}\n style={textAlign ? { textAlign, ...props.style } : props.style}\n {...props}\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={disabled || 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 { 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 HTMLAttributes,\n KeyboardEvent,\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 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 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 handleTriggerKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\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 ]\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 type=\"button\"\n className={triggerClass}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n onClick={() => !disabled && setOpen((o) => !o)}\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 { forwardRef, type ChangeEvent } from \"react\";\nimport type { TextareaHTMLAttributes } 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 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 onChange,\n onValueChange,\n className,\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 };\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 ]\n .filter(Boolean)\n .join(\" \");\n\n const inner = (\n <div className={styles.wrapper}>\n <textarea\n ref={ref}\n disabled={disabled}\n maxLength={maxLength}\n value={currentValue}\n onChange={handleChange}\n className={textareaClass}\n {...props}\n />\n {clearable && (\n <button\n type=\"button\"\n className={styles.clearBtn}\n disabled={disabled || currentValue.length === 0}\n aria-label=\"Clear\"\n onClick={handleClear}\n >\n <XIcon />\n </button>\n )}\n </div>\n );\n\n if (!label && !helpText && maxLength === undefined) return inner;\n\n return (\n <div className={styles.field}>\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 useId,\n useState\n} from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\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 = () => (\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\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 />,\n warning: <AlertIcon />,\n info: <InfoIcon />\n};\n\nexport type ToastVariant = \"ok\" | \"error\" | \"warning\" | \"info\";\n\nexport type ToastItem = {\n id: string;\n variant: ToastVariant;\n title: string;\n message?: string;\n duration?: number;\n};\n\nexport type ToastProps = HTMLAttributes<HTMLDivElement> & {\n variant?: ToastVariant;\n title: string;\n message?: string;\n onDismiss?: () => void;\n};\n\nexport function Toast({\n variant = \"ok\",\n title,\n message,\n onDismiss,\n className,\n ...props\n}: ToastProps) {\n const cls = [\n styles.toast,\n styles[variant],\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\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 && (\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\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 ?? 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 return (\n <ToastContext.Provider value={{ toast, dismiss }}>\n {children}\n {typeof document !== \"undefined\" &&\n createPortal(\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 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 { useState } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Tooltip.module.css\";\n\nexport type TooltipSide = \"top\" | \"bottom\";\n\nexport type TooltipProps = {\n content: ReactNode;\n side?: TooltipSide;\n children: ReactNode;\n wrapperProps?: HTMLAttributes<HTMLSpanElement>;\n disabled?: boolean;\n};\n\nexport function Tooltip({\n content,\n side = \"top\",\n children,\n wrapperProps,\n disabled = false\n}: TooltipProps) {\n const [visible, setVisible] = useState(false);\n\n if (disabled) return <>{children}</>;\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={() => setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n onFocus={() => setVisible(true)}\n onBlur={() => setVisible(false)}\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":["XIcon","jsx","Badge","variant","icon","pill","dismissable","onDismiss","dotColor","children","className","props","cls","styles","jsxs","Scrollable","direction","track","arrows","autoHide","expand","scrollbarSize","height","style","classes","overflowStyle","sizeVar","Button","forwardRef","type","size","loading","disabled","ref","PAD_MAP","Card","padding","bordered","tilt","onClose","closeBtnProps","CardHeader","title","subtitle","CardStat","value","unit","delta","deltaDirection","deltaClass","useControlledState","controlledValue","defaultValue","onChange","internalValue","setInternalValue","useState","isControlled","setValue","useCallback","nextValue","DEFAULT_PLACEHOLDER","DEFAULT_ALLOWED_PATTERN","getRawMaskValue","options","allowedPattern","char","applyMask","mask","placeholder","rawValue","rawIndex","maskedValue","maskChar","Input","label","iconPosition","clearable","clearButtonProps","clearLabel","maskAllowedPattern","maskPlaceholder","selectOnFocus","textAlign","onValueChange","wrapperProps","fieldProps","inputRef","useRef","currentValue","setCurrentValue","useImperativeHandle","formatValue","handleChange","event","formattedValue","handleClear","_a","iconRight","iconLeft","inputClass","handleFocus","e","inputEl","wrapperClass","inner","CheckIcon","Checkbox","checked","defaultChecked","indeterminate","isChecked","Radio","RadioGroup","Switch","isOn","Menu","MenuItem","kbd","active","danger","MenuSeparator","Modal","open","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","PushButtonGroup","PushButton","on","accent","solo","ChevronIcon","SearchIcon","defaultFilterOptions","searchValue","norm","o","Select","emptyLabel","filterOptions","isLoading","loadingLabel","multiple","onSearchChange","optionsAlign","optionsPosition","searchable","searchPlaceholder","showSelectedCount","showClearAll","showSelectedValues","closeOnSelect","setSearchValue","rootRef","selectedValue","setSelectedValue","selected","selectedValues","useMemo","selectedOptions","filteredOptions","updateSearch","next","selectOption","option","v","clearValue","toggleAllValues","handleTriggerKeyDown","isOptionsTop","triggerClass","showSelectedValuesInTrigger","showChips","showOptionCheckbox","showFooter","hasVisibleTriggerValue","maxChips","overflowCount","rootClass","optionsAlignClass","itemClass","Spinner","muted","onAccent","Textarea","helpText","maxLength","mono","isOver","textareaClass","AlertIcon","InfoIcon","LEAD_ICONS","Toast","message","ToastContext","createContext","ToastProvider","items","setItems","dismiss","id","prev","t","toast","duration","createPortal","item","useToast","ctx","useContext","Tooltip","content","visible","setVisible","Fragment","tooltipClass"],"mappings":"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"}
|