@codefast/ui 0.3.9 → 0.3.11-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +277 -167
  3. package/dist/components/accordion.cjs +97 -1
  4. package/dist/components/accordion.js +51 -1
  5. package/dist/components/alert-dialog.cjs +155 -1
  6. package/dist/components/alert-dialog.d.ts +2 -2
  7. package/dist/components/alert-dialog.js +94 -1
  8. package/dist/components/alert.cjs +84 -1
  9. package/dist/components/alert.d.ts +1 -1
  10. package/dist/components/alert.js +41 -1
  11. package/dist/components/aspect-ratio.cjs +43 -1
  12. package/dist/components/aspect-ratio.js +9 -1
  13. package/dist/components/avatar.cjs +65 -1
  14. package/dist/components/avatar.js +25 -1
  15. package/dist/components/badge.cjs +66 -1
  16. package/dist/components/badge.d.ts +1 -1
  17. package/dist/components/badge.js +29 -1
  18. package/dist/components/breadcrumb.cjs +124 -1
  19. package/dist/components/breadcrumb.js +72 -1
  20. package/dist/components/button-group.cjs +86 -1
  21. package/dist/components/button-group.d.ts +1 -1
  22. package/dist/components/button-group.js +43 -1
  23. package/dist/components/button.cjs +92 -1
  24. package/dist/components/button.d.ts +1 -1
  25. package/dist/components/button.js +55 -1
  26. package/dist/components/calendar.cjs +150 -1
  27. package/dist/components/calendar.d.ts +11 -18
  28. package/dist/components/calendar.js +113 -1
  29. package/dist/components/card.cjs +105 -1
  30. package/dist/components/card.js +53 -1
  31. package/dist/components/carousel.cjs +210 -1
  32. package/dist/components/carousel.d.ts +1 -1
  33. package/dist/components/carousel.js +151 -1
  34. package/dist/components/chart.cjs +250 -3
  35. package/dist/components/chart.d.ts +5 -4
  36. package/dist/components/chart.js +198 -3
  37. package/dist/components/checkbox-cards.cjs +69 -1
  38. package/dist/components/checkbox-cards.js +32 -1
  39. package/dist/components/checkbox-group.cjs +63 -1
  40. package/dist/components/checkbox-group.js +26 -1
  41. package/dist/components/checkbox.cjs +53 -1
  42. package/dist/components/checkbox.js +19 -1
  43. package/dist/components/collapsible.cjs +61 -1
  44. package/dist/components/collapsible.js +21 -1
  45. package/dist/components/command.cjs +167 -1
  46. package/dist/components/command.js +106 -1
  47. package/dist/components/context-menu.cjs +218 -1
  48. package/dist/components/context-menu.js +142 -1
  49. package/dist/components/dialog.cjs +164 -1
  50. package/dist/components/dialog.d.ts +2 -2
  51. package/dist/components/dialog.js +106 -1
  52. package/dist/components/drawer.cjs +143 -1
  53. package/dist/components/drawer.d.ts +1 -1
  54. package/dist/components/drawer.js +85 -1
  55. package/dist/components/dropdown-menu.cjs +221 -1
  56. package/dist/components/dropdown-menu.js +145 -1
  57. package/dist/components/empty.cjs +113 -1
  58. package/dist/components/empty.d.ts +1 -1
  59. package/dist/components/empty.js +61 -1
  60. package/dist/components/field.cjs +193 -1
  61. package/dist/components/field.d.ts +1 -1
  62. package/dist/components/field.js +129 -1
  63. package/dist/components/form.cjs +151 -1
  64. package/dist/components/form.d.ts +3 -3
  65. package/dist/components/form.js +96 -1
  66. package/dist/components/hover-card.cjs +77 -1
  67. package/dist/components/hover-card.js +34 -1
  68. package/dist/components/input-group.cjs +155 -1
  69. package/dist/components/input-group.d.ts +1 -1
  70. package/dist/components/input-group.js +97 -1
  71. package/dist/components/input-number.cjs +98 -1
  72. package/dist/components/input-number.js +64 -1
  73. package/dist/components/input-otp.cjs +101 -1
  74. package/dist/components/input-otp.js +49 -1
  75. package/dist/components/input-password.cjs +71 -1
  76. package/dist/components/input-password.js +37 -1
  77. package/dist/components/input-search.cjs +80 -1
  78. package/dist/components/input-search.js +46 -1
  79. package/dist/components/input.cjs +45 -1
  80. package/dist/components/input.js +11 -1
  81. package/dist/components/item.cjs +186 -1
  82. package/dist/components/item.d.ts +1 -1
  83. package/dist/components/item.js +119 -1
  84. package/dist/components/kbd.cjs +54 -1
  85. package/dist/components/kbd.js +17 -1
  86. package/dist/components/label.cjs +45 -1
  87. package/dist/components/label.js +11 -1
  88. package/dist/components/menubar.cjs +232 -1
  89. package/dist/components/menubar.js +153 -1
  90. package/dist/components/native-select.cjs +75 -1
  91. package/dist/components/native-select.js +35 -1
  92. package/dist/components/navigation-menu.cjs +146 -2
  93. package/dist/components/navigation-menu.js +94 -2
  94. package/dist/components/pagination.cjs +138 -1
  95. package/dist/components/pagination.d.ts +1 -1
  96. package/dist/components/pagination.js +86 -1
  97. package/dist/components/popover.cjs +86 -1
  98. package/dist/components/popover.js +40 -1
  99. package/dist/components/progress-circle.cjs +184 -1
  100. package/dist/components/progress-circle.d.ts +1 -1
  101. package/dist/components/progress-circle.js +147 -1
  102. package/dist/components/progress.cjs +52 -1
  103. package/dist/components/progress.js +18 -1
  104. package/dist/components/radio-cards.cjs +66 -1
  105. package/dist/components/radio-cards.js +29 -1
  106. package/dist/components/radio-group.cjs +59 -1
  107. package/dist/components/radio-group.js +22 -1
  108. package/dist/components/radio.cjs +47 -1
  109. package/dist/components/radio.js +13 -1
  110. package/dist/components/resizable.cjs +71 -1
  111. package/dist/components/resizable.d.ts +6 -6
  112. package/dist/components/resizable.js +31 -1
  113. package/dist/components/scroll-area.cjs +140 -1
  114. package/dist/components/scroll-area.d.ts +1 -1
  115. package/dist/components/scroll-area.js +100 -1
  116. package/dist/components/select.cjs +180 -1
  117. package/dist/components/select.d.ts +2 -2
  118. package/dist/components/select.js +119 -1
  119. package/dist/components/separator.cjs +82 -1
  120. package/dist/components/separator.d.ts +1 -1
  121. package/dist/components/separator.js +42 -1
  122. package/dist/components/sheet.cjs +184 -1
  123. package/dist/components/sheet.d.ts +2 -2
  124. package/dist/components/sheet.js +123 -1
  125. package/dist/components/sidebar.cjs +506 -1
  126. package/dist/components/sidebar.d.ts +1 -1
  127. package/dist/components/sidebar.js +400 -1
  128. package/dist/components/skeleton.cjs +44 -1
  129. package/dist/components/skeleton.js +10 -1
  130. package/dist/components/slider.cjs +79 -1
  131. package/dist/components/slider.js +45 -1
  132. package/dist/components/sonner.cjs +57 -1
  133. package/dist/components/sonner.js +17 -1
  134. package/dist/components/spinner.cjs +75 -1
  135. package/dist/components/spinner.js +41 -1
  136. package/dist/components/switch.cjs +49 -1
  137. package/dist/components/switch.js +15 -1
  138. package/dist/components/table.cjs +118 -1
  139. package/dist/components/table.js +63 -1
  140. package/dist/components/tabs.cjs +75 -1
  141. package/dist/components/tabs.d.ts +1 -1
  142. package/dist/components/tabs.js +32 -1
  143. package/dist/components/textarea.cjs +44 -1
  144. package/dist/components/textarea.js +10 -1
  145. package/dist/components/toggle-group.cjs +90 -1
  146. package/dist/components/toggle-group.d.ts +8 -10
  147. package/dist/components/toggle-group.js +53 -1
  148. package/dist/components/toggle.cjs +71 -1
  149. package/dist/components/toggle.d.ts +8 -10
  150. package/dist/components/toggle.js +34 -1
  151. package/dist/components/tooltip.cjs +90 -1
  152. package/dist/components/tooltip.js +44 -1
  153. package/dist/css/amber.css +95 -1
  154. package/dist/css/blue.css +95 -1
  155. package/dist/css/cyan.css +95 -1
  156. package/dist/css/emerald.css +95 -1
  157. package/dist/css/fuchsia.css +95 -1
  158. package/dist/css/gray.css +95 -1
  159. package/dist/css/green.css +95 -1
  160. package/dist/css/indigo.css +95 -1
  161. package/dist/css/lime.css +95 -1
  162. package/dist/css/neutral.css +95 -1
  163. package/dist/css/orange.css +95 -1
  164. package/dist/css/pink.css +95 -1
  165. package/dist/css/preset.css +118 -1
  166. package/dist/css/purple.css +95 -1
  167. package/dist/css/red.css +95 -1
  168. package/dist/css/rose.css +95 -1
  169. package/dist/css/sky.css +95 -1
  170. package/dist/css/slate.css +95 -1
  171. package/dist/css/stone.css +95 -1
  172. package/dist/css/style.css +3 -1
  173. package/dist/css/teal.css +95 -1
  174. package/dist/css/violet.css +95 -1
  175. package/dist/css/yellow.css +95 -1
  176. package/dist/css/zinc.css +95 -1
  177. package/dist/hooks/use-animated-value.cjs +74 -1
  178. package/dist/hooks/use-animated-value.d.ts +9 -10
  179. package/dist/hooks/use-animated-value.js +40 -1
  180. package/dist/hooks/use-copy-to-clipboard.cjs +57 -1
  181. package/dist/hooks/use-copy-to-clipboard.d.ts +17 -0
  182. package/dist/hooks/use-copy-to-clipboard.js +23 -1
  183. package/dist/hooks/use-is-mobile.cjs +39 -1
  184. package/dist/hooks/use-is-mobile.d.ts +15 -6
  185. package/dist/hooks/use-is-mobile.js +5 -1
  186. package/dist/hooks/use-media-query.cjs +56 -1
  187. package/dist/hooks/use-media-query.d.ts +11 -3
  188. package/dist/hooks/use-media-query.js +22 -1
  189. package/dist/hooks/use-mutation-observer.cjs +56 -1
  190. package/dist/hooks/use-mutation-observer.d.ts +7 -11
  191. package/dist/hooks/use-mutation-observer.js +22 -1
  192. package/dist/hooks/use-pagination.cjs +92 -1
  193. package/dist/hooks/use-pagination.d.ts +12 -10
  194. package/dist/hooks/use-pagination.js +55 -1
  195. package/dist/index.cjs +1081 -1
  196. package/dist/index.d.ts +4 -5
  197. package/dist/index.js +69 -1
  198. package/dist/primitives/checkbox-group.cjs +151 -1
  199. package/dist/primitives/checkbox-group.d.ts +1 -1
  200. package/dist/primitives/checkbox-group.js +99 -1
  201. package/dist/primitives/input-number.cjs +439 -1
  202. package/dist/primitives/input-number.d.ts +1 -1
  203. package/dist/primitives/input-number.js +381 -1
  204. package/dist/primitives/input.cjs +99 -1
  205. package/dist/primitives/input.d.ts +1 -1
  206. package/dist/primitives/input.js +53 -1
  207. package/dist/primitives/progress-circle.cjs +198 -1
  208. package/dist/primitives/progress-circle.d.ts +1 -1
  209. package/dist/primitives/progress-circle.js +128 -1
  210. package/package.json +405 -62
@@ -1 +1,439 @@
1
- "use strict";const __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DecrementButton:()=>InputNumberDecrementButton,InputNumberField:()=>InputNumberField,InputNumberDecrementButton:()=>InputNumberDecrementButton,IncrementButton:()=>InputNumberIncrementButton,Root:()=>InputNumber,InputNumber:()=>InputNumber,Field:()=>InputNumberField,InputNumberIncrementButton:()=>InputNumberIncrementButton,createInputNumberScope:()=>createInputNumberScope});const jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_react_namespaceObject=require("react"),external_input_cjs_namespaceObject=require("./input.cjs"),primitive_namespaceObject=require("@radix-ui/primitive"),react_context_namespaceObject=require("@radix-ui/react-context"),react_use_controllable_state_namespaceObject=require("@radix-ui/react-use-controllable-state"),NUMBER_INPUT_NAME="InputNumber",[createInputNumberContext,createInputNumberScope]=(0,react_context_namespaceObject.createContextScope)(NUMBER_INPUT_NAME,[external_input_cjs_namespaceObject.createInputScope]),useInputScope=(0,external_input_cjs_namespaceObject.createInputScope)(),[InputNumberContextProvider,useInputNumberContext]=createInputNumberContext(NUMBER_INPUT_NAME);function InputNumber(e){let{__scopeInputNumber:t,ariaDecrementLabel:r,ariaIncrementLabel:n,defaultValue:a,formatOptions:c={minimumFractionDigits:0,style:"decimal"},id:u,locale:_,max:p,min:o,onChange:l,step:s=1,value:m,...i}=e,b=useInputScope(t),x=(0,external_react_namespaceObject.useRef)(null),[N,d]=(0,react_use_controllable_state_namespaceObject.useControllableState)({defaultProp:a,onChange:l,prop:m}),{decimalSeparator:I,thousandSeparator:f}=(0,external_react_namespaceObject.useMemo)(()=>getNumberFormatSeparators(_),[_]),j=(0,external_react_namespaceObject.useCallback)(e=>void 0===e||Number.isNaN(e)?"":new Intl.NumberFormat(_,c).format(e),[c,_]),O=(0,external_react_namespaceObject.useCallback)(e=>{if("number"==typeof e)return clamp(e,o,p);if("string"!=typeof e)return NaN;let t=e.trim().replaceAll(/[^\d.,\-()]/g,"");if(""===t)return NaN;let r=Number.parseFloat(normalizeInputValue(t,f,I));return"percent"===c.style&&(r/=100),Number.isNaN(r)?0:clamp(r,o,p)},[I,c.style,p,o,f]),k=(0,external_react_namespaceObject.useCallback)(e=>{let t=x.current;if(!t||i.disabled||i.readOnly)return;let r=clamp(e(O(t.value)||0),o,p);t.value=j(r),d(r)},[i.disabled,j,p,o,O,i.readOnly,d]),v=(0,external_react_namespaceObject.useCallback)(()=>{k(e=>e+s)},[k,s]),w=(0,external_react_namespaceObject.useCallback)(()=>{k(e=>e-s)},[k,s]),y=(0,external_react_namespaceObject.useCallback)(()=>{k(e=>p??e+s)},[k,p,s]),B=(0,external_react_namespaceObject.useCallback)(()=>{k(e=>o??e-s)},[k,o,s]);return(0,jsx_runtime_namespaceObject.jsx)(InputNumberContextProvider,{ariaDecrementLabel:r,ariaIncrementLabel:n,defaultValue:a,disabled:i.disabled,formatOptions:c,formatValue:j,id:u,inputRef:x,max:p,min:o,parseValue:O,readOnly:i.readOnly,scope:t,value:N,onChange:d,onDecrement:w,onDecrementToMin:B,onIncrement:v,onIncrementToMax:y,children:(0,jsx_runtime_namespaceObject.jsx)(external_input_cjs_namespaceObject.Root,{...b,...i})})}const NUMBER_INPUT_FIELD_NAME="InputNumberField";function InputNumberField({__scopeInputNumber:e,onBlur:t,onKeyDown:r,...n}){let a=useInputScope(e),{defaultValue:c,disabled:u,formatValue:_,id:p,inputRef:o,max:l,min:s,onChange:m,onDecrement:i,onDecrementToMin:b,onIncrement:x,onIncrementToMax:N,parseValue:d,readOnly:I,step:f,value:j}=useInputNumberContext("InputNumberField",e),O=(0,external_react_namespaceObject.useCallback)(e=>{let t=d(e.target.value),r=_(t);r!==e.target.value&&(e.target.value=r),m(t)},[_,m,d]),k=(0,external_react_namespaceObject.useCallback)(e=>{switch(e.key){case"ArrowUp":x(),e.preventDefault();break;case"PageUp":N(),e.preventDefault();break;case"ArrowDown":i(),e.preventDefault();break;case"PageDown":b(),e.preventDefault()}},[x,N,i,b]),v=(0,external_react_namespaceObject.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(isNumberKey(e.key)||isModifierKey(e)||isFunctionKey(e.key))return;e.preventDefault()}},[]),w=(0,external_react_namespaceObject.useCallback)(e=>{let t=o.current;if("Enter"!==e.key||!t)return;let r=d(t.value),n=_(r);n!==t.value&&(t.value=n),m(r)},[_,o,m,d]),y=(0,external_react_namespaceObject.useCallback)(e=>{(0,primitive_namespaceObject.composeEventHandlers)(r,chain(v,k,w))(e)},[r,k,w,v]);return(0,external_react_namespaceObject.useEffect)(()=>{let e=e=>{let t=o.current;!t||u||I||document.activeElement!==t||(e.preventDefault(),e.deltaY>0?x():i())},t=o.current;return t?.addEventListener("wheel",e),()=>{t?.removeEventListener("wheel",e)}},[x,i,o,u,I]),(0,external_react_namespaceObject.useEffect)(()=>{let e=o.current;e&&e!==document.activeElement&&(e.value=_(j))},[_,o,j]),(0,external_react_namespaceObject.useEffect)(()=>{let e=o.current;if(!e)return;let t=()=>{m(d(c))},r=e.form;return r?.addEventListener("reset",t),()=>{r?.removeEventListener("reset",t)}},[c,o,m,d]),(0,jsx_runtime_namespaceObject.jsx)(external_input_cjs_namespaceObject.Field,{ref:o,defaultValue:_(j),disabled:u,id:p,inputMode:"decimal",max:l,min:s,readOnly:I,step:f,onBlur:(0,primitive_namespaceObject.composeEventHandlers)(t,O),onKeyDown:y,...a,...n})}const NUMBER_STEPPER_BUTTON_NAME="NumberStepperButton";function NumberStepperButton({__scopeInputNumber:e,operation:t,...r}){let{ariaDecrementLabel:n,ariaIncrementLabel:a,disabled:c,id:u,max:_,min:p,onDecrement:o,onIncrement:l,value:s}=useInputNumberContext("NumberStepperButton",e),m=(0,external_react_namespaceObject.useMemo)(()=>{let e=void 0!==p&&void 0!==s&&s<=p,t=void 0!==_&&void 0!==s&&s>=_;return(c??e)||t},[p,_,s,c]),i=(0,external_react_namespaceObject.useRef)(null),b=(0,external_react_namespaceObject.useCallback)(e=>{let t=()=>{e(),i.current=setTimeout(t,100)};e(),i.current=setTimeout(t,200)},[]),x=(0,external_react_namespaceObject.useCallback)(()=>{i.current&&(clearTimeout(i.current),i.current=null)},[]),N=(0,external_react_namespaceObject.useCallback)(()=>{b("increment"===t?l:o)},[o,l,t,b]),d=(0,external_react_namespaceObject.useCallback)(e=>{e.preventDefault()},[]),I=(0,external_react_namespaceObject.useCallback)(e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),("increment"===t?l:o)())},[o,l,t]);return(0,jsx_runtime_namespaceObject.jsx)("button",{"aria-controls":u,"aria-label":"increment"===t?a:n,"aria-live":"polite",disabled:m,type:"button",onContextMenu:d,onKeyDown:I,onPointerCancel:x,onPointerDown:N,onPointerLeave:x,onPointerUp:x,...r})}function InputNumberIncrementButton(e){return(0,jsx_runtime_namespaceObject.jsx)(NumberStepperButton,{operation:"increment",...e})}function InputNumberDecrementButton(e){return(0,jsx_runtime_namespaceObject.jsx)(NumberStepperButton,{operation:"decrement",...e})}function chain(...e){return(...t)=>{for(let r of e)r(...t)}}function getNumberFormatSeparators(e){let t=new Intl.NumberFormat(e).formatToParts(12345.6),r="",n="";for(let e of t)if("group"===e.type&&(r=e.value),"decimal"===e.type&&(n=e.value),r&&n)break;return{decimalSeparator:n,thousandSeparator:r}}function normalizeInputValue(e,t,r){return e.replaceAll(RegExp(`\\${t}`,"g"),"").replace(RegExp(`\\${r}`),".").replaceAll(/[()]/g,"-")}function isModifierKey(e){return e.ctrlKey||e.altKey||e.metaKey||e.shiftKey}function isFunctionKey(e){return e.startsWith("F")&&e.length>1}function isNumberKey(e){return!Number.isNaN(Number(e))}function clamp(e,t=-1/0,r=1/0){return Math.min(Math.max(e,t),r)}for(var __webpack_i__ in exports.DecrementButton=__webpack_exports__.DecrementButton,exports.Field=__webpack_exports__.Field,exports.IncrementButton=__webpack_exports__.IncrementButton,exports.InputNumber=__webpack_exports__.InputNumber,exports.InputNumberDecrementButton=__webpack_exports__.InputNumberDecrementButton,exports.InputNumberField=__webpack_exports__.InputNumberField,exports.InputNumberIncrementButton=__webpack_exports__.InputNumberIncrementButton,exports.Root=__webpack_exports__.Root,exports.createInputNumberScope=__webpack_exports__.createInputNumberScope,__webpack_exports__)-1===["DecrementButton","Field","IncrementButton","InputNumber","InputNumberDecrementButton","InputNumberField","InputNumberIncrementButton","Root","createInputNumberScope"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ DecrementButton: ()=>InputNumberDecrementButton,
28
+ InputNumberField: ()=>InputNumberField,
29
+ InputNumberDecrementButton: ()=>InputNumberDecrementButton,
30
+ IncrementButton: ()=>InputNumberIncrementButton,
31
+ Root: ()=>InputNumber,
32
+ InputNumber: ()=>InputNumber,
33
+ Field: ()=>InputNumberField,
34
+ InputNumberIncrementButton: ()=>InputNumberIncrementButton,
35
+ createInputNumberScope: ()=>createInputNumberScope
36
+ });
37
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
38
+ const primitive_namespaceObject = require("@radix-ui/primitive");
39
+ const react_context_namespaceObject = require("@radix-ui/react-context");
40
+ const react_use_controllable_state_namespaceObject = require("@radix-ui/react-use-controllable-state");
41
+ const external_react_namespaceObject = require("react");
42
+ const external_input_cjs_namespaceObject = require("./input.cjs");
43
+ const NUMBER_INPUT_NAME = "InputNumber";
44
+ const [createInputNumberContext, createInputNumberScope] = (0, react_context_namespaceObject.createContextScope)(NUMBER_INPUT_NAME, [
45
+ external_input_cjs_namespaceObject.createInputScope
46
+ ]);
47
+ const useInputScope = (0, external_input_cjs_namespaceObject.createInputScope)();
48
+ const [InputNumberContextProvider, useInputNumberContext] = createInputNumberContext(NUMBER_INPUT_NAME);
49
+ function InputNumber(numberInputProps) {
50
+ const { __scopeInputNumber, ariaDecrementLabel, ariaIncrementLabel, defaultValue, formatOptions = {
51
+ minimumFractionDigits: 0,
52
+ style: "decimal"
53
+ }, id, locale, max, min, onChange, step = 1, value: valueProperty, ...props } = numberInputProps;
54
+ const inputScope = useInputScope(__scopeInputNumber);
55
+ const inputRef = (0, external_react_namespaceObject.useRef)(null);
56
+ const [value, setValue] = (0, react_use_controllable_state_namespaceObject.useControllableState)({
57
+ defaultProp: defaultValue,
58
+ onChange,
59
+ prop: valueProperty
60
+ });
61
+ const { decimalSeparator, thousandSeparator } = (0, external_react_namespaceObject.useMemo)(()=>getNumberFormatSeparators(locale), [
62
+ locale
63
+ ]);
64
+ const formatValue = (0, external_react_namespaceObject.useCallback)((inputValue)=>{
65
+ if (void 0 === inputValue || Number.isNaN(inputValue)) return "";
66
+ return new Intl.NumberFormat(locale, formatOptions).format(inputValue);
67
+ }, [
68
+ formatOptions,
69
+ locale
70
+ ]);
71
+ const parseValue = (0, external_react_namespaceObject.useCallback)((inputValue)=>{
72
+ if ("number" == typeof inputValue) return clamp(inputValue, min, max);
73
+ if ("string" != typeof inputValue) return NaN;
74
+ const cleanedValue = inputValue.trim().replaceAll(/[^\d.,\-()]/g, "");
75
+ if ("" === cleanedValue) return NaN;
76
+ const normalizedValue = normalizeInputValue(cleanedValue, thousandSeparator, decimalSeparator);
77
+ let parsedValue = Number.parseFloat(normalizedValue);
78
+ if ("percent" === formatOptions.style) parsedValue /= 100;
79
+ return Number.isNaN(parsedValue) ? 0 : clamp(parsedValue, min, max);
80
+ }, [
81
+ decimalSeparator,
82
+ formatOptions.style,
83
+ max,
84
+ min,
85
+ thousandSeparator
86
+ ]);
87
+ const changeNumberValue = (0, external_react_namespaceObject.useCallback)((operation)=>{
88
+ const inputElement = inputRef.current;
89
+ if (!inputElement || props.disabled || props.readOnly) return;
90
+ const currentValue = parseValue(inputElement.value) || 0;
91
+ const newValue = clamp(operation(currentValue), min, max);
92
+ inputElement.value = formatValue(newValue);
93
+ setValue(newValue);
94
+ }, [
95
+ props.disabled,
96
+ formatValue,
97
+ max,
98
+ min,
99
+ parseValue,
100
+ props.readOnly,
101
+ setValue
102
+ ]);
103
+ const handleIncrement = (0, external_react_namespaceObject.useCallback)(()=>{
104
+ changeNumberValue((number)=>number + step);
105
+ }, [
106
+ changeNumberValue,
107
+ step
108
+ ]);
109
+ const handleDecrement = (0, external_react_namespaceObject.useCallback)(()=>{
110
+ changeNumberValue((number)=>number - step);
111
+ }, [
112
+ changeNumberValue,
113
+ step
114
+ ]);
115
+ const handleIncrementToMax = (0, external_react_namespaceObject.useCallback)(()=>{
116
+ changeNumberValue((number)=>max ?? number + step);
117
+ }, [
118
+ changeNumberValue,
119
+ max,
120
+ step
121
+ ]);
122
+ const handleDecrementToMin = (0, external_react_namespaceObject.useCallback)(()=>{
123
+ changeNumberValue((number)=>min ?? number - step);
124
+ }, [
125
+ changeNumberValue,
126
+ min,
127
+ step
128
+ ]);
129
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(InputNumberContextProvider, {
130
+ ariaDecrementLabel: ariaDecrementLabel,
131
+ ariaIncrementLabel: ariaIncrementLabel,
132
+ defaultValue: defaultValue,
133
+ disabled: props.disabled,
134
+ formatOptions: formatOptions,
135
+ formatValue: formatValue,
136
+ id: id,
137
+ inputRef: inputRef,
138
+ max: max,
139
+ min: min,
140
+ parseValue: parseValue,
141
+ readOnly: props.readOnly,
142
+ scope: __scopeInputNumber,
143
+ value: value,
144
+ onChange: setValue,
145
+ onDecrement: handleDecrement,
146
+ onDecrementToMin: handleDecrementToMin,
147
+ onIncrement: handleIncrement,
148
+ onIncrementToMax: handleIncrementToMax,
149
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_input_cjs_namespaceObject.Root, {
150
+ ...inputScope,
151
+ ...props
152
+ })
153
+ });
154
+ }
155
+ const NUMBER_INPUT_FIELD_NAME = "InputNumberField";
156
+ function InputNumberField({ __scopeInputNumber, onBlur, onKeyDown, ...props }) {
157
+ const inputScope = useInputScope(__scopeInputNumber);
158
+ const { defaultValue, disabled, formatValue, id, inputRef, max, min, onChange, onDecrement, onDecrementToMin, onIncrement, onIncrementToMax, parseValue, readOnly, step, value } = useInputNumberContext(NUMBER_INPUT_FIELD_NAME, __scopeInputNumber);
159
+ const handleBlur = (0, external_react_namespaceObject.useCallback)((event)=>{
160
+ const numericValue = parseValue(event.target.value);
161
+ const formattedValue = formatValue(numericValue);
162
+ if (formattedValue !== event.target.value) event.target.value = formattedValue;
163
+ onChange(numericValue);
164
+ }, [
165
+ formatValue,
166
+ onChange,
167
+ parseValue
168
+ ]);
169
+ const handleKeyDown = (0, external_react_namespaceObject.useCallback)((event)=>{
170
+ switch(event.key){
171
+ case "ArrowUp":
172
+ onIncrement();
173
+ event.preventDefault();
174
+ break;
175
+ case "PageUp":
176
+ onIncrementToMax();
177
+ event.preventDefault();
178
+ break;
179
+ case "ArrowDown":
180
+ onDecrement();
181
+ event.preventDefault();
182
+ break;
183
+ case "PageDown":
184
+ onDecrementToMin();
185
+ event.preventDefault();
186
+ break;
187
+ default:
188
+ break;
189
+ }
190
+ }, [
191
+ onIncrement,
192
+ onIncrementToMax,
193
+ onDecrement,
194
+ onDecrementToMin
195
+ ]);
196
+ const handleKeyDownPrevent = (0, external_react_namespaceObject.useCallback)((event)=>{
197
+ switch(event.key){
198
+ case "ArrowUp":
199
+ case "ArrowDown":
200
+ case "ArrowLeft":
201
+ case "ArrowRight":
202
+ case "PageUp":
203
+ case "PageDown":
204
+ case "Tab":
205
+ case "Escape":
206
+ case "Enter":
207
+ case "Backspace":
208
+ case "Delete":
209
+ case "Home":
210
+ case "End":
211
+ case ".":
212
+ case ",":
213
+ case "-":
214
+ case "%":
215
+ return;
216
+ default:
217
+ if (isNumberKey(event.key) || isModifierKey(event) || isFunctionKey(event.key)) return;
218
+ event.preventDefault();
219
+ }
220
+ }, []);
221
+ const handleKeyDownEnter = (0, external_react_namespaceObject.useCallback)((event)=>{
222
+ const inputElement = inputRef.current;
223
+ if ("Enter" !== event.key || !inputElement) return;
224
+ const numericValue = parseValue(inputElement.value);
225
+ const formattedValue = formatValue(numericValue);
226
+ if (formattedValue !== inputElement.value) inputElement.value = formattedValue;
227
+ onChange(numericValue);
228
+ }, [
229
+ formatValue,
230
+ inputRef,
231
+ onChange,
232
+ parseValue
233
+ ]);
234
+ const combinedKeyDownHandler = (0, external_react_namespaceObject.useCallback)((event)=>{
235
+ (0, primitive_namespaceObject.composeEventHandlers)(onKeyDown, chain(handleKeyDownPrevent, handleKeyDown, handleKeyDownEnter))(event);
236
+ }, [
237
+ onKeyDown,
238
+ handleKeyDown,
239
+ handleKeyDownEnter,
240
+ handleKeyDownPrevent
241
+ ]);
242
+ (0, external_react_namespaceObject.useEffect)(()=>{
243
+ const handleWheel = (event)=>{
244
+ const inputElement = inputRef.current;
245
+ if (!inputElement || disabled || readOnly || document.activeElement !== inputElement) return;
246
+ event.preventDefault();
247
+ if (event.deltaY > 0) onIncrement();
248
+ else onDecrement();
249
+ };
250
+ const inputElement = inputRef.current;
251
+ inputElement?.addEventListener("wheel", handleWheel);
252
+ return ()=>{
253
+ inputElement?.removeEventListener("wheel", handleWheel);
254
+ };
255
+ }, [
256
+ onIncrement,
257
+ onDecrement,
258
+ inputRef,
259
+ disabled,
260
+ readOnly
261
+ ]);
262
+ (0, external_react_namespaceObject.useEffect)(()=>{
263
+ const inputElement = inputRef.current;
264
+ if (inputElement && inputElement !== document.activeElement) inputElement.value = formatValue(value);
265
+ }, [
266
+ formatValue,
267
+ inputRef,
268
+ value
269
+ ]);
270
+ (0, external_react_namespaceObject.useEffect)(()=>{
271
+ const inputElement = inputRef.current;
272
+ if (!inputElement) return;
273
+ const handleReset = ()=>{
274
+ onChange(parseValue(defaultValue));
275
+ };
276
+ const form = inputElement.form;
277
+ form?.addEventListener("reset", handleReset);
278
+ return ()=>{
279
+ form?.removeEventListener("reset", handleReset);
280
+ };
281
+ }, [
282
+ defaultValue,
283
+ inputRef,
284
+ onChange,
285
+ parseValue
286
+ ]);
287
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_input_cjs_namespaceObject.Field, {
288
+ ref: inputRef,
289
+ defaultValue: formatValue(value),
290
+ disabled: disabled,
291
+ id: id,
292
+ inputMode: "decimal",
293
+ max: max,
294
+ min: min,
295
+ readOnly: readOnly,
296
+ step: step,
297
+ onBlur: (0, primitive_namespaceObject.composeEventHandlers)(onBlur, handleBlur),
298
+ onKeyDown: combinedKeyDownHandler,
299
+ ...inputScope,
300
+ ...props
301
+ });
302
+ }
303
+ const NUMBER_STEPPER_BUTTON_NAME = "NumberStepperButton";
304
+ function NumberStepperButton({ __scopeInputNumber, operation, ...props }) {
305
+ const { ariaDecrementLabel, ariaIncrementLabel, disabled, id, max, min, onDecrement, onIncrement, value } = useInputNumberContext(NUMBER_STEPPER_BUTTON_NAME, __scopeInputNumber);
306
+ const isDisabled = (0, external_react_namespaceObject.useMemo)(()=>{
307
+ const atMin = void 0 !== min && void 0 !== value && value <= min;
308
+ const atMax = void 0 !== max && void 0 !== value && value >= max;
309
+ return (disabled ?? atMin) || atMax;
310
+ }, [
311
+ min,
312
+ max,
313
+ value,
314
+ disabled
315
+ ]);
316
+ const timeoutIdRef = (0, external_react_namespaceObject.useRef)(null);
317
+ const startActionInterval = (0, external_react_namespaceObject.useCallback)((callback)=>{
318
+ const interval = 100;
319
+ const repeatAction = ()=>{
320
+ callback();
321
+ timeoutIdRef.current = setTimeout(repeatAction, interval);
322
+ };
323
+ callback();
324
+ timeoutIdRef.current = setTimeout(repeatAction, 2 * interval);
325
+ }, []);
326
+ const clearActionInterval = (0, external_react_namespaceObject.useCallback)(()=>{
327
+ if (timeoutIdRef.current) {
328
+ clearTimeout(timeoutIdRef.current);
329
+ timeoutIdRef.current = null;
330
+ }
331
+ }, []);
332
+ const handlePointerDown = (0, external_react_namespaceObject.useCallback)(()=>{
333
+ const action = "increment" === operation ? onIncrement : onDecrement;
334
+ startActionInterval(action);
335
+ }, [
336
+ onDecrement,
337
+ onIncrement,
338
+ operation,
339
+ startActionInterval
340
+ ]);
341
+ const handleContextMenu = (0, external_react_namespaceObject.useCallback)((event)=>{
342
+ event.preventDefault();
343
+ }, []);
344
+ const handleKeyDown = (0, external_react_namespaceObject.useCallback)((event)=>{
345
+ if ("Enter" === event.key || " " === event.key) {
346
+ event.preventDefault();
347
+ const action = "increment" === operation ? onIncrement : onDecrement;
348
+ action();
349
+ }
350
+ }, [
351
+ onDecrement,
352
+ onIncrement,
353
+ operation
354
+ ]);
355
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("button", {
356
+ "aria-controls": id,
357
+ "aria-label": "increment" === operation ? ariaIncrementLabel : ariaDecrementLabel,
358
+ "aria-live": "polite",
359
+ disabled: isDisabled,
360
+ type: "button",
361
+ onContextMenu: handleContextMenu,
362
+ onKeyDown: handleKeyDown,
363
+ onPointerCancel: clearActionInterval,
364
+ onPointerDown: handlePointerDown,
365
+ onPointerLeave: clearActionInterval,
366
+ onPointerUp: clearActionInterval,
367
+ ...props
368
+ });
369
+ }
370
+ function InputNumberIncrementButton(props) {
371
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(NumberStepperButton, {
372
+ operation: "increment",
373
+ ...props
374
+ });
375
+ }
376
+ function InputNumberDecrementButton(props) {
377
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(NumberStepperButton, {
378
+ operation: "decrement",
379
+ ...props
380
+ });
381
+ }
382
+ function chain(...callbacks) {
383
+ return (...args)=>{
384
+ for (const callback of callbacks)callback(...args);
385
+ };
386
+ }
387
+ function getNumberFormatSeparators(locale) {
388
+ const numberFormat = new Intl.NumberFormat(locale);
389
+ const parts = numberFormat.formatToParts(12345.6);
390
+ let thousandSeparator = "";
391
+ let decimalSeparator = "";
392
+ for (const part of parts){
393
+ if ("group" === part.type) thousandSeparator = part.value;
394
+ if ("decimal" === part.type) decimalSeparator = part.value;
395
+ if (thousandSeparator && decimalSeparator) break;
396
+ }
397
+ return {
398
+ decimalSeparator,
399
+ thousandSeparator
400
+ };
401
+ }
402
+ function normalizeInputValue(value, thousandSeparator, decimalSeparator) {
403
+ return value.replaceAll(new RegExp(`\\${thousandSeparator}`, "g"), "").replace(new RegExp(`\\${decimalSeparator}`), ".").replaceAll(/[()]/g, "-");
404
+ }
405
+ function isModifierKey(event) {
406
+ return event.ctrlKey || event.altKey || event.metaKey || event.shiftKey;
407
+ }
408
+ function isFunctionKey(key) {
409
+ return key.startsWith("F") && key.length > 1;
410
+ }
411
+ function isNumberKey(key) {
412
+ return !Number.isNaN(Number(key));
413
+ }
414
+ function clamp(value, min = -1 / 0, max = 1 / 0) {
415
+ return Math.min(Math.max(value, min), max);
416
+ }
417
+ exports.DecrementButton = __webpack_exports__.DecrementButton;
418
+ exports.Field = __webpack_exports__.Field;
419
+ exports.IncrementButton = __webpack_exports__.IncrementButton;
420
+ exports.InputNumber = __webpack_exports__.InputNumber;
421
+ exports.InputNumberDecrementButton = __webpack_exports__.InputNumberDecrementButton;
422
+ exports.InputNumberField = __webpack_exports__.InputNumberField;
423
+ exports.InputNumberIncrementButton = __webpack_exports__.InputNumberIncrementButton;
424
+ exports.Root = __webpack_exports__.Root;
425
+ exports.createInputNumberScope = __webpack_exports__.createInputNumberScope;
426
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
427
+ "DecrementButton",
428
+ "Field",
429
+ "IncrementButton",
430
+ "InputNumber",
431
+ "InputNumberDecrementButton",
432
+ "InputNumberField",
433
+ "InputNumberIncrementButton",
434
+ "Root",
435
+ "createInputNumberScope"
436
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
437
+ Object.defineProperty(exports, '__esModule', {
438
+ value: true
439
+ });
@@ -1,5 +1,5 @@
1
- import type { ComponentProps, JSX } from "react";
2
1
  import type { Scope } from "@radix-ui/react-context";
2
+ import type { ComponentProps, JSX } from "react";
3
3
  import * as InputPrimitive from "./input";
4
4
  /**
5
5
  * Props that include an optional scope for the InputNumber component.