aurora-mini-ui 1.0.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Button/Button.tsx","../src/components/Icon/Icon.tsx","../src/components/Loading/Loading.tsx","../src/components/Empty/Empty.tsx","../src/components/Divider/Divider.tsx","../src/components/Input/Input.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Radio/Radio.tsx","../src/components/Switch/Switch.tsx","../src/components/Form/Form.tsx","../src/components/Toast/Toast.tsx","../src/components/Dialog/Dialog.tsx","../src/components/ActionSheet/ActionSheet.tsx","../src/components/Mask/Mask.tsx","../src/components/Cell/Cell.tsx","../src/components/Card/Card.tsx","../src/components/Tag/Tag.tsx","../src/components/Badge/Badge.tsx","../src/components/Image/Image.tsx","../src/components/Grid/Grid.tsx","../src/components/Picker/Picker.tsx","../src/components/DatePicker/DatePicker.tsx","../src/hooks/useTheme.ts"],"sourcesContent":["import React from 'react';\n\nexport type ButtonType = 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\nexport type ButtonVariant = 'solid' | 'outline' | 'ghost' | 'link' | 'gradient';\nexport type ButtonSize = 'small' | 'medium' | 'large';\n\nexport interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {\n type?: ButtonType;\n variant?: ButtonVariant;\n size?: ButtonSize;\n block?: boolean;\n loading?: boolean;\n icon?: React.ReactNode;\n children?: React.ReactNode;\n htmlType?: 'submit' | 'reset' | 'button';\n}\n\nconst sizeMap: Record<ButtonSize, string> = {\n small: 'au-btn-sm',\n medium: '',\n large: 'au-btn-lg',\n};\n\nexport const Button: React.FC<ButtonProps> = ({\n type = 'default',\n variant = 'solid',\n size = 'medium',\n block = false,\n loading = false,\n disabled = false,\n icon,\n children,\n className = '',\n htmlType = 'button',\n ...rest\n}) => {\n const classes = [\n 'au-btn',\n `au-btn-${variant}`,\n `au-btn-${type}`,\n sizeMap[size],\n block ? 'au-btn-block' : '',\n loading ? 'au-btn-loading' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button type={htmlType} className={classes} disabled={disabled || loading} {...rest}>\n {loading ? null : icon}\n {children}\n </button>\n );\n};\n","import React from 'react';\n\nexport interface IconProps extends React.SVGAttributes<SVGElement> {\n name: string;\n size?: number | string;\n spin?: boolean;\n color?: string;\n}\n\nconst icons: Record<string, React.ReactNode> = {\n check: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 13l4 4L19 7\"\n />\n ),\n close: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n ),\n plus: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 4v16m8-8H4\"\n />\n ),\n minus: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M20 12H4\"\n />\n ),\n chevronLeft: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n ),\n chevronRight: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n ),\n chevronUp: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 15l7-7 7 7\"\n />\n ),\n chevronDown: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n ),\n arrowRight: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M14 5l7 7m0 0l-7 7m7-7H3\"\n />\n ),\n arrowLeft: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 19l-7-7m0 0l7-7m-7 7h18\"\n />\n ),\n info: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n ),\n success: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n ),\n warning: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n ),\n error: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n ),\n loading: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\"\n />\n ),\n empty: (\n <>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={1.5}\n d=\"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4\"\n />\n </>\n ),\n image: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n />\n ),\n search: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n ),\n user: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z\"\n />\n ),\n setting: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z\"\n />\n ),\n home: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6\"\n />\n ),\n heart: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z\"\n />\n ),\n star: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z\"\n />\n ),\n calendar: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\"\n />\n ),\n clock: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n ),\n location: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z\"\n />\n ),\n phone: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z\"\n />\n ),\n mail: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\"\n />\n ),\n eye: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n ),\n eyeOff: (\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21\"\n />\n ),\n};\n\nexport const Icon: React.FC<IconProps> = ({\n name,\n size = 24,\n spin = false,\n color,\n className = '',\n ...rest\n}) => {\n const iconPath = icons[name];\n\n if (!iconPath) {\n console.warn(`Icon \"${name}\" not found`);\n return null;\n }\n\n const classes = ['au-icon', spin ? 'au-icon-spin' : '', className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <span className={classes} style={{ fontSize: typeof size === 'number' ? `${size}px` : size, color }}>\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n {iconPath}\n </svg>\n </span>\n );\n};\n","import React from 'react';\n\nexport type LoadingSize = 'small' | 'medium' | 'large';\n\nexport interface LoadingProps {\n size?: LoadingSize;\n text?: string;\n className?: string;\n}\n\nconst sizeMap: Record<LoadingSize, string> = {\n small: 'au-loading-spinner-sm',\n medium: '',\n large: 'au-loading-spinner-lg',\n};\n\nexport const Loading: React.FC<LoadingProps> = ({\n size = 'medium',\n text,\n className = '',\n}) => {\n return (\n <div className={`au-loading ${className}`}>\n <div className={`au-loading-spinner ${sizeMap[size]}`} />\n {text && <span className=\"au-loading-text\">{text}</span>}\n </div>\n );\n};\n\nexport const LoadingIcon: React.FC<{ size?: LoadingSize }> = ({ size = 'medium' }) => {\n return <div className={`au-loading-spinner ${sizeMap[size]}`} />;\n};\n","import React from 'react';\nimport { Icon } from '../Icon';\nimport { Button, ButtonProps } from '../Button';\n\nexport interface EmptyProps {\n image?: React.ReactNode;\n text?: string;\n actionText?: string;\n onAction?: () => void;\n actionProps?: Partial<ButtonProps>;\n className?: string;\n}\n\nexport const Empty: React.FC<EmptyProps> = ({\n image,\n text = '暂无数据',\n actionText,\n onAction,\n actionProps,\n className = '',\n}) => {\n return (\n <div className={`au-empty ${className}`}>\n <div className=\"au-empty-icon\">\n {image || <Icon name=\"empty\" size={64} />}\n </div>\n <p className=\"au-empty-text\">{text}</p>\n {actionText && (\n <div className=\"au-empty-action\">\n <Button type=\"primary\" size=\"small\" onClick={onAction} {...actionProps}>\n {actionText}\n </Button>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\n\nexport type DividerTextPosition = 'left' | 'center' | 'right';\n\nexport interface DividerProps {\n dashed?: boolean;\n text?: React.ReactNode;\n textPosition?: DividerTextPosition;\n vertical?: boolean;\n className?: string;\n}\n\nexport const Divider: React.FC<DividerProps> = ({\n dashed = false,\n text,\n textPosition = 'center',\n vertical = false,\n className = '',\n}) => {\n const classes = [\n 'au-divider',\n dashed ? 'au-divider-dashed' : '',\n vertical ? 'au-divider-vertical' : '',\n text ? `au-divider-text-${textPosition}` : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes}>\n {text && <span className=\"au-divider-text\">{text}</span>}\n </div>\n );\n};\n","import React, { useState, useRef } from 'react';\nimport { Icon } from '../Icon';\n\nexport type InputSize = 'small' | 'medium' | 'large';\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'> {\n size?: InputSize;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n clearable?: boolean;\n showCount?: boolean;\n maxLength?: number;\n error?: boolean;\n errorText?: string;\n onClear?: () => void;\n}\n\nconst sizeMap: Record<InputSize, string> = {\n small: 'au-input-wrapper-sm',\n medium: 'au-input-wrapper-md',\n large: 'au-input-wrapper-lg',\n};\n\nexport const Input: React.FC<InputProps> = ({\n size = 'medium',\n prefix,\n suffix,\n clearable = false,\n showCount = false,\n maxLength,\n error = false,\n errorText,\n disabled = false,\n value,\n defaultValue,\n onChange,\n onClear,\n className = '',\n ...rest\n}) => {\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n const inputRef = useRef<HTMLInputElement>(null);\n\n const wrapperClasses = [\n 'au-input-wrapper',\n sizeMap[size],\n disabled ? 'au-input-wrapper-disabled' : '',\n error ? 'au-input-wrapper-error' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(e);\n };\n\n const handleClear = () => {\n if (!isControlled) {\n setInternalValue('');\n }\n onClear?.();\n inputRef.current?.focus();\n };\n\n const showClear = clearable && currentValue && !disabled;\n const showCountText = showCount && maxLength;\n\n return (\n <div>\n <div className={wrapperClasses}>\n {prefix && <span className=\"au-input-prefix\">{prefix}</span>}\n <input\n ref={inputRef}\n className=\"au-input\"\n disabled={disabled}\n value={currentValue}\n onChange={handleChange}\n maxLength={maxLength}\n {...rest}\n />\n {showClear && (\n <span className=\"au-input-clear\" onClick={handleClear}>\n <Icon name=\"close\" size={14} />\n </span>\n )}\n {showCountText && (\n <span className=\"au-input-count\">\n {String(currentValue).length}/{maxLength}\n </span>\n )}\n {suffix && <span className=\"au-input-suffix\">{suffix}</span>}\n </div>\n {error && errorText && <div className=\"au-input-error-text\">{errorText}</div>}\n </div>\n );\n};\n","import React, { useState, useRef, useEffect } from 'react';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n autoSize?: boolean | { minRows?: number; maxRows?: number };\n showCount?: boolean;\n maxLength?: number;\n error?: boolean;\n errorText?: string;\n}\n\nconst calculateHeight = (\n element: HTMLTextAreaElement,\n minRows?: number,\n maxRows?: number\n) => {\n const style = window.getComputedStyle(element);\n const lineHeight = parseInt(style.lineHeight, 10);\n const paddingTop = parseInt(style.paddingTop, 10);\n const paddingBottom = parseInt(style.paddingBottom, 10);\n const borderTop = parseInt(style.borderTopWidth, 10);\n const borderBottom = parseInt(style.borderBottomWidth, 10);\n\n const minHeight = minRows ? lineHeight * minRows + paddingTop + paddingBottom + borderTop + borderBottom : 0;\n const maxHeight = maxRows ? lineHeight * maxRows + paddingTop + paddingBottom + borderTop + borderBottom : Infinity;\n\n element.style.height = 'auto';\n const scrollHeight = element.scrollHeight;\n const height = Math.min(Math.max(scrollHeight, minHeight), maxHeight);\n element.style.height = `${height}px`;\n};\n\nexport const Textarea: React.FC<TextareaProps> = ({\n autoSize = false,\n showCount = false,\n maxLength,\n error = false,\n errorText,\n disabled = false,\n value,\n defaultValue,\n onChange,\n className = '',\n ...rest\n}) => {\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n useEffect(() => {\n if (autoSize && textareaRef.current) {\n const minRows = typeof autoSize === 'object' ? autoSize.minRows : undefined;\n const maxRows = typeof autoSize === 'object' ? autoSize.maxRows : undefined;\n calculateHeight(textareaRef.current, minRows, maxRows);\n }\n }, [currentValue, autoSize]);\n\n const wrapperClasses = [\n 'au-textarea-wrapper',\n disabled ? 'au-textarea-wrapper-disabled' : '',\n error ? 'au-textarea-wrapper-error' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(e);\n };\n\n return (\n <div>\n <div className={wrapperClasses}>\n <textarea\n ref={textareaRef}\n className=\"au-textarea\"\n disabled={disabled}\n value={currentValue}\n onChange={handleChange}\n maxLength={maxLength}\n {...rest}\n />\n {showCount && (\n <div className=\"au-textarea-footer\">\n <span className=\"au-textarea-count\">\n {String(currentValue).length}\n {maxLength && `/${maxLength}`}\n </span>\n </div>\n )}\n </div>\n {error && errorText && <div className=\"au-textarea-error-text\">{errorText}</div>}\n </div>\n );\n};\n","import React, { useState, useContext, createContext } from 'react';\nimport { Icon } from '../Icon';\n\nexport interface CheckboxProps {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n indeterminate?: boolean;\n onChange?: (checked: boolean) => void;\n children?: React.ReactNode;\n value?: string | number;\n name?: string;\n className?: string;\n}\n\ninterface CheckboxGroupContextValue {\n value: (string | number)[];\n onChange: (value: string | number, checked: boolean) => void;\n disabled?: boolean;\n name?: string;\n}\n\nconst CheckboxGroupContext = createContext<CheckboxGroupContextValue | null>(null);\n\nexport const Checkbox: React.FC<CheckboxProps> & {\n Group: typeof CheckboxGroup;\n} = ({\n checked,\n defaultChecked = false,\n disabled = false,\n indeterminate = false,\n onChange,\n children,\n value,\n name,\n className = '',\n}) => {\n const groupContext = useContext(CheckboxGroupContext);\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n\n const isControlled = checked !== undefined;\n const isGroup = groupContext !== null;\n const isChecked = isGroup\n ? groupContext.value.includes(value as string | number)\n : isControlled\n ? checked\n : internalChecked;\n\n const isDisabled = groupContext?.disabled || disabled;\n\n const handleChange = () => {\n if (isDisabled) return;\n\n const newChecked = !isChecked;\n\n if (!isControlled && !isGroup) {\n setInternalChecked(newChecked);\n }\n\n if (isGroup) {\n groupContext.onChange(value as string | number, newChecked);\n } else {\n onChange?.(newChecked);\n }\n };\n\n const wrapperClasses = [\n 'au-checkbox-wrapper',\n isDisabled ? 'au-checkbox-wrapper-disabled' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const checkboxClasses = [\n 'au-checkbox',\n isChecked ? 'au-checkbox-checked' : '',\n indeterminate ? 'au-checkbox-indeterminate' : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <label className={wrapperClasses} onClick={handleChange}>\n <span className={checkboxClasses}>\n <input\n type=\"checkbox\"\n className=\"au-checkbox-input\"\n checked={isChecked}\n disabled={isDisabled}\n onChange={handleChange}\n name={groupContext?.name || name}\n value={value}\n />\n <span className=\"au-checkbox-icon\">\n {indeterminate ? (\n <Icon name=\"minus\" size={12} />\n ) : (\n <Icon name=\"check\" size={12} />\n )}\n </span>\n </span>\n {children && <span className=\"au-checkbox-label\">{children}</span>}\n </label>\n );\n};\n\nexport interface CheckboxGroupProps {\n value?: (string | number)[];\n defaultValue?: (string | number)[];\n disabled?: boolean;\n onChange?: (value: (string | number)[]) => void;\n children?: React.ReactNode;\n name?: string;\n direction?: 'horizontal' | 'vertical';\n className?: string;\n}\n\nconst CheckboxGroup: React.FC<CheckboxGroupProps> = ({\n value,\n defaultValue = [],\n disabled = false,\n onChange,\n children,\n name,\n direction = 'horizontal',\n className = '',\n}) => {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleChange = (itemValue: string | number, checked: boolean) => {\n const newValue = checked\n ? [...currentValue, itemValue]\n : currentValue.filter((v) => v !== itemValue);\n\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n const classes = [\n 'au-checkbox-group',\n direction === 'vertical' ? 'au-checkbox-group-vertical' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <CheckboxGroupContext.Provider\n value={{ value: currentValue, onChange: handleChange, disabled, name }}\n >\n <div className={classes}>{children}</div>\n </CheckboxGroupContext.Provider>\n );\n};\n\nCheckbox.Group = CheckboxGroup;\n","import React, { useState, useContext, createContext } from 'react';\n\nexport interface RadioProps {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n onChange?: (checked: boolean) => void;\n children?: React.ReactNode;\n value?: string | number;\n name?: string;\n className?: string;\n}\n\ninterface RadioGroupContextValue {\n value: string | number | null;\n onChange: (value: string | number) => void;\n disabled?: boolean;\n name?: string;\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\nexport const Radio: React.FC<RadioProps> & {\n Group: typeof RadioGroup;\n} = ({\n checked,\n defaultChecked = false,\n disabled = false,\n onChange,\n children,\n value,\n name,\n className = '',\n}) => {\n const groupContext = useContext(RadioGroupContext);\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n\n const isControlled = checked !== undefined;\n const isGroup = groupContext !== null;\n const isChecked = isGroup\n ? groupContext.value === value\n : isControlled\n ? checked\n : internalChecked;\n\n const isDisabled = groupContext?.disabled || disabled;\n\n const handleChange = () => {\n if (isDisabled || isChecked) return;\n\n if (!isControlled && !isGroup) {\n setInternalChecked(true);\n }\n\n if (isGroup) {\n groupContext.onChange(value as string | number);\n } else {\n onChange?.(true);\n }\n };\n\n const wrapperClasses = [\n 'au-radio-wrapper',\n isDisabled ? 'au-radio-wrapper-disabled' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const radioClasses = [\n 'au-radio',\n isChecked ? 'au-radio-checked' : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <label className={wrapperClasses} onClick={handleChange}>\n <span className={radioClasses}>\n <input\n type=\"radio\"\n className=\"au-radio-input\"\n checked={isChecked}\n disabled={isDisabled}\n onChange={handleChange}\n name={groupContext?.name || name}\n value={value}\n />\n <span className=\"au-radio-dot\" />\n </span>\n {children && <span className=\"au-radio-label\">{children}</span>}\n </label>\n );\n};\n\nexport interface RadioGroupProps {\n value?: string | number | null;\n defaultValue?: string | number | null;\n disabled?: boolean;\n onChange?: (value: string | number) => void;\n children?: React.ReactNode;\n name?: string;\n direction?: 'horizontal' | 'vertical';\n className?: string;\n}\n\nconst RadioGroup: React.FC<RadioGroupProps> = ({\n value,\n defaultValue = null,\n disabled = false,\n onChange,\n children,\n name,\n direction = 'horizontal',\n className = '',\n}) => {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleChange = (itemValue: string | number) => {\n if (!isControlled) {\n setInternalValue(itemValue);\n }\n onChange?.(itemValue);\n };\n\n const classes = [\n 'au-radio-group',\n direction === 'vertical' ? 'au-radio-group-vertical' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <RadioGroupContext.Provider\n value={{ value: currentValue, onChange: handleChange, disabled, name }}\n >\n <div className={classes}>{children}</div>\n </RadioGroupContext.Provider>\n );\n};\n\nRadio.Group = RadioGroup;\n","import React, { useState } from 'react';\n\nexport type SwitchSize = 'small' | 'medium';\n\nexport interface SwitchProps {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n size?: SwitchSize;\n onChange?: (checked: boolean) => void;\n children?: React.ReactNode;\n className?: string;\n}\n\nconst sizeMap: Record<SwitchSize, string> = {\n small: 'au-switch-sm',\n medium: '',\n};\n\nexport const Switch: React.FC<SwitchProps> = ({\n checked,\n defaultChecked = false,\n disabled = false,\n size = 'medium',\n onChange,\n children,\n className = '',\n}) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n const isControlled = checked !== undefined;\n const isChecked = isControlled ? checked : internalChecked;\n\n const handleChange = () => {\n if (disabled) return;\n\n const newChecked = !isChecked;\n\n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(newChecked);\n };\n\n const wrapperClasses = [\n 'au-switch',\n isChecked ? 'au-switch-checked' : '',\n disabled ? 'au-switch-disabled' : '',\n sizeMap[size],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <label className={wrapperClasses} onClick={handleChange}>\n <input\n type=\"checkbox\"\n className=\"au-switch-input\"\n checked={isChecked}\n disabled={disabled}\n onChange={handleChange}\n />\n <span className=\"au-switch-track\">\n <span className=\"au-switch-thumb\" />\n </span>\n {children && <span className=\"au-switch-label\">{children}</span>}\n </label>\n );\n};\n","import React, { createContext, useContext, useState, useCallback } from 'react';\n\nexport type FormLayout = 'horizontal' | 'vertical';\n\nexport interface FormProps {\n children?: React.ReactNode;\n initialValues?: Record<string, any>;\n onFinish?: (values: Record<string, any>) => void;\n onFinishFailed?: (errors: Record<string, string>) => void;\n layout?: FormLayout;\n className?: string;\n}\n\nexport interface FormItemProps {\n name?: string;\n label?: React.ReactNode;\n required?: boolean;\n rules?: FormRule[];\n children?: React.ReactNode;\n className?: string;\n}\n\nexport interface FormRule {\n required?: boolean;\n message?: string;\n pattern?: RegExp;\n min?: number;\n max?: number;\n validator?: (value: any) => boolean | string | Promise<boolean | string>;\n}\n\ninterface FormContextValue {\n values: Record<string, any>;\n errors: Record<string, string>;\n layout: FormLayout;\n setValue: (name: string, value: any) => void;\n validateField: (name: string) => Promise<boolean>;\n registerField: (name: string, rules: FormRule[]) => void;\n unregisterField: (name: string) => void;\n}\n\nconst FormContext = createContext<FormContextValue | null>(null);\n\nexport const useForm = () => {\n const context = useContext(FormContext);\n if (!context) {\n throw new Error('useForm must be used within a Form component');\n }\n return context;\n};\n\nexport const FormItem: React.FC<FormItemProps> = ({\n name,\n label,\n required = false,\n rules = [],\n children,\n className = '',\n}) => {\n const formContext = useContext(FormContext);\n const error = name && formContext ? formContext.errors[name] : undefined;\n const layout = formContext?.layout || 'vertical';\n\n React.useEffect(() => {\n if (name && formContext) {\n formContext.registerField(name, rules);\n return () => {\n formContext.unregisterField(name);\n };\n }\n }, [name, formContext, rules]);\n\n const itemClasses = [\n 'au-form-item',\n `au-form-item-${layout}`,\n error ? 'au-form-item-has-error' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const labelClasses = [\n 'au-form-item-label',\n required ? 'au-form-item-label-required' : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n const cloneChildren = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n const childProps = child.props as any;\n return React.cloneElement(child, {\n ...childProps,\n value: name && formContext ? formContext.values[name] : childProps.value,\n onChange: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement> | boolean) => {\n let newValue: any;\n if (typeof e === 'boolean') {\n newValue = e;\n } else if (e && e.target) {\n newValue = e.target.value;\n } else {\n newValue = e;\n }\n \n if (name && formContext) {\n formContext.setValue(name, newValue);\n }\n \n if (childProps.onChange) {\n childProps.onChange(e);\n }\n },\n onBlur: () => {\n if (name && formContext) {\n formContext.validateField(name);\n }\n if (childProps.onBlur) {\n childProps.onBlur();\n }\n },\n } as any);\n }\n return child;\n });\n\n return (\n <div className={itemClasses}>\n {label && <label className={labelClasses}>{label}</label>}\n <div className=\"au-form-item-content\">\n {cloneChildren}\n {error && <div className=\"au-form-item-error-message\">{error}</div>}\n </div>\n </div>\n );\n};\n\nexport const Form: React.FC<FormProps> & {\n Item: typeof FormItem;\n useForm: typeof useForm;\n} = ({\n children,\n initialValues = {},\n onFinish,\n onFinishFailed,\n layout = 'vertical',\n className = '',\n}) => {\n const [values, setValues] = useState<Record<string, any>>(initialValues);\n const [errors, setErrors] = useState<Record<string, string>>({});\n const [fieldsRules, setFieldsRules] = useState<Record<string, FormRule[]>>({});\n\n const registerField = useCallback((name: string, rules: FormRule[]) => {\n setFieldsRules((prev) => ({ ...prev, [name]: rules }));\n }, []);\n\n const unregisterField = useCallback((name: string) => {\n setFieldsRules((prev) => {\n const newRules = { ...prev };\n delete newRules[name];\n return newRules;\n });\n }, []);\n\n const setValue = useCallback((name: string, value: any) => {\n setValues((prev) => ({ ...prev, [name]: value }));\n setErrors((prev) => {\n const newErrors = { ...prev };\n delete newErrors[name];\n return newErrors;\n });\n }, []);\n\n const validateField = useCallback(\n async (name: string): Promise<boolean> => {\n const rules = fieldsRules[name] || [];\n const value = values[name];\n\n for (const rule of rules) {\n if (rule.required && (value === undefined || value === null || value === '')) {\n const errorMsg = rule.message || '此字段为必填项';\n setErrors((prev) => ({ ...prev, [name]: errorMsg }));\n return false;\n }\n\n if (rule.pattern && value && !rule.pattern.test(value)) {\n const errorMsg = rule.message || '格式不正确';\n setErrors((prev) => ({ ...prev, [name]: errorMsg }));\n return false;\n }\n\n if (rule.min !== undefined && typeof value === 'string' && value.length < rule.min) {\n const errorMsg = rule.message || `最少输入${rule.min}个字符`;\n setErrors((prev) => ({ ...prev, [name]: errorMsg }));\n return false;\n }\n\n if (rule.max !== undefined && typeof value === 'string' && value.length > rule.max) {\n const errorMsg = rule.message || `最多输入${rule.max}个字符`;\n setErrors((prev) => ({ ...prev, [name]: errorMsg }));\n return false;\n }\n\n if (rule.validator) {\n try {\n const result = await rule.validator(value);\n if (result === false) {\n const errorMsg = rule.message || '验证失败';\n setErrors((prev) => ({ ...prev, [name]: errorMsg }));\n return false;\n } else if (typeof result === 'string') {\n setErrors((prev) => ({ ...prev, [name]: result }));\n return false;\n }\n } catch (err) {\n const errorMsg = rule.message || '验证失败';\n setErrors((prev) => ({ ...prev, [name]: errorMsg }));\n return false;\n }\n }\n }\n\n setErrors((prev) => {\n const newErrors = { ...prev };\n delete newErrors[name];\n return newErrors;\n });\n return true;\n },\n [fieldsRules, values]\n );\n\n const validateAllFields = async (): Promise<boolean> => {\n const fieldNames = Object.keys(fieldsRules);\n const results = await Promise.all(fieldNames.map((name) => validateField(name)));\n return results.every((result) => result);\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n \n const isValid = await validateAllFields();\n const currentErrors = errors;\n \n if (!isValid || Object.keys(currentErrors).length > 0) {\n onFinishFailed?.(currentErrors);\n } else {\n onFinish?.(values);\n }\n };\n\n const formClasses = ['au-form', `au-form-${layout}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <FormContext.Provider value={{ values, errors, layout, setValue, validateField, registerField, unregisterField }}>\n <form className={formClasses} onSubmit={handleSubmit}>\n {children}\n </form>\n </FormContext.Provider>\n );\n};\n\nForm.Item = FormItem;\nForm.useForm = useForm;\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\n\nexport type ToastPosition = 'top' | 'center' | 'bottom';\nexport type ToastType = 'text' | 'loading' | 'success' | 'error' | 'warning';\n\nexport interface ToastConfig {\n content: string;\n duration?: number;\n position?: ToastPosition;\n type?: ToastType;\n icon?: React.ReactNode;\n}\n\ninterface ToastProps extends ToastConfig {\n visible: boolean;\n onClose?: () => void;\n}\n\nconst ToastComponent: React.FC<ToastProps> = ({\n visible,\n content,\n position = 'center',\n type = 'text',\n icon,\n}) => {\n const classes = [\n 'au-toast',\n `au-toast-${position}`,\n visible ? 'au-toast-visible' : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n const renderIcon = () => {\n if (icon) return icon;\n if (type === 'loading') {\n return <div className=\"au-toast-loading\" />;\n }\n return null;\n };\n\n return (\n <div className={classes}>\n {renderIcon()}\n {type !== 'loading' && icon && <div className=\"au-toast-icon\">{icon}</div>}\n <span>{content}</span>\n </div>\n );\n};\n\nlet toastContainer: HTMLDivElement | null = null;\nlet toastRoot: ReturnType<typeof createRoot> | null = null;\nlet currentTimer: ReturnType<typeof setTimeout> | null = null;\n\nconst getContainer = () => {\n if (!toastContainer) {\n toastContainer = document.createElement('div');\n document.body.appendChild(toastContainer);\n toastRoot = createRoot(toastContainer);\n }\n return toastRoot!;\n};\n\nconst destroyToast = () => {\n if (currentTimer) {\n clearTimeout(currentTimer);\n currentTimer = null;\n }\n if (toastRoot && toastContainer) {\n toastRoot.render(<ToastComponent visible={false} content=\"\" onClose={() => {}} />);\n setTimeout(() => {\n if (toastContainer && toastContainer.parentNode) {\n toastContainer.parentNode.removeChild(toastContainer);\n toastContainer = null;\n toastRoot = null;\n }\n }, 200);\n }\n};\n\nexport const Toast = {\n show(config: ToastConfig | string) {\n const toastConfig: ToastConfig = typeof config === 'string' ? { content: config } : config;\n const { duration = 2000, ...rest } = toastConfig;\n\n destroyToast();\n\n const root = getContainer();\n root.render(\n <ToastComponent\n visible={true}\n {...rest}\n onClose={destroyToast}\n />\n );\n\n if (duration > 0 && rest.type !== 'loading') {\n currentTimer = setTimeout(() => {\n destroyToast();\n }, duration);\n }\n },\n\n loading(content: string, duration = 0) {\n this.show({ content, type: 'loading', duration });\n },\n\n success(content: string, duration?: number) {\n this.show({ content, type: 'success', duration });\n },\n\n error(content: string, duration?: number) {\n this.show({ content, type: 'error', duration });\n },\n\n hide() {\n destroyToast();\n },\n};\n","import React, { useState } from 'react';\nimport { createRoot } from 'react-dom/client';\n\nexport interface DialogConfig {\n title?: string;\n content?: React.ReactNode;\n confirmText?: string;\n cancelText?: string;\n showCancel?: boolean;\n onConfirm?: () => void | Promise<void>;\n onCancel?: () => void;\n closeOnMaskClick?: boolean;\n}\n\ninterface DialogProps extends DialogConfig {\n visible: boolean;\n onClose: () => void;\n}\n\nconst DialogComponent: React.FC<DialogProps> = ({\n visible,\n title,\n content,\n confirmText = '确定',\n cancelText = '取消',\n showCancel = true,\n onConfirm,\n onCancel,\n closeOnMaskClick = false,\n onClose,\n}) => {\n const [loading, setLoading] = useState(false);\n\n const handleConfirm = async () => {\n if (onConfirm) {\n try {\n setLoading(true);\n await onConfirm();\n onClose();\n } finally {\n setLoading(false);\n }\n } else {\n onClose();\n }\n };\n\n const handleCancel = () => {\n onCancel?.();\n onClose();\n };\n\n const handleMaskClick = () => {\n if (closeOnMaskClick) {\n onClose();\n }\n };\n\n return (\n <>\n <div\n className={`au-dialog-mask ${visible ? 'au-dialog-mask-visible' : ''}`}\n onClick={handleMaskClick}\n />\n <div className={`au-dialog ${visible ? 'au-dialog-visible' : ''}`}>\n {title && (\n <div className=\"au-dialog-header\">\n <h3 className=\"au-dialog-title\">{title}</h3>\n </div>\n )}\n <div className=\"au-dialog-body\">\n <div className=\"au-dialog-content\">{content}</div>\n </div>\n <div className=\"au-dialog-footer\">\n {showCancel && (\n <button className=\"au-dialog-btn au-dialog-btn-cancel\" onClick={handleCancel}>\n {cancelText}\n </button>\n )}\n <button\n className=\"au-dialog-btn au-dialog-btn-confirm\"\n onClick={handleConfirm}\n disabled={loading}\n >\n {loading ? '处理中...' : confirmText}\n </button>\n </div>\n </div>\n </>\n );\n};\n\nlet dialogContainer: HTMLDivElement | null = null;\nlet dialogRoot: ReturnType<typeof createRoot> | null = null;\n\nconst getContainer = () => {\n if (!dialogContainer) {\n dialogContainer = document.createElement('div');\n document.body.appendChild(dialogContainer);\n dialogRoot = createRoot(dialogContainer);\n }\n return dialogRoot!;\n};\n\nconst destroyDialog = () => {\n if (dialogRoot && dialogContainer) {\n dialogRoot.render(\n <DialogComponent visible={false} onClose={() => {}} />\n );\n setTimeout(() => {\n if (dialogContainer && dialogContainer.parentNode) {\n dialogContainer.parentNode.removeChild(dialogContainer);\n dialogContainer = null;\n dialogRoot = null;\n }\n }, 200);\n }\n};\n\nexport const Dialog = {\n show(config: DialogConfig) {\n const root = getContainer();\n root.render(\n <DialogComponent\n visible={true}\n {...config}\n onClose={destroyDialog}\n />\n );\n },\n\n confirm(config: Omit<DialogConfig, 'showCancel'>) {\n return new Promise<boolean>((resolve) => {\n this.show({\n ...config,\n showCancel: true,\n onConfirm: () => {\n resolve(true);\n },\n onCancel: () => {\n resolve(false);\n },\n });\n });\n },\n\n alert(config: Omit<DialogConfig, 'showCancel' | 'cancelText'>) {\n return new Promise<void>((resolve) => {\n this.show({\n ...config,\n showCancel: false,\n onConfirm: () => {\n resolve();\n },\n });\n });\n },\n\n hide() {\n destroyDialog();\n },\n};\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\n\nexport interface ActionSheetItem {\n name: string;\n value?: string | number;\n disabled?: boolean;\n danger?: boolean;\n}\n\nexport interface ActionSheetConfig {\n items: ActionSheetItem[];\n title?: string;\n cancelText?: string;\n showCancel?: boolean;\n onSelect?: (item: ActionSheetItem, index: number) => void;\n onCancel?: () => void;\n closeOnMaskClick?: boolean;\n}\n\ninterface ActionSheetProps extends ActionSheetConfig {\n visible: boolean;\n onClose: () => void;\n}\n\nconst ActionSheetComponent: React.FC<ActionSheetProps> = ({\n visible,\n items,\n title,\n cancelText = '取消',\n showCancel = true,\n onSelect,\n onCancel,\n closeOnMaskClick = true,\n onClose,\n}) => {\n const handleItemClick = (item: ActionSheetItem, index: number) => {\n if (item.disabled) return;\n onSelect?.(item, index);\n onClose();\n };\n\n const handleCancel = () => {\n onCancel?.();\n onClose();\n };\n\n const handleMaskClick = () => {\n if (closeOnMaskClick) {\n onClose();\n }\n };\n\n return (\n <>\n <div\n className={`au-actionsheet-mask ${visible ? 'au-actionsheet-mask-visible' : ''}`}\n onClick={handleMaskClick}\n />\n <div className={`au-actionsheet ${visible ? 'au-actionsheet-visible' : ''}`}>\n {title && (\n <div className=\"au-actionsheet-header\">\n <span className=\"au-actionsheet-title\">{title}</span>\n </div>\n )}\n <div className=\"au-actionsheet-list\">\n {items.map((item, index) => (\n <div\n key={item.value ?? index}\n className={`au-actionsheet-item ${item.disabled ? 'au-actionsheet-item-disabled' : ''} ${item.danger ? 'au-actionsheet-item-danger' : ''}`}\n onClick={() => handleItemClick(item, index)}\n >\n {item.name}\n </div>\n ))}\n </div>\n {showCancel && (\n <div className=\"au-actionsheet-cancel\" onClick={handleCancel}>\n {cancelText}\n </div>\n )}\n </div>\n </>\n );\n};\n\nlet actionsheetContainer: HTMLDivElement | null = null;\nlet actionsheetRoot: ReturnType<typeof createRoot> | null = null;\n\nconst getContainer = () => {\n if (!actionsheetContainer) {\n actionsheetContainer = document.createElement('div');\n document.body.appendChild(actionsheetContainer);\n actionsheetRoot = createRoot(actionsheetContainer);\n }\n return actionsheetRoot!;\n};\n\nconst destroyActionSheet = () => {\n if (actionsheetRoot && actionsheetContainer) {\n actionsheetRoot.render(\n <ActionSheetComponent visible={false} items={[]} onClose={() => {}} />\n );\n setTimeout(() => {\n if (actionsheetContainer && actionsheetContainer.parentNode) {\n actionsheetContainer.parentNode.removeChild(actionsheetContainer);\n actionsheetContainer = null;\n actionsheetRoot = null;\n }\n }, 200);\n }\n};\n\nexport const ActionSheet = {\n show(config: ActionSheetConfig) {\n const root = getContainer();\n root.render(\n <ActionSheetComponent\n visible={true}\n {...config}\n onClose={destroyActionSheet}\n />\n );\n },\n\n hide() {\n destroyActionSheet();\n },\n};\n","import React from 'react';\n\nexport interface MaskProps {\n visible?: boolean;\n transparent?: boolean;\n onClick?: () => void;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const Mask: React.FC<MaskProps> = ({\n visible = true,\n transparent = false,\n onClick,\n children,\n className = '',\n}) => {\n const classes = [\n 'au-mask',\n visible ? 'au-mask-visible' : '',\n transparent ? 'au-mask-transparent' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} onClick={onClick}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { Icon } from '../Icon';\n\nexport interface CellProps {\n title?: React.ReactNode;\n label?: React.ReactNode;\n value?: React.ReactNode;\n icon?: React.ReactNode;\n arrow?: boolean;\n disabled?: boolean;\n onClick?: () => void;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const Cell: React.FC<CellProps> = ({\n title,\n label,\n value,\n icon,\n arrow = false,\n disabled = false,\n onClick,\n children,\n className = '',\n}) => {\n const classes = [\n 'au-cell',\n disabled ? 'au-cell-disabled' : '',\n onClick ? 'au-cell-clickable' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} onClick={disabled ? undefined : onClick}>\n {icon && <div className=\"au-cell-icon\">{icon}</div>}\n <div className=\"au-cell-content\">\n {title && <div className=\"au-cell-title\">{title}</div>}\n {label && <div className=\"au-cell-label\">{label}</div>}\n {children}\n </div>\n {value && <div className=\"au-cell-value\">{value}</div>}\n {arrow && (\n <div className=\"au-cell-arrow\">\n <Icon name=\"chevronRight\" size={14} />\n </div>\n )}\n </div>\n );\n};\n\nexport interface CellGroupProps {\n title?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const CellGroup: React.FC<CellGroupProps> = ({\n title,\n children,\n className = '',\n}) => {\n return (\n <div className={`au-cell-group ${className}`}>\n {title && <div className=\"au-cell-group-title\">{title}</div>}\n <div className=\"au-cell-group-content\">\n {React.Children.map(children, (child, index) => (\n <div key={index} className=\"au-cell-item\">\n {child}\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nexport interface CardProps {\n title?: React.ReactNode;\n extra?: React.ReactNode;\n footer?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const Card: React.FC<CardProps> = ({\n title,\n extra,\n footer,\n children,\n className = '',\n}) => {\n return (\n <div className={`au-card ${className}`}>\n {(title || extra) && (\n <div className=\"au-card-header\">\n {title && <div className=\"au-card-title\">{title}</div>}\n {extra && <div className=\"au-card-extra\">{extra}</div>}\n </div>\n )}\n <div className=\"au-card-body\">{children}</div>\n {footer && <div className=\"au-card-footer\">{footer}</div>}\n </div>\n );\n};\n","import React from 'react';\nimport { Icon } from '../Icon';\n\nexport type TagType = 'default' | 'primary' | 'success' | 'warning' | 'danger';\nexport type TagVariant = 'solid' | 'outline';\n\nexport interface TagProps {\n type?: TagType;\n variant?: TagVariant;\n round?: boolean;\n closable?: boolean;\n onClose?: () => void;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const Tag: React.FC<TagProps> = ({\n type = 'default',\n variant = 'solid',\n round = false,\n closable = false,\n onClose,\n children,\n className = '',\n}) => {\n const classes = [\n 'au-tag',\n `au-tag-${variant}`,\n `au-tag-${type}`,\n round ? 'au-tag-round' : '',\n closable ? 'au-tag-closable' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleClose = (e: React.MouseEvent) => {\n e.stopPropagation();\n onClose?.();\n };\n\n return (\n <span className={classes}>\n {children}\n {closable && (\n <span className=\"au-tag-close\" onClick={handleClose}>\n <Icon name=\"close\" size={10} />\n </span>\n )}\n </span>\n );\n};\n","import React from 'react';\n\nexport type BadgeType = 'default' | 'primary' | 'success' | 'warning' | 'info';\n\nexport interface BadgeProps {\n count?: number;\n maxCount?: number;\n dot?: boolean;\n text?: string;\n type?: BadgeType;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const Badge: React.FC<BadgeProps> = ({\n count,\n maxCount = 99,\n dot = false,\n text,\n type = 'default',\n children,\n className = '',\n}) => {\n const showBadge = dot || count !== undefined || text;\n const displayCount = count !== undefined && count > maxCount ? `${maxCount}+` : count;\n\n const wrapperClasses = ['au-badge', `au-badge-${type}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={wrapperClasses}>\n {children}\n {showBadge && (\n <div className=\"au-badge-content\">\n {dot && <div className=\"au-badge-dot\" />}\n {!dot && text && <div className=\"au-badge-text\">{text}</div>}\n {!dot && !text && count !== undefined && (\n <div className=\"au-badge-number\">{displayCount}</div>\n )}\n </div>\n )}\n </div>\n );\n};\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Icon } from '../Icon';\n\nexport type ImageFit = 'fill' | 'contain' | 'cover' | 'none' | 'scale-down';\nexport type ImageShape = 'default' | 'round' | 'circle';\n\nexport interface ImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n src: string;\n alt?: string;\n fit?: ImageFit;\n shape?: ImageShape;\n lazy?: boolean;\n placeholder?: React.ReactNode;\n fallback?: React.ReactNode;\n onLoad?: () => void;\n onError?: () => void;\n className?: string;\n}\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = '',\n fit = 'cover',\n shape = 'default',\n lazy = false,\n placeholder,\n fallback,\n onLoad,\n onError,\n className = '',\n ...rest\n}) => {\n const [status, setStatus] = useState<'loading' | 'loaded' | 'error'>('loading');\n const [shouldLoad, setShouldLoad] = useState(!lazy);\n const imgRef = useRef<HTMLImageElement>(null);\n\n useEffect(() => {\n if (!lazy) return;\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n setShouldLoad(true);\n observer.disconnect();\n }\n });\n },\n { rootMargin: '50px' }\n );\n\n if (imgRef.current) {\n observer.observe(imgRef.current);\n }\n\n return () => {\n observer.disconnect();\n };\n }, [lazy]);\n\n const handleLoad = () => {\n setStatus('loaded');\n onLoad?.();\n };\n\n const handleError = () => {\n setStatus('error');\n onError?.();\n };\n\n const classes = [\n 'au-image',\n `au-image-${fit}`,\n shape === 'round' ? 'au-image-round' : '',\n shape === 'circle' ? 'au-image-circle' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes}>\n {shouldLoad && (\n <img\n ref={imgRef}\n className={`au-image-img au-image-${fit}`}\n src={src}\n alt={alt}\n onLoad={handleLoad}\n onError={handleError}\n {...rest}\n />\n )}\n {status === 'loading' && (\n <div className=\"au-image-placeholder\">\n {placeholder || <Icon name=\"image\" size={32} />}\n </div>\n )}\n {status === 'error' && (\n <div className=\"au-image-error\">\n {fallback || (\n <>\n <Icon name=\"image\" size={32} />\n <span style={{ fontSize: 12, marginTop: 8 }}>加载失败</span>\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\n\nexport interface GridItemProps {\n icon?: React.ReactNode;\n text?: React.ReactNode;\n onClick?: () => void;\n className?: string;\n}\n\nexport const GridItem: React.FC<GridItemProps> = ({\n icon,\n text,\n onClick,\n className = '',\n}) => {\n return (\n <div className={`au-grid-item ${className}`} onClick={onClick}>\n {icon && <div className=\"au-grid-icon\">{icon}</div>}\n {text && <div className=\"au-grid-text\">{text}</div>}\n </div>\n );\n};\n\nexport interface GridProps {\n columns?: 2 | 3 | 4 | 5;\n bordered?: boolean;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const Grid: React.FC<GridProps> & {\n Item: typeof GridItem;\n} = ({\n columns = 4,\n bordered = false,\n children,\n className = '',\n}) => {\n const classes = [\n 'au-grid',\n `au-grid-cols-${columns}`,\n bordered ? 'au-grid-bordered' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return <div className={classes}>{children}</div>;\n};\n\nGrid.Item = GridItem;\n","import React, { useState, useRef, useEffect } from 'react';\nimport { createRoot } from 'react-dom/client';\n\nexport interface PickerColumnItem {\n label: string;\n value: string | number;\n disabled?: boolean;\n}\n\nexport interface PickerColumn {\n values: PickerColumnItem[];\n}\n\nexport interface PickerConfig {\n columns: PickerColumn | PickerColumn[];\n title?: string;\n confirmText?: string;\n cancelText?: string;\n defaultValue?: (string | number)[];\n onConfirm?: (values: (string | number)[], items: PickerColumnItem[]) => void;\n onCancel?: () => void;\n}\n\ninterface PickerProps extends PickerConfig {\n visible: boolean;\n onClose: () => void;\n}\n\nconst PickerColumn: React.FC<{\n column: PickerColumn;\n value?: string | number;\n onChange: (item: PickerColumnItem) => void;\n}> = ({ column, value, onChange }) => {\n const wheelRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (wheelRef.current && value) {\n const index = column.values.findIndex((item) => item.value === value);\n if (index >= 0) {\n wheelRef.current.scrollTop = index * 44;\n }\n }\n }, [value, column.values]);\n\n const handleScroll = () => {\n if (!wheelRef.current) return;\n const scrollTop = wheelRef.current.scrollTop;\n const index = Math.round(scrollTop / 44);\n const item = column.values[index];\n if (item && !item.disabled) {\n onChange(item);\n }\n };\n\n return (\n <div className=\"au-picker-column\">\n <div\n ref={wheelRef}\n className=\"au-picker-column-wheel\"\n onScroll={handleScroll}\n >\n {column.values.map((item) => (\n <div\n key={item.value}\n className={`au-picker-column-item ${item.disabled ? 'au-picker-column-item-disabled' : ''}`}\n >\n {item.label}\n </div>\n ))}\n </div>\n <div className=\"au-picker-indicator\" />\n </div>\n );\n};\n\nconst PickerComponent: React.FC<PickerProps> = ({\n visible,\n columns,\n title,\n confirmText = '确定',\n cancelText = '取消',\n defaultValue = [],\n onConfirm,\n onCancel,\n onClose,\n}) => {\n const isArray = Array.isArray(columns);\n const columnList = isArray ? columns : [columns];\n\n const [selectedValues, setSelectedValues] = useState<(string | number)[]>(() => {\n return columnList.map((col, index) => {\n if (defaultValue[index] !== undefined) {\n return defaultValue[index];\n }\n const firstEnabled = col.values.find((item) => !item.disabled);\n return firstEnabled?.value ?? col.values[0]?.value;\n });\n });\n\n const handleColumnChange = (columnIndex: number, item: PickerColumnItem) => {\n setSelectedValues((prev) => {\n const newValues = [...prev];\n newValues[columnIndex] = item.value;\n return newValues;\n });\n };\n\n const handleConfirm = () => {\n const items = columnList.map((col, index) => {\n const value = selectedValues[index];\n return col.values.find((item) => item.value === value) || col.values[0];\n });\n onConfirm?.(selectedValues, items);\n onClose();\n };\n\n const handleCancel = () => {\n onCancel?.();\n onClose();\n };\n\n const handleMaskClick = () => {\n onClose();\n };\n\n return (\n <>\n <div\n className={`au-picker-mask ${visible ? 'au-picker-mask-visible' : ''}`}\n onClick={handleMaskClick}\n />\n <div className={`au-picker ${visible ? 'au-picker-visible' : ''}`}>\n <div className=\"au-picker-header\">\n <button className=\"au-picker-cancel\" onClick={handleCancel}>\n {cancelText}\n </button>\n {title && <span className=\"au-picker-title\">{title}</span>}\n <button className=\"au-picker-confirm\" onClick={handleConfirm}>\n {confirmText}\n </button>\n </div>\n <div className=\"au-picker-columns\">\n {columnList.map((column, index) => (\n <PickerColumn\n key={index}\n column={column}\n value={selectedValues[index]}\n onChange={(item) => handleColumnChange(index, item)}\n />\n ))}\n </div>\n </div>\n </>\n );\n};\n\nlet pickerContainer: HTMLDivElement | null = null;\nlet pickerRoot: ReturnType<typeof createRoot> | null = null;\n\nconst getContainer = () => {\n if (!pickerContainer) {\n pickerContainer = document.createElement('div');\n document.body.appendChild(pickerContainer);\n pickerRoot = createRoot(pickerContainer);\n }\n return pickerRoot!;\n};\n\nconst destroyPicker = () => {\n if (pickerRoot && pickerContainer) {\n pickerRoot.render(\n <PickerComponent visible={false} columns={{ values: [] }} onClose={() => {}} />\n );\n setTimeout(() => {\n if (pickerContainer && pickerContainer.parentNode) {\n pickerContainer.parentNode.removeChild(pickerContainer);\n pickerContainer = null;\n pickerRoot = null;\n }\n }, 200);\n }\n};\n\nexport const Picker = {\n show(config: PickerConfig) {\n const root = getContainer();\n root.render(\n <PickerComponent\n visible={true}\n {...config}\n onClose={destroyPicker}\n />\n );\n },\n\n hide() {\n destroyPicker();\n },\n};\n","import { Picker, PickerColumnItem, PickerColumn } from '../Picker';\n\nexport type DatePickerType = 'date' | 'time' | 'datetime' | 'year-month' | 'month-day' | 'datehour';\n\nexport interface DatePickerConfig {\n type?: DatePickerType;\n title?: string;\n minDate?: Date;\n maxDate?: Date;\n defaultValue?: Date;\n confirmText?: string;\n cancelText?: string;\n onConfirm?: (value: Date, values: PickerColumnItem[]) => void;\n onCancel?: () => void;\n formatter?: (type: string, value: string) => string;\n}\n\nconst padZero = (num: number) => String(num).padStart(2, '0');\n\nconst getYears = (minDate: Date, maxDate: Date): PickerColumnItem[] => {\n const years: PickerColumnItem[] = [];\n for (let year = minDate.getFullYear(); year <= maxDate.getFullYear(); year++) {\n years.push({ label: `${year}年`, value: year });\n }\n return years;\n};\n\nconst getMonths = (year: number, minDate: Date, maxDate: Date): PickerColumnItem[] => {\n const months: PickerColumnItem[] = [];\n const minMonth = year === minDate.getFullYear() ? minDate.getMonth() + 1 : 1;\n const maxMonth = year === maxDate.getFullYear() ? maxDate.getMonth() + 1 : 12;\n for (let month = minMonth; month <= maxMonth; month++) {\n months.push({ label: `${padZero(month)}月`, value: month });\n }\n return months;\n};\n\nconst getDays = (year: number, month: number, minDate: Date, maxDate: Date): PickerColumnItem[] => {\n const days: PickerColumnItem[] = [];\n const daysInMonth = new Date(year, month, 0).getDate();\n const minDay = year === minDate.getFullYear() && month === minDate.getMonth() + 1\n ? minDate.getDate()\n : 1;\n const maxDay = year === maxDate.getFullYear() && month === maxDate.getMonth() + 1\n ? maxDate.getDate()\n : daysInMonth;\n for (let day = minDay; day <= maxDay; day++) {\n days.push({ label: `${padZero(day)}日`, value: day });\n }\n return days;\n};\n\nconst getHours = (): PickerColumnItem[] => {\n const hours: PickerColumnItem[] = [];\n for (let hour = 0; hour < 24; hour++) {\n hours.push({ label: `${padZero(hour)}时`, value: hour });\n }\n return hours;\n};\n\nconst getMinutes = (): PickerColumnItem[] => {\n const minutes: PickerColumnItem[] = [];\n for (let minute = 0; minute < 60; minute++) {\n minutes.push({ label: `${padZero(minute)}分`, value: minute });\n }\n return minutes;\n};\n\nexport const DatePicker = {\n show(config: DatePickerConfig) {\n const {\n type = 'date',\n minDate = new Date(new Date().getFullYear() - 10, 0, 1),\n maxDate = new Date(new Date().getFullYear() + 10, 11, 31),\n defaultValue = new Date(),\n formatter,\n ...rest\n } = config;\n\n const initialDate = defaultValue || new Date();\n const year = initialDate.getFullYear();\n const month = initialDate.getMonth() + 1;\n const day = initialDate.getDate();\n const hour = initialDate.getHours();\n const minute = initialDate.getMinutes();\n\n const columns: PickerColumn[] = [];\n\n switch (type) {\n case 'date':\n columns.push({ values: getYears(minDate, maxDate) });\n columns.push({ values: getMonths(year, minDate, maxDate) });\n columns.push({ values: getDays(year, month, minDate, maxDate) });\n break;\n case 'time':\n columns.push({ values: getHours() });\n columns.push({ values: getMinutes() });\n break;\n case 'datetime':\n columns.push({ values: getYears(minDate, maxDate) });\n columns.push({ values: getMonths(year, minDate, maxDate) });\n columns.push({ values: getDays(year, month, minDate, maxDate) });\n columns.push({ values: getHours() });\n columns.push({ values: getMinutes() });\n break;\n case 'year-month':\n columns.push({ values: getYears(minDate, maxDate) });\n columns.push({ values: getMonths(year, minDate, maxDate) });\n break;\n case 'month-day':\n columns.push({ values: getMonths(year, minDate, maxDate) });\n columns.push({ values: getDays(year, month, minDate, maxDate) });\n break;\n case 'datehour':\n columns.push({ values: getYears(minDate, maxDate) });\n columns.push({ values: getMonths(year, minDate, maxDate) });\n columns.push({ values: getDays(year, month, minDate, maxDate) });\n columns.push({ values: getHours() });\n break;\n }\n\n const defaultValues: (string | number)[] = [];\n switch (type) {\n case 'date':\n defaultValues.push(year, month, day);\n break;\n case 'time':\n defaultValues.push(hour, minute);\n break;\n case 'datetime':\n defaultValues.push(year, month, day, hour, minute);\n break;\n case 'year-month':\n defaultValues.push(year, month);\n break;\n case 'month-day':\n defaultValues.push(month, day);\n break;\n case 'datehour':\n defaultValues.push(year, month, day, hour);\n break;\n }\n\n Picker.show({\n columns,\n defaultValue: defaultValues,\n ...rest,\n onConfirm: (values, items) => {\n let resultDate: Date;\n switch (type) {\n case 'date':\n resultDate = new Date(values[0] as number, (values[1] as number) - 1, values[2] as number);\n break;\n case 'time':\n resultDate = new Date();\n resultDate.setHours(values[0] as number, values[1] as number, 0, 0);\n break;\n case 'datetime':\n resultDate = new Date(\n values[0] as number,\n (values[1] as number) - 1,\n values[2] as number,\n values[3] as number,\n values[4] as number\n );\n break;\n case 'year-month':\n resultDate = new Date(values[0] as number, (values[1] as number) - 1, 1);\n break;\n case 'month-day':\n resultDate = new Date(year, (values[0] as number) - 1, values[1] as number);\n break;\n case 'datehour':\n resultDate = new Date(\n values[0] as number,\n (values[1] as number) - 1,\n values[2] as number,\n values[3] as number\n );\n break;\n default:\n resultDate = new Date();\n }\n config.onConfirm?.(resultDate, items);\n },\n });\n },\n\n hide() {\n Picker.hide();\n },\n};\n","import { useState, useEffect, useCallback } from 'react';\n\nexport type Theme = 'light' | 'dark' | 'auto';\n\nexport interface UseThemeReturn {\n theme: Theme;\n resolvedTheme: 'light' | 'dark';\n setTheme: (theme: Theme) => void;\n toggleTheme: () => void;\n}\n\nconst STORAGE_KEY = 'aurora-theme';\n\nconst getSystemTheme = (): 'light' | 'dark' => {\n if (typeof window === 'undefined') return 'light';\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n};\n\nconst getStoredTheme = (): Theme | null => {\n if (typeof window === 'undefined') return null;\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored === 'light' || stored === 'dark' || stored === 'auto') {\n return stored;\n }\n return null;\n};\n\nconst applyTheme = (theme: 'light' | 'dark') => {\n if (typeof document === 'undefined') return;\n document.documentElement.setAttribute('data-theme', theme);\n};\n\nexport const useTheme = (defaultTheme: Theme = 'auto'): UseThemeReturn => {\n const [theme, setThemeState] = useState<Theme>(() => {\n const stored = getStoredTheme();\n return stored || defaultTheme;\n });\n\n const [resolvedTheme, setResolvedTheme] = useState<'light' | 'dark'>(() => {\n if (theme === 'auto') {\n return getSystemTheme();\n }\n return theme;\n });\n\n const setTheme = useCallback((newTheme: Theme) => {\n setThemeState(newTheme);\n localStorage.setItem(STORAGE_KEY, newTheme);\n }, []);\n\n const toggleTheme = useCallback(() => {\n const currentResolved = theme === 'auto' ? getSystemTheme() : theme;\n const newTheme = currentResolved === 'light' ? 'dark' : 'light';\n setTheme(newTheme);\n }, [theme, setTheme]);\n\n useEffect(() => {\n const resolved = theme === 'auto' ? getSystemTheme() : theme;\n setResolvedTheme(resolved);\n applyTheme(resolved);\n }, [theme]);\n\n useEffect(() => {\n if (theme !== 'auto') return;\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n \n const handleChange = (e: MediaQueryListEvent) => {\n const newResolved = e.matches ? 'dark' : 'light';\n setResolvedTheme(newResolved);\n applyTheme(newResolved);\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, [theme]);\n\n return {\n theme,\n resolvedTheme,\n setTheme,\n toggleTheme,\n };\n};\n\nexport const initTheme = () => {\n const stored = getStoredTheme();\n const theme = stored || 'auto';\n const resolved = theme === 'auto' ? getSystemTheme() : theme;\n applyTheme(resolved);\n};\n"],"mappings":"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","names":["jsxs","sizeMap","Button","type","variant","size","block","loading","disabled","icon","children","className","htmlType","rest","classes","Fragment","jsx","icons","Icon","name","size","spin","color","className","rest","iconPath","classes","jsx","jsxs","sizeMap","Loading","size","text","className","LoadingIcon","jsx","jsxs","Empty","image","text","actionText","onAction","actionProps","className","Icon","Button","jsx","Divider","dashed","text","textPosition","vertical","className","classes","useState","useRef","jsx","jsxs","sizeMap","Input","size","prefix","suffix","clearable","showCount","maxLength","error","errorText","disabled","value","defaultValue","onChange","onClear","className","rest","internalValue","setInternalValue","useState","isControlled","currentValue","inputRef","useRef","wrapperClasses","handleChange","e","newValue","handleClear","showClear","showCountText","Icon","useState","useRef","useEffect","jsx","jsxs","calculateHeight","element","minRows","maxRows","style","lineHeight","paddingTop","paddingBottom","borderTop","borderBottom","minHeight","maxHeight","scrollHeight","height","Textarea","autoSize","showCount","maxLength","error","errorText","disabled","value","defaultValue","onChange","className","rest","internalValue","setInternalValue","isControlled","currentValue","textareaRef","wrapperClasses","e","newValue","useState","useContext","createContext","jsx","jsxs","CheckboxGroupContext","createContext","Checkbox","checked","defaultChecked","disabled","indeterminate","onChange","children","value","name","className","groupContext","useContext","internalChecked","setInternalChecked","useState","isControlled","isGroup","isChecked","isDisabled","handleChange","newChecked","wrapperClasses","checkboxClasses","Icon","CheckboxGroup","defaultValue","direction","internalValue","setInternalValue","currentValue","itemValue","newValue","classes","useState","useContext","createContext","jsx","jsxs","RadioGroupContext","Radio","checked","defaultChecked","disabled","onChange","children","value","name","className","groupContext","internalChecked","setInternalChecked","isControlled","isGroup","isChecked","isDisabled","handleChange","wrapperClasses","radioClasses","RadioGroup","defaultValue","direction","internalValue","setInternalValue","currentValue","itemValue","classes","useState","jsx","jsxs","sizeMap","Switch","checked","defaultChecked","disabled","size","onChange","children","className","internalChecked","setInternalChecked","isControlled","isChecked","handleChange","newChecked","wrapperClasses","React","createContext","useContext","useState","useCallback","jsx","jsxs","FormContext","useForm","context","FormItem","name","label","required","rules","children","className","formContext","error","layout","itemClasses","labelClasses","cloneChildren","child","childProps","e","newValue","Form","initialValues","onFinish","onFinishFailed","values","setValues","errors","setErrors","fieldsRules","setFieldsRules","registerField","prev","unregisterField","newRules","setValue","value","newErrors","validateField","rule","errorMsg","result","validateAllFields","fieldNames","handleSubmit","isValid","currentErrors","formClasses","createRoot","jsx","jsxs","ToastComponent","visible","content","position","type","icon","classes","toastContainer","toastRoot","currentTimer","getContainer","destroyToast","Toast","config","toastConfig","duration","rest","useState","createRoot","Fragment","jsx","jsxs","DialogComponent","visible","title","content","confirmText","cancelText","showCancel","onConfirm","onCancel","closeOnMaskClick","onClose","loading","setLoading","dialogContainer","dialogRoot","getContainer","destroyDialog","Dialog","config","resolve","createRoot","Fragment","jsx","jsxs","ActionSheetComponent","visible","items","title","cancelText","showCancel","onSelect","onCancel","closeOnMaskClick","onClose","handleItemClick","item","index","handleCancel","actionsheetContainer","actionsheetRoot","getContainer","destroyActionSheet","ActionSheet","config","jsx","Mask","visible","transparent","onClick","children","className","classes","React","jsx","jsxs","Cell","title","label","value","icon","arrow","disabled","onClick","children","className","classes","Icon","CellGroup","React","child","index","jsx","jsxs","Card","title","extra","footer","children","className","jsx","jsxs","Tag","type","variant","round","closable","onClose","children","className","classes","e","Icon","jsx","jsxs","Badge","count","maxCount","dot","text","type","children","className","showBadge","displayCount","wrapperClasses","useState","useRef","useEffect","Fragment","jsx","jsxs","Image","src","alt","fit","shape","lazy","placeholder","fallback","onLoad","onError","className","rest","status","setStatus","useState","shouldLoad","setShouldLoad","imgRef","useRef","useEffect","observer","entries","entry","handleLoad","handleError","classes","Icon","jsx","jsxs","GridItem","icon","text","onClick","className","Grid","columns","bordered","children","classes","useState","useRef","useEffect","createRoot","Fragment","jsx","jsxs","PickerColumn","column","value","onChange","wheelRef","index","item","scrollTop","PickerComponent","visible","columns","title","confirmText","cancelText","defaultValue","onConfirm","onCancel","onClose","columnList","selectedValues","setSelectedValues","col","handleColumnChange","columnIndex","prev","newValues","items","pickerContainer","pickerRoot","getContainer","destroyPicker","Picker","config","padZero","num","getYears","minDate","maxDate","years","year","getMonths","months","minMonth","maxMonth","month","getDays","days","daysInMonth","minDay","maxDay","day","getHours","hours","hour","getMinutes","minutes","minute","DatePicker","config","type","defaultValue","formatter","rest","initialDate","columns","defaultValues","Picker","values","items","resultDate","useState","useEffect","useCallback","STORAGE_KEY","getSystemTheme","getStoredTheme","stored","applyTheme","theme","useTheme","defaultTheme","setThemeState","resolvedTheme","setResolvedTheme","setTheme","newTheme","toggleTheme","resolved","mediaQuery","handleChange","e","newResolved","initTheme"]}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "aurora-mini-ui",
3
+ "version": "1.0.1",
4
+ "description": "Aurora Mini - 超轻量移动端展示型组件库",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.js"
13
+ },
14
+ "./styles": "./dist/styles/index.css"
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsup",
21
+ "dev": "tsup --watch",
22
+ "lint": "eslint src --ext .ts,.tsx",
23
+ "clean": "rm -rf dist"
24
+ },
25
+ "peerDependencies": {
26
+ "react": ">=18.0.0",
27
+ "react-dom": ">=18.0.0"
28
+ },
29
+ "devDependencies": {
30
+ "@types/react": "^18.2.0",
31
+ "@types/react-dom": "^18.2.0",
32
+ "react": "^18.2.0",
33
+ "react-dom": "^18.2.0",
34
+ "tsup": "^8.0.0",
35
+ "typescript": "^5.3.0"
36
+ },
37
+ "keywords": [
38
+ "react",
39
+ "mobile",
40
+ "ui",
41
+ "components",
42
+ "lightweight"
43
+ ],
44
+ "author": "",
45
+ "license": "MIT"
46
+ }