@codefast/ui 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk76TT2QSBcjs = require('./chunk-76TT2QSB.cjs');var _react = require('react'); var t = _interopRequireWildcard(_react);var _reactcontext = require('@radix-ui/react-context');var _reactcomposerefs = require('@radix-ui/react-compose-refs');var _primitive = require('@radix-ui/primitive');var _reactprimitive = require('@radix-ui/react-primitive');var _reactusecontrollablestate = require('@radix-ui/react-use-controllable-state');var _jsxruntime = require('react/jsx-runtime');var O="NumberInput",[q,Ne]=_reactcontext.createContextScope.call(void 0, O,[_chunk76TT2QSBcjs.a]),A=_chunk76TT2QSBcjs.a.call(void 0, ),[G,F]=q(O);function Q(n){let{__scopeNumberInput:r,ariaDecrementLabel:p,ariaIncrementLabel:f,defaultValue:a,disabled:N,formatOptions:R={style:"decimal",minimumFractionDigits:0},id:C,locale:E=navigator.language,max:m,min:s,onChange:d,readOnly:l,step:u=1,value:I,...v}=n,b=A(r),g=t.useRef(null),[y,w]=_reactusecontrollablestate.useControllableState.call(void 0, {prop:I,defaultProp:a,onChange:d}),{thousandSeparator:S,decimalSeparator:x}=t.useMemo(()=>oe(E),[E]),D=t.useCallback(o=>o===void 0||isNaN(o)?"":new Intl.NumberFormat(E,R).format(o),[R,E]),B=t.useCallback(o=>{if(typeof o=="number")return V(o,s,m);if(typeof o!="string")return NaN;let T=o.trim().replace(/[^\d.,\-()]/g,"");if(T==="")return NaN;let k=ue(T,S,x),M=parseFloat(k);return R.style==="percent"&&(M/=100),isNaN(M)?0:V(M,s,m)},[x,R.style,m,s,S]),e=t.useCallback(o=>{let T=g.current;if(!T||N||l)return;let k=B(T.value)||0,M=V(o(k),s,m);T.value=D(M),w(M)},[N,D,m,s,B,l,w]),c=t.useCallback(()=>{e(o=>o+u)},[e,u]),i=t.useCallback(()=>{e(o=>o-u)},[e,u]),P=t.useCallback(()=>{e(o=>_nullishCoalesce(m, () => (o+u)))},[e,m,u]),X=t.useCallback(()=>{e(o=>_nullishCoalesce(s, () => (o-u)))},[e,s,u]);return _jsxruntime.jsx.call(void 0, G,{ariaDecrementLabel:p,ariaIncrementLabel:f,disabled:N,formatOptions:R,formatValue:D,id:C,inputRef:g,max:m,min:s,parseValue:B,readOnly:l,scope:r,value:y,onChange:w,onDecrement:i,onDecrementToMin:X,onIncrement:c,onIncrementToMax:P,children:_jsxruntime.jsx.call(void 0, _chunk76TT2QSBcjs.b,{...b,...v})})}Q.displayName=O;var J="NumberInputItem",Z= exports.c =t.forwardRef(({__scopeNumberInput:n,...r},p)=>{let f=A(n),{inputRef:a,disabled:N,id:R,max:C,min:E,readOnly:m,step:s,value:d,formatValue:l,parseValue:u,onChange:I,onIncrement:v,onDecrement:b,onIncrementToMax:g,onDecrementToMin:y}=F(J,n),w=_reactcomposerefs.useComposedRefs.call(void 0, p,a),S=t.useCallback(e=>{let c=u(e.target.value),i=l(c);i!==e.target.value&&(e.target.value=i),I(c)},[l,I,u]),x=t.useCallback(e=>{switch(e.key){case"ArrowUp":v(),e.preventDefault();break;case"PageUp":g(),e.preventDefault();break;case"ArrowDown":b(),e.preventDefault();break;case"PageDown":y(),e.preventDefault();break;default:break}},[v,g,b,y]),D=t.useCallback(e=>{switch(e.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Tab":case"Escape":case"Enter":case"Backspace":case"Delete":case"Home":case"End":case".":case",":case"-":case"%":return;default:if(le(e.key)||me(e)||ce(e.key))return;e.preventDefault()}},[]),B=t.useCallback(e=>{let c=a.current;if(e.key!=="Enter"||!c)return;let i=u(c.value),P=l(i);P!==c.value&&(c.value=P),I(i)},[l,a,I,u]);return t.useEffect(()=>{let e=i=>{let P=a.current;!P||N||m||document.activeElement!==P||(i.preventDefault(),i.deltaY>0?v():b())},c=a.current;return _optionalChain([c, 'optionalAccess', _2 => _2.addEventListener, 'call', _3 => _3("wheel",e)]),()=>{_optionalChain([c, 'optionalAccess', _4 => _4.removeEventListener, 'call', _5 => _5("wheel",e)])}},[v,b,a,N,m]),t.useEffect(()=>{let e=a.current;e&&e!==document.activeElement&&(e.value=l(d))},[l,a,d]),t.useEffect(()=>{let e=a.current;if(!e)return;let c=()=>{I()},i=e.form;return _optionalChain([i, 'optionalAccess', _6 => _6.addEventListener, 'call', _7 => _7("reset",c)]),()=>{_optionalChain([i, 'optionalAccess', _8 => _8.removeEventListener, 'call', _9 => _9("reset",c)])}},[a,I]),_jsxruntime.jsx.call(void 0, _chunk76TT2QSBcjs.c,{ref:w,...f,...r,defaultValue:l(d),disabled:N,id:R,max:C,min:E,readOnly:m,step:s,onBlur:_primitive.composeEventHandlers.call(void 0, r.onBlur,S),onKeyDown:_primitive.composeEventHandlers.call(void 0, r.onKeyDown,t.useMemo(()=>ae(D,x,B),[x,B,D]))})});Z.displayName=J;var W="NumberInputImplButton",_=t.forwardRef(({__scopeNumberInput:n,operation:r,...p},f)=>{let{ariaIncrementLabel:a,ariaDecrementLabel:N,disabled:R,readOnly:C,id:E,onIncrement:m,onDecrement:s}=F(W,n),d=t.useRef(null),l=t.useCallback(b=>{let y=()=>{b(),d.current=setTimeout(y,100)};b(),d.current=setTimeout(y,100*2)},[]),u=t.useCallback(()=>{d.current&&(clearTimeout(d.current),d.current=null)},[]),I=t.useCallback(()=>{l(r==="increment"?m:s)},[s,m,r,l]),v=t.useCallback(b=>{b.preventDefault()},[]);return _jsxruntime.jsx.call(void 0, _reactprimitive.Primitive.button,{ref:f,"aria-controls":E,"aria-label":r==="increment"?a:N,"aria-live":"polite",disabled:R||C,tabIndex:-1,type:"button",onContextMenu:v,onPointerCancel:u,onPointerDown:I,onPointerLeave:u,onPointerUp:u,...p})});_.displayName=W;var ee="NumberInputIncrementButton",te= exports.d =t.forwardRef((n,r)=>_jsxruntime.jsx.call(void 0, _,{operation:"increment",...n,ref:r}));te.displayName=ee;var ne="NumberInputDecrementButton",re= exports.e =t.forwardRef((n,r)=>_jsxruntime.jsx.call(void 0, _,{operation:"decrement",...n,ref:r}));re.displayName=ne;function ae(...n){return(...r)=>{for(let p of n)p(...r)}}function oe(n){return new Intl.NumberFormat(n).formatToParts(12345.6).reduce((f,a)=>(a.type==="group"&&(f.thousandSeparator=a.value),a.type==="decimal"&&(f.decimalSeparator=a.value),f),{thousandSeparator:"",decimalSeparator:""})}function ue(n,r,p){return n.replace(new RegExp(`\\${r}`,"g"),"").replace(new RegExp(`\\${p}`),".").replace(/[()]/g,"-")}function me(n){return n.ctrlKey||n.altKey||n.metaKey||n.shiftKey}function ce(n){return n.startsWith("F")&&n.length>1}function le(n){return!isNaN(Number(n))}function V(n,r=-1/0,p=1/0){return Math.min(Math.max(n,r),p)}exports.a = Ne; exports.b = Q; exports.c = Z; exports.d = te; exports.e = re;
2
- //# sourceMappingURL=chunk-DH7SJ5IC.cjs.map
2
+ //# sourceMappingURL=chunk-3Z6QUP75.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-DH7SJ5IC.cjs","../src/react/primitive/number-input.tsx"],"names":["NUMBER_INPUT_NAME","createNumberInputContext","createNumberInputScope","createContextScope","createInputScope","useInputScope","NumberInputProvider","useNumberInputContext","NumberInput","numberInputProps","__scopeNumberInput","ariaDecrementLabel","ariaIncrementLabel","defaultValue","disabled","formatOptions","id","locale","max","min","onChange","readOnly","step","valueProp","props","inputScope","inputRef","value","setValue","useControllableState","thousandSeparator","decimalSeparator","getNumberFormatSeparators","formatValue","inputValue","parseValue","clamp","cleanedValue","normalizedValue","normalizeInputValue","parsedValue","changeNumberValue","operation","inputElement","currentValue","newValue","handleIncrement","number","handleDecrement","handleIncrementToMax","handleDecrementToMin","jsx","Input","NUMBER_INPUT_ITEM_NAME","NumberInputItem","forwardedRef","onIncrement","onDecrement","onIncrementToMax","onDecrementToMin","composedNumberInputRef","useComposedRefs","handleBlur","event","numericValue","formattedValue","handleKeyDown","handleKeyDownPrevent","isNumberKey","isModifierKey","isFunctionKey","handleKeyDownEnter","handleWheel","handleReset","form","InputItem","composeEventHandlers","chain","NUMBER_INPUT_BUTTON_IMPL_NAME","NumberInputButtonImpl","timeoutIdRef","startActionInterval","callback","repeatAction","clearActionInterval","handlePointerDown","handleContextMenu","Primitive","NUMBER_INPUT_INCREMENT_BUTTON_NAME","NumberInputIncrementButton","NUMBER_INPUT_DECREMENT_BUTTON_NAME","NumberInputDecrementButton","callbacks","args","separatorOptions","part"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-DH7SJ5IC.cjs","sourcesContent":[null,"'use client';\n\nimport * as React from 'react';\nimport { createContextScope, type Scope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport * as InputPrimitive from '@/react/primitive/input';\nimport { createInputScope } from '@/react/primitive/input';\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInput\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_NAME = 'NumberInput';\n\ntype ScopedProps<P> = P & {\n __scopeNumberInput?: Scope;\n};\nconst [createNumberInputContext, createNumberInputScope] = createContextScope(NUMBER_INPUT_NAME, [createInputScope]);\nconst useInputScope = createInputScope();\n\ninterface NumberInputContextValue {\n formatOptions: Intl.NumberFormatOptions;\n formatValue: (value?: number) => string;\n inputRef: React.RefObject<HTMLInputElement>;\n onChange: (value?: number) => void;\n onDecrement: () => void;\n onDecrementToMin: () => void;\n onIncrement: () => void;\n onIncrementToMax: () => void;\n parseValue: (value: string | number | readonly string[] | undefined) => number;\n ariaDecrementLabel?: string;\n ariaIncrementLabel?: string;\n disabled?: boolean;\n id?: string;\n max?: number;\n min?: number;\n readOnly?: boolean;\n step?: number;\n value?: number;\n}\n\nconst [NumberInputProvider, useNumberInputContext] =\n createNumberInputContext<NumberInputContextValue>(NUMBER_INPUT_NAME);\n\ninterface NumberInputProps extends Omit<InputPrimitive.InputProps, 'prefix' | 'suffix' | 'loading' | 'loaderPosition'> {\n ariaDecrementLabel?: string;\n ariaIncrementLabel?: string;\n defaultValue?: number;\n disabled?: boolean;\n formatOptions?: Intl.NumberFormatOptions;\n id?: string;\n locale?: string;\n max?: number;\n min?: number;\n onChange?: (value: number) => void;\n readOnly?: boolean;\n step?: number;\n value?: number;\n}\n\nfunction NumberInput(numberInputProps: NumberInputProps): React.JSX.Element {\n const {\n __scopeNumberInput,\n ariaDecrementLabel,\n ariaIncrementLabel,\n defaultValue,\n disabled,\n formatOptions = { style: 'decimal', minimumFractionDigits: 0 },\n id,\n locale = navigator.language,\n max,\n min,\n onChange,\n readOnly,\n step = 1,\n value: valueProp,\n ...props\n } = numberInputProps as ScopedProps<NumberInputProps>;\n const inputScope = useInputScope(__scopeNumberInput);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange,\n });\n\n const { thousandSeparator, decimalSeparator } = React.useMemo(() => getNumberFormatSeparators(locale), [locale]);\n\n const formatValue = React.useCallback(\n (inputValue?: number): string => {\n if (inputValue === undefined || isNaN(inputValue)) {\n return '';\n }\n\n return new Intl.NumberFormat(locale, formatOptions).format(inputValue);\n },\n [formatOptions, locale],\n );\n\n const parseValue = React.useCallback(\n (inputValue: string | number | readonly string[] | undefined): number => {\n if (typeof inputValue === 'number') {\n return clamp(inputValue, min, max);\n }\n\n if (typeof inputValue !== 'string') {\n return NaN;\n }\n\n const cleanedValue = inputValue.trim().replace(/[^\\d.,\\-()]/g, '');\n\n if (cleanedValue === '') {\n return NaN;\n }\n\n const normalizedValue = normalizeInputValue(cleanedValue, thousandSeparator, decimalSeparator);\n let parsedValue = parseFloat(normalizedValue);\n\n if (formatOptions.style === 'percent') {\n parsedValue /= 100;\n }\n\n return isNaN(parsedValue) ? 0 : clamp(parsedValue, min, max);\n },\n [decimalSeparator, formatOptions.style, max, min, thousandSeparator],\n );\n\n const changeNumberValue = React.useCallback(\n (operation: (number: number) => number) => {\n const inputElement = inputRef.current;\n\n if (!inputElement || disabled || readOnly) {\n return;\n }\n\n const currentValue = parseValue(inputElement.value) || 0;\n const newValue = clamp(operation(currentValue), min, max);\n\n inputElement.value = formatValue(newValue);\n setValue(newValue);\n },\n [disabled, formatValue, max, min, parseValue, readOnly, setValue],\n );\n\n const handleIncrement = React.useCallback(() => {\n changeNumberValue((number) => number + step);\n }, [changeNumberValue, step]);\n\n const handleDecrement = React.useCallback(() => {\n changeNumberValue((number) => number - step);\n }, [changeNumberValue, step]);\n\n const handleIncrementToMax = React.useCallback(() => {\n changeNumberValue((number) => max ?? number + step);\n }, [changeNumberValue, max, step]);\n\n const handleDecrementToMin = React.useCallback(() => {\n changeNumberValue((number) => min ?? number - step);\n }, [changeNumberValue, min, step]);\n\n return (\n <NumberInputProvider\n ariaDecrementLabel={ariaDecrementLabel}\n ariaIncrementLabel={ariaIncrementLabel}\n disabled={disabled}\n formatOptions={formatOptions}\n formatValue={formatValue}\n id={id}\n inputRef={inputRef}\n max={max}\n min={min}\n parseValue={parseValue}\n readOnly={readOnly}\n scope={__scopeNumberInput}\n value={value}\n onChange={setValue}\n onDecrement={handleDecrement}\n onDecrementToMin={handleDecrementToMin}\n onIncrement={handleIncrement}\n onIncrementToMax={handleIncrementToMax}\n >\n <InputPrimitive.Root {...inputScope} {...props} />\n </NumberInputProvider>\n );\n}\n\nNumberInput.displayName = NUMBER_INPUT_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputItem\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_ITEM_NAME = 'NumberInputItem';\n\ntype NumberInputItemElement = React.ElementRef<typeof InputPrimitive.Item>;\ntype NumberInputItemProps = Omit<\n React.ComponentPropsWithoutRef<typeof InputPrimitive.Item>,\n 'min' | 'max' | 'value' | 'step' | 'onChange' | 'defaultValue' | 'disabled' | 'readOnly' | 'prefix' | 'id'\n>;\n\nconst NumberInputItem = React.forwardRef<NumberInputItemElement, NumberInputItemProps>(\n ({ __scopeNumberInput, ...props }: ScopedProps<NumberInputItemProps>, forwardedRef): React.JSX.Element => {\n const inputScope = useInputScope(__scopeNumberInput);\n const {\n inputRef,\n disabled,\n id,\n max,\n min,\n readOnly,\n step,\n value,\n formatValue,\n parseValue,\n onChange,\n onIncrement,\n onDecrement,\n onIncrementToMax,\n onDecrementToMin,\n } = useNumberInputContext(NUMBER_INPUT_ITEM_NAME, __scopeNumberInput);\n const composedNumberInputRef = useComposedRefs(forwardedRef, inputRef);\n\n // Handle blur event to format the value\n const handleBlur = React.useCallback<React.FocusEventHandler<HTMLInputElement>>(\n (event) => {\n const numericValue = parseValue(event.target.value);\n const formattedValue = formatValue(numericValue);\n\n if (formattedValue !== event.target.value) {\n event.target.value = formattedValue;\n }\n\n onChange(numericValue);\n },\n [formatValue, onChange, parseValue],\n );\n\n // Handle keyboard events to increment/decrement the value\n const handleKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n (event) => {\n switch (event.key) {\n case 'ArrowUp':\n onIncrement();\n event.preventDefault();\n break;\n case 'PageUp':\n onIncrementToMax();\n event.preventDefault();\n break;\n case 'ArrowDown':\n onDecrement();\n event.preventDefault();\n break;\n case 'PageDown':\n onDecrementToMin();\n event.preventDefault();\n break;\n\n default:\n break;\n }\n },\n [onIncrement, onIncrementToMax, onDecrement, onDecrementToMin],\n );\n\n // Prevent non-numeric input\n const handleKeyDownPrevent = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>((event) => {\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'PageUp':\n case 'PageDown':\n case 'Tab':\n case 'Escape':\n case 'Enter':\n case 'Backspace':\n case 'Delete':\n case 'Home':\n case 'End':\n case '.':\n case ',':\n case '-':\n case '%':\n return;\n\n default:\n if (isNumberKey(event.key) || isModifierKey(event) || isFunctionKey(event.key)) {\n return;\n }\n\n event.preventDefault();\n }\n }, []);\n\n // Handle Enter key to format the value\n const handleKeyDownEnter = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n (event) => {\n const inputElement = inputRef.current;\n\n if (event.key !== 'Enter' || !inputElement) {\n return;\n }\n\n const numericValue = parseValue(inputElement.value);\n const formattedValue = formatValue(numericValue);\n\n if (formattedValue !== inputElement.value) {\n inputElement.value = formattedValue;\n }\n\n onChange(numericValue);\n },\n [formatValue, inputRef, onChange, parseValue],\n );\n\n // Handle wheel event to increment/decrement the value\n React.useEffect(() => {\n const handleWheel = (event: WheelEvent): void => {\n const inputElement = inputRef.current;\n\n if (!inputElement || disabled || readOnly || document.activeElement !== inputElement) {\n return;\n }\n\n event.preventDefault();\n event.deltaY > 0 ? onIncrement() : onDecrement();\n };\n\n const inputElement = inputRef.current;\n\n inputElement?.addEventListener('wheel', handleWheel);\n\n return () => {\n inputElement?.removeEventListener('wheel', handleWheel);\n };\n }, [onIncrement, onDecrement, inputRef, disabled, readOnly]);\n\n // Format the value when the value changes\n React.useEffect(() => {\n const inputElement = inputRef.current;\n\n if (inputElement && inputElement !== document.activeElement) {\n inputElement.value = formatValue(value);\n }\n }, [formatValue, inputRef, value]);\n\n // Handle form reset\n React.useEffect(() => {\n const inputElement = inputRef.current;\n\n if (!inputElement) {\n return;\n }\n\n const handleReset = (): void => {\n onChange();\n };\n\n const form = inputElement.form;\n\n form?.addEventListener('reset', handleReset);\n\n return () => {\n form?.removeEventListener('reset', handleReset);\n };\n }, [inputRef, onChange]);\n\n return (\n <InputPrimitive.Item\n ref={composedNumberInputRef}\n {...inputScope}\n {...props}\n defaultValue={formatValue(value)}\n disabled={disabled}\n id={id}\n max={max}\n min={min}\n readOnly={readOnly}\n step={step}\n onBlur={composeEventHandlers(props.onBlur, handleBlur)}\n onKeyDown={composeEventHandlers(\n props.onKeyDown,\n React.useMemo(\n () => chain(handleKeyDownPrevent, handleKeyDown, handleKeyDownEnter),\n [handleKeyDown, handleKeyDownEnter, handleKeyDownPrevent],\n ),\n )}\n />\n );\n },\n);\n\nNumberInputItem.displayName = NUMBER_INPUT_ITEM_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputImplButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_BUTTON_IMPL_NAME = 'NumberInputImplButton';\n\ntype NumberInputButtonImplElement = React.ElementRef<typeof Primitive.button>;\ninterface NumberInputButtonImplProps extends React.ComponentPropsWithoutRef<typeof Primitive.button> {\n operation: 'increment' | 'decrement';\n}\n\nconst NumberInputButtonImpl = React.forwardRef<NumberInputButtonImplElement, NumberInputButtonImplProps>(\n (\n { __scopeNumberInput, operation, ...props }: ScopedProps<NumberInputButtonImplProps>,\n forwardedRef,\n ): React.JSX.Element => {\n const { ariaIncrementLabel, ariaDecrementLabel, disabled, readOnly, id, onIncrement, onDecrement } =\n useNumberInputContext(NUMBER_INPUT_BUTTON_IMPL_NAME, __scopeNumberInput);\n const timeoutIdRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const startActionInterval = React.useCallback((callback: () => void) => {\n const interval = 100;\n\n const repeatAction = (): void => {\n callback();\n timeoutIdRef.current = setTimeout(repeatAction, interval);\n };\n\n callback();\n timeoutIdRef.current = setTimeout(repeatAction, interval * 2);\n }, []);\n\n const clearActionInterval = React.useCallback(() => {\n if (timeoutIdRef.current) {\n clearTimeout(timeoutIdRef.current);\n timeoutIdRef.current = null;\n }\n }, []);\n\n const handlePointerDown = React.useCallback<React.PointerEventHandler<HTMLButtonElement>>(() => {\n const action = operation === 'increment' ? onIncrement : onDecrement;\n\n startActionInterval(action);\n }, [onDecrement, onIncrement, operation, startActionInterval]);\n\n const handleContextMenu = React.useCallback<React.MouseEventHandler<HTMLButtonElement>>((event) => {\n event.preventDefault();\n }, []);\n\n return (\n <Primitive.button\n ref={forwardedRef}\n aria-controls={id}\n aria-label={operation === 'increment' ? ariaIncrementLabel : ariaDecrementLabel}\n aria-live=\"polite\"\n disabled={disabled || readOnly}\n tabIndex={-1}\n type=\"button\"\n onContextMenu={handleContextMenu}\n onPointerCancel={clearActionInterval}\n onPointerDown={handlePointerDown}\n onPointerLeave={clearActionInterval}\n onPointerUp={clearActionInterval}\n {...props}\n />\n );\n },\n);\n\nNumberInputButtonImpl.displayName = NUMBER_INPUT_BUTTON_IMPL_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputIncrementButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_INCREMENT_BUTTON_NAME = 'NumberInputIncrementButton';\n\ntype NumberInputIncrementButtonElement = NumberInputButtonImplElement;\ntype NumberInputIncrementButtonProps = Omit<NumberInputButtonImplProps, 'operation'>;\n\nconst NumberInputIncrementButton = React.forwardRef<NumberInputIncrementButtonElement, NumberInputIncrementButtonProps>(\n (props: NumberInputIncrementButtonProps, forwardedRef): React.JSX.Element => (\n <NumberInputButtonImpl operation=\"increment\" {...props} ref={forwardedRef} />\n ),\n);\n\nNumberInputIncrementButton.displayName = NUMBER_INPUT_INCREMENT_BUTTON_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputDecrementButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_DECREMENT_BUTTON_NAME = 'NumberInputDecrementButton';\n\ntype NumberInputDecrementButtonElement = NumberInputButtonImplElement;\ntype NumberInputDecrementButtonProps = Omit<NumberInputButtonImplProps, 'operation'>;\n\nconst NumberInputDecrementButton = React.forwardRef<NumberInputDecrementButtonElement, NumberInputDecrementButtonProps>(\n (props: NumberInputDecrementButtonProps, forwardedRef): React.JSX.Element => (\n <NumberInputButtonImpl operation=\"decrement\" {...props} ref={forwardedRef} />\n ),\n);\n\nNumberInputDecrementButton.displayName = NUMBER_INPUT_DECREMENT_BUTTON_NAME;\n\n/* -----------------------------------------------------------------------------\n * Utility Functions\n * -------------------------------------------------------------------------- */\n\nfunction chain<T extends unknown[]>(...callbacks: ((...args: T) => void)[]): (...args: T) => void {\n return (...args: T) => {\n for (const callback of callbacks) {\n callback(...args);\n }\n };\n}\n\nfunction getNumberFormatSeparators(locale: string): { decimalSeparator: string; thousandSeparator: string } {\n const numberFormat = new Intl.NumberFormat(locale);\n const parts = numberFormat.formatToParts(12345.6);\n\n return parts.reduce(\n (separatorOptions, part) => {\n if (part.type === 'group') {\n separatorOptions.thousandSeparator = part.value;\n }\n\n if (part.type === 'decimal') {\n separatorOptions.decimalSeparator = part.value;\n }\n\n return separatorOptions;\n },\n { thousandSeparator: '', decimalSeparator: '' },\n );\n}\n\nfunction normalizeInputValue(value: string, thousandSeparator: string, decimalSeparator: string): string {\n return value\n .replace(new RegExp(`\\\\${thousandSeparator}`, 'g'), '')\n .replace(new RegExp(`\\\\${decimalSeparator}`), '.')\n .replace(/[()]/g, '-');\n}\n\nfunction isModifierKey(event: React.KeyboardEvent<HTMLInputElement>): boolean {\n return event.ctrlKey || event.altKey || event.metaKey || event.shiftKey;\n}\n\nfunction isFunctionKey(key: string): boolean {\n return key.startsWith('F') && key.length > 1;\n}\n\nfunction isNumberKey(key: string): boolean {\n return !isNaN(Number(key));\n}\n\nfunction clamp(value: number, min = -Infinity, max = Infinity): number {\n return Math.min(Math.max(value, min), max);\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport {\n createNumberInputScope,\n NumberInput,\n NumberInput as Root,\n NumberInputItem,\n NumberInputItem as Item,\n NumberInputIncrementButton,\n NumberInputIncrementButton as IncrementButton,\n NumberInputDecrementButton,\n NumberInputDecrementButton as DecrementButton,\n type NumberInputProps,\n type NumberInputItemProps,\n type NumberInputIncrementButtonProps,\n type NumberInputDecrementButtonProps,\n};\n"]}
1
+ {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-3Z6QUP75.cjs","../src/react/primitive/number-input.tsx"],"names":["NUMBER_INPUT_NAME","createNumberInputContext","createNumberInputScope","createContextScope","createInputScope","useInputScope","NumberInputProvider","useNumberInputContext","NumberInput","numberInputProps","__scopeNumberInput","ariaDecrementLabel","ariaIncrementLabel","defaultValue","disabled","formatOptions","id","locale","max","min","onChange","readOnly","step","valueProp","props","inputScope","inputRef","value","setValue","useControllableState","thousandSeparator","decimalSeparator","getNumberFormatSeparators","formatValue","inputValue","parseValue","clamp","cleanedValue","normalizedValue","normalizeInputValue","parsedValue","changeNumberValue","operation","inputElement","currentValue","newValue","handleIncrement","number","handleDecrement","handleIncrementToMax","handleDecrementToMin","jsx","Input","NUMBER_INPUT_ITEM_NAME","NumberInputItem","forwardedRef","onIncrement","onDecrement","onIncrementToMax","onDecrementToMin","composedNumberInputRef","useComposedRefs","handleBlur","event","numericValue","formattedValue","handleKeyDown","handleKeyDownPrevent","isNumberKey","isModifierKey","isFunctionKey","handleKeyDownEnter","handleWheel","handleReset","form","InputItem","composeEventHandlers","chain","NUMBER_INPUT_BUTTON_IMPL_NAME","NumberInputButtonImpl","timeoutIdRef","startActionInterval","callback","repeatAction","clearActionInterval","handlePointerDown","handleContextMenu","Primitive","NUMBER_INPUT_INCREMENT_BUTTON_NAME","NumberInputIncrementButton","NUMBER_INPUT_DECREMENT_BUTTON_NAME","NumberInputDecrementButton","callbacks","args","separatorOptions","part"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-3Z6QUP75.cjs","sourcesContent":[null,"'use client';\n\nimport * as React from 'react';\nimport { createContextScope, type Scope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport * as InputPrimitive from '@/react/primitive/input';\nimport { createInputScope } from '@/react/primitive/input';\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInput\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_NAME = 'NumberInput';\n\ntype ScopedProps<P> = P & {\n __scopeNumberInput?: Scope;\n};\nconst [createNumberInputContext, createNumberInputScope] = createContextScope(NUMBER_INPUT_NAME, [createInputScope]);\nconst useInputScope = createInputScope();\n\ninterface NumberInputContextValue {\n formatOptions: Intl.NumberFormatOptions;\n formatValue: (value?: number) => string;\n inputRef: React.RefObject<HTMLInputElement>;\n onChange: (value?: number) => void;\n onDecrement: () => void;\n onDecrementToMin: () => void;\n onIncrement: () => void;\n onIncrementToMax: () => void;\n parseValue: (value: string | number | readonly string[] | undefined) => number;\n ariaDecrementLabel?: string;\n ariaIncrementLabel?: string;\n disabled?: boolean;\n id?: string;\n max?: number;\n min?: number;\n readOnly?: boolean;\n step?: number;\n value?: number;\n}\n\nconst [NumberInputProvider, useNumberInputContext] =\n createNumberInputContext<NumberInputContextValue>(NUMBER_INPUT_NAME);\n\ninterface NumberInputProps extends Omit<InputPrimitive.InputProps, 'prefix' | 'suffix' | 'loading' | 'loaderPosition'> {\n ariaDecrementLabel?: string;\n ariaIncrementLabel?: string;\n defaultValue?: number;\n disabled?: boolean;\n formatOptions?: Intl.NumberFormatOptions;\n id?: string;\n locale?: string;\n max?: number;\n min?: number;\n onChange?: (value: number) => void;\n readOnly?: boolean;\n step?: number;\n value?: number;\n}\n\nfunction NumberInput(numberInputProps: NumberInputProps): React.JSX.Element {\n const {\n __scopeNumberInput,\n ariaDecrementLabel,\n ariaIncrementLabel,\n defaultValue,\n disabled,\n formatOptions = { style: 'decimal', minimumFractionDigits: 0 },\n id,\n locale = navigator.language,\n max,\n min,\n onChange,\n readOnly,\n step = 1,\n value: valueProp,\n ...props\n } = numberInputProps as ScopedProps<NumberInputProps>;\n const inputScope = useInputScope(__scopeNumberInput);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange,\n });\n\n const { thousandSeparator, decimalSeparator } = React.useMemo(() => getNumberFormatSeparators(locale), [locale]);\n\n const formatValue = React.useCallback(\n (inputValue?: number): string => {\n if (inputValue === undefined || isNaN(inputValue)) {\n return '';\n }\n\n return new Intl.NumberFormat(locale, formatOptions).format(inputValue);\n },\n [formatOptions, locale],\n );\n\n const parseValue = React.useCallback(\n (inputValue: string | number | readonly string[] | undefined): number => {\n if (typeof inputValue === 'number') {\n return clamp(inputValue, min, max);\n }\n\n if (typeof inputValue !== 'string') {\n return NaN;\n }\n\n const cleanedValue = inputValue.trim().replace(/[^\\d.,\\-()]/g, '');\n\n if (cleanedValue === '') {\n return NaN;\n }\n\n const normalizedValue = normalizeInputValue(cleanedValue, thousandSeparator, decimalSeparator);\n let parsedValue = parseFloat(normalizedValue);\n\n if (formatOptions.style === 'percent') {\n parsedValue /= 100;\n }\n\n return isNaN(parsedValue) ? 0 : clamp(parsedValue, min, max);\n },\n [decimalSeparator, formatOptions.style, max, min, thousandSeparator],\n );\n\n const changeNumberValue = React.useCallback(\n (operation: (number: number) => number) => {\n const inputElement = inputRef.current;\n\n if (!inputElement || disabled || readOnly) {\n return;\n }\n\n const currentValue = parseValue(inputElement.value) || 0;\n const newValue = clamp(operation(currentValue), min, max);\n\n inputElement.value = formatValue(newValue);\n setValue(newValue);\n },\n [disabled, formatValue, max, min, parseValue, readOnly, setValue],\n );\n\n const handleIncrement = React.useCallback(() => {\n changeNumberValue((number) => number + step);\n }, [changeNumberValue, step]);\n\n const handleDecrement = React.useCallback(() => {\n changeNumberValue((number) => number - step);\n }, [changeNumberValue, step]);\n\n const handleIncrementToMax = React.useCallback(() => {\n changeNumberValue((number) => max ?? number + step);\n }, [changeNumberValue, max, step]);\n\n const handleDecrementToMin = React.useCallback(() => {\n changeNumberValue((number) => min ?? number - step);\n }, [changeNumberValue, min, step]);\n\n return (\n <NumberInputProvider\n ariaDecrementLabel={ariaDecrementLabel}\n ariaIncrementLabel={ariaIncrementLabel}\n disabled={disabled}\n formatOptions={formatOptions}\n formatValue={formatValue}\n id={id}\n inputRef={inputRef}\n max={max}\n min={min}\n parseValue={parseValue}\n readOnly={readOnly}\n scope={__scopeNumberInput}\n value={value}\n onChange={setValue}\n onDecrement={handleDecrement}\n onDecrementToMin={handleDecrementToMin}\n onIncrement={handleIncrement}\n onIncrementToMax={handleIncrementToMax}\n >\n <InputPrimitive.Root {...inputScope} {...props} />\n </NumberInputProvider>\n );\n}\n\nNumberInput.displayName = NUMBER_INPUT_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputItem\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_ITEM_NAME = 'NumberInputItem';\n\ntype NumberInputItemElement = React.ElementRef<typeof InputPrimitive.Item>;\ntype NumberInputItemProps = Omit<\n React.ComponentPropsWithoutRef<typeof InputPrimitive.Item>,\n 'min' | 'max' | 'value' | 'step' | 'onChange' | 'defaultValue' | 'disabled' | 'readOnly' | 'prefix' | 'id'\n>;\n\nconst NumberInputItem = React.forwardRef<NumberInputItemElement, NumberInputItemProps>(\n ({ __scopeNumberInput, ...props }: ScopedProps<NumberInputItemProps>, forwardedRef): React.JSX.Element => {\n const inputScope = useInputScope(__scopeNumberInput);\n const {\n inputRef,\n disabled,\n id,\n max,\n min,\n readOnly,\n step,\n value,\n formatValue,\n parseValue,\n onChange,\n onIncrement,\n onDecrement,\n onIncrementToMax,\n onDecrementToMin,\n } = useNumberInputContext(NUMBER_INPUT_ITEM_NAME, __scopeNumberInput);\n const composedNumberInputRef = useComposedRefs(forwardedRef, inputRef);\n\n // Handle blur event to format the value\n const handleBlur = React.useCallback<React.FocusEventHandler<HTMLInputElement>>(\n (event) => {\n const numericValue = parseValue(event.target.value);\n const formattedValue = formatValue(numericValue);\n\n if (formattedValue !== event.target.value) {\n event.target.value = formattedValue;\n }\n\n onChange(numericValue);\n },\n [formatValue, onChange, parseValue],\n );\n\n // Handle keyboard events to increment/decrement the value\n const handleKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n (event) => {\n switch (event.key) {\n case 'ArrowUp':\n onIncrement();\n event.preventDefault();\n break;\n\n case 'PageUp':\n onIncrementToMax();\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n onDecrement();\n event.preventDefault();\n break;\n\n case 'PageDown':\n onDecrementToMin();\n event.preventDefault();\n break;\n\n default:\n break;\n }\n },\n [onIncrement, onIncrementToMax, onDecrement, onDecrementToMin],\n );\n\n // Prevent non-numeric input\n const handleKeyDownPrevent = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>((event) => {\n switch (event.key) {\n case 'ArrowUp':\n\n case 'ArrowDown':\n\n case 'ArrowLeft':\n\n case 'ArrowRight':\n\n case 'PageUp':\n\n case 'PageDown':\n\n case 'Tab':\n\n case 'Escape':\n\n case 'Enter':\n\n case 'Backspace':\n\n case 'Delete':\n\n case 'Home':\n\n case 'End':\n\n case '.':\n\n case ',':\n\n case '-':\n\n case '%':\n return;\n\n default:\n if (isNumberKey(event.key) || isModifierKey(event) || isFunctionKey(event.key)) {\n return;\n }\n\n event.preventDefault();\n }\n }, []);\n\n // Handle Enter key to format the value\n const handleKeyDownEnter = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n (event) => {\n const inputElement = inputRef.current;\n\n if (event.key !== 'Enter' || !inputElement) {\n return;\n }\n\n const numericValue = parseValue(inputElement.value);\n const formattedValue = formatValue(numericValue);\n\n if (formattedValue !== inputElement.value) {\n inputElement.value = formattedValue;\n }\n\n onChange(numericValue);\n },\n [formatValue, inputRef, onChange, parseValue],\n );\n\n // Handle wheel event to increment/decrement the value\n React.useEffect(() => {\n const handleWheel = (event: WheelEvent): void => {\n const inputElement = inputRef.current;\n\n if (!inputElement || disabled || readOnly || document.activeElement !== inputElement) {\n return;\n }\n\n event.preventDefault();\n event.deltaY > 0 ? onIncrement() : onDecrement();\n };\n\n const inputElement = inputRef.current;\n\n inputElement?.addEventListener('wheel', handleWheel);\n\n return () => {\n inputElement?.removeEventListener('wheel', handleWheel);\n };\n }, [onIncrement, onDecrement, inputRef, disabled, readOnly]);\n\n // Format the value when the value changes\n React.useEffect(() => {\n const inputElement = inputRef.current;\n\n if (inputElement && inputElement !== document.activeElement) {\n inputElement.value = formatValue(value);\n }\n }, [formatValue, inputRef, value]);\n\n // Handle form reset\n React.useEffect(() => {\n const inputElement = inputRef.current;\n\n if (!inputElement) {\n return;\n }\n\n const handleReset = (): void => {\n onChange();\n };\n\n const form = inputElement.form;\n\n form?.addEventListener('reset', handleReset);\n\n return () => {\n form?.removeEventListener('reset', handleReset);\n };\n }, [inputRef, onChange]);\n\n return (\n <InputPrimitive.Item\n ref={composedNumberInputRef}\n {...inputScope}\n {...props}\n defaultValue={formatValue(value)}\n disabled={disabled}\n id={id}\n max={max}\n min={min}\n readOnly={readOnly}\n step={step}\n onBlur={composeEventHandlers(props.onBlur, handleBlur)}\n onKeyDown={composeEventHandlers(\n props.onKeyDown,\n React.useMemo(\n () => chain(handleKeyDownPrevent, handleKeyDown, handleKeyDownEnter),\n [handleKeyDown, handleKeyDownEnter, handleKeyDownPrevent],\n ),\n )}\n />\n );\n },\n);\n\nNumberInputItem.displayName = NUMBER_INPUT_ITEM_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputImplButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_BUTTON_IMPL_NAME = 'NumberInputImplButton';\n\ntype NumberInputButtonImplElement = React.ElementRef<typeof Primitive.button>;\ninterface NumberInputButtonImplProps extends React.ComponentPropsWithoutRef<typeof Primitive.button> {\n operation: 'increment' | 'decrement';\n}\n\nconst NumberInputButtonImpl = React.forwardRef<NumberInputButtonImplElement, NumberInputButtonImplProps>(\n (\n { __scopeNumberInput, operation, ...props }: ScopedProps<NumberInputButtonImplProps>,\n forwardedRef,\n ): React.JSX.Element => {\n const { ariaIncrementLabel, ariaDecrementLabel, disabled, readOnly, id, onIncrement, onDecrement } =\n useNumberInputContext(NUMBER_INPUT_BUTTON_IMPL_NAME, __scopeNumberInput);\n const timeoutIdRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const startActionInterval = React.useCallback((callback: () => void) => {\n const interval = 100;\n\n const repeatAction = (): void => {\n callback();\n timeoutIdRef.current = setTimeout(repeatAction, interval);\n };\n\n callback();\n timeoutIdRef.current = setTimeout(repeatAction, interval * 2);\n }, []);\n\n const clearActionInterval = React.useCallback(() => {\n if (timeoutIdRef.current) {\n clearTimeout(timeoutIdRef.current);\n timeoutIdRef.current = null;\n }\n }, []);\n\n const handlePointerDown = React.useCallback<React.PointerEventHandler<HTMLButtonElement>>(() => {\n const action = operation === 'increment' ? onIncrement : onDecrement;\n\n startActionInterval(action);\n }, [onDecrement, onIncrement, operation, startActionInterval]);\n\n const handleContextMenu = React.useCallback<React.MouseEventHandler<HTMLButtonElement>>((event) => {\n event.preventDefault();\n }, []);\n\n return (\n <Primitive.button\n ref={forwardedRef}\n aria-controls={id}\n aria-label={operation === 'increment' ? ariaIncrementLabel : ariaDecrementLabel}\n aria-live=\"polite\"\n disabled={disabled || readOnly}\n tabIndex={-1}\n type=\"button\"\n onContextMenu={handleContextMenu}\n onPointerCancel={clearActionInterval}\n onPointerDown={handlePointerDown}\n onPointerLeave={clearActionInterval}\n onPointerUp={clearActionInterval}\n {...props}\n />\n );\n },\n);\n\nNumberInputButtonImpl.displayName = NUMBER_INPUT_BUTTON_IMPL_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputIncrementButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_INCREMENT_BUTTON_NAME = 'NumberInputIncrementButton';\n\ntype NumberInputIncrementButtonElement = NumberInputButtonImplElement;\ntype NumberInputIncrementButtonProps = Omit<NumberInputButtonImplProps, 'operation'>;\n\nconst NumberInputIncrementButton = React.forwardRef<NumberInputIncrementButtonElement, NumberInputIncrementButtonProps>(\n (props: NumberInputIncrementButtonProps, forwardedRef): React.JSX.Element => (\n <NumberInputButtonImpl operation=\"increment\" {...props} ref={forwardedRef} />\n ),\n);\n\nNumberInputIncrementButton.displayName = NUMBER_INPUT_INCREMENT_BUTTON_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputDecrementButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_DECREMENT_BUTTON_NAME = 'NumberInputDecrementButton';\n\ntype NumberInputDecrementButtonElement = NumberInputButtonImplElement;\ntype NumberInputDecrementButtonProps = Omit<NumberInputButtonImplProps, 'operation'>;\n\nconst NumberInputDecrementButton = React.forwardRef<NumberInputDecrementButtonElement, NumberInputDecrementButtonProps>(\n (props: NumberInputDecrementButtonProps, forwardedRef): React.JSX.Element => (\n <NumberInputButtonImpl operation=\"decrement\" {...props} ref={forwardedRef} />\n ),\n);\n\nNumberInputDecrementButton.displayName = NUMBER_INPUT_DECREMENT_BUTTON_NAME;\n\n/* -----------------------------------------------------------------------------\n * Utility Functions\n * -------------------------------------------------------------------------- */\n\nfunction chain<T extends unknown[]>(...callbacks: ((...args: T) => void)[]): (...args: T) => void {\n return (...args: T) => {\n for (const callback of callbacks) {\n callback(...args);\n }\n };\n}\n\nfunction getNumberFormatSeparators(locale: string): { decimalSeparator: string; thousandSeparator: string } {\n const numberFormat = new Intl.NumberFormat(locale);\n const parts = numberFormat.formatToParts(12345.6);\n\n return parts.reduce(\n (separatorOptions, part) => {\n if (part.type === 'group') {\n separatorOptions.thousandSeparator = part.value;\n }\n\n if (part.type === 'decimal') {\n separatorOptions.decimalSeparator = part.value;\n }\n\n return separatorOptions;\n },\n { thousandSeparator: '', decimalSeparator: '' },\n );\n}\n\nfunction normalizeInputValue(value: string, thousandSeparator: string, decimalSeparator: string): string {\n return value\n .replace(new RegExp(`\\\\${thousandSeparator}`, 'g'), '')\n .replace(new RegExp(`\\\\${decimalSeparator}`), '.')\n .replace(/[()]/g, '-');\n}\n\nfunction isModifierKey(event: React.KeyboardEvent<HTMLInputElement>): boolean {\n return event.ctrlKey || event.altKey || event.metaKey || event.shiftKey;\n}\n\nfunction isFunctionKey(key: string): boolean {\n return key.startsWith('F') && key.length > 1;\n}\n\nfunction isNumberKey(key: string): boolean {\n return !isNaN(Number(key));\n}\n\nfunction clamp(value: number, min = -Infinity, max = Infinity): number {\n return Math.min(Math.max(value, min), max);\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport {\n createNumberInputScope,\n NumberInput,\n NumberInput as Root,\n NumberInputItem,\n NumberInputItem as Item,\n NumberInputIncrementButton,\n NumberInputIncrementButton as IncrementButton,\n NumberInputDecrementButton,\n NumberInputDecrementButton as DecrementButton,\n type NumberInputProps,\n type NumberInputItemProps,\n type NumberInputIncrementButtonProps,\n type NumberInputDecrementButtonProps,\n};\n"]}
@@ -1,2 +1,2 @@
1
1
  import{a as L,b as U,c as H}from"./chunk-QCHBG2C4.js";import*as t from"react";import{createContextScope as z}from"@radix-ui/react-context";import{useComposedRefs as $}from"@radix-ui/react-compose-refs";import{composeEventHandlers as K}from"@radix-ui/primitive";import{Primitive as Y}from"@radix-ui/react-primitive";import{useControllableState as j}from"@radix-ui/react-use-controllable-state";import{jsx as h}from"react/jsx-runtime";var O="NumberInput",[q,Ne]=z(O,[L]),A=L(),[G,F]=q(O);function Q(n){let{__scopeNumberInput:r,ariaDecrementLabel:p,ariaIncrementLabel:f,defaultValue:a,disabled:N,formatOptions:R={style:"decimal",minimumFractionDigits:0},id:C,locale:E=navigator.language,max:m,min:s,onChange:d,readOnly:l,step:u=1,value:I,...v}=n,b=A(r),g=t.useRef(null),[y,w]=j({prop:I,defaultProp:a,onChange:d}),{thousandSeparator:S,decimalSeparator:x}=t.useMemo(()=>oe(E),[E]),D=t.useCallback(o=>o===void 0||isNaN(o)?"":new Intl.NumberFormat(E,R).format(o),[R,E]),B=t.useCallback(o=>{if(typeof o=="number")return V(o,s,m);if(typeof o!="string")return NaN;let T=o.trim().replace(/[^\d.,\-()]/g,"");if(T==="")return NaN;let k=ue(T,S,x),M=parseFloat(k);return R.style==="percent"&&(M/=100),isNaN(M)?0:V(M,s,m)},[x,R.style,m,s,S]),e=t.useCallback(o=>{let T=g.current;if(!T||N||l)return;let k=B(T.value)||0,M=V(o(k),s,m);T.value=D(M),w(M)},[N,D,m,s,B,l,w]),c=t.useCallback(()=>{e(o=>o+u)},[e,u]),i=t.useCallback(()=>{e(o=>o-u)},[e,u]),P=t.useCallback(()=>{e(o=>m??o+u)},[e,m,u]),X=t.useCallback(()=>{e(o=>s??o-u)},[e,s,u]);return h(G,{ariaDecrementLabel:p,ariaIncrementLabel:f,disabled:N,formatOptions:R,formatValue:D,id:C,inputRef:g,max:m,min:s,parseValue:B,readOnly:l,scope:r,value:y,onChange:w,onDecrement:i,onDecrementToMin:X,onIncrement:c,onIncrementToMax:P,children:h(U,{...b,...v})})}Q.displayName=O;var J="NumberInputItem",Z=t.forwardRef(({__scopeNumberInput:n,...r},p)=>{let f=A(n),{inputRef:a,disabled:N,id:R,max:C,min:E,readOnly:m,step:s,value:d,formatValue:l,parseValue:u,onChange:I,onIncrement:v,onDecrement:b,onIncrementToMax:g,onDecrementToMin:y}=F(J,n),w=$(p,a),S=t.useCallback(e=>{let c=u(e.target.value),i=l(c);i!==e.target.value&&(e.target.value=i),I(c)},[l,I,u]),x=t.useCallback(e=>{switch(e.key){case"ArrowUp":v(),e.preventDefault();break;case"PageUp":g(),e.preventDefault();break;case"ArrowDown":b(),e.preventDefault();break;case"PageDown":y(),e.preventDefault();break;default:break}},[v,g,b,y]),D=t.useCallback(e=>{switch(e.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Tab":case"Escape":case"Enter":case"Backspace":case"Delete":case"Home":case"End":case".":case",":case"-":case"%":return;default:if(le(e.key)||me(e)||ce(e.key))return;e.preventDefault()}},[]),B=t.useCallback(e=>{let c=a.current;if(e.key!=="Enter"||!c)return;let i=u(c.value),P=l(i);P!==c.value&&(c.value=P),I(i)},[l,a,I,u]);return t.useEffect(()=>{let e=i=>{let P=a.current;!P||N||m||document.activeElement!==P||(i.preventDefault(),i.deltaY>0?v():b())},c=a.current;return c?.addEventListener("wheel",e),()=>{c?.removeEventListener("wheel",e)}},[v,b,a,N,m]),t.useEffect(()=>{let e=a.current;e&&e!==document.activeElement&&(e.value=l(d))},[l,a,d]),t.useEffect(()=>{let e=a.current;if(!e)return;let c=()=>{I()},i=e.form;return i?.addEventListener("reset",c),()=>{i?.removeEventListener("reset",c)}},[a,I]),h(H,{ref:w,...f,...r,defaultValue:l(d),disabled:N,id:R,max:C,min:E,readOnly:m,step:s,onBlur:K(r.onBlur,S),onKeyDown:K(r.onKeyDown,t.useMemo(()=>ae(D,x,B),[x,B,D]))})});Z.displayName=J;var W="NumberInputImplButton",_=t.forwardRef(({__scopeNumberInput:n,operation:r,...p},f)=>{let{ariaIncrementLabel:a,ariaDecrementLabel:N,disabled:R,readOnly:C,id:E,onIncrement:m,onDecrement:s}=F(W,n),d=t.useRef(null),l=t.useCallback(b=>{let y=()=>{b(),d.current=setTimeout(y,100)};b(),d.current=setTimeout(y,100*2)},[]),u=t.useCallback(()=>{d.current&&(clearTimeout(d.current),d.current=null)},[]),I=t.useCallback(()=>{l(r==="increment"?m:s)},[s,m,r,l]),v=t.useCallback(b=>{b.preventDefault()},[]);return h(Y.button,{ref:f,"aria-controls":E,"aria-label":r==="increment"?a:N,"aria-live":"polite",disabled:R||C,tabIndex:-1,type:"button",onContextMenu:v,onPointerCancel:u,onPointerDown:I,onPointerLeave:u,onPointerUp:u,...p})});_.displayName=W;var ee="NumberInputIncrementButton",te=t.forwardRef((n,r)=>h(_,{operation:"increment",...n,ref:r}));te.displayName=ee;var ne="NumberInputDecrementButton",re=t.forwardRef((n,r)=>h(_,{operation:"decrement",...n,ref:r}));re.displayName=ne;function ae(...n){return(...r)=>{for(let p of n)p(...r)}}function oe(n){return new Intl.NumberFormat(n).formatToParts(12345.6).reduce((f,a)=>(a.type==="group"&&(f.thousandSeparator=a.value),a.type==="decimal"&&(f.decimalSeparator=a.value),f),{thousandSeparator:"",decimalSeparator:""})}function ue(n,r,p){return n.replace(new RegExp(`\\${r}`,"g"),"").replace(new RegExp(`\\${p}`),".").replace(/[()]/g,"-")}function me(n){return n.ctrlKey||n.altKey||n.metaKey||n.shiftKey}function ce(n){return n.startsWith("F")&&n.length>1}function le(n){return!isNaN(Number(n))}function V(n,r=-1/0,p=1/0){return Math.min(Math.max(n,r),p)}export{Ne as a,Q as b,Z as c,te as d,re as e};
2
- //# sourceMappingURL=chunk-JVSVYDS3.js.map
2
+ //# sourceMappingURL=chunk-W5RHRZIO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react/primitive/number-input.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { createContextScope, type Scope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport * as InputPrimitive from '@/react/primitive/input';\nimport { createInputScope } from '@/react/primitive/input';\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInput\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_NAME = 'NumberInput';\n\ntype ScopedProps<P> = P & {\n __scopeNumberInput?: Scope;\n};\nconst [createNumberInputContext, createNumberInputScope] = createContextScope(NUMBER_INPUT_NAME, [createInputScope]);\nconst useInputScope = createInputScope();\n\ninterface NumberInputContextValue {\n formatOptions: Intl.NumberFormatOptions;\n formatValue: (value?: number) => string;\n inputRef: React.RefObject<HTMLInputElement>;\n onChange: (value?: number) => void;\n onDecrement: () => void;\n onDecrementToMin: () => void;\n onIncrement: () => void;\n onIncrementToMax: () => void;\n parseValue: (value: string | number | readonly string[] | undefined) => number;\n ariaDecrementLabel?: string;\n ariaIncrementLabel?: string;\n disabled?: boolean;\n id?: string;\n max?: number;\n min?: number;\n readOnly?: boolean;\n step?: number;\n value?: number;\n}\n\nconst [NumberInputProvider, useNumberInputContext] =\n createNumberInputContext<NumberInputContextValue>(NUMBER_INPUT_NAME);\n\ninterface NumberInputProps extends Omit<InputPrimitive.InputProps, 'prefix' | 'suffix' | 'loading' | 'loaderPosition'> {\n ariaDecrementLabel?: string;\n ariaIncrementLabel?: string;\n defaultValue?: number;\n disabled?: boolean;\n formatOptions?: Intl.NumberFormatOptions;\n id?: string;\n locale?: string;\n max?: number;\n min?: number;\n onChange?: (value: number) => void;\n readOnly?: boolean;\n step?: number;\n value?: number;\n}\n\nfunction NumberInput(numberInputProps: NumberInputProps): React.JSX.Element {\n const {\n __scopeNumberInput,\n ariaDecrementLabel,\n ariaIncrementLabel,\n defaultValue,\n disabled,\n formatOptions = { style: 'decimal', minimumFractionDigits: 0 },\n id,\n locale = navigator.language,\n max,\n min,\n onChange,\n readOnly,\n step = 1,\n value: valueProp,\n ...props\n } = numberInputProps as ScopedProps<NumberInputProps>;\n const inputScope = useInputScope(__scopeNumberInput);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange,\n });\n\n const { thousandSeparator, decimalSeparator } = React.useMemo(() => getNumberFormatSeparators(locale), [locale]);\n\n const formatValue = React.useCallback(\n (inputValue?: number): string => {\n if (inputValue === undefined || isNaN(inputValue)) {\n return '';\n }\n\n return new Intl.NumberFormat(locale, formatOptions).format(inputValue);\n },\n [formatOptions, locale],\n );\n\n const parseValue = React.useCallback(\n (inputValue: string | number | readonly string[] | undefined): number => {\n if (typeof inputValue === 'number') {\n return clamp(inputValue, min, max);\n }\n\n if (typeof inputValue !== 'string') {\n return NaN;\n }\n\n const cleanedValue = inputValue.trim().replace(/[^\\d.,\\-()]/g, '');\n\n if (cleanedValue === '') {\n return NaN;\n }\n\n const normalizedValue = normalizeInputValue(cleanedValue, thousandSeparator, decimalSeparator);\n let parsedValue = parseFloat(normalizedValue);\n\n if (formatOptions.style === 'percent') {\n parsedValue /= 100;\n }\n\n return isNaN(parsedValue) ? 0 : clamp(parsedValue, min, max);\n },\n [decimalSeparator, formatOptions.style, max, min, thousandSeparator],\n );\n\n const changeNumberValue = React.useCallback(\n (operation: (number: number) => number) => {\n const inputElement = inputRef.current;\n\n if (!inputElement || disabled || readOnly) {\n return;\n }\n\n const currentValue = parseValue(inputElement.value) || 0;\n const newValue = clamp(operation(currentValue), min, max);\n\n inputElement.value = formatValue(newValue);\n setValue(newValue);\n },\n [disabled, formatValue, max, min, parseValue, readOnly, setValue],\n );\n\n const handleIncrement = React.useCallback(() => {\n changeNumberValue((number) => number + step);\n }, [changeNumberValue, step]);\n\n const handleDecrement = React.useCallback(() => {\n changeNumberValue((number) => number - step);\n }, [changeNumberValue, step]);\n\n const handleIncrementToMax = React.useCallback(() => {\n changeNumberValue((number) => max ?? number + step);\n }, [changeNumberValue, max, step]);\n\n const handleDecrementToMin = React.useCallback(() => {\n changeNumberValue((number) => min ?? number - step);\n }, [changeNumberValue, min, step]);\n\n return (\n <NumberInputProvider\n ariaDecrementLabel={ariaDecrementLabel}\n ariaIncrementLabel={ariaIncrementLabel}\n disabled={disabled}\n formatOptions={formatOptions}\n formatValue={formatValue}\n id={id}\n inputRef={inputRef}\n max={max}\n min={min}\n parseValue={parseValue}\n readOnly={readOnly}\n scope={__scopeNumberInput}\n value={value}\n onChange={setValue}\n onDecrement={handleDecrement}\n onDecrementToMin={handleDecrementToMin}\n onIncrement={handleIncrement}\n onIncrementToMax={handleIncrementToMax}\n >\n <InputPrimitive.Root {...inputScope} {...props} />\n </NumberInputProvider>\n );\n}\n\nNumberInput.displayName = NUMBER_INPUT_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputItem\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_ITEM_NAME = 'NumberInputItem';\n\ntype NumberInputItemElement = React.ElementRef<typeof InputPrimitive.Item>;\ntype NumberInputItemProps = Omit<\n React.ComponentPropsWithoutRef<typeof InputPrimitive.Item>,\n 'min' | 'max' | 'value' | 'step' | 'onChange' | 'defaultValue' | 'disabled' | 'readOnly' | 'prefix' | 'id'\n>;\n\nconst NumberInputItem = React.forwardRef<NumberInputItemElement, NumberInputItemProps>(\n ({ __scopeNumberInput, ...props }: ScopedProps<NumberInputItemProps>, forwardedRef): React.JSX.Element => {\n const inputScope = useInputScope(__scopeNumberInput);\n const {\n inputRef,\n disabled,\n id,\n max,\n min,\n readOnly,\n step,\n value,\n formatValue,\n parseValue,\n onChange,\n onIncrement,\n onDecrement,\n onIncrementToMax,\n onDecrementToMin,\n } = useNumberInputContext(NUMBER_INPUT_ITEM_NAME, __scopeNumberInput);\n const composedNumberInputRef = useComposedRefs(forwardedRef, inputRef);\n\n // Handle blur event to format the value\n const handleBlur = React.useCallback<React.FocusEventHandler<HTMLInputElement>>(\n (event) => {\n const numericValue = parseValue(event.target.value);\n const formattedValue = formatValue(numericValue);\n\n if (formattedValue !== event.target.value) {\n event.target.value = formattedValue;\n }\n\n onChange(numericValue);\n },\n [formatValue, onChange, parseValue],\n );\n\n // Handle keyboard events to increment/decrement the value\n const handleKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n (event) => {\n switch (event.key) {\n case 'ArrowUp':\n onIncrement();\n event.preventDefault();\n break;\n\n case 'PageUp':\n onIncrementToMax();\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n onDecrement();\n event.preventDefault();\n break;\n\n case 'PageDown':\n onDecrementToMin();\n event.preventDefault();\n break;\n\n default:\n break;\n }\n },\n [onIncrement, onIncrementToMax, onDecrement, onDecrementToMin],\n );\n\n // Prevent non-numeric input\n const handleKeyDownPrevent = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>((event) => {\n switch (event.key) {\n case 'ArrowUp':\n\n case 'ArrowDown':\n\n case 'ArrowLeft':\n\n case 'ArrowRight':\n\n case 'PageUp':\n\n case 'PageDown':\n\n case 'Tab':\n\n case 'Escape':\n\n case 'Enter':\n\n case 'Backspace':\n\n case 'Delete':\n\n case 'Home':\n\n case 'End':\n\n case '.':\n\n case ',':\n\n case '-':\n\n case '%':\n return;\n\n default:\n if (isNumberKey(event.key) || isModifierKey(event) || isFunctionKey(event.key)) {\n return;\n }\n\n event.preventDefault();\n }\n }, []);\n\n // Handle Enter key to format the value\n const handleKeyDownEnter = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n (event) => {\n const inputElement = inputRef.current;\n\n if (event.key !== 'Enter' || !inputElement) {\n return;\n }\n\n const numericValue = parseValue(inputElement.value);\n const formattedValue = formatValue(numericValue);\n\n if (formattedValue !== inputElement.value) {\n inputElement.value = formattedValue;\n }\n\n onChange(numericValue);\n },\n [formatValue, inputRef, onChange, parseValue],\n );\n\n // Handle wheel event to increment/decrement the value\n React.useEffect(() => {\n const handleWheel = (event: WheelEvent): void => {\n const inputElement = inputRef.current;\n\n if (!inputElement || disabled || readOnly || document.activeElement !== inputElement) {\n return;\n }\n\n event.preventDefault();\n event.deltaY > 0 ? onIncrement() : onDecrement();\n };\n\n const inputElement = inputRef.current;\n\n inputElement?.addEventListener('wheel', handleWheel);\n\n return () => {\n inputElement?.removeEventListener('wheel', handleWheel);\n };\n }, [onIncrement, onDecrement, inputRef, disabled, readOnly]);\n\n // Format the value when the value changes\n React.useEffect(() => {\n const inputElement = inputRef.current;\n\n if (inputElement && inputElement !== document.activeElement) {\n inputElement.value = formatValue(value);\n }\n }, [formatValue, inputRef, value]);\n\n // Handle form reset\n React.useEffect(() => {\n const inputElement = inputRef.current;\n\n if (!inputElement) {\n return;\n }\n\n const handleReset = (): void => {\n onChange();\n };\n\n const form = inputElement.form;\n\n form?.addEventListener('reset', handleReset);\n\n return () => {\n form?.removeEventListener('reset', handleReset);\n };\n }, [inputRef, onChange]);\n\n return (\n <InputPrimitive.Item\n ref={composedNumberInputRef}\n {...inputScope}\n {...props}\n defaultValue={formatValue(value)}\n disabled={disabled}\n id={id}\n max={max}\n min={min}\n readOnly={readOnly}\n step={step}\n onBlur={composeEventHandlers(props.onBlur, handleBlur)}\n onKeyDown={composeEventHandlers(\n props.onKeyDown,\n React.useMemo(\n () => chain(handleKeyDownPrevent, handleKeyDown, handleKeyDownEnter),\n [handleKeyDown, handleKeyDownEnter, handleKeyDownPrevent],\n ),\n )}\n />\n );\n },\n);\n\nNumberInputItem.displayName = NUMBER_INPUT_ITEM_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputImplButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_BUTTON_IMPL_NAME = 'NumberInputImplButton';\n\ntype NumberInputButtonImplElement = React.ElementRef<typeof Primitive.button>;\ninterface NumberInputButtonImplProps extends React.ComponentPropsWithoutRef<typeof Primitive.button> {\n operation: 'increment' | 'decrement';\n}\n\nconst NumberInputButtonImpl = React.forwardRef<NumberInputButtonImplElement, NumberInputButtonImplProps>(\n (\n { __scopeNumberInput, operation, ...props }: ScopedProps<NumberInputButtonImplProps>,\n forwardedRef,\n ): React.JSX.Element => {\n const { ariaIncrementLabel, ariaDecrementLabel, disabled, readOnly, id, onIncrement, onDecrement } =\n useNumberInputContext(NUMBER_INPUT_BUTTON_IMPL_NAME, __scopeNumberInput);\n const timeoutIdRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const startActionInterval = React.useCallback((callback: () => void) => {\n const interval = 100;\n\n const repeatAction = (): void => {\n callback();\n timeoutIdRef.current = setTimeout(repeatAction, interval);\n };\n\n callback();\n timeoutIdRef.current = setTimeout(repeatAction, interval * 2);\n }, []);\n\n const clearActionInterval = React.useCallback(() => {\n if (timeoutIdRef.current) {\n clearTimeout(timeoutIdRef.current);\n timeoutIdRef.current = null;\n }\n }, []);\n\n const handlePointerDown = React.useCallback<React.PointerEventHandler<HTMLButtonElement>>(() => {\n const action = operation === 'increment' ? onIncrement : onDecrement;\n\n startActionInterval(action);\n }, [onDecrement, onIncrement, operation, startActionInterval]);\n\n const handleContextMenu = React.useCallback<React.MouseEventHandler<HTMLButtonElement>>((event) => {\n event.preventDefault();\n }, []);\n\n return (\n <Primitive.button\n ref={forwardedRef}\n aria-controls={id}\n aria-label={operation === 'increment' ? ariaIncrementLabel : ariaDecrementLabel}\n aria-live=\"polite\"\n disabled={disabled || readOnly}\n tabIndex={-1}\n type=\"button\"\n onContextMenu={handleContextMenu}\n onPointerCancel={clearActionInterval}\n onPointerDown={handlePointerDown}\n onPointerLeave={clearActionInterval}\n onPointerUp={clearActionInterval}\n {...props}\n />\n );\n },\n);\n\nNumberInputButtonImpl.displayName = NUMBER_INPUT_BUTTON_IMPL_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputIncrementButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_INCREMENT_BUTTON_NAME = 'NumberInputIncrementButton';\n\ntype NumberInputIncrementButtonElement = NumberInputButtonImplElement;\ntype NumberInputIncrementButtonProps = Omit<NumberInputButtonImplProps, 'operation'>;\n\nconst NumberInputIncrementButton = React.forwardRef<NumberInputIncrementButtonElement, NumberInputIncrementButtonProps>(\n (props: NumberInputIncrementButtonProps, forwardedRef): React.JSX.Element => (\n <NumberInputButtonImpl operation=\"increment\" {...props} ref={forwardedRef} />\n ),\n);\n\nNumberInputIncrementButton.displayName = NUMBER_INPUT_INCREMENT_BUTTON_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputDecrementButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_DECREMENT_BUTTON_NAME = 'NumberInputDecrementButton';\n\ntype NumberInputDecrementButtonElement = NumberInputButtonImplElement;\ntype NumberInputDecrementButtonProps = Omit<NumberInputButtonImplProps, 'operation'>;\n\nconst NumberInputDecrementButton = React.forwardRef<NumberInputDecrementButtonElement, NumberInputDecrementButtonProps>(\n (props: NumberInputDecrementButtonProps, forwardedRef): React.JSX.Element => (\n <NumberInputButtonImpl operation=\"decrement\" {...props} ref={forwardedRef} />\n ),\n);\n\nNumberInputDecrementButton.displayName = NUMBER_INPUT_DECREMENT_BUTTON_NAME;\n\n/* -----------------------------------------------------------------------------\n * Utility Functions\n * -------------------------------------------------------------------------- */\n\nfunction chain<T extends unknown[]>(...callbacks: ((...args: T) => void)[]): (...args: T) => void {\n return (...args: T) => {\n for (const callback of callbacks) {\n callback(...args);\n }\n };\n}\n\nfunction getNumberFormatSeparators(locale: string): { decimalSeparator: string; thousandSeparator: string } {\n const numberFormat = new Intl.NumberFormat(locale);\n const parts = numberFormat.formatToParts(12345.6);\n\n return parts.reduce(\n (separatorOptions, part) => {\n if (part.type === 'group') {\n separatorOptions.thousandSeparator = part.value;\n }\n\n if (part.type === 'decimal') {\n separatorOptions.decimalSeparator = part.value;\n }\n\n return separatorOptions;\n },\n { thousandSeparator: '', decimalSeparator: '' },\n );\n}\n\nfunction normalizeInputValue(value: string, thousandSeparator: string, decimalSeparator: string): string {\n return value\n .replace(new RegExp(`\\\\${thousandSeparator}`, 'g'), '')\n .replace(new RegExp(`\\\\${decimalSeparator}`), '.')\n .replace(/[()]/g, '-');\n}\n\nfunction isModifierKey(event: React.KeyboardEvent<HTMLInputElement>): boolean {\n return event.ctrlKey || event.altKey || event.metaKey || event.shiftKey;\n}\n\nfunction isFunctionKey(key: string): boolean {\n return key.startsWith('F') && key.length > 1;\n}\n\nfunction isNumberKey(key: string): boolean {\n return !isNaN(Number(key));\n}\n\nfunction clamp(value: number, min = -Infinity, max = Infinity): number {\n return Math.min(Math.max(value, min), max);\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport {\n createNumberInputScope,\n NumberInput,\n NumberInput as Root,\n NumberInputItem,\n NumberInputItem as Item,\n NumberInputIncrementButton,\n NumberInputIncrementButton as IncrementButton,\n NumberInputDecrementButton,\n NumberInputDecrementButton as DecrementButton,\n type NumberInputProps,\n type NumberInputItemProps,\n type NumberInputIncrementButtonProps,\n type NumberInputDecrementButtonProps,\n};\n"],"mappings":"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","names":["React","createContextScope","useComposedRefs","composeEventHandlers","Primitive","useControllableState","jsx","NUMBER_INPUT_NAME","createNumberInputContext","createNumberInputScope","createContextScope","createInputScope","useInputScope","NumberInputProvider","useNumberInputContext","NumberInput","numberInputProps","__scopeNumberInput","ariaDecrementLabel","ariaIncrementLabel","defaultValue","disabled","formatOptions","id","locale","max","min","onChange","readOnly","step","valueProp","props","inputScope","inputRef","value","setValue","useControllableState","thousandSeparator","decimalSeparator","getNumberFormatSeparators","formatValue","inputValue","parseValue","clamp","cleanedValue","normalizedValue","normalizeInputValue","parsedValue","changeNumberValue","operation","inputElement","currentValue","newValue","handleIncrement","number","handleDecrement","handleIncrementToMax","handleDecrementToMin","Input","NUMBER_INPUT_ITEM_NAME","NumberInputItem","forwardedRef","onIncrement","onDecrement","onIncrementToMax","onDecrementToMin","composedNumberInputRef","useComposedRefs","handleBlur","event","numericValue","formattedValue","handleKeyDown","handleKeyDownPrevent","isNumberKey","isModifierKey","isFunctionKey","handleKeyDownEnter","handleWheel","handleReset","form","InputItem","composeEventHandlers","chain","NUMBER_INPUT_BUTTON_IMPL_NAME","NumberInputButtonImpl","timeoutIdRef","startActionInterval","callback","repeatAction","clearActionInterval","handlePointerDown","handleContextMenu","Primitive","NUMBER_INPUT_INCREMENT_BUTTON_NAME","NumberInputIncrementButton","NUMBER_INPUT_DECREMENT_BUTTON_NAME","NumberInputDecrementButton","callbacks","args","separatorOptions","part","key"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/react/calendar.cjs","../../src/react/calendar.tsx"],"names":["Chevron","orientation","props","jsx","ChevronUpIcon","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","DotFilledIcon","DayButton","_","modifiers","className","buttonRef","Button","cn","Calendar","classNames","DayPicker","UI","buttonVariants","SelectionState"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/react/calendar.cjs","sourcesContent":[null,"'use client';\n\nimport * as React from 'react';\nimport {\n type CustomComponents,\n type DateRange,\n DayPicker,\n type DayPickerProps,\n SelectionState,\n UI,\n} from 'react-day-picker';\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronUpIcon,\n DotFilledIcon,\n} from '@radix-ui/react-icons';\nimport { cn } from '@/lib/utils';\nimport { Button, buttonVariants } from '@/react/button';\n\n/* -----------------------------------------------------------------------------\n * Component: Chevron\n * -------------------------------------------------------------------------- */\n\nfunction Chevron({ orientation, ...props }: React.ComponentProps<CustomComponents['Chevron']>): React.JSX.Element {\n switch (orientation) {\n case 'up':\n return <ChevronUpIcon className=\"size-4\" {...props} />;\n\n case 'down':\n return <ChevronDownIcon className=\"size-4\" {...props} />;\n\n case 'left':\n return <ChevronLeftIcon className=\"size-4\" {...props} />;\n\n case 'right':\n return <ChevronRightIcon className=\"size-4\" {...props} />;\n\n default:\n return <DotFilledIcon className=\"size-4\" {...props} />;\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DayButton\n * -------------------------------------------------------------------------- */\n\nfunction DayButton({\n day: _,\n modifiers,\n className,\n ...props\n}: React.ComponentProps<CustomComponents['DayButton']>): React.JSX.Element {\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n\n React.useEffect(() => {\n if (modifiers.focused) {\n buttonRef.current?.focus();\n }\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={buttonRef}\n className={cn(\n 'focus-visible:-outline-offset-2',\n (!modifiers.selected || modifiers.range_middle) && !modifiers.today && 'hover:bg-transparent',\n modifiers.today && !modifiers.selected && 'bg-accent',\n modifiers.outside && (!modifiers.selected || modifiers.range_middle) && 'text-opacity-30',\n className,\n )}\n size=\"icon-sm\"\n variant={modifiers.selected && !modifiers.range_middle ? 'default' : 'ghost'}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: Calendar\n * -------------------------------------------------------------------------- */\n\ntype CalendarProps = DayPickerProps;\n\nfunction Calendar({ className, classNames, ...props }: CalendarProps): React.JSX.Element {\n return (\n <DayPicker\n className={cn('p-3', className)}\n classNames={{\n [UI.ButtonPrevious]: buttonVariants({\n size: 'icon-xs',\n variant: 'outline',\n className: 'absolute shadow-none start-0',\n }),\n [UI.ButtonNext]: buttonVariants({\n size: 'icon-xs',\n variant: 'outline',\n className: 'absolute shadow-none end-0',\n }),\n [UI.Root]: 'inline-grid gap-4',\n [UI.Chevron]: '',\n [UI.Day]: 'py-0',\n [UI.DayButton]: 'border border-transparent hover:border-primary',\n [UI.CaptionLabel]: 'inline-flex items-center',\n [UI.Dropdowns]: 'inline-flex items-center gap-2',\n [UI.Dropdown]: 'appearance-none opacity-0 absolute size-full',\n [UI.DropdownRoot]: 'relative inline-flex',\n [UI.Footer]: 'text-sm',\n [UI.MonthGrid]: 'block table-fixed border-collapse relative [&>thead]:block space-y-2',\n [UI.MonthCaption]: 'flex text-sm font-medium w-full justify-center',\n [UI.MonthsDropdown]: '',\n [UI.Month]: 'grid gap-4 grid-rows-[2rem_1fr]',\n [UI.Months]: 'relative flex flex-wrap gap-4',\n [UI.Nav]: '-mr-4',\n [UI.Week]: 'flex',\n [UI.Weeks]: 'block space-y-2',\n [UI.Weekday]: 'text-muted-foreground text-sm font-normal flex-1',\n [UI.Weekdays]: 'flex',\n [UI.WeekNumber]: 'text-foreground/50 text-xs size-9 text-center',\n [UI.WeekNumberHeader]: '',\n [UI.YearsDropdown]: '',\n [SelectionState.range_start]: 'bg-gradient-to-r from-transparent to-50% to-accent rounded-l-md',\n [SelectionState.range_middle]: 'bg-accent first:rounded-l-md last:rounded-r-md',\n [SelectionState.range_end]: 'bg-gradient-to-l from-transparent to-50% to-accent rounded-r-md',\n [SelectionState.selected]: '',\n ...classNames,\n }}\n components={{ Chevron, DayButton }}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { Calendar, type CalendarProps, type DateRange };\n"]}
1
+ {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/react/calendar.cjs","../../src/react/calendar.tsx"],"names":["Chevron","orientation","props","jsx","ChevronUpIcon","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","DotFilledIcon","DayButton","_","modifiers","className","buttonRef","Button","cn","Calendar","classNames","DayPicker","UI","buttonVariants","SelectionState"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/react/calendar.cjs","sourcesContent":[null,"'use client';\n\nimport * as React from 'react';\nimport {\n type CustomComponents,\n type DateRange,\n DayPicker,\n type DayPickerProps,\n SelectionState,\n UI,\n} from 'react-day-picker';\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronUpIcon,\n DotFilledIcon,\n} from '@radix-ui/react-icons';\nimport { cn } from '@/lib/utils';\nimport { Button, buttonVariants } from '@/react/button';\n\n/* -----------------------------------------------------------------------------\n * Component: Chevron\n * -------------------------------------------------------------------------- */\n\nfunction Chevron({ orientation, ...props }: React.ComponentProps<CustomComponents['Chevron']>): React.JSX.Element {\n switch (orientation) {\n case 'up': {\n return <ChevronUpIcon className=\"size-4\" {...props} />;\n }\n\n case 'down': {\n return <ChevronDownIcon className=\"size-4\" {...props} />;\n }\n\n case 'left': {\n return <ChevronLeftIcon className=\"size-4\" {...props} />;\n }\n\n case 'right': {\n return <ChevronRightIcon className=\"size-4\" {...props} />;\n }\n\n default:\n return <DotFilledIcon className=\"size-4\" {...props} />;\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DayButton\n * -------------------------------------------------------------------------- */\n\nfunction DayButton({\n day: _,\n modifiers,\n className,\n ...props\n}: React.ComponentProps<CustomComponents['DayButton']>): React.JSX.Element {\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n\n React.useEffect(() => {\n if (modifiers.focused) {\n buttonRef.current?.focus();\n }\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={buttonRef}\n className={cn(\n 'focus-visible:-outline-offset-2',\n (!modifiers.selected || modifiers.range_middle) && !modifiers.today && 'hover:bg-transparent',\n modifiers.today && !modifiers.selected && 'bg-accent',\n modifiers.outside && (!modifiers.selected || modifiers.range_middle) && 'text-opacity-30',\n className,\n )}\n size=\"icon-sm\"\n variant={modifiers.selected && !modifiers.range_middle ? 'default' : 'ghost'}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: Calendar\n * -------------------------------------------------------------------------- */\n\ntype CalendarProps = DayPickerProps;\n\nfunction Calendar({ className, classNames, ...props }: CalendarProps): React.JSX.Element {\n return (\n <DayPicker\n className={cn('p-3', className)}\n classNames={{\n [UI.ButtonPrevious]: buttonVariants({\n size: 'icon-xs',\n variant: 'outline',\n className: 'absolute shadow-none start-0',\n }),\n [UI.ButtonNext]: buttonVariants({\n size: 'icon-xs',\n variant: 'outline',\n className: 'absolute shadow-none end-0',\n }),\n [UI.Root]: 'inline-grid gap-4',\n [UI.Chevron]: '',\n [UI.Day]: 'py-0',\n [UI.DayButton]: 'border border-transparent hover:border-primary',\n [UI.CaptionLabel]: 'inline-flex items-center',\n [UI.Dropdowns]: 'inline-flex items-center gap-2',\n [UI.Dropdown]: 'appearance-none opacity-0 absolute size-full',\n [UI.DropdownRoot]: 'relative inline-flex',\n [UI.Footer]: 'text-sm',\n [UI.MonthGrid]: 'block table-fixed border-collapse relative [&>thead]:block space-y-2',\n [UI.MonthCaption]: 'flex text-sm font-medium w-full justify-center',\n [UI.MonthsDropdown]: '',\n [UI.Month]: 'grid gap-4 grid-rows-[2rem_1fr]',\n [UI.Months]: 'relative flex flex-wrap gap-4',\n [UI.Nav]: '-mr-4',\n [UI.Week]: 'flex',\n [UI.Weeks]: 'block space-y-2',\n [UI.Weekday]: 'text-muted-foreground text-sm font-normal flex-1',\n [UI.Weekdays]: 'flex',\n [UI.WeekNumber]: 'text-foreground/50 text-xs size-9 text-center',\n [UI.WeekNumberHeader]: '',\n [UI.YearsDropdown]: '',\n [SelectionState.range_start]: 'bg-gradient-to-r from-transparent to-50% to-accent rounded-l-md',\n [SelectionState.range_middle]: 'bg-accent first:rounded-l-md last:rounded-r-md',\n [SelectionState.range_end]: 'bg-gradient-to-l from-transparent to-50% to-accent rounded-r-md',\n [SelectionState.selected]: '',\n ...classNames,\n }}\n components={{ Chevron, DayButton }}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { Calendar, type CalendarProps, type DateRange };\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/calendar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n type CustomComponents,\n type DateRange,\n DayPicker,\n type DayPickerProps,\n SelectionState,\n UI,\n} from 'react-day-picker';\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronUpIcon,\n DotFilledIcon,\n} from '@radix-ui/react-icons';\nimport { cn } from '@/lib/utils';\nimport { Button, buttonVariants } from '@/react/button';\n\n/* -----------------------------------------------------------------------------\n * Component: Chevron\n * -------------------------------------------------------------------------- */\n\nfunction Chevron({ orientation, ...props }: React.ComponentProps<CustomComponents['Chevron']>): React.JSX.Element {\n switch (orientation) {\n case 'up':\n return <ChevronUpIcon className=\"size-4\" {...props} />;\n\n case 'down':\n return <ChevronDownIcon className=\"size-4\" {...props} />;\n\n case 'left':\n return <ChevronLeftIcon className=\"size-4\" {...props} />;\n\n case 'right':\n return <ChevronRightIcon className=\"size-4\" {...props} />;\n\n default:\n return <DotFilledIcon className=\"size-4\" {...props} />;\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DayButton\n * -------------------------------------------------------------------------- */\n\nfunction DayButton({\n day: _,\n modifiers,\n className,\n ...props\n}: React.ComponentProps<CustomComponents['DayButton']>): React.JSX.Element {\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n\n React.useEffect(() => {\n if (modifiers.focused) {\n buttonRef.current?.focus();\n }\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={buttonRef}\n className={cn(\n 'focus-visible:-outline-offset-2',\n (!modifiers.selected || modifiers.range_middle) && !modifiers.today && 'hover:bg-transparent',\n modifiers.today && !modifiers.selected && 'bg-accent',\n modifiers.outside && (!modifiers.selected || modifiers.range_middle) && 'text-opacity-30',\n className,\n )}\n size=\"icon-sm\"\n variant={modifiers.selected && !modifiers.range_middle ? 'default' : 'ghost'}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: Calendar\n * -------------------------------------------------------------------------- */\n\ntype CalendarProps = DayPickerProps;\n\nfunction Calendar({ className, classNames, ...props }: CalendarProps): React.JSX.Element {\n return (\n <DayPicker\n className={cn('p-3', className)}\n classNames={{\n [UI.ButtonPrevious]: buttonVariants({\n size: 'icon-xs',\n variant: 'outline',\n className: 'absolute shadow-none start-0',\n }),\n [UI.ButtonNext]: buttonVariants({\n size: 'icon-xs',\n variant: 'outline',\n className: 'absolute shadow-none end-0',\n }),\n [UI.Root]: 'inline-grid gap-4',\n [UI.Chevron]: '',\n [UI.Day]: 'py-0',\n [UI.DayButton]: 'border border-transparent hover:border-primary',\n [UI.CaptionLabel]: 'inline-flex items-center',\n [UI.Dropdowns]: 'inline-flex items-center gap-2',\n [UI.Dropdown]: 'appearance-none opacity-0 absolute size-full',\n [UI.DropdownRoot]: 'relative inline-flex',\n [UI.Footer]: 'text-sm',\n [UI.MonthGrid]: 'block table-fixed border-collapse relative [&>thead]:block space-y-2',\n [UI.MonthCaption]: 'flex text-sm font-medium w-full justify-center',\n [UI.MonthsDropdown]: '',\n [UI.Month]: 'grid gap-4 grid-rows-[2rem_1fr]',\n [UI.Months]: 'relative flex flex-wrap gap-4',\n [UI.Nav]: '-mr-4',\n [UI.Week]: 'flex',\n [UI.Weeks]: 'block space-y-2',\n [UI.Weekday]: 'text-muted-foreground text-sm font-normal flex-1',\n [UI.Weekdays]: 'flex',\n [UI.WeekNumber]: 'text-foreground/50 text-xs size-9 text-center',\n [UI.WeekNumberHeader]: '',\n [UI.YearsDropdown]: '',\n [SelectionState.range_start]: 'bg-gradient-to-r from-transparent to-50% to-accent rounded-l-md',\n [SelectionState.range_middle]: 'bg-accent first:rounded-l-md last:rounded-r-md',\n [SelectionState.range_end]: 'bg-gradient-to-l from-transparent to-50% to-accent rounded-r-md',\n [SelectionState.selected]: '',\n ...classNames,\n }}\n components={{ Chevron, DayButton }}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { Calendar, type CalendarProps, type DateRange };\n"],"mappings":"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","names":["React","DayPicker","SelectionState","UI","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","ChevronUpIcon","DotFilledIcon","jsx","Chevron","orientation","props","ChevronUpIcon","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","DotFilledIcon","DayButton","_","modifiers","className","buttonRef","Button","cn","Calendar","classNames","DayPicker","UI","buttonVariants","SelectionState"]}
1
+ {"version":3,"sources":["../../src/react/calendar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n type CustomComponents,\n type DateRange,\n DayPicker,\n type DayPickerProps,\n SelectionState,\n UI,\n} from 'react-day-picker';\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronUpIcon,\n DotFilledIcon,\n} from '@radix-ui/react-icons';\nimport { cn } from '@/lib/utils';\nimport { Button, buttonVariants } from '@/react/button';\n\n/* -----------------------------------------------------------------------------\n * Component: Chevron\n * -------------------------------------------------------------------------- */\n\nfunction Chevron({ orientation, ...props }: React.ComponentProps<CustomComponents['Chevron']>): React.JSX.Element {\n switch (orientation) {\n case 'up': {\n return <ChevronUpIcon className=\"size-4\" {...props} />;\n }\n\n case 'down': {\n return <ChevronDownIcon className=\"size-4\" {...props} />;\n }\n\n case 'left': {\n return <ChevronLeftIcon className=\"size-4\" {...props} />;\n }\n\n case 'right': {\n return <ChevronRightIcon className=\"size-4\" {...props} />;\n }\n\n default:\n return <DotFilledIcon className=\"size-4\" {...props} />;\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DayButton\n * -------------------------------------------------------------------------- */\n\nfunction DayButton({\n day: _,\n modifiers,\n className,\n ...props\n}: React.ComponentProps<CustomComponents['DayButton']>): React.JSX.Element {\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n\n React.useEffect(() => {\n if (modifiers.focused) {\n buttonRef.current?.focus();\n }\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={buttonRef}\n className={cn(\n 'focus-visible:-outline-offset-2',\n (!modifiers.selected || modifiers.range_middle) && !modifiers.today && 'hover:bg-transparent',\n modifiers.today && !modifiers.selected && 'bg-accent',\n modifiers.outside && (!modifiers.selected || modifiers.range_middle) && 'text-opacity-30',\n className,\n )}\n size=\"icon-sm\"\n variant={modifiers.selected && !modifiers.range_middle ? 'default' : 'ghost'}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: Calendar\n * -------------------------------------------------------------------------- */\n\ntype CalendarProps = DayPickerProps;\n\nfunction Calendar({ className, classNames, ...props }: CalendarProps): React.JSX.Element {\n return (\n <DayPicker\n className={cn('p-3', className)}\n classNames={{\n [UI.ButtonPrevious]: buttonVariants({\n size: 'icon-xs',\n variant: 'outline',\n className: 'absolute shadow-none start-0',\n }),\n [UI.ButtonNext]: buttonVariants({\n size: 'icon-xs',\n variant: 'outline',\n className: 'absolute shadow-none end-0',\n }),\n [UI.Root]: 'inline-grid gap-4',\n [UI.Chevron]: '',\n [UI.Day]: 'py-0',\n [UI.DayButton]: 'border border-transparent hover:border-primary',\n [UI.CaptionLabel]: 'inline-flex items-center',\n [UI.Dropdowns]: 'inline-flex items-center gap-2',\n [UI.Dropdown]: 'appearance-none opacity-0 absolute size-full',\n [UI.DropdownRoot]: 'relative inline-flex',\n [UI.Footer]: 'text-sm',\n [UI.MonthGrid]: 'block table-fixed border-collapse relative [&>thead]:block space-y-2',\n [UI.MonthCaption]: 'flex text-sm font-medium w-full justify-center',\n [UI.MonthsDropdown]: '',\n [UI.Month]: 'grid gap-4 grid-rows-[2rem_1fr]',\n [UI.Months]: 'relative flex flex-wrap gap-4',\n [UI.Nav]: '-mr-4',\n [UI.Week]: 'flex',\n [UI.Weeks]: 'block space-y-2',\n [UI.Weekday]: 'text-muted-foreground text-sm font-normal flex-1',\n [UI.Weekdays]: 'flex',\n [UI.WeekNumber]: 'text-foreground/50 text-xs size-9 text-center',\n [UI.WeekNumberHeader]: '',\n [UI.YearsDropdown]: '',\n [SelectionState.range_start]: 'bg-gradient-to-r from-transparent to-50% to-accent rounded-l-md',\n [SelectionState.range_middle]: 'bg-accent first:rounded-l-md last:rounded-r-md',\n [SelectionState.range_end]: 'bg-gradient-to-l from-transparent to-50% to-accent rounded-r-md',\n [SelectionState.selected]: '',\n ...classNames,\n }}\n components={{ Chevron, DayButton }}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { Calendar, type CalendarProps, type DateRange };\n"],"mappings":"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","names":["React","DayPicker","SelectionState","UI","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","ChevronUpIcon","DotFilledIcon","jsx","Chevron","orientation","props","ChevronUpIcon","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","DotFilledIcon","DayButton","_","modifiers","className","buttonRef","Button","cn","Calendar","classNames","DayPicker","UI","buttonVariants","SelectionState"]}
@@ -10,7 +10,7 @@ declare const Command: React.ForwardRefExoticComponent<Omit<{
10
10
  ref?: React.Ref<HTMLDivElement>;
11
11
  } & {
12
12
  asChild?: boolean;
13
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
13
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
14
14
  label?: string;
15
15
  shouldFilter?: boolean;
16
16
  filter?: (value: string, search: string, keywords?: string[]) => number;
@@ -28,7 +28,7 @@ declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<
28
28
  ref?: React.Ref<HTMLInputElement>;
29
29
  } & {
30
30
  asChild?: boolean;
31
- }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "type" | "value" | "onChange"> & {
31
+ }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
32
32
  value?: string;
33
33
  onValueChange?: (search: string) => void;
34
34
  } & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
@@ -39,7 +39,7 @@ declare const CommandList: React.ForwardRefExoticComponent<Omit<{
39
39
  ref?: React.Ref<HTMLDivElement>;
40
40
  } & {
41
41
  asChild?: boolean;
42
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
42
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
43
43
  label?: string;
44
44
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
45
45
  type CommandEmptyProps = React.ComponentPropsWithoutRef<typeof Command$1.Empty>;
@@ -49,7 +49,7 @@ declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
49
49
  ref?: React.Ref<HTMLDivElement>;
50
50
  } & {
51
51
  asChild?: boolean;
52
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
52
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
53
53
  type CommandGroupProps = React.ComponentPropsWithoutRef<typeof Command$1.Group>;
54
54
  declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
55
55
  children?: React.ReactNode;
@@ -57,7 +57,7 @@ declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
57
57
  ref?: React.Ref<HTMLDivElement>;
58
58
  } & {
59
59
  asChild?: boolean;
60
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "value" | "heading"> & {
60
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "value" | "heading"> & {
61
61
  heading?: React.ReactNode;
62
62
  value?: string;
63
63
  forceMount?: boolean;
@@ -67,7 +67,7 @@ declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<R
67
67
  ref?: React.Ref<HTMLDivElement>;
68
68
  } & {
69
69
  asChild?: boolean;
70
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
70
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
71
71
  alwaysRender?: boolean;
72
72
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
73
73
  type CommandItemProps = React.ComponentPropsWithoutRef<typeof Command$1.Item>;
@@ -77,7 +77,7 @@ declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
77
77
  ref?: React.Ref<HTMLDivElement>;
78
78
  } & {
79
79
  asChild?: boolean;
80
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "disabled" | "value" | "onSelect"> & {
80
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "onSelect" | "value" | "disabled"> & {
81
81
  disabled?: boolean;
82
82
  onSelect?: (value: string) => void;
83
83
  value?: string;
@@ -91,7 +91,7 @@ declare const CommandLoading: React.ForwardRefExoticComponent<Omit<{
91
91
  ref?: React.Ref<HTMLDivElement>;
92
92
  } & {
93
93
  asChild?: boolean;
94
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
94
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
95
95
  progress?: number;
96
96
  label?: string;
97
97
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -10,7 +10,7 @@ declare const Command: React.ForwardRefExoticComponent<Omit<{
10
10
  ref?: React.Ref<HTMLDivElement>;
11
11
  } & {
12
12
  asChild?: boolean;
13
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
13
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
14
14
  label?: string;
15
15
  shouldFilter?: boolean;
16
16
  filter?: (value: string, search: string, keywords?: string[]) => number;
@@ -28,7 +28,7 @@ declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<
28
28
  ref?: React.Ref<HTMLInputElement>;
29
29
  } & {
30
30
  asChild?: boolean;
31
- }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "type" | "value" | "onChange"> & {
31
+ }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
32
32
  value?: string;
33
33
  onValueChange?: (search: string) => void;
34
34
  } & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
@@ -39,7 +39,7 @@ declare const CommandList: React.ForwardRefExoticComponent<Omit<{
39
39
  ref?: React.Ref<HTMLDivElement>;
40
40
  } & {
41
41
  asChild?: boolean;
42
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
42
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
43
43
  label?: string;
44
44
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
45
45
  type CommandEmptyProps = React.ComponentPropsWithoutRef<typeof Command$1.Empty>;
@@ -49,7 +49,7 @@ declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
49
49
  ref?: React.Ref<HTMLDivElement>;
50
50
  } & {
51
51
  asChild?: boolean;
52
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
52
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
53
53
  type CommandGroupProps = React.ComponentPropsWithoutRef<typeof Command$1.Group>;
54
54
  declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
55
55
  children?: React.ReactNode;
@@ -57,7 +57,7 @@ declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
57
57
  ref?: React.Ref<HTMLDivElement>;
58
58
  } & {
59
59
  asChild?: boolean;
60
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "value" | "heading"> & {
60
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "value" | "heading"> & {
61
61
  heading?: React.ReactNode;
62
62
  value?: string;
63
63
  forceMount?: boolean;
@@ -67,7 +67,7 @@ declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<R
67
67
  ref?: React.Ref<HTMLDivElement>;
68
68
  } & {
69
69
  asChild?: boolean;
70
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
70
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
71
71
  alwaysRender?: boolean;
72
72
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
73
73
  type CommandItemProps = React.ComponentPropsWithoutRef<typeof Command$1.Item>;
@@ -77,7 +77,7 @@ declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
77
77
  ref?: React.Ref<HTMLDivElement>;
78
78
  } & {
79
79
  asChild?: boolean;
80
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "disabled" | "value" | "onSelect"> & {
80
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "onSelect" | "value" | "disabled"> & {
81
81
  disabled?: boolean;
82
82
  onSelect?: (value: string) => void;
83
83
  value?: string;
@@ -91,7 +91,7 @@ declare const CommandLoading: React.ForwardRefExoticComponent<Omit<{
91
91
  ref?: React.Ref<HTMLDivElement>;
92
92
  } & {
93
93
  asChild?: boolean;
94
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
94
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
95
95
  progress?: number;
96
96
  label?: string;
97
97
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/react/data-table.cjs","../../src/react/data-table.tsx"],"names":["DataTableViewOptions","table","jsxs","DropdownMenu","jsx","DropdownMenuTrigger","Button","MixerHorizontalIcon","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","column","DropdownMenuCheckboxItem","value","DataTablePagination","className","props","cn","Select","SelectTrigger","SelectValue","SelectContent","pageSize","SelectItem","DoubleArrowLeftIcon","ChevronLeftIcon","ChevronRightIcon","DoubleArrowRightIcon","DataTableColumnHeader","title","SortIcon","DropdownMenuItem","ArrowUpIcon","ArrowDownIcon","EyeNoneIcon","sorted","CaretSortIcon"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/react/data-table.cjs","sourcesContent":[null,"'use client';\n\nimport * as React from 'react';\nimport {\n ArrowDownIcon,\n ArrowUpIcon,\n CaretSortIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n EyeNoneIcon,\n MixerHorizontalIcon,\n} from '@radix-ui/react-icons';\nimport type * as ReactTable from '@tanstack/react-table';\nimport { cn } from '@/lib/utils';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/react/dropdown-menu';\nimport { Button } from '@/react/button';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/react/select';\n\n/* -----------------------------------------------------------------------------\n * Component: DataTableViewOptions\n * -------------------------------------------------------------------------- */\n\ninterface DataTableViewOptionsProps<TData> {\n table: ReactTable.Table<TData>;\n}\n\nfunction DataTableViewOptions<TData>({ table }: DataTableViewOptionsProps<TData>): React.JSX.Element {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"ml-auto hidden h-8 lg:flex\" size=\"sm\" variant=\"outline\">\n <MixerHorizontalIcon className=\"mr-2 size-4\" />\n View\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-36\">\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => typeof column.accessorFn !== 'undefined' && column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n className=\"capitalize\"\n onCheckedChange={(value) => {\n column.toggleVisibility(Boolean(value));\n }}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DataTablePagination\n * -------------------------------------------------------------------------- */\n\ninterface DataTablePaginationProps<TData> extends React.HTMLAttributes<HTMLDivElement> {\n table: ReactTable.Table<TData>;\n}\n\nfunction DataTablePagination<TData>({\n table,\n className,\n ...props\n}: DataTablePaginationProps<TData>): React.JSX.Element {\n return (\n <div className={cn('flex items-center justify-between px-2', className)} {...props}>\n <div className=\"text-muted-foreground flex-1 text-sm\">\n {table.getFilteredSelectedRowModel().rows.length} of {table.getFilteredRowModel().rows.length} row(s) selected.\n </div>\n <div className=\"flex items-center space-x-6 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <p className=\"text-sm font-medium\">Rows per page</p>\n <Select\n value={String(table.getState().pagination.pageSize)}\n onValueChange={(value) => {\n table.setPageSize(Number(value));\n }}\n >\n <SelectTrigger className=\"w-18 h-8\">\n <SelectValue placeholder={table.getState().pagination.pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {[10, 20, 30, 40, 50].map((pageSize) => (\n <SelectItem key={pageSize} value={String(pageSize)}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex w-28 items-center justify-center text-sm font-medium\">\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n </div>\n <div className=\"flex items-center space-x-2\">\n <Button\n className=\"hidden lg:flex\"\n disabled={!table.getCanPreviousPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.setPageIndex(0);\n }}\n >\n <span className=\"sr-only\">Go to first page</span>\n <DoubleArrowLeftIcon className=\"size-4\" />\n </Button>\n <Button\n disabled={!table.getCanPreviousPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.previousPage();\n }}\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n <Button\n disabled={!table.getCanNextPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.nextPage();\n }}\n >\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n <Button\n className=\"hidden lg:flex\"\n disabled={!table.getCanNextPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.setPageIndex(table.getPageCount() - 1);\n }}\n >\n <span className=\"sr-only\">Go to last page</span>\n <DoubleArrowRightIcon className=\"size-4\" />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DataTableColumnHeader\n * -------------------------------------------------------------------------- */\n\ninterface DataTableColumnHeaderProps<TData, TValue> extends React.HTMLAttributes<HTMLDivElement> {\n column: ReactTable.Column<TData, TValue>;\n title: string;\n}\n\nfunction DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>): React.JSX.Element {\n if (!column.getCanSort()) {\n return <div className={className}>{title}</div>;\n }\n\n return (\n <div className={cn('flex items-center space-x-2', className)}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"data-[state=open]:bg-accent -ml-3\" size=\"xs\" variant=\"ghost\">\n <span>{title}</span>\n <SortIcon sorted={column.getIsSorted()} />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n <DropdownMenuItem\n onClick={() => {\n column.toggleSorting(false);\n }}\n >\n <ArrowUpIcon className=\"text-muted-foreground/70 mr-2 size-3.5\" />\n Asc\n </DropdownMenuItem>\n <DropdownMenuItem\n onClick={() => {\n column.toggleSorting(true);\n }}\n >\n <ArrowDownIcon className=\"text-muted-foreground/70 mr-2 size-3.5\" />\n Desc\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={() => {\n column.toggleVisibility(false);\n }}\n >\n <EyeNoneIcon className=\"text-muted-foreground/70 mr-2 size-3.5\" />\n Hide\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n\nfunction SortIcon({ sorted }: { sorted: false | ReactTable.SortDirection }): React.JSX.Element {\n switch (sorted) {\n case 'desc':\n return <ArrowDownIcon className=\"ml-2 size-4\" />;\n\n case 'asc':\n return <ArrowUpIcon className=\"ml-2 size-4\" />;\n\n default:\n return <CaretSortIcon className=\"ml-2 size-4\" />;\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport {\n DataTableViewOptions,\n DataTablePagination,\n DataTableColumnHeader,\n type DataTableViewOptionsProps,\n type DataTablePaginationProps,\n type DataTableColumnHeaderProps,\n};\n"]}
1
+ {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/react/data-table.cjs","../../src/react/data-table.tsx"],"names":["DataTableViewOptions","table","jsxs","DropdownMenu","jsx","DropdownMenuTrigger","Button","MixerHorizontalIcon","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","column","DropdownMenuCheckboxItem","value","DataTablePagination","className","props","cn","Select","SelectTrigger","SelectValue","SelectContent","pageSize","SelectItem","DoubleArrowLeftIcon","ChevronLeftIcon","ChevronRightIcon","DoubleArrowRightIcon","DataTableColumnHeader","title","SortIcon","DropdownMenuItem","ArrowUpIcon","ArrowDownIcon","EyeNoneIcon","sorted","CaretSortIcon"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/react/data-table.cjs","sourcesContent":[null,"'use client';\n\nimport * as React from 'react';\nimport {\n ArrowDownIcon,\n ArrowUpIcon,\n CaretSortIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n EyeNoneIcon,\n MixerHorizontalIcon,\n} from '@radix-ui/react-icons';\nimport type * as ReactTable from '@tanstack/react-table';\nimport { cn } from '@/lib/utils';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/react/dropdown-menu';\nimport { Button } from '@/react/button';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/react/select';\n\n/* -----------------------------------------------------------------------------\n * Component: DataTableViewOptions\n * -------------------------------------------------------------------------- */\n\ninterface DataTableViewOptionsProps<TData> {\n table: ReactTable.Table<TData>;\n}\n\nfunction DataTableViewOptions<TData>({ table }: DataTableViewOptionsProps<TData>): React.JSX.Element {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"ml-auto hidden h-8 lg:flex\" size=\"sm\" variant=\"outline\">\n <MixerHorizontalIcon className=\"mr-2 size-4\" />\n View\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-36\">\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => typeof column.accessorFn !== 'undefined' && column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n className=\"capitalize\"\n onCheckedChange={(value) => {\n column.toggleVisibility(Boolean(value));\n }}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DataTablePagination\n * -------------------------------------------------------------------------- */\n\ninterface DataTablePaginationProps<TData> extends React.HTMLAttributes<HTMLDivElement> {\n table: ReactTable.Table<TData>;\n}\n\nfunction DataTablePagination<TData>({\n table,\n className,\n ...props\n}: DataTablePaginationProps<TData>): React.JSX.Element {\n return (\n <div className={cn('flex items-center justify-between px-2', className)} {...props}>\n <div className=\"text-muted-foreground flex-1 text-sm\">\n {table.getFilteredSelectedRowModel().rows.length} of {table.getFilteredRowModel().rows.length} row(s) selected.\n </div>\n <div className=\"flex items-center space-x-6 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <p className=\"text-sm font-medium\">Rows per page</p>\n <Select\n value={String(table.getState().pagination.pageSize)}\n onValueChange={(value) => {\n table.setPageSize(Number(value));\n }}\n >\n <SelectTrigger className=\"w-18 h-8\">\n <SelectValue placeholder={table.getState().pagination.pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {[10, 20, 30, 40, 50].map((pageSize) => (\n <SelectItem key={pageSize} value={String(pageSize)}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex w-28 items-center justify-center text-sm font-medium\">\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n </div>\n <div className=\"flex items-center space-x-2\">\n <Button\n className=\"hidden lg:flex\"\n disabled={!table.getCanPreviousPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.setPageIndex(0);\n }}\n >\n <span className=\"sr-only\">Go to first page</span>\n <DoubleArrowLeftIcon className=\"size-4\" />\n </Button>\n <Button\n disabled={!table.getCanPreviousPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.previousPage();\n }}\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n <Button\n disabled={!table.getCanNextPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.nextPage();\n }}\n >\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n <Button\n className=\"hidden lg:flex\"\n disabled={!table.getCanNextPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.setPageIndex(table.getPageCount() - 1);\n }}\n >\n <span className=\"sr-only\">Go to last page</span>\n <DoubleArrowRightIcon className=\"size-4\" />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DataTableColumnHeader\n * -------------------------------------------------------------------------- */\n\ninterface DataTableColumnHeaderProps<TData, TValue> extends React.HTMLAttributes<HTMLDivElement> {\n column: ReactTable.Column<TData, TValue>;\n title: string;\n}\n\nfunction DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>): React.JSX.Element {\n if (!column.getCanSort()) {\n return <div className={className}>{title}</div>;\n }\n\n return (\n <div className={cn('flex items-center space-x-2', className)}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"data-[state=open]:bg-accent -ml-3\" size=\"xs\" variant=\"ghost\">\n <span>{title}</span>\n <SortIcon sorted={column.getIsSorted()} />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n <DropdownMenuItem\n onClick={() => {\n column.toggleSorting(false);\n }}\n >\n <ArrowUpIcon className=\"text-muted-foreground/70 mr-2 size-3.5\" />\n Asc\n </DropdownMenuItem>\n <DropdownMenuItem\n onClick={() => {\n column.toggleSorting(true);\n }}\n >\n <ArrowDownIcon className=\"text-muted-foreground/70 mr-2 size-3.5\" />\n Desc\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={() => {\n column.toggleVisibility(false);\n }}\n >\n <EyeNoneIcon className=\"text-muted-foreground/70 mr-2 size-3.5\" />\n Hide\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n\nfunction SortIcon({ sorted }: { sorted: false | ReactTable.SortDirection }): React.JSX.Element {\n switch (sorted) {\n case 'desc': {\n return <ArrowDownIcon className=\"ml-2 size-4\" />;\n }\n\n case 'asc': {\n return <ArrowUpIcon className=\"ml-2 size-4\" />;\n }\n\n default:\n return <CaretSortIcon className=\"ml-2 size-4\" />;\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport {\n DataTableViewOptions,\n DataTablePagination,\n DataTableColumnHeader,\n type DataTableViewOptionsProps,\n type DataTablePaginationProps,\n type DataTableColumnHeaderProps,\n};\n"]}