@thewrong/ui 0.1.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 (514) hide show
  1. package/README.md +25 -4
  2. package/dist/_virtual/_rolldown/runtime.cjs +1 -0
  3. package/dist/components/_shared/form-size-tokens.cjs +1 -0
  4. package/dist/{src/components → components}/_shared/form-size-tokens.d.ts +3 -1
  5. package/dist/components/_shared/form-size-tokens.esm.js +34 -0
  6. package/dist/components/action-toast/ActionToast.cjs +1 -0
  7. package/dist/{src/components → components}/action-toast/ActionToast.d.ts +17 -3
  8. package/dist/components/action-toast/ActionToast.esm.js +238 -0
  9. package/dist/{src/components → components}/action-toast/index.d.ts +2 -2
  10. package/dist/components/animated-height/AnimatedHeight.cjs +1 -0
  11. package/dist/components/animated-height/AnimatedHeight.esm.js +36 -0
  12. package/dist/components/animated-height/index.d.ts +2 -0
  13. package/dist/components/badge/Badge.cjs +1 -0
  14. package/dist/{src/components → components}/badge/Badge.d.ts +1 -1
  15. package/dist/components/badge/Badge.esm.js +26 -0
  16. package/dist/components/badge/index.d.ts +2 -0
  17. package/dist/components/badge/utils.cjs +1 -0
  18. package/dist/{src/components → components}/badge/utils.d.ts +1 -1
  19. package/dist/components/badge/utils.esm.js +38 -0
  20. package/dist/components/button/Button.cjs +1 -0
  21. package/dist/components/button/Button.d.ts +19 -0
  22. package/dist/components/button/Button.esm.js +77 -0
  23. package/dist/{src/components → components}/button/index.d.ts +2 -2
  24. package/dist/components/button/utils.cjs +1 -0
  25. package/dist/{src/components → components}/button/utils.d.ts +1 -1
  26. package/dist/components/button/utils.esm.js +38 -0
  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 +69 -0
  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 +44 -0
  34. package/dist/components/collapsible/Collapsible.cjs +1 -0
  35. package/dist/components/collapsible/Collapsible.esm.js +20 -0
  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 +40 -0
  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 +183 -0
  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 +238 -0
  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 +103 -0
  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 +143 -0
  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/{src/components → components}/info-tooltip/InfoTooltip.d.ts +7 -0
  80. package/dist/components/info-tooltip/InfoTooltip.esm.js +25 -0
  81. package/dist/components/info-tooltip/index.d.ts +2 -0
  82. package/dist/components/input/DecimalInput.cjs +1 -0
  83. package/dist/components/input/DecimalInput.d.ts +18 -0
  84. package/dist/components/input/DecimalInput.esm.js +40 -0
  85. package/dist/components/input/Input.cjs +1 -0
  86. package/dist/{src/components → components}/input/Input.d.ts +1 -1
  87. package/dist/components/input/Input.esm.js +89 -0
  88. package/dist/components/input/PasswordInput.cjs +1 -0
  89. package/dist/{src/components → components}/input/PasswordInput.d.ts +1 -1
  90. package/dist/components/input/PasswordInput.esm.js +29 -0
  91. package/dist/components/input/decimal-validation.cjs +1 -0
  92. package/dist/components/input/decimal-validation.d.ts +7 -0
  93. package/dist/components/input/decimal-validation.esm.js +66 -0
  94. package/dist/components/input/format.cjs +1 -0
  95. package/dist/{src/components → components}/input/format.d.ts +17 -1
  96. package/dist/components/input/format.esm.js +44 -0
  97. package/dist/components/input/index.d.ts +7 -0
  98. package/dist/{src/components → components}/input/types.d.ts +2 -2
  99. package/dist/components/input/use-input-format.cjs +1 -0
  100. package/dist/components/input/use-input-format.d.ts +43 -0
  101. package/dist/components/input/use-input-format.esm.js +75 -0
  102. package/dist/components/input/utils.cjs +1 -0
  103. package/dist/{src/components → components}/input/utils.d.ts +1 -1
  104. package/dist/components/input/utils.esm.js +24 -0
  105. package/dist/components/loading-spinner/LoadingSpinner.cjs +1 -0
  106. package/dist/{src/components → components}/loading-spinner/LoadingSpinner.d.ts +7 -0
  107. package/dist/components/loading-spinner/LoadingSpinner.esm.js +48 -0
  108. package/dist/components/loading-spinner/index.d.ts +2 -0
  109. package/dist/components/modal/Modal.cjs +1 -0
  110. package/dist/{src/components → components}/modal/Modal.d.ts +34 -2
  111. package/dist/components/modal/Modal.esm.js +167 -0
  112. package/dist/components/modal/ModalFocusTrapContext.cjs +1 -0
  113. package/dist/components/modal/ModalFocusTrapContext.d.ts +18 -0
  114. package/dist/components/modal/ModalFocusTrapContext.esm.js +36 -0
  115. package/dist/components/modal/ModalSubView.cjs +1 -0
  116. package/dist/{src/components → components}/modal/ModalSubView.d.ts +6 -1
  117. package/dist/components/modal/ModalSubView.esm.js +111 -0
  118. package/dist/components/modal/StandardModal.cjs +1 -0
  119. package/dist/{src/components → components}/modal/StandardModal.d.ts +8 -2
  120. package/dist/components/modal/StandardModal.esm.js +57 -0
  121. package/dist/components/modal/index.d.ts +6 -0
  122. package/dist/components/month-range-picker/index.d.ts +2 -0
  123. package/dist/components/month-range-picker/month-range-picker.cjs +1 -0
  124. package/dist/components/month-range-picker/month-range-picker.d.ts +16 -0
  125. package/dist/components/month-range-picker/month-range-picker.esm.js +227 -0
  126. package/dist/components/month-range-picker/month-range-utils.cjs +1 -0
  127. package/dist/components/month-range-picker/month-range-utils.d.ts +9 -0
  128. package/dist/components/month-range-picker/month-range-utils.esm.js +28 -0
  129. package/dist/components/page-title/PageTitle.cjs +1 -0
  130. package/dist/components/page-title/PageTitle.esm.js +17 -0
  131. package/dist/components/page-title/index.d.ts +1 -0
  132. package/dist/components/popover/Popover.cjs +1 -0
  133. package/dist/{src/components → components}/popover/Popover.d.ts +19 -1
  134. package/dist/components/popover/Popover.esm.js +57 -0
  135. package/dist/components/popover/index.d.ts +2 -0
  136. package/dist/components/progress/Progress.cjs +1 -0
  137. package/dist/components/progress/Progress.d.ts +13 -0
  138. package/dist/components/progress/Progress.esm.js +24 -0
  139. package/dist/components/progress/index.d.ts +2 -0
  140. package/dist/components/progress/types.d.ts +13 -0
  141. package/dist/components/radio/Radio.cjs +1 -0
  142. package/dist/components/radio/Radio.d.ts +31 -0
  143. package/dist/components/radio/Radio.esm.js +118 -0
  144. package/dist/components/radio/index.d.ts +2 -0
  145. package/dist/components/radio/types.d.ts +24 -0
  146. package/dist/components/search-box/ExactMatchToggle.cjs +1 -0
  147. package/dist/components/search-box/ExactMatchToggle.esm.js +28 -0
  148. package/dist/components/search-box/SearchBox.cjs +1 -0
  149. package/dist/{src/components → components}/search-box/SearchBox.d.ts +1 -1
  150. package/dist/components/search-box/SearchBox.esm.js +155 -0
  151. package/dist/components/search-box/SearchBoxChips.cjs +1 -0
  152. package/dist/components/search-box/SearchBoxChips.esm.js +36 -0
  153. package/dist/components/search-box/SearchBoxDateRange.cjs +1 -0
  154. package/dist/{src/components → components}/search-box/SearchBoxDateRange.d.ts +1 -1
  155. package/dist/components/search-box/SearchBoxDateRange.esm.js +60 -0
  156. package/dist/components/search-box/SearchBoxDateSingle.cjs +1 -0
  157. package/dist/{src/components → components}/search-box/SearchBoxDateSingle.d.ts +1 -1
  158. package/dist/components/search-box/SearchBoxDateSingle.esm.js +39 -0
  159. package/dist/components/search-box/SearchBoxField.cjs +1 -0
  160. package/dist/{src/components → components}/search-box/SearchBoxField.d.ts +1 -1
  161. package/dist/components/search-box/SearchBoxField.esm.js +48 -0
  162. package/dist/components/search-box/SearchBoxFloatingInput.cjs +1 -0
  163. package/dist/components/search-box/SearchBoxFloatingInput.esm.js +43 -0
  164. package/dist/components/search-box/SearchBoxFloatingSelect.cjs +1 -0
  165. package/dist/{src/components → components}/search-box/SearchBoxFloatingSelect.d.ts +1 -1
  166. package/dist/components/search-box/SearchBoxFloatingSelect.esm.js +79 -0
  167. package/dist/components/search-box/SearchBoxMonth.cjs +1 -0
  168. package/dist/components/search-box/SearchBoxMonth.esm.js +36 -0
  169. package/dist/components/search-box/SearchBoxMultiSelect.cjs +1 -0
  170. package/dist/{src/components → components}/search-box/SearchBoxMultiSelect.d.ts +2 -2
  171. package/dist/components/search-box/SearchBoxMultiSelect.esm.js +83 -0
  172. package/dist/components/search-box/SearchBoxSheetContext.cjs +1 -0
  173. package/dist/components/search-box/SearchBoxSheetContext.esm.js +5 -0
  174. package/dist/components/search-box/dateRangePresets.cjs +1 -0
  175. package/dist/{src/components → components}/search-box/dateRangePresets.d.ts +1 -1
  176. package/dist/components/search-box/dateRangePresets.esm.js +59 -0
  177. package/dist/{src/components → components}/search-box/index.d.ts +5 -5
  178. package/dist/components/search-box/parseDateRange.cjs +1 -0
  179. package/dist/components/search-box/parseDateRange.esm.js +21 -0
  180. package/dist/components/search-box/parseSearchValues.cjs +1 -0
  181. package/dist/{src/components → components}/search-box/parseSearchValues.d.ts +2 -2
  182. package/dist/components/search-box/parseSearchValues.esm.js +15 -0
  183. package/dist/{src/components → components}/search-box/types.d.ts +1 -1
  184. package/dist/components/search-box/useSearchBoxState.cjs +1 -0
  185. package/dist/{src/components → components}/search-box/useSearchBoxState.d.ts +1 -1
  186. package/dist/components/search-box/useSearchBoxState.esm.js +87 -0
  187. package/dist/components/segmented-code-input/SegmentedCodeInput.cjs +1 -0
  188. package/dist/components/segmented-code-input/SegmentedCodeInput.d.ts +49 -0
  189. package/dist/components/segmented-code-input/SegmentedCodeInput.esm.js +87 -0
  190. package/dist/components/segmented-code-input/code-utils.cjs +1 -0
  191. package/dist/components/segmented-code-input/code-utils.d.ts +4 -0
  192. package/dist/components/segmented-code-input/code-utils.esm.js +9 -0
  193. package/dist/components/segmented-code-input/index.d.ts +2 -0
  194. package/dist/components/segmented-control/SegmentedControl.cjs +1 -0
  195. package/dist/components/segmented-control/SegmentedControl.d.ts +27 -0
  196. package/dist/components/segmented-control/SegmentedControl.esm.js +84 -0
  197. package/dist/components/segmented-control/index.d.ts +2 -0
  198. package/dist/components/segmented-control/types.d.ts +30 -0
  199. package/dist/components/select/MultiSelect.cjs +1 -0
  200. package/dist/{src/components → components}/select/MultiSelect.d.ts +11 -3
  201. package/dist/components/select/MultiSelect.esm.js +279 -0
  202. package/dist/components/select/Select.cjs +1 -0
  203. package/dist/{src/components → components}/select/Select.d.ts +16 -2
  204. package/dist/components/select/Select.esm.js +320 -0
  205. package/dist/components/select/index.d.ts +4 -0
  206. package/dist/components/select/loading-dots.cjs +1 -0
  207. package/dist/components/select/loading-dots.d.ts +3 -0
  208. package/dist/components/select/loading-dots.esm.js +24 -0
  209. package/dist/components/select/panel-width.cjs +1 -0
  210. package/dist/components/select/panel-width.d.ts +2 -0
  211. package/dist/components/select/panel-width.esm.js +7 -0
  212. package/dist/{src/components → components}/select/utils.d.ts +1 -1
  213. package/dist/components/skeleton/Skeleton.cjs +1 -0
  214. package/dist/components/skeleton/Skeleton.d.ts +6 -0
  215. package/dist/components/skeleton/Skeleton.esm.js +12 -0
  216. package/dist/components/skeleton/index.d.ts +2 -0
  217. package/dist/components/skeleton/types.d.ts +2 -0
  218. package/dist/components/stepper/Stepper.cjs +1 -0
  219. package/dist/components/stepper/Stepper.d.ts +51 -0
  220. package/dist/components/stepper/Stepper.esm.js +142 -0
  221. package/dist/components/stepper/index.d.ts +4 -0
  222. package/dist/components/stepper/use-stepper.cjs +1 -0
  223. package/dist/components/stepper/use-stepper.d.ts +43 -0
  224. package/dist/components/stepper/use-stepper.esm.js +57 -0
  225. package/dist/components/switch/Switch.cjs +1 -0
  226. package/dist/{src/components → components}/switch/Switch.d.ts +1 -1
  227. package/dist/components/switch/Switch.esm.js +37 -0
  228. package/dist/components/switch/index.d.ts +2 -0
  229. package/dist/components/switch/utils.cjs +1 -0
  230. package/dist/{src/components → components}/switch/utils.d.ts +2 -2
  231. package/dist/components/switch/utils.esm.js +40 -0
  232. package/dist/components/table/accordion-table.cjs +1 -0
  233. package/dist/{src/components → components}/table/accordion-table.d.ts +1 -1
  234. package/dist/components/table/accordion-table.esm.js +418 -0
  235. package/dist/components/table/column-group-utils.cjs +1 -0
  236. package/dist/{src/components → components}/table/column-group-utils.d.ts +1 -1
  237. package/dist/components/table/column-group-utils.esm.js +53 -0
  238. package/dist/components/table/components/ColumnPresetSelector.cjs +1 -0
  239. package/dist/{src/components → components}/table/components/ColumnPresetSelector.d.ts +2 -2
  240. package/dist/components/table/components/ColumnPresetSelector.esm.js +166 -0
  241. package/dist/components/table/components/ColumnSettingsTable.cjs +1 -0
  242. package/dist/{src/components → components}/table/components/ColumnSettingsTable.d.ts +1 -1
  243. package/dist/components/table/components/ColumnSettingsTable.esm.js +194 -0
  244. package/dist/components/table/components/KeyboardNavButton.cjs +1 -0
  245. package/dist/components/table/components/KeyboardNavButton.esm.js +24 -0
  246. package/dist/components/table/components/PageJumpInput.cjs +1 -0
  247. package/dist/components/table/components/PageJumpInput.esm.js +54 -0
  248. package/dist/components/table/components/Pagination.cjs +1 -0
  249. package/dist/components/table/components/Pagination.esm.js +163 -0
  250. package/dist/components/table/components/PaginationFooter.cjs +1 -0
  251. package/dist/components/table/components/PaginationFooter.esm.js +80 -0
  252. package/dist/components/table/components/SortableHeaderCell.cjs +1 -0
  253. package/dist/components/table/components/SortableHeaderCell.esm.js +30 -0
  254. package/dist/components/table/hooks/useColumnPresets.cjs +1 -0
  255. package/dist/{src/components → components}/table/hooks/useColumnPresets.d.ts +2 -2
  256. package/dist/components/table/hooks/useColumnPresets.esm.js +165 -0
  257. package/dist/components/table/hooks/useColumnResize.cjs +1 -0
  258. package/dist/{src/components → components}/table/hooks/useColumnResize.d.ts +12 -0
  259. package/dist/components/table/hooks/useColumnResize.esm.js +118 -0
  260. package/dist/components/table/hooks/useFillEmptyRows.d.ts +2 -0
  261. package/dist/components/table/hooks/useInfiniteScroll.d.ts +2 -0
  262. package/dist/components/table/hooks/useTableColumnState.cjs +1 -0
  263. package/dist/{src/components → components}/table/hooks/useTableColumnState.d.ts +1 -1
  264. package/dist/components/table/hooks/useTableColumnState.esm.js +46 -0
  265. package/dist/components/table/hooks/useTableDragSelection.d.ts +2 -0
  266. package/dist/components/table/hooks/useTableSort.cjs +1 -0
  267. package/dist/{src/components → components}/table/hooks/useTableSort.d.ts +1 -1
  268. package/dist/components/table/hooks/useTableSort.esm.js +30 -0
  269. package/dist/components/table/hooks/useVirtualTable.cjs +1 -0
  270. package/dist/components/table/hooks/useVirtualTable.esm.js +18 -0
  271. package/dist/components/table/index.d.ts +27 -0
  272. package/dist/components/table/mini-table.cjs +1 -0
  273. package/dist/{src/components → components}/table/mini-table.d.ts +1 -1
  274. package/dist/components/table/mini-table.esm.js +127 -0
  275. package/dist/components/table/paginated-mini-table.cjs +1 -0
  276. package/dist/{src/components → components}/table/paginated-mini-table.d.ts +1 -1
  277. package/dist/components/table/paginated-mini-table.esm.js +31 -0
  278. package/dist/components/table/paginated-table.cjs +1 -0
  279. package/dist/{src/components → components}/table/paginated-table.d.ts +1 -1
  280. package/dist/components/table/paginated-table.esm.js +31 -0
  281. package/dist/components/table/table.cjs +1 -0
  282. package/dist/{src/components → components}/table/table.d.ts +2 -1
  283. package/dist/components/table/table.esm.js +343 -0
  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 +16 -0
  287. package/dist/components/table-checkbox/TableCheckbox.cjs +1 -0
  288. package/dist/components/table-checkbox/TableCheckbox.esm.js +40 -0
  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 +37 -0
  292. package/dist/{src/components → components}/table-page-layout/index.d.ts +1 -1
  293. package/dist/components/textarea/Textarea.cjs +1 -0
  294. package/dist/{src/components → components}/textarea/Textarea.d.ts +1 -1
  295. package/dist/components/textarea/Textarea.esm.js +64 -0
  296. package/dist/components/textarea/index.d.ts +2 -0
  297. package/dist/components/time-picker/index.d.ts +2 -0
  298. package/dist/components/time-picker/time-picker.cjs +1 -0
  299. package/dist/components/time-picker/time-picker.d.ts +35 -0
  300. package/dist/components/time-picker/time-picker.esm.js +193 -0
  301. package/dist/components/time-picker/time-utils.cjs +1 -0
  302. package/dist/components/time-picker/time-utils.d.ts +12 -0
  303. package/dist/components/time-picker/time-utils.esm.js +56 -0
  304. package/dist/components/toast/ToastProvider.cjs +1 -0
  305. package/dist/{src/components → components}/toast/ToastProvider.d.ts +3 -0
  306. package/dist/components/toast/ToastProvider.esm.js +86 -0
  307. package/dist/components/toast/index.d.ts +3 -0
  308. package/dist/components/toast/index.esm.js +3 -0
  309. package/dist/components/toolbar/Toolbar.cjs +1 -0
  310. package/dist/{src/components → components}/toolbar/Toolbar.d.ts +1 -1
  311. package/dist/components/toolbar/Toolbar.esm.js +149 -0
  312. package/dist/components/toolbar/index.d.ts +2 -0
  313. package/dist/components/tooltip/Tooltip.cjs +1 -0
  314. package/dist/{src/components → components}/tooltip/Tooltip.d.ts +10 -0
  315. package/dist/components/tooltip/Tooltip.esm.js +39 -0
  316. package/dist/components/tooltip/index.d.ts +2 -0
  317. package/dist/components/typewriter-text/TypewriterText.cjs +1 -0
  318. package/dist/components/typewriter-text/TypewriterText.d.ts +7 -0
  319. package/dist/components/typewriter-text/TypewriterText.esm.js +58 -0
  320. package/dist/components/typewriter-text/index.d.ts +2 -0
  321. package/dist/components/typewriter-text/types.d.ts +12 -0
  322. package/dist/components/typing-dots/TypingDots.cjs +1 -0
  323. package/dist/components/typing-dots/TypingDots.d.ts +10 -0
  324. package/dist/components/typing-dots/TypingDots.esm.js +37 -0
  325. package/dist/components/typing-dots/index.d.ts +2 -0
  326. package/dist/components/typing-dots/types.d.ts +4 -0
  327. package/dist/hooks/awaitableOverlayController.cjs +1 -0
  328. package/dist/hooks/awaitableOverlayController.d.ts +6 -0
  329. package/dist/hooks/awaitableOverlayController.esm.js +18 -0
  330. package/dist/hooks/index.d.ts +17 -0
  331. package/dist/hooks/useAwaitableOverlay.cjs +1 -0
  332. package/dist/hooks/useAwaitableOverlay.d.ts +16 -0
  333. package/dist/hooks/useAwaitableOverlay.esm.js +22 -0
  334. package/dist/hooks/useBottomSheetDrag.cjs +1 -0
  335. package/dist/hooks/useBottomSheetDrag.esm.js +17 -0
  336. package/dist/hooks/useClickOutside.cjs +1 -0
  337. package/dist/hooks/useClickOutside.esm.js +20 -0
  338. package/dist/hooks/useFillEmptyRows.cjs +1 -0
  339. package/dist/{src/components/table/hooks → hooks}/useFillEmptyRows.d.ts +10 -1
  340. package/dist/hooks/useFillEmptyRows.esm.js +60 -0
  341. package/dist/hooks/useFocusTrap.cjs +1 -0
  342. package/dist/hooks/useFocusTrap.d.ts +47 -0
  343. package/dist/hooks/useFocusTrap.esm.js +210 -0
  344. package/dist/hooks/useInfiniteScroll.cjs +1 -0
  345. package/dist/hooks/useInfiniteScroll.d.ts +36 -0
  346. package/dist/hooks/useInfiniteScroll.esm.js +31 -0
  347. package/dist/hooks/useMediaQuery.cjs +1 -0
  348. package/dist/hooks/useMediaQuery.esm.js +15 -0
  349. package/dist/hooks/useScrollLock.cjs +1 -0
  350. package/dist/hooks/useScrollLock.esm.js +16 -0
  351. package/dist/hooks/useTableDragSelection.cjs +1 -0
  352. package/dist/{src/components/table/hooks → hooks}/useTableDragSelection.d.ts +3 -4
  353. package/dist/hooks/useTableDragSelection.esm.js +79 -0
  354. package/dist/hooks/useVirtualRows.cjs +1 -0
  355. package/dist/hooks/useVirtualRows.d.ts +56 -0
  356. package/dist/hooks/useVirtualRows.esm.js +20 -0
  357. package/dist/hooks.cjs +1 -0
  358. package/dist/hooks.esm.js +12 -0
  359. package/dist/index.cjs +1 -0
  360. package/dist/index.d.ts +40 -0
  361. package/dist/index.esm.js +81 -0
  362. package/dist/lib/Portal.cjs +1 -0
  363. package/dist/lib/Portal.esm.js +11 -0
  364. package/dist/lib/column-preset-storage.cjs +1 -0
  365. package/dist/lib/column-preset-storage.esm.js +123 -0
  366. package/dist/lib/index.d.ts +6 -0
  367. package/dist/lib/overlay-stack.cjs +1 -0
  368. package/dist/lib/overlay-stack.esm.js +28 -0
  369. package/dist/lib/utils.cjs +1 -0
  370. package/dist/{src/lib → lib}/utils.d.ts +2 -1
  371. package/dist/lib/utils.esm.js +114 -0
  372. package/dist/node_modules/clsx/dist/clsx.cjs +1 -0
  373. package/dist/node_modules/clsx/dist/clsx.esm.js +16 -0
  374. package/dist/node_modules/lucide-react/dist/esm/Icon.cjs +1 -0
  375. package/dist/node_modules/lucide-react/dist/esm/Icon.esm.js +23 -0
  376. package/dist/node_modules/lucide-react/dist/esm/context.cjs +1 -0
  377. package/dist/node_modules/lucide-react/dist/esm/context.esm.js +6 -0
  378. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs +1 -0
  379. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.esm.js +17 -0
  380. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.cjs +1 -0
  381. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.esm.js +14 -0
  382. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.cjs +1 -0
  383. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.esm.js +10 -0
  384. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.cjs +1 -0
  385. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.esm.js +25 -0
  386. package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs +1 -0
  387. package/dist/node_modules/lucide-react/dist/esm/icons/check.esm.js +7 -0
  388. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs +1 -0
  389. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.esm.js +7 -0
  390. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.cjs +1 -0
  391. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.esm.js +7 -0
  392. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs +1 -0
  393. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.esm.js +7 -0
  394. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.cjs +1 -0
  395. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.esm.js +10 -0
  396. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.cjs +1 -0
  397. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.esm.js +10 -0
  398. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.cjs +1 -0
  399. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.esm.js +12 -0
  400. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.cjs +1 -0
  401. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.esm.js +19 -0
  402. package/dist/node_modules/lucide-react/dist/esm/icons/clock.cjs +1 -0
  403. package/dist/node_modules/lucide-react/dist/esm/icons/clock.esm.js +12 -0
  404. package/dist/node_modules/lucide-react/dist/esm/icons/copy.cjs +1 -0
  405. package/dist/node_modules/lucide-react/dist/esm/icons/copy.esm.js +15 -0
  406. package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.cjs +1 -0
  407. package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.esm.js +21 -0
  408. package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs +1 -0
  409. package/dist/node_modules/lucide-react/dist/esm/icons/eye.esm.js +12 -0
  410. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs +1 -0
  411. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.esm.js +41 -0
  412. package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs +1 -0
  413. package/dist/node_modules/lucide-react/dist/esm/icons/info.esm.js +19 -0
  414. package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.cjs +1 -0
  415. package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.esm.js +45 -0
  416. package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.cjs +1 -0
  417. package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.esm.js +17 -0
  418. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs +1 -0
  419. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.esm.js +7 -0
  420. package/dist/node_modules/lucide-react/dist/esm/icons/minus.cjs +1 -0
  421. package/dist/node_modules/lucide-react/dist/esm/icons/minus.esm.js +7 -0
  422. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs +1 -0
  423. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.esm.js +10 -0
  424. package/dist/node_modules/lucide-react/dist/esm/icons/save.cjs +1 -0
  425. package/dist/node_modules/lucide-react/dist/esm/icons/save.esm.js +17 -0
  426. package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs +1 -0
  427. package/dist/node_modules/lucide-react/dist/esm/icons/search.esm.js +12 -0
  428. package/dist/node_modules/lucide-react/dist/esm/icons/settings.cjs +1 -0
  429. package/dist/node_modules/lucide-react/dist/esm/icons/settings.esm.js +12 -0
  430. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.cjs +1 -0
  431. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.esm.js +17 -0
  432. package/dist/node_modules/lucide-react/dist/esm/icons/wrench.cjs +1 -0
  433. package/dist/node_modules/lucide-react/dist/esm/icons/wrench.esm.js +7 -0
  434. package/dist/node_modules/lucide-react/dist/esm/icons/x.cjs +1 -0
  435. package/dist/node_modules/lucide-react/dist/esm/icons/x.esm.js +10 -0
  436. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.cjs +1 -0
  437. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.esm.js +7 -0
  438. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.cjs +1 -0
  439. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.esm.js +4 -0
  440. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.cjs +1 -0
  441. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.esm.js +4 -0
  442. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.cjs +1 -0
  443. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.esm.js +4 -0
  444. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.cjs +1 -0
  445. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.esm.js +8 -0
  446. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs +1 -0
  447. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.esm.js +1723 -0
  448. package/dist/node_modules/use-debounce/dist/index.module.cjs +1 -0
  449. package/dist/node_modules/use-debounce/dist/index.module.esm.js +70 -0
  450. package/dist/tokens.css +1085 -0
  451. package/dist/ui.css +1 -1
  452. package/llms.txt +117 -0
  453. package/package.json +18 -9
  454. package/dist/index.cjs.js +0 -40
  455. package/dist/index.es.js +0 -8066
  456. package/dist/src/components/animated-height/index.d.ts +0 -2
  457. package/dist/src/components/badge/index.d.ts +0 -2
  458. package/dist/src/components/button/Button.d.ts +0 -2
  459. package/dist/src/components/checkbox/index.d.ts +0 -2
  460. package/dist/src/components/collapsible/index.d.ts +0 -2
  461. package/dist/src/components/date-input/index.d.ts +0 -1
  462. package/dist/src/components/date-picker/index.d.ts +0 -5
  463. package/dist/src/components/drawer/Drawer.d.ts +0 -18
  464. package/dist/src/components/drawer/index.d.ts +0 -2
  465. package/dist/src/components/info-tooltip/index.d.ts +0 -2
  466. package/dist/src/components/input/index.d.ts +0 -4
  467. package/dist/src/components/loading-spinner/index.d.ts +0 -2
  468. package/dist/src/components/modal/index.d.ts +0 -6
  469. package/dist/src/components/page-title/index.d.ts +0 -1
  470. package/dist/src/components/popover/index.d.ts +0 -2
  471. package/dist/src/components/select/index.d.ts +0 -4
  472. package/dist/src/components/select/loading-dots.d.ts +0 -9
  473. package/dist/src/components/switch/index.d.ts +0 -2
  474. package/dist/src/components/table/hooks/useInfiniteScroll.d.ts +0 -58
  475. package/dist/src/components/table/index.d.ts +0 -27
  476. package/dist/src/components/table-checkbox/index.d.ts +0 -1
  477. package/dist/src/components/textarea/index.d.ts +0 -2
  478. package/dist/src/components/toast/index.d.ts +0 -3
  479. package/dist/src/components/toolbar/index.d.ts +0 -2
  480. package/dist/src/components/tooltip/index.d.ts +0 -2
  481. package/dist/src/hooks/index.d.ts +0 -4
  482. package/dist/src/index.d.ts +0 -27
  483. package/dist/src/lib/index.d.ts +0 -6
  484. /package/dist/{src/components → components}/animated-height/AnimatedHeight.d.ts +0 -0
  485. /package/dist/{src/components → components}/badge/types.d.ts +0 -0
  486. /package/dist/{src/components → components}/button/types.d.ts +0 -0
  487. /package/dist/{src/components → components}/checkbox/types.d.ts +0 -0
  488. /package/dist/{src/components → components}/collapsible/Collapsible.d.ts +0 -0
  489. /package/dist/{src/components → components}/page-title/PageTitle.d.ts +0 -0
  490. /package/dist/{src/components → components}/search-box/ExactMatchToggle.d.ts +0 -0
  491. /package/dist/{src/components → components}/search-box/SearchBoxChips.d.ts +0 -0
  492. /package/dist/{src/components → components}/search-box/SearchBoxFloatingInput.d.ts +0 -0
  493. /package/dist/{src/components → components}/search-box/SearchBoxMonth.d.ts +0 -0
  494. /package/dist/{src/components → components}/search-box/SearchBoxSheetContext.d.ts +0 -0
  495. /package/dist/{src/components → components}/search-box/parseDateRange.d.ts +0 -0
  496. /package/dist/{src/components → components}/select/types.d.ts +0 -0
  497. /package/dist/{src/components → components}/switch/types.d.ts +0 -0
  498. /package/dist/{src/components → components}/table/components/KeyboardNavButton.d.ts +0 -0
  499. /package/dist/{src/components → components}/table/components/PageJumpInput.d.ts +0 -0
  500. /package/dist/{src/components → components}/table/components/Pagination.d.ts +0 -0
  501. /package/dist/{src/components → components}/table/components/PaginationFooter.d.ts +0 -0
  502. /package/dist/{src/components → components}/table/components/SortableHeaderCell.d.ts +0 -0
  503. /package/dist/{src/components → components}/table/hooks/useVirtualTable.d.ts +0 -0
  504. /package/dist/{src/components → components}/table/types.d.ts +0 -0
  505. /package/dist/{src/components → components}/table-checkbox/TableCheckbox.d.ts +0 -0
  506. /package/dist/{src/components → components}/table-page-layout/TablePageLayout.d.ts +0 -0
  507. /package/dist/{src/components → components}/textarea/types.d.ts +0 -0
  508. /package/dist/{src/hooks → hooks}/useBottomSheetDrag.d.ts +0 -0
  509. /package/dist/{src/hooks → hooks}/useClickOutside.d.ts +0 -0
  510. /package/dist/{src/hooks → hooks}/useMediaQuery.d.ts +0 -0
  511. /package/dist/{src/hooks → hooks}/useScrollLock.d.ts +0 -0
  512. /package/dist/{src/lib → lib}/Portal.d.ts +0 -0
  513. /package/dist/{src/lib → lib}/column-preset-storage.d.ts +0 -0
  514. /package/dist/{src/lib → lib}/overlay-stack.d.ts +0 -0
@@ -0,0 +1 @@
1
+ let e=require("react");function t(t){let n=`onLoadMore`in t,r=n?t.onLoadMore:t.fetchNextPage,i=n?t.hasMore:t.hasNextPage,a=n?t.isFetching:t.isFetchingNextPage,o=n?t.scrollElementRef:void 0,s=n?void 0:t.scrollElement,c=t.rootMarginPx??(n?120:100),l=t.enabled??!0,u=(0,e.useRef)(null),d=(0,e.useCallback)(e=>{e[0]?.isIntersecting&&i&&!a&&l&&r()},[r,i,a,l]);return(0,e.useEffect)(()=>{let e=u.current;if(!l||!i||!e)return;let t=new IntersectionObserver(d,{root:o?.current??s??null,rootMargin:`${c}px`,threshold:0});return t.observe(e),()=>t.disconnect()},[d,o,s,c,l,i]),{sentinelRef:u}}exports.useInfiniteScroll=t;
@@ -0,0 +1,36 @@
1
+ import { RefObject } from 'react';
2
+ interface CommonOptions {
3
+ /** 감지 활성 여부. 기본 true. */
4
+ enabled?: boolean;
5
+ /** 경계보다 일찍 감지할 거리(px). 새 API의 기본값은 120, 기존 API는 100. */
6
+ rootMarginPx?: number;
7
+ }
8
+ /** 콜백과 스크롤 컨테이너 ref를 받는 범용 옵션. */
9
+ export interface InfiniteScrollOptions extends CommonOptions {
10
+ onLoadMore: () => void;
11
+ hasMore: boolean;
12
+ isFetching: boolean;
13
+ /** 없거나 current가 null이면 뷰포트에서 감지한다. */
14
+ scrollElementRef?: RefObject<HTMLElement | null>;
15
+ }
16
+ /** 기존 테이블 사용자와 호환되는 옵션. */
17
+ export interface LegacyInfiniteScrollOptions extends CommonOptions {
18
+ fetchNextPage: () => void;
19
+ hasNextPage: boolean;
20
+ isFetchingNextPage: boolean;
21
+ scrollElement?: HTMLElement | null;
22
+ /** 기존 API에서 실제로 사용되지 않았던 값. 선제 감지는 rootMarginPx를 쓴다. */
23
+ threshold?: number;
24
+ }
25
+ export type UseInfiniteScrollOptions = InfiniteScrollOptions | LegacyInfiniteScrollOptions;
26
+ export interface UseInfiniteScrollReturn {
27
+ /** 스크롤 영역 끝에 렌더할 감지 요소의 ref. */
28
+ sentinelRef: RefObject<HTMLDivElement | null>;
29
+ }
30
+ /**
31
+ * IntersectionObserver로 스크롤 끝의 sentinel을 감지해 다음 데이터를 요청한다.
32
+ * sentinel을 실제 스크롤 영역 끝에 렌더해야 감지되며, ref가 없으면 감시가 시작되지 않는다.
33
+ * 컨테이너를 쓰면 scrollElementRef를 지정하고, 뷰포트 스크롤이면 생략한다.
34
+ */
35
+ export declare function useInfiniteScroll(options: UseInfiniteScrollOptions): UseInfiniteScrollReturn;
36
+ export {};
@@ -0,0 +1,31 @@
1
+ import { useCallback as e, useEffect as t, useRef as n } from "react";
2
+ //#region src/hooks/useInfiniteScroll.ts
3
+ function r(r) {
4
+ let i = "onLoadMore" in r, a = i ? r.onLoadMore : r.fetchNextPage, o = i ? r.hasMore : r.hasNextPage, s = i ? r.isFetching : r.isFetchingNextPage, c = i ? r.scrollElementRef : void 0, l = i ? void 0 : r.scrollElement, u = r.rootMarginPx ?? (i ? 120 : 100), d = r.enabled ?? !0, f = n(null), p = e((e) => {
5
+ e[0]?.isIntersecting && o && !s && d && a();
6
+ }, [
7
+ a,
8
+ o,
9
+ s,
10
+ d
11
+ ]);
12
+ return t(() => {
13
+ let e = f.current;
14
+ if (!d || !o || !e) return;
15
+ let t = new IntersectionObserver(p, {
16
+ root: c?.current ?? l ?? null,
17
+ rootMargin: `${u}px`,
18
+ threshold: 0
19
+ });
20
+ return t.observe(e), () => t.disconnect();
21
+ }, [
22
+ p,
23
+ c,
24
+ l,
25
+ u,
26
+ d,
27
+ o
28
+ ]), { sentinelRef: f };
29
+ }
30
+ //#endregion
31
+ export { r as useInfiniteScroll };
@@ -0,0 +1 @@
1
+ let e=require("react");function t(t){let[n,r]=(0,e.useState)(()=>typeof window>`u`?!1:window.matchMedia(t).matches);return(0,e.useEffect)(()=>{let e=window.matchMedia(t),n=e=>r(e.matches);return r(e.matches),e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[t]),n}var n=`(max-width: 639px)`;function r(){return t(n)}exports.MOBILE_MEDIA_QUERY=n,exports.useIsMobile=r,exports.useMediaQuery=t;
@@ -0,0 +1,15 @@
1
+ import { useEffect as e, useState as t } from "react";
2
+ //#region src/hooks/useMediaQuery.ts
3
+ function n(n) {
4
+ let [r, i] = t(() => typeof window > "u" ? !1 : window.matchMedia(n).matches);
5
+ return e(() => {
6
+ let e = window.matchMedia(n), t = (e) => i(e.matches);
7
+ return i(e.matches), e.addEventListener("change", t), () => e.removeEventListener("change", t);
8
+ }, [n]), r;
9
+ }
10
+ var r = "(max-width: 639px)";
11
+ function i() {
12
+ return n(r);
13
+ }
14
+ //#endregion
15
+ export { r as MOBILE_MEDIA_QUERY, i as useIsMobile, n as useMediaQuery };
@@ -0,0 +1 @@
1
+ let e=require("react");var t=0,n=``;function r(){t===0&&(n=document.body.style.overflow,document.body.style.overflow=`hidden`),t+=1}function i(){t!==0&&(--t,t===0&&(document.body.style.overflow=n,n=``))}function a(t){(0,e.useEffect)(()=>{if(t)return r(),i},[t])}exports.useScrollLock=a;
@@ -0,0 +1,16 @@
1
+ import { useEffect as e } from "react";
2
+ //#region src/hooks/useScrollLock.ts
3
+ var t = 0, n = "";
4
+ function r() {
5
+ t === 0 && (n = document.body.style.overflow, document.body.style.overflow = "hidden"), t += 1;
6
+ }
7
+ function i() {
8
+ t !== 0 && (--t, t === 0 && (document.body.style.overflow = n, n = ""));
9
+ }
10
+ function a(t) {
11
+ e(() => {
12
+ if (t) return r(), i;
13
+ }, [t]);
14
+ }
15
+ //#endregion
16
+ export { a as useScrollLock };
@@ -0,0 +1 @@
1
+ let e=require("react");function t({rows:t,getRowId:n,isSelected:r,setSelected:i,enabled:a=!0,scrollContainerRef:o,edgeSize:s=60,maxSpeed:c=14}){let l=(0,e.useRef)(!1),u=(0,e.useRef)(!0),d=(0,e.useRef)(null),f=(0,e.useRef)(null),p=(0,e.useRef)(null),m=(0,e.useRef)(t);m.current=t;let h=(0,e.useRef)(n);h.current=n;let g=(0,e.useRef)(r);g.current=r;let _=(0,e.useRef)(i);_.current=i;let v=(0,e.useMemo)(()=>{let e=new Map;for(let n=0;n<t.length;n++){let r=t[n];r!==void 0&&e.set(h.current(r),n)}return e},[t]),y=(0,e.useRef)(v);y.current=v;let b=(0,e.useCallback)(()=>{p.current!=null&&(cancelAnimationFrame(p.current),p.current=null),f.current=null},[]),x=(0,e.useCallback)(()=>{if(p.current=null,!l.current)return;let e=o?.current,t=f.current;if(!e||t==null)return;let n=e.getBoundingClientRect(),r=0;if(t<n.top+s){let e=(n.top+s-t)/s;r=-Math.ceil(c*Math.min(1,Math.max(0,e)))}else if(t>n.bottom-s){let e=(t-(n.bottom-s))/s;r=Math.ceil(c*Math.min(1,Math.max(0,e)))}r!==0&&(e.scrollTop+=r),p.current=requestAnimationFrame(x)},[s,c,o]);(0,e.useEffect)(()=>{if(!a)return;let e=()=>{l.current=!1,d.current=null,b()},t=e=>{l.current&&(f.current=e.clientY,p.current??=requestAnimationFrame(x))};return window.addEventListener(`mouseup`,e),window.addEventListener(`mousemove`,t),()=>{window.removeEventListener(`mouseup`,e),window.removeEventListener(`mousemove`,t),l.current=!1,d.current=null,b()}},[a,b,x]);let S=e=>e==null?-1:y.current.get(e)??-1;return{onRowMouseDown:(0,e.useCallback)(e=>{if(!a)return;let t=m.current[e];t!==void 0&&(l.current=!0,d.current=h.current(t),u.current=!g.current(t),_.current(t,u.current))},[a]),onRowMouseEnter:(0,e.useCallback)(e=>{if(!a||!l.current)return;let t=m.current,n=t[e];if(n===void 0)return;let r=h.current(n);if(r===d.current)return;let i=S(d.current),o=i===-1?e:i,s=Math.min(o,e),c=Math.max(o,e);for(let e=s;e<=c;e++){let n=t[e];n!==void 0&&g.current(n)!==u.current&&_.current(n,u.current)}d.current=r},[a])}}exports.useTableDragSelection=t;
@@ -1,4 +1,4 @@
1
- interface Options<T> {
1
+ export interface UseTableDragSelectionOptions<T> {
2
2
  /** 현재 표에 그려진 row들 (순서대로). */
3
3
  rows: T[];
4
4
  /** row의 안정 식별자. */
@@ -17,7 +17,7 @@ interface Options<T> {
17
17
  maxSpeed?: number;
18
18
  }
19
19
  /**
20
- * 표의 다중 행을 드래그로 선택/해제한다 — 비스킷링크의 드래그 체크 패턴을 일반화.
20
+ * 표의 다중 행을 드래그로 선택하거나 해제한다.
21
21
  *
22
22
  * 동작:
23
23
  * - mouseDown(row 인덱스 i): 드래그 시작. row의 현재 선택 상태를 뒤집은 값을 모드로 잡고, 그 row를 그 모드로 적용
@@ -28,8 +28,7 @@ interface Options<T> {
28
28
  * 드래그 도중 데이터가 refetch 등으로 흔들려도 마지막 식별자(lastIdRef)를 기준으로 인덱스를 다시 찾아
29
29
  * 어긋남 위험을 줄인다.
30
30
  */
31
- export declare function useTableDragSelection<T>({ rows, getRowId, isSelected, setSelected, enabled, scrollContainerRef, edgeSize, maxSpeed, }: Options<T>): {
31
+ export declare function useTableDragSelection<T>({ rows, getRowId, isSelected, setSelected, enabled, scrollContainerRef, edgeSize, maxSpeed, }: UseTableDragSelectionOptions<T>): {
32
32
  onRowMouseDown: (index: number) => void;
33
33
  onRowMouseEnter: (index: number) => void;
34
34
  };
35
- export {};
@@ -0,0 +1,79 @@
1
+ import { useCallback as e, useEffect as t, useMemo as n, useRef as r } from "react";
2
+ //#region src/hooks/useTableDragSelection.ts
3
+ function i({ rows: i, getRowId: a, isSelected: o, setSelected: s, enabled: c = !0, scrollContainerRef: l, edgeSize: u = 60, maxSpeed: d = 14 }) {
4
+ let f = r(!1), p = r(!0), m = r(null), h = r(null), g = r(null), _ = r(i);
5
+ _.current = i;
6
+ let v = r(a);
7
+ v.current = a;
8
+ let y = r(o);
9
+ y.current = o;
10
+ let b = r(s);
11
+ b.current = s;
12
+ let x = n(() => {
13
+ let e = /* @__PURE__ */ new Map();
14
+ for (let t = 0; t < i.length; t++) {
15
+ let n = i[t];
16
+ n !== void 0 && e.set(v.current(n), t);
17
+ }
18
+ return e;
19
+ }, [i]), S = r(x);
20
+ S.current = x;
21
+ let C = e(() => {
22
+ g.current != null && (cancelAnimationFrame(g.current), g.current = null), h.current = null;
23
+ }, []), w = e(() => {
24
+ if (g.current = null, !f.current) return;
25
+ let e = l?.current, t = h.current;
26
+ if (!e || t == null) return;
27
+ let n = e.getBoundingClientRect(), r = 0;
28
+ if (t < n.top + u) {
29
+ let e = (n.top + u - t) / u;
30
+ r = -Math.ceil(d * Math.min(1, Math.max(0, e)));
31
+ } else if (t > n.bottom - u) {
32
+ let e = (t - (n.bottom - u)) / u;
33
+ r = Math.ceil(d * Math.min(1, Math.max(0, e)));
34
+ }
35
+ r !== 0 && (e.scrollTop += r), g.current = requestAnimationFrame(w);
36
+ }, [
37
+ u,
38
+ d,
39
+ l
40
+ ]);
41
+ t(() => {
42
+ if (!c) return;
43
+ let e = () => {
44
+ f.current = !1, m.current = null, C();
45
+ }, t = (e) => {
46
+ f.current && (h.current = e.clientY, g.current ??= requestAnimationFrame(w));
47
+ };
48
+ return window.addEventListener("mouseup", e), window.addEventListener("mousemove", t), () => {
49
+ window.removeEventListener("mouseup", e), window.removeEventListener("mousemove", t), f.current = !1, m.current = null, C();
50
+ };
51
+ }, [
52
+ c,
53
+ C,
54
+ w
55
+ ]);
56
+ let T = (e) => e == null ? -1 : S.current.get(e) ?? -1;
57
+ return {
58
+ onRowMouseDown: e((e) => {
59
+ if (!c) return;
60
+ let t = _.current[e];
61
+ t !== void 0 && (f.current = !0, m.current = v.current(t), p.current = !y.current(t), b.current(t, p.current));
62
+ }, [c]),
63
+ onRowMouseEnter: e((e) => {
64
+ if (!c || !f.current) return;
65
+ let t = _.current, n = t[e];
66
+ if (n === void 0) return;
67
+ let r = v.current(n);
68
+ if (r === m.current) return;
69
+ let i = T(m.current), a = i === -1 ? e : i, o = Math.min(a, e), s = Math.max(a, e);
70
+ for (let e = o; e <= s; e++) {
71
+ let n = t[e];
72
+ n !== void 0 && y.current(n) !== p.current && b.current(n, p.current);
73
+ }
74
+ m.current = r;
75
+ }, [c])
76
+ };
77
+ }
78
+ //#endregion
79
+ export { i as useTableDragSelection };
@@ -0,0 +1 @@
1
+ let e=require("@tanstack/react-virtual");function t({scrollElementRef:t,scrollElement:n,count:r,estimateSize:i=48,overscan:a=5}){let o=(0,e.useVirtualizer)({count:r,getScrollElement:()=>n??t.current,estimateSize:()=>i,overscan:a,enabled:r>0}),s=o.getVirtualItems(),c=o.getTotalSize();return{virtualizer:o,virtualItems:s,totalSize:c,topSpacerHeight:s.length>0?s[0]?.start??0:0,bottomSpacerHeight:s.length>0?c-(s[s.length-1]?.end??0):0}}exports.useVirtualRows=t;
@@ -0,0 +1,56 @@
1
+ import { Virtualizer, VirtualItem } from '@tanstack/react-virtual';
2
+ import { RefObject } from 'react';
3
+ export interface UseVirtualRowsOptions {
4
+ /**
5
+ * 스크롤 컨테이너 ref.
6
+ * null이면 스크롤 영역을 아직 측정할 수 없다.
7
+ */
8
+ scrollElementRef: RefObject<HTMLElement | null>;
9
+ /** 기존 테이블의 직접 전달 요소. 없으면 scrollElementRef를 사용한다. */
10
+ scrollElement?: HTMLElement | null;
11
+ /**
12
+ * 가상화할 행 수.
13
+ */
14
+ count: number;
15
+ /**
16
+ * 예상 행 높이(px). 실제 행 높이와 다르면 virtualizer가 동적 보정한다.
17
+ * @default 48
18
+ */
19
+ estimateSize?: number;
20
+ /**
21
+ * 뷰포트 밖 미리 렌더할 행 수(위아래 각각).
22
+ * 스크롤이 빠를수록 높은 값이 유리하나, 과하면 DOM 노드 수 증가.
23
+ * @default 5
24
+ */
25
+ overscan?: number;
26
+ }
27
+ export interface UseVirtualRowsReturn {
28
+ /**
29
+ * @tanstack/react-virtual 인스턴스.
30
+ * measureElement(ref 콜백), scrollToIndex 등 고급 API 접근용.
31
+ */
32
+ virtualizer: Virtualizer<HTMLElement, Element>;
33
+ /**
34
+ * 현재 렌더해야 할 가상 행 목록.
35
+ * 각 아이템의 `index`로 원본 데이터 배열에 접근한다.
36
+ */
37
+ virtualItems: VirtualItem[];
38
+ /**
39
+ * 전체 스크롤 영역 높이(px).
40
+ * 스크롤 컨테이너 자식의 `height` 또는 `minHeight`에 적용한다.
41
+ */
42
+ totalSize: number;
43
+ /**
44
+ * 첫 번째 가상 행 위의 빈 공간 높이(px).
45
+ * `<tr style={{ height: topSpacerHeight }} />` 또는 paddingTop에 사용.
46
+ */
47
+ topSpacerHeight: number;
48
+ /**
49
+ * 마지막 가상 행 아래의 빈 공간 높이(px).
50
+ * `<tr style={{ height: bottomSpacerHeight }} />` 또는 paddingBottom에 사용.
51
+ */
52
+ bottomSpacerHeight: number;
53
+ }
54
+ /** 행 수와 스크롤 요소로 가상 항목과 스페이서를 계산한다.
55
+ * 스크롤 영역에 고정 높이와 overflow가 필요하다. 고급 측정은 반환된 virtualizer를 사용한다. */
56
+ export declare function useVirtualRows({ scrollElementRef, scrollElement, count, estimateSize, overscan, }: UseVirtualRowsOptions): UseVirtualRowsReturn;
@@ -0,0 +1,20 @@
1
+ import { useVirtualizer as e } from "@tanstack/react-virtual";
2
+ //#region src/hooks/useVirtualRows.ts
3
+ function t({ scrollElementRef: t, scrollElement: n, count: r, estimateSize: i = 48, overscan: a = 5 }) {
4
+ let o = e({
5
+ count: r,
6
+ getScrollElement: () => n ?? t.current,
7
+ estimateSize: () => i,
8
+ overscan: a,
9
+ enabled: r > 0
10
+ }), s = o.getVirtualItems(), c = o.getTotalSize();
11
+ return {
12
+ virtualizer: o,
13
+ virtualItems: s,
14
+ totalSize: c,
15
+ topSpacerHeight: s.length > 0 ? s[0]?.start ?? 0 : 0,
16
+ bottomSpacerHeight: s.length > 0 ? c - (s[s.length - 1]?.end ?? 0) : 0
17
+ };
18
+ }
19
+ //#endregion
20
+ export { t as useVirtualRows };
package/dist/hooks.cjs ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./hooks/useFillEmptyRows.cjs"),t=require("./hooks/useTableDragSelection.cjs"),n=require("./hooks/useVirtualRows.cjs"),r=require("./hooks/useInfiniteScroll.cjs"),i=require("./hooks/useClickOutside.cjs"),a=require("./hooks/useMediaQuery.cjs"),o=require("./hooks/useBottomSheetDrag.cjs"),s=require("./hooks/useScrollLock.cjs"),c=require("./hooks/useFocusTrap.cjs"),l=require("./hooks/useAwaitableOverlay.cjs"),u=require("./components/stepper/use-stepper.cjs");exports.MOBILE_MEDIA_QUERY=a.MOBILE_MEDIA_QUERY,exports.useAwaitableOverlay=l.useAwaitableOverlay,exports.useBottomSheetDrag=o.useBottomSheetDrag,exports.useClickOutside=i.useClickOutside,exports.useFillEmptyRows=e.useFillEmptyRows,exports.useFocusTrap=c.useFocusTrap,exports.useInfiniteScroll=r.useInfiniteScroll,exports.useIsMobile=a.useIsMobile,exports.useMediaQuery=a.useMediaQuery,exports.useScrollLock=s.useScrollLock,exports.useStepper=u.useStepper,exports.useTableDragSelection=t.useTableDragSelection,exports.useVirtualRows=n.useVirtualRows;
@@ -0,0 +1,12 @@
1
+ import { useFillEmptyRows as e } from "./hooks/useFillEmptyRows.esm.js";
2
+ import { useTableDragSelection as t } from "./hooks/useTableDragSelection.esm.js";
3
+ import { useVirtualRows as n } from "./hooks/useVirtualRows.esm.js";
4
+ import { useInfiniteScroll as r } from "./hooks/useInfiniteScroll.esm.js";
5
+ import { useClickOutside as i } from "./hooks/useClickOutside.esm.js";
6
+ import { MOBILE_MEDIA_QUERY as a, useIsMobile as o, useMediaQuery as s } from "./hooks/useMediaQuery.esm.js";
7
+ import { useBottomSheetDrag as c } from "./hooks/useBottomSheetDrag.esm.js";
8
+ import { useScrollLock as l } from "./hooks/useScrollLock.esm.js";
9
+ import { useFocusTrap as u } from "./hooks/useFocusTrap.esm.js";
10
+ import { useAwaitableOverlay as d } from "./hooks/useAwaitableOverlay.esm.js";
11
+ import { useStepper as f } from "./components/stepper/use-stepper.esm.js";
12
+ export { a as MOBILE_MEDIA_QUERY, d as useAwaitableOverlay, c as useBottomSheetDrag, i as useClickOutside, e as useFillEmptyRows, u as useFocusTrap, r as useInfiniteScroll, o as useIsMobile, s as useMediaQuery, l as useScrollLock, f as useStepper, t as useTableDragSelection, n as useVirtualRows };
package/dist/index.cjs ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require("./_virtual/_rolldown/runtime.cjs");/* empty css */const e=require("./lib/utils.cjs"),t=require("./components/button/Button.cjs"),n=require("./components/badge/Badge.cjs"),r=require("./components/switch/Switch.cjs"),i=require("./components/checkbox/Checkbox.cjs"),ee=require("./components/input/use-input-format.cjs"),a=require("./components/input/Input.cjs"),te=require("./components/input/PasswordInput.cjs"),ne=require("./components/input/DecimalInput.cjs"),re=require("./components/input/format.cjs"),ie=require("./components/textarea/Textarea.cjs"),ae=require("./components/collapsible/Collapsible.cjs"),oe=require("./components/animated-height/AnimatedHeight.cjs"),se=require("./components/tooltip/Tooltip.cjs"),ce=require("./components/info-tooltip/InfoTooltip.cjs"),le=require("./components/popover/Popover.cjs"),o=require("./components/loading-spinner/LoadingSpinner.cjs"),s=require("./components/select/Select.cjs"),c=require("./components/select/MultiSelect.cjs"),l=require("./components/table-checkbox/TableCheckbox.cjs"),u=require("./hooks/useFillEmptyRows.cjs"),d=require("./hooks/useTableDragSelection.cjs"),f=require("./components/table/hooks/useTableSort.cjs"),p=require("./components/table/table.cjs"),m=require("./components/table/components/Pagination.cjs"),h=require("./components/table/paginated-table.cjs"),g=require("./components/table/mini-table.cjs"),_=require("./components/table/paginated-mini-table.cjs"),v=require("./components/table/accordion-table.cjs"),y=require("./hooks/useVirtualRows.cjs"),b=require("./components/table/hooks/useVirtualTable.cjs"),x=require("./hooks/useInfiniteScroll.cjs"),S=require("./hooks/useClickOutside.cjs"),C=require("./hooks/useMediaQuery.cjs"),w=require("./hooks/useBottomSheetDrag.cjs"),T=require("./hooks/useScrollLock.cjs"),E=require("./hooks/useFocusTrap.cjs"),D=require("./hooks/useAwaitableOverlay.cjs"),O=require("./components/stepper/use-stepper.cjs"),k=require("./lib/overlay-stack.cjs"),A=require("./lib/Portal.cjs"),j=require("./components/modal/Modal.cjs"),M=require("./components/modal/ModalSubView.cjs"),N=require("./components/modal/StandardModal.cjs"),P=require("./components/table/components/ColumnSettingsTable.cjs"),F=require("./components/table/components/ColumnPresetSelector.cjs"),I=require("./lib/column-preset-storage.cjs"),L=require("./components/table/hooks/useColumnPresets.cjs"),R=require("./components/table/hooks/useTableColumnState.cjs"),z=require("./components/page-title/PageTitle.cjs"),B=require("./components/toolbar/Toolbar.cjs"),V=require("./components/table-page-layout/TablePageLayout.cjs"),H=require("./components/date-picker/date-range-picker.cjs"),U=require("./components/date-picker/date-picker.cjs"),W=require("./components/date-picker/month-picker.cjs"),G=require("./components/time-picker/time-picker.cjs"),ue=require("./components/month-range-picker/month-range-picker.cjs"),de=require("./components/date-input/DateInput.cjs"),K=require("./components/search-box/parseDateRange.cjs"),fe=require("./components/search-box/SearchBox.cjs"),q=require("./components/search-box/parseSearchValues.cjs"),J=require("./components/search-box/dateRangePresets.cjs"),Y=require("./components/action-toast/ActionToast.cjs"),pe=require("./components/toast/ToastProvider.cjs"),me=require("./components/drawer/Drawer.cjs"),X=require("./components/radio/Radio.cjs"),he=require("./components/segmented-control/SegmentedControl.cjs"),Z=require("./components/progress/Progress.cjs"),ge=require("./components/skeleton/Skeleton.cjs"),_e=require("./components/field/Field.cjs"),ve=require("./components/field/FieldMessage.cjs"),Q=require("./components/error-boundary/chunk-reload.cjs"),ye=require("./components/error-boundary/ErrorBoundary.cjs"),be=require("./components/typing-dots/TypingDots.cjs"),xe=require("./components/typewriter-text/TypewriterText.cjs"),$=require("./components/stepper/Stepper.cjs"),Se=require("./components/segmented-code-input/SegmentedCodeInput.cjs"),Ce=require("./components/copyable-text/CopyableText.cjs");let we=require("react-hot-toast");exports.AccordionTable=v.AccordionTable,exports.AnimatedHeight=oe.AnimatedHeight,exports.Badge=n.Badge,exports.Button=t.Button,exports.CHUNK_RELOAD_TTL_MS=Q.CHUNK_RELOAD_TTL_MS,exports.Checkbox=i.Checkbox,exports.CheckboxCircle=i.CheckboxCircle,exports.CheckboxLine=i.CheckboxLine,exports.CheckboxLineTransparent=i.CheckboxLineTransparent,exports.Collapsible=ae.Collapsible,exports.ColumnPresetSelector=F.ColumnPresetSelector,exports.ColumnPresetStorage=I.ColumnPresetStorage,exports.ColumnSettingsTable=P.ColumnSettingsTable,exports.CopyableText=Ce.CopyableText,exports.DEFAULT_DATE_RANGE_PRESETS=J.DEFAULT_DATE_RANGE_PRESETS,exports.DateInput=de.DateInput,exports.DatePicker=U.DatePicker,exports.DatePickerBody=U.DatePickerBody,exports.DateRangePicker=H.DateRangePicker,exports.DecimalInput=ne.DecimalInput,exports.Drawer=me.Drawer,exports.ErrorBoundary=ye.ErrorBoundary,exports.Field=_e.Field,exports.FieldMessage=ve.FieldMessage,exports.InfoTooltip=ce.InfoTooltip,exports.InlineSpinner=o.InlineSpinner,exports.Input=a.Input,exports.LoadingSpinner=o.LoadingSpinner,exports.MOBILE_MEDIA_QUERY=C.MOBILE_MEDIA_QUERY,exports.MiniTable=g.MiniTable,exports.Modal=j.Modal,exports.ModalSubView=M.ModalSubView,exports.MonthPicker=W.MonthPicker,exports.MonthRangePicker=ue.MonthRangePicker,exports.MultiSelect=c.MultiSelect,exports.PageHeader=V.PageHeader,exports.PageTitle=z.PageTitle,exports.PaginatedMiniTable=_.PaginatedMiniTable,exports.PaginatedTable=h.PaginatedTable,exports.Pagination=m.Pagination,exports.PasswordInput=te.PasswordInput,exports.Popover=le.Popover,exports.Portal=A.Portal,exports.Progress=Z.Progress,exports.Radio=X.Radio,exports.RadioGroup=X.RadioGroup,exports.RadioItem=X.RadioItem,exports.SearchBox=fe.SearchBox,exports.SegmentedCodeInput=Se.SegmentedCodeInput,exports.SegmentedControl=he.SegmentedControl,exports.Select=s.Select,exports.Skeleton=ge.Skeleton,exports.Spinner=o.Spinner,exports.StandardModal=N.StandardModal,exports.Stepper=$.Stepper,exports.StepperContent=$.StepperContent,exports.Switch=r.Switch,exports.Table=p.Table,exports.TableCard=V.TableCard,exports.TableCheckbox=l.TableCheckbox,exports.TablePageLayout=V.TablePageLayout,exports.Textarea=ie.Textarea,exports.TimeInput=G.TimeInput,exports.TimePicker=G.TimePicker,exports.ToastProvider=pe.ToastProvider,exports.Toolbar=B.Toolbar,exports.Tooltip=se.Tooltip,exports.TypewriterText=xe.TypewriterText,exports.TypingDots=be.TypingDots,exports.clearChunkReloadGuard=Q.clearChunkReloadGuard,exports.cn=e.cn,exports.dismissActionToast=Y.dismissActionToast,exports.formatYearMonth=e.formatYearMonth,exports.getTodayDateRange=J.getTodayDateRange,exports.getTodayDateRangeValue=J.getTodayDateRangeValue,exports.inputFormats=re.inputFormats,exports.isActionToastActive=Y.isActionToastActive,exports.isChunkLoadError=Q.isChunkLoadError,exports.listenForChunkPreloadError=Q.listenForChunkPreloadError,exports.overlayStack=k.overlayStack,exports.parseDateRangeValue=K.parseDateRangeValue,exports.parseMultiSelectValue=q.parseMultiSelectValue,exports.parseSearchValues=q.parseSearchValues,exports.reloadAfterClearingChunkGuard=Q.reloadAfterClearingChunkGuard,exports.reloadOnceForChunkError=Q.reloadOnceForChunkError,exports.serializeDateRangeValue=K.serializeDateRangeValue,exports.showActionToast=Y.showActionToast,Object.defineProperty(exports,"toast",{enumerable:!0,get:function(){return we.default}}),exports.tryAcquireChunkReloadGuard=Q.tryAcquireChunkReloadGuard,exports.useAwaitableOverlay=D.useAwaitableOverlay,exports.useBottomSheetDrag=w.useBottomSheetDrag,exports.useClickOutside=S.useClickOutside,exports.useColumnPresets=L.useColumnPresets,exports.useFillEmptyRows=u.useFillEmptyRows,exports.useFocusTrap=E.useFocusTrap,exports.useHeaderButtonSize=V.useHeaderButtonSize,exports.useInfiniteScroll=x.useInfiniteScroll,exports.useInputFormat=ee.useInputFormat,exports.useIsMobile=C.useIsMobile,exports.useMediaQuery=C.useMediaQuery,exports.useScrollLock=T.useScrollLock,exports.useStepper=O.useStepper,exports.useTableColumnState=R.useTableColumnState,exports.useTableDragSelection=d.useTableDragSelection,exports.useTableSort=f.useTableSort,exports.useVirtualRows=y.useVirtualRows,exports.useVirtualTable=b.useVirtualTable;
@@ -0,0 +1,40 @@
1
+ export * from './components/button/index.js';
2
+ export * from './components/badge/index.js';
3
+ export * from './components/switch/index.js';
4
+ export * from './components/checkbox/index.js';
5
+ export * from './components/input/index.js';
6
+ export * from './components/textarea/index.js';
7
+ export * from './components/collapsible/index.js';
8
+ export * from './components/animated-height/index.js';
9
+ export * from './components/tooltip/index.js';
10
+ export * from './components/info-tooltip/index.js';
11
+ export * from './components/popover/index.js';
12
+ export * from './components/loading-spinner/index.js';
13
+ export * from './components/select/index.js';
14
+ export * from './components/table-checkbox/index.js';
15
+ export * from './components/table/index.js';
16
+ export * from './components/page-title/index.js';
17
+ export * from './components/toolbar/index.js';
18
+ export * from './components/table-page-layout/index.js';
19
+ export * from './components/date-picker/index.js';
20
+ export * from './components/time-picker/index.js';
21
+ export * from './components/month-range-picker/index.js';
22
+ export * from './components/date-input/index.js';
23
+ export * from './components/search-box/index.js';
24
+ export * from './components/action-toast/index.js';
25
+ export * from './components/toast/index.js';
26
+ export * from './components/modal/index.js';
27
+ export * from './components/drawer/index.js';
28
+ export * from './hooks/index.js';
29
+ export * from './lib/index.js';
30
+ export * from './components/radio/index.js';
31
+ export * from './components/segmented-control/index.js';
32
+ export * from './components/progress/index.js';
33
+ export * from './components/skeleton/index.js';
34
+ export * from './components/field/index.js';
35
+ export * from './components/error-boundary/index.js';
36
+ export * from './components/typing-dots/index.js';
37
+ export * from './components/typewriter-text/index.js';
38
+ export * from './components/stepper/index.js';
39
+ export * from './components/segmented-code-input/index.js';
40
+ export * from './components/copyable-text/index.js';
@@ -0,0 +1,81 @@
1
+ /* empty css */
2
+ import { cn as e, formatYearMonth as t } from "./lib/utils.esm.js";
3
+ import { Button as n } from "./components/button/Button.esm.js";
4
+ import { Badge as r } from "./components/badge/Badge.esm.js";
5
+ import { Switch as i } from "./components/switch/Switch.esm.js";
6
+ import { Checkbox as a, CheckboxCircle as o, CheckboxLine as s, CheckboxLineTransparent as c } from "./components/checkbox/Checkbox.esm.js";
7
+ import { useInputFormat as l } from "./components/input/use-input-format.esm.js";
8
+ import { Input as u } from "./components/input/Input.esm.js";
9
+ import { PasswordInput as d } from "./components/input/PasswordInput.esm.js";
10
+ import { DecimalInput as f } from "./components/input/DecimalInput.esm.js";
11
+ import { inputFormats as p } from "./components/input/format.esm.js";
12
+ import { Textarea as m } from "./components/textarea/Textarea.esm.js";
13
+ import { Collapsible as h } from "./components/collapsible/Collapsible.esm.js";
14
+ import { AnimatedHeight as g } from "./components/animated-height/AnimatedHeight.esm.js";
15
+ import { Tooltip as _ } from "./components/tooltip/Tooltip.esm.js";
16
+ import { InfoTooltip as v } from "./components/info-tooltip/InfoTooltip.esm.js";
17
+ import { Popover as y } from "./components/popover/Popover.esm.js";
18
+ import { InlineSpinner as b, LoadingSpinner as x, Spinner as S } from "./components/loading-spinner/LoadingSpinner.esm.js";
19
+ import { Select as C } from "./components/select/Select.esm.js";
20
+ import { MultiSelect as w } from "./components/select/MultiSelect.esm.js";
21
+ import { TableCheckbox as T } from "./components/table-checkbox/TableCheckbox.esm.js";
22
+ import { useFillEmptyRows as E } from "./hooks/useFillEmptyRows.esm.js";
23
+ import { useTableDragSelection as D } from "./hooks/useTableDragSelection.esm.js";
24
+ import { useTableSort as O } from "./components/table/hooks/useTableSort.esm.js";
25
+ import { Table as k } from "./components/table/table.esm.js";
26
+ import { Pagination as A } from "./components/table/components/Pagination.esm.js";
27
+ import { PaginatedTable as j } from "./components/table/paginated-table.esm.js";
28
+ import { MiniTable as M } from "./components/table/mini-table.esm.js";
29
+ import { PaginatedMiniTable as N } from "./components/table/paginated-mini-table.esm.js";
30
+ import { AccordionTable as P } from "./components/table/accordion-table.esm.js";
31
+ import { useVirtualRows as F } from "./hooks/useVirtualRows.esm.js";
32
+ import { useVirtualTable as I } from "./components/table/hooks/useVirtualTable.esm.js";
33
+ import { useInfiniteScroll as L } from "./hooks/useInfiniteScroll.esm.js";
34
+ import { useClickOutside as R } from "./hooks/useClickOutside.esm.js";
35
+ import { MOBILE_MEDIA_QUERY as z, useIsMobile as B, useMediaQuery as V } from "./hooks/useMediaQuery.esm.js";
36
+ import { useBottomSheetDrag as H } from "./hooks/useBottomSheetDrag.esm.js";
37
+ import { useScrollLock as U } from "./hooks/useScrollLock.esm.js";
38
+ import { useFocusTrap as W } from "./hooks/useFocusTrap.esm.js";
39
+ import { useAwaitableOverlay as G } from "./hooks/useAwaitableOverlay.esm.js";
40
+ import { useStepper as K } from "./components/stepper/use-stepper.esm.js";
41
+ import { overlayStack as q } from "./lib/overlay-stack.esm.js";
42
+ import { Portal as J } from "./lib/Portal.esm.js";
43
+ import { Modal as Y } from "./components/modal/Modal.esm.js";
44
+ import { ModalSubView as X } from "./components/modal/ModalSubView.esm.js";
45
+ import { StandardModal as Z } from "./components/modal/StandardModal.esm.js";
46
+ import { ColumnSettingsTable as Q } from "./components/table/components/ColumnSettingsTable.esm.js";
47
+ import { ColumnPresetSelector as $ } from "./components/table/components/ColumnPresetSelector.esm.js";
48
+ import { ColumnPresetStorage as ee } from "./lib/column-preset-storage.esm.js";
49
+ import { useColumnPresets as te } from "./components/table/hooks/useColumnPresets.esm.js";
50
+ import { useTableColumnState as ne } from "./components/table/hooks/useTableColumnState.esm.js";
51
+ import { PageTitle as re } from "./components/page-title/PageTitle.esm.js";
52
+ import { Toolbar as ie } from "./components/toolbar/Toolbar.esm.js";
53
+ import { PageHeader as ae, TableCard as oe, TablePageLayout as se, useHeaderButtonSize as ce } from "./components/table-page-layout/TablePageLayout.esm.js";
54
+ import { DateRangePicker as le } from "./components/date-picker/date-range-picker.esm.js";
55
+ import { DatePicker as ue, DatePickerBody as de } from "./components/date-picker/date-picker.esm.js";
56
+ import { MonthPicker as fe } from "./components/date-picker/month-picker.esm.js";
57
+ import { TimeInput as pe, TimePicker as me } from "./components/time-picker/time-picker.esm.js";
58
+ import { MonthRangePicker as he } from "./components/month-range-picker/month-range-picker.esm.js";
59
+ import { DateInput as ge } from "./components/date-input/DateInput.esm.js";
60
+ import { parseDateRangeValue as _e, serializeDateRangeValue as ve } from "./components/search-box/parseDateRange.esm.js";
61
+ import { SearchBox as ye } from "./components/search-box/SearchBox.esm.js";
62
+ import { parseMultiSelectValue as be, parseSearchValues as xe } from "./components/search-box/parseSearchValues.esm.js";
63
+ import { DEFAULT_DATE_RANGE_PRESETS as Se, getTodayDateRange as Ce, getTodayDateRangeValue as we } from "./components/search-box/dateRangePresets.esm.js";
64
+ import { dismissActionToast as Te, isActionToastActive as Ee, showActionToast as De } from "./components/action-toast/ActionToast.esm.js";
65
+ import { ToastProvider as Oe } from "./components/toast/ToastProvider.esm.js";
66
+ import { toast as ke } from "./components/toast/index.esm.js";
67
+ import { Drawer as Ae } from "./components/drawer/Drawer.esm.js";
68
+ import { Radio as je, RadioGroup as Me, RadioItem as Ne } from "./components/radio/Radio.esm.js";
69
+ import { SegmentedControl as Pe } from "./components/segmented-control/SegmentedControl.esm.js";
70
+ import { Progress as Fe } from "./components/progress/Progress.esm.js";
71
+ import { Skeleton as Ie } from "./components/skeleton/Skeleton.esm.js";
72
+ import { Field as Le } from "./components/field/Field.esm.js";
73
+ import { FieldMessage as Re } from "./components/field/FieldMessage.esm.js";
74
+ import { CHUNK_RELOAD_TTL_MS as ze, clearChunkReloadGuard as Be, isChunkLoadError as Ve, listenForChunkPreloadError as He, reloadAfterClearingChunkGuard as Ue, reloadOnceForChunkError as We, tryAcquireChunkReloadGuard as Ge } from "./components/error-boundary/chunk-reload.esm.js";
75
+ import { ErrorBoundary as Ke } from "./components/error-boundary/ErrorBoundary.esm.js";
76
+ import { TypingDots as qe } from "./components/typing-dots/TypingDots.esm.js";
77
+ import { TypewriterText as Je } from "./components/typewriter-text/TypewriterText.esm.js";
78
+ import { Stepper as Ye, StepperContent as Xe } from "./components/stepper/Stepper.esm.js";
79
+ import { SegmentedCodeInput as Ze } from "./components/segmented-code-input/SegmentedCodeInput.esm.js";
80
+ import { CopyableText as Qe } from "./components/copyable-text/CopyableText.esm.js";
81
+ export { P as AccordionTable, g as AnimatedHeight, r as Badge, n as Button, ze as CHUNK_RELOAD_TTL_MS, a as Checkbox, o as CheckboxCircle, s as CheckboxLine, c as CheckboxLineTransparent, h as Collapsible, $ as ColumnPresetSelector, ee as ColumnPresetStorage, Q as ColumnSettingsTable, Qe as CopyableText, Se as DEFAULT_DATE_RANGE_PRESETS, ge as DateInput, ue as DatePicker, de as DatePickerBody, le as DateRangePicker, f as DecimalInput, Ae as Drawer, Ke as ErrorBoundary, Le as Field, Re as FieldMessage, v as InfoTooltip, b as InlineSpinner, u as Input, x as LoadingSpinner, z as MOBILE_MEDIA_QUERY, M as MiniTable, Y as Modal, X as ModalSubView, fe as MonthPicker, he as MonthRangePicker, w as MultiSelect, ae as PageHeader, re as PageTitle, N as PaginatedMiniTable, j as PaginatedTable, A as Pagination, d as PasswordInput, y as Popover, J as Portal, Fe as Progress, je as Radio, Me as RadioGroup, Ne as RadioItem, ye as SearchBox, Ze as SegmentedCodeInput, Pe as SegmentedControl, C as Select, Ie as Skeleton, S as Spinner, Z as StandardModal, Ye as Stepper, Xe as StepperContent, i as Switch, k as Table, oe as TableCard, T as TableCheckbox, se as TablePageLayout, m as Textarea, pe as TimeInput, me as TimePicker, Oe as ToastProvider, ie as Toolbar, _ as Tooltip, Je as TypewriterText, qe as TypingDots, Be as clearChunkReloadGuard, e as cn, Te as dismissActionToast, t as formatYearMonth, Ce as getTodayDateRange, we as getTodayDateRangeValue, p as inputFormats, Ee as isActionToastActive, Ve as isChunkLoadError, He as listenForChunkPreloadError, q as overlayStack, _e as parseDateRangeValue, be as parseMultiSelectValue, xe as parseSearchValues, Ue as reloadAfterClearingChunkGuard, We as reloadOnceForChunkError, ve as serializeDateRangeValue, De as showActionToast, ke as toast, Ge as tryAcquireChunkReloadGuard, G as useAwaitableOverlay, H as useBottomSheetDrag, R as useClickOutside, te as useColumnPresets, E as useFillEmptyRows, W as useFocusTrap, ce as useHeaderButtonSize, L as useInfiniteScroll, l as useInputFormat, B as useIsMobile, V as useMediaQuery, U as useScrollLock, K as useStepper, ne as useTableColumnState, D as useTableDragSelection, O as useTableSort, F as useVirtualRows, I as useVirtualTable };
@@ -0,0 +1 @@
1
+ let e=require("react"),t=require("react-dom");function n({children:n,containerId:r}){let[i,a]=(0,e.useState)(!1);if((0,e.useEffect)(()=>(a(!0),()=>a(!1)),[]),!i)return null;let o=r?document.getElementById(r):document.body;return o?(0,t.createPortal)(n,o):null}exports.Portal=n;
@@ -0,0 +1,11 @@
1
+ import { useEffect as e, useState as t } from "react";
2
+ import { createPortal as n } from "react-dom";
3
+ //#region src/lib/Portal.tsx
4
+ function r({ children: r, containerId: i }) {
5
+ let [a, o] = t(!1);
6
+ if (e(() => (o(!0), () => o(!1)), []), !a) return null;
7
+ let s = i ? document.getElementById(i) : document.body;
8
+ return s ? n(r, s) : null;
9
+ }
10
+ //#endregion
11
+ export { r as Portal };
@@ -0,0 +1 @@
1
+ var e=class{static{this.STORAGE_KEY=`thewrong.table_column_presets`}static isStorageAvailable(){try{let e=`__thewrong_storage_test__`;return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch{return!1}}static getAllPresets(){if(!this.isStorageAvailable())return{};try{let e=localStorage.getItem(this.STORAGE_KEY);if(!e)return{};let t=JSON.parse(e);return typeof t==`object`&&t?t:{}}catch(e){return console.error(`Failed to load presets:`,e),{}}}static saveAllPresets(e){if(!this.isStorageAvailable()){console.warn(`localStorage is not available`);return}try{localStorage.setItem(this.STORAGE_KEY,JSON.stringify(e))}catch(e){e.name===`QuotaExceededError`?console.error(`localStorage quota exceeded`):console.error(`Failed to save presets:`,e)}}static getPagePresets(e){return this.getAllPresets()[e]||null}static initializePagePresets(e){let t={activePreset:1,presets:{1:null,2:null,3:null}},n=this.getAllPresets();return n[e]||(n[e]=t,this.saveAllPresets(n)),n[e]}static getActivePreset(e){return this.getPagePresets(e)?.activePreset||1}static getPresetColumns(e,t){let n=this.getPagePresets(e);if(!n)return null;let r=n.presets[t];return Array.isArray(r)?{columnOrder:r,hiddenColumns:[]}:r?{columnOrder:r.columnOrder,hiddenColumns:r.hiddenColumns??[],columnWidths:r.columnWidths}:null}static getActivePresetColumns(e){let t=this.getActivePreset(e);return this.getPresetColumns(e,t)}static savePreset(e,t,n){let r=Array.isArray(n)?{columnOrder:n,hiddenColumns:[]}:n;if(!Array.isArray(r.columnOrder)||r.columnOrder.length===0){console.warn(`Invalid column order:`,r);return}let i=this.getAllPresets();i[e]||this.initializePagePresets(e),i[e]||(i[e]={activePreset:1,presets:{1:null,2:null,3:null}}),i[e].presets[t]={columnOrder:[...r.columnOrder],hiddenColumns:[...r.hiddenColumns||[]],...r.columnWidths?{columnWidths:{...r.columnWidths}}:{}},this.saveAllPresets(i)}static setActivePreset(e,t){let n=this.getAllPresets();n[e]||this.initializePagePresets(e),n[e]&&(n[e].activePreset=t,this.saveAllPresets(n))}static clearPreset(e,t){let n=this.getAllPresets();n[e]&&(n[e].presets[t]=null,this.saveAllPresets(n))}static clearPagePresets(e){let t=this.getAllPresets();t[e]&&(delete t[e],this.saveAllPresets(t))}static migrateFromLegacyStorage(e,t){if(!this.isStorageAvailable())return!1;try{if(this.getPagePresets(e))return!1;let n=localStorage.getItem(t);if(!n)return!1;let r=JSON.parse(n);return!Array.isArray(r)||r.length===0?!1:(this.savePreset(e,1,r),this.setActivePreset(e,1),localStorage.removeItem(t),!0)}catch(e){return console.error(`Migration failed:`,e),!1}}static hasPreset(e,t){let n=this.getPresetColumns(e,t);return n!==null&&n.columnOrder.length>0}};exports.ColumnPresetStorage=e;
@@ -0,0 +1,123 @@
1
+ //#region src/lib/column-preset-storage.ts
2
+ var e = class {
3
+ static {
4
+ this.STORAGE_KEY = "thewrong.table_column_presets";
5
+ }
6
+ static isStorageAvailable() {
7
+ try {
8
+ let e = "__thewrong_storage_test__";
9
+ return localStorage.setItem(e, e), localStorage.removeItem(e), !0;
10
+ } catch {
11
+ return !1;
12
+ }
13
+ }
14
+ static getAllPresets() {
15
+ if (!this.isStorageAvailable()) return {};
16
+ try {
17
+ let e = localStorage.getItem(this.STORAGE_KEY);
18
+ if (!e) return {};
19
+ let t = JSON.parse(e);
20
+ return typeof t == "object" && t ? t : {};
21
+ } catch (e) {
22
+ return console.error("Failed to load presets:", e), {};
23
+ }
24
+ }
25
+ static saveAllPresets(e) {
26
+ if (!this.isStorageAvailable()) {
27
+ console.warn("localStorage is not available");
28
+ return;
29
+ }
30
+ try {
31
+ localStorage.setItem(this.STORAGE_KEY, JSON.stringify(e));
32
+ } catch (e) {
33
+ e.name === "QuotaExceededError" ? console.error("localStorage quota exceeded") : console.error("Failed to save presets:", e);
34
+ }
35
+ }
36
+ static getPagePresets(e) {
37
+ return this.getAllPresets()[e] || null;
38
+ }
39
+ static initializePagePresets(e) {
40
+ let t = {
41
+ activePreset: 1,
42
+ presets: {
43
+ 1: null,
44
+ 2: null,
45
+ 3: null
46
+ }
47
+ }, n = this.getAllPresets();
48
+ return n[e] || (n[e] = t, this.saveAllPresets(n)), n[e];
49
+ }
50
+ static getActivePreset(e) {
51
+ return this.getPagePresets(e)?.activePreset || 1;
52
+ }
53
+ static getPresetColumns(e, t) {
54
+ let n = this.getPagePresets(e);
55
+ if (!n) return null;
56
+ let r = n.presets[t];
57
+ return Array.isArray(r) ? {
58
+ columnOrder: r,
59
+ hiddenColumns: []
60
+ } : r ? {
61
+ columnOrder: r.columnOrder,
62
+ hiddenColumns: r.hiddenColumns ?? [],
63
+ columnWidths: r.columnWidths
64
+ } : null;
65
+ }
66
+ static getActivePresetColumns(e) {
67
+ let t = this.getActivePreset(e);
68
+ return this.getPresetColumns(e, t);
69
+ }
70
+ static savePreset(e, t, n) {
71
+ let r = Array.isArray(n) ? {
72
+ columnOrder: n,
73
+ hiddenColumns: []
74
+ } : n;
75
+ if (!Array.isArray(r.columnOrder) || r.columnOrder.length === 0) {
76
+ console.warn("Invalid column order:", r);
77
+ return;
78
+ }
79
+ let i = this.getAllPresets();
80
+ i[e] || this.initializePagePresets(e), i[e] || (i[e] = {
81
+ activePreset: 1,
82
+ presets: {
83
+ 1: null,
84
+ 2: null,
85
+ 3: null
86
+ }
87
+ }), i[e].presets[t] = {
88
+ columnOrder: [...r.columnOrder],
89
+ hiddenColumns: [...r.hiddenColumns || []],
90
+ ...r.columnWidths ? { columnWidths: { ...r.columnWidths } } : {}
91
+ }, this.saveAllPresets(i);
92
+ }
93
+ static setActivePreset(e, t) {
94
+ let n = this.getAllPresets();
95
+ n[e] || this.initializePagePresets(e), n[e] && (n[e].activePreset = t, this.saveAllPresets(n));
96
+ }
97
+ static clearPreset(e, t) {
98
+ let n = this.getAllPresets();
99
+ n[e] && (n[e].presets[t] = null, this.saveAllPresets(n));
100
+ }
101
+ static clearPagePresets(e) {
102
+ let t = this.getAllPresets();
103
+ t[e] && (delete t[e], this.saveAllPresets(t));
104
+ }
105
+ static migrateFromLegacyStorage(e, t) {
106
+ if (!this.isStorageAvailable()) return !1;
107
+ try {
108
+ if (this.getPagePresets(e)) return !1;
109
+ let n = localStorage.getItem(t);
110
+ if (!n) return !1;
111
+ let r = JSON.parse(n);
112
+ return !Array.isArray(r) || r.length === 0 ? !1 : (this.savePreset(e, 1, r), this.setActivePreset(e, 1), localStorage.removeItem(t), !0);
113
+ } catch (e) {
114
+ return console.error("Migration failed:", e), !1;
115
+ }
116
+ }
117
+ static hasPreset(e, t) {
118
+ let n = this.getPresetColumns(e, t);
119
+ return n !== null && n.columnOrder.length > 0;
120
+ }
121
+ };
122
+ //#endregion
123
+ export { e as ColumnPresetStorage };
@@ -0,0 +1,6 @@
1
+ export { overlayStack } from './overlay-stack.js';
2
+ export { cn, formatYearMonth } from './utils.js';
3
+ export { Portal } from './Portal.js';
4
+ export type { PortalProps } from './Portal.js';
5
+ export { ColumnPresetStorage } from './column-preset-storage.js';
6
+ export type { PresetNumber, ColumnPresetData, PagePresets, AllPresets, } from './column-preset-storage.js';
@@ -0,0 +1 @@
1
+ var e=[];function t(){if(e.length===0)return;let t=e[0];for(let n of e)n.priority>=t.priority&&(t=n);return t}var n={push(t,n=0){e.some(e=>e.id===t)||e.push({id:t,priority:n})},pop(t){let n=e.map(e=>e.id).lastIndexOf(t);n>=0&&e.splice(n,1)},isTop(e){return t()?.id===e},isEmpty(){return e.length===0}},r=`action-toast-overlay`,i=1e3;exports.ACTION_TOAST_OVERLAY_ID=r,exports.ACTION_TOAST_PRIORITY=i,exports.overlayStack=n;