@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 @@
1
+ const e=require("../../lib/utils.cjs"),t=require("../../node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs"),n=require("../loading-spinner/LoadingSpinner.cjs"),r=require("../table-checkbox/TableCheckbox.cjs"),i=require("./column-group-utils.cjs"),a=require("./components/SortableHeaderCell.cjs"),o=require("./components/SortHeader.cjs"),s=require("./hooks/sort-state.cjs"),ee=require("./hooks/useColumnResize.cjs"),te=require("../../hooks/useFillEmptyRows.cjs"),ne=require("../../hooks/useTableDragSelection.cjs"),re=require("./hooks/useTableSort.cjs"),c=require("./utils.cjs");let l=require("react"),u=require("react/jsx-runtime"),d=require("@dnd-kit/core"),f=require("@dnd-kit/sortable");var ie=({transform:e,draggingNodeRect:t,containerNodeRect:n})=>{let r={...e,y:0};if(!t||!n)return r;let i=n.left-t.left,a=n.right-t.right;return r.x=Math.min(Math.max(r.x,i),a),r},p=(0,l.forwardRef)((p,m)=>{let{data:h,columns:g,columnGroups:ae,rowHeight:_,loading:oe=!1,isFetching:v=!1,emptyMessage:se=`데이터가 없어요`,onRowClick:y,selectedRows:b=[],onRowSelect:x,enableRowSelection:S=!1,enableSelectAll:C=!1,rowCompare:ce,getRowId:le,enableSorting:w=!1,sortCycle:ue=`tri`,formatSortLabel:de,serverSideSorting:T=!1,onSortChange:fe,initialSort:pe,variant:me=`default`,size:he=`medium`,stickyHeader:E=!0,height:D,maxHeight:O,storageKey:ge,columnState:k,fillEmptyRows:A=!0,totalElements:j,footerSlot:_e,className:M=``,"data-testid":N,...P}=p,{sort:F,sortedData:I,handleSort:ve}=re.useTableSort({initialSort:pe,cycle:ue,serverSide:T,onSort:fe||void 0}),L=e=>!!(e.sortable&&(w||T)),R=e=>L(e)?s.ariaSort(s.sortDirectionFor(F,e.key)):void 0,z=e=>{if(!L(e))return(0,u.jsx)(`span`,{children:e.header});let t=s.sortDirectionFor(F,e.key),n=s.nextSort(F,e.key,ue)?.direction??null;return(0,u.jsx)(o.SortHeader,{current:t,label:de?.(e,t,n),onSort:()=>ve(e.key),children:e.header})},B=(0,l.useMemo)(()=>!w||T?h:I(h,(e,t)=>{let n=g.find(e=>e.key===t);if(n?.accessor){let r=n.accessor(e);return typeof r==`string`||typeof r==`number`?r:e[t]}return e[t]}),[h,w,T,F,I,g]),V=(0,l.useRef)(null),H=(0,l.useRef)(null),U=(0,l.useRef)(null),ye=(0,l.useRef)(null),W=!!k,be=(0,d.useSensors)((0,d.useSensor)(d.PointerSensor,{activationConstraint:{distance:5}}),(0,d.useSensor)(d.KeyboardSensor,{coordinateGetter:f.sortableKeyboardCoordinates})),G=(0,l.useMemo)(()=>i.buildColumnSlots(g,ae),[g,ae]),K=(0,l.useMemo)(()=>{if(!k)return G.filter(e=>!(e.kind===`column`&&e.leafColumns[0].hidden));let e=new Set(k.hiddenColumns);return i.applyColumnState(G,k.columnOrder,e)},[G,k]),q=(0,l.useMemo)(()=>i.flattenLeafColumns(K),[K]),J=(0,l.useMemo)(()=>i.hasGroupSlot(K),[K]),xe=(0,l.useMemo)(()=>new Map(G.map(e=>[e.key,e])),[G]),Se=e=>{let{active:t,over:n}=e;if(!k||!n||t.id===n.id)return;let r=xe.get(String(n.id));if(r?.kind===`column`&&r.leafColumns[0].excludeFromPreset)return;let i=k.columnOrder,a=i.indexOf(String(t.id)),o=i.indexOf(String(n.id));a===-1||o===-1||k.onColumnOrderChange((0,f.arrayMove)(i,a,o))},{handleMouseDown:Ce,handleDoubleClick:we,getColumnWidth:Y,measureRef:Te}=ee.useColumnResize({columns:q,data:B,getCellContent:(e,t)=>{let n=q.find(e=>e.key===t);return n?.accessor?n.accessor(e):e[t]},tableRef:V,...k?{controlledWidths:k.columnWidths,onColumnWidthsChange:k.onColumnWidthsChange}:{storageKey:ge}}),Ee=c.getTableBaseClasses(),De=c.getTableVariantClasses(me),Oe=c.getTableSizeClasses(he),ke=S&&C?48:0,Ae=(0,l.useMemo)(()=>q.reduce((e,t)=>{let n=Y(t.key,t.width),r=parseFloat(n);return e+(Number.isFinite(r)?r:0)},0)+ke,[q,Y,ke]),X=(0,l.useMemo)(()=>{let e={};return D&&(e.height=typeof D==`number`?`${D}px`:D),O&&(e.maxHeight=typeof O==`number`?`${O}px`:O),e},[D,O]),{emptyRowCount:je,measuredRowHeight:Me}=te.useFillEmptyRows({enabled:A,containerRef:H,theadRef:U,tbodyRef:ye,excludeRowsSelector:`tr:not([data-empty-row])`,remainingMode:`sum-real-rows`,deps:[B,q]}),Z=e=>!S||b.length===0?!1:ce?b.some(t=>ce(t,e)):b.some(t=>t===e),Ne=(0,l.useMemo)(()=>!S||!C||B.length===0?!1:B.every(e=>Z(e)),[S,C,B,Z]),Pe=()=>{!S||!x||(Ne?B.forEach(e=>{Z(e)&&x(e,!1)}):B.forEach(e=>{Z(e)||x(e,!0)}))},Q=S&&!!x&&!!le,$=ne.useTableDragSelection({rows:B,getRowId:le??(()=>-1),isSelected:e=>Z(e),setSelected:(e,t)=>x?.(e,t),enabled:Q,scrollContainerRef:H}),Fe=(t,n)=>{let r=[c.getStripedRowClasses(n)];return Z(t)&&r.push(c.getSelectedRowClasses()),y&&r.push(c.getHoverableRowClasses()),e.cn(r)};return oe?(0,u.jsx)(`div`,{ref:m,className:e.cn(`flex items-center justify-center p-8 flex-1`,M),style:X,"data-testid":N,...P,children:(0,u.jsx)(n.LoadingSpinner,{message:`데이터를 불러오는 중이에요...`,className:`min-h-0`})}):(0,u.jsxs)(`div`,{ref:m,className:e.cn(`isolate relative flex flex-col min-h-0 gap-4 md:gap-5 xl:gap-6`,M),style:X,"data-testid":N,...P,children:[(0,u.jsx)(`div`,{ref:Te,className:`absolute invisible whitespace-nowrap`,style:{top:`-9999px`,left:`-9999px`}}),(0,u.jsxs)(`div`,{className:`flex flex-1 flex-col min-h-0 gap-4 md:gap-5 xl:gap-6`,children:[(0,u.jsxs)(`div`,{className:`relative flex flex-1 flex-col min-h-0`,children:[(0,u.jsx)(`div`,{className:e.cn(`pointer-events-none absolute inset-0 z-30 flex items-center justify-center bg-bg-surface/60 backdrop-blur-[2px] transition-opacity duration-150`,v?`opacity-100`:`opacity-0`),...v?{role:`status`,"aria-live":`polite`}:{"aria-hidden":!0},children:(0,u.jsx)(n.LoadingSpinner,{message:``,className:`min-h-0`})}),(0,u.jsx)(`div`,{ref:H,className:`scrollbar-table overflow-auto flex-1 bg-bg-page`,children:B.length===0?(0,u.jsx)(`div`,{className:`flex items-center justify-center p-8 h-full`,children:(0,u.jsx)(`p`,{className:`text-fg-muted`,children:se})}):(0,u.jsx)(d.DndContext,{sensors:be,collisionDetection:d.closestCenter,onDragEnd:Se,modifiers:[ie],children:(0,u.jsxs)(`table`,{ref:V,className:e.cn(Ee,De,Oe),style:{tableLayout:`fixed`,minWidth:`100%`,width:`${Ae}px`},children:[(0,u.jsxs)(`colgroup`,{children:[S&&C&&(0,u.jsx)(`col`,{style:{width:`48px`}}),q.map(e=>(0,u.jsx)(`col`,{"data-col-key":e.key,style:{width:Y(e.key,e.width)}},e.key))]}),(0,u.jsxs)(`thead`,{ref:U,className:c.getTableHeaderClasses(),style:{position:E?`sticky`:`relative`,top:E?0:void 0,zIndex:E?20:void 0},children:[(0,u.jsxs)(`tr`,{children:[S&&C&&(0,u.jsx)(`th`,{rowSpan:J?2:1,className:e.cn(c.getTableHeaderCellClasses(),c.getColumnAlignClasses(`center`),`w-12 px-0`),children:(0,u.jsx)(`div`,{className:`flex items-center justify-center`,children:(0,u.jsx)(r.TableCheckbox,{checked:Ne,onChange:()=>Pe(),ariaLabel:`전체 선택`})})}),(0,u.jsx)(f.SortableContext,{items:K.map(e=>e.key),strategy:f.horizontalListSortingStrategy,children:K.map(n=>{if(n.kind===`group`)return(0,u.jsxs)(a.SortableHeaderCell,{id:n.key,disabled:!W,as:`th`,colSpan:n.leafColumns.length,className:e.cn(c.getTableHeaderCellClasses(),c.getColumnAlignClasses(`center`),`group/header-cell relative`,n.hideOnMobile&&`hidden md:table-cell`),children:[W&&(0,u.jsx)(`span`,{className:`absolute left-0.5 top-1/2 -translate-y-1/2 text-fg-subtle opacity-0 transition-opacity group-hover/header-cell:opacity-100`,"aria-hidden":`true`,children:(0,u.jsx)(t.GripVertical,{className:`h-3.5 w-3.5`})}),(0,u.jsx)(`div`,{className:`flex items-center justify-center w-full pr-1 pl-3 select-none`,children:(0,u.jsx)(`span`,{children:n.header})})]},n.key);let r=n.leafColumns[0],i=!W||r.excludeFromPreset===!0;return(0,u.jsxs)(a.SortableHeaderCell,{id:r.key,disabled:i,as:`th`,"aria-sort":R(r),hasSortButton:L(r),rowSpan:J?2:1,className:e.cn(c.getTableHeaderCellClasses(),c.getColumnAlignClasses(`center`),`group/header-cell relative`,r.sticky&&`sticky left-0 z-20 bg-bg-table-header`,r.hideOnMobile&&`hidden md:table-cell`),style:{width:Y(r.key,r.width),minWidth:r.minWidth||50},children:[!i&&(0,u.jsx)(`span`,{className:`absolute left-0.5 top-1/2 -translate-y-1/2 text-fg-subtle opacity-0 transition-opacity group-hover/header-cell:opacity-100`,"aria-hidden":`true`,children:(0,u.jsx)(t.GripVertical,{className:`h-3.5 w-3.5`})}),(0,u.jsx)(`div`,{className:`flex items-center justify-center w-full pr-1 pl-3 select-none`,children:z(r)}),r.excludeFromPreset!==!0&&(0,u.jsx)(`div`,{className:`group/resize absolute right-0 top-0 h-full w-3 cursor-col-resize z-50 flex items-center justify-center`,onPointerDown:e=>e.stopPropagation(),onMouseDown:e=>{e.preventDefault(),e.stopPropagation(),Ce(r.key,e)},onDoubleClick:e=>{e.preventDefault(),e.stopPropagation(),we(r.key,e)},onClick:e=>{e.preventDefault(),e.stopPropagation()},style:{touchAction:`none`},title:`드래그하여 너비 조절, 더블 클릭하여 자동 조절`,children:(0,u.jsx)(`span`,{"aria-hidden":`true`,className:`h-1/2 w-0.5 rounded-full bg-transparent transition-colors group-hover/header-cell:bg-border-default group-hover/resize:!bg-primary group-active/resize:!bg-primary-hover`})})]},r.key)})})]}),J&&(0,u.jsx)(`tr`,{children:K.filter(e=>e.kind===`group`).flatMap(e=>e.leafColumns).map(t=>(0,u.jsx)(`th`,{"aria-sort":R(t),className:e.cn(c.getTableHeaderCellClasses(),c.getColumnAlignClasses(t.align??`center`),t.hideOnMobile&&`hidden md:table-cell`),style:{width:Y(t.key,t.width),minWidth:t.minWidth||50},children:(0,u.jsx)(`div`,{className:`flex items-center justify-center w-full pr-1 pl-3 select-none`,children:z(t)})},t.key))})]}),(0,u.jsxs)(`tbody`,{ref:ye,children:[B.map((t,n)=>{let i=Z(t);return(0,u.jsxs)(`tr`,{className:Fe(t,n),onClick:()=>y?.(t,n),style:_?{height:`${_}px`}:void 0,children:[S&&C&&(0,u.jsx)(`td`,{className:e.cn(c.getTableCellClasses(),c.getColumnAlignClasses(`center`),`w-12 select-none`),onClick:e=>e.stopPropagation(),onMouseDown:Q?e=>{e.preventDefault(),$.onRowMouseDown(n)}:void 0,onMouseEnter:Q?()=>$.onRowMouseEnter(n):void 0,children:(0,u.jsx)(`div`,{className:`flex items-center justify-center`,children:(0,u.jsx)(r.TableCheckbox,{checked:i,onChange:e=>x?.(t,e),pointerEventsNone:Q,ariaLabel:`행 선택`})})}),q.map(n=>{let r=n.accessor?n.accessor(t):t[n.key];return(0,u.jsx)(`td`,{className:e.cn(c.getTableCellClasses(),c.getColumnAlignClasses(n.align),n.sticky&&`sticky left-0 z-10 bg-inherit`,n.hideOnMobile&&`hidden md:table-cell`),style:{width:Y(n.key,n.width),minWidth:n.minWidth||50,..._?{height:`${_}px`,maxHeight:`${_}px`,overflow:`hidden`}:{}},children:r},n.key)})]},n)}),A&&Array.from({length:je}).map((t,n)=>{let r=B.length+n,i=_??Me??void 0;return(0,u.jsxs)(`tr`,{"data-empty-row":!0,"aria-hidden":`true`,className:c.getStripedRowClasses(r),style:i?{height:`${i}px`}:void 0,children:[S&&C&&(0,u.jsx)(`td`,{className:e.cn(c.getTableCellClasses(),`w-12`),style:i?{height:`${i}px`}:void 0}),q.map(t=>(0,u.jsx)(`td`,{className:e.cn(c.getTableCellClasses(),t.hideOnMobile&&`hidden md:table-cell`),style:{width:Y(t.key,t.width),minWidth:t.minWidth||50,...i?{height:`${i}px`}:{}}},t.key))]},`empty-${n}`)})]})]})})})]}),_e??(j===void 0?null:(0,u.jsx)(`div`,{className:`flex justify-end shrink-0 text-sm text-fg-muted`,children:(0,u.jsxs)(`span`,{children:[`총 `,j.toLocaleString(),`건`]})}))]})]})});p.displayName=`Table`,exports.Table=p;
@@ -0,0 +1,13 @@
1
+ import { TableProps } from './types.js';
2
+ /**
3
+ * Table — 코어 테이블. 헤더(정렬/리사이즈/grip 드래그) + 본문(스트라이프/선택/sticky) + 컬럼 프리셋.
4
+ *
5
+ * 페이지네이션이 없는 조회 API 또는 페이지네이션 영역을 별도로 렌더하는 경우 사용.
6
+ * PaginatedTable은 이 컴포넌트를 wrap해서 footer(Pagination/PageJump/PageSize)를 추가.
7
+ * 클라이언트 정렬은 전달된 현재 페이지 데이터만 정렬한다. 서버 페이지네이션이면 serverSideSorting을 사용하고,
8
+ * 정렬 변경 시 페이지 초기화는 호출부에서 처리한다.
9
+ * 컬럼 너비 합이 컨테이너보다 작아 열이 늘어나면 브라우저가 남는 폭을 재분배하므로 드래그 이동량과 화면 변화량이 비례하지 않는다. 컬럼 합을 컨테이너 이상으로 지정한다(여백 컬럼이 필요하면 AccordionTable을 쓴다 — Table에는 여백 컬럼 옵션이 없다).
10
+ */
11
+ export declare const Table: <T>(props: TableProps<T> & {
12
+ ref?: React.ForwardedRef<HTMLDivElement>;
13
+ }) => React.ReactElement;
@@ -1,19 +1,22 @@
1
- import { GripVertical as e } from "../../node_modules/lucide-react/dist/esm/icons/grip-vertical.esm.js";
2
- import { LoadingSpinner as t } from "../loading-spinner/LoadingSpinner.esm.js";
3
- import { TableCheckbox as n } from "../table-checkbox/TableCheckbox.esm.js";
4
- import { applyColumnState as r, buildColumnSlots as i, flattenLeafColumns as a, hasGroupSlot as o } from "./column-group-utils.esm.js";
1
+ import { cn as e } from "../../lib/utils.esm.js";
2
+ import { GripVertical as t } from "../../node_modules/lucide-react/dist/esm/icons/grip-vertical.esm.js";
3
+ import { LoadingSpinner as n } from "../loading-spinner/LoadingSpinner.esm.js";
4
+ import { TableCheckbox as r } from "../table-checkbox/TableCheckbox.esm.js";
5
+ import { applyColumnState as i, buildColumnSlots as a, flattenLeafColumns as o, hasGroupSlot as ee } from "./column-group-utils.esm.js";
5
6
  import { SortableHeaderCell as s } from "./components/SortableHeaderCell.esm.js";
6
- import { useColumnResize as ee } from "./hooks/useColumnResize.esm.js";
7
- import { useFillEmptyRows as te } from "./hooks/useFillEmptyRows.esm.js";
8
- import { useTableDragSelection as ne } from "./hooks/useTableDragSelection.esm.js";
9
- import { useTableSort as re } from "./hooks/useTableSort.esm.js";
10
- import { getColumnAlignClasses as c, getHoverableRowClasses as ie, getSelectedRowClasses as ae, getStripedRowClasses as l, getTableBaseClasses as oe, getTableCellClasses as u, getTableHeaderCellClasses as d, getTableHeaderClasses as se, getTableSizeClasses as ce, getTableVariantClasses as le } from "./utils.esm.js";
7
+ import { SortHeader as te } from "./components/SortHeader.esm.js";
8
+ import { ariaSort as ne, nextSort as re, sortDirectionFor as ie } from "./hooks/sort-state.esm.js";
9
+ import { useColumnResize as ae } from "./hooks/useColumnResize.esm.js";
10
+ import { useFillEmptyRows as oe } from "../../hooks/useFillEmptyRows.esm.js";
11
+ import { useTableDragSelection as se } from "../../hooks/useTableDragSelection.esm.js";
12
+ import { useTableSort as ce } from "./hooks/useTableSort.esm.js";
13
+ import { getColumnAlignClasses as c, getHoverableRowClasses as le, getSelectedRowClasses as ue, getStripedRowClasses as l, getTableBaseClasses as de, getTableCellClasses as u, getTableHeaderCellClasses as d, getTableHeaderClasses as fe, getTableSizeClasses as pe, getTableVariantClasses as me } from "./utils.esm.js";
11
14
  import { forwardRef as f, useMemo as p, useRef as m } from "react";
12
15
  import { jsx as h, jsxs as g } from "react/jsx-runtime";
13
- import { DndContext as ue, KeyboardSensor as de, PointerSensor as fe, closestCenter as pe, useSensor as me, useSensors as he } from "@dnd-kit/core";
14
- import { SortableContext as ge, arrayMove as _e, horizontalListSortingStrategy as ve, sortableKeyboardCoordinates as ye } from "@dnd-kit/sortable";
16
+ import { DndContext as he, KeyboardSensor as ge, PointerSensor as _e, closestCenter as ve, useSensor as ye, useSensors as be } from "@dnd-kit/core";
17
+ import { SortableContext as xe, arrayMove as Se, horizontalListSortingStrategy as Ce, sortableKeyboardCoordinates as we } from "@dnd-kit/sortable";
15
18
  //#region src/components/table/table.tsx
16
- var be = ({ transform: e, draggingNodeRect: t, containerNodeRect: n }) => {
19
+ var Te = ({ transform: e, draggingNodeRect: t, containerNodeRect: n }) => {
17
20
  let r = {
18
21
  ...e,
19
22
  y: 0
@@ -22,11 +25,21 @@ var be = ({ transform: e, draggingNodeRect: t, containerNodeRect: n }) => {
22
25
  let i = n.left - t.left, a = n.right - t.right;
23
26
  return r.x = Math.min(Math.max(r.x, i), a), r;
24
27
  }, _ = f((f, _) => {
25
- let { data: v, columns: y, columnGroups: b, rowHeight: x, loading: xe = !1, isFetching: S = !1, emptyMessage: Se = "데이터가 없어요", onRowClick: C, selectedRows: w = [], onRowSelect: T, enableRowSelection: E = !1, enableSelectAll: D = !1, rowCompare: O, getRowId: k, enableSorting: A = !1, serverSideSorting: j = !1, onSortChange: Ce, initialSort: we, variant: Te = "default", size: Ee = "medium", stickyHeader: M = !0, height: N, maxHeight: P, storageKey: De, columnState: F, fillEmptyRows: I = !0, totalElements: L, footerSlot: Oe, className: R = "", "data-testid": z, ...B } = f, { sort: ke, sortedData: V } = re({
26
- initialSort: we,
27
- serverSide: j,
28
- onSort: Ce || void 0
29
- }), H = p(() => !A || j ? v : V(v, (e, t) => {
28
+ let { data: v, columns: y, columnGroups: b, rowHeight: x, loading: Ee = !1, isFetching: S = !1, emptyMessage: De = "데이터가 없어요", onRowClick: C, selectedRows: w = [], onRowSelect: T, enableRowSelection: E = !1, enableSelectAll: D = !1, rowCompare: O, getRowId: k, enableSorting: A = !1, sortCycle: j = "tri", formatSortLabel: Oe, serverSideSorting: M = !1, onSortChange: ke, initialSort: Ae, variant: je = "default", size: Me = "medium", stickyHeader: N = !0, height: P, maxHeight: F, storageKey: Ne, columnState: I, fillEmptyRows: L = !0, totalElements: R, footerSlot: Pe, className: z = "", "data-testid": Fe, ...Ie } = f, { sort: B, sortedData: Le, handleSort: Re } = ce({
29
+ initialSort: Ae,
30
+ cycle: j,
31
+ serverSide: M,
32
+ onSort: ke || void 0
33
+ }), V = (e) => !!(e.sortable && (A || M)), ze = (e) => V(e) ? ne(ie(B, e.key)) : void 0, Be = (e) => {
34
+ if (!V(e)) return /* @__PURE__ */ h("span", { children: e.header });
35
+ let t = ie(B, e.key), n = re(B, e.key, j)?.direction ?? null;
36
+ return /* @__PURE__ */ h(te, {
37
+ current: t,
38
+ label: Oe?.(e, t, n),
39
+ onSort: () => Re(e.key),
40
+ children: e.header
41
+ });
42
+ }, H = p(() => !A || M ? v : Le(v, (e, t) => {
30
43
  let n = y.find((e) => e.key === t);
31
44
  if (n?.accessor) {
32
45
  let r = n.accessor(e);
@@ -36,91 +49,91 @@ var be = ({ transform: e, draggingNodeRect: t, containerNodeRect: n }) => {
36
49
  }), [
37
50
  v,
38
51
  A,
39
- j,
40
- ke,
41
- V,
52
+ M,
53
+ B,
54
+ Le,
42
55
  y
43
- ]), U = m(null), W = m(null), G = m(null), Ae = m(null), K = !!F, je = he(me(fe, { activationConstraint: { distance: 5 } }), me(de, { coordinateGetter: ye })), q = p(() => i(y, b), [y, b]), J = p(() => {
44
- if (!F) return q.filter((e) => !(e.kind === "column" && e.leafColumns[0].hidden));
45
- let e = new Set(F.hiddenColumns);
46
- return r(q, F.columnOrder, e);
47
- }, [q, F]), Y = p(() => a(J), [J]), X = p(() => o(J), [J]), Me = p(() => new Map(q.map((e) => [e.key, e])), [q]), Ne = (e) => {
56
+ ]), Ve = m(null), U = m(null), He = m(null), Ue = m(null), W = !!I, We = be(ye(_e, { activationConstraint: { distance: 5 } }), ye(ge, { coordinateGetter: we })), G = p(() => a(y, b), [y, b]), K = p(() => {
57
+ if (!I) return G.filter((e) => !(e.kind === "column" && e.leafColumns[0].hidden));
58
+ let e = new Set(I.hiddenColumns);
59
+ return i(G, I.columnOrder, e);
60
+ }, [G, I]), q = p(() => o(K), [K]), J = p(() => ee(K), [K]), Ge = p(() => new Map(G.map((e) => [e.key, e])), [G]), Ke = (e) => {
48
61
  let { active: t, over: n } = e;
49
- if (!F || !n || t.id === n.id) return;
50
- let r = Me.get(String(n.id));
62
+ if (!I || !n || t.id === n.id) return;
63
+ let r = Ge.get(String(n.id));
51
64
  if (r?.kind === "column" && r.leafColumns[0].excludeFromPreset) return;
52
- let i = F.columnOrder, a = i.indexOf(String(t.id)), o = i.indexOf(String(n.id));
53
- a === -1 || o === -1 || F.onColumnOrderChange(_e(i, a, o));
54
- }, { handleMouseDown: Pe, handleDoubleClick: Fe, getColumnWidth: Z, measureRef: Ie } = ee({
55
- columns: Y,
65
+ let i = I.columnOrder, a = i.indexOf(String(t.id)), o = i.indexOf(String(n.id));
66
+ a === -1 || o === -1 || I.onColumnOrderChange(Se(i, a, o));
67
+ }, { handleMouseDown: qe, handleDoubleClick: Je, getColumnWidth: Y, measureRef: Ye } = ae({
68
+ columns: q,
56
69
  data: H,
57
70
  getCellContent: (e, t) => {
58
- let n = Y.find((e) => e.key === t);
71
+ let n = q.find((e) => e.key === t);
59
72
  return n?.accessor ? n.accessor(e) : e[t];
60
73
  },
61
- tableRef: U,
62
- ...F ? {
63
- controlledWidths: F.columnWidths,
64
- onColumnWidthsChange: F.onColumnWidthsChange
65
- } : { storageKey: De }
66
- }), Le = oe(), Re = le(Te), ze = ce(Ee), Be = E && D ? 48 : 0, Ve = p(() => Y.reduce((e, t) => {
67
- let n = Z(t.key, t.width), r = parseFloat(n);
74
+ tableRef: Ve,
75
+ ...I ? {
76
+ controlledWidths: I.columnWidths,
77
+ onColumnWidthsChange: I.onColumnWidthsChange
78
+ } : { storageKey: Ne }
79
+ }), Xe = de(), Ze = me(je), Qe = pe(Me), $e = E && D ? 48 : 0, et = p(() => q.reduce((e, t) => {
80
+ let n = Y(t.key, t.width), r = parseFloat(n);
68
81
  return e + (Number.isFinite(r) ? r : 0);
69
- }, 0) + Be, [
82
+ }, 0) + $e, [
83
+ q,
70
84
  Y,
71
- Z,
72
- Be
73
- ]), He = p(() => {
85
+ $e
86
+ ]), X = p(() => {
74
87
  let e = {};
75
- return N && (e.height = typeof N == "number" ? `${N}px` : N), P && (e.maxHeight = typeof P == "number" ? `${P}px` : P), e;
76
- }, [N, P]), { emptyRowCount: Ue, measuredRowHeight: We } = te({
77
- enabled: I,
78
- containerRef: W,
79
- theadRef: G,
80
- tbodyRef: Ae,
88
+ return P && (e.height = typeof P == "number" ? `${P}px` : P), F && (e.maxHeight = typeof F == "number" ? `${F}px` : F), e;
89
+ }, [P, F]), { emptyRowCount: tt, measuredRowHeight: nt } = oe({
90
+ enabled: L,
91
+ containerRef: U,
92
+ theadRef: He,
93
+ tbodyRef: Ue,
81
94
  excludeRowsSelector: "tr:not([data-empty-row])",
82
95
  remainingMode: "sum-real-rows",
83
- deps: [H, Y]
84
- }), Q = (e) => !E || w.length === 0 ? !1 : O ? w.some((t) => O(t, e)) : w.some((t) => t === e), Ge = p(() => !E || !D || H.length === 0 ? !1 : H.every((e) => Q(e)), [
96
+ deps: [H, q]
97
+ }), Z = (e) => !E || w.length === 0 ? !1 : O ? w.some((t) => O(t, e)) : w.some((t) => t === e), rt = p(() => !E || !D || H.length === 0 ? !1 : H.every((e) => Z(e)), [
85
98
  E,
86
99
  D,
87
100
  H,
88
- Q
89
- ]), Ke = () => {
90
- !E || !T || (Ge ? H.forEach((e) => {
91
- Q(e) && T(e, !1);
101
+ Z
102
+ ]), it = () => {
103
+ !E || !T || (rt ? H.forEach((e) => {
104
+ Z(e) && T(e, !1);
92
105
  }) : H.forEach((e) => {
93
- Q(e) || T(e, !0);
106
+ Z(e) || T(e, !0);
94
107
  }));
95
- }, $ = E && !!T && !!k, qe = ne({
108
+ }, Q = E && !!T && !!k, $ = se({
96
109
  rows: H,
97
110
  getRowId: k ?? (() => -1),
98
- isSelected: (e) => Q(e),
111
+ isSelected: (e) => Z(e),
99
112
  setSelected: (e, t) => T?.(e, t),
100
- enabled: $,
101
- scrollContainerRef: W
102
- }), Je = (e, t) => {
103
- let n = [l(t)];
104
- return Q(e) && n.push(ae()), C && n.push(ie()), n.join(" ");
113
+ enabled: Q,
114
+ scrollContainerRef: U
115
+ }), at = (t, n) => {
116
+ let r = [l(n)];
117
+ return Z(t) && r.push(ue()), C && r.push(le()), e(r);
105
118
  };
106
- return xe ? /* @__PURE__ */ h("div", {
119
+ return Ee ? /* @__PURE__ */ h("div", {
107
120
  ref: _,
108
- className: `flex items-center justify-center p-8 flex-1 ${R}`,
109
- style: He,
110
- "data-testid": z,
111
- ...B,
112
- children: /* @__PURE__ */ h(t, {
121
+ className: e("flex items-center justify-center p-8 flex-1", z),
122
+ style: X,
123
+ "data-testid": Fe,
124
+ ...Ie,
125
+ children: /* @__PURE__ */ h(n, {
113
126
  message: "데이터를 불러오는 중이에요...",
114
127
  className: "min-h-0"
115
128
  })
116
129
  }) : /* @__PURE__ */ g("div", {
117
130
  ref: _,
118
- className: `relative flex flex-col min-h-0 gap-4 md:gap-5 xl:gap-6 ${R}`,
119
- style: He,
120
- "data-testid": z,
121
- ...B,
131
+ className: e("isolate relative flex flex-col min-h-0 gap-4 md:gap-5 xl:gap-6", z),
132
+ style: X,
133
+ "data-testid": Fe,
134
+ ...Ie,
122
135
  children: [/* @__PURE__ */ h("div", {
123
- ref: Ie,
136
+ ref: Ye,
124
137
  className: "absolute invisible whitespace-nowrap",
125
138
  style: {
126
139
  top: "-9999px",
@@ -131,109 +144,111 @@ var be = ({ transform: e, draggingNodeRect: t, containerNodeRect: n }) => {
131
144
  children: [/* @__PURE__ */ g("div", {
132
145
  className: "relative flex flex-1 flex-col min-h-0",
133
146
  children: [/* @__PURE__ */ h("div", {
134
- className: `pointer-events-none absolute inset-0 z-30 flex items-center justify-center bg-white/50 backdrop-blur-[2px] transition-opacity duration-150 dark:bg-neutral-900/50 ${S ? "opacity-100" : "opacity-0"}`,
147
+ className: e("pointer-events-none absolute inset-0 z-30 flex items-center justify-center bg-bg-surface/60 backdrop-blur-[2px] transition-opacity duration-150", S ? "opacity-100" : "opacity-0"),
135
148
  ...S ? {
136
149
  role: "status",
137
150
  "aria-live": "polite"
138
151
  } : { "aria-hidden": !0 },
139
- children: /* @__PURE__ */ h(t, {
152
+ children: /* @__PURE__ */ h(n, {
140
153
  message: "",
141
154
  className: "min-h-0"
142
155
  })
143
156
  }), /* @__PURE__ */ h("div", {
144
- ref: W,
145
- className: "scrollbar-table overflow-auto flex-1 bg-[#f9fafb] dark:bg-slate-900/50",
157
+ ref: U,
158
+ className: "scrollbar-table overflow-auto flex-1 bg-bg-page",
146
159
  children: H.length === 0 ? /* @__PURE__ */ h("div", {
147
160
  className: "flex items-center justify-center p-8 h-full",
148
161
  children: /* @__PURE__ */ h("p", {
149
- className: "text-neutral-600 dark:text-neutral-400",
150
- children: Se
162
+ className: "text-fg-muted",
163
+ children: De
151
164
  })
152
- }) : /* @__PURE__ */ h(ue, {
153
- sensors: je,
154
- collisionDetection: pe,
155
- onDragEnd: Ne,
156
- modifiers: [be],
165
+ }) : /* @__PURE__ */ h(he, {
166
+ sensors: We,
167
+ collisionDetection: ve,
168
+ onDragEnd: Ke,
169
+ modifiers: [Te],
157
170
  children: /* @__PURE__ */ g("table", {
158
- ref: U,
159
- className: `${Le} ${Re} ${ze}`,
171
+ ref: Ve,
172
+ className: e(Xe, Ze, Qe),
160
173
  style: {
161
174
  tableLayout: "fixed",
162
175
  minWidth: "100%",
163
- width: `${Ve}px`
176
+ width: `${et}px`
164
177
  },
165
178
  children: [
166
- /* @__PURE__ */ g("colgroup", { children: [E && D && /* @__PURE__ */ h("col", { style: { width: "48px" } }), Y.map((e) => /* @__PURE__ */ h("col", {
179
+ /* @__PURE__ */ g("colgroup", { children: [E && D && /* @__PURE__ */ h("col", { style: { width: "48px" } }), q.map((e) => /* @__PURE__ */ h("col", {
167
180
  "data-col-key": e.key,
168
- style: { width: Z(e.key, e.width) }
181
+ style: { width: Y(e.key, e.width) }
169
182
  }, e.key))] }),
170
183
  /* @__PURE__ */ g("thead", {
171
- ref: G,
172
- className: se(),
184
+ ref: He,
185
+ className: fe(),
173
186
  style: {
174
- position: M ? "sticky" : "relative",
175
- top: M ? 0 : void 0,
176
- zIndex: M ? 10 : void 0
187
+ position: N ? "sticky" : "relative",
188
+ top: N ? 0 : void 0,
189
+ zIndex: N ? 20 : void 0
177
190
  },
178
191
  children: [/* @__PURE__ */ g("tr", { children: [E && D && /* @__PURE__ */ h("th", {
179
- rowSpan: X ? 2 : 1,
180
- className: `${d()} ${c("center")} w-12 px-0`,
192
+ rowSpan: J ? 2 : 1,
193
+ className: e(d(), c("center"), "w-12 px-0"),
181
194
  children: /* @__PURE__ */ h("div", {
182
195
  className: "flex items-center justify-center",
183
- children: /* @__PURE__ */ h(n, {
184
- checked: Ge,
185
- onChange: () => Ke(),
196
+ children: /* @__PURE__ */ h(r, {
197
+ checked: rt,
198
+ onChange: () => it(),
186
199
  ariaLabel: "전체 선택"
187
200
  })
188
201
  })
189
- }), /* @__PURE__ */ h(ge, {
190
- items: J.map((e) => e.key),
191
- strategy: ve,
192
- children: J.map((t) => {
193
- if (t.kind === "group") return /* @__PURE__ */ g(s, {
194
- id: t.key,
195
- disabled: !K,
202
+ }), /* @__PURE__ */ h(xe, {
203
+ items: K.map((e) => e.key),
204
+ strategy: Ce,
205
+ children: K.map((n) => {
206
+ if (n.kind === "group") return /* @__PURE__ */ g(s, {
207
+ id: n.key,
208
+ disabled: !W,
196
209
  as: "th",
197
- colSpan: t.leafColumns.length,
198
- className: `${d()} ${c("center")} group/header-cell ${t.hideOnMobile ? "hidden md:table-cell" : ""} relative`,
199
- children: [K && /* @__PURE__ */ h("span", {
200
- className: "absolute left-0.5 top-1/2 -translate-y-1/2 text-text-tertiary opacity-0 transition-opacity group-hover/header-cell:opacity-100",
210
+ colSpan: n.leafColumns.length,
211
+ className: e(d(), c("center"), "group/header-cell relative", n.hideOnMobile && "hidden md:table-cell"),
212
+ children: [W && /* @__PURE__ */ h("span", {
213
+ className: "absolute left-0.5 top-1/2 -translate-y-1/2 text-fg-subtle opacity-0 transition-opacity group-hover/header-cell:opacity-100",
201
214
  "aria-hidden": "true",
202
- children: /* @__PURE__ */ h(e, { className: "h-3.5 w-3.5" })
215
+ children: /* @__PURE__ */ h(t, { className: "h-3.5 w-3.5" })
203
216
  }), /* @__PURE__ */ h("div", {
204
217
  className: "flex items-center justify-center w-full pr-1 pl-3 select-none",
205
- children: /* @__PURE__ */ h("span", { children: t.header })
218
+ children: /* @__PURE__ */ h("span", { children: n.header })
206
219
  })]
207
- }, t.key);
208
- let n = t.leafColumns[0], r = !K || n.excludeFromPreset === !0;
220
+ }, n.key);
221
+ let r = n.leafColumns[0], i = !W || r.excludeFromPreset === !0;
209
222
  return /* @__PURE__ */ g(s, {
210
- id: n.key,
211
- disabled: r,
223
+ id: r.key,
224
+ disabled: i,
212
225
  as: "th",
213
- rowSpan: X ? 2 : 1,
214
- className: `${d()} ${c("center")} group/header-cell ${n.sticky ? "sticky left-0 z-20 bg-bg-base-secondary" : ""} ${n.hideOnMobile ? "hidden md:table-cell" : ""} relative`,
226
+ "aria-sort": ze(r),
227
+ hasSortButton: V(r),
228
+ rowSpan: J ? 2 : 1,
229
+ className: e(d(), c("center"), "group/header-cell relative", r.sticky && "sticky left-0 z-20 bg-bg-table-header", r.hideOnMobile && "hidden md:table-cell"),
215
230
  style: {
216
- width: Z(n.key, n.width),
217
- minWidth: n.minWidth || 50
231
+ width: Y(r.key, r.width),
232
+ minWidth: r.minWidth || 50
218
233
  },
219
234
  children: [
220
- !r && /* @__PURE__ */ h("span", {
221
- className: "absolute left-0.5 top-1/2 -translate-y-1/2 text-text-tertiary opacity-0 transition-opacity group-hover/header-cell:opacity-100",
235
+ !i && /* @__PURE__ */ h("span", {
236
+ className: "absolute left-0.5 top-1/2 -translate-y-1/2 text-fg-subtle opacity-0 transition-opacity group-hover/header-cell:opacity-100",
222
237
  "aria-hidden": "true",
223
- children: /* @__PURE__ */ h(e, { className: "h-3.5 w-3.5" })
238
+ children: /* @__PURE__ */ h(t, { className: "h-3.5 w-3.5" })
224
239
  }),
225
240
  /* @__PURE__ */ h("div", {
226
241
  className: "flex items-center justify-center w-full pr-1 pl-3 select-none",
227
- children: /* @__PURE__ */ h("span", { children: n.header })
242
+ children: Be(r)
228
243
  }),
229
- n.excludeFromPreset !== !0 && /* @__PURE__ */ h("div", {
244
+ r.excludeFromPreset !== !0 && /* @__PURE__ */ h("div", {
230
245
  className: "group/resize absolute right-0 top-0 h-full w-3 cursor-col-resize z-50 flex items-center justify-center",
231
246
  onPointerDown: (e) => e.stopPropagation(),
232
247
  onMouseDown: (e) => {
233
- e.preventDefault(), e.stopPropagation(), Pe(n.key, e);
248
+ e.preventDefault(), e.stopPropagation(), qe(r.key, e);
234
249
  },
235
250
  onDoubleClick: (e) => {
236
- e.preventDefault(), e.stopPropagation(), Fe(n.key, e);
251
+ e.preventDefault(), e.stopPropagation(), Je(r.key, e);
237
252
  },
238
253
  onClick: (e) => {
239
254
  e.preventDefault(), e.stopPropagation();
@@ -242,95 +257,96 @@ var be = ({ transform: e, draggingNodeRect: t, containerNodeRect: n }) => {
242
257
  title: "드래그하여 너비 조절, 더블 클릭하여 자동 조절",
243
258
  children: /* @__PURE__ */ h("span", {
244
259
  "aria-hidden": "true",
245
- className: "h-1/2 w-0.5 rounded-full bg-transparent transition-colors group-hover/header-cell:bg-text-tertiary group-hover/resize:!bg-primary-500 group-active/resize:!bg-primary-600"
260
+ className: "h-1/2 w-0.5 rounded-full bg-transparent transition-colors group-hover/header-cell:bg-border-default group-hover/resize:!bg-primary group-active/resize:!bg-primary-hover"
246
261
  })
247
262
  })
248
263
  ]
249
- }, n.key);
264
+ }, r.key);
250
265
  })
251
- })] }), X && /* @__PURE__ */ h("tr", { children: J.filter((e) => e.kind === "group").flatMap((e) => e.leafColumns).map((e) => /* @__PURE__ */ h("th", {
252
- className: `${d()} ${c(e.align ?? "center")} ${e.hideOnMobile ? "hidden md:table-cell" : ""}`,
266
+ })] }), J && /* @__PURE__ */ h("tr", { children: K.filter((e) => e.kind === "group").flatMap((e) => e.leafColumns).map((t) => /* @__PURE__ */ h("th", {
267
+ "aria-sort": ze(t),
268
+ className: e(d(), c(t.align ?? "center"), t.hideOnMobile && "hidden md:table-cell"),
253
269
  style: {
254
- width: Z(e.key, e.width),
255
- minWidth: e.minWidth || 50
270
+ width: Y(t.key, t.width),
271
+ minWidth: t.minWidth || 50
256
272
  },
257
273
  children: /* @__PURE__ */ h("div", {
258
274
  className: "flex items-center justify-center w-full pr-1 pl-3 select-none",
259
- children: /* @__PURE__ */ h("span", { children: e.header })
275
+ children: Be(t)
260
276
  })
261
- }, e.key)) })]
277
+ }, t.key)) })]
262
278
  }),
263
279
  /* @__PURE__ */ g("tbody", {
264
- ref: Ae,
265
- children: [H.map((e, t) => {
266
- let r = Q(e);
280
+ ref: Ue,
281
+ children: [H.map((t, n) => {
282
+ let i = Z(t);
267
283
  return /* @__PURE__ */ g("tr", {
268
- className: Je(e, t),
269
- onClick: () => C?.(e, t),
284
+ className: at(t, n),
285
+ onClick: () => C?.(t, n),
270
286
  style: x ? { height: `${x}px` } : void 0,
271
287
  children: [E && D && /* @__PURE__ */ h("td", {
272
- className: `${u()} ${c("center")} w-12 select-none`,
288
+ className: e(u(), c("center"), "w-12 select-none"),
273
289
  onClick: (e) => e.stopPropagation(),
274
- onMouseDown: $ ? (e) => {
275
- e.preventDefault(), qe.onRowMouseDown(t);
290
+ onMouseDown: Q ? (e) => {
291
+ e.preventDefault(), $.onRowMouseDown(n);
276
292
  } : void 0,
277
- onMouseEnter: $ ? () => qe.onRowMouseEnter(t) : void 0,
293
+ onMouseEnter: Q ? () => $.onRowMouseEnter(n) : void 0,
278
294
  children: /* @__PURE__ */ h("div", {
279
295
  className: "flex items-center justify-center",
280
- children: /* @__PURE__ */ h(n, {
281
- checked: r,
282
- onChange: (t) => T?.(e, t),
283
- pointerEventsNone: $,
296
+ children: /* @__PURE__ */ h(r, {
297
+ checked: i,
298
+ onChange: (e) => T?.(t, e),
299
+ pointerEventsNone: Q,
284
300
  ariaLabel: "행 선택"
285
301
  })
286
302
  })
287
- }), Y.map((t) => {
288
- let n = t.accessor ? t.accessor(e) : e[t.key];
303
+ }), q.map((n) => {
304
+ let r = n.accessor ? n.accessor(t) : t[n.key];
289
305
  return /* @__PURE__ */ h("td", {
290
- className: `${u()} ${c(t.align)} ${t.sticky ? "sticky left-0 z-10 bg-inherit" : ""} ${t.hideOnMobile ? "hidden md:table-cell" : ""}`,
306
+ className: e(u(), c(n.align), n.sticky && "sticky left-0 z-10 bg-inherit", n.hideOnMobile && "hidden md:table-cell"),
291
307
  style: {
292
- width: Z(t.key, t.width),
293
- minWidth: t.minWidth || 50,
308
+ width: Y(n.key, n.width),
309
+ minWidth: n.minWidth || 50,
294
310
  ...x ? {
295
311
  height: `${x}px`,
296
312
  maxHeight: `${x}px`,
297
313
  overflow: "hidden"
298
314
  } : {}
299
315
  },
300
- children: n
301
- }, t.key);
316
+ children: r
317
+ }, n.key);
302
318
  })]
303
- }, t);
304
- }), I && Array.from({ length: Ue }).map((e, t) => {
305
- let n = H.length + t, r = x ?? We ?? void 0;
319
+ }, n);
320
+ }), L && Array.from({ length: tt }).map((t, n) => {
321
+ let r = H.length + n, i = x ?? nt ?? void 0;
306
322
  return /* @__PURE__ */ g("tr", {
307
323
  "data-empty-row": !0,
308
324
  "aria-hidden": "true",
309
- className: l(n),
310
- style: r ? { height: `${r}px` } : void 0,
325
+ className: l(r),
326
+ style: i ? { height: `${i}px` } : void 0,
311
327
  children: [E && D && /* @__PURE__ */ h("td", {
312
- className: `${u()} w-12`,
313
- style: r ? { height: `${r}px` } : void 0
314
- }), Y.map((e) => /* @__PURE__ */ h("td", {
315
- className: `${u()} ${e.hideOnMobile ? "hidden md:table-cell" : ""}`,
328
+ className: e(u(), "w-12"),
329
+ style: i ? { height: `${i}px` } : void 0
330
+ }), q.map((t) => /* @__PURE__ */ h("td", {
331
+ className: e(u(), t.hideOnMobile && "hidden md:table-cell"),
316
332
  style: {
317
- width: Z(e.key, e.width),
318
- minWidth: e.minWidth || 50,
319
- ...r ? { height: `${r}px` } : {}
333
+ width: Y(t.key, t.width),
334
+ minWidth: t.minWidth || 50,
335
+ ...i ? { height: `${i}px` } : {}
320
336
  }
321
- }, e.key))]
322
- }, `empty-${t}`);
337
+ }, t.key))]
338
+ }, `empty-${n}`);
323
339
  })]
324
340
  })
325
341
  ]
326
342
  })
327
343
  })
328
344
  })]
329
- }), Oe ?? (L === void 0 ? null : /* @__PURE__ */ h("div", {
330
- className: "flex justify-end shrink-0 text-sm text-neutral-600 dark:text-neutral-300",
345
+ }), Pe ?? (R === void 0 ? null : /* @__PURE__ */ h("div", {
346
+ className: "flex justify-end shrink-0 text-sm text-fg-muted",
331
347
  children: /* @__PURE__ */ g("span", { children: [
332
348
  "총 ",
333
- L.toLocaleString(),
349
+ R.toLocaleString(),
334
350
  "건"
335
351
  ] })
336
352
  }))]
@@ -60,12 +60,11 @@ export interface TableColumn<T> {
60
60
  */
61
61
  sortable?: boolean;
62
62
  /**
63
- * 컬럼 정렬 방향
64
- * @default null
63
+ * @deprecated 무시됨. 정렬은 Table의 enableSorting/serverSideSorting과 useTableSort로 설정한다.
65
64
  */
66
65
  sortDirection?: SortDirection;
67
66
  /**
68
- * 컬럼 정렬 변경 콜백
67
+ * @deprecated 무시됨. 정렬은 Table의 enableSorting/serverSideSorting과 useTableSort로 설정한다.
69
68
  */
70
69
  onSort?: (direction: SortDirection) => void;
71
70
  /**
@@ -206,10 +205,18 @@ export interface TableCommonProps<T> {
206
205
  */
207
206
  getRowId?: (row: T) => string | number;
208
207
  /**
209
- * 정렬 사용 여부 (클라이언트 사이드 정렬)
208
+ * 정렬 사용 여부 (클라이언트 사이드 정렬). 전달된 현재 페이지 데이터만 정렬한다.
209
+ * 서버 페이지네이션이면 serverSideSorting을 사용하고, 정렬 변경 시 페이지 초기화는 호출부에서 처리한다.
210
210
  * @default false
211
211
  */
212
212
  enableSorting?: boolean;
213
+ /** 정렬 순서. 기본 tri(오름차순 → 내림차순 → 해제), toggle은 두 방향만 순환한다. */
214
+ sortCycle?: "tri" | "toggle";
215
+ /**
216
+ * 정렬 버튼 이름을 지정한다. 기본값은 헤더 텍스트이며 정렬 상태는 헤더의 aria-sort로 전달한다.
217
+ * 보이는 헤더 텍스트가 있으면 반환하는 이름에 그 텍스트를 포함한다(WCAG 2.5.3).
218
+ */
219
+ formatSortLabel?: (column: TableColumn<T>, current: SortDirection, next: SortDirection) => string;
213
220
  /**
214
221
  * 서버 사이드 정렬 사용 여부
215
222
  * @default false