asterui 0.12.0 → 0.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/components/Calendar.d.ts +23 -0
- package/dist/components/Checkbox.d.ts +10 -0
- package/dist/components/Dock.d.ts +38 -0
- package/dist/components/Form.d.ts +27 -2
- package/dist/components/Mask.d.ts +14 -0
- package/dist/components/Radio.d.ts +7 -1
- package/dist/components/Status.d.ts +18 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +12 -3
- package/dist/index.js +203 -192
- package/dist/index.js.map +1 -1
- package/dist/index10.js +85 -59
- package/dist/index10.js.map +1 -1
- package/dist/index100.js +44 -11
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +11 -29
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +13 -16
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +7 -10792
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +13 -5
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +30 -41
- package/dist/index105.js.map +1 -1
- package/dist/index106.js +18 -2
- package/dist/index106.js.map +1 -1
- package/dist/index107.js +174 -7
- package/dist/index107.js.map +1 -1
- package/dist/index109.js +10788 -25
- package/dist/index109.js.map +1 -1
- package/dist/index110.js +5 -30
- package/dist/index110.js.map +1 -1
- package/dist/index111.js +42 -2
- package/dist/index111.js.map +1 -1
- package/dist/index112.js +2 -72
- package/dist/index112.js.map +1 -1
- package/dist/index113.js +6 -38
- package/dist/index113.js.map +1 -1
- package/dist/index114.js +150 -24
- package/dist/index114.js.map +1 -1
- package/dist/index115.js +29 -20
- package/dist/index115.js.map +1 -1
- package/dist/index116.js +29 -23
- package/dist/index116.js.map +1 -1
- package/dist/index117.js +2 -20
- package/dist/index117.js.map +1 -1
- package/dist/index118.js +71 -99
- package/dist/index118.js.map +1 -1
- package/dist/index119.js +37 -358
- package/dist/index119.js.map +1 -1
- package/dist/index120.js +23 -22
- package/dist/index120.js.map +1 -1
- package/dist/index121.js +20 -72
- package/dist/index121.js.map +1 -1
- package/dist/index122.js +23 -15
- package/dist/index122.js.map +1 -1
- package/dist/index123.js +19 -65
- package/dist/index123.js.map +1 -1
- package/dist/index124.js +92 -136
- package/dist/index124.js.map +1 -1
- package/dist/index125.js +360 -2
- package/dist/index125.js.map +1 -1
- package/dist/index126.js +23 -54
- package/dist/index126.js.map +1 -1
- package/dist/index127.js +73 -2
- package/dist/index127.js.map +1 -1
- package/dist/index128.js +16 -2
- package/dist/index128.js.map +1 -1
- package/dist/index129.js +66 -2
- package/dist/index129.js.map +1 -1
- package/dist/index13.js +35 -95
- package/dist/index13.js.map +1 -1
- package/dist/index130.js +144 -2
- package/dist/index130.js.map +1 -1
- package/dist/index131.js +2 -2
- package/dist/index132.js +56 -2
- package/dist/index132.js.map +1 -1
- package/dist/index135.js +2 -32
- package/dist/index135.js.map +1 -1
- package/dist/index137.js +2 -8
- package/dist/index137.js.map +1 -1
- package/dist/index138.js +2 -2
- package/dist/index139.js +2 -2
- package/dist/index14.js +90 -153
- package/dist/index14.js.map +1 -1
- package/dist/index140.js +2 -21
- package/dist/index140.js.map +1 -1
- package/dist/index141.js +32 -2
- package/dist/index141.js.map +1 -1
- package/dist/index142.js +2 -24
- package/dist/index142.js.map +1 -1
- package/dist/index143.js +7 -70
- package/dist/index143.js.map +1 -1
- package/dist/index144.js +2 -21
- package/dist/index144.js.map +1 -1
- package/dist/index145.js +2 -34
- package/dist/index145.js.map +1 -1
- package/dist/index146.js +20 -69
- package/dist/index146.js.map +1 -1
- package/dist/index147.js +2 -2
- package/dist/index148.js +23 -21
- package/dist/index148.js.map +1 -1
- package/dist/index149.js +71 -2
- package/dist/index149.js.map +1 -1
- package/dist/index15.js +154 -146
- package/dist/index15.js.map +1 -1
- package/dist/index150.js +21 -2
- package/dist/index150.js.map +1 -1
- package/dist/index151.js +34 -2
- package/dist/index151.js.map +1 -1
- package/dist/index152.js +70 -2
- package/dist/index152.js.map +1 -1
- package/dist/index153.js +2 -4
- package/dist/index153.js.map +1 -1
- package/dist/index154.js +25 -0
- package/dist/index154.js.map +1 -0
- package/dist/index155.js +5 -0
- package/dist/index155.js.map +1 -0
- package/dist/index156.js +5 -0
- package/dist/index156.js.map +1 -0
- package/dist/index157.js +5 -0
- package/dist/index157.js.map +1 -0
- package/dist/index158.js +5 -0
- package/dist/index158.js.map +1 -0
- package/dist/index159.js +7 -0
- package/dist/index159.js.map +1 -0
- package/dist/index16.js +150 -5
- package/dist/index16.js.map +1 -1
- package/dist/index17.js +5 -71
- package/dist/index17.js.map +1 -1
- package/dist/index18.js +71 -17
- package/dist/index18.js.map +1 -1
- package/dist/index19.js +15 -96
- package/dist/index19.js.map +1 -1
- package/dist/index20.js +89 -105
- package/dist/index20.js.map +1 -1
- package/dist/index21.js +107 -177
- package/dist/index21.js.map +1 -1
- package/dist/index22.js +181 -107
- package/dist/index22.js.map +1 -1
- package/dist/index23.js +110 -19
- package/dist/index23.js.map +1 -1
- package/dist/index24.js +19 -32
- package/dist/index24.js.map +1 -1
- package/dist/index25.js +42 -40
- package/dist/index25.js.map +1 -1
- package/dist/index26.js +31 -11
- package/dist/index26.js.map +1 -1
- package/dist/index27.js +41 -33
- package/dist/index27.js.map +1 -1
- package/dist/index28.js +12 -63
- package/dist/index28.js.map +1 -1
- package/dist/index29.js +33 -80
- package/dist/index29.js.map +1 -1
- package/dist/index30.js +63 -18
- package/dist/index30.js.map +1 -1
- package/dist/index31.js +78 -159
- package/dist/index31.js.map +1 -1
- package/dist/index32.js +16 -1080
- package/dist/index32.js.map +1 -1
- package/dist/index33.js +218 -16
- package/dist/index33.js.map +1 -1
- package/dist/index34.js +1081 -121
- package/dist/index34.js.map +1 -1
- package/dist/index35.js +17 -39
- package/dist/index35.js.map +1 -1
- package/dist/index36.js +121 -190
- package/dist/index36.js.map +1 -1
- package/dist/index37.js +37 -94
- package/dist/index37.js.map +1 -1
- package/dist/index38.js +186 -157
- package/dist/index38.js.map +1 -1
- package/dist/index39.js +89 -138
- package/dist/index39.js.map +1 -1
- package/dist/index40.js +161 -14
- package/dist/index40.js.map +1 -1
- package/dist/index41.js +146 -18
- package/dist/index41.js.map +1 -1
- package/dist/index42.js +14 -20
- package/dist/index42.js.map +1 -1
- package/dist/index43.js +15 -116
- package/dist/index43.js.map +1 -1
- package/dist/index44.js +18 -10
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +119 -35
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +12 -115
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +33 -174
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +10 -147
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +116 -12
- package/dist/index49.js.map +1 -1
- package/dist/index50.js +176 -22
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +147 -14
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +10 -5
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +21 -265
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +10 -13
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +7 -122
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +262 -106
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +14 -167
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +121 -31
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +107 -119
- package/dist/index59.js.map +1 -1
- package/dist/index60.js +161 -77
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +31 -19
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +117 -69
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +82 -53
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +19 -44
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +70 -48
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +55 -60
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +39 -101
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +52 -41
- package/dist/index68.js.map +1 -1
- package/dist/index69.js +58 -64
- package/dist/index69.js.map +1 -1
- package/dist/index70.js +105 -19
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +41 -46
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +63 -129
- package/dist/index72.js.map +1 -1
- package/dist/index73.js +19 -50
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +46 -22
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +134 -22
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +51 -328
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +19 -53
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +31 -40
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +22 -23
- package/dist/index79.js.map +1 -1
- package/dist/index80.js +319 -85
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +52 -126
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +39 -160
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +23 -65
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +95 -35
- package/dist/index84.js.map +1 -1
- package/dist/index85.js +126 -230
- package/dist/index85.js.map +1 -1
- package/dist/index86.js +159 -32
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +60 -205
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +34 -212
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +229 -290
- package/dist/index89.js.map +1 -1
- package/dist/index90.js +32 -176
- package/dist/index90.js.map +1 -1
- package/dist/index91.js +199 -247
- package/dist/index91.js.map +1 -1
- package/dist/index92.js +211 -12
- package/dist/index92.js.map +1 -1
- package/dist/index93.js +290 -28
- package/dist/index93.js.map +1 -1
- package/dist/index94.js +177 -5
- package/dist/index94.js.map +1 -1
- package/dist/index95.js +257 -13
- package/dist/index95.js.map +1 -1
- package/dist/index96.js +13 -45
- package/dist/index96.js.map +1 -1
- package/dist/index97.js +32 -12
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +5 -14
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +13 -7
- package/dist/index99.js.map +1 -1
- package/package.json +2 -1
- package/dist/index108.js +0 -155
- package/dist/index108.js.map +0 -1
package/dist/index10.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index10.js","sources":["../src/components/Checkbox.tsx"],"sourcesContent":["import React, { forwardRef, createContext, useContext } from 'react'\n\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\n children?: React.ReactNode\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n color?: 'primary' | 'secondary' | 'accent' | 'neutral' | 'success' | 'warning' | 'info' | 'error'\n indeterminate?: boolean\n className?: string\n}\n\nexport interface CheckboxOptionType {\n label: React.ReactNode\n value: string | number\n disabled?: boolean\n}\n\nexport interface CheckboxGroupProps {\n children?: React.ReactNode\n value?: (string | number)[]\n defaultValue?: (string | number)[]\n onChange?: (values: (string | number)[]) => void\n disabled?: boolean\n options?: (string | number | CheckboxOptionType)[]\n className?: string\n}\n\ninterface CheckboxGroupContextValue {\n value?: (string | number)[]\n onChange?: (checkedValue: string | number, checked: boolean) => void\n disabled?: boolean\n}\n\nconst CheckboxGroupContext = createContext<CheckboxGroupContextValue | null>(null)\n\nfunction CheckboxGroup({\n children,\n value,\n defaultValue,\n onChange,\n disabled = false,\n options,\n className = ''\n}: CheckboxGroupProps) {\n const [internalValue, setInternalValue] = React.useState<(string | number)[]>(defaultValue || [])\n const currentValue = value !== undefined ? value : internalValue\n\n const handleChange = (checkedValue: string | number, checked: boolean) => {\n const newValue = checked\n ? [...currentValue, checkedValue]\n : currentValue.filter((v) => v !== checkedValue)\n\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n }\n\n const contextValue: CheckboxGroupContextValue = {\n value: currentValue,\n onChange: handleChange,\n disabled,\n }\n\n // If options are provided, render checkboxes automatically\n if (options) {\n return (\n <CheckboxGroupContext.Provider value={contextValue}>\n <div className={className}>\n {options.map((option) => {\n if (typeof option === 'string' || typeof option === 'number') {\n return (\n <label key={option} className=\"label cursor-pointer justify-start gap-2\">\n <CheckboxRoot value={option} />\n <span className=\"label-text\">{option}</span>\n </label>\n )\n } else {\n return (\n <label key={option.value} className=\"label cursor-pointer justify-start gap-2\">\n <CheckboxRoot value={option.value} disabled={option.disabled} />\n <span className=\"label-text\">{option.label}</span>\n </label>\n )\n }\n })}\n </div>\n </CheckboxGroupContext.Provider>\n )\n }\n\n return (\n <CheckboxGroupContext.Provider value={contextValue}>\n <div className={className}>{children}</div>\n </CheckboxGroupContext.Provider>\n )\n}\n\nconst CheckboxRoot = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n children,\n size,\n color,\n indeterminate = false,\n className = '',\n value,\n checked,\n onChange,\n disabled: disabledProp,\n ...props\n },\n ref\n ) => {\n const groupContext = useContext(CheckboxGroupContext)\n\n const sizeClasses = {\n xs: 'checkbox-xs',\n sm: 'checkbox-sm',\n md: 'checkbox-md',\n lg: 'checkbox-lg',\n xl: 'checkbox-xl',\n }\n\n const colorClasses = {\n primary: 'checkbox-primary',\n secondary: 'checkbox-secondary',\n accent: 'checkbox-accent',\n neutral: 'checkbox-neutral',\n success: 'checkbox-success',\n warning: 'checkbox-warning',\n info: 'checkbox-info',\n error: 'checkbox-error',\n }\n\n const checkboxClasses = [\n 'checkbox',\n size && sizeClasses[size],\n color && colorClasses[color],\n ]\n .filter(Boolean)\n .join(' ')\n\n // If in a group, use group's value to determine checked state\n const isChecked = groupContext && value !== undefined && (typeof value === 'string' || typeof value === 'number')\n ? groupContext.value?.includes(value) ?? false\n : checked\n\n const isDisabled = groupContext?.disabled || disabledProp\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (groupContext && value !== undefined && (typeof value === 'string' || typeof value === 'number')) {\n groupContext.onChange?.(value, e.target.checked)\n }\n onChange?.(e)\n }\n\n // Handle indeterminate state\n const checkboxRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n if (node) {\n node.indeterminate = indeterminate\n }\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n },\n [indeterminate, ref]\n )\n\n const dataState = indeterminate ? 'indeterminate' : isChecked ? 'checked' : 'unchecked'\n\n const checkboxInput = (\n <input\n ref={checkboxRef}\n type=\"checkbox\"\n className={checkboxClasses}\n value={value}\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n data-state={dataState}\n {...props}\n />\n )\n\n // If children provided, wrap in label\n if (children) {\n return (\n <label className={`label cursor-pointer justify-start gap-2 ${className}`}>\n {checkboxInput}\n <span className=\"label-text\">{children}</span>\n </label>\n )\n }\n\n return checkboxInput\n }\n)\n\nCheckboxRoot.displayName = 'Checkbox'\n\nexport const Checkbox = Object.assign(CheckboxRoot, {\n Group: CheckboxGroup,\n})\n"],"names":["CheckboxGroupContext","createContext","CheckboxGroup","children","value","defaultValue","onChange","disabled","options","className","internalValue","setInternalValue","React","currentValue","contextValue","checkedValue","checked","newValue","v","jsx","option","jsxs","CheckboxRoot","forwardRef","size","color","indeterminate","disabledProp","props","ref","groupContext","useContext","sizeClasses","colorClasses","checkboxClasses","isChecked","isDisabled","handleChange","e","checkboxRef","node","checkboxInput","Checkbox"],"mappings":";;AAgCA,MAAMA,IAAuBC,EAAgD,IAAI;AAEjF,SAASC,EAAc;AAAA,EACrB,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,SAAAC;AAAA,EACA,WAAAC,IAAY;AACd,GAAuB;AACrB,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAAM,SAA8BP,KAAgB,EAAE,GAC1FQ,IAAeT,MAAU,SAAYA,IAAQM,GAa7CI,IAA0C;AAAA,IAC9C,OAAOD;AAAA,IACP,UAbmB,CAACE,GAA+BC,MAAqB;AACxE,YAAMC,IAAWD,IACb,CAAC,GAAGH,GAAcE,CAAY,IAC9BF,EAAa,OAAO,CAACK,MAAMA,MAAMH,CAAY;AAEjD,MAAIX,MAAU,UACZO,EAAiBM,CAAQ,GAE3BX,IAAWW,CAAQ;AAAA,IACrB;AAAA,IAKE,UAAAV;AAAA,EAAA;AAIF,SAAIC,IAEA,gBAAAW,EAACnB,EAAqB,UAArB,EAA8B,OAAOc,GACpC,UAAA,gBAAAK,EAAC,OAAA,EAAI,WAAAV,GACF,UAAAD,EAAQ,IAAI,CAACY,MACR,OAAOA,KAAW,YAAY,OAAOA,KAAW,WAEhD,gBAAAC,EAAC,SAAA,EAAmB,WAAU,4CAC5B,UAAA;AAAA,IAAA,gBAAAF,EAACG,GAAA,EAAa,OAAOF,EAAA,CAAQ;AAAA,IAC7B,gBAAAD,EAAC,QAAA,EAAK,WAAU,cAAc,UAAAC,EAAA,CAAO;AAAA,EAAA,EAAA,GAF3BA,CAGZ,IAIA,gBAAAC,EAAC,SAAA,EAAyB,WAAU,4CAClC,UAAA;AAAA,IAAA,gBAAAF,EAACG,KAAa,OAAOF,EAAO,OAAO,UAAUA,EAAO,UAAU;AAAA,IAC9D,gBAAAD,EAAC,QAAA,EAAK,WAAU,cAAc,YAAO,MAAA,CAAM;AAAA,EAAA,EAAA,GAFjCC,EAAO,KAGnB,CAGL,GACH,GACF,IAKF,gBAAAD,EAACnB,EAAqB,UAArB,EAA8B,OAAOc,GACpC,UAAA,gBAAAK,EAAC,OAAA,EAAI,WAAAV,GAAuB,UAAAN,EAAA,CAAS,EAAA,CACvC;AAEJ;AAEA,MAAMmB,IAAeC;AAAA,EACnB,CACE;AAAA,IACE,UAAApB;AAAA,IACA,MAAAqB;AAAA,IACA,OAAAC;AAAA,IACA,eAAAC,IAAgB;AAAA,IAChB,WAAAjB,IAAY;AAAA,IACZ,OAAAL;AAAA,IACA,SAAAY;AAAA,IACA,UAAAV;AAAA,IACA,UAAUqB;AAAA,IACV,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAeC,EAAW/B,CAAoB,GAE9CgC,IAAc;AAAA,MAClB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,GAGAC,IAAe;AAAA,MACnB,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,IAAA,GAGHC,IAAkB;AAAA,MACtB;AAAA,MACAV,KAAQQ,EAAYR,CAAI;AAAA,MACxBC,KAASQ,EAAaR,CAAK;AAAA,IAAA,EAE1B,OAAO,OAAO,EACd,KAAK,GAAG,GAGLU,IAAYL,KAAgB1B,MAAU,WAAc,OAAOA,KAAU,YAAY,OAAOA,KAAU,YACpG0B,EAAa,OAAO,SAAS1B,CAAK,KAAK,KACvCY,GAEEoB,IAAaN,GAAc,YAAYH,GAEvCU,IAAe,CAACC,MAA2C;AAC/D,MAAIR,KAAgB1B,MAAU,WAAc,OAAOA,KAAU,YAAY,OAAOA,KAAU,aACxF0B,EAAa,WAAW1B,GAAOkC,EAAE,OAAO,OAAO,GAEjDhC,IAAWgC,CAAC;AAAA,IACd,GAGMC,IAAc3B,EAAM;AAAA,MACxB,CAAC4B,MAAkC;AACjC,QAAIA,MACFA,EAAK,gBAAgBd,IAEnB,OAAOG,KAAQ,aACjBA,EAAIW,CAAI,IACCX,MACTA,EAAI,UAAUW;AAAA,MAElB;AAAA,MACA,CAACd,GAAeG,CAAG;AAAA,IAAA,GAKfY,IACJ,gBAAAtB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKoB;AAAA,QACL,MAAK;AAAA,QACL,WAAWL;AAAA,QACX,OAAA9B;AAAA,QACA,SAAS+B;AAAA,QACT,UAAUE;AAAA,QACV,UAAUD;AAAA,QACV,cAXcV,IAAgB,kBAAkBS,IAAY,YAAY;AAAA,QAYvE,GAAGP;AAAA,MAAA;AAAA,IAAA;AAKR,WAAIzB,IAEA,gBAAAkB,EAAC,SAAA,EAAM,WAAW,4CAA4CZ,CAAS,IACpE,UAAA;AAAA,MAAAgC;AAAA,MACD,gBAAAtB,EAAC,QAAA,EAAK,WAAU,cAAc,UAAAhB,EAAA,CAAS;AAAA,IAAA,GACzC,IAIGsC;AAAA,EACT;AACF;AAEAnB,EAAa,cAAc;AAEpB,MAAMoB,IAAW,OAAO,OAAOpB,GAAc;AAAA,EAClD,OAAOpB;AACT,CAAC;"}
|
|
1
|
+
{"version":3,"file":"index10.js","sources":["../src/components/Checkbox.tsx"],"sourcesContent":["import React, { forwardRef, createContext, useContext } from 'react'\n\nexport interface CheckboxSwapConfig {\n /** Content shown when checked */\n on: React.ReactNode\n /** Content shown when unchecked */\n off: React.ReactNode\n /** Animation effect for the swap transition */\n effect?: 'rotate' | 'flip'\n}\n\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\n children?: React.ReactNode\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n color?: 'primary' | 'secondary' | 'accent' | 'neutral' | 'success' | 'warning' | 'info' | 'error'\n indeterminate?: boolean\n /** Swap mode: toggle between two visual states instead of showing a checkbox */\n swap?: CheckboxSwapConfig\n className?: string\n}\n\nexport interface CheckboxOptionType {\n label: React.ReactNode\n value: string | number\n disabled?: boolean\n}\n\nexport interface CheckboxGroupProps {\n children?: React.ReactNode\n value?: (string | number)[]\n defaultValue?: (string | number)[]\n onChange?: (values: (string | number)[]) => void\n disabled?: boolean\n options?: (string | number | CheckboxOptionType)[]\n className?: string\n}\n\ninterface CheckboxGroupContextValue {\n value?: (string | number)[]\n onChange?: (checkedValue: string | number, checked: boolean) => void\n disabled?: boolean\n}\n\nconst CheckboxGroupContext = createContext<CheckboxGroupContextValue | null>(null)\n\nfunction CheckboxGroup({\n children,\n value,\n defaultValue,\n onChange,\n disabled = false,\n options,\n className = ''\n}: CheckboxGroupProps) {\n const [internalValue, setInternalValue] = React.useState<(string | number)[]>(defaultValue || [])\n const currentValue = value !== undefined ? value : internalValue\n\n const handleChange = (checkedValue: string | number, checked: boolean) => {\n const newValue = checked\n ? [...currentValue, checkedValue]\n : currentValue.filter((v) => v !== checkedValue)\n\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n }\n\n const contextValue: CheckboxGroupContextValue = {\n value: currentValue,\n onChange: handleChange,\n disabled,\n }\n\n // If options are provided, render checkboxes automatically\n if (options) {\n return (\n <CheckboxGroupContext.Provider value={contextValue}>\n <div className={className}>\n {options.map((option) => {\n if (typeof option === 'string' || typeof option === 'number') {\n return (\n <label key={option} className=\"label cursor-pointer justify-start gap-2\">\n <CheckboxRoot value={option} />\n <span className=\"label-text\">{option}</span>\n </label>\n )\n } else {\n return (\n <label key={option.value} className=\"label cursor-pointer justify-start gap-2\">\n <CheckboxRoot value={option.value} disabled={option.disabled} />\n <span className=\"label-text\">{option.label}</span>\n </label>\n )\n }\n })}\n </div>\n </CheckboxGroupContext.Provider>\n )\n }\n\n return (\n <CheckboxGroupContext.Provider value={contextValue}>\n <div className={className}>{children}</div>\n </CheckboxGroupContext.Provider>\n )\n}\n\nconst CheckboxRoot = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n children,\n size,\n color,\n indeterminate = false,\n swap,\n className = '',\n value,\n checked,\n onChange,\n disabled: disabledProp,\n ...props\n },\n ref\n ) => {\n const groupContext = useContext(CheckboxGroupContext)\n\n const sizeClasses = {\n xs: 'checkbox-xs',\n sm: 'checkbox-sm',\n md: 'checkbox-md',\n lg: 'checkbox-lg',\n xl: 'checkbox-xl',\n }\n\n const colorClasses = {\n primary: 'checkbox-primary',\n secondary: 'checkbox-secondary',\n accent: 'checkbox-accent',\n neutral: 'checkbox-neutral',\n success: 'checkbox-success',\n warning: 'checkbox-warning',\n info: 'checkbox-info',\n error: 'checkbox-error',\n }\n\n const checkboxClasses = [\n 'checkbox',\n size && sizeClasses[size],\n color && colorClasses[color],\n ]\n .filter(Boolean)\n .join(' ')\n\n // If in a group, use group's value to determine checked state\n const isChecked = groupContext && value !== undefined && (typeof value === 'string' || typeof value === 'number')\n ? groupContext.value?.includes(value) ?? false\n : checked\n\n const isDisabled = groupContext?.disabled || disabledProp\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (groupContext && value !== undefined && (typeof value === 'string' || typeof value === 'number')) {\n groupContext.onChange?.(value, e.target.checked)\n }\n onChange?.(e)\n }\n\n // Handle indeterminate state\n const checkboxRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n if (node) {\n node.indeterminate = indeterminate\n }\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n },\n [indeterminate, ref]\n )\n\n const dataState = indeterminate ? 'indeterminate' : isChecked ? 'checked' : 'unchecked'\n\n // Swap mode: render as a swap toggle instead of checkbox\n if (swap) {\n const swapClasses = [\n 'swap',\n swap.effect === 'rotate' && 'swap-rotate',\n swap.effect === 'flip' && 'swap-flip',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <label className={swapClasses}>\n <input\n ref={ref}\n type=\"checkbox\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n data-state={dataState}\n {...props}\n />\n <div className=\"swap-on\">{swap.on}</div>\n <div className=\"swap-off\">{swap.off}</div>\n </label>\n )\n }\n\n const checkboxInput = (\n <input\n ref={checkboxRef}\n type=\"checkbox\"\n className={checkboxClasses}\n value={value}\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n data-state={dataState}\n {...props}\n />\n )\n\n // If children provided, wrap in label\n if (children) {\n return (\n <label className={`label cursor-pointer justify-start gap-2 ${className}`}>\n {checkboxInput}\n <span className=\"label-text\">{children}</span>\n </label>\n )\n }\n\n return checkboxInput\n }\n)\n\nCheckboxRoot.displayName = 'Checkbox'\n\nexport const Checkbox = Object.assign(CheckboxRoot, {\n Group: CheckboxGroup,\n})\n"],"names":["CheckboxGroupContext","createContext","CheckboxGroup","children","value","defaultValue","onChange","disabled","options","className","internalValue","setInternalValue","React","currentValue","contextValue","checkedValue","checked","newValue","v","jsx","option","jsxs","CheckboxRoot","forwardRef","size","color","indeterminate","swap","disabledProp","props","ref","groupContext","useContext","sizeClasses","colorClasses","checkboxClasses","isChecked","isDisabled","handleChange","e","checkboxRef","node","dataState","swapClasses","checkboxInput","Checkbox"],"mappings":"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"}
|
package/dist/index100.js
CHANGED
|
@@ -1,16 +1,49 @@
|
|
|
1
|
-
import { useState as u,
|
|
2
|
-
function
|
|
3
|
-
const [
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { useState as u, useCallback as c, useEffect as f } from "react";
|
|
2
|
+
function S(o, t) {
|
|
3
|
+
const [s, n] = u(() => {
|
|
4
|
+
if (typeof window > "u")
|
|
5
|
+
return t;
|
|
6
|
+
try {
|
|
7
|
+
const e = window.localStorage.getItem(o);
|
|
8
|
+
return e ? JSON.parse(e) : t;
|
|
9
|
+
} catch {
|
|
10
|
+
return t;
|
|
11
|
+
}
|
|
12
|
+
}), d = c(
|
|
13
|
+
(e) => {
|
|
14
|
+
n((r) => {
|
|
15
|
+
const a = e instanceof Function ? e(r) : e;
|
|
16
|
+
if (typeof window < "u")
|
|
17
|
+
try {
|
|
18
|
+
window.localStorage.setItem(o, JSON.stringify(a));
|
|
19
|
+
} catch (l) {
|
|
20
|
+
console.warn(`Failed to save to localStorage key "${o}":`, l);
|
|
21
|
+
}
|
|
22
|
+
return a;
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
[o]
|
|
26
|
+
), w = c(() => {
|
|
27
|
+
if (typeof window < "u")
|
|
28
|
+
try {
|
|
29
|
+
window.localStorage.removeItem(o);
|
|
30
|
+
} catch (e) {
|
|
31
|
+
console.warn(`Failed to remove localStorage key "${o}":`, e);
|
|
32
|
+
}
|
|
33
|
+
n(t);
|
|
34
|
+
}, [o, t]);
|
|
35
|
+
return f(() => {
|
|
36
|
+
const e = (r) => {
|
|
37
|
+
if (r.key === o && r.newValue !== null)
|
|
38
|
+
try {
|
|
39
|
+
n(JSON.parse(r.newValue));
|
|
40
|
+
} catch {
|
|
41
|
+
}
|
|
10
42
|
};
|
|
11
|
-
|
|
43
|
+
return window.addEventListener("storage", e), () => window.removeEventListener("storage", e);
|
|
44
|
+
}, [o]), [s, d, w];
|
|
12
45
|
}
|
|
13
46
|
export {
|
|
14
|
-
|
|
47
|
+
S as useLocalStorage
|
|
15
48
|
};
|
|
16
49
|
//# sourceMappingURL=index100.js.map
|
package/dist/index100.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index100.js","sources":["../src/hooks/
|
|
1
|
+
{"version":3,"file":"index100.js","sources":["../src/hooks/useLocalStorage.ts"],"sourcesContent":["import { useState, useCallback, useEffect } from 'react'\n\n/**\n * Hook for persisting state to localStorage.\n *\n * @param key - localStorage key\n * @param initialValue - Initial value if key doesn't exist\n * @returns [value, setValue, removeValue] tuple\n *\n * @example\n * const [theme, setTheme] = useLocalStorage('theme', 'light')\n * const [user, setUser, removeUser] = useLocalStorage('user', null)\n */\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T\n): [T, (value: T | ((prev: T) => T)) => void, () => void] {\n // Get initial value from localStorage or use default\n const [storedValue, setStoredValue] = useState<T>(() => {\n if (typeof window === 'undefined') {\n return initialValue\n }\n\n try {\n const item = window.localStorage.getItem(key)\n return item ? (JSON.parse(item) as T) : initialValue\n } catch {\n return initialValue\n }\n })\n\n // Update localStorage when value changes\n const setValue = useCallback(\n (value: T | ((prev: T) => T)) => {\n setStoredValue(prev => {\n const valueToStore = value instanceof Function ? value(prev) : value\n\n if (typeof window !== 'undefined') {\n try {\n window.localStorage.setItem(key, JSON.stringify(valueToStore))\n } catch (error) {\n console.warn(`Failed to save to localStorage key \"${key}\":`, error)\n }\n }\n\n return valueToStore\n })\n },\n [key]\n )\n\n // Remove from localStorage\n const removeValue = useCallback(() => {\n if (typeof window !== 'undefined') {\n try {\n window.localStorage.removeItem(key)\n } catch (error) {\n console.warn(`Failed to remove localStorage key \"${key}\":`, error)\n }\n }\n setStoredValue(initialValue)\n }, [key, initialValue])\n\n // Sync with other tabs/windows\n useEffect(() => {\n const handleStorageChange = (e: StorageEvent) => {\n if (e.key === key && e.newValue !== null) {\n try {\n setStoredValue(JSON.parse(e.newValue) as T)\n } catch {\n // Ignore parse errors\n }\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n return () => window.removeEventListener('storage', handleStorageChange)\n }, [key])\n\n return [storedValue, setValue, removeValue]\n}\n"],"names":["useLocalStorage","key","initialValue","storedValue","setStoredValue","useState","item","setValue","useCallback","value","prev","valueToStore","error","removeValue","useEffect","handleStorageChange","e"],"mappings":";AAaO,SAASA,EACdC,GACAC,GACwD;AAExD,QAAM,CAACC,GAAaC,CAAc,IAAIC,EAAY,MAAM;AACtD,QAAI,OAAO,SAAW;AACpB,aAAOH;AAGT,QAAI;AACF,YAAMI,IAAO,OAAO,aAAa,QAAQL,CAAG;AAC5C,aAAOK,IAAQ,KAAK,MAAMA,CAAI,IAAUJ;AAAA,IAC1C,QAAQ;AACN,aAAOA;AAAA,IACT;AAAA,EACF,CAAC,GAGKK,IAAWC;AAAA,IACf,CAACC,MAAgC;AAC/B,MAAAL,EAAe,CAAAM,MAAQ;AACrB,cAAMC,IAAeF,aAAiB,WAAWA,EAAMC,CAAI,IAAID;AAE/D,YAAI,OAAO,SAAW;AACpB,cAAI;AACF,mBAAO,aAAa,QAAQR,GAAK,KAAK,UAAUU,CAAY,CAAC;AAAA,UAC/D,SAASC,GAAO;AACd,oBAAQ,KAAK,uCAAuCX,CAAG,MAAMW,CAAK;AAAA,UACpE;AAGF,eAAOD;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAACV,CAAG;AAAA,EAAA,GAIAY,IAAcL,EAAY,MAAM;AACpC,QAAI,OAAO,SAAW;AACpB,UAAI;AACF,eAAO,aAAa,WAAWP,CAAG;AAAA,MACpC,SAASW,GAAO;AACd,gBAAQ,KAAK,sCAAsCX,CAAG,MAAMW,CAAK;AAAA,MACnE;AAEF,IAAAR,EAAeF,CAAY;AAAA,EAC7B,GAAG,CAACD,GAAKC,CAAY,CAAC;AAGtB,SAAAY,EAAU,MAAM;AACd,UAAMC,IAAsB,CAACC,MAAoB;AAC/C,UAAIA,EAAE,QAAQf,KAAOe,EAAE,aAAa;AAClC,YAAI;AACF,UAAAZ,EAAe,KAAK,MAAMY,EAAE,QAAQ,CAAM;AAAA,QAC5C,QAAQ;AAAA,QAER;AAAA,IAEJ;AAEA,kBAAO,iBAAiB,WAAWD,CAAmB,GAC/C,MAAM,OAAO,oBAAoB,WAAWA,CAAmB;AAAA,EACxE,GAAG,CAACd,CAAG,CAAC,GAED,CAACE,GAAaI,GAAUM,CAAW;AAC5C;"}
|
package/dist/index101.js
CHANGED
|
@@ -1,34 +1,16 @@
|
|
|
1
|
-
import { useState as
|
|
2
|
-
function
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
e.key === n && d(!1);
|
|
11
|
-
},
|
|
12
|
-
[n]
|
|
13
|
-
);
|
|
14
|
-
return l(() => {
|
|
15
|
-
const e = u ?? window;
|
|
16
|
-
return o === "keydown" ? (e.addEventListener("keydown", t), e.addEventListener("keyup", s)) : e.addEventListener("keyup", t), () => {
|
|
17
|
-
e.removeEventListener("keydown", t), e.removeEventListener("keyup", s);
|
|
1
|
+
import { useState as r, useEffect as c } from "react";
|
|
2
|
+
function i(e, t = 300) {
|
|
3
|
+
const [o, u] = r(e);
|
|
4
|
+
return c(() => {
|
|
5
|
+
const n = setTimeout(() => {
|
|
6
|
+
u(e);
|
|
7
|
+
}, t);
|
|
8
|
+
return () => {
|
|
9
|
+
clearTimeout(n);
|
|
18
10
|
};
|
|
19
|
-
}, [
|
|
20
|
-
}
|
|
21
|
-
function y(n, f, u = {}) {
|
|
22
|
-
const { target: o, event: r = "keydown", preventDefault: a = !1 } = u;
|
|
23
|
-
l(() => {
|
|
24
|
-
const d = o ?? window, t = (s) => {
|
|
25
|
-
s.key === n && (a && s.preventDefault(), f(s));
|
|
26
|
-
};
|
|
27
|
-
return d.addEventListener(r, t), () => d.removeEventListener(r, t);
|
|
28
|
-
}, [o, n, f, r, a]);
|
|
11
|
+
}, [e, t]), o;
|
|
29
12
|
}
|
|
30
13
|
export {
|
|
31
|
-
|
|
32
|
-
y as useKeyPressCallback
|
|
14
|
+
i as useDebounce
|
|
33
15
|
};
|
|
34
16
|
//# sourceMappingURL=index101.js.map
|
package/dist/index101.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index101.js","sources":["../src/hooks/
|
|
1
|
+
{"version":3,"file":"index101.js","sources":["../src/hooks/useDebounce.ts"],"sourcesContent":["import { useState, useEffect } from 'react'\n\n/**\n * Hook that delays updating a value until after a specified delay.\n * Useful for search inputs to avoid excessive API calls.\n *\n * @param value - Value to debounce\n * @param delay - Delay in milliseconds (default: 300)\n * @returns Debounced value\n *\n * @example\n * const [search, setSearch] = useState('')\n * const debouncedSearch = useDebounce(search, 500)\n *\n * useEffect(() => {\n * // This runs 500ms after user stops typing\n * fetchResults(debouncedSearch)\n * }, [debouncedSearch])\n */\nexport function useDebounce<T>(value: T, delay = 300): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value)\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n\n return () => {\n clearTimeout(timer)\n }\n }, [value, delay])\n\n return debouncedValue\n}\n"],"names":["useDebounce","value","delay","debouncedValue","setDebouncedValue","useState","useEffect","timer"],"mappings":";AAmBO,SAASA,EAAeC,GAAUC,IAAQ,KAAQ;AACvD,QAAM,CAACC,GAAgBC,CAAiB,IAAIC,EAAYJ,CAAK;AAE7D,SAAAK,EAAU,MAAM;AACd,UAAMC,IAAQ,WAAW,MAAM;AAC7B,MAAAH,EAAkBH,CAAK;AAAA,IACzB,GAAGC,CAAK;AAER,WAAO,MAAM;AACX,mBAAaK,CAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAACN,GAAOC,CAAK,CAAC,GAEVC;AACT;"}
|
package/dist/index102.js
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
function
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const e = () => {
|
|
10
|
-
n({
|
|
11
|
-
width: window.innerWidth,
|
|
12
|
-
height: window.innerHeight
|
|
13
|
-
});
|
|
1
|
+
import { useRef as s, useEffect as c } from "react";
|
|
2
|
+
function m(t, n = !0) {
|
|
3
|
+
const r = s(null);
|
|
4
|
+
return c(() => {
|
|
5
|
+
if (!n) return;
|
|
6
|
+
const e = (o) => {
|
|
7
|
+
const u = r.current;
|
|
8
|
+
!u || u.contains(o.target) || t(o);
|
|
14
9
|
};
|
|
15
|
-
return
|
|
16
|
-
|
|
10
|
+
return document.addEventListener("mousedown", e), document.addEventListener("touchstart", e), () => {
|
|
11
|
+
document.removeEventListener("mousedown", e), document.removeEventListener("touchstart", e);
|
|
12
|
+
};
|
|
13
|
+
}, [t, n]), r;
|
|
17
14
|
}
|
|
18
15
|
export {
|
|
19
|
-
|
|
16
|
+
m as useClickOutside
|
|
20
17
|
};
|
|
21
18
|
//# sourceMappingURL=index102.js.map
|
package/dist/index102.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index102.js","sources":["../src/hooks/
|
|
1
|
+
{"version":3,"file":"index102.js","sources":["../src/hooks/useClickOutside.ts"],"sourcesContent":["import { useEffect, useRef, type RefObject } from 'react'\n\n/**\n * Hook that detects clicks outside of a referenced element.\n * Useful for closing dropdowns, modals, or menus.\n *\n * @param handler - Callback when click outside is detected\n * @param enabled - Whether the listener is active (default: true)\n * @returns Ref to attach to the element\n *\n * @example\n * const ref = useClickOutside(() => setIsOpen(false))\n *\n * <div ref={ref}>\n * <Dropdown>...</Dropdown>\n * </div>\n */\nexport function useClickOutside<T extends HTMLElement = HTMLElement>(\n handler: (event: MouseEvent | TouchEvent) => void,\n enabled = true\n): RefObject<T | null> {\n const ref = useRef<T>(null)\n\n useEffect(() => {\n if (!enabled) return\n\n const listener = (event: MouseEvent | TouchEvent) => {\n const el = ref.current\n if (!el || el.contains(event.target as Node)) {\n return\n }\n handler(event)\n }\n\n document.addEventListener('mousedown', listener)\n document.addEventListener('touchstart', listener)\n\n return () => {\n document.removeEventListener('mousedown', listener)\n document.removeEventListener('touchstart', listener)\n }\n }, [handler, enabled])\n\n return ref\n}\n"],"names":["useClickOutside","handler","enabled","ref","useRef","useEffect","listener","event","el"],"mappings":";AAiBO,SAASA,EACdC,GACAC,IAAU,IACW;AACrB,QAAMC,IAAMC,EAAU,IAAI;AAE1B,SAAAC,EAAU,MAAM;AACd,QAAI,CAACH,EAAS;AAEd,UAAMI,IAAW,CAACC,MAAmC;AACnD,YAAMC,IAAKL,EAAI;AACf,MAAI,CAACK,KAAMA,EAAG,SAASD,EAAM,MAAc,KAG3CN,EAAQM,CAAK;AAAA,IACf;AAEA,oBAAS,iBAAiB,aAAaD,CAAQ,GAC/C,SAAS,iBAAiB,cAAcA,CAAQ,GAEzC,MAAM;AACX,eAAS,oBAAoB,aAAaA,CAAQ,GAClD,SAAS,oBAAoB,cAAcA,CAAQ;AAAA,IACrD;AAAA,EACF,GAAG,CAACL,GAASC,CAAO,CAAC,GAEdC;AACT;"}
|