@agroshine/ags-web-ui-kit 1.0.0
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 +75 -0
- package/dist/atoms/index.cjs +134 -0
- package/dist/atoms/index.cjs.map +1 -0
- package/dist/atoms/index.d.cts +583 -0
- package/dist/atoms/index.d.ts +583 -0
- package/dist/atoms/index.js +9 -0
- package/dist/atoms/index.js.map +1 -0
- package/dist/chunk-2KRMLIJQ.cjs +52 -0
- package/dist/chunk-2KRMLIJQ.cjs.map +1 -0
- package/dist/chunk-2TBYPKQ3.cjs +79 -0
- package/dist/chunk-2TBYPKQ3.cjs.map +1 -0
- package/dist/chunk-5FWELSEZ.js +1296 -0
- package/dist/chunk-5FWELSEZ.js.map +1 -0
- package/dist/chunk-5PEOJVY7.cjs +1502 -0
- package/dist/chunk-5PEOJVY7.cjs.map +1 -0
- package/dist/chunk-6LUGTNMH.js +259 -0
- package/dist/chunk-6LUGTNMH.js.map +1 -0
- package/dist/chunk-6O2IDBTX.js +112 -0
- package/dist/chunk-6O2IDBTX.js.map +1 -0
- package/dist/chunk-6YUNWKT3.js +26 -0
- package/dist/chunk-6YUNWKT3.js.map +1 -0
- package/dist/chunk-7R6OXNES.cjs +321 -0
- package/dist/chunk-7R6OXNES.cjs.map +1 -0
- package/dist/chunk-A3A7PJWG.cjs +13 -0
- package/dist/chunk-A3A7PJWG.cjs.map +1 -0
- package/dist/chunk-A7TDGQAB.js +557 -0
- package/dist/chunk-A7TDGQAB.js.map +1 -0
- package/dist/chunk-C4LX3XTN.cjs +1187 -0
- package/dist/chunk-C4LX3XTN.cjs.map +1 -0
- package/dist/chunk-DZW4GS2T.cjs +1340 -0
- package/dist/chunk-DZW4GS2T.cjs.map +1 -0
- package/dist/chunk-E3BTK736.cjs +174 -0
- package/dist/chunk-E3BTK736.cjs.map +1 -0
- package/dist/chunk-ERGKCXM2.cjs +267 -0
- package/dist/chunk-ERGKCXM2.cjs.map +1 -0
- package/dist/chunk-FOA46NSG.cjs +574 -0
- package/dist/chunk-FOA46NSG.cjs.map +1 -0
- package/dist/chunk-JTFCE6RA.js +1156 -0
- package/dist/chunk-JTFCE6RA.js.map +1 -0
- package/dist/chunk-KINOE57L.js +225 -0
- package/dist/chunk-KINOE57L.js.map +1 -0
- package/dist/chunk-MOED3QPY.js +11 -0
- package/dist/chunk-MOED3QPY.js.map +1 -0
- package/dist/chunk-NVR34DY2.cjs +4 -0
- package/dist/chunk-NVR34DY2.cjs.map +1 -0
- package/dist/chunk-PI3IJWBG.js +79 -0
- package/dist/chunk-PI3IJWBG.js.map +1 -0
- package/dist/chunk-PXAMTGYY.js +3 -0
- package/dist/chunk-PXAMTGYY.js.map +1 -0
- package/dist/chunk-QAZMI5VH.js +151 -0
- package/dist/chunk-QAZMI5VH.js.map +1 -0
- package/dist/chunk-QEG27NX6.js +30 -0
- package/dist/chunk-QEG27NX6.js.map +1 -0
- package/dist/chunk-THTOUSMG.cjs +52 -0
- package/dist/chunk-THTOUSMG.cjs.map +1 -0
- package/dist/chunk-UAXKB6IH.cjs +32 -0
- package/dist/chunk-UAXKB6IH.cjs.map +1 -0
- package/dist/chunk-W5IHWAMM.js +48 -0
- package/dist/chunk-W5IHWAMM.js.map +1 -0
- package/dist/chunk-X2UJQVZJ.cjs +139 -0
- package/dist/chunk-X2UJQVZJ.cjs.map +1 -0
- package/dist/chunk-X43C5OJD.js +1460 -0
- package/dist/chunk-X43C5OJD.js.map +1 -0
- package/dist/chunk-XCYSBWV4.js +56 -0
- package/dist/chunk-XCYSBWV4.js.map +1 -0
- package/dist/chunk-XX4CBCEB.cjs +102 -0
- package/dist/chunk-XX4CBCEB.cjs.map +1 -0
- package/dist/hooks/index.cjs +33 -0
- package/dist/hooks/index.cjs.map +1 -0
- package/dist/hooks/index.d.cts +59 -0
- package/dist/hooks/index.d.ts +59 -0
- package/dist/hooks/index.js +4 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.cjs +366 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +13 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/interface-DnK5S6ww.d.cts +51 -0
- package/dist/interface-DnK5S6ww.d.ts +51 -0
- package/dist/lib/index.cjs +13 -0
- package/dist/lib/index.cjs.map +1 -0
- package/dist/lib/index.d.cts +5 -0
- package/dist/lib/index.d.ts +5 -0
- package/dist/lib/index.js +4 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/molecules/index.cjs +123 -0
- package/dist/molecules/index.cjs.map +1 -0
- package/dist/molecules/index.d.cts +449 -0
- package/dist/molecules/index.d.ts +449 -0
- package/dist/molecules/index.js +10 -0
- package/dist/molecules/index.js.map +1 -0
- package/dist/organisms/index.cjs +102 -0
- package/dist/organisms/index.cjs.map +1 -0
- package/dist/organisms/index.d.cts +396 -0
- package/dist/organisms/index.d.ts +396 -0
- package/dist/organisms/index.js +9 -0
- package/dist/organisms/index.js.map +1 -0
- package/dist/tooltip-Bl2ZTtfg.d.cts +16 -0
- package/dist/tooltip-Bl2ZTtfg.d.ts +16 -0
- package/dist/ui/index.cjs +955 -0
- package/dist/ui/index.cjs.map +1 -0
- package/dist/ui/index.d.cts +252 -0
- package/dist/ui/index.d.ts +252 -0
- package/dist/ui/index.js +642 -0
- package/dist/ui/index.js.map +1 -0
- package/package.json +200 -0
- package/tailwind.preset.cjs +134 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/atoms/Avatar/Avatar.variants.ts","../src/atoms/Avatar/Avatar.tsx","../src/atoms/Checkbox/Checkbox.tsx","../src/atoms/Descriptions/Descriptions.tsx","../src/atoms/Input/Input.tsx","../src/atoms/InputNumber/InputNumber.variants.ts","../src/atoms/InputNumber/InputNumber.tsx","../src/atoms/Progress/Progress.variants.ts","../src/atoms/Progress/Progress.tsx","../src/atoms/Radio/Radio.variants.ts","../src/atoms/Radio/Radio.tsx","../src/atoms/Rate/Rate.variants.ts","../src/atoms/Rate/Rate.tsx","../src/atoms/Select/utils.ts","../src/atoms/Select/Chip.tsx","../src/atoms/Select/EmptyState.tsx","../src/atoms/Select/OptionItem.tsx","../src/atoms/Select/MultiSelect.tsx","../src/atoms/Select/Select.tsx","../src/atoms/Separator/Separator.tsx","../src/atoms/Skeleton/Skeleton.tsx","../src/atoms/Slider/Slider.variants.ts","../src/atoms/Slider/Slider.tsx","../src/atoms/Switch/Switch.variants.ts","../src/atoms/Switch/Switch.tsx","../src/atoms/Tag/Tag.tsx","../src/atoms/Textarea/Textarea.tsx","../src/atoms/Toggle/Toggle.tsx","../src/atoms/ToggleGroup/ToggleGroup.tsx"],"names":["Avatar","React","Checkbox","jsxs","jsx","forwardRef","Descriptions","Input","messageColor","cva","React2","React3","React4","sizeClasses","X","useState","useRef","useImperativeHandle","useEffect","useMemo","ChevronDown","Separator","React6","Skeleton","React7","React8","React9","statusBorderClasses","Textarea","React10","mapSize","ToggleGroup","React11"],"mappings":"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","file":"chunk-X43C5OJD.js","sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport const avatarVariants = cva(\n 'relative flex shrink-0 overflow-hidden bg-default-200 text-default-700',\n {\n variants: {\n size: {\n sm: 'h-8 w-8 text-xs',\n md: 'h-10 w-10 text-sm',\n lg: 'h-12 w-12 text-base',\n xl: 'h-16 w-16 text-lg',\n },\n shape: {\n circle: 'rounded-full',\n square: 'rounded-md',\n },\n },\n defaultVariants: { size: 'md', shape: 'circle' },\n },\n);\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl';\nexport type AvatarShape = 'circle' | 'square';\n","import * as React from 'react';\n\nimport { cn } from '../../lib/cn';\nimport {\n Avatar as UIAvatar,\n AvatarFallback as UIAvatarFallback,\n AvatarImage as UIAvatarImage,\n} from '../../ui/avatar';\n\nimport { type AvatarShape, type AvatarSize, avatarVariants } from './Avatar.variants';\n\nexport interface AvatarProps {\n src?: string;\n alt?: string;\n fallback?: React.ReactNode;\n size?: AvatarSize;\n shape?: AvatarShape;\n className?: string;\n}\n\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n ({ src, alt, fallback, size = 'md', shape = 'circle', className }, ref) => (\n <UIAvatar ref={ref} className={cn(avatarVariants({ size, shape }), className)}>\n {src ? <UIAvatarImage src={src} alt={alt} /> : null}\n <UIAvatarFallback\n className={cn(\n 'flex h-full w-full items-center justify-center bg-default-200 text-default-700 font-medium',\n shape === 'circle' ? 'rounded-full' : 'rounded-md',\n )}\n >\n {fallback}\n </UIAvatarFallback>\n </UIAvatar>\n ),\n);\nAvatar.displayName = 'Avatar';\n","import * as React from 'react';\n\nimport { cn } from '../../lib/cn';\nimport { Checkbox as ShadCheckbox } from '../../ui/checkbox';\n\nexport interface CheckboxProps {\n isSelected?: boolean;\n defaultSelected?: boolean;\n isDisabled?: boolean;\n isIndeterminate?: boolean;\n isRequired?: boolean;\n onValueChange?: (selected: boolean) => void;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n children?: React.ReactNode;\n className?: string;\n classNames?: { base?: string; label?: string; wrapper?: string };\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\n size?: 'sm' | 'md' | 'lg';\n name?: string;\n value?: string;\n id?: string;\n}\n\nexport const Checkbox: React.FC<CheckboxProps> = ({\n isSelected,\n defaultSelected,\n isDisabled,\n isIndeterminate,\n onValueChange,\n children,\n className,\n classNames,\n name,\n value,\n id,\n}) => {\n const checkedProp =\n isIndeterminate === true ? 'indeterminate' : isSelected !== undefined ? isSelected : undefined;\n\n return (\n <label\n className={cn(\n 'inline-flex items-center gap-2 cursor-pointer select-none',\n isDisabled && 'cursor-not-allowed opacity-60',\n classNames?.base,\n className,\n )}\n >\n <ShadCheckbox\n id={id}\n name={name}\n value={value}\n disabled={isDisabled}\n defaultChecked={defaultSelected}\n checked={checkedProp as boolean | 'indeterminate' | undefined}\n onCheckedChange={(c) => onValueChange?.(Boolean(c))}\n className={classNames?.wrapper}\n />\n {children && <span className={cn('text-sm', classNames?.label)}>{children}</span>}\n </label>\n );\n};\n","import { forwardRef, Fragment, type ReactNode } from 'react';\n\nimport { cn } from '../../lib/cn';\n\nimport type { DescriptionsProps, Layout, Size } from './interface';\n\n/**\n * Canon Components.html § \"Descriptions\" L1844:\n *\n * .descs { display:grid; grid-template-columns:1fr; gap:0; }\n * .desc-row { display:grid; grid-template-columns:140px 1fr; padding:10px 0;\n * border-bottom:1px solid border; font-size:14px; }\n * .desc-row:last-child { border-bottom:0; }\n * .desc-row .dl { color:muted-foreground; font-size:13px; }\n * .desc-row .dv { color:foreground; font-weight:500; }\n */\n\nconst ROW_PADDING: Record<Size, string> = {\n small: 'py-1.5',\n default: 'py-2.5', // canon (10px)\n middle: 'py-2.5', // alias compat\n large: 'py-3.5',\n};\n\nconst LABEL_TEXT: Record<Size, string> = {\n small: 'text-[12px]',\n default: 'text-[13px]', // canon\n middle: 'text-[13px]',\n large: 'text-sm',\n};\n\nconst VALUE_TEXT: Record<Size, string> = {\n small: 'text-[13px]',\n default: 'text-sm', // canon (14px)\n middle: 'text-sm',\n large: 'text-base',\n};\n\ninterface DescRowProps {\n label: ReactNode;\n value: ReactNode;\n size: Size;\n layout: Layout;\n bordered: boolean;\n isLast: boolean;\n}\n\nfunction DescRow({ label, value, size, layout, bordered, isLast }: DescRowProps) {\n const rowBorder = bordered\n ? 'border-b border-border last:border-b-0'\n : cn('border-b border-border', isLast && 'border-b-0');\n\n if (layout === 'vertical') {\n return (\n <div className={cn(ROW_PADDING[size], rowBorder, bordered && 'px-3')}>\n <div className={cn('mb-1 font-normal text-muted-foreground', LABEL_TEXT[size])}>\n {label}\n </div>\n <div className={cn('font-medium text-foreground', VALUE_TEXT[size])}>{value}</div>\n </div>\n );\n }\n\n // horizontal canon: grid 140px / 1fr\n return (\n <div\n className={cn(\n 'grid grid-cols-[140px_1fr] items-baseline gap-3',\n ROW_PADDING[size],\n rowBorder,\n )}\n >\n <span\n className={cn(\n 'font-normal text-muted-foreground',\n LABEL_TEXT[size],\n bordered && '-my-2.5 bg-muted/40 px-3 py-2.5',\n )}\n >\n {label}\n </span>\n <span className={cn('font-medium text-foreground', VALUE_TEXT[size], bordered && 'pr-3')}>\n {value}\n </span>\n </div>\n );\n}\n\nexport const Descriptions = forwardRef<HTMLDivElement, DescriptionsProps>(function Descriptions(\n {\n title,\n column = 1,\n layout = 'horizontal',\n size = 'default',\n bordered = false,\n items,\n className,\n },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\n 'w-full',\n bordered && 'overflow-hidden rounded-md border border-border',\n className,\n )}\n >\n {title && (\n <div\n className={cn(\n 'mb-3 text-base font-semibold text-foreground',\n bordered && 'mb-0 border-b border-border bg-muted/40 px-3 py-2.5',\n )}\n >\n {title}\n </div>\n )}\n\n {/* column > 1 → grid externo de N columnas; cada celda renderiza un row K/V */}\n <div\n className={cn(column === 1 ? 'flex flex-col' : 'grid')}\n style={\n column > 1\n ? { gridTemplateColumns: `repeat(${column}, minmax(0, 1fr))`, columnGap: '24px' }\n : undefined\n }\n >\n {items.map((item, idx) => (\n <Fragment key={idx}>\n <DescRow\n label={item.label}\n value={item.children}\n size={size}\n layout={layout}\n bordered={bordered}\n isLast={idx === items.length - 1}\n />\n </Fragment>\n ))}\n </div>\n </div>\n );\n});\n\nDescriptions.displayName = 'Descriptions';\n","import { type ChangeEvent, forwardRef, useState } from 'react';\nimport { Eye, EyeOff, X } from 'lucide-react';\n\nimport { cn } from '../../lib/cn';\nimport { Input as UIInput } from '../../ui/input';\n\nimport { FormItem } from '../FormItem';\n\nimport type { InputProps } from './interface';\n\n/**\n * Input AgroShine · canon Components.html\n *\n * - Base: `ui/input` (shadcn) — height 36px, radius 4px, tokens semánticos.\n * - Extras: prefix/suffix posicionados (patrón `.input-wrap` + `.ifix`),\n * `allowClear`, `showPasswordToggle`, `status: error|success|warning|default`,\n * integración con `FormItem`.\n */\nconst sizeClasses = {\n small: 'h-7 text-[13px] px-2.5',\n default: 'h-9 text-sm px-3',\n large: 'h-10 text-[15px] px-4',\n} as const;\n\nconst statusBorderClasses = {\n error: 'border-destructive focus-visible:ring-destructive',\n success: 'border-success-500 focus-visible:ring-success-500',\n warning: 'border-warning-500 focus-visible:ring-warning-500',\n default: '',\n} as const;\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n variant = 'default',\n prefix,\n suffix,\n allowClear = false,\n status = 'default',\n showPasswordToggle = false,\n type = 'text',\n disabled,\n className,\n name,\n touched,\n error,\n externalLabel,\n help,\n errorMessage,\n onChange,\n value,\n defaultValue,\n ...rest\n },\n ref,\n) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const [showPassword, setShowPassword] = useState(false);\n const isPasswordType = type === 'password';\n const inputType =\n isPasswordType && showPasswordToggle ? (showPassword ? 'text' : 'password') : type;\n\n const showClearButton = allowClear && !disabled && Boolean(currentValue);\n const showPasswordButton = isPasswordType && showPasswordToggle && !disabled;\n const hasRightAffix = Boolean(suffix) || showClearButton || showPasswordButton;\n const hasLeftAffix = Boolean(prefix);\n\n const messageColor =\n status === 'error' ? 'text-destructive' : status === 'warning' ? 'text-warning-700' : '';\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) setInternalValue(e.target.value);\n onChange?.(e);\n };\n\n const handleClear = () => {\n if (!isControlled) setInternalValue('');\n onChange?.({ target: { value: '' } } as ChangeEvent<HTMLInputElement>);\n };\n\n return (\n <FormItem\n help={touched || error ? help : ''}\n validateStatus={touched && error ? 'error' : 'default'}\n label={externalLabel}\n >\n <div className={cn('relative w-full', className)}>\n {hasLeftAffix && (\n <span\n className=\"pointer-events-none absolute inset-y-0 left-0 flex items-center px-2.5 text-muted-foreground\"\n aria-hidden=\"true\"\n >\n {prefix}\n </span>\n )}\n\n <UIInput\n ref={ref}\n name={name}\n type={inputType}\n disabled={disabled}\n value={currentValue}\n onChange={handleChange}\n aria-invalid={status === 'error' || (touched && Boolean(error)) || undefined}\n className={cn(\n sizeClasses[variant],\n statusBorderClasses[status],\n hasLeftAffix && 'pl-9',\n hasRightAffix && 'pr-9',\n )}\n {...rest}\n />\n\n {hasRightAffix && (\n <span className=\"absolute inset-y-0 right-0 flex items-center gap-1 px-2.5 text-muted-foreground\">\n {showClearButton && (\n <button\n type=\"button\"\n onClick={handleClear}\n aria-label=\"Limpiar\"\n className=\"inline-flex items-center justify-center text-muted-foreground hover:text-foreground\"\n >\n <X className=\"h-3.5 w-3.5\" />\n </button>\n )}\n\n {showPasswordButton && (\n <button\n type=\"button\"\n onClick={() => setShowPassword((v) => !v)}\n aria-label={showPassword ? 'Ocultar contraseña' : 'Mostrar contraseña'}\n aria-pressed={showPassword}\n className=\"inline-flex items-center justify-center text-muted-foreground hover:text-foreground\"\n >\n {showPassword ? <EyeOff className=\"h-4 w-4\" /> : <Eye className=\"h-4 w-4\" />}\n </button>\n )}\n\n {suffix && (\n <span className=\"pointer-events-none flex items-center text-muted-foreground\">\n {suffix}\n </span>\n )}\n </span>\n )}\n </div>\n\n {errorMessage && (\n <p\n className={cn('mt-1 text-xs', messageColor)}\n role={status === 'error' ? 'alert' : undefined}\n >\n {errorMessage}\n </p>\n )}\n </FormItem>\n );\n});\n","import { cva } from 'class-variance-authority';\n\nexport const inputNumberRootVariants = cva(\n 'inline-flex items-center w-full rounded border bg-background text-default-900 transition-colors focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2 focus-within:ring-offset-background',\n {\n variants: {\n size: {\n sm: 'text-xs h-8',\n md: 'text-sm h-10',\n lg: 'text-base h-12',\n },\n disabled: {\n true: 'opacity-60 cursor-not-allowed bg-default-100',\n false: '',\n },\n },\n defaultVariants: { size: 'md', disabled: false },\n },\n);\n\nexport const inputNumberButtonVariants = cva(\n 'flex items-center justify-center text-default-700 hover:bg-default-100 disabled:opacity-40 disabled:cursor-not-allowed border-default-200',\n {\n variants: {\n size: {\n sm: 'w-7 h-full',\n md: 'w-8 h-full',\n lg: 'w-10 h-full',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nexport type InputNumberSize = 'sm' | 'md' | 'lg';\n","import * as React from 'react';\nimport { Minus, Plus } from 'lucide-react';\n\nimport { cn } from '../../lib/cn';\n\nimport {\n inputNumberButtonVariants,\n inputNumberRootVariants,\n type InputNumberSize,\n} from './InputNumber.variants';\n\nexport interface InputNumberProps {\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n size?: InputNumberSize;\n disabled?: boolean;\n precision?: number;\n placeholder?: string;\n name?: string;\n id?: string;\n className?: string;\n}\n\nfunction clamp(v: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, v));\n}\n\nfunction format(v: number, precision?: number): string {\n if (precision === undefined) return String(v);\n return v.toFixed(precision);\n}\n\nexport const InputNumber = React.forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n min = Number.NEGATIVE_INFINITY,\n max = Number.POSITIVE_INFINITY,\n step = 1,\n size = 'md',\n disabled,\n precision,\n placeholder,\n name,\n id,\n className,\n },\n ref,\n ) => {\n const [internal, setInternal] = React.useState<number | undefined>(defaultValue);\n const current = value ?? internal;\n\n const update = (next: number) => {\n const c = clamp(next, min, max);\n if (value === undefined) setInternal(c);\n onChange?.(c);\n };\n\n const increment = () => update((current ?? 0) + step);\n const decrement = () => update((current ?? 0) - step);\n\n const handleInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value;\n if (raw === '') {\n if (value === undefined) setInternal(undefined);\n return;\n }\n const num = Number(raw);\n if (Number.isNaN(num)) return;\n update(num);\n };\n\n const display = current === undefined ? '' : format(current, precision);\n\n return (\n <div className={cn(inputNumberRootVariants({ size, disabled: !!disabled }), className)}>\n <input\n ref={ref}\n id={id}\n name={name}\n type=\"number\"\n value={display}\n onChange={handleInput}\n disabled={disabled}\n placeholder={placeholder}\n className=\"flex-1 bg-transparent outline-none px-3 disabled:cursor-not-allowed [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none\"\n />\n <div className=\"flex flex-col h-full border-l border-default-200\">\n <button\n type=\"button\"\n onClick={increment}\n disabled={disabled || (current !== undefined && current >= max)}\n className={cn(inputNumberButtonVariants({ size }), 'border-b h-1/2')}\n tabIndex={-1}\n >\n <Plus className=\"h-3 w-3\" />\n </button>\n <button\n type=\"button\"\n onClick={decrement}\n disabled={disabled || (current !== undefined && current <= min)}\n className={cn(inputNumberButtonVariants({ size }), 'h-1/2')}\n tabIndex={-1}\n >\n <Minus className=\"h-3 w-3\" />\n </button>\n </div>\n </div>\n );\n },\n);\nInputNumber.displayName = 'InputNumber';\n","import { cva } from 'class-variance-authority';\n\nexport const progressTrackVariants = cva(\n 'relative w-full overflow-hidden rounded-full bg-default-200',\n {\n variants: {\n size: {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nexport const progressIndicatorVariants = cva('h-full flex-1 transition-all', {\n variants: {\n color: {\n primary: 'bg-primary',\n success: 'bg-success',\n warning: 'bg-warning',\n danger: 'bg-destructive',\n },\n },\n defaultVariants: { color: 'primary' },\n});\n\nexport type ProgressColor = 'primary' | 'success' | 'warning' | 'danger';\nexport type ProgressSize = 'sm' | 'md' | 'lg';\n","import * as React from 'react';\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\n\nimport { cn } from '../../lib/cn';\n\nimport {\n type ProgressColor,\n progressIndicatorVariants,\n type ProgressSize,\n progressTrackVariants,\n} from './Progress.variants';\n\nexport interface ProgressProps {\n value?: number;\n color?: ProgressColor;\n size?: ProgressSize;\n showLabel?: boolean;\n label?: React.ReactNode;\n className?: string;\n}\n\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n ({ value = 0, color = 'primary', size = 'md', showLabel, label, className }, ref) => {\n const clamped = Math.max(0, Math.min(100, value));\n return (\n <div ref={ref} className={cn('w-full', className)}>\n {(label !== undefined || showLabel) && (\n <div className=\"flex items-center justify-between text-xs text-default-500 mb-1\">\n {label !== undefined && <span>{label}</span>}\n {showLabel && <span className=\"ml-auto\">{clamped}%</span>}\n </div>\n )}\n <ProgressPrimitive.Root value={clamped} className={progressTrackVariants({ size })}>\n <ProgressPrimitive.Indicator\n className={progressIndicatorVariants({ color })}\n style={{ transform: `translateX(-${100 - clamped}%)` }}\n />\n </ProgressPrimitive.Root>\n </div>\n );\n },\n);\nProgress.displayName = 'Progress';\n","import { cva } from 'class-variance-authority';\n\nexport const radioItemVariants = cva(\n 'aspect-square h-4 w-4 rounded-full border ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n color: {\n primary: 'border-primary text-primary data-[state=checked]:border-primary',\n secondary: 'border-secondary text-secondary data-[state=checked]:border-secondary',\n success: 'border-success text-success data-[state=checked]:border-success',\n warning: 'border-warning text-warning data-[state=checked]:border-warning',\n danger: 'border-destructive text-destructive data-[state=checked]:border-destructive',\n },\n },\n defaultVariants: {\n color: 'primary',\n },\n },\n);\n\nexport type RadioColor = 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\n","import * as React from 'react';\n\nimport { cn } from '../../lib/cn';\nimport { RadioGroup, RadioGroupItem } from '../../ui/radio-group';\n\nimport { type RadioColor, radioItemVariants } from './Radio.variants';\n\nexport interface RadioOption {\n value: string;\n label: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface RadioProps {\n value?: string;\n defaultValue?: string;\n options: RadioOption[];\n onChange?: (value: string) => void;\n orientation?: 'horizontal' | 'vertical';\n color?: RadioColor;\n className?: string;\n name?: string;\n disabled?: boolean;\n}\n\nexport const Radio = React.forwardRef<HTMLDivElement, RadioProps>(\n (\n {\n value,\n defaultValue,\n options,\n onChange,\n orientation = 'vertical',\n color = 'primary',\n className,\n name,\n disabled,\n },\n ref,\n ) => (\n <RadioGroup\n ref={ref}\n value={value}\n defaultValue={defaultValue}\n onValueChange={onChange}\n name={name}\n disabled={disabled}\n className={cn(orientation === 'horizontal' ? 'flex flex-row gap-4' : 'grid gap-2', className)}\n >\n {options.map((opt) => (\n <label\n key={opt.value}\n className={cn(\n 'inline-flex items-center gap-2 text-sm cursor-pointer select-none',\n (opt.disabled || disabled) && 'cursor-not-allowed opacity-60',\n )}\n >\n <RadioGroupItem\n value={opt.value}\n disabled={opt.disabled || disabled}\n className={radioItemVariants({ color })}\n />\n <span>{opt.label}</span>\n </label>\n ))}\n </RadioGroup>\n ),\n);\nRadio.displayName = 'Radio';\n","import { cva } from 'class-variance-authority';\n\nexport const rateStarVariants = cva('transition-colors cursor-pointer', {\n variants: {\n size: {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-7 w-7',\n },\n active: {\n true: 'fill-warning text-warning',\n false: 'fill-transparent text-default-300',\n },\n disabled: {\n true: 'cursor-not-allowed',\n false: '',\n },\n },\n defaultVariants: { size: 'md', active: false, disabled: false },\n});\n\nexport type RateSize = 'sm' | 'md' | 'lg';\n","import * as React from 'react';\nimport { Star, StarHalf } from 'lucide-react';\n\nimport { cn } from '../../lib/cn';\n\nimport { type RateSize, rateStarVariants } from './Rate.variants';\n\nexport interface RateProps {\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n count?: number;\n allowHalf?: boolean;\n disabled?: boolean;\n size?: RateSize;\n className?: string;\n}\n\nexport const Rate = React.forwardRef<HTMLDivElement, RateProps>(\n (\n { value, defaultValue = 0, onChange, count = 5, allowHalf, disabled, size = 'md', className },\n ref,\n ) => {\n const [internal, setInternal] = React.useState<number>(defaultValue);\n const [hover, setHover] = React.useState<number | null>(null);\n const current = value ?? internal;\n const display = hover ?? current;\n\n const setValue = (next: number) => {\n if (disabled) return;\n if (value === undefined) setInternal(next);\n onChange?.(next);\n };\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>, index: number) => {\n if (!allowHalf) return setValue(index + 1);\n const rect = e.currentTarget.getBoundingClientRect();\n const isFirstHalf = e.clientX - rect.left < rect.width / 2;\n setValue(index + (isFirstHalf ? 0.5 : 1));\n };\n\n const handleHover = (e: React.MouseEvent<HTMLButtonElement>, index: number) => {\n if (disabled) return;\n if (!allowHalf) return setHover(index + 1);\n const rect = e.currentTarget.getBoundingClientRect();\n const isFirstHalf = e.clientX - rect.left < rect.width / 2;\n setHover(index + (isFirstHalf ? 0.5 : 1));\n };\n\n return (\n <div\n ref={ref}\n className={cn('inline-flex items-center gap-1', className)}\n onMouseLeave={() => setHover(null)}\n >\n {Array.from({ length: count }).map((_, i) => {\n const filled = display >= i + 1;\n const half = !filled && allowHalf && display >= i + 0.5;\n return (\n <button\n key={i}\n type=\"button\"\n disabled={disabled}\n onClick={(e) => handleClick(e, i)}\n onMouseMove={(e) => handleHover(e, i)}\n className={cn(\n 'p-0 bg-transparent border-0 leading-none',\n disabled && 'cursor-not-allowed',\n )}\n aria-label={`Rate ${i + 1}`}\n >\n {half ? (\n <StarHalf className={rateStarVariants({ size, active: true, disabled })} />\n ) : (\n <Star className={rateStarVariants({ size, active: filled, disabled })} />\n )}\n </button>\n );\n })}\n </div>\n );\n },\n);\nRate.displayName = 'Rate';\n","import type { ChipDotColor, SelectSize, SelectStatus } from './interface';\n\nexport const sizeClasses: Record<SelectSize, string> = {\n sm: 'h-8 text-[13.5px] pl-[11px] pr-8',\n default: 'h-10 text-sm pl-[14px] pr-9',\n lg: 'h-[46px] text-[15px] pl-4 pr-10',\n};\n\nexport const statusBorder: Record<SelectStatus, string> = {\n error: 'border-destructive focus:ring-destructive/30',\n warning: 'border-warning-500 focus:ring-warning-500/30',\n success: 'border-success-500 focus:ring-success-500/30',\n '': 'border-input hover:border-primary-200 focus:ring-ring/30',\n};\n\nexport const statusBorderWithin: Record<SelectStatus, string> = {\n error: 'border-destructive focus-within:ring-destructive/30',\n warning: 'border-warning-500 focus-within:ring-warning-500/30',\n success: 'border-success-500 focus-within:ring-success-500/30',\n '': 'border-input hover:border-primary-200 focus-within:ring-ring/30',\n};\n\nexport const messageColor: Record<SelectStatus, string> = {\n error: 'text-destructive',\n warning: 'text-warning-600',\n success: 'text-success-600',\n '': '',\n};\n\nexport const dotColorClass: Record<ChipDotColor, string> = {\n primary: 'bg-primary-700',\n success: 'bg-success-700',\n warning: 'bg-warning-800',\n danger: 'bg-danger-700',\n};\n\nexport const chipColorClass: Record<ChipDotColor, string> = {\n primary: 'bg-primary-50 text-primary-700 border-primary-100',\n success: 'bg-success-50 text-success-700 border-success-200',\n warning: 'bg-warning-50 text-warning-800 border-warning-100',\n danger: 'bg-danger-50 text-danger-700 border-danger-100',\n};\n\nexport const leadingIconBoxClass =\n 'flex h-[22px] w-[22px] flex-shrink-0 items-center justify-center rounded bg-primary-50 text-[11px] font-bold text-primary-700';\n\nexport const richIconBoxClass =\n 'flex h-[26px] w-[26px] flex-shrink-0 items-center justify-center rounded-md text-[11.5px] font-bold';\n\nexport const metaPillClass =\n 'ml-auto flex-shrink-0 rounded-full bg-muted px-2 py-0.5 font-mono text-[11.5px] text-muted-foreground';\n\nexport const dropdownClass =\n 'absolute left-0 right-0 top-[calc(100%+6px)] z-20 max-h-80 overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground';\n","import { X } from 'lucide-react';\n\nimport { cn } from '../../lib/cn';\n\nimport type { ChipDotColor, Option } from './interface';\nimport { chipColorClass, dotColorClass } from './utils';\n\ninterface ChipProps<V extends string | number> {\n option: Option<V>;\n disabled?: boolean;\n onRemove: (value: V) => void;\n}\n\nexport function Chip<V extends string | number>({ option, disabled, onRemove }: ChipProps<V>) {\n const dot: ChipDotColor = option.dotColor ?? 'primary';\n return (\n <span\n className={cn(\n 'inline-flex h-7 items-center gap-1.5 rounded-full border pl-2.5 pr-1.5 text-[13px] font-medium',\n chipColorClass[dot],\n )}\n >\n <span className={cn('h-1.5 w-1.5 rounded-full', dotColorClass[dot])} />\n <span className=\"truncate max-w-[180px]\">{option.label}</span>\n <button\n type=\"button\"\n aria-label=\"Quitar\"\n onClick={(e) => {\n e.stopPropagation();\n if (!disabled) onRemove(option.value);\n }}\n className=\"ml-0.5 inline-flex h-4 w-4 items-center justify-center rounded-full opacity-70 transition hover:bg-black/10 hover:opacity-100\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </span>\n );\n}\n","import { Inbox } from 'lucide-react';\n\ninterface EmptyStateProps {\n title?: string;\n subtitle?: string;\n}\n\nexport function EmptyState({\n title = 'Sin resultados',\n subtitle = 'Prueba otro término de búsqueda',\n}: EmptyStateProps) {\n return (\n <div className=\"px-3 py-7 text-center\">\n <Inbox className=\"mx-auto mb-1.5 h-7 w-7 text-muted-foreground/40\" />\n <div className=\"text-[13.5px] font-medium text-foreground\">{title}</div>\n {subtitle && <div className=\"mt-0.5 text-xs text-muted-foreground\">{subtitle}</div>}\n </div>\n );\n}\n","import { Check } from 'lucide-react';\n\nimport { cn } from '../../lib/cn';\n\nimport type { ChipDotColor, Option } from './interface';\nimport { dotColorClass, leadingIconBoxClass, metaPillClass, richIconBoxClass } from './utils';\n\ninterface OptionItemProps<V extends string | number> {\n option: Option<V>;\n isActive: boolean;\n isHighlighted?: boolean;\n variant?: 'select' | 'multiselect';\n onMouseEnter?: () => void;\n onClick: () => void;\n}\n\nexport function OptionItem<V extends string | number>({\n option,\n isActive,\n isHighlighted = false,\n variant = 'select',\n onMouseEnter,\n onClick,\n}: OptionItemProps<V>) {\n const dot: ChipDotColor = option.dotColor ?? 'primary';\n\n return (\n <li\n role=\"option\"\n aria-selected={isActive}\n onMouseEnter={onMouseEnter}\n onClick={onClick}\n className={cn(\n 'flex cursor-pointer items-center gap-2.5 rounded-sm px-2.5 py-2 text-sm text-foreground',\n variant === 'multiselect' && 'hover:bg-accent',\n isHighlighted && 'bg-accent',\n isActive &&\n (variant === 'select'\n ? 'bg-primary-50 font-semibold text-primary-700'\n : 'bg-primary-50 font-medium text-primary-700'),\n option.disabled && 'cursor-not-allowed text-muted-foreground opacity-60',\n )}\n >\n {option.leadingIcon ? (\n variant === 'select' ? (\n <span\n className={cn(\n richIconBoxClass,\n isActive\n ? 'bg-primary-700 text-white'\n : 'bg-gradient-to-br from-primary-50 to-primary-100 text-primary-700',\n )}\n >\n {option.leadingIcon}\n </span>\n ) : (\n <span className={leadingIconBoxClass}>{option.leadingIcon}</span>\n )\n ) : option.dotColor && variant === 'multiselect' ? (\n <span className={cn('h-2 w-2 rounded-full', dotColorClass[dot])} />\n ) : null}\n <span className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n <span className=\"truncate text-sm font-medium\">{option.label}</span>\n {option.description && (\n <span className=\"truncate text-xs font-normal text-muted-foreground\">\n {option.description}\n </span>\n )}\n </span>\n {option.meta && <span className={metaPillClass}>{option.meta}</span>}\n {isActive && variant === 'multiselect' && (\n <Check className=\"ml-auto h-4 w-4 flex-shrink-0 text-primary-700\" />\n )}\n {isActive && variant === 'select' && !option.meta && (\n <span className=\"ml-auto text-primary-700\" aria-hidden>\n ✓\n </span>\n )}\n </li>\n );\n}\n","import { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { ChevronDown } from 'lucide-react';\n\nimport { cn } from '../../lib/cn';\n\nimport { FormItem } from '../FormItem';\n\nimport { Chip } from './Chip';\nimport { EmptyState } from './EmptyState';\nimport type { MultiSelectProps, Option, SelectStatus } from './interface';\nimport { OptionItem } from './OptionItem';\nimport { dropdownClass, statusBorderWithin } from './utils';\n\nfunction MultiSelectInner<V extends string | number>(\n props: MultiSelectProps<V>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {\n options,\n value,\n onChange,\n placeholder = 'Selecciona una opción',\n touched,\n error,\n help,\n externalLabel,\n isSearchable = false,\n searchable = false,\n errorMessage,\n status = '',\n disabled,\n className,\n maxTagCount = 3,\n onBlur,\n } = props;\n\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const rootRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => rootRef.current as HTMLDivElement);\n const enableSearch = searchable || isSearchable;\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(e.target as Node)) {\n if (open) {\n setOpen(false);\n onBlur?.();\n }\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open, onBlur]);\n\n const filteredOptions = useMemo(\n () =>\n enableSearch && search\n ? options.filter((opt) => opt.label.toLowerCase().includes(search.toLowerCase()))\n : options,\n [options, search, enableSearch],\n );\n\n const toggleValue = (v: V) => {\n if (value.includes(v)) onChange(value.filter((item) => item !== v));\n else onChange([...value, v]);\n };\n\n const selectedOptions = useMemo(\n () => value.map((v) => options.find((o) => o.value === v)).filter(Boolean) as Option<V>[],\n [value, options],\n );\n\n const visibleChips = selectedOptions.slice(0, maxTagCount);\n const overflowCount = selectedOptions.length - visibleChips.length;\n\n const showError = (touched && error) || status === 'error';\n const effectiveStatus: SelectStatus = showError ? 'error' : status;\n const isEmpty = filteredOptions.length === 0;\n\n return (\n <FormItem\n help={touched || error ? help : ''}\n validateStatus={showError ? 'error' : 'default'}\n label={externalLabel}\n >\n <div ref={rootRef} className={cn('relative w-full', className)}>\n <div\n role=\"combobox\"\n aria-expanded={open}\n aria-disabled={disabled}\n onClick={() => !disabled && setOpen(true)}\n className={cn(\n 'relative flex min-h-[40px] w-full cursor-text flex-wrap items-center gap-1.5 rounded-md border bg-background py-1 pl-2 pr-9 text-sm transition-colors',\n 'focus-within:outline-none focus-within:ring-2 focus-within:ring-offset-2 focus-within:ring-offset-background',\n statusBorderWithin[effectiveStatus],\n open && !disabled && 'border-ring',\n disabled && 'bg-muted text-muted-foreground cursor-not-allowed opacity-70',\n )}\n >\n {visibleChips.map((opt) => (\n <Chip key={String(opt.value)} option={opt} disabled={disabled} onRemove={toggleValue} />\n ))}\n {overflowCount > 0 && (\n <span className=\"inline-flex h-[26px] items-center rounded-full bg-muted px-2 text-[12.5px] font-medium text-muted-foreground\">\n +{overflowCount} más\n </span>\n )}\n {enableSearch ? (\n <input\n className=\"h-7 min-w-[80px] flex-1 border-0 bg-transparent px-1.5 text-sm outline-none placeholder:text-muted-foreground\"\n value={search}\n placeholder={selectedOptions.length === 0 ? placeholder : ''}\n disabled={disabled}\n onChange={(e) => {\n setSearch(e.target.value);\n if (!open) setOpen(true);\n }}\n onFocus={() => setOpen(true)}\n />\n ) : (\n selectedOptions.length === 0 && (\n <span className=\"px-1.5 text-muted-foreground\">{placeholder}</span>\n )\n )}\n <ChevronDown\n className={cn(\n 'pointer-events-none absolute right-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground transition-transform',\n open && 'rotate-180 text-primary-700',\n )}\n aria-hidden\n />\n </div>\n\n {open && !disabled && (\n <div role=\"listbox\" className={dropdownClass}>\n {isEmpty ? (\n <EmptyState />\n ) : (\n <ul>\n {filteredOptions.map((option) => (\n <OptionItem\n key={String(option.value)}\n option={option}\n variant=\"multiselect\"\n isActive={value.includes(option.value)}\n onClick={() => {\n if (option.disabled) return;\n toggleValue(option.value);\n }}\n />\n ))}\n </ul>\n )}\n </div>\n )}\n </div>\n {errorMessage && effectiveStatus === 'error' && (\n <p className=\"mt-1 text-xs text-destructive\">{errorMessage}</p>\n )}\n </FormItem>\n );\n}\n\nexport const MultiSelect = forwardRef(MultiSelectInner) as <\n V extends string | number = string | number,\n>(\n props: MultiSelectProps<V> & { ref?: React.Ref<HTMLDivElement> },\n) => ReturnType<typeof MultiSelectInner>;\n","import {\n forwardRef,\n type KeyboardEvent,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ChevronDown } from 'lucide-react';\n\nimport { cn } from '../../lib/cn';\n\nimport { FormItem } from '../FormItem';\n\nimport { EmptyState } from './EmptyState';\nimport type { Option, SelectProps, SelectStatus } from './interface';\nimport { OptionItem } from './OptionItem';\nimport {\n dropdownClass,\n leadingIconBoxClass,\n messageColor,\n sizeClasses,\n statusBorder,\n} from './utils';\n\nfunction SelectInner<V extends string | number>(\n props: SelectProps<V>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {\n options,\n value,\n onChange,\n placeholder = 'Selecciona una opción',\n touched,\n error,\n help,\n externalLabel,\n isSearchable = false,\n errorMessage,\n status = '',\n size = 'default',\n leadingIcon,\n disabled,\n className,\n onBlur,\n } = props;\n\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const [activeIndex, setActiveIndex] = useState(-1);\n const rootRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => rootRef.current as HTMLDivElement);\n\n const selectedOption = options.find((opt) => opt.value === value);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(e.target as Node)) {\n if (open) {\n setOpen(false);\n onBlur?.();\n }\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open, onBlur]);\n\n const filteredOptions = useMemo(\n () =>\n isSearchable && search\n ? options.filter((opt) => opt.label.toLowerCase().includes(search.toLowerCase()))\n : options,\n [options, search, isSearchable],\n );\n\n const commitSelection = (opt: Option<V>) => {\n if (opt.disabled) return;\n onChange(opt.value);\n setOpen(false);\n setSearch('');\n setActiveIndex(-1);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n if (!open && (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown')) {\n e.preventDefault();\n setOpen(true);\n return;\n }\n if (!open) return;\n if (e.key === 'Escape') {\n e.preventDefault();\n setOpen(false);\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIndex((i) => Math.min(filteredOptions.length - 1, i + 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIndex((i) => Math.max(0, i - 1));\n } else if (e.key === 'Enter') {\n e.preventDefault();\n const opt = filteredOptions[activeIndex];\n if (opt) commitSelection(opt);\n }\n };\n\n const showError = (touched && error) || status === 'error';\n const effectiveStatus: SelectStatus = showError ? 'error' : status;\n const isEmpty = filteredOptions.length === 0;\n\n return (\n <FormItem\n help={touched || error ? help : ''}\n validateStatus={showError ? 'error' : 'default'}\n label={externalLabel}\n >\n <div\n ref={rootRef}\n className={cn('relative w-full', className)}\n onKeyDown={handleKeyDown}\n tabIndex={-1}\n >\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => !disabled && setOpen((o) => !o)}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n className={cn(\n 'w-full flex items-center gap-2 rounded-md border bg-background text-left transition-colors',\n 'focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-background',\n sizeClasses[size],\n statusBorder[effectiveStatus],\n open && !disabled && 'border-ring',\n disabled && 'bg-muted text-muted-foreground cursor-not-allowed opacity-70',\n )}\n >\n {leadingIcon && <span className={leadingIconBoxClass}>{leadingIcon}</span>}\n {selectedOption ? (\n <span className=\"flex min-w-0 flex-1 items-center gap-2 truncate font-medium text-foreground\">\n {selectedOption.leadingIcon && !leadingIcon && (\n <span className={leadingIconBoxClass}>{selectedOption.leadingIcon}</span>\n )}\n <span className=\"truncate\">{selectedOption.label}</span>\n {selectedOption.meta && (\n <span className=\"ml-1 text-[12.5px] font-normal text-muted-foreground\">\n · {selectedOption.meta}\n </span>\n )}\n </span>\n ) : (\n <span className=\"flex-1 truncate text-muted-foreground\">{placeholder}</span>\n )}\n <ChevronDown\n className={cn(\n 'absolute right-3 h-4 w-4 text-muted-foreground transition-transform',\n open && 'rotate-180 text-primary-700',\n )}\n aria-hidden\n />\n </button>\n\n {open && !disabled && (\n <div role=\"listbox\" className={dropdownClass}>\n {isSearchable && (\n <div className=\"sticky top-[-4px] z-10 -mx-1 mb-1 border-b border-border bg-popover px-2 py-1.5\">\n <input\n type=\"text\"\n autoFocus\n value={search}\n onChange={(e) => {\n setSearch(e.target.value);\n setActiveIndex(0);\n }}\n className=\"w-full rounded-sm border border-transparent bg-muted px-2.5 py-1.5 text-[13.5px] outline-none focus:border-primary-500 focus:bg-background\"\n placeholder=\"Buscar...\"\n />\n </div>\n )}\n {isEmpty ? (\n <EmptyState />\n ) : (\n <ul>\n {filteredOptions.map((option, idx) => (\n <OptionItem\n key={String(option.value)}\n option={option}\n isActive={option.value === value}\n isHighlighted={idx === activeIndex}\n onMouseEnter={() => setActiveIndex(idx)}\n onClick={() => commitSelection(option)}\n />\n ))}\n </ul>\n )}\n </div>\n )}\n </div>\n {errorMessage && (\n <p className={cn('mt-1 text-xs', messageColor[effectiveStatus])}>{errorMessage}</p>\n )}\n </FormItem>\n );\n}\n\nexport const Select = forwardRef(SelectInner) as <V extends string | number = string | number>(\n props: SelectProps<V> & { ref?: React.Ref<HTMLDivElement> },\n) => ReturnType<typeof SelectInner>;\n","import * as React from 'react';\n\nimport { cn } from '../../lib/cn';\nimport { Separator as UISeparator } from '../../ui/separator';\n\n/**\n * Separator · átomo basado en Radix Separator (`ui/separator`).\n *\n * Canon `Components.html` (línea ~935):\n * - `.sep` → `border-top:1px solid border; margin:14px 0` (horizontal).\n * - `.div-h` → línea horizontal simple para dividir secciones.\n * - `.div-text`→ línea con label centrado (tipo \"OR\" / \"continuar con\").\n *\n * Variantes:\n * - `orientation=\"horizontal\"` (default): línea 1px full-width.\n * - `orientation=\"vertical\"`: línea 1px de alto fijo (h-4) inline.\n * - `text`: cuando se pasa, renderiza el patrón `.div-text` (line-text-line)\n * sólo en horizontal; ignorado en vertical.\n */\nexport interface SeparatorProps {\n orientation?: 'horizontal' | 'vertical';\n text?: React.ReactNode;\n className?: string;\n}\n\nexport const Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(\n ({ orientation = 'horizontal', text, className }, ref) => {\n if (text && orientation === 'horizontal') {\n return (\n <div ref={ref} className={cn('relative flex items-center w-full my-2', className)}>\n <UISeparator orientation=\"horizontal\" className=\"flex-1\" />\n <span className=\"px-3 text-xs text-muted-foreground uppercase tracking-wider bg-background\">\n {text}\n </span>\n <UISeparator orientation=\"horizontal\" className=\"flex-1\" />\n </div>\n );\n }\n\n return (\n <UISeparator\n ref={ref}\n orientation={orientation}\n className={cn(orientation === 'vertical' ? 'mx-2 h-4 inline-block' : '', className)}\n />\n );\n },\n);\nSeparator.displayName = 'Separator';\n","import * as React from 'react';\n\nimport { cn } from '../../lib/cn';\nimport { Skeleton as UISkeleton } from '../../ui/skeleton';\n\nexport type SkeletonRounded = 'sm' | 'md' | 'full';\n\nexport interface SkeletonProps {\n width?: number | string;\n height?: number | string;\n rounded?: SkeletonRounded;\n lines?: number;\n className?: string;\n}\n\nfunction roundedClass(r: SkeletonRounded): string {\n if (r === 'sm') return 'rounded-sm';\n if (r === 'full') return 'rounded-full';\n return 'rounded-md';\n}\n\nfunction toCss(v: number | string | undefined): string | number | undefined {\n if (typeof v === 'number') return `${v}px`;\n return v;\n}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ width, height, rounded = 'md', lines, className }, ref) => {\n if (lines && lines > 1) {\n return (\n <div ref={ref} className={cn('flex flex-col gap-2', className)}>\n {Array.from({ length: lines }).map((_, i) => (\n <UISkeleton\n key={i}\n className={cn(roundedClass(rounded), 'h-3')}\n style={{\n width: i === lines - 1 ? '60%' : (toCss(width) ?? '100%'),\n }}\n />\n ))}\n </div>\n );\n }\n\n return (\n <UISkeleton\n ref={ref}\n className={cn(roundedClass(rounded), className)}\n style={{ width: toCss(width), height: toCss(height) }}\n />\n );\n },\n);\nSkeleton.displayName = 'Skeleton';\n","import { cva } from 'class-variance-authority';\n\nexport const sliderRangeVariants = cva('absolute h-full', {\n variants: {\n color: {\n primary: 'bg-primary',\n secondary: 'bg-secondary',\n success: 'bg-success',\n warning: 'bg-warning',\n danger: 'bg-destructive',\n },\n },\n defaultVariants: { color: 'primary' },\n});\n\nexport const sliderThumbVariants = cva(\n 'block h-3.5 w-3.5 rounded-full border-2 bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n color: {\n primary: 'border-primary',\n secondary: 'border-secondary',\n success: 'border-success',\n warning: 'border-warning',\n danger: 'border-destructive',\n },\n },\n defaultVariants: { color: 'primary' },\n },\n);\n\nexport type SliderColor = 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\n","import * as React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\n\nimport { cn } from '../../lib/cn';\n\nimport { type SliderColor, sliderRangeVariants, sliderThumbVariants } from './Slider.variants';\n\nexport interface SliderProps {\n value?: number | number[];\n defaultValue?: number | number[];\n onChange?: (value: number | number[]) => void;\n min?: number;\n max?: number;\n step?: number;\n color?: SliderColor;\n disabled?: boolean;\n showTooltip?: boolean;\n className?: string;\n}\n\nfunction toArray(v: number | number[] | undefined): number[] | undefined {\n if (v === undefined) return undefined;\n return Array.isArray(v) ? v : [v];\n}\n\nexport const Slider = React.forwardRef<HTMLSpanElement, SliderProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n color = 'primary',\n disabled,\n showTooltip,\n className,\n },\n ref,\n ) => {\n const valueArr = toArray(value);\n const defaultArr = toArray(defaultValue);\n const [internal, setInternal] = React.useState<number[]>(defaultArr ?? [min]);\n const display = valueArr ?? internal;\n\n const handleChange = (next: number[]) => {\n if (valueArr === undefined) setInternal(next);\n if (!onChange) return;\n onChange(next.length === 1 ? next[0] : next);\n };\n\n return (\n <SliderPrimitive.Root\n ref={ref}\n value={valueArr}\n defaultValue={defaultArr}\n onValueChange={handleChange}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n className={cn(\n 'relative flex w-full touch-none select-none items-center',\n disabled && 'opacity-50',\n className,\n )}\n >\n <SliderPrimitive.Track className=\"relative h-1 w-full grow overflow-hidden rounded-full bg-muted\">\n <SliderPrimitive.Range className={sliderRangeVariants({ color })} />\n </SliderPrimitive.Track>\n {display.map((v, i) => (\n <SliderPrimitive.Thumb key={i} className={sliderThumbVariants({ color })}>\n {showTooltip && (\n <span className=\"absolute -top-7 left-1/2 -translate-x-1/2 rounded bg-default-900 text-default-50 px-1.5 py-0.5 text-xs whitespace-nowrap\">\n {v}\n </span>\n )}\n </SliderPrimitive.Thumb>\n ))}\n </SliderPrimitive.Root>\n );\n },\n);\nSlider.displayName = 'Slider';\n","import { cva } from 'class-variance-authority';\n\nexport const switchRootVariants = cva(\n 'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=unchecked]:bg-default-200',\n {\n variants: {\n color: {\n primary: 'data-[state=checked]:bg-primary',\n secondary: 'data-[state=checked]:bg-secondary',\n success: 'data-[state=checked]:bg-success',\n warning: 'data-[state=checked]:bg-warning',\n danger: 'data-[state=checked]:bg-destructive',\n },\n size: {\n sm: 'h-5 w-9',\n md: 'h-6 w-11',\n lg: 'h-7 w-14',\n },\n },\n defaultVariants: { color: 'primary', size: 'md' },\n },\n);\n\nexport const switchThumbVariants = cva(\n 'pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=unchecked]:translate-x-0',\n {\n variants: {\n size: {\n sm: 'h-4 w-4 data-[state=checked]:translate-x-4',\n md: 'h-5 w-5 data-[state=checked]:translate-x-5',\n lg: 'h-6 w-6 data-[state=checked]:translate-x-7',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nexport type SwitchColor = 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\nexport type SwitchSize = 'sm' | 'md' | 'lg';\n","import * as React from 'react';\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\n\nimport { cn } from '../../lib/cn';\n\nimport {\n type SwitchColor,\n switchRootVariants,\n type SwitchSize,\n switchThumbVariants,\n} from './Switch.variants';\n\nexport interface SwitchProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n color?: SwitchColor;\n size?: SwitchSize;\n label?: React.ReactNode;\n disabled?: boolean;\n className?: string;\n name?: string;\n id?: string;\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n checked,\n defaultChecked,\n onChange,\n color = 'primary',\n size = 'md',\n label,\n disabled,\n className,\n name,\n id,\n },\n ref,\n ) => {\n const control = (\n <SwitchPrimitives.Root\n ref={ref}\n id={id}\n name={name}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onChange}\n disabled={disabled}\n className={cn(switchRootVariants({ color, size }), !label && className)}\n >\n <SwitchPrimitives.Thumb className={switchThumbVariants({ size })} />\n </SwitchPrimitives.Root>\n );\n\n if (!label) return control;\n\n return (\n <label\n className={cn(\n 'inline-flex items-center gap-2 text-sm cursor-pointer select-none',\n disabled && 'cursor-not-allowed opacity-60',\n className,\n )}\n >\n {control}\n <span>{label}</span>\n </label>\n );\n },\n);\nSwitch.displayName = 'Switch';\n","import React from 'react';\nimport { X } from 'lucide-react';\n\nimport { cn } from '../../lib/cn';\nimport { Badge } from '../../ui/badge';\n\nimport { ITag } from './interface';\n\nconst variantMap: Record<ITag['variant'], string> = {\n default: 'bg-default-100 text-foreground border-default-200',\n success: 'bg-success-50 text-success-800 border-success-200',\n warning: 'bg-warning-50 text-warning-800 border-warning-200',\n danger: 'bg-danger-50 text-danger-800 border-danger-200',\n};\n\nexport const Tag: React.FC<ITag> = ({ icon, onClose, variant, children }) => {\n return (\n <Badge\n variant=\"outline\"\n className={cn('gap-2 px-3 py-1 text-sm rounded-md border', variantMap[variant])}\n >\n {icon}\n {children}\n {onClose && (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"ml-1 inline-flex items-center justify-center rounded hover:bg-black/10\"\n aria-label=\"close\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </Badge>\n );\n};\n","import { type ChangeEvent, forwardRef, useCallback, useEffect, useRef, useState } from 'react';\nimport { X } from 'lucide-react';\n\nimport { cn } from '../../lib/cn';\nimport { Textarea as UITextarea } from '../../ui/textarea';\n\nimport { FormItem } from '../FormItem';\n\nimport type { TextAreaProps } from './interface';\n\n/**\n * Textarea AgroShine · canon Components.html\n *\n * - Base: `ui/textarea` (shadcn) — radius 6px, tokens semánticos.\n * - Extras: `allowClear`, `status: error|success|warning|default`, `autoSize`,\n * integración con `FormItem`.\n */\nconst sizeClasses = {\n small: 'text-[13px] py-1.5 px-2.5',\n default: 'text-sm py-2 px-3',\n large: 'text-[15px] py-2.5 px-4',\n} as const;\n\nconst statusBorderClasses = {\n error: 'border-destructive focus-visible:ring-destructive',\n success: 'border-success-500 focus-visible:ring-success-500',\n warning: 'border-warning-500 focus-visible:ring-warning-500',\n default: '',\n} as const;\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextAreaProps>(function Textarea(\n {\n size = 'default',\n allowClear = false,\n status = 'default',\n autoSize = false,\n disabled,\n className,\n name,\n touched,\n error,\n externalLabel,\n help,\n errorMessage,\n onChange,\n value,\n defaultValue,\n rows = 3,\n ...rest\n },\n ref,\n) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const innerRef = useRef<HTMLTextAreaElement | null>(null);\n const setRefs = useCallback(\n (node: HTMLTextAreaElement | null) => {\n innerRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLTextAreaElement | null>).current = node;\n },\n [ref],\n );\n\n useEffect(() => {\n if (autoSize && innerRef.current) {\n innerRef.current.style.height = 'auto';\n innerRef.current.style.height = `${innerRef.current.scrollHeight}px`;\n }\n }, [currentValue, autoSize]);\n\n const showClearButton = allowClear && !disabled && Boolean(currentValue);\n\n const messageColor =\n status === 'error' ? 'text-destructive' : status === 'warning' ? 'text-warning-700' : '';\n\n const handleChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) setInternalValue(e.target.value);\n onChange?.(e);\n };\n\n const handleClear = () => {\n if (!isControlled) setInternalValue('');\n onChange?.({ target: { value: '' } } as ChangeEvent<HTMLTextAreaElement>);\n innerRef.current?.focus();\n };\n\n return (\n <FormItem\n help={touched || error ? help : ''}\n validateStatus={touched && error ? 'error' : 'default'}\n label={externalLabel}\n >\n <div className={cn('relative w-full', className)}>\n <UITextarea\n ref={setRefs}\n name={name}\n disabled={disabled}\n rows={rows}\n value={currentValue}\n onChange={handleChange}\n aria-invalid={status === 'error' || (touched && Boolean(error)) || undefined}\n className={cn(\n sizeClasses[size],\n statusBorderClasses[status],\n autoSize && 'resize-none overflow-hidden',\n showClearButton && 'pr-9',\n )}\n {...rest}\n />\n\n {showClearButton && (\n <button\n type=\"button\"\n onClick={handleClear}\n aria-label=\"Limpiar\"\n className=\"absolute right-2 top-2 inline-flex items-center justify-center text-muted-foreground hover:text-foreground\"\n >\n <X className=\"h-3.5 w-3.5\" />\n </button>\n )}\n </div>\n\n {errorMessage && (\n <p\n className={cn('mt-1 text-xs', messageColor)}\n role={status === 'error' ? 'alert' : undefined}\n >\n {errorMessage}\n </p>\n )}\n </FormItem>\n );\n});\n","import * as React from 'react';\nimport * as TogglePrimitive from '@radix-ui/react-toggle';\n\nimport { cn } from '../../lib/cn';\nimport { toggleVariants } from '../../ui/toggle';\n\nexport type ToggleVariant = 'default' | 'outline';\nexport type ToggleSize = 'sm' | 'md' | 'lg';\n\nexport interface ToggleProps {\n pressed?: boolean;\n defaultPressed?: boolean;\n onChange?: (pressed: boolean) => void;\n variant?: ToggleVariant;\n size?: ToggleSize;\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n 'aria-label'?: string;\n}\n\nfunction mapSize(size: ToggleSize): 'sm' | 'default' | 'lg' {\n if (size === 'sm') return 'sm';\n if (size === 'lg') return 'lg';\n return 'default';\n}\n\nexport const Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>(\n (\n {\n pressed,\n defaultPressed,\n onChange,\n variant = 'default',\n size = 'md',\n disabled,\n className,\n children,\n ...rest\n },\n ref,\n ) => (\n <TogglePrimitive.Root\n ref={ref}\n pressed={pressed}\n defaultPressed={defaultPressed}\n onPressedChange={onChange}\n disabled={disabled}\n className={cn(toggleVariants({ variant, size: mapSize(size) }), className)}\n {...rest}\n >\n {children}\n </TogglePrimitive.Root>\n ),\n);\nToggle.displayName = 'Toggle';\n","import * as React from 'react';\n\nimport { cn } from '../../lib/cn';\nimport { ToggleGroup as UIToggleGroup, ToggleGroupItem } from '../../ui/toggle-group';\n\nexport type ToggleGroupVariant = 'default' | 'outline';\nexport type ToggleGroupSize = 'sm' | 'md' | 'lg';\n\nexport interface ToggleGroupOption {\n value: string;\n label: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface ToggleGroupSingleProps {\n type: 'single';\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n}\n\nexport interface ToggleGroupMultipleProps {\n type: 'multiple';\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n}\n\nexport type ToggleGroupProps = (ToggleGroupSingleProps | ToggleGroupMultipleProps) & {\n options: ToggleGroupOption[];\n variant?: ToggleGroupVariant;\n size?: ToggleGroupSize;\n disabled?: boolean;\n className?: string;\n};\n\nfunction mapSize(size: ToggleGroupSize): 'sm' | 'default' | 'lg' {\n if (size === 'sm') return 'sm';\n if (size === 'lg') return 'lg';\n return 'default';\n}\n\nexport const ToggleGroup = React.forwardRef<HTMLDivElement, ToggleGroupProps>((props, ref) => {\n const { options, variant = 'default', size = 'md', disabled, className } = props;\n\n const sharedItems = options.map((opt) => (\n <ToggleGroupItem key={opt.value} value={opt.value} disabled={opt.disabled || disabled}>\n {opt.label}\n </ToggleGroupItem>\n ));\n\n if (props.type === 'single') {\n return (\n <UIToggleGroup\n ref={ref}\n type=\"single\"\n value={props.value}\n defaultValue={props.defaultValue}\n onValueChange={(v: string) => props.onChange?.(v)}\n variant={variant}\n size={mapSize(size)}\n disabled={disabled}\n className={cn(className)}\n >\n {sharedItems}\n </UIToggleGroup>\n );\n }\n\n return (\n <UIToggleGroup\n ref={ref}\n type=\"multiple\"\n value={props.value}\n defaultValue={props.defaultValue}\n onValueChange={(v: string[]) => props.onChange?.(v)}\n variant={variant}\n size={mapSize(size)}\n disabled={disabled}\n className={cn(className)}\n >\n {sharedItems}\n </UIToggleGroup>\n );\n});\nToggleGroup.displayName = 'ToggleGroup';\n"]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { cn } from './chunk-MOED3QPY.js';
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Slot } from '@radix-ui/react-slot';
|
|
5
|
+
import { Loader2 } from 'lucide-react';
|
|
6
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var buttonVariants = cva(
|
|
9
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-semibold ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
10
|
+
{
|
|
11
|
+
variants: {
|
|
12
|
+
variant: {
|
|
13
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
14
|
+
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
15
|
+
outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
|
16
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
17
|
+
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
18
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
19
|
+
},
|
|
20
|
+
// Canon Components.html: sm 24px · default 32px · lg 40px · icon = default.
|
|
21
|
+
size: {
|
|
22
|
+
default: "h-8 px-[15px]",
|
|
23
|
+
sm: "h-6 rounded-sm px-2 text-[13px]",
|
|
24
|
+
lg: "h-10 px-[18px] text-[15px]",
|
|
25
|
+
icon: "h-8 w-8 p-0"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
defaultVariants: {
|
|
29
|
+
variant: "default",
|
|
30
|
+
size: "default"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
var Button = React.forwardRef(
|
|
35
|
+
({ className, variant, size, asChild = false, isLoading, disabled, children, ...props }, ref) => {
|
|
36
|
+
const Comp = asChild ? Slot : "button";
|
|
37
|
+
return /* @__PURE__ */ jsxs(
|
|
38
|
+
Comp,
|
|
39
|
+
{
|
|
40
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
41
|
+
ref,
|
|
42
|
+
disabled: disabled || isLoading,
|
|
43
|
+
...props,
|
|
44
|
+
children: [
|
|
45
|
+
isLoading ? /* @__PURE__ */ jsx(Loader2, { className: "animate-spin" }) : null,
|
|
46
|
+
children
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
Button.displayName = "Button";
|
|
53
|
+
|
|
54
|
+
export { Button, buttonVariants };
|
|
55
|
+
//# sourceMappingURL=chunk-XCYSBWV4.js.map
|
|
56
|
+
//# sourceMappingURL=chunk-XCYSBWV4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/button-variants.ts","../src/ui/button.tsx"],"names":[],"mappings":";;;;;;;AAEO,IAAM,cAAA,GAAiB,GAAA;AAAA,EAC5B,4VAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wDAAA;AAAA,QACT,WAAA,EAAa,oEAAA;AAAA,QACb,OAAA,EAAS,gFAAA;AAAA,QACT,SAAA,EAAW,8DAAA;AAAA,QACX,KAAA,EAAO,8CAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACR;AAAA;AAAA,MAEA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,eAAA;AAAA,QACT,EAAA,EAAI,iCAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;ACZA,IAAM,MAAA,GAAe,KAAA,CAAA,UAAA;AAAA,EACnB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,OAAA,GAAU,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC/F,IAAA,MAAM,IAAA,GAAO,UAAU,IAAA,GAAO,QAAA;AAC9B,IAAA,uBACE,IAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,QAC1D,GAAA;AAAA,QACA,UAAU,QAAA,IAAY,SAAA;AAAA,QACrB,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,SAAA,mBAAY,GAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,cAAA,EAAe,CAAA,GAAK,IAAA;AAAA,UACnD;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AACA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-XCYSBWV4.js","sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport const buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-semibold ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground hover:bg-primary/90',\n destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\n outline: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\n secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n // Canon Components.html: sm 24px · default 32px · lg 40px · icon = default.\n size: {\n default: 'h-8 px-[15px]',\n sm: 'h-6 rounded-sm px-2 text-[13px]',\n lg: 'h-10 px-[18px] text-[15px]',\n icon: 'h-8 w-8 p-0',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { type VariantProps } from 'class-variance-authority';\nimport { Loader2 } from 'lucide-react';\n\nimport { cn } from '../lib/cn';\n\nimport { buttonVariants } from './button-variants';\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n isLoading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, isLoading, disabled, children, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n disabled={disabled || isLoading}\n {...props}\n >\n {isLoading ? <Loader2 className=\"animate-spin\" /> : null}\n {children}\n </Comp>\n );\n },\n);\nButton.displayName = 'Button';\n\nexport { Button };\n"]}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
function _interopNamespace(e) {
|
|
6
|
+
if (e && e.__esModule) return e;
|
|
7
|
+
var n = Object.create(null);
|
|
8
|
+
if (e) {
|
|
9
|
+
Object.keys(e).forEach(function (k) {
|
|
10
|
+
if (k !== 'default') {
|
|
11
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
12
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return e[k]; }
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
n.default = e;
|
|
20
|
+
return Object.freeze(n);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
24
|
+
|
|
25
|
+
// src/hooks/usePagination.ts
|
|
26
|
+
function usePagination({ data, pageSize, initialPage = 1 }) {
|
|
27
|
+
const [currentPage, setCurrentPage] = React.useState(initialPage);
|
|
28
|
+
const total = data.length;
|
|
29
|
+
const totalPages = Math.ceil(total / pageSize);
|
|
30
|
+
const paginatedData = React.useMemo(() => {
|
|
31
|
+
const start = (currentPage - 1) * pageSize;
|
|
32
|
+
return data.slice(start, start + pageSize);
|
|
33
|
+
}, [currentPage, data, pageSize]);
|
|
34
|
+
const onPageChange = (page) => {
|
|
35
|
+
if (page >= 1 && page <= totalPages) {
|
|
36
|
+
setCurrentPage(page);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
return {
|
|
40
|
+
currentPage,
|
|
41
|
+
totalPages,
|
|
42
|
+
total,
|
|
43
|
+
pageSize,
|
|
44
|
+
paginatedData,
|
|
45
|
+
setCurrentPage,
|
|
46
|
+
onPageChange
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
var BREAKPOINTS = {
|
|
50
|
+
smallMobile: 376,
|
|
51
|
+
// <= 375px
|
|
52
|
+
mobile: 768,
|
|
53
|
+
tablet: 1024,
|
|
54
|
+
desktop: 1025
|
|
55
|
+
};
|
|
56
|
+
function useResponsive() {
|
|
57
|
+
const [deviceType, setDeviceType] = React__namespace.useState("desktop");
|
|
58
|
+
const [isLoading, setIsLoading] = React__namespace.useState(typeof window === "undefined");
|
|
59
|
+
const [isSmallMobile, setIsSmallMobile] = React__namespace.useState(false);
|
|
60
|
+
React__namespace.useEffect(() => {
|
|
61
|
+
if (typeof window === "undefined") return;
|
|
62
|
+
const smallMobileQuery = window.matchMedia(`(max-width: ${BREAKPOINTS.smallMobile - 1}px)`);
|
|
63
|
+
const mobileQuery = window.matchMedia(`(max-width: ${BREAKPOINTS.mobile - 1}px)`);
|
|
64
|
+
const tabletQuery = window.matchMedia(
|
|
65
|
+
`(min-width: ${BREAKPOINTS.mobile}px) and (max-width: ${BREAKPOINTS.tablet - 1}px)`
|
|
66
|
+
);
|
|
67
|
+
const updateDeviceType = () => {
|
|
68
|
+
setIsSmallMobile(smallMobileQuery.matches);
|
|
69
|
+
if (mobileQuery.matches) {
|
|
70
|
+
setDeviceType("mobile");
|
|
71
|
+
} else if (tabletQuery.matches) {
|
|
72
|
+
setDeviceType("tablet");
|
|
73
|
+
} else {
|
|
74
|
+
setDeviceType("desktop");
|
|
75
|
+
}
|
|
76
|
+
setIsLoading(false);
|
|
77
|
+
};
|
|
78
|
+
smallMobileQuery.addEventListener("change", updateDeviceType);
|
|
79
|
+
mobileQuery.addEventListener("change", updateDeviceType);
|
|
80
|
+
tabletQuery.addEventListener("change", updateDeviceType);
|
|
81
|
+
updateDeviceType();
|
|
82
|
+
return () => {
|
|
83
|
+
smallMobileQuery.removeEventListener("change", updateDeviceType);
|
|
84
|
+
mobileQuery.removeEventListener("change", updateDeviceType);
|
|
85
|
+
tabletQuery.removeEventListener("change", updateDeviceType);
|
|
86
|
+
};
|
|
87
|
+
}, []);
|
|
88
|
+
return {
|
|
89
|
+
deviceType,
|
|
90
|
+
isSmallMobile,
|
|
91
|
+
isMobile: deviceType === "mobile",
|
|
92
|
+
isTablet: deviceType === "tablet",
|
|
93
|
+
isDesktop: deviceType === "desktop",
|
|
94
|
+
isLoading
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
exports.BREAKPOINTS = BREAKPOINTS;
|
|
99
|
+
exports.usePagination = usePagination;
|
|
100
|
+
exports.useResponsive = useResponsive;
|
|
101
|
+
//# sourceMappingURL=chunk-XX4CBCEB.cjs.map
|
|
102
|
+
//# sourceMappingURL=chunk-XX4CBCEB.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/usePagination.ts","../src/hooks/useResponsive.ts"],"names":["useState","useMemo","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAQO,SAAS,cAAiB,EAAE,IAAA,EAAM,QAAA,EAAU,WAAA,GAAc,GAAE,EAA0B;AAC3F,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,eAAS,WAAW,CAAA;AAE1D,EAAA,MAAM,QAAQ,IAAA,CAAK,MAAA;AACnB,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,QAAQ,CAAA;AAE7C,EAAA,MAAM,aAAA,GAAgBC,cAAQ,MAAM;AAClC,IAAA,MAAM,KAAA,GAAA,CAAS,cAAc,CAAA,IAAK,QAAA;AAClC,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,KAAA,EAAO,KAAA,GAAQ,QAAQ,CAAA;AAAA,EAC3C,CAAA,EAAG,CAAC,WAAA,EAAa,IAAA,EAAM,QAAQ,CAAC,CAAA;AAEhC,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAiB;AACrC,IAAA,IAAI,IAAA,IAAQ,CAAA,IAAK,IAAA,IAAQ,UAAA,EAAY;AACnC,MAAA,cAAA,CAAe,IAAI,CAAA;AAAA,IACrB;AAAA,EACF,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AACF;AC9BO,IAAM,WAAA,GAAc;AAAA,EACzB,WAAA,EAAa,GAAA;AAAA;AAAA,EACb,MAAA,EAAQ,GAAA;AAAA,EACR,MAAA,EAAQ,IAAA;AAAA,EACR,OAAA,EAAS;AACX;AAEO,SAAS,aAAA,GAAgB;AAC9B,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAUC,0BAAqB,SAAS,CAAA;AACxE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,IAAUA,gBAAA,CAAA,QAAA,CAAS,OAAO,WAAW,WAAW,CAAA;AAC9E,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,0BAAS,KAAK,CAAA;AAE9D,EAAMA,2BAAU,MAAM;AACpB,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AAEnC,IAAA,MAAM,mBAAmB,MAAA,CAAO,UAAA,CAAW,eAAe,WAAA,CAAY,WAAA,GAAc,CAAC,CAAA,GAAA,CAAK,CAAA;AAC1F,IAAA,MAAM,cAAc,MAAA,CAAO,UAAA,CAAW,eAAe,WAAA,CAAY,MAAA,GAAS,CAAC,CAAA,GAAA,CAAK,CAAA;AAChF,IAAA,MAAM,cAAc,MAAA,CAAO,UAAA;AAAA,MACzB,eAAe,WAAA,CAAY,MAAM,CAAA,oBAAA,EAAuB,WAAA,CAAY,SAAS,CAAC,CAAA,GAAA;AAAA,KAChF;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,gBAAA,CAAiB,iBAAiB,OAAO,CAAA;AACzC,MAAA,IAAI,YAAY,OAAA,EAAS;AACvB,QAAA,aAAA,CAAc,QAAQ,CAAA;AAAA,MACxB,CAAA,MAAA,IAAW,YAAY,OAAA,EAAS;AAC9B,QAAA,aAAA,CAAc,QAAQ,CAAA;AAAA,MACxB,CAAA,MAAO;AACL,QAAA,aAAA,CAAc,SAAS,CAAA;AAAA,MACzB;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB,CAAA;AAEA,IAAA,gBAAA,CAAiB,gBAAA,CAAiB,UAAU,gBAAgB,CAAA;AAC5D,IAAA,WAAA,CAAY,gBAAA,CAAiB,UAAU,gBAAgB,CAAA;AACvD,IAAA,WAAA,CAAY,gBAAA,CAAiB,UAAU,gBAAgB,CAAA;AAEvD,IAAA,gBAAA,EAAiB;AAEjB,IAAA,OAAO,MAAM;AACX,MAAA,gBAAA,CAAiB,mBAAA,CAAoB,UAAU,gBAAgB,CAAA;AAC/D,MAAA,WAAA,CAAY,mBAAA,CAAoB,UAAU,gBAAgB,CAAA;AAC1D,MAAA,WAAA,CAAY,mBAAA,CAAoB,UAAU,gBAAgB,CAAA;AAAA,IAC5D,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAU,UAAA,KAAe,QAAA;AAAA,IACzB,UAAU,UAAA,KAAe,QAAA;AAAA,IACzB,WAAW,UAAA,KAAe,SAAA;AAAA,IAC1B;AAAA,GACF;AACF","file":"chunk-XX4CBCEB.cjs","sourcesContent":["import { useMemo, useState } from 'react';\n\ntype UsePaginationProps<T> = {\n data: T[];\n pageSize: number;\n initialPage?: number;\n};\n\nexport function usePagination<T>({ data, pageSize, initialPage = 1 }: UsePaginationProps<T>) {\n const [currentPage, setCurrentPage] = useState(initialPage);\n\n const total = data.length;\n const totalPages = Math.ceil(total / pageSize);\n\n const paginatedData = useMemo(() => {\n const start = (currentPage - 1) * pageSize;\n return data.slice(start, start + pageSize);\n }, [currentPage, data, pageSize]);\n\n const onPageChange = (page: number) => {\n if (page >= 1 && page <= totalPages) {\n setCurrentPage(page);\n }\n };\n\n return {\n currentPage,\n totalPages,\n total,\n pageSize,\n paginatedData,\n setCurrentPage,\n onPageChange,\n };\n}\n","import * as React from 'react';\n\ntype DeviceType = 'mobile' | 'tablet' | 'desktop';\n\nexport const BREAKPOINTS = {\n smallMobile: 376, // <= 375px\n mobile: 768,\n tablet: 1024,\n desktop: 1025,\n} as const;\n\nexport function useResponsive() {\n const [deviceType, setDeviceType] = React.useState<DeviceType>('desktop');\n const [isLoading, setIsLoading] = React.useState(typeof window === 'undefined');\n const [isSmallMobile, setIsSmallMobile] = React.useState(false);\n\n React.useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const smallMobileQuery = window.matchMedia(`(max-width: ${BREAKPOINTS.smallMobile - 1}px)`);\n const mobileQuery = window.matchMedia(`(max-width: ${BREAKPOINTS.mobile - 1}px)`);\n const tabletQuery = window.matchMedia(\n `(min-width: ${BREAKPOINTS.mobile}px) and (max-width: ${BREAKPOINTS.tablet - 1}px)`,\n );\n\n const updateDeviceType = () => {\n setIsSmallMobile(smallMobileQuery.matches);\n if (mobileQuery.matches) {\n setDeviceType('mobile');\n } else if (tabletQuery.matches) {\n setDeviceType('tablet');\n } else {\n setDeviceType('desktop');\n }\n setIsLoading(false);\n };\n\n smallMobileQuery.addEventListener('change', updateDeviceType);\n mobileQuery.addEventListener('change', updateDeviceType);\n tabletQuery.addEventListener('change', updateDeviceType);\n\n updateDeviceType();\n\n return () => {\n smallMobileQuery.removeEventListener('change', updateDeviceType);\n mobileQuery.removeEventListener('change', updateDeviceType);\n tabletQuery.removeEventListener('change', updateDeviceType);\n };\n }, []);\n\n return {\n deviceType,\n isSmallMobile,\n isMobile: deviceType === 'mobile',\n isTablet: deviceType === 'tablet',\n isDesktop: deviceType === 'desktop',\n isLoading,\n };\n}\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkTHTOUSMG_cjs = require('../chunk-THTOUSMG.cjs');
|
|
4
|
+
var chunkXX4CBCEB_cjs = require('../chunk-XX4CBCEB.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "useDrawer", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () { return chunkTHTOUSMG_cjs.useDrawer; }
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "useModal", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return chunkTHTOUSMG_cjs.useModal; }
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(exports, "useSearch", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return chunkTHTOUSMG_cjs.useSearch; }
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(exports, "BREAKPOINTS", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function () { return chunkXX4CBCEB_cjs.BREAKPOINTS; }
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "usePagination", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () { return chunkXX4CBCEB_cjs.usePagination; }
|
|
27
|
+
});
|
|
28
|
+
Object.defineProperty(exports, "useResponsive", {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
get: function () { return chunkXX4CBCEB_cjs.useResponsive; }
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=index.cjs.map
|
|
33
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
declare function useDrawer(defaultOpen?: boolean): {
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
openDrawer: () => void;
|
|
6
|
+
closeDrawer: () => void;
|
|
7
|
+
toggleDrawer: () => void;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
declare function useModal(defaultOpen?: boolean): {
|
|
11
|
+
isOpen: boolean;
|
|
12
|
+
openModal: () => void;
|
|
13
|
+
closeModal: () => void;
|
|
14
|
+
toggleModal: () => void;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
type UsePaginationProps<T> = {
|
|
18
|
+
data: T[];
|
|
19
|
+
pageSize: number;
|
|
20
|
+
initialPage?: number;
|
|
21
|
+
};
|
|
22
|
+
declare function usePagination<T>({ data, pageSize, initialPage }: UsePaginationProps<T>): {
|
|
23
|
+
currentPage: number;
|
|
24
|
+
totalPages: number;
|
|
25
|
+
total: number;
|
|
26
|
+
pageSize: number;
|
|
27
|
+
paginatedData: T[];
|
|
28
|
+
setCurrentPage: React.Dispatch<React.SetStateAction<number>>;
|
|
29
|
+
onPageChange: (page: number) => void;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
type DeviceType = 'mobile' | 'tablet' | 'desktop';
|
|
33
|
+
declare const BREAKPOINTS: {
|
|
34
|
+
readonly smallMobile: 376;
|
|
35
|
+
readonly mobile: 768;
|
|
36
|
+
readonly tablet: 1024;
|
|
37
|
+
readonly desktop: 1025;
|
|
38
|
+
};
|
|
39
|
+
declare function useResponsive(): {
|
|
40
|
+
deviceType: DeviceType;
|
|
41
|
+
isSmallMobile: boolean;
|
|
42
|
+
isMobile: boolean;
|
|
43
|
+
isTablet: boolean;
|
|
44
|
+
isDesktop: boolean;
|
|
45
|
+
isLoading: boolean;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
type SearchOptions<T> = {
|
|
49
|
+
data: T[];
|
|
50
|
+
searchTerm: string;
|
|
51
|
+
keys: (keyof T)[];
|
|
52
|
+
};
|
|
53
|
+
declare function useSearch<T>({ data, searchTerm, keys }: SearchOptions<T>): {
|
|
54
|
+
query: string;
|
|
55
|
+
setQuery: React.Dispatch<React.SetStateAction<string>>;
|
|
56
|
+
results: T[];
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export { BREAKPOINTS, useDrawer, useModal, usePagination, useResponsive, useSearch };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
declare function useDrawer(defaultOpen?: boolean): {
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
openDrawer: () => void;
|
|
6
|
+
closeDrawer: () => void;
|
|
7
|
+
toggleDrawer: () => void;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
declare function useModal(defaultOpen?: boolean): {
|
|
11
|
+
isOpen: boolean;
|
|
12
|
+
openModal: () => void;
|
|
13
|
+
closeModal: () => void;
|
|
14
|
+
toggleModal: () => void;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
type UsePaginationProps<T> = {
|
|
18
|
+
data: T[];
|
|
19
|
+
pageSize: number;
|
|
20
|
+
initialPage?: number;
|
|
21
|
+
};
|
|
22
|
+
declare function usePagination<T>({ data, pageSize, initialPage }: UsePaginationProps<T>): {
|
|
23
|
+
currentPage: number;
|
|
24
|
+
totalPages: number;
|
|
25
|
+
total: number;
|
|
26
|
+
pageSize: number;
|
|
27
|
+
paginatedData: T[];
|
|
28
|
+
setCurrentPage: React.Dispatch<React.SetStateAction<number>>;
|
|
29
|
+
onPageChange: (page: number) => void;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
type DeviceType = 'mobile' | 'tablet' | 'desktop';
|
|
33
|
+
declare const BREAKPOINTS: {
|
|
34
|
+
readonly smallMobile: 376;
|
|
35
|
+
readonly mobile: 768;
|
|
36
|
+
readonly tablet: 1024;
|
|
37
|
+
readonly desktop: 1025;
|
|
38
|
+
};
|
|
39
|
+
declare function useResponsive(): {
|
|
40
|
+
deviceType: DeviceType;
|
|
41
|
+
isSmallMobile: boolean;
|
|
42
|
+
isMobile: boolean;
|
|
43
|
+
isTablet: boolean;
|
|
44
|
+
isDesktop: boolean;
|
|
45
|
+
isLoading: boolean;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
type SearchOptions<T> = {
|
|
49
|
+
data: T[];
|
|
50
|
+
searchTerm: string;
|
|
51
|
+
keys: (keyof T)[];
|
|
52
|
+
};
|
|
53
|
+
declare function useSearch<T>({ data, searchTerm, keys }: SearchOptions<T>): {
|
|
54
|
+
query: string;
|
|
55
|
+
setQuery: React.Dispatch<React.SetStateAction<string>>;
|
|
56
|
+
results: T[];
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export { BREAKPOINTS, useDrawer, useModal, usePagination, useResponsive, useSearch };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|