asterui 0.12.69 → 0.12.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sources":["../../src/components/Input.tsx"],"sourcesContent":["import React, { forwardRef, useState, useCallback, useRef, useEffect } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dInput = 'input'\nconst dInputXs = 'input-xs'\nconst dInputSm = 'input-sm'\nconst dInputMd = 'input-md'\nconst dInputLg = 'input-lg'\nconst dInputXl = 'input-xl'\nconst dInputNeutral = 'input-neutral'\nconst dInputPrimary = 'input-primary'\nconst dInputSecondary = 'input-secondary'\nconst dInputAccent = 'input-accent'\nconst dInputInfo = 'input-info'\nconst dInputSuccess = 'input-success'\nconst dInputWarning = 'input-warning'\nconst dInputError = 'input-error'\nconst dInputGhost = 'input-ghost'\nconst dFloatingLabel = 'floating-label'\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'> {\n type?: 'text' | 'password' | 'email' | 'number' | 'date' | 'datetime-local' | 'week' | 'month' | 'tel' | 'url' | 'search' | 'time'\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n /** Validation status */\n status?: 'error' | 'warning'\n ghost?: boolean\n bordered?: boolean\n className?: string\n /** Input mask pattern. Use # for digits, A for letters, * for alphanumeric */\n mask?: string\n /** Placeholder character shown in mask (default: _) */\n maskPlaceholder?: string\n /** Show clear button when input has value */\n allowClear?: boolean | { clearIcon?: React.ReactNode }\n /** Callback when clear button is clicked */\n onClear?: () => void\n /** Prefix icon or element (inside input) */\n prefix?: React.ReactNode\n /** Suffix icon or element (inside input) */\n suffix?: React.ReactNode\n /** Text/element before input (outside, using DaisyUI label) */\n addonBefore?: React.ReactNode\n /** Text/element after input (outside, using DaisyUI label) */\n addonAfter?: React.ReactNode\n /** Floating label text (uses DaisyUI floating-label) */\n floatingLabel?: string\n /** ID for error message element (for aria-describedby) */\n errorId?: string\n /** Render as unstyled input (for use inside styled wrappers) */\n unstyled?: boolean\n 'data-testid'?: string\n}\n\n// Helper to apply mask to raw value\nfunction applyMask(raw: string, mask: string, placeholder: string): string {\n let result = ''\n let rawIndex = 0\n\n for (let i = 0; i < mask.length && rawIndex <= raw.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (rawIndex < raw.length) {\n result += raw[rawIndex]\n rawIndex++\n } else {\n result += placeholder\n }\n } else {\n result += maskChar\n }\n }\n\n return result\n}\n\n// Extract raw value from masked input\nfunction extractRaw(value: string, mask: string, placeholder: string): string {\n let raw = ''\n for (let i = 0; i < value.length && i < mask.length; i++) {\n const maskChar = mask[i]\n if ((maskChar === '#' || maskChar === 'A' || maskChar === '*') && value[i] !== placeholder) {\n raw += value[i]\n }\n }\n return raw\n}\n\n// Check if character is valid for mask position\nfunction isValidChar(char: string, maskChar: string): boolean {\n if (maskChar === '#') return /\\d/.test(char)\n if (maskChar === 'A') return /[a-zA-Z]/.test(char)\n if (maskChar === '*') return /[a-zA-Z0-9]/.test(char)\n return false\n}\n\n// Find next input position in mask\nfunction findNextInputPosition(mask: string, fromIndex: number): number {\n for (let i = fromIndex; i < mask.length; i++) {\n if (mask[i] === '#' || mask[i] === 'A' || mask[i] === '*') {\n return i\n }\n }\n return mask.length\n}\n\n// Clear icon component\nconst ClearIcon: React.FC<{ onClick: () => void; className?: string }> = ({ onClick, className }) => (\n <button\n type=\"button\"\n onClick={onClick}\n className={`flex items-center justify-center opacity-50 hover:opacity-100 transition-opacity ${className || ''}`}\n aria-label=\"Clear input\"\n tabIndex={-1}\n >\n <svg className=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n)\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = 'text',\n size,\n color,\n status,\n ghost = false,\n bordered = true,\n className = '',\n mask,\n maskPlaceholder = '_',\n allowClear,\n onClear,\n prefix,\n suffix,\n addonBefore,\n addonAfter,\n floatingLabel,\n errorId,\n unstyled = false,\n value,\n defaultValue,\n onChange,\n onKeyDown,\n disabled,\n required,\n 'data-testid': testId,\n ...props\n },\n ref\n ) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n\n const sizeClasses = {\n xs: dInputXs,\n sm: dInputSm,\n md: dInputMd,\n lg: dInputLg,\n xl: dInputXl,\n }\n\n const colorClasses = {\n neutral: dInputNeutral,\n primary: dInputPrimary,\n secondary: dInputSecondary,\n accent: dInputAccent,\n info: dInputInfo,\n success: dInputSuccess,\n warning: dInputWarning,\n error: dInputError,\n }\n\n const statusClasses = {\n error: dInputError,\n warning: dInputWarning,\n }\n\n // Status takes precedence over color for validation feedback\n const effectiveColorClass = status ? statusClasses[status] : (color ? colorClasses[color] : '')\n\n // When wrapped with external addons OR unstyled prop, the wrapper has the input styling\n // Inner input should be unstyled (grow to fill space)\n const hasExternalAddons = addonBefore || addonAfter\n const shouldBeUnstyled = hasExternalAddons || unstyled\n\n const inputClasses = shouldBeUnstyled\n ? ['grow', 'bg-transparent', 'border-0', 'outline-none', 'focus:outline-none', className].filter(Boolean).join(' ')\n : [\n dInput,\n !bordered && 'border-0',\n ghost && dInputGhost,\n sizeClasses[effectiveSize],\n effectiveColorClass,\n className,\n ].filter(Boolean).join(' ')\n\n // Mask handling\n const innerRef = useRef<HTMLInputElement>(null)\n const inputRef = (ref as React.RefObject<HTMLInputElement>) || innerRef\n\n const getInitialRaw = useCallback(() => {\n if (!mask) return ''\n const initial = (value ?? defaultValue ?? '') as string\n return extractRaw(initial, mask, maskPlaceholder)\n }, [mask, value, defaultValue, maskPlaceholder])\n\n const [rawValue, setRawValue] = useState(getInitialRaw)\n const [cursorPos, setCursorPos] = useState<number | null>(null)\n\n // Sync with controlled value\n useEffect(() => {\n if (mask && value !== undefined) {\n setRawValue(extractRaw(value as string, mask, maskPlaceholder))\n }\n }, [mask, value, maskPlaceholder])\n\n // Set cursor position after render\n useEffect(() => {\n if (cursorPos !== null && inputRef.current) {\n inputRef.current.setSelectionRange(cursorPos, cursorPos)\n setCursorPos(null)\n }\n }, [cursorPos, inputRef])\n\n const handleMaskedChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!mask) {\n onChange?.(e)\n return\n }\n\n const input = e.target\n const inputValue = input.value\n\n // Extract what the user is trying to type\n const newRaw = extractRaw(inputValue, mask, maskPlaceholder)\n\n // Filter to only valid characters\n let filteredRaw = ''\n let rawIdx = 0\n for (let i = 0; i < mask.length && rawIdx < newRaw.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (isValidChar(newRaw[rawIdx], maskChar)) {\n filteredRaw += newRaw[rawIdx]\n }\n rawIdx++\n }\n }\n\n setRawValue(filteredRaw)\n\n // Calculate new cursor position\n const maskedValue = applyMask(filteredRaw, mask, maskPlaceholder)\n let newCursor = findNextInputPosition(mask, 0)\n let charsPlaced = 0\n for (let i = 0; i < mask.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (charsPlaced < filteredRaw.length) {\n charsPlaced++\n newCursor = i + 1\n }\n }\n }\n // Skip to next input position if we're on a literal\n newCursor = findNextInputPosition(mask, newCursor)\n if (newCursor > mask.length) newCursor = mask.length\n\n setCursorPos(newCursor)\n\n // Create synthetic event with masked value\n const syntheticEvent = {\n ...e,\n target: { ...input, value: maskedValue },\n currentTarget: { ...input, value: maskedValue },\n } as React.ChangeEvent<HTMLInputElement>\n\n onChange?.(syntheticEvent)\n },\n [mask, maskPlaceholder, onChange]\n )\n\n const handleMaskedKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (!mask) {\n onKeyDown?.(e)\n return\n }\n\n if (e.key === 'Backspace') {\n e.preventDefault()\n const newRaw = rawValue.slice(0, -1)\n setRawValue(newRaw)\n\n // Calculate cursor position\n let newCursor = 0\n let charsPlaced = 0\n for (let i = 0; i < mask.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (charsPlaced < newRaw.length) {\n charsPlaced++\n newCursor = i + 1\n } else {\n newCursor = i\n break\n }\n }\n }\n setCursorPos(newCursor)\n\n const maskedValue = applyMask(newRaw, mask, maskPlaceholder)\n const input = e.currentTarget\n const syntheticEvent = {\n target: { ...input, value: maskedValue },\n currentTarget: { ...input, value: maskedValue },\n } as unknown as React.ChangeEvent<HTMLInputElement>\n\n onChange?.(syntheticEvent)\n }\n\n onKeyDown?.(e)\n },\n [mask, maskPlaceholder, rawValue, onChange, onKeyDown]\n )\n\n // Track internal value for allowClear visibility\n const [internalValue, setInternalValue] = useState((value ?? defaultValue ?? '') as string)\n\n // Sync internal value with controlled value\n useEffect(() => {\n if (value !== undefined) {\n setInternalValue(value as string)\n }\n }, [value])\n\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setInternalValue(e.target.value)\n onChange?.(e)\n }, [onChange])\n\n const handleClear = useCallback(() => {\n setInternalValue('')\n setRawValue('')\n onClear?.()\n // Create synthetic event for onChange\n if (onChange && inputRef.current) {\n const syntheticEvent = {\n target: { ...inputRef.current, value: '' },\n currentTarget: { ...inputRef.current, value: '' },\n } as React.ChangeEvent<HTMLInputElement>\n onChange(syntheticEvent)\n }\n }, [onClear, onChange, inputRef])\n\n // Determine if we should show clear button\n const currentValue = mask ? rawValue : internalValue\n const showClear = allowClear && currentValue && !disabled\n\n // Get custom clear icon if provided\n const clearIcon = typeof allowClear === 'object' && allowClear.clearIcon\n ? allowClear.clearIcon\n : null\n\n // Accessibility attributes\n const ariaProps: Record<string, string | boolean | undefined> = {}\n if (status === 'error') {\n ariaProps['aria-invalid'] = true\n }\n if (errorId) {\n ariaProps['aria-describedby'] = errorId\n }\n if (required) {\n ariaProps['aria-required'] = true\n }\n\n // If we have prefix, suffix, or allowClear, wrap in a container\n const hasInternalAddons = prefix || suffix || allowClear\n const hasWrapper = hasInternalAddons || hasExternalAddons || !!floatingLabel\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n const inputTestId = testId ? (hasWrapper ? getTestId('input') : testId) : undefined\n\n // Size class for floating label\n const floatingSizeClasses = {\n xs: dInputXs,\n sm: dInputSm,\n md: dInputMd,\n lg: dInputLg,\n xl: dInputXl,\n }\n\n // Build the masked value if needed\n const maskedValue = mask ? applyMask(rawValue, mask, maskPlaceholder) : undefined\n\n // Build the core input element\n const buildInput = (extraClasses?: string) => (\n <input\n ref={inputRef}\n type={mask ? 'text' : type}\n className={[\n inputClasses,\n hasInternalAddons && 'w-full',\n prefix && 'pl-10',\n (suffix || showClear) && 'pr-10',\n extraClasses,\n ].filter(Boolean).join(' ')}\n value={maskedValue ?? (value !== undefined ? value : (hasInternalAddons ? internalValue : value))}\n defaultValue={value === undefined && !mask ? defaultValue : undefined}\n onChange={mask ? handleMaskedChange : (hasInternalAddons ? handleChange : onChange)}\n onKeyDown={mask ? handleMaskedKeyDown : onKeyDown}\n disabled={disabled}\n required={required}\n data-testid={inputTestId}\n {...ariaProps}\n {...props}\n />\n )\n\n // Build input with internal addons (prefix icon, suffix icon, clear button)\n const buildInputWithInternalAddons = (extraClasses?: string) => {\n if (!hasInternalAddons) {\n return buildInput(extraClasses)\n }\n\n return (\n <div\n className={`relative flex items-center ${extraClasses || ''}`}\n data-testid={!hasExternalAddons && !floatingLabel ? testId : getTestId('input-wrapper')}\n >\n {prefix && (\n <span\n className=\"absolute left-3 flex items-center text-base-content/70 pointer-events-none z-10\"\n data-testid={getTestId('prefix')}\n >\n {prefix}\n </span>\n )}\n {buildInput()}\n {(suffix || showClear) && (\n <span className=\"absolute right-3 flex items-center gap-1 z-10\" data-testid={getTestId('suffix')}>\n {showClear && (\n <span data-testid={getTestId('clear')}>\n {clearIcon || <ClearIcon onClick={handleClear} />}\n </span>\n )}\n {suffix && <span className=\"text-base-content/70\">{suffix}</span>}\n </span>\n )}\n </div>\n )\n }\n\n // Wrap with floating label if specified\n const wrapWithFloatingLabel = (input: React.ReactNode) => {\n if (!floatingLabel) return input\n\n const floatingClasses = [\n dFloatingLabel,\n floatingSizeClasses[effectiveSize],\n ].filter(Boolean).join(' ')\n\n return (\n <label className={floatingClasses} data-testid={testId}>\n {input}\n <span>{floatingLabel}</span>\n </label>\n )\n }\n\n // Wrap with external addons (addonBefore/addonAfter) using DaisyUI input wrapper pattern\n const wrapWithExternalAddons = (input: React.ReactNode) => {\n if (!hasExternalAddons) return input\n\n const addonClasses = [\n dInput,\n 'flex',\n 'items-center',\n 'gap-2',\n sizeClasses[effectiveSize],\n effectiveColorClass,\n ].filter(Boolean).join(' ')\n\n return (\n <label className={addonClasses} data-testid={testId}>\n {addonBefore && (\n <span className=\"text-base-content/70\" data-testid={getTestId('addon-before')}>\n {addonBefore}\n </span>\n )}\n {input}\n {addonAfter && (\n <span className=\"text-base-content/70\" data-testid={getTestId('addon-after')}>\n {addonAfter}\n </span>\n )}\n </label>\n )\n }\n\n // Build the final element\n const inputElement = buildInputWithInternalAddons(\n floatingLabel ? `${dInput} w-full` : undefined\n )\n\n // Apply wrappers\n return wrapWithExternalAddons(wrapWithFloatingLabel(\n floatingLabel ? (\n // For floating label, use raw input (label wrapper provides styling)\n <input\n ref={inputRef}\n type={mask ? 'text' : type}\n className={`${dInput} w-full`}\n value={maskedValue ?? (value !== undefined ? value : internalValue)}\n defaultValue={value === undefined && !mask ? defaultValue : undefined}\n onChange={mask ? handleMaskedChange : handleChange}\n onKeyDown={mask ? handleMaskedKeyDown : onKeyDown}\n disabled={disabled}\n required={required}\n data-testid={inputTestId}\n {...ariaProps}\n {...props}\n />\n ) : inputElement\n ))\n }\n)\n\nInput.displayName = 'Input'\n"],"names":["dInput","dInputXs","dInputSm","dInputMd","dInputLg","dInputXl","dInputNeutral","dInputPrimary","dInputSecondary","dInputAccent","dInputInfo","dInputSuccess","dInputWarning","dInputError","dInputGhost","dFloatingLabel","applyMask","raw","mask","placeholder","result","rawIndex","i","maskChar","extractRaw","value","isValidChar","char","findNextInputPosition","fromIndex","ClearIcon","onClick","className","jsx","Input","forwardRef","type","size","color","status","ghost","bordered","maskPlaceholder","allowClear","onClear","prefix","suffix","addonBefore","addonAfter","floatingLabel","errorId","unstyled","defaultValue","onChange","onKeyDown","disabled","required","testId","props","ref","componentSize","useConfig","effectiveSize","sizeClasses","effectiveColorClass","hasExternalAddons","inputClasses","innerRef","useRef","inputRef","getInitialRaw","useCallback","rawValue","setRawValue","useState","cursorPos","setCursorPos","useEffect","handleMaskedChange","e","input","inputValue","newRaw","filteredRaw","rawIdx","maskedValue","newCursor","charsPlaced","syntheticEvent","handleMaskedKeyDown","internalValue","setInternalValue","handleChange","handleClear","showClear","clearIcon","ariaProps","hasInternalAddons","hasWrapper","getTestId","inputTestId","floatingSizeClasses","buildInput","extraClasses","buildInputWithInternalAddons","jsxs","wrapWithFloatingLabel","floatingClasses","wrapWithExternalAddons","addonClasses","inputElement"],"mappings":"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"}
1
+ {"version":3,"file":"Input.js","sources":["../../src/components/Input.tsx"],"sourcesContent":["import React, { forwardRef, useState, useCallback, useRef, useEffect } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dInput = 'input'\nconst dInputXs = 'input-xs'\nconst dInputSm = 'input-sm'\nconst dInputMd = 'input-md'\nconst dInputLg = 'input-lg'\nconst dInputXl = 'input-xl'\nconst dInputNeutral = 'input-neutral'\nconst dInputPrimary = 'input-primary'\nconst dInputSecondary = 'input-secondary'\nconst dInputAccent = 'input-accent'\nconst dInputInfo = 'input-info'\nconst dInputSuccess = 'input-success'\nconst dInputWarning = 'input-warning'\nconst dInputError = 'input-error'\nconst dInputGhost = 'input-ghost'\nconst dFloatingLabel = 'floating-label'\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'> {\n type?: 'text' | 'password' | 'email' | 'number' | 'date' | 'datetime-local' | 'week' | 'month' | 'tel' | 'url' | 'search' | 'time'\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n /** Validation status */\n status?: 'error' | 'warning'\n ghost?: boolean\n bordered?: boolean\n className?: string\n /** Input mask pattern. Use # for digits, A for letters, * for alphanumeric */\n mask?: string\n /** Placeholder character shown in mask (default: _) */\n maskPlaceholder?: string\n /** Show clear button when input has value */\n allowClear?: boolean | { clearIcon?: React.ReactNode }\n /** Callback when clear button is clicked */\n onClear?: () => void\n /** Prefix icon or element (inside input) */\n prefix?: React.ReactNode\n /** Suffix icon or element (inside input) */\n suffix?: React.ReactNode\n /** Text/element before input (outside, using DaisyUI label) */\n addonBefore?: React.ReactNode\n /** Text/element after input (outside, using DaisyUI label) */\n addonAfter?: React.ReactNode\n /** Floating label text (uses DaisyUI floating-label) */\n floatingLabel?: string\n /** ID for error message element (for aria-describedby) */\n errorId?: string\n /** Render as unstyled input (for use inside styled wrappers) */\n unstyled?: boolean\n 'data-testid'?: string\n}\n\n// Helper to apply mask to raw value\nfunction applyMask(raw: string, mask: string, placeholder: string): string {\n let result = ''\n let rawIndex = 0\n\n for (let i = 0; i < mask.length && rawIndex <= raw.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (rawIndex < raw.length) {\n result += raw[rawIndex]\n rawIndex++\n } else {\n result += placeholder\n }\n } else {\n result += maskChar\n }\n }\n\n return result\n}\n\n// Extract raw value from masked input\nfunction extractRaw(value: string, mask: string, placeholder: string): string {\n let raw = ''\n for (let i = 0; i < value.length && i < mask.length; i++) {\n const maskChar = mask[i]\n if ((maskChar === '#' || maskChar === 'A' || maskChar === '*') && value[i] !== placeholder) {\n raw += value[i]\n }\n }\n return raw\n}\n\n// Check if character is valid for mask position\nfunction isValidChar(char: string, maskChar: string): boolean {\n if (maskChar === '#') return /\\d/.test(char)\n if (maskChar === 'A') return /[a-zA-Z]/.test(char)\n if (maskChar === '*') return /[a-zA-Z0-9]/.test(char)\n return false\n}\n\n// Find next input position in mask\nfunction findNextInputPosition(mask: string, fromIndex: number): number {\n for (let i = fromIndex; i < mask.length; i++) {\n if (mask[i] === '#' || mask[i] === 'A' || mask[i] === '*') {\n return i\n }\n }\n return mask.length\n}\n\n// Clear icon component\nconst ClearIcon: React.FC<{ onClick: () => void; className?: string }> = ({ onClick, className }) => (\n <button\n type=\"button\"\n onClick={onClick}\n className={`flex items-center justify-center opacity-50 hover:opacity-100 transition-opacity ${className || ''}`}\n aria-label=\"Clear input\"\n tabIndex={-1}\n >\n <svg className=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n)\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = 'text',\n size,\n color,\n status,\n ghost = false,\n bordered = true,\n className = '',\n mask,\n maskPlaceholder = '_',\n allowClear,\n onClear,\n prefix,\n suffix,\n addonBefore,\n addonAfter,\n floatingLabel,\n errorId,\n unstyled = false,\n value,\n defaultValue,\n onChange,\n onKeyDown,\n disabled,\n required,\n 'data-testid': testId,\n ...props\n },\n ref\n ) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n\n const sizeClasses = {\n xs: dInputXs,\n sm: dInputSm,\n md: dInputMd,\n lg: dInputLg,\n xl: dInputXl,\n }\n\n const colorClasses = {\n neutral: dInputNeutral,\n primary: dInputPrimary,\n secondary: dInputSecondary,\n accent: dInputAccent,\n info: dInputInfo,\n success: dInputSuccess,\n warning: dInputWarning,\n error: dInputError,\n }\n\n const statusClasses = {\n error: dInputError,\n warning: dInputWarning,\n }\n\n // Status takes precedence over color for validation feedback\n const effectiveColorClass = status ? statusClasses[status] : (color ? colorClasses[color] : '')\n\n // When wrapped with external addons OR unstyled prop, the wrapper has the input styling\n // Inner input should be unstyled (grow to fill space)\n const hasExternalAddons = addonBefore || addonAfter\n const shouldBeUnstyled = hasExternalAddons || unstyled\n\n const inputClasses = shouldBeUnstyled\n ? ['grow', 'bg-transparent', 'border-0', 'outline-none', 'focus:outline-none', className].filter(Boolean).join(' ')\n : [\n dInput,\n !bordered && 'border-0',\n ghost && dInputGhost,\n sizeClasses[effectiveSize],\n effectiveColorClass,\n className,\n ].filter(Boolean).join(' ')\n\n // Mask handling\n const inputRef = useRef<HTMLInputElement>(null)\n const setInputRef = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node\n if (!ref) return\n if (typeof ref === 'function') {\n ref(node)\n } else {\n ;(ref as React.MutableRefObject<HTMLInputElement | null>).current = node\n }\n },\n [ref]\n )\n\n const getInitialRaw = useCallback(() => {\n if (!mask) return ''\n const initial = (value ?? defaultValue ?? '') as string\n return extractRaw(initial, mask, maskPlaceholder)\n }, [mask, value, defaultValue, maskPlaceholder])\n\n const [rawValue, setRawValue] = useState(getInitialRaw)\n const [cursorPos, setCursorPos] = useState<number | null>(null)\n\n // Sync with controlled value\n useEffect(() => {\n if (mask && value !== undefined) {\n setRawValue(extractRaw(value as string, mask, maskPlaceholder))\n }\n }, [mask, value, maskPlaceholder])\n\n // Set cursor position after render\n useEffect(() => {\n if (cursorPos !== null && inputRef.current) {\n inputRef.current.setSelectionRange(cursorPos, cursorPos)\n setCursorPos(null)\n }\n }, [cursorPos, inputRef])\n\n const handleMaskedChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!mask) {\n onChange?.(e)\n return\n }\n\n const input = e.target\n const inputValue = input.value\n\n // Extract what the user is trying to type\n const newRaw = extractRaw(inputValue, mask, maskPlaceholder)\n\n // Filter to only valid characters\n let filteredRaw = ''\n let rawIdx = 0\n for (let i = 0; i < mask.length && rawIdx < newRaw.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (isValidChar(newRaw[rawIdx], maskChar)) {\n filteredRaw += newRaw[rawIdx]\n }\n rawIdx++\n }\n }\n\n setRawValue(filteredRaw)\n\n // Calculate new cursor position\n const maskedValue = applyMask(filteredRaw, mask, maskPlaceholder)\n let newCursor = findNextInputPosition(mask, 0)\n let charsPlaced = 0\n for (let i = 0; i < mask.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (charsPlaced < filteredRaw.length) {\n charsPlaced++\n newCursor = i + 1\n }\n }\n }\n // Skip to next input position if we're on a literal\n newCursor = findNextInputPosition(mask, newCursor)\n if (newCursor > mask.length) newCursor = mask.length\n\n setCursorPos(newCursor)\n\n // Create synthetic event with masked value\n const syntheticEvent = {\n ...e,\n target: { ...input, value: maskedValue },\n currentTarget: { ...input, value: maskedValue },\n } as React.ChangeEvent<HTMLInputElement>\n\n onChange?.(syntheticEvent)\n },\n [mask, maskPlaceholder, onChange]\n )\n\n const handleMaskedKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (!mask) {\n onKeyDown?.(e)\n return\n }\n\n if (e.key === 'Backspace') {\n e.preventDefault()\n const newRaw = rawValue.slice(0, -1)\n setRawValue(newRaw)\n\n // Calculate cursor position\n let newCursor = 0\n let charsPlaced = 0\n for (let i = 0; i < mask.length; i++) {\n const maskChar = mask[i]\n if (maskChar === '#' || maskChar === 'A' || maskChar === '*') {\n if (charsPlaced < newRaw.length) {\n charsPlaced++\n newCursor = i + 1\n } else {\n newCursor = i\n break\n }\n }\n }\n setCursorPos(newCursor)\n\n const maskedValue = applyMask(newRaw, mask, maskPlaceholder)\n const input = e.currentTarget\n const syntheticEvent = {\n target: { ...input, value: maskedValue },\n currentTarget: { ...input, value: maskedValue },\n } as unknown as React.ChangeEvent<HTMLInputElement>\n\n onChange?.(syntheticEvent)\n }\n\n onKeyDown?.(e)\n },\n [mask, maskPlaceholder, rawValue, onChange, onKeyDown]\n )\n\n // Track internal value for allowClear visibility\n const [internalValue, setInternalValue] = useState((value ?? defaultValue ?? '') as string)\n\n // Sync internal value with controlled value\n useEffect(() => {\n if (value !== undefined) {\n setInternalValue(value as string)\n }\n }, [value])\n\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setInternalValue(e.target.value)\n onChange?.(e)\n }, [onChange])\n\n const handleClear = useCallback(() => {\n setInternalValue('')\n setRawValue('')\n onClear?.()\n // Create synthetic event for onChange\n if (onChange && inputRef.current) {\n const syntheticEvent = {\n target: { ...inputRef.current, value: '' },\n currentTarget: { ...inputRef.current, value: '' },\n } as React.ChangeEvent<HTMLInputElement>\n onChange(syntheticEvent)\n }\n }, [onClear, onChange, inputRef])\n\n // Determine if we should show clear button\n const currentValue = mask ? rawValue : internalValue\n const showClear = allowClear && currentValue && !disabled\n\n // Get custom clear icon if provided\n const clearIcon = typeof allowClear === 'object' && allowClear.clearIcon\n ? allowClear.clearIcon\n : null\n\n // Accessibility attributes\n const ariaProps: Record<string, string | boolean | undefined> = {}\n if (status === 'error') {\n ariaProps['aria-invalid'] = true\n }\n if (errorId) {\n ariaProps['aria-describedby'] = errorId\n }\n if (required) {\n ariaProps['aria-required'] = true\n }\n\n // If we have prefix, suffix, or allowClear, wrap in a container\n const hasInternalAddons = prefix || suffix || allowClear\n const hasWrapper = hasInternalAddons || hasExternalAddons || !!floatingLabel\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n const inputTestId = testId ? (hasWrapper ? getTestId('input') : testId) : undefined\n\n // Size class for floating label\n const floatingSizeClasses = {\n xs: dInputXs,\n sm: dInputSm,\n md: dInputMd,\n lg: dInputLg,\n xl: dInputXl,\n }\n\n // Build the masked value if needed\n const maskedValue = mask ? applyMask(rawValue, mask, maskPlaceholder) : undefined\n\n // Build the core input element\n const buildInput = (extraClasses?: string) => (\n <input\n ref={setInputRef}\n type={mask ? 'text' : type}\n className={[\n inputClasses,\n hasInternalAddons && 'w-full',\n prefix && 'pl-10',\n (suffix || showClear) && 'pr-10',\n extraClasses,\n ].filter(Boolean).join(' ')}\n value={maskedValue ?? (value !== undefined ? value : (hasInternalAddons ? internalValue : value))}\n defaultValue={value === undefined && !mask ? defaultValue : undefined}\n onChange={mask ? handleMaskedChange : (hasInternalAddons ? handleChange : onChange)}\n onKeyDown={mask ? handleMaskedKeyDown : onKeyDown}\n disabled={disabled}\n required={required}\n data-testid={inputTestId}\n {...ariaProps}\n {...props}\n />\n )\n\n // Build input with internal addons (prefix icon, suffix icon, clear button)\n const buildInputWithInternalAddons = (extraClasses?: string) => {\n if (!hasInternalAddons) {\n return buildInput(extraClasses)\n }\n\n return (\n <div\n className={`relative flex items-center ${extraClasses || ''}`}\n data-testid={!hasExternalAddons && !floatingLabel ? testId : getTestId('input-wrapper')}\n >\n {prefix && (\n <span\n className=\"absolute left-3 flex items-center text-base-content/70 pointer-events-none z-10\"\n data-testid={getTestId('prefix')}\n >\n {prefix}\n </span>\n )}\n {buildInput()}\n {(suffix || showClear) && (\n <span className=\"absolute right-3 flex items-center gap-1 z-10\" data-testid={getTestId('suffix')}>\n {showClear && (\n <span data-testid={getTestId('clear')}>\n {clearIcon || <ClearIcon onClick={handleClear} />}\n </span>\n )}\n {suffix && <span className=\"text-base-content/70\">{suffix}</span>}\n </span>\n )}\n </div>\n )\n }\n\n // Wrap with floating label if specified\n const wrapWithFloatingLabel = (input: React.ReactNode) => {\n if (!floatingLabel) return input\n\n const floatingClasses = [\n dFloatingLabel,\n floatingSizeClasses[effectiveSize],\n ].filter(Boolean).join(' ')\n\n return (\n <label className={floatingClasses} data-testid={testId}>\n {input}\n <span>{floatingLabel}</span>\n </label>\n )\n }\n\n // Wrap with external addons (addonBefore/addonAfter) using DaisyUI input wrapper pattern\n const wrapWithExternalAddons = (input: React.ReactNode) => {\n if (!hasExternalAddons) return input\n\n const addonClasses = [\n dInput,\n 'flex',\n 'items-center',\n 'gap-2',\n sizeClasses[effectiveSize],\n effectiveColorClass,\n ].filter(Boolean).join(' ')\n\n return (\n <label className={addonClasses} data-testid={testId}>\n {addonBefore && (\n <span className=\"text-base-content/70\" data-testid={getTestId('addon-before')}>\n {addonBefore}\n </span>\n )}\n {input}\n {addonAfter && (\n <span className=\"text-base-content/70\" data-testid={getTestId('addon-after')}>\n {addonAfter}\n </span>\n )}\n </label>\n )\n }\n\n // Build the final element\n const inputElement = buildInputWithInternalAddons(\n floatingLabel ? `${dInput} w-full` : undefined\n )\n\n // Apply wrappers\n return wrapWithExternalAddons(wrapWithFloatingLabel(\n floatingLabel ? (\n // For floating label, use raw input (label wrapper provides styling)\n <input\n ref={setInputRef}\n type={mask ? 'text' : type}\n className={`${dInput} w-full`}\n value={maskedValue ?? (value !== undefined ? value : internalValue)}\n defaultValue={value === undefined && !mask ? defaultValue : undefined}\n onChange={mask ? handleMaskedChange : handleChange}\n onKeyDown={mask ? handleMaskedKeyDown : onKeyDown}\n disabled={disabled}\n required={required}\n data-testid={inputTestId}\n {...ariaProps}\n {...props}\n />\n ) : inputElement\n ))\n }\n)\n\nInput.displayName = 'Input'\n"],"names":["dInput","dInputXs","dInputSm","dInputMd","dInputLg","dInputXl","dInputNeutral","dInputPrimary","dInputSecondary","dInputAccent","dInputInfo","dInputSuccess","dInputWarning","dInputError","dInputGhost","dFloatingLabel","applyMask","raw","mask","placeholder","result","rawIndex","i","maskChar","extractRaw","value","isValidChar","char","findNextInputPosition","fromIndex","ClearIcon","onClick","className","jsx","Input","forwardRef","type","size","color","status","ghost","bordered","maskPlaceholder","allowClear","onClear","prefix","suffix","addonBefore","addonAfter","floatingLabel","errorId","unstyled","defaultValue","onChange","onKeyDown","disabled","required","testId","props","ref","componentSize","useConfig","effectiveSize","sizeClasses","effectiveColorClass","hasExternalAddons","inputClasses","inputRef","useRef","setInputRef","useCallback","node","getInitialRaw","rawValue","setRawValue","useState","cursorPos","setCursorPos","useEffect","handleMaskedChange","e","input","inputValue","newRaw","filteredRaw","rawIdx","maskedValue","newCursor","charsPlaced","syntheticEvent","handleMaskedKeyDown","internalValue","setInternalValue","handleChange","handleClear","showClear","clearIcon","ariaProps","hasInternalAddons","hasWrapper","getTestId","inputTestId","floatingSizeClasses","buildInput","extraClasses","buildInputWithInternalAddons","jsxs","wrapWithFloatingLabel","floatingClasses","wrapWithExternalAddons","addonClasses","inputElement"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -76,7 +76,7 @@ export { FloatButton } from './components/FloatButton';
76
76
  export type { FloatButtonProps, BackTopProps } from './components/FloatButton';
77
77
  export { Footer } from './components/Footer';
78
78
  export type { FooterProps, FooterTitleProps } from './components/Footer';
79
- export { Form, useFormInstance } from './components/Form';
79
+ export { Form, useForm, useFormInstance, useWatch } from './components/Form';
80
80
  export type { FormProps, FormItemProps, FormRule, FormInstance, FormErrorListProps, ValidateTrigger } from './components/Form';
81
81
  export { Grid, Row, Col } from './components/Grid';
82
82
  export type { RowProps, ColProps } from './components/Grid';
package/dist/index.js CHANGED
@@ -9,13 +9,13 @@ import { Breadcrumb as g } from "./components/Breadcrumb.js";
9
9
  import { Button as S } from "./components/Button.js";
10
10
  import { SizeContext as h, SizeProvider as k, useSize as v } from "./contexts/SizeContext.js";
11
11
  import { CopyButton as b } from "./components/CopyButton.js";
12
- import { Checkbox as w } from "./components/Checkbox.js";
13
- import { Chat as B } from "./components/Chat.js";
12
+ import { Checkbox as F } from "./components/Checkbox.js";
13
+ import { Chat as y } from "./components/Chat.js";
14
14
  import { ColorPicker as M } from "./components/ColorPicker.js";
15
15
  import { Card as L } from "./components/Card.js";
16
16
  import { Carousel as z } from "./components/Carousel.js";
17
- import { Cascader as G } from "./components/Cascader.js";
18
- import { ConfigContext as W, ConfigProvider as E, useComponentLocale as N, useConfig as J, useLocale as O } from "./providers/ConfigProvider.js";
17
+ import { Cascader as W } from "./components/Cascader.js";
18
+ import { ConfigContext as K, ConfigProvider as E, useComponentLocale as N, useConfig as J, useLocale as O } from "./providers/ConfigProvider.js";
19
19
  import { Collapse as j } from "./components/Collapse.js";
20
20
  import { Command as Q } from "./components/Command.js";
21
21
  import { Container as X } from "./components/Container.js";
@@ -34,92 +34,93 @@ import { Fieldset as Po } from "./components/Fieldset.js";
34
34
  import { FileInput as ko } from "./components/FileInput.js";
35
35
  import { Filter as Ro } from "./components/Filter.js";
36
36
  import { Flex as Do } from "./components/Flex.js";
37
- import { FloatButton as yo } from "./components/FloatButton.js";
38
- import { Footer as Fo } from "./components/Footer.js";
39
- import { Form as Ao, useFormInstance as Lo } from "./components/Form.js";
40
- import { Col as zo, Grid as Ho, Row as Go } from "./components/Grid.js";
41
- import { Hero as Wo } from "./components/Hero.js";
42
- import { HoverGallery as No } from "./components/HoverGallery.js";
43
- import { Image as Oo } from "./components/Image.js";
44
- import { Dropdown as jo } from "./components/Dropdown.js";
45
- import { Empty as Qo } from "./components/Empty.js";
46
- import { Input as Xo } from "./components/Input.js";
47
- import { InputNumber as Zo } from "./components/InputNumber.js";
48
- import { Join as $o } from "./components/Join.js";
49
- import { Kbd as rr } from "./components/Kbd.js";
50
- import { Layout as tr, useSiderContext as pr } from "./components/Layout.js";
51
- import { List as fr } from "./components/List.js";
52
- import { Loading as ar } from "./components/Loading.js";
53
- import { Mask as nr } from "./components/Mask.js";
54
- import { Masonry as ur } from "./components/Masonry.js";
55
- import { Mention as dr } from "./components/Mention.js";
56
- import { Menu as cr } from "./components/Menu.js";
57
- import { Browser as Tr } from "./components/Browser.js";
58
- import { Code as Pr } from "./components/Code.js";
59
- import { Phone as kr } from "./components/Phone.js";
60
- import { Window as Rr } from "./components/Window.js";
61
- import { Modal as Dr } from "./components/Modal.js";
37
+ import { FloatButton as wo } from "./components/FloatButton.js";
38
+ import { Footer as Bo } from "./components/Footer.js";
39
+ import { Form as Ao, useForm as Lo, useFormInstance as Io } from "./components/Form.js";
40
+ import { Col as Ho, Grid as Wo, Row as Go } from "./components/Grid.js";
41
+ import { Hero as Eo } from "./components/Hero.js";
42
+ import { HoverGallery as Jo } from "./components/HoverGallery.js";
43
+ import { Image as Uo } from "./components/Image.js";
44
+ import { Dropdown as qo } from "./components/Dropdown.js";
45
+ import { Empty as Vo } from "./components/Empty.js";
46
+ import { Input as Yo } from "./components/Input.js";
47
+ import { InputNumber as _o } from "./components/InputNumber.js";
48
+ import { Join as or } from "./components/Join.js";
49
+ import { Kbd as er } from "./components/Kbd.js";
50
+ import { Layout as pr, useSiderContext as mr } from "./components/Layout.js";
51
+ import { List as xr } from "./components/List.js";
52
+ import { Loading as sr } from "./components/Loading.js";
53
+ import { Mask as ir } from "./components/Mask.js";
54
+ import { Masonry as lr } from "./components/Masonry.js";
55
+ import { Mention as Cr } from "./components/Mention.js";
56
+ import { Menu as gr } from "./components/Menu.js";
57
+ import { Browser as Sr } from "./components/Browser.js";
58
+ import { Code as hr } from "./components/Code.js";
59
+ import { Phone as vr } from "./components/Phone.js";
60
+ import { Window as br } from "./components/Window.js";
61
+ import { Modal as Fr } from "./components/Modal.js";
62
62
  import { Navbar as yr } from "./components/Navbar.js";
63
- import { notification as Fr } from "./components/Notification.js";
64
- import { MessageManager as Ar, message as Lr } from "./components/Message.js";
65
- import { OTPInput as zr } from "./components/OTPInput.js";
63
+ import { notification as Mr } from "./components/Notification.js";
64
+ import { MessageManager as Lr, message as Ir } from "./components/Message.js";
65
+ import { OTPInput as Hr } from "./components/OTPInput.js";
66
66
  import { Pagination as Gr } from "./components/Pagination.js";
67
- import { Popconfirm as Wr } from "./components/Popconfirm.js";
68
- import { Popover as Nr } from "./components/Popover.js";
69
- import { Progress as Or } from "./components/Progress.js";
70
- import { Radio as jr } from "./components/Radio.js";
71
- import { RadialProgress as Qr } from "./components/RadialProgress.js";
72
- import { Range as Xr } from "./components/Range.js";
73
- import { Rating as Zr } from "./components/Rating.js";
74
- import { Result as $r } from "./components/Result.js";
75
- import { Select as re } from "./components/Select.js";
76
- import { Segmented as te } from "./components/Segmented.js";
77
- import { Skeleton as me } from "./components/Skeleton.js";
78
- import { Space as xe } from "./components/Space.js";
79
- import { Splitter as se } from "./components/Splitter.js";
80
- import { Stats as ie } from "./components/Stat.js";
81
- import { Status as le } from "./components/Status.js";
82
- import { Steps as Ce } from "./components/Steps.js";
83
- import { Table as ge } from "./components/Table.js";
84
- import { Tabs as Se } from "./components/Tabs.js";
85
- import { Textarea as he } from "./components/Textarea.js";
86
- import { TextRotate as ve } from "./components/TextRotate.js";
87
- import { CheckableTag as be, Tag as De, TagLiveRegion as we } from "./components/Tag.js";
67
+ import { Popconfirm as Er } from "./components/Popconfirm.js";
68
+ import { Popover as Jr } from "./components/Popover.js";
69
+ import { Progress as Ur } from "./components/Progress.js";
70
+ import { Radio as qr } from "./components/Radio.js";
71
+ import { RadialProgress as Vr } from "./components/RadialProgress.js";
72
+ import { Range as Yr } from "./components/Range.js";
73
+ import { Rating as _r } from "./components/Rating.js";
74
+ import { Result as oe } from "./components/Result.js";
75
+ import { Select as ee } from "./components/Select.js";
76
+ import { Segmented as pe } from "./components/Segmented.js";
77
+ import { Skeleton as fe } from "./components/Skeleton.js";
78
+ import { Space as ae } from "./components/Space.js";
79
+ import { Splitter as ne } from "./components/Splitter.js";
80
+ import { Stats as ue } from "./components/Stat.js";
81
+ import { Status as de } from "./components/Status.js";
82
+ import { Steps as ce } from "./components/Steps.js";
83
+ import { Table as Te } from "./components/Table.js";
84
+ import { Tabs as Pe } from "./components/Tabs.js";
85
+ import { Textarea as ke } from "./components/Textarea.js";
86
+ import { TextRotate as Re } from "./components/TextRotate.js";
87
+ import { CheckableTag as De, Tag as Fe, TagLiveRegion as we } from "./components/Tag.js";
88
88
  import { ThemeController as Be } from "./components/ThemeController.js";
89
- import { ThemeProvider as Me, useHasThemeProvider as Ae, useThemeContext as Le } from "./providers/ThemeProvider.js";
90
- import { TimePicker as ze } from "./components/TimePicker.js";
89
+ import { ThemeProvider as Ae, useHasThemeProvider as Le, useThemeContext as Ie } from "./providers/ThemeProvider.js";
90
+ import { TimePicker as He } from "./components/TimePicker.js";
91
91
  import { Timeline as Ge } from "./components/Timeline.js";
92
- import { Toggle as We } from "./components/Toggle.js";
93
- import { Tour as Ne } from "./components/Tour.js";
94
- import { Tooltip as Oe } from "./components/Tooltip.js";
95
- import { Transfer as je } from "./components/Transfer.js";
96
- import { Tree as Qe } from "./components/Tree.js";
97
- import { TreeSelect as Xe, TreeSelectComponent as Ye } from "./components/TreeSelect.js";
98
- import { Typography as _e } from "./components/Typography.js";
99
- import { Upload as ot } from "./components/Upload.js";
100
- import { Watermark as et } from "./components/Watermark.js";
101
- import { Hide as pt, Show as mt } from "./components/Responsive.js";
102
- import { useBreakpoint as xt } from "./hooks/useBreakpoint.js";
103
- import { useDisclosure as st } from "./hooks/useDisclosure.js";
104
- import { useClipboard as it } from "./hooks/useClipboard.js";
105
- import { useLocalStorage as lt } from "./hooks/useLocalStorage.js";
106
- import { useDebounce as Ct } from "./hooks/useDebounce.js";
107
- import { useClickOutside as gt } from "./hooks/useClickOutside.js";
108
- import { usePrevious as St } from "./hooks/usePrevious.js";
109
- import { useHover as ht } from "./hooks/useHover.js";
110
- import { useKeyPress as vt, useKeyPressCallback as Rt } from "./hooks/useKeyPress.js";
111
- import { useWindowSize as Dt } from "./hooks/useWindowSize.js";
92
+ import { Toggle as Ee } from "./components/Toggle.js";
93
+ import { Tour as Je } from "./components/Tour.js";
94
+ import { Tooltip as Ue } from "./components/Tooltip.js";
95
+ import { Transfer as qe } from "./components/Transfer.js";
96
+ import { Tree as Ve } from "./components/Tree.js";
97
+ import { TreeSelect as Ye, TreeSelectComponent as Ze } from "./components/TreeSelect.js";
98
+ import { Typography as $e } from "./components/Typography.js";
99
+ import { Upload as rt } from "./components/Upload.js";
100
+ import { Watermark as tt } from "./components/Watermark.js";
101
+ import { Hide as mt, Show as ft } from "./components/Responsive.js";
102
+ import { useBreakpoint as at } from "./hooks/useBreakpoint.js";
103
+ import { useDisclosure as nt } from "./hooks/useDisclosure.js";
104
+ import { useClipboard as ut } from "./hooks/useClipboard.js";
105
+ import { useLocalStorage as dt } from "./hooks/useLocalStorage.js";
106
+ import { useDebounce as ct } from "./hooks/useDebounce.js";
107
+ import { useClickOutside as Tt } from "./hooks/useClickOutside.js";
108
+ import { usePrevious as Pt } from "./hooks/usePrevious.js";
109
+ import { useHover as kt } from "./hooks/useHover.js";
110
+ import { useKeyPress as Rt, useKeyPressCallback as bt } from "./hooks/useKeyPress.js";
111
+ import { useWindowSize as Ft } from "./hooks/useWindowSize.js";
112
112
  import { useTheme as yt } from "./hooks/useTheme.js";
113
- import { default as Ft } from "./locale/en-US.js";
114
- import { default as At } from "./locale/en-GB.js";
115
- import { default as It } from "./locale/en-CA.js";
116
- import { default as Ht } from "./locale/zh-CN.js";
113
+ import { default as Mt } from "./locale/en-US.js";
114
+ import { default as Lt } from "./locale/en-GB.js";
115
+ import { default as zt } from "./locale/en-CA.js";
116
+ import { default as Wt } from "./locale/zh-CN.js";
117
117
  import { default as Kt } from "./locale/es-ES.js";
118
- import { default as Et } from "./locale/ja-JP.js";
119
- import { default as Jt } from "./locale/pt-BR.js";
120
- import { default as Ut } from "./locale/de-DE.js";
121
- import { default as qt } from "./locale/fr-FR.js";
122
- import { default as Vt } from "./locale/ko-KR.js";
118
+ import { default as Nt } from "./locale/ja-JP.js";
119
+ import { default as Ot } from "./locale/pt-BR.js";
120
+ import { default as jt } from "./locale/de-DE.js";
121
+ import { default as Qt } from "./locale/fr-FR.js";
122
+ import { default as Xt } from "./locale/ko-KR.js";
123
+ import { useWatch as Zt } from "react-hook-form";
123
124
  export {
124
125
  e as Affix,
125
126
  a as Alert,
@@ -130,20 +131,20 @@ export {
130
131
  l as AvatarGroup,
131
132
  C as Badge,
132
133
  g as Breadcrumb,
133
- Tr as Browser,
134
+ Sr as Browser,
134
135
  S as Button,
135
136
  L as Card,
136
137
  z as Carousel,
137
- G as Cascader,
138
- B as Chat,
139
- be as CheckableTag,
140
- w as Checkbox,
141
- Pr as Code,
142
- zo as Col,
138
+ W as Cascader,
139
+ y as Chat,
140
+ De as CheckableTag,
141
+ F as Checkbox,
142
+ hr as Code,
143
+ Ho as Col,
143
144
  j as Collapse,
144
145
  M as ColorPicker,
145
146
  Q as Command,
146
- W as ConfigContext,
147
+ K as ConfigContext,
147
148
  E as ConfigProvider,
148
149
  X as Container,
149
150
  Z as ContextMenu,
@@ -155,112 +156,114 @@ export {
155
156
  lo as Divider,
156
157
  io as Dock,
157
158
  co as Drawer,
158
- jo as Dropdown,
159
- Qo as Empty,
159
+ qo as Dropdown,
160
+ Vo as Empty,
160
161
  Po as Fieldset,
161
162
  ko as FileInput,
162
163
  Ro as Filter,
163
164
  Do as Flex,
164
- yo as FloatButton,
165
- Fo as Footer,
165
+ wo as FloatButton,
166
+ Bo as Footer,
166
167
  Ao as Form,
167
- Ho as Grid,
168
- Wo as Hero,
169
- pt as Hide,
170
- No as HoverGallery,
171
- Oo as Image,
172
- Xo as Input,
173
- Zo as InputNumber,
174
- $o as Join,
175
- rr as Kbd,
176
- tr as Layout,
177
- fr as List,
178
- ar as Loading,
179
- nr as Mask,
180
- ur as Masonry,
181
- dr as Mention,
182
- cr as Menu,
183
- Ar as MessageManager,
184
- Dr as Modal,
168
+ Wo as Grid,
169
+ Eo as Hero,
170
+ mt as Hide,
171
+ Jo as HoverGallery,
172
+ Uo as Image,
173
+ Yo as Input,
174
+ _o as InputNumber,
175
+ or as Join,
176
+ er as Kbd,
177
+ pr as Layout,
178
+ xr as List,
179
+ sr as Loading,
180
+ ir as Mask,
181
+ lr as Masonry,
182
+ Cr as Mention,
183
+ gr as Menu,
184
+ Lr as MessageManager,
185
+ Fr as Modal,
185
186
  to as MonthCalendar,
186
187
  yr as Navbar,
187
- zr as OTPInput,
188
+ Hr as OTPInput,
188
189
  Gr as Pagination,
189
- kr as Phone,
190
- Wr as Popconfirm,
191
- Nr as Popover,
192
- Or as Progress,
193
- Qr as RadialProgress,
194
- jr as Radio,
195
- Xr as Range,
196
- Zr as Rating,
190
+ vr as Phone,
191
+ Er as Popconfirm,
192
+ Jr as Popover,
193
+ Ur as Progress,
194
+ Vr as RadialProgress,
195
+ qr as Radio,
196
+ Yr as Range,
197
+ _r as Rating,
197
198
  To as ResponsiveDrawer,
198
- $r as Result,
199
+ oe as Result,
199
200
  Go as Row,
200
- te as Segmented,
201
- re as Select,
202
- mt as Show,
201
+ pe as Segmented,
202
+ ee as Select,
203
+ ft as Show,
203
204
  h as SizeContext,
204
205
  k as SizeProvider,
205
- me as Skeleton,
206
- xe as Space,
207
- se as Splitter,
208
- ie as Stats,
209
- le as Status,
210
- Ce as Steps,
211
- ge as Table,
212
- Se as Tabs,
213
- De as Tag,
206
+ fe as Skeleton,
207
+ ae as Space,
208
+ ne as Splitter,
209
+ ue as Stats,
210
+ de as Status,
211
+ ce as Steps,
212
+ Te as Table,
213
+ Pe as Tabs,
214
+ Fe as Tag,
214
215
  we as TagLiveRegion,
215
- ve as TextRotate,
216
- he as Textarea,
216
+ Re as TextRotate,
217
+ ke as Textarea,
217
218
  Be as ThemeController,
218
- Me as ThemeProvider,
219
- ze as TimePicker,
219
+ Ae as ThemeProvider,
220
+ He as TimePicker,
220
221
  Ge as Timeline,
221
- We as Toggle,
222
- Oe as Tooltip,
223
- Ne as Tour,
224
- je as Transfer,
225
- Qe as Tree,
226
- Xe as TreeSelect,
227
- Ye as TreeSelectComponent,
228
- _e as Typography,
229
- ot as Upload,
230
- et as Watermark,
222
+ Ee as Toggle,
223
+ Ue as Tooltip,
224
+ Je as Tour,
225
+ qe as Transfer,
226
+ Ve as Tree,
227
+ Ye as TreeSelect,
228
+ Ze as TreeSelectComponent,
229
+ $e as Typography,
230
+ rt as Upload,
231
+ tt as Watermark,
231
232
  mo as WeekCalendar,
232
- Rr as Window,
233
- Ut as deDE,
234
- It as enCA,
235
- At as enGB,
236
- Ft as enUS,
233
+ br as Window,
234
+ jt as deDE,
235
+ zt as enCA,
236
+ Lt as enGB,
237
+ Mt as enUS,
237
238
  Kt as esES,
238
- qt as frFR,
239
- Et as jaJP,
240
- Vt as koKR,
241
- Lr as message,
242
- Fr as notification,
243
- Jt as ptBR,
244
- xt as useBreakpoint,
245
- gt as useClickOutside,
246
- it as useClipboard,
239
+ Qt as frFR,
240
+ Nt as jaJP,
241
+ Xt as koKR,
242
+ Ir as message,
243
+ Mr as notification,
244
+ Ot as ptBR,
245
+ at as useBreakpoint,
246
+ Tt as useClickOutside,
247
+ ut as useClipboard,
247
248
  N as useComponentLocale,
248
249
  J as useConfig,
249
- Ct as useDebounce,
250
- st as useDisclosure,
251
- Lo as useFormInstance,
252
- Ae as useHasThemeProvider,
253
- ht as useHover,
254
- vt as useKeyPress,
255
- Rt as useKeyPressCallback,
256
- lt as useLocalStorage,
250
+ ct as useDebounce,
251
+ nt as useDisclosure,
252
+ Lo as useForm,
253
+ Io as useFormInstance,
254
+ Le as useHasThemeProvider,
255
+ kt as useHover,
256
+ Rt as useKeyPress,
257
+ bt as useKeyPressCallback,
258
+ dt as useLocalStorage,
257
259
  O as useLocale,
258
- St as usePrevious,
259
- pr as useSiderContext,
260
+ Pt as usePrevious,
261
+ mr as useSiderContext,
260
262
  v as useSize,
261
263
  yt as useTheme,
262
- Le as useThemeContext,
263
- Dt as useWindowSize,
264
- Ht as zhCN
264
+ Ie as useThemeContext,
265
+ Zt as useWatch,
266
+ Ft as useWindowSize,
267
+ Wt as zhCN
265
268
  };
266
269
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "asterui",
3
- "version": "0.12.69",
3
+ "version": "0.12.70",
4
4
  "description": "React UI component library with DaisyUI",
5
5
  "homepage": "https://asterui.com",
6
6
  "repository": {