@thewrong/ui 0.2.0 → 0.4.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 (589) hide show
  1. package/README.md +27 -6
  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 +5 -1
  21. package/dist/components/button/Button.esm.js +50 -45
  22. package/dist/{src/components → components}/button/index.d.ts +2 -2
  23. package/dist/{src/components → components}/button/types.d.ts +3 -1
  24. package/dist/components/button/utils.cjs +1 -0
  25. package/dist/{src/components → components}/button/utils.d.ts +3 -3
  26. package/dist/components/button/utils.esm.js +26 -22
  27. package/dist/components/checkbox/Checkbox.cjs +1 -0
  28. package/dist/{src/components → components}/checkbox/Checkbox.d.ts +1 -1
  29. package/dist/components/checkbox/Checkbox.esm.js +36 -35
  30. package/dist/components/checkbox/index.d.ts +2 -0
  31. package/dist/components/checkbox/utils.cjs +1 -0
  32. package/dist/{src/components → components}/checkbox/utils.d.ts +1 -1
  33. package/dist/components/checkbox/utils.esm.js +11 -11
  34. package/dist/components/collapsible/Collapsible.cjs +1 -0
  35. package/dist/components/collapsible/Collapsible.esm.js +12 -11
  36. package/dist/components/collapsible/index.d.ts +2 -0
  37. package/dist/components/copyable-text/CopyableText.cjs +1 -0
  38. package/dist/components/copyable-text/CopyableText.d.ts +22 -0
  39. package/dist/components/copyable-text/CopyableText.esm.js +50 -0
  40. package/dist/components/copyable-text/index.d.ts +2 -0
  41. package/dist/components/date-input/DateInput.cjs +1 -0
  42. package/dist/{src/components → components}/date-input/DateInput.d.ts +1 -0
  43. package/dist/components/date-input/DateInput.esm.js +24 -23
  44. package/dist/components/date-input/index.d.ts +1 -0
  45. package/dist/components/date-picker/PickerSheet.cjs +1 -0
  46. package/dist/components/date-picker/PickerSheet.d.ts +22 -0
  47. package/dist/components/date-picker/PickerSheet.esm.js +77 -0
  48. package/dist/components/date-picker/date-picker.cjs +1 -0
  49. package/dist/{src/components → components}/date-picker/date-picker.d.ts +1 -0
  50. package/dist/components/date-picker/date-picker.esm.js +99 -147
  51. package/dist/components/date-picker/date-range-picker.cjs +1 -0
  52. package/dist/{src/components → components}/date-picker/date-range-picker.d.ts +3 -1
  53. package/dist/components/date-picker/date-range-picker.esm.js +117 -166
  54. package/dist/components/date-picker/index.d.ts +5 -0
  55. package/dist/components/date-picker/month-picker.cjs +1 -0
  56. package/dist/{src/components → components}/date-picker/month-picker.d.ts +1 -0
  57. package/dist/components/date-picker/month-picker.esm.js +68 -112
  58. package/dist/components/drawer/Drawer.cjs +1 -0
  59. package/dist/components/drawer/Drawer.d.ts +45 -0
  60. package/dist/components/drawer/Drawer.esm.js +127 -97
  61. package/dist/components/drawer/index.d.ts +2 -0
  62. package/dist/components/error-boundary/ErrorBoundary.cjs +1 -0
  63. package/dist/components/error-boundary/ErrorBoundary.d.ts +23 -0
  64. package/dist/components/error-boundary/ErrorBoundary.esm.js +46 -0
  65. package/dist/components/error-boundary/chunk-reload.cjs +1 -0
  66. package/dist/components/error-boundary/chunk-reload.d.ts +77 -0
  67. package/dist/components/error-boundary/chunk-reload.esm.js +73 -0
  68. package/dist/components/error-boundary/index.d.ts +4 -0
  69. package/dist/components/error-boundary/types.d.ts +23 -0
  70. package/dist/components/field/Field.cjs +1 -0
  71. package/dist/components/field/Field.d.ts +16 -0
  72. package/dist/components/field/Field.esm.js +34 -0
  73. package/dist/components/field/FieldMessage.cjs +1 -0
  74. package/dist/components/field/FieldMessage.d.ts +19 -0
  75. package/dist/components/field/FieldMessage.esm.js +12 -0
  76. package/dist/components/field/index.d.ts +3 -0
  77. package/dist/components/field/types.d.ts +24 -0
  78. package/dist/components/info-tooltip/InfoTooltip.cjs +1 -0
  79. package/dist/components/info-tooltip/InfoTooltip.esm.js +13 -12
  80. package/dist/components/info-tooltip/index.d.ts +2 -0
  81. package/dist/components/input/DecimalInput.cjs +1 -0
  82. package/dist/components/input/DecimalInput.d.ts +18 -0
  83. package/dist/components/input/DecimalInput.esm.js +40 -0
  84. package/dist/components/input/Input.cjs +1 -0
  85. package/dist/{src/components → components}/input/Input.d.ts +1 -1
  86. package/dist/components/input/Input.esm.js +47 -53
  87. package/dist/components/input/PasswordInput.cjs +1 -0
  88. package/dist/{src/components → components}/input/PasswordInput.d.ts +1 -1
  89. package/dist/components/input/PasswordInput.esm.js +1 -1
  90. package/dist/components/input/decimal-validation.cjs +1 -0
  91. package/dist/components/input/decimal-validation.d.ts +7 -0
  92. package/dist/components/input/decimal-validation.esm.js +66 -0
  93. package/dist/components/input/format.cjs +1 -0
  94. package/dist/{src/components → components}/input/format.d.ts +17 -1
  95. package/dist/components/input/format.esm.js +16 -5
  96. package/dist/components/input/index.d.ts +7 -0
  97. package/dist/{src/components → components}/input/types.d.ts +2 -2
  98. package/dist/components/input/use-input-format.cjs +1 -0
  99. package/dist/components/input/use-input-format.d.ts +43 -0
  100. package/dist/components/input/use-input-format.esm.js +75 -0
  101. package/dist/components/input/utils.cjs +1 -0
  102. package/dist/{src/components → components}/input/utils.d.ts +1 -1
  103. package/dist/components/input/utils.esm.js +19 -18
  104. package/dist/components/loading-spinner/LoadingSpinner.cjs +1 -0
  105. package/dist/components/loading-spinner/LoadingSpinner.esm.js +19 -18
  106. package/dist/components/loading-spinner/index.d.ts +2 -0
  107. package/dist/components/modal/Modal.cjs +1 -0
  108. package/dist/{src/components → components}/modal/Modal.d.ts +28 -2
  109. package/dist/components/modal/Modal.esm.js +148 -118
  110. package/dist/components/modal/ModalFocusTrapContext.cjs +1 -0
  111. package/dist/components/modal/ModalFocusTrapContext.d.ts +18 -0
  112. package/dist/components/modal/ModalFocusTrapContext.esm.js +36 -0
  113. package/dist/components/modal/ModalSubView.cjs +1 -0
  114. package/dist/{src/components → components}/modal/ModalSubView.d.ts +6 -1
  115. package/dist/components/modal/ModalSubView.esm.js +65 -45
  116. package/dist/components/modal/StandardModal.cjs +1 -0
  117. package/dist/{src/components → components}/modal/StandardModal.d.ts +8 -2
  118. package/dist/components/modal/StandardModal.esm.js +18 -15
  119. package/dist/components/modal/index.d.ts +6 -0
  120. package/dist/components/month-range-picker/index.d.ts +2 -0
  121. package/dist/components/month-range-picker/month-range-picker.cjs +1 -0
  122. package/dist/components/month-range-picker/month-range-picker.d.ts +16 -0
  123. package/dist/components/month-range-picker/month-range-picker.esm.js +227 -0
  124. package/dist/components/month-range-picker/month-range-utils.cjs +1 -0
  125. package/dist/components/month-range-picker/month-range-utils.d.ts +9 -0
  126. package/dist/components/month-range-picker/month-range-utils.esm.js +28 -0
  127. package/dist/components/page-title/PageTitle.cjs +1 -0
  128. package/dist/components/page-title/PageTitle.esm.js +11 -10
  129. package/dist/components/page-title/index.d.ts +1 -0
  130. package/dist/components/popover/Popover.cjs +1 -0
  131. package/dist/components/popover/Popover.esm.js +2 -2
  132. package/dist/components/popover/index.d.ts +2 -0
  133. package/dist/components/progress/Progress.cjs +1 -0
  134. package/dist/components/progress/Progress.d.ts +12 -0
  135. package/dist/components/progress/Progress.esm.js +24 -0
  136. package/dist/components/progress/index.d.ts +2 -0
  137. package/dist/components/progress/types.d.ts +13 -0
  138. package/dist/components/radio/Radio.cjs +1 -0
  139. package/dist/components/radio/Radio.d.ts +31 -0
  140. package/dist/components/radio/Radio.esm.js +118 -0
  141. package/dist/components/radio/index.d.ts +2 -0
  142. package/dist/components/radio/types.d.ts +24 -0
  143. package/dist/components/search-box/ExactMatchToggle.cjs +1 -0
  144. package/dist/components/search-box/ExactMatchToggle.esm.js +14 -13
  145. package/dist/components/search-box/SearchBox.cjs +1 -0
  146. package/dist/{src/components → components}/search-box/SearchBox.d.ts +1 -1
  147. package/dist/components/search-box/SearchBox.esm.js +94 -93
  148. package/dist/components/search-box/SearchBoxChips.cjs +1 -0
  149. package/dist/components/search-box/SearchBoxChips.esm.js +3 -3
  150. package/dist/components/search-box/SearchBoxDateRange.cjs +1 -0
  151. package/dist/{src/components → components}/search-box/SearchBoxDateRange.d.ts +1 -1
  152. package/dist/components/search-box/SearchBoxDateRange.esm.js +39 -36
  153. package/dist/components/search-box/SearchBoxDateSingle.cjs +1 -0
  154. package/dist/{src/components → components}/search-box/SearchBoxDateSingle.d.ts +1 -1
  155. package/dist/components/search-box/SearchBoxDateSingle.esm.js +29 -27
  156. package/dist/components/search-box/SearchBoxField.cjs +1 -0
  157. package/dist/{src/components → components}/search-box/SearchBoxField.d.ts +1 -1
  158. package/dist/components/search-box/SearchBoxFloatingInput.cjs +1 -0
  159. package/dist/components/search-box/SearchBoxFloatingInput.esm.js +29 -24
  160. package/dist/components/search-box/SearchBoxFloatingSelect.cjs +1 -0
  161. package/dist/{src/components → components}/search-box/SearchBoxFloatingSelect.d.ts +1 -1
  162. package/dist/components/search-box/SearchBoxFloatingSelect.esm.js +56 -51
  163. package/dist/components/search-box/SearchBoxMonth.cjs +1 -0
  164. package/dist/components/search-box/SearchBoxMonth.esm.js +21 -20
  165. package/dist/components/search-box/SearchBoxMultiSelect.cjs +1 -0
  166. package/dist/{src/components → components}/search-box/SearchBoxMultiSelect.d.ts +2 -2
  167. package/dist/components/search-box/SearchBoxMultiSelect.esm.js +60 -55
  168. package/dist/components/search-box/dateRangePresets.cjs +1 -0
  169. package/dist/{src/components → components}/search-box/dateRangePresets.d.ts +1 -1
  170. package/dist/{src/components → components}/search-box/index.d.ts +5 -5
  171. package/dist/components/search-box/parseSearchValues.cjs +1 -0
  172. package/dist/{src/components → components}/search-box/parseSearchValues.d.ts +2 -2
  173. package/dist/{src/components → components}/search-box/types.d.ts +1 -1
  174. package/dist/components/search-box/useSearchBoxState.cjs +1 -0
  175. package/dist/{src/components → components}/search-box/useSearchBoxState.d.ts +1 -1
  176. package/dist/components/segmented-code-input/SegmentedCodeInput.cjs +1 -0
  177. package/dist/components/segmented-code-input/SegmentedCodeInput.d.ts +49 -0
  178. package/dist/components/segmented-code-input/SegmentedCodeInput.esm.js +87 -0
  179. package/dist/components/segmented-code-input/code-utils.cjs +1 -0
  180. package/dist/components/segmented-code-input/code-utils.d.ts +4 -0
  181. package/dist/components/segmented-code-input/code-utils.esm.js +9 -0
  182. package/dist/components/segmented-code-input/index.d.ts +2 -0
  183. package/dist/components/segmented-control/SegmentedControl.cjs +1 -0
  184. package/dist/components/segmented-control/SegmentedControl.d.ts +27 -0
  185. package/dist/components/segmented-control/SegmentedControl.esm.js +84 -0
  186. package/dist/components/segmented-control/index.d.ts +2 -0
  187. package/dist/components/segmented-control/types.d.ts +30 -0
  188. package/dist/components/select/MultiSelect.cjs +1 -0
  189. package/dist/{src/components → components}/select/MultiSelect.d.ts +11 -3
  190. package/dist/components/select/MultiSelect.esm.js +180 -176
  191. package/dist/components/select/Select.cjs +1 -0
  192. package/dist/{src/components → components}/select/Select.d.ts +16 -2
  193. package/dist/components/select/Select.esm.js +215 -195
  194. package/dist/components/select/index.d.ts +4 -0
  195. package/dist/components/select/loading-dots.cjs +1 -0
  196. package/dist/components/select/loading-dots.d.ts +3 -0
  197. package/dist/components/select/loading-dots.esm.js +8 -7
  198. package/dist/components/select/panel-width.cjs +1 -0
  199. package/dist/components/select/panel-width.d.ts +2 -0
  200. package/dist/components/select/panel-width.esm.js +7 -0
  201. package/dist/{src/components → components}/select/types.d.ts +7 -0
  202. package/dist/{src/components → components}/select/utils.d.ts +1 -1
  203. package/dist/components/skeleton/Skeleton.cjs +1 -0
  204. package/dist/components/skeleton/Skeleton.d.ts +6 -0
  205. package/dist/components/skeleton/Skeleton.esm.js +12 -0
  206. package/dist/components/skeleton/index.d.ts +2 -0
  207. package/dist/components/skeleton/types.d.ts +2 -0
  208. package/dist/components/slider/Slider.cjs +1 -0
  209. package/dist/components/slider/Slider.d.ts +6 -0
  210. package/dist/components/slider/Slider.esm.js +36 -0
  211. package/dist/components/slider/index.d.ts +2 -0
  212. package/dist/components/slider/types.d.ts +15 -0
  213. package/dist/components/slider/utils.cjs +1 -0
  214. package/dist/components/slider/utils.d.ts +3 -0
  215. package/dist/components/slider/utils.esm.js +15 -0
  216. package/dist/components/stepper/Stepper.cjs +1 -0
  217. package/dist/components/stepper/Stepper.d.ts +51 -0
  218. package/dist/components/stepper/Stepper.esm.js +142 -0
  219. package/dist/components/stepper/index.d.ts +4 -0
  220. package/dist/components/stepper/use-stepper.cjs +1 -0
  221. package/dist/components/stepper/use-stepper.d.ts +43 -0
  222. package/dist/components/stepper/use-stepper.esm.js +57 -0
  223. package/dist/components/switch/Switch.cjs +1 -0
  224. package/dist/{src/components → components}/switch/Switch.d.ts +1 -1
  225. package/dist/components/switch/Switch.esm.js +21 -20
  226. package/dist/components/switch/index.d.ts +2 -0
  227. package/dist/components/switch/utils.cjs +1 -0
  228. package/dist/{src/components → components}/switch/utils.d.ts +2 -2
  229. package/dist/components/switch/utils.esm.js +9 -8
  230. package/dist/components/table/accordion-table.cjs +1 -0
  231. package/dist/{src/components → components}/table/accordion-table.d.ts +1 -1
  232. package/dist/components/table/accordion-table.esm.js +261 -247
  233. package/dist/{src/components → components}/table/column-group-utils.d.ts +1 -1
  234. package/dist/components/table/components/ColumnPresetSelector.cjs +1 -0
  235. package/dist/{src/components → components}/table/components/ColumnPresetSelector.d.ts +2 -2
  236. package/dist/components/table/components/ColumnPresetSelector.esm.js +60 -59
  237. package/dist/components/table/components/ColumnSettingsTable.cjs +1 -0
  238. package/dist/{src/components → components}/table/components/ColumnSettingsTable.d.ts +1 -1
  239. package/dist/components/table/components/ColumnSettingsTable.esm.js +94 -96
  240. package/dist/components/table/components/KeyboardNavButton.cjs +1 -0
  241. package/dist/components/table/components/KeyboardNavButton.esm.js +1 -1
  242. package/dist/components/table/components/PageJumpInput.cjs +1 -0
  243. package/dist/components/table/components/PageJumpInput.esm.js +33 -32
  244. package/dist/components/table/components/Pagination.cjs +1 -0
  245. package/dist/components/table/components/Pagination.esm.js +80 -79
  246. package/dist/components/table/components/PaginationFooter.cjs +1 -0
  247. package/dist/components/table/components/PaginationFooter.esm.js +2 -2
  248. package/dist/components/table/components/SortHeader.cjs +1 -0
  249. package/dist/components/table/components/SortHeader.d.ts +10 -0
  250. package/dist/components/table/components/SortHeader.esm.js +27 -0
  251. package/dist/components/table/components/SortableHeaderCell.cjs +1 -0
  252. package/dist/{src/components → components}/table/components/SortableHeaderCell.d.ts +10 -2
  253. package/dist/components/table/components/SortableHeaderCell.esm.js +54 -26
  254. package/dist/components/table/hooks/sort-state.cjs +1 -0
  255. package/dist/components/table/hooks/sort-state.d.ts +5 -0
  256. package/dist/components/table/hooks/sort-state.esm.js +21 -0
  257. package/dist/components/table/hooks/useColumnPresets.cjs +1 -0
  258. package/dist/{src/components → components}/table/hooks/useColumnPresets.d.ts +2 -2
  259. package/dist/components/table/hooks/useColumnResize.cjs +1 -0
  260. package/dist/{src/components → components}/table/hooks/useColumnResize.d.ts +12 -0
  261. package/dist/components/table/hooks/useColumnResize.esm.js +66 -54
  262. package/dist/components/table/hooks/useFillEmptyRows.d.ts +2 -0
  263. package/dist/components/table/hooks/useInfiniteScroll.d.ts +2 -0
  264. package/dist/components/table/hooks/useTableColumnState.cjs +1 -0
  265. package/dist/{src/components → components}/table/hooks/useTableColumnState.d.ts +1 -1
  266. package/dist/components/table/hooks/useTableDragSelection.d.ts +2 -0
  267. package/dist/components/table/hooks/useTableSort.cjs +1 -0
  268. package/dist/{src/components → components}/table/hooks/useTableSort.d.ts +7 -4
  269. package/dist/components/table/hooks/useTableSort.esm.js +18 -19
  270. package/dist/components/table/hooks/useVirtualTable.cjs +1 -0
  271. package/dist/components/table/hooks/useVirtualTable.esm.js +8 -8
  272. package/dist/components/table/index.d.ts +27 -0
  273. package/dist/components/table/mini-table.cjs +1 -0
  274. package/dist/{src/components → components}/table/mini-table.d.ts +1 -1
  275. package/dist/components/table/mini-table.esm.js +87 -86
  276. package/dist/components/table/paginated-mini-table.cjs +1 -0
  277. package/dist/{src/components → components}/table/paginated-mini-table.d.ts +1 -1
  278. package/dist/components/table/paginated-table.cjs +1 -0
  279. package/dist/{src/components → components}/table/paginated-table.d.ts +3 -1
  280. package/dist/components/table/table.cjs +1 -0
  281. package/dist/components/table/table.d.ts +13 -0
  282. package/dist/components/table/table.esm.js +189 -173
  283. package/dist/{src/components → components}/table/types.d.ts +11 -4
  284. package/dist/components/table/utils.cjs +35 -0
  285. package/dist/{src/components → components}/table/utils.d.ts +2 -2
  286. package/dist/components/table/utils.esm.js +2 -2
  287. package/dist/components/table-checkbox/TableCheckbox.cjs +1 -0
  288. package/dist/components/table-checkbox/TableCheckbox.esm.js +27 -26
  289. package/dist/components/table-checkbox/index.d.ts +1 -0
  290. package/dist/components/table-page-layout/TablePageLayout.cjs +1 -0
  291. package/dist/components/table-page-layout/TablePageLayout.esm.js +3 -3
  292. package/dist/{src/components → components}/table-page-layout/index.d.ts +1 -1
  293. package/dist/components/tabs/Tabs.cjs +1 -0
  294. package/dist/components/tabs/Tabs.d.ts +8 -0
  295. package/dist/components/tabs/Tabs.esm.js +53 -0
  296. package/dist/components/tabs/index.d.ts +2 -0
  297. package/dist/components/tabs/navigation.cjs +1 -0
  298. package/dist/components/tabs/navigation.d.ts +2 -0
  299. package/dist/components/tabs/navigation.esm.js +18 -0
  300. package/dist/components/tabs/types.d.ts +20 -0
  301. package/dist/components/textarea/Textarea.cjs +1 -0
  302. package/dist/{src/components → components}/textarea/Textarea.d.ts +1 -1
  303. package/dist/components/textarea/Textarea.esm.js +49 -47
  304. package/dist/components/textarea/index.d.ts +2 -0
  305. package/dist/components/time-picker/index.d.ts +2 -0
  306. package/dist/components/time-picker/time-picker.cjs +1 -0
  307. package/dist/components/time-picker/time-picker.d.ts +35 -0
  308. package/dist/components/time-picker/time-picker.esm.js +193 -0
  309. package/dist/components/time-picker/time-utils.cjs +1 -0
  310. package/dist/components/time-picker/time-utils.d.ts +12 -0
  311. package/dist/components/time-picker/time-utils.esm.js +56 -0
  312. package/dist/components/toast/ToastProvider.cjs +1 -0
  313. package/dist/{src/components → components}/toast/ToastProvider.d.ts +3 -0
  314. package/dist/components/toast/ToastProvider.esm.js +47 -43
  315. package/dist/components/toast/index.d.ts +3 -0
  316. package/dist/components/toolbar/Toolbar.cjs +1 -0
  317. package/dist/{src/components → components}/toolbar/Toolbar.d.ts +1 -1
  318. package/dist/components/toolbar/Toolbar.esm.js +99 -98
  319. package/dist/components/toolbar/index.d.ts +2 -0
  320. package/dist/components/tooltip/{Tooltip.cjs.js → Tooltip.cjs} +1 -1
  321. package/dist/components/tooltip/Tooltip.esm.js +1 -1
  322. package/dist/components/tooltip/index.d.ts +2 -0
  323. package/dist/components/typewriter-text/TypewriterText.cjs +1 -0
  324. package/dist/components/typewriter-text/TypewriterText.d.ts +7 -0
  325. package/dist/components/typewriter-text/TypewriterText.esm.js +58 -0
  326. package/dist/components/typewriter-text/index.d.ts +2 -0
  327. package/dist/components/typewriter-text/types.d.ts +12 -0
  328. package/dist/components/typing-dots/TypingDots.cjs +1 -0
  329. package/dist/components/typing-dots/TypingDots.d.ts +10 -0
  330. package/dist/components/typing-dots/TypingDots.esm.js +37 -0
  331. package/dist/components/typing-dots/index.d.ts +2 -0
  332. package/dist/components/typing-dots/types.d.ts +4 -0
  333. package/dist/hooks/awaitableOverlayController.cjs +1 -0
  334. package/dist/hooks/awaitableOverlayController.d.ts +6 -0
  335. package/dist/hooks/awaitableOverlayController.esm.js +18 -0
  336. package/dist/hooks/index.d.ts +17 -0
  337. package/dist/hooks/useAwaitableOverlay.cjs +1 -0
  338. package/dist/hooks/useAwaitableOverlay.d.ts +16 -0
  339. package/dist/hooks/useAwaitableOverlay.esm.js +22 -0
  340. package/dist/hooks/useFillEmptyRows.cjs +1 -0
  341. package/dist/{src/components/table/hooks → hooks}/useFillEmptyRows.d.ts +10 -1
  342. package/dist/hooks/useFillEmptyRows.esm.js +60 -0
  343. package/dist/hooks/useFocusTrap.cjs +1 -0
  344. package/dist/hooks/useFocusTrap.d.ts +47 -0
  345. package/dist/hooks/useFocusTrap.esm.js +210 -0
  346. package/dist/hooks/useInfiniteScroll.cjs +1 -0
  347. package/dist/hooks/useInfiniteScroll.d.ts +36 -0
  348. package/dist/hooks/useInfiniteScroll.esm.js +31 -0
  349. package/dist/hooks/useTableDragSelection.cjs +1 -0
  350. package/dist/{src/components/table/hooks → hooks}/useTableDragSelection.d.ts +3 -4
  351. package/dist/{components/table/hooks → hooks}/useTableDragSelection.esm.js +9 -6
  352. package/dist/hooks/useVirtualRows.cjs +1 -0
  353. package/dist/hooks/useVirtualRows.d.ts +56 -0
  354. package/dist/hooks/useVirtualRows.esm.js +20 -0
  355. package/dist/hooks.cjs +1 -0
  356. package/dist/hooks.esm.js +12 -5
  357. package/dist/index.cjs +1 -0
  358. package/dist/index.d.ts +42 -0
  359. package/dist/index.esm.js +83 -58
  360. package/dist/lib/index.d.ts +6 -0
  361. package/dist/lib/utils.cjs +1 -0
  362. package/dist/{src/lib → lib}/utils.d.ts +2 -1
  363. package/dist/lib/utils.esm.js +108 -5
  364. package/dist/node_modules/lucide-react/dist/esm/Icon.cjs +1 -0
  365. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs +1 -0
  366. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-down.cjs +1 -0
  367. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-down.esm.js +10 -0
  368. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.cjs +1 -0
  369. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-up-down.cjs +1 -0
  370. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-up-down.esm.js +21 -0
  371. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-up.cjs +1 -0
  372. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-up.esm.js +10 -0
  373. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.cjs +1 -0
  374. package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs +1 -0
  375. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs +1 -0
  376. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.cjs +1 -0
  377. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs +1 -0
  378. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.cjs +1 -0
  379. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.cjs +1 -0
  380. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.cjs +1 -0
  381. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.cjs +1 -0
  382. package/dist/node_modules/lucide-react/dist/esm/icons/clock.cjs +1 -0
  383. package/dist/node_modules/lucide-react/dist/esm/icons/clock.esm.js +12 -0
  384. package/dist/node_modules/lucide-react/dist/esm/icons/copy.cjs +1 -0
  385. package/dist/node_modules/lucide-react/dist/esm/icons/copy.esm.js +15 -0
  386. package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.cjs +1 -0
  387. package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs +1 -0
  388. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs +1 -0
  389. package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs +1 -0
  390. package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.cjs +1 -0
  391. package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.cjs +1 -0
  392. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs +1 -0
  393. package/dist/node_modules/lucide-react/dist/esm/icons/minus.cjs +1 -0
  394. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs +1 -0
  395. package/dist/node_modules/lucide-react/dist/esm/icons/save.cjs +1 -0
  396. package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs +1 -0
  397. package/dist/node_modules/lucide-react/dist/esm/icons/settings.cjs +1 -0
  398. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.cjs +1 -0
  399. package/dist/node_modules/lucide-react/dist/esm/icons/wrench.cjs +1 -0
  400. package/dist/node_modules/lucide-react/dist/esm/icons/x.cjs +1 -0
  401. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.cjs +1 -0
  402. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs +1 -0
  403. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.esm.js +559 -550
  404. package/dist/tokens.css +1158 -0
  405. package/dist/ui.css +1 -1
  406. package/llms.txt +46 -17
  407. package/package.json +11 -8
  408. package/dist/components/_shared/form-size-tokens.cjs.js +0 -1
  409. package/dist/components/action-toast/ActionToast.cjs.js +0 -1
  410. package/dist/components/animated-height/AnimatedHeight.cjs.js +0 -1
  411. package/dist/components/badge/Badge.cjs.js +0 -1
  412. package/dist/components/badge/utils.cjs.js +0 -1
  413. package/dist/components/button/Button.cjs.js +0 -1
  414. package/dist/components/button/utils.cjs.js +0 -1
  415. package/dist/components/checkbox/Checkbox.cjs.js +0 -1
  416. package/dist/components/checkbox/utils.cjs.js +0 -1
  417. package/dist/components/collapsible/Collapsible.cjs.js +0 -1
  418. package/dist/components/date-input/DateInput.cjs.js +0 -1
  419. package/dist/components/date-picker/date-picker.cjs.js +0 -1
  420. package/dist/components/date-picker/date-range-picker.cjs.js +0 -1
  421. package/dist/components/date-picker/month-picker.cjs.js +0 -1
  422. package/dist/components/drawer/Drawer.cjs.js +0 -1
  423. package/dist/components/info-tooltip/InfoTooltip.cjs.js +0 -1
  424. package/dist/components/input/Input.cjs.js +0 -1
  425. package/dist/components/input/PasswordInput.cjs.js +0 -1
  426. package/dist/components/input/format.cjs.js +0 -1
  427. package/dist/components/input/utils.cjs.js +0 -1
  428. package/dist/components/loading-spinner/LoadingSpinner.cjs.js +0 -1
  429. package/dist/components/modal/Modal.cjs.js +0 -1
  430. package/dist/components/modal/ModalSubView.cjs.js +0 -1
  431. package/dist/components/modal/StandardModal.cjs.js +0 -1
  432. package/dist/components/page-title/PageTitle.cjs.js +0 -1
  433. package/dist/components/popover/Popover.cjs.js +0 -1
  434. package/dist/components/search-box/ExactMatchToggle.cjs.js +0 -1
  435. package/dist/components/search-box/SearchBox.cjs.js +0 -1
  436. package/dist/components/search-box/SearchBoxChips.cjs.js +0 -1
  437. package/dist/components/search-box/SearchBoxDateRange.cjs.js +0 -1
  438. package/dist/components/search-box/SearchBoxDateSingle.cjs.js +0 -1
  439. package/dist/components/search-box/SearchBoxField.cjs.js +0 -1
  440. package/dist/components/search-box/SearchBoxFloatingInput.cjs.js +0 -1
  441. package/dist/components/search-box/SearchBoxFloatingSelect.cjs.js +0 -1
  442. package/dist/components/search-box/SearchBoxMonth.cjs.js +0 -1
  443. package/dist/components/search-box/SearchBoxMultiSelect.cjs.js +0 -1
  444. package/dist/components/search-box/dateRangePresets.cjs.js +0 -1
  445. package/dist/components/search-box/parseSearchValues.cjs.js +0 -1
  446. package/dist/components/search-box/useSearchBoxState.cjs.js +0 -1
  447. package/dist/components/select/MultiSelect.cjs.js +0 -1
  448. package/dist/components/select/Select.cjs.js +0 -1
  449. package/dist/components/select/loading-dots.cjs.js +0 -1
  450. package/dist/components/switch/Switch.cjs.js +0 -1
  451. package/dist/components/switch/utils.cjs.js +0 -1
  452. package/dist/components/table/accordion-table.cjs.js +0 -1
  453. package/dist/components/table/components/ColumnPresetSelector.cjs.js +0 -1
  454. package/dist/components/table/components/ColumnSettingsTable.cjs.js +0 -4
  455. package/dist/components/table/components/KeyboardNavButton.cjs.js +0 -1
  456. package/dist/components/table/components/PageJumpInput.cjs.js +0 -1
  457. package/dist/components/table/components/Pagination.cjs.js +0 -1
  458. package/dist/components/table/components/PaginationFooter.cjs.js +0 -1
  459. package/dist/components/table/components/SortableHeaderCell.cjs.js +0 -1
  460. package/dist/components/table/hooks/useColumnPresets.cjs.js +0 -1
  461. package/dist/components/table/hooks/useColumnResize.cjs.js +0 -1
  462. package/dist/components/table/hooks/useFillEmptyRows.cjs.js +0 -1
  463. package/dist/components/table/hooks/useFillEmptyRows.esm.js +0 -49
  464. package/dist/components/table/hooks/useInfiniteScroll.cjs.js +0 -1
  465. package/dist/components/table/hooks/useInfiniteScroll.esm.js +0 -32
  466. package/dist/components/table/hooks/useTableColumnState.cjs.js +0 -1
  467. package/dist/components/table/hooks/useTableDragSelection.cjs.js +0 -1
  468. package/dist/components/table/hooks/useTableSort.cjs.js +0 -1
  469. package/dist/components/table/hooks/useVirtualTable.cjs.js +0 -1
  470. package/dist/components/table/mini-table.cjs.js +0 -1
  471. package/dist/components/table/paginated-mini-table.cjs.js +0 -1
  472. package/dist/components/table/paginated-table.cjs.js +0 -1
  473. package/dist/components/table/table.cjs.js +0 -1
  474. package/dist/components/table/utils.cjs.js +0 -37
  475. package/dist/components/table-checkbox/TableCheckbox.cjs.js +0 -1
  476. package/dist/components/table-page-layout/TablePageLayout.cjs.js +0 -1
  477. package/dist/components/textarea/Textarea.cjs.js +0 -1
  478. package/dist/components/toast/ToastProvider.cjs.js +0 -1
  479. package/dist/components/toolbar/Toolbar.cjs.js +0 -1
  480. package/dist/hooks.cjs.js +0 -1
  481. package/dist/index.cjs.js +0 -1
  482. package/dist/lib/utils.cjs.js +0 -1
  483. package/dist/node_modules/lucide-react/dist/esm/Icon.cjs.js +0 -1
  484. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs.js +0 -1
  485. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.cjs.js +0 -1
  486. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.cjs.js +0 -1
  487. package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs.js +0 -1
  488. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs.js +0 -1
  489. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.cjs.js +0 -1
  490. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs.js +0 -1
  491. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.cjs.js +0 -1
  492. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.cjs.js +0 -1
  493. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.cjs.js +0 -1
  494. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.cjs.js +0 -1
  495. package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.cjs.js +0 -1
  496. package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs.js +0 -1
  497. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs.js +0 -1
  498. package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs.js +0 -1
  499. package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.cjs.js +0 -1
  500. package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.cjs.js +0 -1
  501. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs.js +0 -1
  502. package/dist/node_modules/lucide-react/dist/esm/icons/minus.cjs.js +0 -1
  503. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs.js +0 -1
  504. package/dist/node_modules/lucide-react/dist/esm/icons/save.cjs.js +0 -1
  505. package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs.js +0 -1
  506. package/dist/node_modules/lucide-react/dist/esm/icons/settings.cjs.js +0 -1
  507. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.cjs.js +0 -1
  508. package/dist/node_modules/lucide-react/dist/esm/icons/wrench.cjs.js +0 -1
  509. package/dist/node_modules/lucide-react/dist/esm/icons/x.cjs.js +0 -1
  510. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.cjs.js +0 -1
  511. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs.js +0 -1
  512. package/dist/src/components/animated-height/index.d.ts +0 -2
  513. package/dist/src/components/badge/index.d.ts +0 -2
  514. package/dist/src/components/checkbox/index.d.ts +0 -2
  515. package/dist/src/components/collapsible/index.d.ts +0 -2
  516. package/dist/src/components/date-input/index.d.ts +0 -1
  517. package/dist/src/components/date-picker/index.d.ts +0 -5
  518. package/dist/src/components/drawer/Drawer.d.ts +0 -23
  519. package/dist/src/components/drawer/index.d.ts +0 -2
  520. package/dist/src/components/info-tooltip/index.d.ts +0 -2
  521. package/dist/src/components/input/index.d.ts +0 -4
  522. package/dist/src/components/loading-spinner/index.d.ts +0 -2
  523. package/dist/src/components/modal/index.d.ts +0 -6
  524. package/dist/src/components/page-title/index.d.ts +0 -1
  525. package/dist/src/components/popover/index.d.ts +0 -2
  526. package/dist/src/components/select/index.d.ts +0 -4
  527. package/dist/src/components/select/loading-dots.d.ts +0 -9
  528. package/dist/src/components/switch/index.d.ts +0 -2
  529. package/dist/src/components/table/hooks/useInfiniteScroll.d.ts +0 -58
  530. package/dist/src/components/table/index.d.ts +0 -27
  531. package/dist/src/components/table/table.d.ts +0 -10
  532. package/dist/src/components/table-checkbox/index.d.ts +0 -1
  533. package/dist/src/components/textarea/index.d.ts +0 -2
  534. package/dist/src/components/toast/index.d.ts +0 -3
  535. package/dist/src/components/toolbar/index.d.ts +0 -2
  536. package/dist/src/components/tooltip/index.d.ts +0 -2
  537. package/dist/src/hooks/index.d.ts +0 -4
  538. package/dist/src/index.d.ts +0 -27
  539. package/dist/src/lib/index.d.ts +0 -6
  540. /package/dist/_virtual/_rolldown/{runtime.cjs.js → runtime.cjs} +0 -0
  541. /package/dist/{src/components → components}/animated-height/AnimatedHeight.d.ts +0 -0
  542. /package/dist/{src/components → components}/badge/types.d.ts +0 -0
  543. /package/dist/{src/components → components}/checkbox/types.d.ts +0 -0
  544. /package/dist/{src/components → components}/collapsible/Collapsible.d.ts +0 -0
  545. /package/dist/{src/components → components}/info-tooltip/InfoTooltip.d.ts +0 -0
  546. /package/dist/{src/components → components}/loading-spinner/LoadingSpinner.d.ts +0 -0
  547. /package/dist/{src/components → components}/page-title/PageTitle.d.ts +0 -0
  548. /package/dist/{src/components → components}/popover/Popover.d.ts +0 -0
  549. /package/dist/{src/components → components}/search-box/ExactMatchToggle.d.ts +0 -0
  550. /package/dist/{src/components → components}/search-box/SearchBoxChips.d.ts +0 -0
  551. /package/dist/{src/components → components}/search-box/SearchBoxFloatingInput.d.ts +0 -0
  552. /package/dist/{src/components → components}/search-box/SearchBoxMonth.d.ts +0 -0
  553. /package/dist/components/search-box/{SearchBoxSheetContext.cjs.js → SearchBoxSheetContext.cjs} +0 -0
  554. /package/dist/{src/components → components}/search-box/SearchBoxSheetContext.d.ts +0 -0
  555. /package/dist/components/search-box/{parseDateRange.cjs.js → parseDateRange.cjs} +0 -0
  556. /package/dist/{src/components → components}/search-box/parseDateRange.d.ts +0 -0
  557. /package/dist/{src/components → components}/switch/types.d.ts +0 -0
  558. /package/dist/components/table/{column-group-utils.cjs.js → column-group-utils.cjs} +0 -0
  559. /package/dist/{src/components → components}/table/components/KeyboardNavButton.d.ts +0 -0
  560. /package/dist/{src/components → components}/table/components/PageJumpInput.d.ts +0 -0
  561. /package/dist/{src/components → components}/table/components/Pagination.d.ts +0 -0
  562. /package/dist/{src/components → components}/table/components/PaginationFooter.d.ts +0 -0
  563. /package/dist/{src/components → components}/table/hooks/useVirtualTable.d.ts +0 -0
  564. /package/dist/{src/components → components}/table-checkbox/TableCheckbox.d.ts +0 -0
  565. /package/dist/{src/components → components}/table-page-layout/TablePageLayout.d.ts +0 -0
  566. /package/dist/{src/components → components}/textarea/types.d.ts +0 -0
  567. /package/dist/{src/components → components}/tooltip/Tooltip.d.ts +0 -0
  568. /package/dist/hooks/{useBottomSheetDrag.cjs.js → useBottomSheetDrag.cjs} +0 -0
  569. /package/dist/{src/hooks → hooks}/useBottomSheetDrag.d.ts +0 -0
  570. /package/dist/hooks/{useClickOutside.cjs.js → useClickOutside.cjs} +0 -0
  571. /package/dist/{src/hooks → hooks}/useClickOutside.d.ts +0 -0
  572. /package/dist/hooks/{useMediaQuery.cjs.js → useMediaQuery.cjs} +0 -0
  573. /package/dist/{src/hooks → hooks}/useMediaQuery.d.ts +0 -0
  574. /package/dist/hooks/{useScrollLock.cjs.js → useScrollLock.cjs} +0 -0
  575. /package/dist/{src/hooks → hooks}/useScrollLock.d.ts +0 -0
  576. /package/dist/lib/{Portal.cjs.js → Portal.cjs} +0 -0
  577. /package/dist/{src/lib → lib}/Portal.d.ts +0 -0
  578. /package/dist/lib/{column-preset-storage.cjs.js → column-preset-storage.cjs} +0 -0
  579. /package/dist/{src/lib → lib}/column-preset-storage.d.ts +0 -0
  580. /package/dist/lib/{overlay-stack.cjs.js → overlay-stack.cjs} +0 -0
  581. /package/dist/{src/lib → lib}/overlay-stack.d.ts +0 -0
  582. /package/dist/node_modules/clsx/dist/{clsx.cjs.js → clsx.cjs} +0 -0
  583. /package/dist/node_modules/lucide-react/dist/esm/{context.cjs.js → context.cjs} +0 -0
  584. /package/dist/node_modules/lucide-react/dist/esm/{defaultAttributes.cjs.js → defaultAttributes.cjs} +0 -0
  585. /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{hasA11yProp.cjs.js → hasA11yProp.cjs} +0 -0
  586. /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{mergeClasses.cjs.js → mergeClasses.cjs} +0 -0
  587. /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{toCamelCase.cjs.js → toCamelCase.cjs} +0 -0
  588. /package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/{toKebabCase.cjs.js → toKebabCase.cjs} +0 -0
  589. /package/dist/node_modules/use-debounce/dist/{index.module.cjs.js → index.module.cjs} +0 -0
@@ -0,0 +1,77 @@
1
+ /** 저장·보고·새로고침을 소비자가 제공하는 청크 복구 포트. */
2
+ export interface ChunkReloadPort {
3
+ get(): number | null;
4
+ set(reloadedAt: number): void;
5
+ remove(): void;
6
+ report(error: Error, trigger: "navigation" | "preload"): void;
7
+ /** 새로고침 전 필요한 대기를 마친 뒤 reload한다. */
8
+ reload(): Promise<void>;
9
+ }
10
+ export declare const CHUNK_RELOAD_TTL_MS = 30000;
11
+ /** 브라우저와 번들러마다 다른 dynamic import 실패 형태를 판별한다. */
12
+ export declare function isChunkLoadError(error: unknown): boolean;
13
+ interface ReloadOnceOptions {
14
+ now?: () => number;
15
+ ttlMs?: number;
16
+ }
17
+ /**
18
+ * TTL 가드를 판정하고 통과하면 가드 상태를 영속한다. 이 함수는 보고나 reload를
19
+ * 실행하지 않는다. `reloadOnceForChunkError`는 가드 통과 뒤 reload까지 잇는 래퍼다.
20
+ */
21
+ export declare function tryAcquireChunkReloadGuard(port: ChunkReloadPort, options?: ReloadOnceOptions): boolean;
22
+ /**
23
+ * 청크 실패를 한 번만 자동 새로고침한다.
24
+ *
25
+ * hard reload 뒤에도 가드가 남는다는 것을 쓰기 후 재조회로 확인한 경우에만
26
+ * reload한다. 스토리지가 차단되거나 가득 찬 환경에서는 자동 복구를 포기하고
27
+ * 앱 fallback에 머문다. 메모리 가드는 영속에 성공한 같은 페이지 생명주기의
28
+ * 중복 호출만 보조한다. TTL 뒤에는 다음 배포의 복구를 허용한다.
29
+ *
30
+ * `port.reload()`를 즉시 호출한다. 가드 통과 여부만 알고 reload는 직접 제어하려는
31
+ * 호출자는 `tryAcquireChunkReloadGuard`를 쓴다.
32
+ */
33
+ export declare function reloadOnceForChunkError(port: ChunkReloadPort, options?: ReloadOnceOptions): boolean;
34
+ /** 사용자가 명시적으로 reload를 선택했을 때 다음 복구 사이클을 연다. */
35
+ export declare function clearChunkReloadGuard(port: ChunkReloadPort): void;
36
+ export declare function reloadAfterClearingChunkGuard(port: ChunkReloadPort): void;
37
+ /**
38
+ * Vite의 `vite:preloadError` payload를 보고한 뒤, 허용된 경우 1회 reload한다.
39
+ * 기본 보고는 동기이며, import catch의 식별이 필요하면 기존 다음 task에서 보고한다.
40
+ * `preventDefault()`를 호출하지 않아 Vite가 원래 실패를 다시 throw하게 둔다.
41
+ *
42
+ * 동적 import 실패에서 `preventDefault()`로 Vite의 throw를 막으면 import promise가
43
+ * `undefined`로 완료된다. TanStack `lazyRouteComponent`가 그 값을 `res[exportName]`에서
44
+ * 읽다가 원래 오류 대신 TypeError를 만들기 때문에, 원래 오류가 그대로 전파되도록 둔다.
45
+ *
46
+ * TanStack `lazyRouteComponent`는 세션의 `tanstack_router_reload:<message>` 표식이 없는
47
+ * 첫 인식 실패를 컴포넌트 렌더 중 reload한다. 이때 pending promise를 던져 route boundary를
48
+ * 건너뛸 수 있다. 실패한 import를 캐시해 후속 클릭에서 다시 import하거나 Vite 이벤트를
49
+ * 내지 않고, 캐시된 실패를 렌더에서 처리한다: 표식이 없으면 TanStack이 자체 reload하고,
50
+ * 표식이 있으면 같은 Error를 던진다. 앱의 `reportError`는 같은 Error 객체를 중복 제거한다.
51
+ *
52
+ * Vite 이벤트는 TanStack의 동작보다 먼저 발생한다. `shouldReload`는 이벤트 시점에
53
+ * 한 번 평가해 네비게이션 상태와 보고용 trigger를 보존한다. 결과가 false인 intent
54
+ * preload 실패도 보고하되 TTL 가드를 소모하거나 자체 reload를 예약하지 않는다.
55
+ * 다음 task에서 평가하는 `shouldIgnoreAfterImport`와 평가 시점이 다르다.
56
+ *
57
+ * 이동 보존: 네비게이션 발 이벤트 시점에는 주소창이 이미 목표 URL이다.
58
+ * 같은 URL을 reload하면 목표 화면에 착지하므로 별도 경로 저장은 필요 없다.
59
+ * 실측: Vite 8.1.3 + @tanstack/react-router 1.170.17의 코드 분할 라우트 이동.
60
+ *
61
+ * 무한 루프 가드: TTL 30초(`CHUNK_RELOAD_TTL_MS`) 안에서는 reload를 다시 예약하지 않는다.
62
+ * 가드에 걸리면 원래 오류가 전파되고, 경계가 수동 새로고침 화면을 보여준다.
63
+ *
64
+ * @param port 앱이 조립한 스토리지·보고·reload 경계. 다른 청크 복구 층과 같은 포트를 써야
65
+ * TTL 가드가 공유된다.
66
+ * @param target 리스너를 붙일 대상. 기본값은 `window`이며 테스트에서 교체한다.
67
+ * @param shouldReload 네비게이션 발 이벤트에 reload를 허용할지 판별한다. 원본 이벤트도
68
+ * 전달하므로 선택 기능 청크를 구분해 제외할 수 있다. 기본값은 true.
69
+ * @param shouldIgnoreAfterImport 선택 기능 import의 catch가 오류 객체를 식별할 시간을
70
+ * 주도록 다음 task에서 평가하는 reload 제외 조건. 보고는 이 판정과 무관하게 먼저 한다.
71
+ * 제외된 오류는 TTL 가드를 소모하지 않는다.
72
+ * @param shouldReport 보고 허용 조건. 함수를 반환하면 import catch 뒤 기존 다음 task에서
73
+ * 평가한다. 이 경우에도 이벤트 시점 trigger를 쓰고 reload 전에 보고한다.
74
+ * @returns 리스너를 해제하는 함수.
75
+ */
76
+ export declare function listenForChunkPreloadError(port: ChunkReloadPort, target?: Pick<Window, "addEventListener" | "removeEventListener">, shouldReload?: (event: Event) => boolean, shouldIgnoreAfterImport?: (event: Event) => boolean, shouldReport?: (event: Event) => boolean | (() => boolean)): () => void;
77
+ export {};
@@ -0,0 +1,73 @@
1
+ //#region src/components/error-boundary/chunk-reload.ts
2
+ var e = 3e4, t = null;
3
+ function n(e, t) {
4
+ if (typeof e != "object" || !e || !(t in e)) return;
5
+ let n = e[t];
6
+ return typeof n == "string" ? n : void 0;
7
+ }
8
+ function r(e) {
9
+ if (n(e, "name") === "ChunkLoadError") return !0;
10
+ let t = n(e, "message");
11
+ return t ? /Loading chunk [\w-]+ failed/i.test(t) || /Failed to fetch dynamically imported module/i.test(t) || /error loading dynamically imported module/i.test(t) || /Importing a module script failed/i.test(t) || /Unable to preload CSS for/i.test(t) : !1;
12
+ }
13
+ function i(e, t, n) {
14
+ return e === null || !Number.isFinite(e) ? !1 : t - e < n;
15
+ }
16
+ function a(e, n = {}) {
17
+ let r = (n.now ?? Date.now)(), a = n.ttlMs ?? 3e4, o;
18
+ try {
19
+ o = e.get();
20
+ } catch {
21
+ return !1;
22
+ }
23
+ if (i(o, r, a) || i(t, r, a)) return !1;
24
+ try {
25
+ if (e.set(r), e.get() !== r) return !1;
26
+ } catch {
27
+ return !1;
28
+ }
29
+ return t = r, !0;
30
+ }
31
+ function o(e, t = {}) {
32
+ let n = a(e, t);
33
+ return n && e.reload(), n;
34
+ }
35
+ function s(e) {
36
+ t = null;
37
+ try {
38
+ e.remove();
39
+ } catch {}
40
+ }
41
+ function c(e) {
42
+ s(e), e.reload();
43
+ }
44
+ function l(e, t = window, r = () => !0, i, o) {
45
+ let s = /* @__PURE__ */ new Set(), c = (t) => {
46
+ let c = t.payload, l = c instanceof Error ? c : Error(typeof c == "string" ? c : n(c, "message") ?? "Vite preload failed"), u = r(t), d = !0;
47
+ try {
48
+ d = o?.(t) ?? !0;
49
+ } catch {}
50
+ let f = () => {
51
+ try {
52
+ (typeof d == "function" ? d() : d) && e.report(l, u ? "navigation" : "preload");
53
+ } catch {}
54
+ }, p = typeof d == "function";
55
+ if (p || f(), !u && !p) return;
56
+ let m = () => {
57
+ a(e) && e.reload();
58
+ };
59
+ if (i || p) {
60
+ let e = setTimeout(() => {
61
+ s.delete(e), p && f(), u && !i?.(t) && m();
62
+ }, 0);
63
+ s.add(e);
64
+ } else m();
65
+ };
66
+ return t.addEventListener("vite:preloadError", c), () => {
67
+ t.removeEventListener("vite:preloadError", c);
68
+ for (let e of s) clearTimeout(e);
69
+ s.clear();
70
+ };
71
+ }
72
+ //#endregion
73
+ export { e as CHUNK_RELOAD_TTL_MS, s as clearChunkReloadGuard, r as isChunkLoadError, l as listenForChunkPreloadError, c as reloadAfterClearingChunkGuard, o as reloadOnceForChunkError, a as tryAcquireChunkReloadGuard };
@@ -0,0 +1,4 @@
1
+ export { ErrorBoundary } from './ErrorBoundary.js';
2
+ export type { ErrorBoundaryProps, ErrorBoundaryFallbackProps } from './types.js';
3
+ export { CHUNK_RELOAD_TTL_MS, isChunkLoadError, tryAcquireChunkReloadGuard, reloadOnceForChunkError, clearChunkReloadGuard, reloadAfterClearingChunkGuard, listenForChunkPreloadError, } from './chunk-reload.js';
4
+ export type { ChunkReloadPort } from './chunk-reload.js';
@@ -0,0 +1,23 @@
1
+ import { ErrorInfo, ReactNode } from 'react';
2
+ import { ChunkReloadPort } from './chunk-reload.js';
3
+ export interface ErrorBoundaryFallbackProps {
4
+ error: Error;
5
+ isChunkError: boolean;
6
+ reset: () => void;
7
+ reload: () => void;
8
+ }
9
+ export interface ErrorBoundaryProps {
10
+ children: ReactNode;
11
+ /** 영속 가드와 보고·새로고침 구현. 없으면 청크 자동 새로고침을 시도하지 않는다. */
12
+ chunkReloadPort?: ChunkReloadPort;
13
+ /** 기본 안내 대신 표시할 폴백. reset과 reload를 직접 연결할 수 있다. */
14
+ fallbackRender?: (props: ErrorBoundaryFallbackProps) => ReactNode;
15
+ /** 기본 폴백의 안내 문구. */
16
+ message?: string;
17
+ /** 일반 오류에서 다시 렌더할 버튼의 문구. */
18
+ retryLabel?: string;
19
+ /** 청크 오류에서 페이지를 새로고침할 버튼의 문구. */
20
+ reloadLabel?: string;
21
+ /** 청크 오류를 포함한 렌더 오류마다 호출된다. */
22
+ onError?: (error: Error, errorInfo: ErrorInfo, isChunkError: boolean) => void;
23
+ }
@@ -0,0 +1 @@
1
+ const e=require("../../lib/utils.cjs");let t=require("react/jsx-runtime");function n({label:n,htmlFor:r,rightLabel:i,className:a,required:o,optional:s,children:c}){let l=i!=null&&typeof i!=`string`;return(0,t.jsxs)(`div`,{className:e.cn(`space-y-1.5`,a),children:[(0,t.jsxs)(`div`,{className:e.cn(`flex items-center justify-between`,!l&&`h-4`),children:[(0,t.jsxs)(`label`,{htmlFor:r,className:`block text-xs leading-4 font-medium text-fg-muted`,children:[n,o&&(0,t.jsx)(`span`,{"aria-hidden":`true`,className:`ml-1 text-fg-danger`,children:`*`}),!o&&s&&(0,t.jsx)(`span`,{className:`ml-1 text-fg-subtle`,children:`(선택)`})]}),typeof i==`string`?(0,t.jsx)(`span`,{style:{lineHeight:`16px`},className:`text-[11px] text-fg-subtle`,children:i}):i]}),c]})}exports.Field=n;
@@ -0,0 +1,16 @@
1
+ import { FieldProps } from './types.js';
2
+ /**
3
+ * 라벨 + 우측 보조 텍스트 + 컨트롤을 묶는 폼 필드 래퍼.
4
+ * 모달 폼 및 일반 폼에서 공통 사용.
5
+ *
6
+ * @example
7
+ * <Field label="이름" required>
8
+ * <Input variant="box" placeholder="이름을 입력하세요" />
9
+ * </Field>
10
+ *
11
+ * @example
12
+ * <Field label="금액" rightLabel="최대 100만원">
13
+ * <Input variant="box" suffix="원" />
14
+ * </Field>
15
+ */
16
+ export declare function Field({ label, htmlFor, rightLabel, className, required, optional, children, }: FieldProps): import("react").JSX.Element;
@@ -0,0 +1,34 @@
1
+ import { cn as e } from "../../lib/utils.esm.js";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ //#region src/components/field/Field.tsx
4
+ function r({ label: r, htmlFor: i, rightLabel: a, className: o, required: s, optional: c, children: l }) {
5
+ let u = a != null && typeof a != "string";
6
+ return /* @__PURE__ */ n("div", {
7
+ className: e("space-y-1.5", o),
8
+ children: [/* @__PURE__ */ n("div", {
9
+ className: e("flex items-center justify-between", !u && "h-4"),
10
+ children: [/* @__PURE__ */ n("label", {
11
+ htmlFor: i,
12
+ className: "block text-xs leading-4 font-medium text-fg-muted",
13
+ children: [
14
+ r,
15
+ s && /* @__PURE__ */ t("span", {
16
+ "aria-hidden": "true",
17
+ className: "ml-1 text-fg-danger",
18
+ children: "*"
19
+ }),
20
+ !s && c && /* @__PURE__ */ t("span", {
21
+ className: "ml-1 text-fg-subtle",
22
+ children: "(선택)"
23
+ })
24
+ ]
25
+ }), typeof a == "string" ? /* @__PURE__ */ t("span", {
26
+ style: { lineHeight: "16px" },
27
+ className: "text-[11px] text-fg-subtle",
28
+ children: a
29
+ }) : a]
30
+ }), l]
31
+ });
32
+ }
33
+ //#endregion
34
+ export { r as Field };
@@ -0,0 +1 @@
1
+ const e=require("../animated-height/AnimatedHeight.cjs");let t=require("react/jsx-runtime");function n({children:n,animated:r=!1,...i}){let a=n?(0,t.jsx)(`div`,{...i,children:n}):null;return r?(0,t.jsx)(e.AnimatedHeight,{children:a}):a}exports.FieldMessage=n;
@@ -0,0 +1,19 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ export interface FieldMessageProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
3
+ children?: ReactNode;
4
+ /** 메시지가 나타나고 사라질 때 높이를 부드럽게 전환한다. */
5
+ animated?: boolean;
6
+ }
7
+ /**
8
+ * 폼 컨트롤 아래의 도움말·검증 메시지 영역.
9
+ *
10
+ * 조건부 메시지를 애니메이션하려면 컴포넌트 자체는 유지하고 children만 바꾼다.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * <FieldMessage animated className="mt-1 text-xs text-fg-danger">
15
+ * {errorMessage}
16
+ * </FieldMessage>
17
+ * ```
18
+ */
19
+ export declare function FieldMessage({ children, animated, ...messageProps }: FieldMessageProps): import("react").JSX.Element | null;
@@ -0,0 +1,12 @@
1
+ import { AnimatedHeight as e } from "../animated-height/AnimatedHeight.esm.js";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ //#region src/components/field/FieldMessage.tsx
4
+ function n({ children: n, animated: r = !1, ...i }) {
5
+ let a = n ? /* @__PURE__ */ t("div", {
6
+ ...i,
7
+ children: n
8
+ }) : null;
9
+ return r ? /* @__PURE__ */ t(e, { children: a }) : a;
10
+ }
11
+ //#endregion
12
+ export { n as FieldMessage };
@@ -0,0 +1,3 @@
1
+ export { Field } from './Field.js';
2
+ export { FieldMessage, type FieldMessageProps } from './FieldMessage.js';
3
+ export type { FieldProps } from './types.js';
@@ -0,0 +1,24 @@
1
+ export interface FieldProps {
2
+ /** 라벨 텍스트. */
3
+ label: string;
4
+ /** 연결할 폼 컨트롤 id. 제공하면 label의 htmlFor로 전달된다. */
5
+ htmlFor?: string;
6
+ /**
7
+ * 라벨 우측 보조 텍스트 또는 노드(버튼·뱃지 등).
8
+ * string이면 자동으로 옅은 보조 스타일(fg-subtle) 적용.
9
+ */
10
+ rightLabel?: React.ReactNode;
11
+ /** 외부 그리드에서 필드 셀의 배치를 조정할 때 사용하는 추가 className. */
12
+ className?: string;
13
+ /**
14
+ * 필수 표시를 라벨 뒤에 추가한다. 접근성을 위해 실제 입력에도 required를 지정한다.
15
+ * `optional`과 동시 사용 시 `required`가 우선한다.
16
+ */
17
+ required?: boolean;
18
+ /**
19
+ * 선택 필드 — 라벨 뒤에 `(선택)` 표시.
20
+ * `required`와 동시 사용 시 `required` 우선.
21
+ */
22
+ optional?: boolean;
23
+ children: React.ReactNode;
24
+ }
@@ -0,0 +1 @@
1
+ const e=require("../../lib/utils.cjs");let t=require("react/jsx-runtime");function n({content:n,position:r=`top`}){return(0,t.jsxs)(`div`,{className:`relative inline-flex items-center group`,children:[(0,t.jsx)(`div`,{className:`w-3.5 h-3.5 rounded-full bg-primary flex items-center justify-center cursor-help hover:bg-primary-hover transition-colors`,children:(0,t.jsx)(`span`,{className:`text-[9px] font-bold text-fg-inverse`,children:`?`})}),(0,t.jsxs)(`div`,{className:e.cn(`absolute z-floating px-3 py-2 bg-bg-tooltip text-fg-tooltip text-xs rounded-tooltip shadow-overlay opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 pointer-events-none w-64 whitespace-normal`,{top:`bottom-full left-1/2 -translate-x-1/2 mb-2`,bottom:`top-full left-1/2 -translate-x-1/2 mt-2`,left:`right-full top-1/2 -translate-y-1/2 mr-2`,right:`left-full top-1/2 -translate-y-1/2 ml-2`}[r]),children:[n,(0,t.jsx)(`div`,{className:e.cn(`absolute w-2 h-2 bg-bg-tooltip transform rotate-45`,r===`top`?`bottom-[-4px] left-1/2 -translate-x-1/2`:r===`bottom`?`top-[-4px] left-1/2 -translate-x-1/2`:r===`left`?`right-[-4px] top-1/2 -translate-y-1/2`:`left-[-4px] top-1/2 -translate-y-1/2`)})]})]})}exports.InfoTooltip=n;
@@ -1,24 +1,25 @@
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/info-tooltip/InfoTooltip.tsx
3
- function n({ content: n, position: r = "top" }) {
4
- return /* @__PURE__ */ t("div", {
4
+ function r({ content: r, position: i = "top" }) {
5
+ return /* @__PURE__ */ n("div", {
5
6
  className: "relative inline-flex items-center group",
6
- children: [/* @__PURE__ */ e("div", {
7
- className: "w-3.5 h-3.5 rounded-full bg-primary-500 dark:bg-primary-600 flex items-center justify-center cursor-help hover:bg-primary-600 dark:hover:bg-primary-500 transition-colors",
8
- children: /* @__PURE__ */ e("span", {
9
- className: "text-[9px] font-bold text-white",
7
+ children: [/* @__PURE__ */ t("div", {
8
+ className: "w-3.5 h-3.5 rounded-full bg-primary flex items-center justify-center cursor-help hover:bg-primary-hover transition-colors",
9
+ children: /* @__PURE__ */ t("span", {
10
+ className: "text-[9px] font-bold text-fg-inverse",
10
11
  children: "?"
11
12
  })
12
- }), /* @__PURE__ */ t("div", {
13
- className: `absolute ${{
13
+ }), /* @__PURE__ */ n("div", {
14
+ className: e("absolute z-floating px-3 py-2 bg-bg-tooltip text-fg-tooltip text-xs rounded-tooltip shadow-overlay opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 pointer-events-none w-64 whitespace-normal", {
14
15
  top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
15
16
  bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
16
17
  left: "right-full top-1/2 -translate-y-1/2 mr-2",
17
18
  right: "left-full top-1/2 -translate-y-1/2 ml-2"
18
- }[r]} z-50 px-3 py-2 bg-neutral-900 dark:bg-neutral-700 text-white text-xs rounded shadow-lg opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 pointer-events-none w-64 whitespace-normal`,
19
- children: [n, /* @__PURE__ */ e("div", { className: `absolute w-2 h-2 bg-neutral-900 dark:bg-neutral-700 transform rotate-45 ${r === "top" ? "bottom-[-4px] left-1/2 -translate-x-1/2" : r === "bottom" ? "top-[-4px] left-1/2 -translate-x-1/2" : r === "left" ? "right-[-4px] top-1/2 -translate-y-1/2" : "left-[-4px] top-1/2 -translate-y-1/2"}` })]
19
+ }[i]),
20
+ children: [r, /* @__PURE__ */ t("div", { className: e("absolute w-2 h-2 bg-bg-tooltip transform rotate-45", i === "top" ? "bottom-[-4px] left-1/2 -translate-x-1/2" : i === "bottom" ? "top-[-4px] left-1/2 -translate-x-1/2" : i === "left" ? "right-[-4px] top-1/2 -translate-y-1/2" : "left-[-4px] top-1/2 -translate-y-1/2") })]
20
21
  })]
21
22
  });
22
23
  }
23
24
  //#endregion
24
- export { n as InfoTooltip };
25
+ export { r as InfoTooltip };
@@ -0,0 +1,2 @@
1
+ export { InfoTooltip } from './InfoTooltip.js';
2
+ export type { InfoTooltipProps } from './InfoTooltip.js';
@@ -0,0 +1 @@
1
+ const e=require("./Input.cjs"),t=require("./decimal-validation.cjs");let n=require("react"),r=require("react/jsx-runtime");function i(e){return e==null?``:String(e)}var a=(0,n.forwardRef)(({value:a,defaultValue:o,onChange:s,decimalPlaces:c=2,allowNegative:l=!1,emitEmpty:u=!1,min:d,max:f,onBlur:p,...m},h)=>{let g=a!==void 0,[_,v]=(0,n.useState)(()=>i(a??o)),[y,b]=(0,n.useState)(()=>i(a??o));(0,n.useEffect)(()=>{if(g){let e=i(a);v(e),b(e)}},[g,a]);let x=e=>{let n=t.validateDecimalDraft(e,{decimalPlaces:c,allowNegative:l,min:d,max:f});n!==`reject`&&(v(e),n===`empty`?u&&s?.(e):n===`value`&&(b(e),s?.(e)))};return(0,r.jsx)(e.Input,{...m,ref:h,type:`text`,inputMode:`decimal`,value:_,onChange:e=>x(e.target.value),onBlur:e=>{_!==y&&v(y),p?.(e)}})});a.displayName=`DecimalInput`,exports.DecimalInput=a;
@@ -0,0 +1,18 @@
1
+ import { InputProps } from './types.js';
2
+ export interface DecimalInputProps extends Omit<InputProps, "value" | "defaultValue" | "onChange" | "type"> {
3
+ value?: string | number | null;
4
+ defaultValue?: string | number | null;
5
+ onChange?: (value: string) => void;
6
+ /** 허용할 소수 자릿수. 0 이상의 유한한 정수로 지정한다. 기본 2. */
7
+ decimalPlaces?: number;
8
+ /** 음수 입력 허용. 기본 false. */
9
+ allowNegative?: boolean;
10
+ /** 빈 값을 onChange로 전달할지 여부. 기본 false. */
11
+ emitEmpty?: boolean;
12
+ min?: number;
13
+ max?: number;
14
+ }
15
+ /** 소수 입력을 문자열로 전달한다. 범위 밖이지만 완성 가능한 접두사는 임시로 유지하고
16
+ * 포커스를 잃으면 마지막 유효 값으로 복원한다. 빈 값도 전달하려면 emitEmpty를 켠다.
17
+ * Input의 variant는 필수이며 소수점 자릿수와 범위는 호출부에서 지정한다. */
18
+ export declare const DecimalInput: import('react').ForwardRefExoticComponent<DecimalInputProps & import('react').RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,40 @@
1
+ import { Input as e } from "./Input.esm.js";
2
+ import { validateDecimalDraft as t } from "./decimal-validation.esm.js";
3
+ import { forwardRef as n, useEffect as r, useState as i } from "react";
4
+ import { jsx as a } from "react/jsx-runtime";
5
+ //#region src/components/input/DecimalInput.tsx
6
+ function o(e) {
7
+ return e == null ? "" : String(e);
8
+ }
9
+ var s = n(({ value: n, defaultValue: s, onChange: c, decimalPlaces: l = 2, allowNegative: u = !1, emitEmpty: d = !1, min: f, max: p, onBlur: m, ...h }, g) => {
10
+ let _ = n !== void 0, [v, y] = i(() => o(n ?? s)), [b, x] = i(() => o(n ?? s));
11
+ r(() => {
12
+ if (_) {
13
+ let e = o(n);
14
+ y(e), x(e);
15
+ }
16
+ }, [_, n]);
17
+ let S = (e) => {
18
+ let n = t(e, {
19
+ decimalPlaces: l,
20
+ allowNegative: u,
21
+ min: f,
22
+ max: p
23
+ });
24
+ n !== "reject" && (y(e), n === "empty" ? d && c?.(e) : n === "value" && (x(e), c?.(e)));
25
+ };
26
+ return /* @__PURE__ */ a(e, {
27
+ ...h,
28
+ ref: g,
29
+ type: "text",
30
+ inputMode: "decimal",
31
+ value: v,
32
+ onChange: (e) => S(e.target.value),
33
+ onBlur: (e) => {
34
+ v !== b && y(b), m?.(e);
35
+ }
36
+ });
37
+ });
38
+ s.displayName = "DecimalInput";
39
+ //#endregion
40
+ export { s as DecimalInput };
@@ -0,0 +1 @@
1
+ const e=require("../../lib/utils.cjs"),t=require("../../node_modules/lucide-react/dist/esm/icons/circle-x.cjs"),n=require("../_shared/form-size-tokens.cjs"),r=require("./use-input-format.cjs"),i=require("./utils.cjs");let a=require("react"),o=require("react/jsx-runtime");var s=(0,a.forwardRef)(({variant:s,inputSize:c=`medium`,label:l,labelOption:u=`appear`,help:d,hasError:f=!1,disabled:p=!1,prefix:m,suffix:h,trailingIcon:g,clearable:_=!1,badge:v,placeholder:y,format:b,containerProps:x,containerRef:S,value:C,defaultValue:w,onChange:T,onFocus:E,onBlur:D,className:O=``,...k},A)=>{let[j,M]=(0,a.useState)(!1),{displayValue:N,handleChange:P,handleCompositionStart:F,handleCompositionEnd:I,setMergedInputRef:L,handleClear:R}=r.useInputFormat({value:C,defaultValue:w,format:b,onChange:T,readOnly:k.readOnly}),z=e=>{M(!0),E?.(e)},B=e=>{M(!1),D?.(e)},V=k.ref,H=N.length>0,U=i.getInputContainerClasses(),W=i.getInputVariantClasses(s,f,p,c),G=i.getInputClasses(s,f,p,H,c),K=i.getInputTrailingIconColor(f,p,H||j),q=u===`sustain`||u===`appear`&&!!N,J=s===`box`,Y=n.SLOT_GAP_CLASS[c],X=n.SLOT_CHILD_ICON_CLASS[c],Z=n.SLOT_BADGE_TEXT_CLASS[c],Q=n.SLOT_ICON_SIZE_CLASS[c],$=(0,o.jsxs)(`div`,{className:J?e.cn(W,`flex items-center`,Y,O):`relative flex items-center text-sm`,children:[m&&(0,o.jsx)(`span`,{className:e.cn(`whitespace-nowrap text-sm`,K),children:m}),(0,o.jsx)(`input`,{...k,ref:L(A,V),className:J?G:e.cn(G,W,f&&`border-border-danger focus:border-border-danger focus:ring-focus-danger`,p&&`opacity-50`,O),value:N,onChange:P,onCompositionStart:e=>{F(e),k.onCompositionStart?.(e)},onCompositionEnd:e=>{I(e),k.onCompositionEnd?.(e)},onFocus:z,onBlur:B,disabled:p,placeholder:y}),h&&(0,o.jsx)(`span`,{className:e.cn(`whitespace-nowrap text-sm`,K),children:h}),g&&(0,o.jsx)(`span`,{className:e.cn(`flex shrink-0 items-center`,K,X),children:g}),_&&!p&&!k.readOnly&&H&&(0,o.jsx)(`button`,{type:`button`,onClick:R,"aria-label":`입력 지우기`,className:e.cn(`flex shrink-0 cursor-pointer items-center rounded`,K,`hover:text-fg-default focus:outline-hidden focus-visible:ring-input-clear focus-visible:ring-input-clear-ring`),children:(0,o.jsx)(t.CircleX,{className:Q,strokeWidth:1.5,"aria-hidden":`true`})}),v&&(0,o.jsx)(`span`,{className:e.cn(`flex shrink-0 items-center`,X,Z),children:v})]});return(0,o.jsxs)(`div`,{ref:S,className:U,...x,children:[q&&l&&(0,o.jsx)(`label`,{className:i.getInputLabelClasses(s,f),htmlFor:k.id,children:l}),$,d&&(0,o.jsx)(`div`,{className:i.getInputHelpClasses(f),children:d})]})});s.displayName=`Input`,exports.Input=s;
@@ -1,4 +1,4 @@
1
- import { InputProps } from './types';
1
+ import { InputProps } from './types.js';
2
2
  /**
3
3
  * Input 컴포넌트
4
4
  *
@@ -1,90 +1,84 @@
1
- import { CircleX as e } from "../../node_modules/lucide-react/dist/esm/icons/circle-x.esm.js";
2
- import { SLOT_BADGE_TEXT_CLASS as t, SLOT_CHILD_ICON_CLASS as n, SLOT_GAP_CLASS as r, SLOT_ICON_SIZE_CLASS as i } from "../_shared/form-size-tokens.esm.js";
3
- import { getInputClasses as ee, getInputContainerClasses as te, getInputHelpClasses as a, getInputLabelClasses as o, getInputTrailingIconColor as s, getInputVariantClasses as c } from "./utils.esm.js";
4
- import { forwardRef as l, useRef as ne, useState as u } from "react";
1
+ import { cn as e } from "../../lib/utils.esm.js";
2
+ import { CircleX as t } from "../../node_modules/lucide-react/dist/esm/icons/circle-x.esm.js";
3
+ import { SLOT_BADGE_TEXT_CLASS as ee, SLOT_CHILD_ICON_CLASS as n, SLOT_GAP_CLASS as r, SLOT_ICON_SIZE_CLASS as te } from "../_shared/form-size-tokens.esm.js";
4
+ import { useInputFormat as i } from "./use-input-format.esm.js";
5
+ import { getInputClasses as a, getInputContainerClasses as o, getInputHelpClasses as s, getInputLabelClasses as c, getInputTrailingIconColor as ne, getInputVariantClasses as re } from "./utils.esm.js";
6
+ import { forwardRef as l, useState as u } from "react";
5
7
  import { jsx as d, jsxs as f } from "react/jsx-runtime";
6
8
  //#region src/components/input/Input.tsx
7
- var p = l(({ variant: l, inputSize: p = "medium", label: m, labelOption: h = "appear", help: g, hasError: _ = !1, disabled: v = !1, prefix: y, suffix: b, trailingIcon: x, clearable: S = !1, badge: C, placeholder: w, format: T, containerProps: E, containerRef: D, value: O, defaultValue: k, onChange: A, onFocus: re, onBlur: ie, className: j = "", ...M }, N) => {
8
- let [P, F] = u(!1), [I, L] = u(() => {
9
- let e = O ?? k ?? "";
10
- return T ? T.transform(e).toString() : e.toString();
11
- }), R = ne(null), z = O !== void 0, B = z ? O.toString() : I, V = T ? T.transform(B).toString() : B, H = (e) => {
12
- let t = e.target.value;
13
- if (T) {
14
- let n = T.transform(t).toString(), r = T.reset ? T.reset(n).toString() : n;
15
- z || L(n), A?.({
16
- ...e,
17
- target: {
18
- ...e.target,
19
- value: r
20
- }
21
- });
22
- } else z || L(t), A?.(e);
23
- }, U = (e) => {
24
- F(!0), re?.(e);
25
- }, W = (e) => {
26
- F(!1), ie?.(e);
27
- }, G = M.ref, K = (e) => {
28
- R.current = e, typeof N == "function" ? N(e) : N && (N.current = e), typeof G == "function" ? G(e) : G && "current" in G && (G.current = e);
29
- }, q = () => {
30
- let e = R.current;
31
- e && ((Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value")?.set)?.call(e, ""), e.dispatchEvent(new Event("input", { bubbles: !0 })), e.focus());
32
- }, J = V.length > 0, ae = te(), Y = c(l, _, v, p), X = ee(l, _, v, J, p), Z = s(_, v, J || P), oe = h === "sustain" || h === "appear" && !!V, Q = l === "box", se = r[p], $ = n[p], ce = t[p], le = i[p], ue = /* @__PURE__ */ f("div", {
33
- className: Q ? `${Y} flex items-center ${se} ${j}`.trim().replace(/\s+/g, " ") : "relative flex items-center text-sm",
9
+ var p = l(({ variant: l, inputSize: p = "medium", label: m, labelOption: h = "appear", help: g, hasError: _ = !1, disabled: v = !1, prefix: y, suffix: b, trailingIcon: x, clearable: S = !1, badge: C, placeholder: w, format: T, containerProps: E, containerRef: D, value: O, defaultValue: k, onChange: A, onFocus: j, onBlur: M, className: N = "", ...P }, F) => {
10
+ let [I, L] = u(!1), { displayValue: R, handleChange: z, handleCompositionStart: B, handleCompositionEnd: V, setMergedInputRef: H, handleClear: U } = i({
11
+ value: O,
12
+ defaultValue: k,
13
+ format: T,
14
+ onChange: A,
15
+ readOnly: P.readOnly
16
+ }), W = (e) => {
17
+ L(!0), j?.(e);
18
+ }, G = (e) => {
19
+ L(!1), M?.(e);
20
+ }, K = P.ref, q = R.length > 0, J = o(), Y = re(l, _, v, p), X = a(l, _, v, q, p), Z = ne(_, v, q || I), ie = h === "sustain" || h === "appear" && !!R, Q = l === "box", ae = r[p], $ = n[p], oe = ee[p], se = te[p], ce = /* @__PURE__ */ f("div", {
21
+ className: Q ? e(Y, "flex items-center", ae, N) : "relative flex items-center text-sm",
34
22
  children: [
35
23
  y && /* @__PURE__ */ d("span", {
36
- className: `whitespace-nowrap text-sm ${Z}`,
24
+ className: e("whitespace-nowrap text-sm", Z),
37
25
  children: y
38
26
  }),
39
27
  /* @__PURE__ */ d("input", {
40
- ...M,
41
- ref: K,
42
- className: Q ? X : `${X} ${Y} ${_ ? "border-error-500 focus:border-error-500 focus:ring-error-500" : ""} ${v ? "opacity-50" : ""} ${j}`.trim().replace(/\s+/g, " "),
43
- value: V,
44
- onChange: H,
45
- onFocus: U,
46
- onBlur: W,
28
+ ...P,
29
+ ref: H(F, K),
30
+ className: Q ? X : e(X, Y, _ && "border-border-danger focus:border-border-danger focus:ring-focus-danger", v && "opacity-50", N),
31
+ value: R,
32
+ onChange: z,
33
+ onCompositionStart: (e) => {
34
+ B(e), P.onCompositionStart?.(e);
35
+ },
36
+ onCompositionEnd: (e) => {
37
+ V(e), P.onCompositionEnd?.(e);
38
+ },
39
+ onFocus: W,
40
+ onBlur: G,
47
41
  disabled: v,
48
42
  placeholder: w
49
43
  }),
50
44
  b && /* @__PURE__ */ d("span", {
51
- className: `whitespace-nowrap text-sm ${Z}`,
45
+ className: e("whitespace-nowrap text-sm", Z),
52
46
  children: b
53
47
  }),
54
48
  x && /* @__PURE__ */ d("span", {
55
- className: `flex shrink-0 items-center ${Z} ${$}`,
49
+ className: e("flex shrink-0 items-center", Z, $),
56
50
  children: x
57
51
  }),
58
- S && !v && J && /* @__PURE__ */ d("button", {
52
+ S && !v && !P.readOnly && q && /* @__PURE__ */ d("button", {
59
53
  type: "button",
60
- onClick: q,
54
+ onClick: U,
61
55
  "aria-label": "입력 지우기",
62
- className: `flex shrink-0 cursor-pointer items-center rounded ${Z} hover:text-text-primary focus:outline-hidden focus-visible:ring-2 focus-visible:ring-primary-500/40`,
63
- children: /* @__PURE__ */ d(e, {
64
- className: le,
56
+ className: e("flex shrink-0 cursor-pointer items-center rounded", Z, "hover:text-fg-default focus:outline-hidden focus-visible:ring-input-clear focus-visible:ring-input-clear-ring"),
57
+ children: /* @__PURE__ */ d(t, {
58
+ className: se,
65
59
  strokeWidth: 1.5,
66
60
  "aria-hidden": "true"
67
61
  })
68
62
  }),
69
63
  C && /* @__PURE__ */ d("span", {
70
- className: `flex shrink-0 items-center ${$} ${ce}`,
64
+ className: e("flex shrink-0 items-center", $, oe),
71
65
  children: C
72
66
  })
73
67
  ]
74
68
  });
75
69
  return /* @__PURE__ */ f("div", {
76
70
  ref: D,
77
- className: ae,
71
+ className: J,
78
72
  ...E,
79
73
  children: [
80
- oe && m && /* @__PURE__ */ d("label", {
81
- className: o(l, _),
82
- htmlFor: M.id,
74
+ ie && m && /* @__PURE__ */ d("label", {
75
+ className: c(l, _),
76
+ htmlFor: P.id,
83
77
  children: m
84
78
  }),
85
- ue,
79
+ ce,
86
80
  g && /* @__PURE__ */ d("div", {
87
- className: a(_),
81
+ className: s(_),
88
82
  children: g
89
83
  })
90
84
  ]
@@ -0,0 +1 @@
1
+ const e=require("../../node_modules/lucide-react/dist/esm/icons/eye-off.cjs"),t=require("../../node_modules/lucide-react/dist/esm/icons/eye.cjs"),n=require("./Input.cjs");let r=require("react"),i=require("react/jsx-runtime");var a=(0,r.forwardRef)(({disabled:a,...o},s)=>{let[c,l]=(0,r.useState)(!1);return(0,i.jsx)(n.Input,{...o,ref:s,disabled:a,type:c?`text`:`password`,trailingIcon:(0,i.jsx)(`button`,{type:`button`,onClick:()=>l(e=>!e),disabled:a,"aria-label":c?`비밀번호 숨기기`:`비밀번호 표시`,className:`flex items-center justify-center text-fg-subtle transition-colors hover:text-fg-default disabled:cursor-not-allowed disabled:opacity-50`,children:c?(0,i.jsx)(e.EyeOff,{className:`h-4 w-4`,strokeWidth:1.5}):(0,i.jsx)(t.Eye,{className:`h-4 w-4`,strokeWidth:1.5})})})});a.displayName=`PasswordInput`,exports.PasswordInput=a;
@@ -1,4 +1,4 @@
1
- import { InputProps } from './types';
1
+ import { InputProps } from './types.js';
2
2
  type PasswordInputProps = Omit<InputProps, "type" | "trailingIcon">;
3
3
  /**
4
4
  * 비밀번호 입력 — 마스킹 토글(눈 아이콘) 내장.
@@ -16,7 +16,7 @@ var o = r(({ disabled: r, ...o }, s) => {
16
16
  onClick: () => l((e) => !e),
17
17
  disabled: r,
18
18
  "aria-label": c ? "비밀번호 숨기기" : "비밀번호 표시",
19
- className: "flex items-center justify-center text-text-tertiary transition-colors hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-50",
19
+ className: "flex items-center justify-center text-fg-subtle transition-colors hover:text-fg-default disabled:cursor-not-allowed disabled:opacity-50",
20
20
  children: a(c ? e : t, {
21
21
  className: "h-4 w-4",
22
22
  strokeWidth: 1.5
@@ -0,0 +1 @@
1
+ function e(e){let t=e.startsWith(`-`),[n=``,r=``]=(t?e.slice(1):e).split(`.`);return{negative:t,integer:n||`0`,fraction:r}}function t(e){let[t=``,n]=e.toLowerCase().split(`e`);if(n===void 0)return e;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)}`;return i?`-${l}`:l}function n(e){return 10n**BigInt(e)}function r(t,r){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;return i?-l:l}function i(r,i,a){if(r===void 0||!Number.isFinite(r))return;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));return o?a===`max`&&f?-(d+1n):-d:a===`min`&&f?d+1n:d}function a(e,t,n){return(t===void 0||e.max>=t)&&(n===void 0||e.min<=n)}function o(t,o,s,c){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?{min:m-h,max:m}:{min:m,max:m+h},_=i(s,o,`min`),v=i(c,o,`max`);if(a(g,_,v))return!0;if(f!==void 0||u===`0`)return!1;if(!l&&v===void 0||l&&_===void 0)return!0;let y=BigInt(u),b=n(o);for(let e=1;e<309;e+=1){let t=n(e),r=y*t,i=(y+1n)*t-1n;if(a(l?{min:-(i*b+(b-1n)),max:-(r*b)}:{min:r*b,max:i*b+(b-1n)},_,v))return!0;if(!l&&v!==void 0&&r*b>v||l&&_!==void 0&&-(r*b)<_)return!1}return!1}function s(e,{decimalPlaces:t,allowNegative:n,min:a,max:s}){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})?$`);if(e!==``&&e!==`-`&&!f.test(e)||e===`-`&&!n)return`reject`;if(e===``)return`empty`;if(e===`-`)return`draft`;if(!Number.isFinite(Number(e))||!o(e,l,a,s))return`reject`;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);return!e.endsWith(`.`)&&g?`value`:`draft`}exports.validateDecimalDraft=s;
@@ -0,0 +1,7 @@
1
+ /** 입력 가능한 초안과 부모에 전달 가능한 숫자를 구분한다. */
2
+ export declare function validateDecimalDraft(next: string, { decimalPlaces, allowNegative, min, max, }: {
3
+ decimalPlaces: number;
4
+ allowNegative: boolean;
5
+ min?: number;
6
+ max?: number;
7
+ }): "reject" | "draft" | "empty" | "value";