@thewrong/ui 0.2.0 → 0.3.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 (556) hide show
  1. package/README.md +25 -4
  2. package/dist/components/_shared/form-size-tokens.cjs +1 -0
  3. package/dist/{src/components → components}/_shared/form-size-tokens.d.ts +3 -1
  4. package/dist/components/_shared/form-size-tokens.esm.js +26 -21
  5. package/dist/components/action-toast/ActionToast.cjs +1 -0
  6. package/dist/{src/components → components}/action-toast/ActionToast.d.ts +12 -3
  7. package/dist/components/action-toast/ActionToast.esm.js +133 -123
  8. package/dist/{src/components → components}/action-toast/index.d.ts +2 -2
  9. package/dist/components/animated-height/AnimatedHeight.cjs +1 -0
  10. package/dist/components/animated-height/AnimatedHeight.esm.js +14 -14
  11. package/dist/components/animated-height/index.d.ts +2 -0
  12. package/dist/components/badge/Badge.cjs +1 -0
  13. package/dist/{src/components → components}/badge/Badge.d.ts +1 -1
  14. package/dist/components/badge/Badge.esm.js +19 -23
  15. package/dist/components/badge/index.d.ts +2 -0
  16. package/dist/components/badge/utils.cjs +1 -0
  17. package/dist/{src/components → components}/badge/utils.d.ts +1 -1
  18. package/dist/components/badge/utils.esm.js +15 -15
  19. package/dist/components/button/Button.cjs +1 -0
  20. package/dist/{src/components → components}/button/Button.d.ts +2 -1
  21. package/dist/components/button/Button.esm.js +38 -45
  22. package/dist/{src/components → components}/button/index.d.ts +2 -2
  23. package/dist/components/button/utils.cjs +1 -0
  24. package/dist/{src/components → components}/button/utils.d.ts +1 -1
  25. package/dist/components/button/utils.esm.js +21 -21
  26. package/dist/components/checkbox/Checkbox.cjs +1 -0
  27. package/dist/{src/components → components}/checkbox/Checkbox.d.ts +1 -1
  28. package/dist/components/checkbox/Checkbox.esm.js +36 -35
  29. package/dist/components/checkbox/index.d.ts +2 -0
  30. package/dist/components/checkbox/utils.cjs +1 -0
  31. package/dist/{src/components → components}/checkbox/utils.d.ts +1 -1
  32. package/dist/components/checkbox/utils.esm.js +11 -11
  33. package/dist/components/collapsible/Collapsible.cjs +1 -0
  34. package/dist/components/collapsible/Collapsible.esm.js +12 -11
  35. package/dist/components/collapsible/index.d.ts +2 -0
  36. package/dist/components/copyable-text/CopyableText.cjs +1 -0
  37. package/dist/components/copyable-text/CopyableText.d.ts +22 -0
  38. package/dist/components/copyable-text/CopyableText.esm.js +50 -0
  39. package/dist/components/copyable-text/index.d.ts +2 -0
  40. package/dist/components/date-input/DateInput.cjs +1 -0
  41. package/dist/{src/components → components}/date-input/DateInput.d.ts +1 -0
  42. package/dist/components/date-input/DateInput.esm.js +24 -23
  43. package/dist/components/date-input/index.d.ts +1 -0
  44. package/dist/components/date-picker/PickerSheet.cjs +1 -0
  45. package/dist/components/date-picker/PickerSheet.d.ts +22 -0
  46. package/dist/components/date-picker/PickerSheet.esm.js +77 -0
  47. package/dist/components/date-picker/date-picker.cjs +1 -0
  48. package/dist/{src/components → components}/date-picker/date-picker.d.ts +1 -0
  49. package/dist/components/date-picker/date-picker.esm.js +99 -147
  50. package/dist/components/date-picker/date-range-picker.cjs +1 -0
  51. package/dist/{src/components → components}/date-picker/date-range-picker.d.ts +3 -1
  52. package/dist/components/date-picker/date-range-picker.esm.js +117 -166
  53. package/dist/components/date-picker/index.d.ts +5 -0
  54. package/dist/components/date-picker/month-picker.cjs +1 -0
  55. package/dist/{src/components → components}/date-picker/month-picker.d.ts +1 -0
  56. package/dist/components/date-picker/month-picker.esm.js +68 -112
  57. package/dist/components/drawer/Drawer.cjs +1 -0
  58. package/dist/components/drawer/Drawer.d.ts +45 -0
  59. package/dist/components/drawer/Drawer.esm.js +127 -97
  60. package/dist/components/drawer/index.d.ts +2 -0
  61. package/dist/components/error-boundary/ErrorBoundary.cjs +1 -0
  62. package/dist/components/error-boundary/ErrorBoundary.d.ts +23 -0
  63. package/dist/components/error-boundary/ErrorBoundary.esm.js +46 -0
  64. package/dist/components/error-boundary/chunk-reload.cjs +1 -0
  65. package/dist/components/error-boundary/chunk-reload.d.ts +77 -0
  66. package/dist/components/error-boundary/chunk-reload.esm.js +73 -0
  67. package/dist/components/error-boundary/index.d.ts +4 -0
  68. package/dist/components/error-boundary/types.d.ts +23 -0
  69. package/dist/components/field/Field.cjs +1 -0
  70. package/dist/components/field/Field.d.ts +16 -0
  71. package/dist/components/field/Field.esm.js +34 -0
  72. package/dist/components/field/FieldMessage.cjs +1 -0
  73. package/dist/components/field/FieldMessage.d.ts +19 -0
  74. package/dist/components/field/FieldMessage.esm.js +12 -0
  75. package/dist/components/field/index.d.ts +3 -0
  76. package/dist/components/field/types.d.ts +24 -0
  77. package/dist/components/info-tooltip/InfoTooltip.cjs +1 -0
  78. package/dist/components/info-tooltip/InfoTooltip.esm.js +13 -12
  79. package/dist/components/info-tooltip/index.d.ts +2 -0
  80. package/dist/components/input/DecimalInput.cjs +1 -0
  81. package/dist/components/input/DecimalInput.d.ts +18 -0
  82. package/dist/components/input/DecimalInput.esm.js +40 -0
  83. package/dist/components/input/Input.cjs +1 -0
  84. package/dist/{src/components → components}/input/Input.d.ts +1 -1
  85. package/dist/components/input/Input.esm.js +47 -53
  86. package/dist/components/input/PasswordInput.cjs +1 -0
  87. package/dist/{src/components → components}/input/PasswordInput.d.ts +1 -1
  88. package/dist/components/input/PasswordInput.esm.js +1 -1
  89. package/dist/components/input/decimal-validation.cjs +1 -0
  90. package/dist/components/input/decimal-validation.d.ts +7 -0
  91. package/dist/components/input/decimal-validation.esm.js +66 -0
  92. package/dist/components/input/format.cjs +1 -0
  93. package/dist/{src/components → components}/input/format.d.ts +17 -1
  94. package/dist/components/input/format.esm.js +16 -5
  95. package/dist/components/input/index.d.ts +7 -0
  96. package/dist/{src/components → components}/input/types.d.ts +2 -2
  97. package/dist/components/input/use-input-format.cjs +1 -0
  98. package/dist/components/input/use-input-format.d.ts +43 -0
  99. package/dist/components/input/use-input-format.esm.js +75 -0
  100. package/dist/components/input/utils.cjs +1 -0
  101. package/dist/{src/components → components}/input/utils.d.ts +1 -1
  102. package/dist/components/input/utils.esm.js +19 -18
  103. package/dist/components/loading-spinner/LoadingSpinner.cjs +1 -0
  104. package/dist/components/loading-spinner/LoadingSpinner.esm.js +19 -18
  105. package/dist/components/loading-spinner/index.d.ts +2 -0
  106. package/dist/components/modal/Modal.cjs +1 -0
  107. package/dist/{src/components → components}/modal/Modal.d.ts +28 -2
  108. package/dist/components/modal/Modal.esm.js +148 -118
  109. package/dist/components/modal/ModalFocusTrapContext.cjs +1 -0
  110. package/dist/components/modal/ModalFocusTrapContext.d.ts +18 -0
  111. package/dist/components/modal/ModalFocusTrapContext.esm.js +36 -0
  112. package/dist/components/modal/ModalSubView.cjs +1 -0
  113. package/dist/{src/components → components}/modal/ModalSubView.d.ts +6 -1
  114. package/dist/components/modal/ModalSubView.esm.js +65 -45
  115. package/dist/components/modal/StandardModal.cjs +1 -0
  116. package/dist/{src/components → components}/modal/StandardModal.d.ts +8 -2
  117. package/dist/components/modal/StandardModal.esm.js +18 -15
  118. package/dist/components/modal/index.d.ts +6 -0
  119. package/dist/components/month-range-picker/index.d.ts +2 -0
  120. package/dist/components/month-range-picker/month-range-picker.cjs +1 -0
  121. package/dist/components/month-range-picker/month-range-picker.d.ts +16 -0
  122. package/dist/components/month-range-picker/month-range-picker.esm.js +227 -0
  123. package/dist/components/month-range-picker/month-range-utils.cjs +1 -0
  124. package/dist/components/month-range-picker/month-range-utils.d.ts +9 -0
  125. package/dist/components/month-range-picker/month-range-utils.esm.js +28 -0
  126. package/dist/components/page-title/PageTitle.cjs +1 -0
  127. package/dist/components/page-title/PageTitle.esm.js +11 -10
  128. package/dist/components/page-title/index.d.ts +1 -0
  129. package/dist/components/popover/Popover.cjs +1 -0
  130. package/dist/components/popover/Popover.esm.js +2 -2
  131. package/dist/components/popover/index.d.ts +2 -0
  132. package/dist/components/progress/Progress.cjs +1 -0
  133. package/dist/components/progress/Progress.d.ts +13 -0
  134. package/dist/components/progress/Progress.esm.js +24 -0
  135. package/dist/components/progress/index.d.ts +2 -0
  136. package/dist/components/progress/types.d.ts +13 -0
  137. package/dist/components/radio/Radio.cjs +1 -0
  138. package/dist/components/radio/Radio.d.ts +31 -0
  139. package/dist/components/radio/Radio.esm.js +118 -0
  140. package/dist/components/radio/index.d.ts +2 -0
  141. package/dist/components/radio/types.d.ts +24 -0
  142. package/dist/components/search-box/ExactMatchToggle.cjs +1 -0
  143. package/dist/components/search-box/ExactMatchToggle.esm.js +14 -13
  144. package/dist/components/search-box/SearchBox.cjs +1 -0
  145. package/dist/{src/components → components}/search-box/SearchBox.d.ts +1 -1
  146. package/dist/components/search-box/SearchBox.esm.js +94 -93
  147. package/dist/components/search-box/SearchBoxChips.cjs +1 -0
  148. package/dist/components/search-box/SearchBoxChips.esm.js +3 -3
  149. package/dist/components/search-box/SearchBoxDateRange.cjs +1 -0
  150. package/dist/{src/components → components}/search-box/SearchBoxDateRange.d.ts +1 -1
  151. package/dist/components/search-box/SearchBoxDateRange.esm.js +39 -36
  152. package/dist/components/search-box/SearchBoxDateSingle.cjs +1 -0
  153. package/dist/{src/components → components}/search-box/SearchBoxDateSingle.d.ts +1 -1
  154. package/dist/components/search-box/SearchBoxDateSingle.esm.js +29 -27
  155. package/dist/components/search-box/SearchBoxField.cjs +1 -0
  156. package/dist/{src/components → components}/search-box/SearchBoxField.d.ts +1 -1
  157. package/dist/components/search-box/SearchBoxFloatingInput.cjs +1 -0
  158. package/dist/components/search-box/SearchBoxFloatingInput.esm.js +29 -24
  159. package/dist/components/search-box/SearchBoxFloatingSelect.cjs +1 -0
  160. package/dist/{src/components → components}/search-box/SearchBoxFloatingSelect.d.ts +1 -1
  161. package/dist/components/search-box/SearchBoxFloatingSelect.esm.js +56 -51
  162. package/dist/components/search-box/SearchBoxMonth.cjs +1 -0
  163. package/dist/components/search-box/SearchBoxMonth.esm.js +21 -20
  164. package/dist/components/search-box/SearchBoxMultiSelect.cjs +1 -0
  165. package/dist/{src/components → components}/search-box/SearchBoxMultiSelect.d.ts +2 -2
  166. package/dist/components/search-box/SearchBoxMultiSelect.esm.js +60 -55
  167. package/dist/components/search-box/dateRangePresets.cjs +1 -0
  168. package/dist/{src/components → components}/search-box/dateRangePresets.d.ts +1 -1
  169. package/dist/{src/components → components}/search-box/index.d.ts +5 -5
  170. package/dist/components/search-box/parseSearchValues.cjs +1 -0
  171. package/dist/{src/components → components}/search-box/parseSearchValues.d.ts +2 -2
  172. package/dist/{src/components → components}/search-box/types.d.ts +1 -1
  173. package/dist/components/search-box/useSearchBoxState.cjs +1 -0
  174. package/dist/{src/components → components}/search-box/useSearchBoxState.d.ts +1 -1
  175. package/dist/components/segmented-code-input/SegmentedCodeInput.cjs +1 -0
  176. package/dist/components/segmented-code-input/SegmentedCodeInput.d.ts +49 -0
  177. package/dist/components/segmented-code-input/SegmentedCodeInput.esm.js +87 -0
  178. package/dist/components/segmented-code-input/code-utils.cjs +1 -0
  179. package/dist/components/segmented-code-input/code-utils.d.ts +4 -0
  180. package/dist/components/segmented-code-input/code-utils.esm.js +9 -0
  181. package/dist/components/segmented-code-input/index.d.ts +2 -0
  182. package/dist/components/segmented-control/SegmentedControl.cjs +1 -0
  183. package/dist/components/segmented-control/SegmentedControl.d.ts +27 -0
  184. package/dist/components/segmented-control/SegmentedControl.esm.js +84 -0
  185. package/dist/components/segmented-control/index.d.ts +2 -0
  186. package/dist/components/segmented-control/types.d.ts +30 -0
  187. package/dist/components/select/MultiSelect.cjs +1 -0
  188. package/dist/{src/components → components}/select/MultiSelect.d.ts +11 -3
  189. package/dist/components/select/MultiSelect.esm.js +179 -177
  190. package/dist/components/select/Select.cjs +1 -0
  191. package/dist/{src/components → components}/select/Select.d.ts +16 -2
  192. package/dist/components/select/Select.esm.js +176 -164
  193. package/dist/components/select/index.d.ts +4 -0
  194. package/dist/components/select/loading-dots.cjs +1 -0
  195. package/dist/components/select/loading-dots.d.ts +3 -0
  196. package/dist/components/select/loading-dots.esm.js +8 -7
  197. package/dist/components/select/panel-width.cjs +1 -0
  198. package/dist/components/select/panel-width.d.ts +2 -0
  199. package/dist/components/select/panel-width.esm.js +7 -0
  200. package/dist/{src/components → components}/select/utils.d.ts +1 -1
  201. package/dist/components/skeleton/Skeleton.cjs +1 -0
  202. package/dist/components/skeleton/Skeleton.d.ts +6 -0
  203. package/dist/components/skeleton/Skeleton.esm.js +12 -0
  204. package/dist/components/skeleton/index.d.ts +2 -0
  205. package/dist/components/skeleton/types.d.ts +2 -0
  206. package/dist/components/stepper/Stepper.cjs +1 -0
  207. package/dist/components/stepper/Stepper.d.ts +51 -0
  208. package/dist/components/stepper/Stepper.esm.js +142 -0
  209. package/dist/components/stepper/index.d.ts +4 -0
  210. package/dist/components/stepper/use-stepper.cjs +1 -0
  211. package/dist/components/stepper/use-stepper.d.ts +43 -0
  212. package/dist/components/stepper/use-stepper.esm.js +57 -0
  213. package/dist/components/switch/Switch.cjs +1 -0
  214. package/dist/{src/components → components}/switch/Switch.d.ts +1 -1
  215. package/dist/components/switch/Switch.esm.js +21 -20
  216. package/dist/components/switch/index.d.ts +2 -0
  217. package/dist/components/switch/utils.cjs +1 -0
  218. package/dist/{src/components → components}/switch/utils.d.ts +2 -2
  219. package/dist/components/switch/utils.esm.js +9 -8
  220. package/dist/components/table/accordion-table.cjs +1 -0
  221. package/dist/{src/components → components}/table/accordion-table.d.ts +1 -1
  222. package/dist/components/table/accordion-table.esm.js +204 -204
  223. package/dist/{src/components → components}/table/column-group-utils.d.ts +1 -1
  224. package/dist/components/table/components/ColumnPresetSelector.cjs +1 -0
  225. package/dist/{src/components → components}/table/components/ColumnPresetSelector.d.ts +2 -2
  226. package/dist/components/table/components/ColumnPresetSelector.esm.js +60 -59
  227. package/dist/components/table/components/ColumnSettingsTable.cjs +1 -0
  228. package/dist/{src/components → components}/table/components/ColumnSettingsTable.d.ts +1 -1
  229. package/dist/components/table/components/ColumnSettingsTable.esm.js +94 -96
  230. package/dist/components/table/components/KeyboardNavButton.cjs +1 -0
  231. package/dist/components/table/components/KeyboardNavButton.esm.js +1 -1
  232. package/dist/components/table/components/PageJumpInput.cjs +1 -0
  233. package/dist/components/table/components/PageJumpInput.esm.js +33 -32
  234. package/dist/components/table/components/Pagination.cjs +1 -0
  235. package/dist/components/table/components/Pagination.esm.js +80 -79
  236. package/dist/components/table/components/PaginationFooter.cjs +1 -0
  237. package/dist/components/table/components/PaginationFooter.esm.js +2 -2
  238. package/dist/components/table/hooks/useColumnPresets.cjs +1 -0
  239. package/dist/{src/components → components}/table/hooks/useColumnPresets.d.ts +2 -2
  240. package/dist/components/table/hooks/useColumnResize.cjs +1 -0
  241. package/dist/{src/components → components}/table/hooks/useColumnResize.d.ts +12 -0
  242. package/dist/components/table/hooks/useColumnResize.esm.js +66 -54
  243. package/dist/components/table/hooks/useFillEmptyRows.d.ts +2 -0
  244. package/dist/components/table/hooks/useInfiniteScroll.d.ts +2 -0
  245. package/dist/components/table/hooks/useTableColumnState.cjs +1 -0
  246. package/dist/{src/components → components}/table/hooks/useTableColumnState.d.ts +1 -1
  247. package/dist/components/table/hooks/useTableDragSelection.d.ts +2 -0
  248. package/dist/{src/components → components}/table/hooks/useTableSort.d.ts +1 -1
  249. package/dist/components/table/hooks/useVirtualTable.cjs +1 -0
  250. package/dist/components/table/hooks/useVirtualTable.esm.js +8 -8
  251. package/dist/components/table/index.d.ts +27 -0
  252. package/dist/components/table/mini-table.cjs +1 -0
  253. package/dist/{src/components → components}/table/mini-table.d.ts +1 -1
  254. package/dist/components/table/mini-table.esm.js +87 -86
  255. package/dist/components/table/paginated-mini-table.cjs +1 -0
  256. package/dist/{src/components → components}/table/paginated-mini-table.d.ts +1 -1
  257. package/dist/components/table/paginated-table.cjs +1 -0
  258. package/dist/{src/components → components}/table/paginated-table.d.ts +1 -1
  259. package/dist/components/table/table.cjs +1 -0
  260. package/dist/{src/components → components}/table/table.d.ts +2 -1
  261. package/dist/components/table/table.esm.js +190 -189
  262. package/dist/components/table/utils.cjs +35 -0
  263. package/dist/{src/components → components}/table/utils.d.ts +2 -2
  264. package/dist/components/table/utils.esm.js +2 -2
  265. package/dist/components/table-checkbox/TableCheckbox.cjs +1 -0
  266. package/dist/components/table-checkbox/TableCheckbox.esm.js +27 -26
  267. package/dist/components/table-checkbox/index.d.ts +1 -0
  268. package/dist/components/table-page-layout/TablePageLayout.cjs +1 -0
  269. package/dist/components/table-page-layout/TablePageLayout.esm.js +3 -3
  270. package/dist/{src/components → components}/table-page-layout/index.d.ts +1 -1
  271. package/dist/components/textarea/Textarea.cjs +1 -0
  272. package/dist/{src/components → components}/textarea/Textarea.d.ts +1 -1
  273. package/dist/components/textarea/Textarea.esm.js +49 -47
  274. package/dist/components/textarea/index.d.ts +2 -0
  275. package/dist/components/time-picker/index.d.ts +2 -0
  276. package/dist/components/time-picker/time-picker.cjs +1 -0
  277. package/dist/components/time-picker/time-picker.d.ts +35 -0
  278. package/dist/components/time-picker/time-picker.esm.js +193 -0
  279. package/dist/components/time-picker/time-utils.cjs +1 -0
  280. package/dist/components/time-picker/time-utils.d.ts +12 -0
  281. package/dist/components/time-picker/time-utils.esm.js +56 -0
  282. package/dist/components/toast/ToastProvider.cjs +1 -0
  283. package/dist/{src/components → components}/toast/ToastProvider.d.ts +3 -0
  284. package/dist/components/toast/ToastProvider.esm.js +47 -43
  285. package/dist/components/toast/index.d.ts +3 -0
  286. package/dist/components/toolbar/Toolbar.cjs +1 -0
  287. package/dist/{src/components → components}/toolbar/Toolbar.d.ts +1 -1
  288. package/dist/components/toolbar/Toolbar.esm.js +99 -98
  289. package/dist/components/toolbar/index.d.ts +2 -0
  290. package/dist/components/tooltip/{Tooltip.cjs.js → Tooltip.cjs} +1 -1
  291. package/dist/components/tooltip/Tooltip.esm.js +1 -1
  292. package/dist/components/tooltip/index.d.ts +2 -0
  293. package/dist/components/typewriter-text/TypewriterText.cjs +1 -0
  294. package/dist/components/typewriter-text/TypewriterText.d.ts +7 -0
  295. package/dist/components/typewriter-text/TypewriterText.esm.js +58 -0
  296. package/dist/components/typewriter-text/index.d.ts +2 -0
  297. package/dist/components/typewriter-text/types.d.ts +12 -0
  298. package/dist/components/typing-dots/TypingDots.cjs +1 -0
  299. package/dist/components/typing-dots/TypingDots.d.ts +10 -0
  300. package/dist/components/typing-dots/TypingDots.esm.js +37 -0
  301. package/dist/components/typing-dots/index.d.ts +2 -0
  302. package/dist/components/typing-dots/types.d.ts +4 -0
  303. package/dist/hooks/awaitableOverlayController.cjs +1 -0
  304. package/dist/hooks/awaitableOverlayController.d.ts +6 -0
  305. package/dist/hooks/awaitableOverlayController.esm.js +18 -0
  306. package/dist/hooks/index.d.ts +17 -0
  307. package/dist/hooks/useAwaitableOverlay.cjs +1 -0
  308. package/dist/hooks/useAwaitableOverlay.d.ts +16 -0
  309. package/dist/hooks/useAwaitableOverlay.esm.js +22 -0
  310. package/dist/hooks/useFillEmptyRows.cjs +1 -0
  311. package/dist/{src/components/table/hooks → hooks}/useFillEmptyRows.d.ts +10 -1
  312. package/dist/hooks/useFillEmptyRows.esm.js +60 -0
  313. package/dist/hooks/useFocusTrap.cjs +1 -0
  314. package/dist/hooks/useFocusTrap.d.ts +47 -0
  315. package/dist/hooks/useFocusTrap.esm.js +210 -0
  316. package/dist/hooks/useInfiniteScroll.cjs +1 -0
  317. package/dist/hooks/useInfiniteScroll.d.ts +36 -0
  318. package/dist/hooks/useInfiniteScroll.esm.js +31 -0
  319. package/dist/hooks/useTableDragSelection.cjs +1 -0
  320. package/dist/{src/components/table/hooks → hooks}/useTableDragSelection.d.ts +3 -4
  321. package/dist/{components/table/hooks → hooks}/useTableDragSelection.esm.js +9 -6
  322. package/dist/hooks/useVirtualRows.cjs +1 -0
  323. package/dist/hooks/useVirtualRows.d.ts +56 -0
  324. package/dist/hooks/useVirtualRows.esm.js +20 -0
  325. package/dist/hooks.cjs +1 -0
  326. package/dist/hooks.esm.js +12 -5
  327. package/dist/index.cjs +1 -0
  328. package/dist/index.d.ts +40 -0
  329. package/dist/index.esm.js +81 -58
  330. package/dist/lib/index.d.ts +6 -0
  331. package/dist/lib/utils.cjs +1 -0
  332. package/dist/{src/lib → lib}/utils.d.ts +2 -1
  333. package/dist/lib/utils.esm.js +108 -5
  334. package/dist/node_modules/lucide-react/dist/esm/Icon.cjs +1 -0
  335. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs +1 -0
  336. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.cjs +1 -0
  337. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.cjs +1 -0
  338. package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs +1 -0
  339. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs +1 -0
  340. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.cjs +1 -0
  341. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs +1 -0
  342. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.cjs +1 -0
  343. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.cjs +1 -0
  344. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.cjs +1 -0
  345. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.cjs +1 -0
  346. package/dist/node_modules/lucide-react/dist/esm/icons/clock.cjs +1 -0
  347. package/dist/node_modules/lucide-react/dist/esm/icons/clock.esm.js +12 -0
  348. package/dist/node_modules/lucide-react/dist/esm/icons/copy.cjs +1 -0
  349. package/dist/node_modules/lucide-react/dist/esm/icons/copy.esm.js +15 -0
  350. package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.cjs +1 -0
  351. package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs +1 -0
  352. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs +1 -0
  353. package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs +1 -0
  354. package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.cjs +1 -0
  355. package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.cjs +1 -0
  356. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs +1 -0
  357. package/dist/node_modules/lucide-react/dist/esm/icons/minus.cjs +1 -0
  358. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs +1 -0
  359. package/dist/node_modules/lucide-react/dist/esm/icons/save.cjs +1 -0
  360. package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs +1 -0
  361. package/dist/node_modules/lucide-react/dist/esm/icons/settings.cjs +1 -0
  362. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.cjs +1 -0
  363. package/dist/node_modules/lucide-react/dist/esm/icons/wrench.cjs +1 -0
  364. package/dist/node_modules/lucide-react/dist/esm/icons/x.cjs +1 -0
  365. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.cjs +1 -0
  366. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs +1 -0
  367. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.esm.js +559 -550
  368. package/dist/tokens.css +1085 -0
  369. package/dist/ui.css +1 -1
  370. package/llms.txt +39 -13
  371. package/package.json +11 -8
  372. package/dist/components/_shared/form-size-tokens.cjs.js +0 -1
  373. package/dist/components/action-toast/ActionToast.cjs.js +0 -1
  374. package/dist/components/animated-height/AnimatedHeight.cjs.js +0 -1
  375. package/dist/components/badge/Badge.cjs.js +0 -1
  376. package/dist/components/badge/utils.cjs.js +0 -1
  377. package/dist/components/button/Button.cjs.js +0 -1
  378. package/dist/components/button/utils.cjs.js +0 -1
  379. package/dist/components/checkbox/Checkbox.cjs.js +0 -1
  380. package/dist/components/checkbox/utils.cjs.js +0 -1
  381. package/dist/components/collapsible/Collapsible.cjs.js +0 -1
  382. package/dist/components/date-input/DateInput.cjs.js +0 -1
  383. package/dist/components/date-picker/date-picker.cjs.js +0 -1
  384. package/dist/components/date-picker/date-range-picker.cjs.js +0 -1
  385. package/dist/components/date-picker/month-picker.cjs.js +0 -1
  386. package/dist/components/drawer/Drawer.cjs.js +0 -1
  387. package/dist/components/info-tooltip/InfoTooltip.cjs.js +0 -1
  388. package/dist/components/input/Input.cjs.js +0 -1
  389. package/dist/components/input/PasswordInput.cjs.js +0 -1
  390. package/dist/components/input/format.cjs.js +0 -1
  391. package/dist/components/input/utils.cjs.js +0 -1
  392. package/dist/components/loading-spinner/LoadingSpinner.cjs.js +0 -1
  393. package/dist/components/modal/Modal.cjs.js +0 -1
  394. package/dist/components/modal/ModalSubView.cjs.js +0 -1
  395. package/dist/components/modal/StandardModal.cjs.js +0 -1
  396. package/dist/components/page-title/PageTitle.cjs.js +0 -1
  397. package/dist/components/popover/Popover.cjs.js +0 -1
  398. package/dist/components/search-box/ExactMatchToggle.cjs.js +0 -1
  399. package/dist/components/search-box/SearchBox.cjs.js +0 -1
  400. package/dist/components/search-box/SearchBoxChips.cjs.js +0 -1
  401. package/dist/components/search-box/SearchBoxDateRange.cjs.js +0 -1
  402. package/dist/components/search-box/SearchBoxDateSingle.cjs.js +0 -1
  403. package/dist/components/search-box/SearchBoxField.cjs.js +0 -1
  404. package/dist/components/search-box/SearchBoxFloatingInput.cjs.js +0 -1
  405. package/dist/components/search-box/SearchBoxFloatingSelect.cjs.js +0 -1
  406. package/dist/components/search-box/SearchBoxMonth.cjs.js +0 -1
  407. package/dist/components/search-box/SearchBoxMultiSelect.cjs.js +0 -1
  408. package/dist/components/search-box/dateRangePresets.cjs.js +0 -1
  409. package/dist/components/search-box/parseSearchValues.cjs.js +0 -1
  410. package/dist/components/search-box/useSearchBoxState.cjs.js +0 -1
  411. package/dist/components/select/MultiSelect.cjs.js +0 -1
  412. package/dist/components/select/Select.cjs.js +0 -1
  413. package/dist/components/select/loading-dots.cjs.js +0 -1
  414. package/dist/components/switch/Switch.cjs.js +0 -1
  415. package/dist/components/switch/utils.cjs.js +0 -1
  416. package/dist/components/table/accordion-table.cjs.js +0 -1
  417. package/dist/components/table/components/ColumnPresetSelector.cjs.js +0 -1
  418. package/dist/components/table/components/ColumnSettingsTable.cjs.js +0 -4
  419. package/dist/components/table/components/KeyboardNavButton.cjs.js +0 -1
  420. package/dist/components/table/components/PageJumpInput.cjs.js +0 -1
  421. package/dist/components/table/components/Pagination.cjs.js +0 -1
  422. package/dist/components/table/components/PaginationFooter.cjs.js +0 -1
  423. package/dist/components/table/hooks/useColumnPresets.cjs.js +0 -1
  424. package/dist/components/table/hooks/useColumnResize.cjs.js +0 -1
  425. package/dist/components/table/hooks/useFillEmptyRows.cjs.js +0 -1
  426. package/dist/components/table/hooks/useFillEmptyRows.esm.js +0 -49
  427. package/dist/components/table/hooks/useInfiniteScroll.cjs.js +0 -1
  428. package/dist/components/table/hooks/useInfiniteScroll.esm.js +0 -32
  429. package/dist/components/table/hooks/useTableColumnState.cjs.js +0 -1
  430. package/dist/components/table/hooks/useTableDragSelection.cjs.js +0 -1
  431. package/dist/components/table/hooks/useVirtualTable.cjs.js +0 -1
  432. package/dist/components/table/mini-table.cjs.js +0 -1
  433. package/dist/components/table/paginated-mini-table.cjs.js +0 -1
  434. package/dist/components/table/paginated-table.cjs.js +0 -1
  435. package/dist/components/table/table.cjs.js +0 -1
  436. package/dist/components/table/utils.cjs.js +0 -37
  437. package/dist/components/table-checkbox/TableCheckbox.cjs.js +0 -1
  438. package/dist/components/table-page-layout/TablePageLayout.cjs.js +0 -1
  439. package/dist/components/textarea/Textarea.cjs.js +0 -1
  440. package/dist/components/toast/ToastProvider.cjs.js +0 -1
  441. package/dist/components/toolbar/Toolbar.cjs.js +0 -1
  442. package/dist/hooks.cjs.js +0 -1
  443. package/dist/index.cjs.js +0 -1
  444. package/dist/lib/utils.cjs.js +0 -1
  445. package/dist/node_modules/lucide-react/dist/esm/Icon.cjs.js +0 -1
  446. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs.js +0 -1
  447. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.cjs.js +0 -1
  448. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.cjs.js +0 -1
  449. package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs.js +0 -1
  450. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs.js +0 -1
  451. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.cjs.js +0 -1
  452. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs.js +0 -1
  453. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.cjs.js +0 -1
  454. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.cjs.js +0 -1
  455. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.cjs.js +0 -1
  456. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.cjs.js +0 -1
  457. package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.cjs.js +0 -1
  458. package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs.js +0 -1
  459. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs.js +0 -1
  460. package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs.js +0 -1
  461. package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.cjs.js +0 -1
  462. package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.cjs.js +0 -1
  463. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs.js +0 -1
  464. package/dist/node_modules/lucide-react/dist/esm/icons/minus.cjs.js +0 -1
  465. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs.js +0 -1
  466. package/dist/node_modules/lucide-react/dist/esm/icons/save.cjs.js +0 -1
  467. package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs.js +0 -1
  468. package/dist/node_modules/lucide-react/dist/esm/icons/settings.cjs.js +0 -1
  469. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.cjs.js +0 -1
  470. package/dist/node_modules/lucide-react/dist/esm/icons/wrench.cjs.js +0 -1
  471. package/dist/node_modules/lucide-react/dist/esm/icons/x.cjs.js +0 -1
  472. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.cjs.js +0 -1
  473. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs.js +0 -1
  474. package/dist/src/components/animated-height/index.d.ts +0 -2
  475. package/dist/src/components/badge/index.d.ts +0 -2
  476. package/dist/src/components/checkbox/index.d.ts +0 -2
  477. package/dist/src/components/collapsible/index.d.ts +0 -2
  478. package/dist/src/components/date-input/index.d.ts +0 -1
  479. package/dist/src/components/date-picker/index.d.ts +0 -5
  480. package/dist/src/components/drawer/Drawer.d.ts +0 -23
  481. package/dist/src/components/drawer/index.d.ts +0 -2
  482. package/dist/src/components/info-tooltip/index.d.ts +0 -2
  483. package/dist/src/components/input/index.d.ts +0 -4
  484. package/dist/src/components/loading-spinner/index.d.ts +0 -2
  485. package/dist/src/components/modal/index.d.ts +0 -6
  486. package/dist/src/components/page-title/index.d.ts +0 -1
  487. package/dist/src/components/popover/index.d.ts +0 -2
  488. package/dist/src/components/select/index.d.ts +0 -4
  489. package/dist/src/components/select/loading-dots.d.ts +0 -9
  490. package/dist/src/components/switch/index.d.ts +0 -2
  491. package/dist/src/components/table/hooks/useInfiniteScroll.d.ts +0 -58
  492. package/dist/src/components/table/index.d.ts +0 -27
  493. package/dist/src/components/table-checkbox/index.d.ts +0 -1
  494. package/dist/src/components/textarea/index.d.ts +0 -2
  495. package/dist/src/components/toast/index.d.ts +0 -3
  496. package/dist/src/components/toolbar/index.d.ts +0 -2
  497. package/dist/src/components/tooltip/index.d.ts +0 -2
  498. package/dist/src/hooks/index.d.ts +0 -4
  499. package/dist/src/index.d.ts +0 -27
  500. package/dist/src/lib/index.d.ts +0 -6
  501. /package/dist/_virtual/_rolldown/{runtime.cjs.js → runtime.cjs} +0 -0
  502. /package/dist/{src/components → components}/animated-height/AnimatedHeight.d.ts +0 -0
  503. /package/dist/{src/components → components}/badge/types.d.ts +0 -0
  504. /package/dist/{src/components → components}/button/types.d.ts +0 -0
  505. /package/dist/{src/components → components}/checkbox/types.d.ts +0 -0
  506. /package/dist/{src/components → components}/collapsible/Collapsible.d.ts +0 -0
  507. /package/dist/{src/components → components}/info-tooltip/InfoTooltip.d.ts +0 -0
  508. /package/dist/{src/components → components}/loading-spinner/LoadingSpinner.d.ts +0 -0
  509. /package/dist/{src/components → components}/page-title/PageTitle.d.ts +0 -0
  510. /package/dist/{src/components → components}/popover/Popover.d.ts +0 -0
  511. /package/dist/{src/components → components}/search-box/ExactMatchToggle.d.ts +0 -0
  512. /package/dist/{src/components → components}/search-box/SearchBoxChips.d.ts +0 -0
  513. /package/dist/{src/components → components}/search-box/SearchBoxFloatingInput.d.ts +0 -0
  514. /package/dist/{src/components → components}/search-box/SearchBoxMonth.d.ts +0 -0
  515. /package/dist/components/search-box/{SearchBoxSheetContext.cjs.js → SearchBoxSheetContext.cjs} +0 -0
  516. /package/dist/{src/components → components}/search-box/SearchBoxSheetContext.d.ts +0 -0
  517. /package/dist/components/search-box/{parseDateRange.cjs.js → parseDateRange.cjs} +0 -0
  518. /package/dist/{src/components → components}/search-box/parseDateRange.d.ts +0 -0
  519. /package/dist/{src/components → components}/select/types.d.ts +0 -0
  520. /package/dist/{src/components → components}/switch/types.d.ts +0 -0
  521. /package/dist/components/table/{column-group-utils.cjs.js → column-group-utils.cjs} +0 -0
  522. /package/dist/{src/components → components}/table/components/KeyboardNavButton.d.ts +0 -0
  523. /package/dist/{src/components → components}/table/components/PageJumpInput.d.ts +0 -0
  524. /package/dist/{src/components → components}/table/components/Pagination.d.ts +0 -0
  525. /package/dist/{src/components → components}/table/components/PaginationFooter.d.ts +0 -0
  526. /package/dist/components/table/components/{SortableHeaderCell.cjs.js → SortableHeaderCell.cjs} +0 -0
  527. /package/dist/{src/components → components}/table/components/SortableHeaderCell.d.ts +0 -0
  528. /package/dist/components/table/hooks/{useTableSort.cjs.js → useTableSort.cjs} +0 -0
  529. /package/dist/{src/components → components}/table/hooks/useVirtualTable.d.ts +0 -0
  530. /package/dist/{src/components → components}/table/types.d.ts +0 -0
  531. /package/dist/{src/components → components}/table-checkbox/TableCheckbox.d.ts +0 -0
  532. /package/dist/{src/components → components}/table-page-layout/TablePageLayout.d.ts +0 -0
  533. /package/dist/{src/components → components}/textarea/types.d.ts +0 -0
  534. /package/dist/{src/components → components}/tooltip/Tooltip.d.ts +0 -0
  535. /package/dist/hooks/{useBottomSheetDrag.cjs.js → useBottomSheetDrag.cjs} +0 -0
  536. /package/dist/{src/hooks → hooks}/useBottomSheetDrag.d.ts +0 -0
  537. /package/dist/hooks/{useClickOutside.cjs.js → useClickOutside.cjs} +0 -0
  538. /package/dist/{src/hooks → hooks}/useClickOutside.d.ts +0 -0
  539. /package/dist/hooks/{useMediaQuery.cjs.js → useMediaQuery.cjs} +0 -0
  540. /package/dist/{src/hooks → hooks}/useMediaQuery.d.ts +0 -0
  541. /package/dist/hooks/{useScrollLock.cjs.js → useScrollLock.cjs} +0 -0
  542. /package/dist/{src/hooks → hooks}/useScrollLock.d.ts +0 -0
  543. /package/dist/lib/{Portal.cjs.js → Portal.cjs} +0 -0
  544. /package/dist/{src/lib → lib}/Portal.d.ts +0 -0
  545. /package/dist/lib/{column-preset-storage.cjs.js → column-preset-storage.cjs} +0 -0
  546. /package/dist/{src/lib → lib}/column-preset-storage.d.ts +0 -0
  547. /package/dist/lib/{overlay-stack.cjs.js → overlay-stack.cjs} +0 -0
  548. /package/dist/{src/lib → lib}/overlay-stack.d.ts +0 -0
  549. /package/dist/node_modules/clsx/dist/{clsx.cjs.js → clsx.cjs} +0 -0
  550. /package/dist/node_modules/lucide-react/dist/esm/{context.cjs.js → context.cjs} +0 -0
  551. /package/dist/node_modules/lucide-react/dist/esm/{defaultAttributes.cjs.js → defaultAttributes.cjs} +0 -0
  552. /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{hasA11yProp.cjs.js → hasA11yProp.cjs} +0 -0
  553. /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{mergeClasses.cjs.js → mergeClasses.cjs} +0 -0
  554. /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{toCamelCase.cjs.js → toCamelCase.cjs} +0 -0
  555. /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{toKebabCase.cjs.js → toKebabCase.cjs} +0 -0
  556. /package/dist/node_modules/use-debounce/dist/{index.module.cjs.js → index.module.cjs} +0 -0
@@ -0,0 +1,66 @@
1
+ //#region src/components/input/decimal-validation.ts
2
+ function e(e) {
3
+ let t = e.startsWith("-"), [n = "", r = ""] = (t ? e.slice(1) : e).split(".");
4
+ return {
5
+ negative: t,
6
+ integer: n || "0",
7
+ fraction: r
8
+ };
9
+ }
10
+ function t(e) {
11
+ let [t = "", n] = e.toLowerCase().split("e");
12
+ if (n === void 0) return e;
13
+ let r = Number(n), i = t.startsWith("-"), [a = "", o = ""] = (i ? t.slice(1) : t).split("."), s = `${a}${o}`.replace(/^0+(?=\d)/, ""), c = a.length + r, l = c <= 0 ? `0.${"0".repeat(-c)}${s}` : c >= s.length ? `${s}${"0".repeat(c - s.length)}` : `${s.slice(0, c)}.${s.slice(c)}`;
14
+ return i ? `-${l}` : l;
15
+ }
16
+ function n(e) {
17
+ return 10n ** BigInt(e);
18
+ }
19
+ function r(t, r) {
20
+ let { negative: i, integer: a, fraction: o } = e(t), s = n(r), c = BigInt(o.slice(0, r).padEnd(r, "0") || "0"), l = BigInt(a) * s + c;
21
+ return i ? -l : l;
22
+ }
23
+ function i(r, i, a) {
24
+ if (r === void 0 || !Number.isFinite(r)) return;
25
+ let { negative: o, integer: s, fraction: c } = e(t(String(r))), l = n(i), u = BigInt(c.slice(0, i).padEnd(i, "0") || "0"), d = BigInt(s) * l + u, f = /[1-9]/.test(c.slice(i));
26
+ return o ? a === "max" && f ? -(d + 1n) : -d : a === "min" && f ? d + 1n : d;
27
+ }
28
+ function a(e, t, n) {
29
+ return (t === void 0 || e.max >= t) && (n === void 0 || e.min <= n);
30
+ }
31
+ function o(t, o, s, c) {
32
+ let { negative: l, integer: u, fraction: d } = e(t), f = t.includes(".") ? d : void 0, p = o - d.length, m = r(t, o), h = n(Math.max(0, p)) - 1n, g = l ? {
33
+ min: m - h,
34
+ max: m
35
+ } : {
36
+ min: m,
37
+ max: m + h
38
+ }, _ = i(s, o, "min"), v = i(c, o, "max");
39
+ if (a(g, _, v)) return !0;
40
+ if (f !== void 0 || u === "0") return !1;
41
+ if (!l && v === void 0 || l && _ === void 0) return !0;
42
+ let y = BigInt(u), b = n(o);
43
+ for (let e = 1; e < 309; e += 1) {
44
+ let t = n(e), r = y * t, i = (y + 1n) * t - 1n;
45
+ if (a(l ? {
46
+ min: -(i * b + (b - 1n)),
47
+ max: -(r * b)
48
+ } : {
49
+ min: r * b,
50
+ max: i * b + (b - 1n)
51
+ }, _, v)) return !0;
52
+ if (!l && v !== void 0 && r * b > v || l && _ !== void 0 && -(r * b) < _) return !1;
53
+ }
54
+ return !1;
55
+ }
56
+ function s(e, { decimalPlaces: t, allowNegative: n, min: a, max: s }) {
57
+ let c = n ? "-?" : "", l = Math.max(0, Math.floor(t)), u = l > 0 ? `(?:\\.\\d{0,${l}})?` : "", d = l > 0 ? `|\\.\\d{0,${l}}` : "", f = RegExp(`^${c}(?:(?:0|[1-9]\\d*)${u}${d})?$`);
58
+ if (e !== "" && e !== "-" && !f.test(e) || e === "-" && !n) return "reject";
59
+ if (e === "") return "empty";
60
+ if (e === "-") return "draft";
61
+ if (!Number.isFinite(Number(e)) || !o(e, l, a, s)) return "reject";
62
+ let p = r(e, l), m = i(a, l, "min"), h = i(s, l, "max"), g = (m === void 0 || p >= m) && (h === void 0 || p <= h);
63
+ return !e.endsWith(".") && g ? "value" : "draft";
64
+ }
65
+ //#endregion
66
+ export { s as validateDecimalDraft };
@@ -0,0 +1 @@
1
+ function e(e){return e.replace(/\B(?=(\d{3})+(?!\d))/g,`,`)}function t(e){return e.replace(/,/g,``)}function n(e){let t=e.toString().replace(/[^\d]/g,``);return t.length<=3?t:t.length<=7?`${t.slice(0,3)}-${t.slice(3)}`:t.length<=10?`${t.slice(0,3)}-${t.slice(3,7)}-${t.slice(7)}`:`${t.slice(0,3)}-${t.slice(3,7)}-${t.slice(7,11)}`}function r(e){return e.toString().replace(/-/g,``)}function i(e){let t=e.toString().replace(/[^\d]/g,``).slice(0,10);return t.length<=2?t:t.length<=5?`${t.slice(0,2)}-${t.slice(2)}`:`${t.slice(0,2)}-${t.slice(2,5)}-${t.slice(5)}`}function a(e){return e.toString().replace(/[^\d]/g,``).slice(0,10)}function o(t){let n=t.toString().replace(/[^\d]/g,``);return n?e(n):``}function s(e){return t(e.toString())}var c={phoneNumber:{transform:n,reset:r},businessNumber:{transform:i,reset:a},price:{transform:o,reset:s}};exports.inputFormats=c;
@@ -1,4 +1,4 @@
1
- import { InputFormat, InputValue } from './types';
1
+ import { InputFormat, InputValue } from './types.js';
2
2
  /**
3
3
  * 전화번호에 하이픈을 추가해요
4
4
  * @example "01012345678" → "010-1234-5678"
@@ -9,6 +9,16 @@ export declare function transformToPhoneNumber(value: InputValue): string;
9
9
  * @example "010-1234-5678" → "01012345678"
10
10
  */
11
11
  export declare function resetFromPhoneNumber(value: InputValue): string;
12
+ /**
13
+ * 사업자등록번호에 하이픈을 추가해요
14
+ * @example "1234567890" → "12-345-67890"
15
+ */
16
+ export declare function transformToBusinessNumber(value: InputValue): string;
17
+ /**
18
+ * 사업자등록번호에서 하이픈을 제거해요
19
+ * @example "12-345-67890" → "1234567890"
20
+ */
21
+ export declare function resetFromBusinessNumber(value: InputValue): string;
12
22
  /**
13
23
  * 금액에 콤마를 추가해요
14
24
  * @example "1000000" → "1,000,000"
@@ -29,6 +39,12 @@ export declare const inputFormats: {
29
39
  * reset: "010-1234-5678" → "01012345678"
30
40
  */
31
41
  readonly phoneNumber: InputFormat;
42
+ /**
43
+ * 사업자등록번호 포맷
44
+ * transform: "1234567890" → "12-345-67890"
45
+ * reset: "12-345-67890" → "1234567890"
46
+ */
47
+ readonly businessNumber: InputFormat;
32
48
  /**
33
49
  * 금액 포맷
34
50
  * transform: "1000000" → "1,000,000"
@@ -12,22 +12,33 @@ function n(e) {
12
12
  function r(e) {
13
13
  return e.toString().replace(/-/g, "");
14
14
  }
15
- function i(t) {
15
+ function i(e) {
16
+ let t = e.toString().replace(/[^\d]/g, "").slice(0, 10);
17
+ return t.length <= 2 ? t : t.length <= 5 ? `${t.slice(0, 2)}-${t.slice(2)}` : `${t.slice(0, 2)}-${t.slice(2, 5)}-${t.slice(5)}`;
18
+ }
19
+ function a(e) {
20
+ return e.toString().replace(/[^\d]/g, "").slice(0, 10);
21
+ }
22
+ function o(t) {
16
23
  let n = t.toString().replace(/[^\d]/g, "");
17
24
  return n ? e(n) : "";
18
25
  }
19
- function a(e) {
26
+ function s(e) {
20
27
  return t(e.toString());
21
28
  }
22
- var o = {
29
+ var c = {
23
30
  phoneNumber: {
24
31
  transform: n,
25
32
  reset: r
26
33
  },
27
- price: {
34
+ businessNumber: {
28
35
  transform: i,
29
36
  reset: a
37
+ },
38
+ price: {
39
+ transform: o,
40
+ reset: s
30
41
  }
31
42
  };
32
43
  //#endregion
33
- export { o as inputFormats };
44
+ export { c as inputFormats };
@@ -0,0 +1,7 @@
1
+ export { Input } from './Input.js';
2
+ export { PasswordInput } from './PasswordInput.js';
3
+ export { DecimalInput } from './DecimalInput.js';
4
+ export type { DecimalInputProps } from './DecimalInput.js';
5
+ export { useInputFormat } from './use-input-format.js';
6
+ export { inputFormats } from './format.js';
7
+ export type { InputProps, InputVariant, InputSize, InputLabelOption, InputValue, InputFormat, FormatTransform, FormatReset, } from './types.js';
@@ -22,7 +22,7 @@ export type InputValue = string | number;
22
22
  /**
23
23
  * Format 함수 타입
24
24
  */
25
- export type FormatTransform = (value: InputValue) => InputValue;
25
+ export type FormatTransform = (value: InputValue, inputType?: string) => InputValue;
26
26
  export type FormatReset = (formattedValue: InputValue) => InputValue;
27
27
  /**
28
28
  * Format 옵션
@@ -91,7 +91,7 @@ export interface InputCommonProps {
91
91
  trailingIcon?: ReactNode;
92
92
  /**
93
93
  * 값이 있을 때 우측에 X 버튼(CircleX)을 노출. 클릭 시 onChange로 빈 값을 emit.
94
- * disabled에서는 노출하지 않는다. trailingIcon 다음, badge 앞에 위치.
94
+ * disabled 또는 readOnly에서는 노출하지 않는다. trailingIcon 다음, badge 앞에 위치.
95
95
  * @default false
96
96
  */
97
97
  clearable?: boolean;
@@ -0,0 +1 @@
1
+ let e=require("react");function t(e,t,n){let r=t.transform(e,n).toString();return{display:r,raw:t.reset?t.reset(r).toString():r}}function n(e,t,n){if(e===t)return Math.min(n,t.length);if(n>=e.length)return t.length;if(!/\d/.test(e)&&!/\d/.test(t))return Math.min(n,t.length);let r=(e.slice(0,n).match(/\d/g)??[]).length;if(r===0)return e.length===t.length?n:0;let i=0;for(let e=0;e<t.length;e++)if(/\d/.test(t[e])&&++i===r)return e+1;return t.length}function r(e,t){let n=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,`value`);n?.set&&n.set.bind(e)(t)}function i({value:i,defaultValue:a,format:o,onChange:s,readOnly:c=!1}){let[l,u]=(0,e.useState)(()=>{let e=i??a??``;return o?o.transform(e).toString():e.toString()}),[d,f]=(0,e.useState)(null),p=(0,e.useRef)(null),m=(0,e.useRef)(!1),h=(0,e.useRef)(!1),g=i!==void 0,_=g?i.toString():l;return{displayValue:o?d??o.transform(_).toString():_,handleChange:e=>{if(c)return;let i=e.target.value;if(o){let a=e.nativeEvent;if(m.current||a.isComposing){h.current=!0,f(i),g||u(i),s?.(e);return}let c=e.target,{selectionStart:l,selectionEnd:d,selectionDirection:p}=c,_=e.nativeEvent.inputType,{display:v,raw:y}=t(i,o,typeof _==`string`?_:void 0);g||u(v),r(c,y);try{s?.(e)}finally{c.value=i,l!==null&&d!==null&&c.setSelectionRange(l,d,p??void 0),v!==i&&(c.value=v,l!==null&&d!==null&&c.setSelectionRange(n(i,v,l),n(i,v,d),p??void 0))}}else g||u(i),s?.(e)},handleCompositionStart:e=>{o&&(m.current=!0,h.current=!1,f(e.currentTarget.value))},handleCompositionEnd:e=>{if(m.current=!1,f(null),!o||!h.current){h.current=!1;return}h.current=!1;let t=e.currentTarget,n=t.value,{selectionStart:i,selectionEnd:a,selectionDirection:s}=t;t.value=n===``?`0`:``,r(t,n),i!==null&&a!==null&&t.setSelectionRange(i,a,s??void 0),t.dispatchEvent(new InputEvent(`input`,{bubbles:!0,inputType:`insertCompositionText`}))},setMergedInputRef:(e,t)=>n=>{p.current=n,typeof e==`function`?e(n):e!==null&&Object.assign(e,{current:n}),typeof t==`function`?t(n):t!=null&&`current`in t&&Object.assign(t,{current:n})},handleClear:()=>{if(c)return;let e=p.current;e&&(r(e,``),e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.focus())}}}exports.useInputFormat=i;
@@ -0,0 +1,43 @@
1
+ import { InputFormat, InputValue } from './types.js';
2
+ /** 화면 값과 부모에게 전달할 원본 값을 계산한다. */
3
+ export declare function applyInputFormat(value: InputValue, format: InputFormat, inputType?: string): {
4
+ display: string;
5
+ raw: string;
6
+ };
7
+ /**
8
+ * 포맷 변경 전 커서 앞의 숫자 개수를 포맷된 값에서도 유지한다.
9
+ * 커서 보존은 내장 price·phoneNumber·businessNumber처럼 숫자 기반 포맷을 전제로 한다.
10
+ * 다른 구분자나 문자의 위치까지 보존해야 하면 format 대신 제어 입력과 별도 커서 관리를 사용한다.
11
+ */
12
+ export declare function getFormattedCursorPosition(typedValue: string, formattedValue: string, position: number): number;
13
+ /**
14
+ * Input 포맷 훅.
15
+ * controlled/uncontrolled 양쪽을 지원하며 format 변환을 일관되게 처리한다.
16
+ *
17
+ * ## RHF (react-hook-form) 호환
18
+ * format 적용 시 `e.target.value`를 네이티브 setter로 변경한 뒤 원본 이벤트를 전달.
19
+ * 이렇게 하면 `e.target`이 실제 DOM 엘리먼트라 `name`·`type` 등 모든 속성이 보존된다.
20
+ * `{ ...e.target, value }` 스프레드는 prototype 속성을 복사하지 않으므로 사용하지 않는다.
21
+ * 원본 값은 onChange 호출 중 읽어야 하며, 호출 직후에는 표시 값으로 돌아간다.
22
+ * format 사용 중 IME 조합 단계에서는 포맷하지 않은 입력 원문을 onChange로 전달하고,
23
+ * 조합 확정 시 변환 및 reset을 적용한 원본 값을 onChange로 한 번 더 전달한다.
24
+ *
25
+ * @returns displayValue — 화면에 표시할 포맷팅된 값
26
+ * @returns handleChange — onChange 핸들러 (format 적용 후 부모 onChange 호출)
27
+ * @returns setMergedInputRef — forwardRef + RHF register ref + 내부 inputRef 병합
28
+ * @returns handleClear — clearable 버튼 클릭 핸들러 (native value setter 경유)
29
+ */
30
+ export declare function useInputFormat({ value, defaultValue, format, onChange, readOnly, }: {
31
+ value?: InputValue;
32
+ defaultValue?: InputValue;
33
+ format?: InputFormat;
34
+ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
35
+ readOnly?: boolean;
36
+ }): {
37
+ displayValue: string;
38
+ handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
39
+ handleCompositionStart: (e: React.CompositionEvent<HTMLInputElement>) => void;
40
+ handleCompositionEnd: (e: React.CompositionEvent<HTMLInputElement>) => void;
41
+ setMergedInputRef: (externalRef: React.ForwardedRef<HTMLInputElement>, rhfRef?: React.Ref<HTMLInputElement>) => (node: HTMLInputElement | null) => void;
42
+ handleClear: () => void;
43
+ };
@@ -0,0 +1,75 @@
1
+ import { useRef as e, useState as t } from "react";
2
+ //#region src/components/input/use-input-format.ts
3
+ function n(e, t, n) {
4
+ let r = t.transform(e, n).toString();
5
+ return {
6
+ display: r,
7
+ raw: t.reset ? t.reset(r).toString() : r
8
+ };
9
+ }
10
+ function r(e, t, n) {
11
+ if (e === t) return Math.min(n, t.length);
12
+ if (n >= e.length) return t.length;
13
+ if (!/\d/.test(e) && !/\d/.test(t)) return Math.min(n, t.length);
14
+ let r = (e.slice(0, n).match(/\d/g) ?? []).length;
15
+ if (r === 0) return e.length === t.length ? n : 0;
16
+ let i = 0;
17
+ for (let e = 0; e < t.length; e++) if (/\d/.test(t[e]) && ++i === r) return e + 1;
18
+ return t.length;
19
+ }
20
+ function i(e, t) {
21
+ let n = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value");
22
+ n?.set && n.set.bind(e)(t);
23
+ }
24
+ function a({ value: a, defaultValue: o, format: s, onChange: c, readOnly: l = !1 }) {
25
+ let [u, d] = t(() => {
26
+ let e = a ?? o ?? "";
27
+ return s ? s.transform(e).toString() : e.toString();
28
+ }), [f, p] = t(null), m = e(null), h = e(!1), g = e(!1), _ = a !== void 0, v = _ ? a.toString() : u;
29
+ return {
30
+ displayValue: s ? f ?? s.transform(v).toString() : v,
31
+ handleChange: (e) => {
32
+ if (l) return;
33
+ let t = e.target.value;
34
+ if (s) {
35
+ let a = e.nativeEvent;
36
+ if (h.current || a.isComposing) {
37
+ g.current = !0, p(t), _ || d(t), c?.(e);
38
+ return;
39
+ }
40
+ let o = e.target, { selectionStart: l, selectionEnd: u, selectionDirection: f } = o, m = e.nativeEvent.inputType, { display: v, raw: y } = n(t, s, typeof m == "string" ? m : void 0);
41
+ _ || d(v), i(o, y);
42
+ try {
43
+ c?.(e);
44
+ } finally {
45
+ o.value = t, l !== null && u !== null && o.setSelectionRange(l, u, f ?? void 0), v !== t && (o.value = v, l !== null && u !== null && o.setSelectionRange(r(t, v, l), r(t, v, u), f ?? void 0));
46
+ }
47
+ } else _ || d(t), c?.(e);
48
+ },
49
+ handleCompositionStart: (e) => {
50
+ s && (h.current = !0, g.current = !1, p(e.currentTarget.value));
51
+ },
52
+ handleCompositionEnd: (e) => {
53
+ if (h.current = !1, p(null), !s || !g.current) {
54
+ g.current = !1;
55
+ return;
56
+ }
57
+ g.current = !1;
58
+ let t = e.currentTarget, n = t.value, { selectionStart: r, selectionEnd: a, selectionDirection: o } = t;
59
+ t.value = n === "" ? "0" : "", i(t, n), r !== null && a !== null && t.setSelectionRange(r, a, o ?? void 0), t.dispatchEvent(new InputEvent("input", {
60
+ bubbles: !0,
61
+ inputType: "insertCompositionText"
62
+ }));
63
+ },
64
+ setMergedInputRef: (e, t) => (n) => {
65
+ m.current = n, typeof e == "function" ? e(n) : e !== null && Object.assign(e, { current: n }), typeof t == "function" ? t(n) : t != null && "current" in t && Object.assign(t, { current: n });
66
+ },
67
+ handleClear: () => {
68
+ if (l) return;
69
+ let e = m.current;
70
+ e && (i(e, ""), e.dispatchEvent(new Event("input", { bubbles: !0 })), e.focus());
71
+ }
72
+ };
73
+ }
74
+ //#endregion
75
+ export { a as useInputFormat };
@@ -0,0 +1 @@
1
+ const e=require("../_shared/form-size-tokens.cjs");var t={large:`h-control-large rounded-control-large border-control px-control-pad-large transition-colors focus-within:outline-hidden`,medium:`h-control-medium rounded-control-medium border-control px-control-pad-medium transition-colors focus-within:outline-hidden`,small:`h-control-small rounded-control-small border-control px-control-pad-small transition-colors focus-within:outline-hidden`,mini:`h-control-mini rounded-control-mini border-control px-control-pad-mini transition-colors focus-within:outline-hidden`},n=(e,n,r,i=`medium`)=>{if(e===`box`){let e=t[i];return r?[e,`bg-bg-disabled border-border-subtle`].join(` `):n?[e,`bg-bg-surface border-border-danger`].join(` `):[e,`bg-bg-surface border-border-subtle focus-within:border-border-primary`].join(` `)}return{box:``,line:`border-b-2 border-border-subtle px-0 py-2 focus:border-primary focus:ring-0`,big:`border-2 border-border-subtle rounded px-5 py-4 text-lg focus:border-primary focus:ring-control focus:ring-primary focus:ring-offset-0 h-[52px]`,hero:`border-2 border-border-subtle rounded px-6 py-5 text-xl font-semibold focus:border-primary focus:ring-control focus:ring-primary focus:ring-offset-0 h-[64px]`}[e]},r=(t,n,r,i,a=`medium`)=>{let o=`w-full bg-transparent ${e.CONTROL_TEXT_CLASS[a]} focus:outline-hidden disabled:cursor-not-allowed`;return t===`box`?r?[o,`text-fg-disabled placeholder:text-fg-disabled`].join(` `):n?[o,`text-fg-danger placeholder:text-fg-danger-placeholder`].join(` `):i?[o,`text-fg-default placeholder:text-fg-subtle`].join(` `):[o,`text-fg-subtle placeholder:text-fg-subtle`].join(` `):[`w-full bg-bg-surface text-sm text-fg-default placeholder:text-fg-subtle transition-all duration-200 ease-out focus:outline-hidden disabled:bg-bg-disabled disabled:text-fg-disabled disabled:cursor-not-allowed disabled:border-border-subtle`].join(` `)},i=(e,t,n)=>t?`text-fg-disabled`:e?`text-fg-danger`:n?`text-fg-muted`:`text-fg-subtle`,a=()=>`w-full`,o=(e,t)=>[`block text-xs font-medium mb-2`,t?`text-fg-danger`:`text-fg-muted`].join(` `),s=e=>[`mt-2 text-sm`,e?`text-fg-danger`:`text-fg-muted`].join(` `);exports.getInputClasses=r,exports.getInputContainerClasses=a,exports.getInputHelpClasses=s,exports.getInputLabelClasses=o,exports.getInputTrailingIconColor=i,exports.getInputVariantClasses=n;
@@ -1,4 +1,4 @@
1
- import { InputSize, InputVariant } from './types';
1
+ import { InputSize, InputVariant } from './types.js';
2
2
  /**
3
3
  * Input Variant에 따른 컨테이너(input wrapper) 클래스 매핑.
4
4
  * box variant는 새 디자인 적용. line/big/hero는 레거시.
@@ -1,23 +1,24 @@
1
+ import { CONTROL_TEXT_CLASS as e } from "../_shared/form-size-tokens.esm.js";
1
2
  //#region src/components/input/utils.ts
2
- var e = {
3
- large: "h-12 rounded-xl border px-5 transition-colors focus-within:outline-hidden",
4
- medium: "h-11 rounded-xl border px-3.5 transition-colors focus-within:outline-hidden",
5
- small: "h-9 rounded-lg border px-3 transition-colors focus-within:outline-hidden",
6
- mini: "h-7 rounded-md border px-2 transition-colors focus-within:outline-hidden"
7
- }, t = (t, n, r, i = "medium") => {
8
- if (t === "box") {
9
- let t = e[i];
10
- return r ? [t, "bg-bg-disabled border-border-tertiary dark:border-border-secondary"].join(" ") : n ? [t, "bg-bg-white border-border-danger"].join(" ") : [t, "bg-bg-white border-border-tertiary dark:border-border-secondary focus-within:border-border-primary"].join(" ");
3
+ var t = {
4
+ large: "h-control-large rounded-control-large border-control px-control-pad-large transition-colors focus-within:outline-hidden",
5
+ medium: "h-control-medium rounded-control-medium border-control px-control-pad-medium transition-colors focus-within:outline-hidden",
6
+ small: "h-control-small rounded-control-small border-control px-control-pad-small transition-colors focus-within:outline-hidden",
7
+ mini: "h-control-mini rounded-control-mini border-control px-control-pad-mini transition-colors focus-within:outline-hidden"
8
+ }, n = (e, n, r, i = "medium") => {
9
+ if (e === "box") {
10
+ let e = t[i];
11
+ return r ? [e, "bg-bg-disabled border-border-subtle"].join(" ") : n ? [e, "bg-bg-surface border-border-danger"].join(" ") : [e, "bg-bg-surface border-border-subtle focus-within:border-border-primary"].join(" ");
11
12
  }
12
13
  return {
13
14
  box: "",
14
- line: "border-b-2 border-neutral-300 dark:border-neutral-600 px-0 py-2 focus:border-primary-500 dark:focus:border-primary-400 focus:ring-0",
15
- big: "border-2 border-neutral-300 dark:border-neutral-600 rounded px-5 py-4 text-lg focus:border-primary-500 dark:focus:border-primary-400 focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400 focus:ring-offset-0 h-[52px]",
16
- hero: "border-2 border-neutral-300 dark:border-neutral-600 rounded px-6 py-5 text-xl font-semibold focus:border-primary-500 dark:focus:border-primary-400 focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400 focus:ring-offset-0 h-[64px]"
17
- }[t];
18
- }, n = (e, t, n, r, i = "medium") => {
19
- let a = `w-full bg-transparent ${i === "mini" ? "text-xs" : i === "large" ? "text-base" : "text-sm"} focus:outline-hidden disabled:cursor-not-allowed`;
20
- return e === "box" ? n ? [a, "text-text-disabled placeholder:text-text-disabled"].join(" ") : t ? [a, "text-text-danger placeholder:text-text-danger"].join(" ") : r ? [a, "text-text-primary placeholder:text-text-tertiary"].join(" ") : [a, "text-text-tertiary placeholder:text-text-tertiary"].join(" ") : ["w-full bg-white dark:bg-neutral-800 text-sm text-neutral-900 dark:text-white placeholder:text-neutral-400 transition-all duration-200 ease-out focus:outline-hidden disabled:bg-neutral-50 disabled:text-neutral-400 disabled:cursor-not-allowed disabled:border-neutral-200"].join(" ");
21
- }, r = (e, t, n) => t ? "text-icon-disabled" : e ? "text-icon-danger" : n ? "text-icon-secondary" : "text-icon-tertiary", i = () => "w-full", a = (e, t) => ["block text-xs font-medium mb-2", t ? "text-text-danger" : "text-text-secondary"].join(" "), o = (e) => ["mt-2 text-sm", e ? "text-text-danger" : "text-text-secondary"].join(" ");
15
+ line: "border-b-2 border-border-subtle px-0 py-2 focus:border-primary focus:ring-0",
16
+ big: "border-2 border-border-subtle rounded px-5 py-4 text-lg focus:border-primary focus:ring-control focus:ring-primary focus:ring-offset-0 h-[52px]",
17
+ hero: "border-2 border-border-subtle rounded px-6 py-5 text-xl font-semibold focus:border-primary focus:ring-control focus:ring-primary focus:ring-offset-0 h-[64px]"
18
+ }[e];
19
+ }, r = (t, n, r, i, a = "medium") => {
20
+ let o = `w-full bg-transparent ${e[a]} focus:outline-hidden disabled:cursor-not-allowed`;
21
+ return t === "box" ? r ? [o, "text-fg-disabled placeholder:text-fg-disabled"].join(" ") : n ? [o, "text-fg-danger placeholder:text-fg-danger-placeholder"].join(" ") : i ? [o, "text-fg-default placeholder:text-fg-subtle"].join(" ") : [o, "text-fg-subtle placeholder:text-fg-subtle"].join(" ") : ["w-full bg-bg-surface text-sm text-fg-default placeholder:text-fg-subtle transition-all duration-200 ease-out focus:outline-hidden disabled:bg-bg-disabled disabled:text-fg-disabled disabled:cursor-not-allowed disabled:border-border-subtle"].join(" ");
22
+ }, i = (e, t, n) => t ? "text-fg-disabled" : e ? "text-fg-danger" : n ? "text-fg-muted" : "text-fg-subtle", a = () => "w-full", o = (e, t) => ["block text-xs font-medium mb-2", t ? "text-fg-danger" : "text-fg-muted"].join(" "), s = (e) => ["mt-2 text-sm", e ? "text-fg-danger" : "text-fg-muted"].join(" ");
22
23
  //#endregion
23
- export { n as getInputClasses, i as getInputContainerClasses, o as getInputHelpClasses, a as getInputLabelClasses, r as getInputTrailingIconColor, t as getInputVariantClasses };
24
+ export { r as getInputClasses, a as getInputContainerClasses, s as getInputHelpClasses, o as getInputLabelClasses, i as getInputTrailingIconColor, n as getInputVariantClasses };
@@ -0,0 +1 @@
1
+ const e=require("../../lib/utils.cjs");let t=require("react/jsx-runtime");var n={sm:`h-4 w-4`,md:`h-6 w-6`,lg:`h-8 w-8`};function r({size:r=`md`}){return(0,t.jsxs)(`svg`,{className:e.cn(`animate-spin text-primary-fg`,n[r]),xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,children:[(0,t.jsx)(`circle`,{className:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,strokeWidth:`4`}),(0,t.jsx)(`path`,{className:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z`})]})}function i({message:n=`데이터를 불러오는 중이에요...`,size:i=`md`,className:a=``}){return(0,t.jsx)(`div`,{className:e.cn(`flex items-center justify-center h-full min-h-[200px]`,a),children:(0,t.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,t.jsx)(r,{size:i}),n&&(0,t.jsx)(`span`,{className:`text-sm text-fg-muted`,children:n})]})})}function a({size:e=`sm`}){return(0,t.jsx)(`div`,{className:`flex items-center justify-center py-3`,children:(0,t.jsx)(r,{size:e})})}exports.InlineSpinner=a,exports.LoadingSpinner=i,exports.Spinner=r;
@@ -1,47 +1,48 @@
1
- import { jsx as e, jsxs as t } from "react/jsx-runtime";
1
+ import { cn as e } from "../../lib/utils.esm.js";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
2
3
  //#region src/components/loading-spinner/LoadingSpinner.tsx
3
- var n = {
4
+ var r = {
4
5
  sm: "h-4 w-4",
5
6
  md: "h-6 w-6",
6
7
  lg: "h-8 w-8"
7
8
  };
8
- function r({ size: r = "md" }) {
9
- return /* @__PURE__ */ t("svg", {
10
- className: `animate-spin ${n[r]} text-primary-500 dark:text-primary-400`,
9
+ function i({ size: i = "md" }) {
10
+ return /* @__PURE__ */ n("svg", {
11
+ className: e("animate-spin text-primary-fg", r[i]),
11
12
  xmlns: "http://www.w3.org/2000/svg",
12
13
  fill: "none",
13
14
  viewBox: "0 0 24 24",
14
- children: [/* @__PURE__ */ e("circle", {
15
+ children: [/* @__PURE__ */ t("circle", {
15
16
  className: "opacity-25",
16
17
  cx: "12",
17
18
  cy: "12",
18
19
  r: "10",
19
20
  stroke: "currentColor",
20
21
  strokeWidth: "4"
21
- }), /* @__PURE__ */ e("path", {
22
+ }), /* @__PURE__ */ t("path", {
22
23
  className: "opacity-75",
23
24
  fill: "currentColor",
24
25
  d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
25
26
  })]
26
27
  });
27
28
  }
28
- function i({ message: n = "데이터를 불러오는 중이에요...", size: i = "md", className: a = "" }) {
29
- return /* @__PURE__ */ e("div", {
30
- className: `flex items-center justify-center h-full min-h-[200px] ${a}`,
31
- children: /* @__PURE__ */ t("div", {
29
+ function a({ message: r = "데이터를 불러오는 중이에요...", size: a = "md", className: o = "" }) {
30
+ return /* @__PURE__ */ t("div", {
31
+ className: e("flex items-center justify-center h-full min-h-[200px]", o),
32
+ children: /* @__PURE__ */ n("div", {
32
33
  className: "flex flex-col items-center gap-2",
33
- children: [/* @__PURE__ */ e(r, { size: i }), n && /* @__PURE__ */ e("span", {
34
- className: "text-sm text-neutral-500 dark:text-neutral-400",
35
- children: n
34
+ children: [/* @__PURE__ */ t(i, { size: a }), r && /* @__PURE__ */ t("span", {
35
+ className: "text-sm text-fg-muted",
36
+ children: r
36
37
  })]
37
38
  })
38
39
  });
39
40
  }
40
- function a({ size: t = "sm" }) {
41
- return /* @__PURE__ */ e("div", {
41
+ function o({ size: e = "sm" }) {
42
+ return /* @__PURE__ */ t("div", {
42
43
  className: "flex items-center justify-center py-3",
43
- children: /* @__PURE__ */ e(r, { size: t })
44
+ children: /* @__PURE__ */ t(i, { size: e })
44
45
  });
45
46
  }
46
47
  //#endregion
47
- export { a as InlineSpinner, i as LoadingSpinner, r as Spinner };
48
+ export { o as InlineSpinner, a as LoadingSpinner, i as Spinner };
@@ -0,0 +1,2 @@
1
+ export { LoadingSpinner, InlineSpinner, Spinner } from './LoadingSpinner.js';
2
+ export type { LoadingSpinnerProps } from './LoadingSpinner.js';
@@ -0,0 +1 @@
1
+ const e=require("../../lib/utils.cjs"),t=require("../../hooks/useMediaQuery.cjs"),n=require("../../hooks/useScrollLock.cjs"),r=require("../../hooks/useFocusTrap.cjs"),i=require("../../lib/overlay-stack.cjs"),a=require("../../lib/Portal.cjs"),o=require("./ModalFocusTrapContext.cjs");let s=require("react"),c=require("react/jsx-runtime"),l=require("motion/react");function u({isOpen:u,onClose:d,title:f,dismissible:p=!0,trapFocus:m=!0,onExitComplete:h,widthPx:g,footer:_,bodyPadded:v=!1,subView:y,className:b,children:x}){let S=t.useIsMobile(),C=(0,s.useId)(),w=(0,s.useId)(),T=(0,l.useDragControls)(),E=(0,l.useReducedMotion)(),[D,O]=(0,s.useState)(null),{context:k,isTop:A}=o.useModalSubViews(u,m,C);(0,s.useLayoutEffect)(()=>{D&&(D.inert=!u)},[D,u]);let j=(e,t)=>{p&&(t.offset.y>100||t.velocity.y>500)&&d()};(0,s.useEffect)(()=>{if(u)return i.overlayStack.push(C),()=>{i.overlayStack.pop(C)}},[u,C]),n.useScrollLock(u),r.useFocusTrap(D,{enabled:u,trapFocus:m,canTrap:A}),(0,s.useEffect)(()=>{let e=e=>{e.key!==`Escape`||!p||A()&&d()};return u&&window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[u,d,p,A]);let M=(0,c.jsxs)(a.Portal,{children:[(0,c.jsx)(l.AnimatePresence,{children:u&&(0,c.jsx)(l.motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:E?0:.2},onClick:()=>{!p||!A()||d()},className:`fixed inset-0 z-overlay bg-bg-overlay`},`modal-backdrop`)}),(0,c.jsx)(l.AnimatePresence,{onExitComplete:h,children:u&&(0,c.jsxs)(l.motion.div,{ref:O,role:`dialog`,"aria-modal":`true`,"aria-labelledby":f?w:void 0,tabIndex:-1,initial:S?{y:`100%`}:{opacity:0,y:24,scale:.96},animate:S?{y:0}:{opacity:1,y:0,scale:1},exit:S?{y:`100%`,transition:{duration:E?0:.2,ease:[.4,0,1,1]}}:{opacity:0,y:24,scale:.96},transition:E?{duration:0}:S?{type:`spring`,damping:38,stiffness:320}:{duration:.25,ease:[.32,.72,0,1]},drag:S&&p?`y`:!1,dragListener:!1,dragControls:T,dragConstraints:{top:0,bottom:0},dragElastic:{top:0,bottom:.4},onDragEnd:j,className:e.cn(`fixed -bottom-8 left-0 right-0 z-overlay mx-auto flex max-h-[88vh] w-full flex-col overflow-hidden rounded-t-sheet bg-bg-surface text-fg-default pb-8 shadow-overlay outline-none sm:bottom-auto sm:left-1/2 sm:right-auto sm:top-1/2 sm:max-h-[90vh] sm:w-auto sm:min-w-[320px] sm:max-w-[90vw] sm:rounded-surface sm:pb-0`,b),style:S?void 0:{translateX:`-50%`,translateY:`-50%`,...g?{width:g}:{}},children:[(0,c.jsx)(`div`,{className:e.cn(`flex justify-center pt-2 pb-1 cursor-grab touch-none active:cursor-grabbing sm:hidden`,!p&&`pointer-events-none opacity-0`),onPointerDown:e=>{p&&T.start(e)},children:(0,c.jsx)(`div`,{className:`h-1 w-10 rounded-full bg-bg-handle`})}),f&&(0,c.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3`,children:[(0,c.jsx)(`h3`,{id:w,className:`text-base font-semibold text-fg-default sm:text-lg`,children:f}),(0,c.jsx)(`button`,{type:`button`,onClick:d,disabled:!p,className:e.cn(`rounded-control-medium p-1 text-fg-muted hover:text-fg-default`,!p&&`pointer-events-none opacity-0`),"aria-label":`닫기`,children:(0,c.jsx)(`svg`,{className:`h-5 w-5`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`,children:(0,c.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M6 18L18 6M6 6l12 12`})})})]}),(0,c.jsxs)(`div`,{className:`relative flex min-h-0 flex-1 flex-col overflow-hidden`,children:[(0,c.jsx)(`div`,{className:e.cn(`transform-[translateZ(0)] flex-1 overflow-y-auto overflow-x-hidden`,v&&`mx-1 sm:mx-4`),children:x}),y]}),_&&(0,c.jsx)(`div`,{className:`shrink-0`,children:_})]},`modal-sheet`)})]});return(0,c.jsx)(o.ModalFocusTrapContext.Provider,{value:k,children:M})}exports.Modal=u;
@@ -2,6 +2,18 @@ export interface ModalProps {
2
2
  isOpen: boolean;
3
3
  onClose: () => void;
4
4
  title?: string;
5
+ /** false면 ESC, 백드롭, 닫기 버튼과 바텀시트 드래그로 닫히지 않는다. @default true */
6
+ dismissible?: boolean;
7
+ /**
8
+ * false면 Tab 가두기, 배경 포커스 복귀와 레이어·토스트 제거로 body에 유실된 포커스 복구를 끈다.
9
+ * 초기 포커스와 닫힐 때의 복원 규칙은 유지한다 —
10
+ * 닫는 시점에 포커스가 시트·부유 레이어 안이거나 body이면 열기 직전 요소로 복원하고,
11
+ * 소비자가 배경의 다른 요소로 옮겨 둔 포커스는 그대로 둔다.
12
+ * ModalSubView에도 같은 설정이 적용된다. @default true
13
+ */
14
+ trapFocus?: boolean;
15
+ /** 닫힘 모션이 끝난 뒤 호출한다. isOpen을 false로 바꾸지 않고 컴포넌트를 언마운트하면 호출되지 않는다. */
16
+ onExitComplete?: () => void;
5
17
  /**
6
18
  * 데스크탑(sm+) 모달의 고정 폭(px). 지정하지 않으면 콘텐츠 폭에 fit (`sm:w-auto`).
7
19
  *
@@ -37,6 +49,7 @@ export interface ModalProps {
37
49
  }
38
50
  /**
39
51
  * 데스크탑(`sm`+)에서는 중앙 정렬 모달, 모바일에서는 화면 하단에서 올라오는 bottom-sheet으로 동작.
52
+ * 열리면 첫 tabbable(제목과 활성 닫기 버튼이 있으면 닫기 버튼)에 포커스하며, 다른 필드는 `autoFocus`를 준다.
40
53
  *
41
54
  * - 모바일: 시트가 화면 하단에 붙고 상단 모서리만 둥글다. 핸들 바 표시.
42
55
  * 진입/퇴장 모션은 화면 밖에서 슬라이드 (`y: "100%" → 0 → "100%"`).
@@ -51,7 +64,20 @@ export interface ModalProps {
51
64
  * 등으로 변할 수 있으면 `widthPx`로 고정해 시트가 흔들리지 않게 할 것.
52
65
  *
53
66
  * **레이어드 오버레이**: ESC/백드롭은 `overlayStack`에서 자신이 top일 때만 반응한다.
54
- * ActionToast나 ModalSubView가 위에 떠 있으면(더 높은 priority/나중 push) 자동으로 양보된다.
67
+ * ActionToast나 열린 ModalSubView가 위에 떠 있으면 자동으로 양보된다.
55
68
  * 모달 위에 또 모달을 쌓는 대신 ModalSubView(푸시 네비)나 ActionToast(재확인)로 푸는 것을 권장.
69
+ *
70
+ * **포커스 트랩**: `aria-controls`로 연결된 Floating UI 포털 또는 `data-focus-trap-layer`가
71
+ * 붙은 포털만 부유 레이어로 인정한다. 연결을 알 수 없는 포털의 Tab은 모달로 돌아오므로
72
+ * 해당 포털에 표식을 붙이거나 `trapFocus={false}`를 사용한다. 표식은 문서 전체에서 찾으므로
73
+ * 현재 트랩에 편입할 포털에만 붙인다. `role="dialog"` + `aria-modal="true"`인 포털(서드파티
74
+ * 다이얼로그 등)은 표식이 있어도 편입하지 않으므로 `trapFocus={false}`를 사용한다.
75
+ * 가드 없는 부유 레이어(Popover·표식 포털)는 트리거 바로 뒤가 아니라 모달의
76
+ * 모든 tabbable 뒤에 붙는다. 포털 DOM 위치와 무관하게 순환을 일정하게 하기 위해 트리거에서
77
+ * Tab을 누르면 다음 필드로 가고, 패널은 한 바퀴의 마지막에 지난다. 열자마자 패널을 조작하려면
78
+ * 패널 안으로 바로 포커스를 옮기는 컴포넌트나 Select·DatePicker처럼 floating-ui 포커스 관리가 있는 패널을 쓴다.
79
+ * 액션 토스트가 top이면 트랩은 양보하며, 그동안에는 Tab이 모달 밖으로 나갈 수 있다
80
+ * (`backdrop: false` 알림성 토스트 포함). Tab으로 모달 밖에 떨어진 포커스는 고리로 되돌리고,
81
+ * 마우스로 옮긴 포커스는 건드리지 않는다.
56
82
  */
57
- export declare function Modal({ isOpen, onClose, title, widthPx, footer, bodyPadded, subView, className, children, }: ModalProps): import("react").JSX.Element;
83
+ export declare function Modal({ isOpen, onClose, title, dismissible, trapFocus, onExitComplete, widthPx, footer, bodyPadded, subView, className, children, }: ModalProps): import("react").JSX.Element;