@thewrong/ui 0.1.0 → 0.2.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 (256) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs.js +1 -0
  2. package/dist/components/_shared/form-size-tokens.cjs.js +1 -0
  3. package/dist/components/_shared/form-size-tokens.esm.js +29 -0
  4. package/dist/components/action-toast/ActionToast.cjs.js +1 -0
  5. package/dist/components/action-toast/ActionToast.esm.js +228 -0
  6. package/dist/components/animated-height/AnimatedHeight.cjs.js +1 -0
  7. package/dist/components/animated-height/AnimatedHeight.esm.js +36 -0
  8. package/dist/components/badge/Badge.cjs.js +1 -0
  9. package/dist/components/badge/Badge.esm.js +30 -0
  10. package/dist/components/badge/utils.cjs.js +1 -0
  11. package/dist/components/badge/utils.esm.js +38 -0
  12. package/dist/components/button/Button.cjs.js +1 -0
  13. package/dist/components/button/Button.esm.js +84 -0
  14. package/dist/components/button/utils.cjs.js +1 -0
  15. package/dist/components/button/utils.esm.js +38 -0
  16. package/dist/components/checkbox/Checkbox.cjs.js +1 -0
  17. package/dist/components/checkbox/Checkbox.esm.js +68 -0
  18. package/dist/components/checkbox/utils.cjs.js +1 -0
  19. package/dist/components/checkbox/utils.esm.js +44 -0
  20. package/dist/components/collapsible/Collapsible.cjs.js +1 -0
  21. package/dist/components/collapsible/Collapsible.esm.js +19 -0
  22. package/dist/components/date-input/DateInput.cjs.js +1 -0
  23. package/dist/components/date-input/DateInput.esm.js +39 -0
  24. package/dist/components/date-picker/date-picker.cjs.js +1 -0
  25. package/dist/components/date-picker/date-picker.esm.js +231 -0
  26. package/dist/components/date-picker/date-range-picker.cjs.js +1 -0
  27. package/dist/components/date-picker/date-range-picker.esm.js +287 -0
  28. package/dist/components/date-picker/month-picker.cjs.js +1 -0
  29. package/dist/components/date-picker/month-picker.esm.js +147 -0
  30. package/dist/components/drawer/Drawer.cjs.js +1 -0
  31. package/dist/components/drawer/Drawer.esm.js +113 -0
  32. package/dist/components/info-tooltip/InfoTooltip.cjs.js +1 -0
  33. package/dist/components/info-tooltip/InfoTooltip.esm.js +24 -0
  34. package/dist/components/input/Input.cjs.js +1 -0
  35. package/dist/components/input/Input.esm.js +95 -0
  36. package/dist/components/input/PasswordInput.cjs.js +1 -0
  37. package/dist/components/input/PasswordInput.esm.js +29 -0
  38. package/dist/components/input/format.cjs.js +1 -0
  39. package/dist/components/input/format.esm.js +33 -0
  40. package/dist/components/input/utils.cjs.js +1 -0
  41. package/dist/components/input/utils.esm.js +23 -0
  42. package/dist/components/loading-spinner/LoadingSpinner.cjs.js +1 -0
  43. package/dist/components/loading-spinner/LoadingSpinner.esm.js +47 -0
  44. package/dist/components/modal/Modal.cjs.js +1 -0
  45. package/dist/components/modal/Modal.esm.js +137 -0
  46. package/dist/components/modal/ModalSubView.cjs.js +1 -0
  47. package/dist/components/modal/ModalSubView.esm.js +91 -0
  48. package/dist/components/modal/StandardModal.cjs.js +1 -0
  49. package/dist/components/modal/StandardModal.esm.js +54 -0
  50. package/dist/components/page-title/PageTitle.cjs.js +1 -0
  51. package/dist/components/page-title/PageTitle.esm.js +16 -0
  52. package/dist/components/popover/Popover.cjs.js +1 -0
  53. package/dist/components/popover/Popover.esm.js +57 -0
  54. package/dist/components/search-box/ExactMatchToggle.cjs.js +1 -0
  55. package/dist/components/search-box/ExactMatchToggle.esm.js +27 -0
  56. package/dist/components/search-box/SearchBox.cjs.js +1 -0
  57. package/dist/components/search-box/SearchBox.esm.js +154 -0
  58. package/dist/components/search-box/SearchBoxChips.cjs.js +1 -0
  59. package/dist/components/search-box/SearchBoxChips.esm.js +36 -0
  60. package/dist/components/search-box/SearchBoxDateRange.cjs.js +1 -0
  61. package/dist/components/search-box/SearchBoxDateRange.esm.js +57 -0
  62. package/dist/components/search-box/SearchBoxDateSingle.cjs.js +1 -0
  63. package/dist/components/search-box/SearchBoxDateSingle.esm.js +37 -0
  64. package/dist/components/search-box/SearchBoxField.cjs.js +1 -0
  65. package/dist/components/search-box/SearchBoxField.esm.js +48 -0
  66. package/dist/components/search-box/SearchBoxFloatingInput.cjs.js +1 -0
  67. package/dist/components/search-box/SearchBoxFloatingInput.esm.js +38 -0
  68. package/dist/components/search-box/SearchBoxFloatingSelect.cjs.js +1 -0
  69. package/dist/components/search-box/SearchBoxFloatingSelect.esm.js +74 -0
  70. package/dist/components/search-box/SearchBoxMonth.cjs.js +1 -0
  71. package/dist/components/search-box/SearchBoxMonth.esm.js +35 -0
  72. package/dist/components/search-box/SearchBoxMultiSelect.cjs.js +1 -0
  73. package/dist/components/search-box/SearchBoxMultiSelect.esm.js +78 -0
  74. package/dist/components/search-box/SearchBoxSheetContext.cjs.js +1 -0
  75. package/dist/components/search-box/SearchBoxSheetContext.esm.js +5 -0
  76. package/dist/components/search-box/dateRangePresets.cjs.js +1 -0
  77. package/dist/components/search-box/dateRangePresets.esm.js +59 -0
  78. package/dist/components/search-box/parseDateRange.cjs.js +1 -0
  79. package/dist/components/search-box/parseDateRange.esm.js +21 -0
  80. package/dist/components/search-box/parseSearchValues.cjs.js +1 -0
  81. package/dist/components/search-box/parseSearchValues.esm.js +15 -0
  82. package/dist/components/search-box/useSearchBoxState.cjs.js +1 -0
  83. package/dist/components/search-box/useSearchBoxState.esm.js +87 -0
  84. package/dist/components/select/MultiSelect.cjs.js +1 -0
  85. package/dist/components/select/MultiSelect.esm.js +277 -0
  86. package/dist/components/select/Select.cjs.js +1 -0
  87. package/dist/components/select/Select.esm.js +308 -0
  88. package/dist/components/select/loading-dots.cjs.js +1 -0
  89. package/dist/components/select/loading-dots.esm.js +23 -0
  90. package/dist/components/switch/Switch.cjs.js +1 -0
  91. package/dist/components/switch/Switch.esm.js +36 -0
  92. package/dist/components/switch/utils.cjs.js +1 -0
  93. package/dist/components/switch/utils.esm.js +39 -0
  94. package/dist/components/table/accordion-table.cjs.js +1 -0
  95. package/dist/components/table/accordion-table.esm.js +418 -0
  96. package/dist/components/table/column-group-utils.cjs.js +1 -0
  97. package/dist/components/table/column-group-utils.esm.js +53 -0
  98. package/dist/components/table/components/ColumnPresetSelector.cjs.js +1 -0
  99. package/dist/components/table/components/ColumnPresetSelector.esm.js +165 -0
  100. package/dist/components/table/components/ColumnSettingsTable.cjs.js +4 -0
  101. package/dist/components/table/components/ColumnSettingsTable.esm.js +196 -0
  102. package/dist/components/table/components/KeyboardNavButton.cjs.js +1 -0
  103. package/dist/components/table/components/KeyboardNavButton.esm.js +24 -0
  104. package/dist/components/table/components/PageJumpInput.cjs.js +1 -0
  105. package/dist/components/table/components/PageJumpInput.esm.js +53 -0
  106. package/dist/components/table/components/Pagination.cjs.js +1 -0
  107. package/dist/components/table/components/Pagination.esm.js +162 -0
  108. package/dist/components/table/components/PaginationFooter.cjs.js +1 -0
  109. package/dist/components/table/components/PaginationFooter.esm.js +80 -0
  110. package/dist/components/table/components/SortableHeaderCell.cjs.js +1 -0
  111. package/dist/components/table/components/SortableHeaderCell.esm.js +30 -0
  112. package/dist/components/table/hooks/useColumnPresets.cjs.js +1 -0
  113. package/dist/components/table/hooks/useColumnPresets.esm.js +165 -0
  114. package/dist/components/table/hooks/useColumnResize.cjs.js +1 -0
  115. package/dist/components/table/hooks/useColumnResize.esm.js +106 -0
  116. package/dist/components/table/hooks/useFillEmptyRows.cjs.js +1 -0
  117. package/dist/components/table/hooks/useFillEmptyRows.esm.js +49 -0
  118. package/dist/components/table/hooks/useInfiniteScroll.cjs.js +1 -0
  119. package/dist/components/table/hooks/useInfiniteScroll.esm.js +32 -0
  120. package/dist/components/table/hooks/useTableColumnState.cjs.js +1 -0
  121. package/dist/components/table/hooks/useTableColumnState.esm.js +46 -0
  122. package/dist/components/table/hooks/useTableDragSelection.cjs.js +1 -0
  123. package/dist/components/table/hooks/useTableDragSelection.esm.js +76 -0
  124. package/dist/components/table/hooks/useTableSort.cjs.js +1 -0
  125. package/dist/components/table/hooks/useTableSort.esm.js +30 -0
  126. package/dist/components/table/hooks/useVirtualTable.cjs.js +1 -0
  127. package/dist/components/table/hooks/useVirtualTable.esm.js +18 -0
  128. package/dist/components/table/mini-table.cjs.js +1 -0
  129. package/dist/components/table/mini-table.esm.js +126 -0
  130. package/dist/components/table/paginated-mini-table.cjs.js +1 -0
  131. package/dist/components/table/paginated-mini-table.esm.js +31 -0
  132. package/dist/components/table/paginated-table.cjs.js +1 -0
  133. package/dist/components/table/paginated-table.esm.js +31 -0
  134. package/dist/components/table/table.cjs.js +1 -0
  135. package/dist/components/table/table.esm.js +342 -0
  136. package/dist/components/table/utils.cjs.js +37 -0
  137. package/dist/components/table/utils.esm.js +16 -0
  138. package/dist/components/table-checkbox/TableCheckbox.cjs.js +1 -0
  139. package/dist/components/table-checkbox/TableCheckbox.esm.js +39 -0
  140. package/dist/components/table-page-layout/TablePageLayout.cjs.js +1 -0
  141. package/dist/components/table-page-layout/TablePageLayout.esm.js +37 -0
  142. package/dist/components/textarea/Textarea.cjs.js +1 -0
  143. package/dist/components/textarea/Textarea.esm.js +62 -0
  144. package/dist/components/toast/ToastProvider.cjs.js +1 -0
  145. package/dist/components/toast/ToastProvider.esm.js +82 -0
  146. package/dist/components/toast/index.esm.js +3 -0
  147. package/dist/components/toolbar/Toolbar.cjs.js +1 -0
  148. package/dist/components/toolbar/Toolbar.esm.js +148 -0
  149. package/dist/components/tooltip/Tooltip.cjs.js +1 -0
  150. package/dist/components/tooltip/Tooltip.esm.js +39 -0
  151. package/dist/hooks/useBottomSheetDrag.cjs.js +1 -0
  152. package/dist/hooks/useBottomSheetDrag.esm.js +17 -0
  153. package/dist/hooks/useClickOutside.cjs.js +1 -0
  154. package/dist/hooks/useClickOutside.esm.js +20 -0
  155. package/dist/hooks/useMediaQuery.cjs.js +1 -0
  156. package/dist/hooks/useMediaQuery.esm.js +15 -0
  157. package/dist/hooks/useScrollLock.cjs.js +1 -0
  158. package/dist/hooks/useScrollLock.esm.js +16 -0
  159. package/dist/hooks.cjs.js +1 -0
  160. package/dist/hooks.esm.js +5 -0
  161. package/dist/index.cjs.js +1 -40
  162. package/dist/index.esm.js +58 -0
  163. package/dist/lib/Portal.cjs.js +1 -0
  164. package/dist/lib/Portal.esm.js +11 -0
  165. package/dist/lib/column-preset-storage.cjs.js +1 -0
  166. package/dist/lib/column-preset-storage.esm.js +123 -0
  167. package/dist/lib/overlay-stack.cjs.js +1 -0
  168. package/dist/lib/overlay-stack.esm.js +28 -0
  169. package/dist/lib/utils.cjs.js +1 -0
  170. package/dist/lib/utils.esm.js +11 -0
  171. package/dist/node_modules/clsx/dist/clsx.cjs.js +1 -0
  172. package/dist/node_modules/clsx/dist/clsx.esm.js +16 -0
  173. package/dist/node_modules/lucide-react/dist/esm/Icon.cjs.js +1 -0
  174. package/dist/node_modules/lucide-react/dist/esm/Icon.esm.js +23 -0
  175. package/dist/node_modules/lucide-react/dist/esm/context.cjs.js +1 -0
  176. package/dist/node_modules/lucide-react/dist/esm/context.esm.js +6 -0
  177. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.cjs.js +1 -0
  178. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.esm.js +17 -0
  179. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.cjs.js +1 -0
  180. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.esm.js +14 -0
  181. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.cjs.js +1 -0
  182. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left.esm.js +10 -0
  183. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.cjs.js +1 -0
  184. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.esm.js +25 -0
  185. package/dist/node_modules/lucide-react/dist/esm/icons/check.cjs.js +1 -0
  186. package/dist/node_modules/lucide-react/dist/esm/icons/check.esm.js +7 -0
  187. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs.js +1 -0
  188. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.esm.js +7 -0
  189. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.cjs.js +1 -0
  190. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.esm.js +7 -0
  191. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs.js +1 -0
  192. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.esm.js +7 -0
  193. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.cjs.js +1 -0
  194. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.esm.js +10 -0
  195. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.cjs.js +1 -0
  196. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.esm.js +10 -0
  197. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.cjs.js +1 -0
  198. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.esm.js +12 -0
  199. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.cjs.js +1 -0
  200. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.esm.js +19 -0
  201. package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.cjs.js +1 -0
  202. package/dist/node_modules/lucide-react/dist/esm/icons/eye-off.esm.js +21 -0
  203. package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs.js +1 -0
  204. package/dist/node_modules/lucide-react/dist/esm/icons/eye.esm.js +12 -0
  205. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs.js +1 -0
  206. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.esm.js +41 -0
  207. package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs.js +1 -0
  208. package/dist/node_modules/lucide-react/dist/esm/icons/info.esm.js +19 -0
  209. package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.cjs.js +1 -0
  210. package/dist/node_modules/lucide-react/dist/esm/icons/keyboard.esm.js +45 -0
  211. package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.cjs.js +1 -0
  212. package/dist/node_modules/lucide-react/dist/esm/icons/list-filter.esm.js +17 -0
  213. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.cjs.js +1 -0
  214. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.esm.js +7 -0
  215. package/dist/node_modules/lucide-react/dist/esm/icons/minus.cjs.js +1 -0
  216. package/dist/node_modules/lucide-react/dist/esm/icons/minus.esm.js +7 -0
  217. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs.js +1 -0
  218. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.esm.js +10 -0
  219. package/dist/node_modules/lucide-react/dist/esm/icons/save.cjs.js +1 -0
  220. package/dist/node_modules/lucide-react/dist/esm/icons/save.esm.js +17 -0
  221. package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs.js +1 -0
  222. package/dist/node_modules/lucide-react/dist/esm/icons/search.esm.js +12 -0
  223. package/dist/node_modules/lucide-react/dist/esm/icons/settings.cjs.js +1 -0
  224. package/dist/node_modules/lucide-react/dist/esm/icons/settings.esm.js +12 -0
  225. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.cjs.js +1 -0
  226. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.esm.js +17 -0
  227. package/dist/node_modules/lucide-react/dist/esm/icons/wrench.cjs.js +1 -0
  228. package/dist/node_modules/lucide-react/dist/esm/icons/wrench.esm.js +7 -0
  229. package/dist/node_modules/lucide-react/dist/esm/icons/x.cjs.js +1 -0
  230. package/dist/node_modules/lucide-react/dist/esm/icons/x.esm.js +10 -0
  231. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.cjs.js +1 -0
  232. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.esm.js +7 -0
  233. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.cjs.js +1 -0
  234. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.esm.js +4 -0
  235. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.cjs.js +1 -0
  236. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.esm.js +4 -0
  237. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.cjs.js +1 -0
  238. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.esm.js +4 -0
  239. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.cjs.js +1 -0
  240. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.esm.js +8 -0
  241. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs.js +1 -0
  242. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.esm.js +1714 -0
  243. package/dist/node_modules/use-debounce/dist/index.module.cjs.js +1 -0
  244. package/dist/node_modules/use-debounce/dist/index.module.esm.js +70 -0
  245. package/dist/src/components/action-toast/ActionToast.d.ts +6 -1
  246. package/dist/src/components/button/Button.d.ts +16 -0
  247. package/dist/src/components/drawer/Drawer.d.ts +6 -1
  248. package/dist/src/components/info-tooltip/InfoTooltip.d.ts +7 -0
  249. package/dist/src/components/loading-spinner/LoadingSpinner.d.ts +7 -0
  250. package/dist/src/components/modal/Modal.d.ts +7 -1
  251. package/dist/src/components/popover/Popover.d.ts +19 -1
  252. package/dist/src/components/tooltip/Tooltip.d.ts +10 -0
  253. package/dist/ui.css +1 -1
  254. package/llms.txt +91 -0
  255. package/package.json +10 -4
  256. package/dist/index.es.js +0 -8066
@@ -0,0 +1,18 @@
1
+ import { useMemo as e, useRef as t } from "react";
2
+ import { useVirtualizer as n } from "@tanstack/react-virtual";
3
+ //#region src/components/table/hooks/useVirtualTable.ts
4
+ function r({ count: r, estimateSize: i = 50, overscan: a = 5, scrollElement: o }) {
5
+ let s = t(null), c = n({
6
+ count: r,
7
+ getScrollElement: () => o || s.current,
8
+ estimateSize: () => i,
9
+ overscan: a,
10
+ enabled: r > 0
11
+ });
12
+ return e(() => ({
13
+ virtualizer: c,
14
+ parentRef: s
15
+ }), [c]);
16
+ }
17
+ //#endregion
18
+ export { r as useVirtualTable };
@@ -0,0 +1 @@
1
+ const e=require("../loading-spinner/LoadingSpinner.cjs.js"),t=require("./hooks/useFillEmptyRows.cjs.js"),n=require("./utils.cjs.js");let r=require("react"),i=require("react/jsx-runtime");var a=(0,r.forwardRef)((a,o)=>{let{data:s,columns:c,loading:l=!1,isFetching:u=!1,emptyMessage:d=`데이터가 없어요`,rowHeight:f,height:p,variant:m=`default`,size:h=`medium`,fillEmptyRows:g=!0,onRowClick:_,footerSlot:v,getRowKey:y,className:b=``,"data-testid":x,...S}=a,C=(0,r.useRef)(null),w=(0,r.useRef)(null),T=(0,r.useRef)(null),E=(0,r.useRef)(null),D=(0,r.useMemo)(()=>c.filter(e=>!e.hidden),[c]),O=n.getTableBaseClasses(),k=n.getTableVariantClasses(m),A=n.getTableSizeClasses(h),j=(0,r.useMemo)(()=>{let e={};return p&&(e.height=typeof p==`number`?`${p}px`:p),e},[p]),{emptyRowCount:M,measuredRowHeight:N}=t.useFillEmptyRows({enabled:g,containerRef:w,theadRef:T,tbodyRef:E,excludeRowsSelector:`tr:not([data-empty-row])`,remainingMode:`sum-real-rows`,deps:[s,D]}),P=(e,t)=>{let r=[n.getStripedRowClasses(t)];return _&&r.push(n.getHoverableRowClasses()),r.join(` `)};return l?(0,i.jsx)(`div`,{ref:o,className:`flex items-center justify-center p-8 flex-1 ${b}`,style:j,"data-testid":x,...S,children:(0,i.jsx)(e.LoadingSpinner,{message:`데이터를 불러오는 중이에요...`,className:`min-h-0`})}):(0,i.jsx)(`div`,{ref:o,className:`relative flex flex-col min-h-0 gap-4 md:gap-5 xl:gap-6 ${b}`,style:j,"data-testid":x,...S,children:(0,i.jsxs)(`div`,{className:`flex flex-1 flex-col min-h-0 gap-4 md:gap-5 xl:gap-6`,children:[(0,i.jsxs)(`div`,{className:`relative flex flex-1 flex-col min-h-0`,children:[(0,i.jsx)(`div`,{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 ${u?`opacity-100`:`opacity-0`}`,...u?{role:`status`,"aria-live":`polite`}:{"aria-hidden":!0},children:(0,i.jsx)(e.LoadingSpinner,{message:``,className:`min-h-0`})}),(0,i.jsx)(`div`,{ref:w,className:`scrollbar-table overflow-x-auto overflow-y-hidden flex-1 bg-bg-base-secondary`,children:s.length===0?(0,i.jsx)(`div`,{className:`flex items-center justify-center p-8 h-full`,children:(0,i.jsx)(`p`,{className:`text-neutral-600 dark:text-neutral-400`,children:d})}):(0,i.jsxs)(`table`,{ref:C,className:`${O} ${k} ${A} !table-auto`,style:{minWidth:`100%`},children:[(0,i.jsx)(`colgroup`,{children:D.map((e,t)=>{let n=t===D.length-1;return(0,i.jsx)(`col`,{"data-col-key":e.key,style:n?void 0:e.width?{width:typeof e.width==`number`?`${e.width}px`:e.width}:void 0},e.key)})}),(0,i.jsx)(`thead`,{ref:T,className:n.getTableHeaderClasses(),children:(0,i.jsx)(`tr`,{children:D.map(e=>(0,i.jsx)(`th`,{className:`${n.getTableHeaderCellClasses()} ${n.getColumnAlignClasses(e.align??`center`)} ${e.hideOnMobile?`hidden md:table-cell`:``}`,style:{...e.minWidth?{minWidth:`${e.minWidth}px`}:{minWidth:50}},children:(0,i.jsx)(`div`,{className:`flex items-center justify-center w-full px-1 select-none`,children:(0,i.jsx)(`span`,{children:e.header})})},e.key))})}),(0,i.jsxs)(`tbody`,{ref:E,children:[s.map((e,t)=>(0,i.jsx)(`tr`,{className:P(e,t),onClick:()=>_?.(e,t),style:f?{height:`${f}px`}:void 0,children:D.map(t=>{let r=t.accessor?t.accessor(e):e[t.key];return(0,i.jsx)(`td`,{className:`${n.getTableCellClassesNoTruncate()} ${n.getColumnAlignClasses(t.align??`left`)} ${t.hideOnMobile?`hidden md:table-cell`:``}`,style:f?{height:`${f}px`,maxHeight:`${f}px`}:void 0,children:r},t.key)})},y?y(e,t):t)),g&&Array.from({length:M}).map((e,t)=>{let r=s.length+t,a=f??N??void 0;return(0,i.jsx)(`tr`,{"data-empty-row":!0,"aria-hidden":`true`,className:n.getStripedRowClasses(r),style:a?{height:`${a}px`}:void 0,children:D.map(e=>(0,i.jsx)(`td`,{className:`${n.getTableCellClassesNoTruncate()} ${e.hideOnMobile?`hidden md:table-cell`:``}`,style:a?{height:`${a}px`}:void 0},e.key))},`empty-${t}`)})]})]})})]}),v]})})});a.displayName=`MiniTable`,exports.MiniTable=a;
@@ -0,0 +1,126 @@
1
+ import { LoadingSpinner as e } from "../loading-spinner/LoadingSpinner.esm.js";
2
+ import { useFillEmptyRows as t } from "./hooks/useFillEmptyRows.esm.js";
3
+ import { getColumnAlignClasses as n, getHoverableRowClasses as r, getStripedRowClasses as i, getTableBaseClasses as a, getTableCellClassesNoTruncate as o, getTableHeaderCellClasses as s, getTableHeaderClasses as c, getTableSizeClasses as l, getTableVariantClasses as u } from "./utils.esm.js";
4
+ import { forwardRef as d, useMemo as f, useRef as p } from "react";
5
+ import { jsx as m, jsxs as h } from "react/jsx-runtime";
6
+ //#region src/components/table/mini-table.tsx
7
+ var g = d((d, g) => {
8
+ let { data: _, columns: v, loading: y = !1, isFetching: b = !1, emptyMessage: x = "데이터가 없어요", rowHeight: S, height: C, variant: w = "default", size: T = "medium", fillEmptyRows: E = !0, onRowClick: D, footerSlot: O, getRowKey: k, className: A = "", "data-testid": j, ...M } = d, N = p(null), P = p(null), F = p(null), I = p(null), L = f(() => v.filter((e) => !e.hidden), [v]), R = a(), z = u(w), B = l(T), V = f(() => {
9
+ let e = {};
10
+ return C && (e.height = typeof C == "number" ? `${C}px` : C), e;
11
+ }, [C]), { emptyRowCount: H, measuredRowHeight: U } = t({
12
+ enabled: E,
13
+ containerRef: P,
14
+ theadRef: F,
15
+ tbodyRef: I,
16
+ excludeRowsSelector: "tr:not([data-empty-row])",
17
+ remainingMode: "sum-real-rows",
18
+ deps: [_, L]
19
+ }), W = (e, t) => {
20
+ let n = [i(t)];
21
+ return D && n.push(r()), n.join(" ");
22
+ };
23
+ return y ? /* @__PURE__ */ m("div", {
24
+ ref: g,
25
+ className: `flex items-center justify-center p-8 flex-1 ${A}`,
26
+ style: V,
27
+ "data-testid": j,
28
+ ...M,
29
+ children: /* @__PURE__ */ m(e, {
30
+ message: "데이터를 불러오는 중이에요...",
31
+ className: "min-h-0"
32
+ })
33
+ }) : /* @__PURE__ */ m("div", {
34
+ ref: g,
35
+ className: `relative flex flex-col min-h-0 gap-4 md:gap-5 xl:gap-6 ${A}`,
36
+ style: V,
37
+ "data-testid": j,
38
+ ...M,
39
+ children: /* @__PURE__ */ h("div", {
40
+ className: "flex flex-1 flex-col min-h-0 gap-4 md:gap-5 xl:gap-6",
41
+ children: [/* @__PURE__ */ h("div", {
42
+ className: "relative flex flex-1 flex-col min-h-0",
43
+ children: [/* @__PURE__ */ m("div", {
44
+ 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 ${b ? "opacity-100" : "opacity-0"}`,
45
+ ...b ? {
46
+ role: "status",
47
+ "aria-live": "polite"
48
+ } : { "aria-hidden": !0 },
49
+ children: /* @__PURE__ */ m(e, {
50
+ message: "",
51
+ className: "min-h-0"
52
+ })
53
+ }), /* @__PURE__ */ m("div", {
54
+ ref: P,
55
+ className: "scrollbar-table overflow-x-auto overflow-y-hidden flex-1 bg-bg-base-secondary",
56
+ children: _.length === 0 ? /* @__PURE__ */ m("div", {
57
+ className: "flex items-center justify-center p-8 h-full",
58
+ children: /* @__PURE__ */ m("p", {
59
+ className: "text-neutral-600 dark:text-neutral-400",
60
+ children: x
61
+ })
62
+ }) : /* @__PURE__ */ h("table", {
63
+ ref: N,
64
+ className: `${R} ${z} ${B} !table-auto`,
65
+ style: { minWidth: "100%" },
66
+ children: [
67
+ /* @__PURE__ */ m("colgroup", { children: L.map((e, t) => {
68
+ let n = t === L.length - 1;
69
+ return /* @__PURE__ */ m("col", {
70
+ "data-col-key": e.key,
71
+ style: n ? void 0 : e.width ? { width: typeof e.width == "number" ? `${e.width}px` : e.width } : void 0
72
+ }, e.key);
73
+ }) }),
74
+ /* @__PURE__ */ m("thead", {
75
+ ref: F,
76
+ className: c(),
77
+ children: /* @__PURE__ */ m("tr", { children: L.map((e) => /* @__PURE__ */ m("th", {
78
+ className: `${s()} ${n(e.align ?? "center")} ${e.hideOnMobile ? "hidden md:table-cell" : ""}`,
79
+ style: { ...e.minWidth ? { minWidth: `${e.minWidth}px` } : { minWidth: 50 } },
80
+ children: /* @__PURE__ */ m("div", {
81
+ className: "flex items-center justify-center w-full px-1 select-none",
82
+ children: /* @__PURE__ */ m("span", { children: e.header })
83
+ })
84
+ }, e.key)) })
85
+ }),
86
+ /* @__PURE__ */ h("tbody", {
87
+ ref: I,
88
+ children: [_.map((e, t) => /* @__PURE__ */ m("tr", {
89
+ className: W(e, t),
90
+ onClick: () => D?.(e, t),
91
+ style: S ? { height: `${S}px` } : void 0,
92
+ children: L.map((t) => {
93
+ let r = t.accessor ? t.accessor(e) : e[t.key];
94
+ return /* @__PURE__ */ m("td", {
95
+ className: `${o()} ${n(t.align ?? "left")} ${t.hideOnMobile ? "hidden md:table-cell" : ""}`,
96
+ style: S ? {
97
+ height: `${S}px`,
98
+ maxHeight: `${S}px`
99
+ } : void 0,
100
+ children: r
101
+ }, t.key);
102
+ })
103
+ }, k ? k(e, t) : t)), E && Array.from({ length: H }).map((e, t) => {
104
+ let n = _.length + t, r = S ?? U ?? void 0;
105
+ return /* @__PURE__ */ m("tr", {
106
+ "data-empty-row": !0,
107
+ "aria-hidden": "true",
108
+ className: i(n),
109
+ style: r ? { height: `${r}px` } : void 0,
110
+ children: L.map((e) => /* @__PURE__ */ m("td", {
111
+ className: `${o()} ${e.hideOnMobile ? "hidden md:table-cell" : ""}`,
112
+ style: r ? { height: `${r}px` } : void 0
113
+ }, e.key))
114
+ }, `empty-${t}`);
115
+ })]
116
+ })
117
+ ]
118
+ })
119
+ })]
120
+ }), O]
121
+ })
122
+ });
123
+ });
124
+ g.displayName = "MiniTable";
125
+ //#endregion
126
+ export { g as MiniTable };
@@ -0,0 +1 @@
1
+ const e=require("./components/PaginationFooter.cjs.js"),t=require("./mini-table.cjs.js");let n=require("react"),r=require("react/jsx-runtime");var i=(0,n.forwardRef)((n,i)=>{let{currentPage:a,totalPages:o,onPageChange:s,pageSize:c,pageSizeOptions:l,onPageSizeChange:u,totalElements:d,hasPreviousPage:f,hasNextPage:p,showTotalCount:m=!1,enablePageJump:h=!1,enableKeyboardPagination:g=!1,"data-testid":_,...v}=n;return(0,r.jsx)(t.MiniTable,{ref:i,"data-testid":_,footerSlot:(0,r.jsx)(e.PaginationFooter,{currentPage:a,totalPages:o,onPageChange:s,pageSize:c,pageSizeOptions:l,onPageSizeChange:u,hasPreviousPage:f,hasNextPage:p,totalElements:d,showTotalCount:m,enablePageJump:h,enableKeyboardPagination:g,"data-testid":_}),...v})});i.displayName=`PaginatedMiniTable`,exports.PaginatedMiniTable=i;
@@ -0,0 +1,31 @@
1
+ import { PaginationFooter as e } from "./components/PaginationFooter.esm.js";
2
+ import { MiniTable as t } from "./mini-table.esm.js";
3
+ import { forwardRef as n } from "react";
4
+ import { jsx as r } from "react/jsx-runtime";
5
+ //#region src/components/table/paginated-mini-table.tsx
6
+ var i = n((n, i) => {
7
+ let { currentPage: a, totalPages: o, onPageChange: s, pageSize: c, pageSizeOptions: l, onPageSizeChange: u, totalElements: d, hasPreviousPage: f, hasNextPage: p, showTotalCount: m = !1, enablePageJump: h = !1, enableKeyboardPagination: g = !1, "data-testid": _, ...v } = n;
8
+ return /* @__PURE__ */ r(t, {
9
+ ref: i,
10
+ "data-testid": _,
11
+ footerSlot: /* @__PURE__ */ r(e, {
12
+ currentPage: a,
13
+ totalPages: o,
14
+ onPageChange: s,
15
+ pageSize: c,
16
+ pageSizeOptions: l,
17
+ onPageSizeChange: u,
18
+ hasPreviousPage: f,
19
+ hasNextPage: p,
20
+ totalElements: d,
21
+ showTotalCount: m,
22
+ enablePageJump: h,
23
+ enableKeyboardPagination: g,
24
+ "data-testid": _
25
+ }),
26
+ ...v
27
+ });
28
+ });
29
+ i.displayName = "PaginatedMiniTable";
30
+ //#endregion
31
+ export { i as PaginatedMiniTable };
@@ -0,0 +1 @@
1
+ const e=require("./table.cjs.js"),t=require("./components/PaginationFooter.cjs.js");let n=require("react"),r=require("react/jsx-runtime");var i=(0,n.forwardRef)((n,i)=>{let{currentPage:a,totalPages:o,onPageChange:s,pageSize:c,pageSizeOptions:l,onPageSizeChange:u,totalElements:d,hasPreviousPage:f,hasNextPage:p,enableKeyboardPagination:m=!0,showTotalCount:h=!0,enablePageJump:g=!0,"data-testid":_,...v}=n;return(0,r.jsx)(e.Table,{ref:i,"data-testid":_,footerSlot:(0,r.jsx)(t.PaginationFooter,{currentPage:a,totalPages:o,onPageChange:s,pageSize:c,pageSizeOptions:l,onPageSizeChange:u,hasPreviousPage:f,hasNextPage:p,totalElements:d,showTotalCount:h,enablePageJump:g,enableKeyboardPagination:m,"data-testid":_}),...v})});i.displayName=`PaginatedTable`,exports.PaginatedTable=i;
@@ -0,0 +1,31 @@
1
+ import { Table as e } from "./table.esm.js";
2
+ import { PaginationFooter as t } from "./components/PaginationFooter.esm.js";
3
+ import { forwardRef as n } from "react";
4
+ import { jsx as r } from "react/jsx-runtime";
5
+ //#region src/components/table/paginated-table.tsx
6
+ var i = n((n, i) => {
7
+ let { currentPage: a, totalPages: o, onPageChange: s, pageSize: c, pageSizeOptions: l, onPageSizeChange: u, totalElements: d, hasPreviousPage: f, hasNextPage: p, enableKeyboardPagination: m = !0, showTotalCount: h = !0, enablePageJump: g = !0, "data-testid": _, ...v } = n;
8
+ return /* @__PURE__ */ r(e, {
9
+ ref: i,
10
+ "data-testid": _,
11
+ footerSlot: /* @__PURE__ */ r(t, {
12
+ currentPage: a,
13
+ totalPages: o,
14
+ onPageChange: s,
15
+ pageSize: c,
16
+ pageSizeOptions: l,
17
+ onPageSizeChange: u,
18
+ hasPreviousPage: f,
19
+ hasNextPage: p,
20
+ totalElements: d,
21
+ showTotalCount: h,
22
+ enablePageJump: g,
23
+ enableKeyboardPagination: m,
24
+ "data-testid": _
25
+ }),
26
+ ...v
27
+ });
28
+ });
29
+ i.displayName = "PaginatedTable";
30
+ //#endregion
31
+ export { i as PaginatedTable };
@@ -0,0 +1 @@
1
+ const e=require("../../node_modules/lucide-react/dist/esm/icons/grip-vertical.cjs.js"),t=require("../loading-spinner/LoadingSpinner.cjs.js"),n=require("../table-checkbox/TableCheckbox.cjs.js"),r=require("./column-group-utils.cjs.js"),i=require("./components/SortableHeaderCell.cjs.js"),a=require("./hooks/useColumnResize.cjs.js"),o=require("./hooks/useFillEmptyRows.cjs.js"),ee=require("./hooks/useTableDragSelection.cjs.js"),te=require("./hooks/useTableSort.cjs.js"),s=require("./utils.cjs.js");let c=require("react"),l=require("react/jsx-runtime"),u=require("@dnd-kit/core"),d=require("@dnd-kit/sortable");var ne=({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},f=(0,c.forwardRef)((f,p)=>{let{data:m,columns:h,columnGroups:g,rowHeight:_,loading:re=!1,isFetching:v=!1,emptyMessage:ie=`데이터가 없어요`,onRowClick:y,selectedRows:b=[],onRowSelect:x,enableRowSelection:S=!1,enableSelectAll:C=!1,rowCompare:w,getRowId:T,enableSorting:E=!1,serverSideSorting:D=!1,onSortChange:ae,initialSort:oe,variant:se=`default`,size:ce=`medium`,stickyHeader:O=!0,height:k,maxHeight:A,storageKey:le,columnState:j,fillEmptyRows:M=!0,totalElements:N,footerSlot:ue,className:P=``,"data-testid":F,...I}=f,{sort:de,sortedData:L}=te.useTableSort({initialSort:oe,serverSide:D,onSort:ae||void 0}),R=(0,c.useMemo)(()=>!E||D?m:L(m,(e,t)=>{let n=h.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]}),[m,E,D,de,L,h]),z=(0,c.useRef)(null),B=(0,c.useRef)(null),V=(0,c.useRef)(null),H=(0,c.useRef)(null),U=!!j,fe=(0,u.useSensors)((0,u.useSensor)(u.PointerSensor,{activationConstraint:{distance:5}}),(0,u.useSensor)(u.KeyboardSensor,{coordinateGetter:d.sortableKeyboardCoordinates})),W=(0,c.useMemo)(()=>r.buildColumnSlots(h,g),[h,g]),G=(0,c.useMemo)(()=>{if(!j)return W.filter(e=>!(e.kind===`column`&&e.leafColumns[0].hidden));let e=new Set(j.hiddenColumns);return r.applyColumnState(W,j.columnOrder,e)},[W,j]),K=(0,c.useMemo)(()=>r.flattenLeafColumns(G),[G]),q=(0,c.useMemo)(()=>r.hasGroupSlot(G),[G]),pe=(0,c.useMemo)(()=>new Map(W.map(e=>[e.key,e])),[W]),me=e=>{let{active:t,over:n}=e;if(!j||!n||t.id===n.id)return;let r=pe.get(String(n.id));if(r?.kind===`column`&&r.leafColumns[0].excludeFromPreset)return;let i=j.columnOrder,a=i.indexOf(String(t.id)),o=i.indexOf(String(n.id));a===-1||o===-1||j.onColumnOrderChange((0,d.arrayMove)(i,a,o))},{handleMouseDown:he,handleDoubleClick:ge,getColumnWidth:J,measureRef:_e}=a.useColumnResize({columns:K,data:R,getCellContent:(e,t)=>{let n=K.find(e=>e.key===t);return n?.accessor?n.accessor(e):e[t]},tableRef:z,...j?{controlledWidths:j.columnWidths,onColumnWidthsChange:j.onColumnWidthsChange}:{storageKey:le}}),ve=s.getTableBaseClasses(),ye=s.getTableVariantClasses(se),be=s.getTableSizeClasses(ce),Y=S&&C?48:0,xe=(0,c.useMemo)(()=>K.reduce((e,t)=>{let n=J(t.key,t.width),r=parseFloat(n);return e+(Number.isFinite(r)?r:0)},0)+Y,[K,J,Y]),X=(0,c.useMemo)(()=>{let e={};return k&&(e.height=typeof k==`number`?`${k}px`:k),A&&(e.maxHeight=typeof A==`number`?`${A}px`:A),e},[k,A]),{emptyRowCount:Se,measuredRowHeight:Ce}=o.useFillEmptyRows({enabled:M,containerRef:B,theadRef:V,tbodyRef:H,excludeRowsSelector:`tr:not([data-empty-row])`,remainingMode:`sum-real-rows`,deps:[R,K]}),Z=e=>!S||b.length===0?!1:w?b.some(t=>w(t,e)):b.some(t=>t===e),Q=(0,c.useMemo)(()=>!S||!C||R.length===0?!1:R.every(e=>Z(e)),[S,C,R,Z]),we=()=>{!S||!x||(Q?R.forEach(e=>{Z(e)&&x(e,!1)}):R.forEach(e=>{Z(e)||x(e,!0)}))},$=S&&!!x&&!!T,Te=ee.useTableDragSelection({rows:R,getRowId:T??(()=>-1),isSelected:e=>Z(e),setSelected:(e,t)=>x?.(e,t),enabled:$,scrollContainerRef:B}),Ee=(e,t)=>{let n=[s.getStripedRowClasses(t)];return Z(e)&&n.push(s.getSelectedRowClasses()),y&&n.push(s.getHoverableRowClasses()),n.join(` `)};return re?(0,l.jsx)(`div`,{ref:p,className:`flex items-center justify-center p-8 flex-1 ${P}`,style:X,"data-testid":F,...I,children:(0,l.jsx)(t.LoadingSpinner,{message:`데이터를 불러오는 중이에요...`,className:`min-h-0`})}):(0,l.jsxs)(`div`,{ref:p,className:`relative flex flex-col min-h-0 gap-4 md:gap-5 xl:gap-6 ${P}`,style:X,"data-testid":F,...I,children:[(0,l.jsx)(`div`,{ref:_e,className:`absolute invisible whitespace-nowrap`,style:{top:`-9999px`,left:`-9999px`}}),(0,l.jsxs)(`div`,{className:`flex flex-1 flex-col min-h-0 gap-4 md:gap-5 xl:gap-6`,children:[(0,l.jsxs)(`div`,{className:`relative flex flex-1 flex-col min-h-0`,children:[(0,l.jsx)(`div`,{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 ${v?`opacity-100`:`opacity-0`}`,...v?{role:`status`,"aria-live":`polite`}:{"aria-hidden":!0},children:(0,l.jsx)(t.LoadingSpinner,{message:``,className:`min-h-0`})}),(0,l.jsx)(`div`,{ref:B,className:`scrollbar-table overflow-auto flex-1 bg-[#f9fafb] dark:bg-slate-900/50`,children:R.length===0?(0,l.jsx)(`div`,{className:`flex items-center justify-center p-8 h-full`,children:(0,l.jsx)(`p`,{className:`text-neutral-600 dark:text-neutral-400`,children:ie})}):(0,l.jsx)(u.DndContext,{sensors:fe,collisionDetection:u.closestCenter,onDragEnd:me,modifiers:[ne],children:(0,l.jsxs)(`table`,{ref:z,className:`${ve} ${ye} ${be}`,style:{tableLayout:`fixed`,minWidth:`100%`,width:`${xe}px`},children:[(0,l.jsxs)(`colgroup`,{children:[S&&C&&(0,l.jsx)(`col`,{style:{width:`48px`}}),K.map(e=>(0,l.jsx)(`col`,{"data-col-key":e.key,style:{width:J(e.key,e.width)}},e.key))]}),(0,l.jsxs)(`thead`,{ref:V,className:s.getTableHeaderClasses(),style:{position:O?`sticky`:`relative`,top:O?0:void 0,zIndex:O?10:void 0},children:[(0,l.jsxs)(`tr`,{children:[S&&C&&(0,l.jsx)(`th`,{rowSpan:q?2:1,className:`${s.getTableHeaderCellClasses()} ${s.getColumnAlignClasses(`center`)} w-12 px-0`,children:(0,l.jsx)(`div`,{className:`flex items-center justify-center`,children:(0,l.jsx)(n.TableCheckbox,{checked:Q,onChange:()=>we(),ariaLabel:`전체 선택`})})}),(0,l.jsx)(d.SortableContext,{items:G.map(e=>e.key),strategy:d.horizontalListSortingStrategy,children:G.map(t=>{if(t.kind===`group`)return(0,l.jsxs)(i.SortableHeaderCell,{id:t.key,disabled:!U,as:`th`,colSpan:t.leafColumns.length,className:`${s.getTableHeaderCellClasses()} ${s.getColumnAlignClasses(`center`)} group/header-cell ${t.hideOnMobile?`hidden md:table-cell`:``} relative`,children:[U&&(0,l.jsx)(`span`,{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`,"aria-hidden":`true`,children:(0,l.jsx)(e.GripVertical,{className:`h-3.5 w-3.5`})}),(0,l.jsx)(`div`,{className:`flex items-center justify-center w-full pr-1 pl-3 select-none`,children:(0,l.jsx)(`span`,{children:t.header})})]},t.key);let n=t.leafColumns[0],r=!U||n.excludeFromPreset===!0;return(0,l.jsxs)(i.SortableHeaderCell,{id:n.key,disabled:r,as:`th`,rowSpan:q?2:1,className:`${s.getTableHeaderCellClasses()} ${s.getColumnAlignClasses(`center`)} group/header-cell ${n.sticky?`sticky left-0 z-20 bg-bg-base-secondary`:``} ${n.hideOnMobile?`hidden md:table-cell`:``} relative`,style:{width:J(n.key,n.width),minWidth:n.minWidth||50},children:[!r&&(0,l.jsx)(`span`,{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`,"aria-hidden":`true`,children:(0,l.jsx)(e.GripVertical,{className:`h-3.5 w-3.5`})}),(0,l.jsx)(`div`,{className:`flex items-center justify-center w-full pr-1 pl-3 select-none`,children:(0,l.jsx)(`span`,{children:n.header})}),n.excludeFromPreset!==!0&&(0,l.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(),he(n.key,e)},onDoubleClick:e=>{e.preventDefault(),e.stopPropagation(),ge(n.key,e)},onClick:e=>{e.preventDefault(),e.stopPropagation()},style:{touchAction:`none`},title:`드래그하여 너비 조절, 더블 클릭하여 자동 조절`,children:(0,l.jsx)(`span`,{"aria-hidden":`true`,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`})})]},n.key)})})]}),q&&(0,l.jsx)(`tr`,{children:G.filter(e=>e.kind===`group`).flatMap(e=>e.leafColumns).map(e=>(0,l.jsx)(`th`,{className:`${s.getTableHeaderCellClasses()} ${s.getColumnAlignClasses(e.align??`center`)} ${e.hideOnMobile?`hidden md:table-cell`:``}`,style:{width:J(e.key,e.width),minWidth:e.minWidth||50},children:(0,l.jsx)(`div`,{className:`flex items-center justify-center w-full pr-1 pl-3 select-none`,children:(0,l.jsx)(`span`,{children:e.header})})},e.key))})]}),(0,l.jsxs)(`tbody`,{ref:H,children:[R.map((e,t)=>{let r=Z(e);return(0,l.jsxs)(`tr`,{className:Ee(e,t),onClick:()=>y?.(e,t),style:_?{height:`${_}px`}:void 0,children:[S&&C&&(0,l.jsx)(`td`,{className:`${s.getTableCellClasses()} ${s.getColumnAlignClasses(`center`)} w-12 select-none`,onClick:e=>e.stopPropagation(),onMouseDown:$?e=>{e.preventDefault(),Te.onRowMouseDown(t)}:void 0,onMouseEnter:$?()=>Te.onRowMouseEnter(t):void 0,children:(0,l.jsx)(`div`,{className:`flex items-center justify-center`,children:(0,l.jsx)(n.TableCheckbox,{checked:r,onChange:t=>x?.(e,t),pointerEventsNone:$,ariaLabel:`행 선택`})})}),K.map(t=>{let n=t.accessor?t.accessor(e):e[t.key];return(0,l.jsx)(`td`,{className:`${s.getTableCellClasses()} ${s.getColumnAlignClasses(t.align)} ${t.sticky?`sticky left-0 z-10 bg-inherit`:``} ${t.hideOnMobile?`hidden md:table-cell`:``}`,style:{width:J(t.key,t.width),minWidth:t.minWidth||50,..._?{height:`${_}px`,maxHeight:`${_}px`,overflow:`hidden`}:{}},children:n},t.key)})]},t)}),M&&Array.from({length:Se}).map((e,t)=>{let n=R.length+t,r=_??Ce??void 0;return(0,l.jsxs)(`tr`,{"data-empty-row":!0,"aria-hidden":`true`,className:s.getStripedRowClasses(n),style:r?{height:`${r}px`}:void 0,children:[S&&C&&(0,l.jsx)(`td`,{className:`${s.getTableCellClasses()} w-12`,style:r?{height:`${r}px`}:void 0}),K.map(e=>(0,l.jsx)(`td`,{className:`${s.getTableCellClasses()} ${e.hideOnMobile?`hidden md:table-cell`:``}`,style:{width:J(e.key,e.width),minWidth:e.minWidth||50,...r?{height:`${r}px`}:{}}},e.key))]},`empty-${t}`)})]})]})})})]}),ue??(N===void 0?null:(0,l.jsx)(`div`,{className:`flex justify-end shrink-0 text-sm text-neutral-600 dark:text-neutral-300`,children:(0,l.jsxs)(`span`,{children:[`총 `,N.toLocaleString(),`건`]})}))]})]})});f.displayName=`Table`,exports.Table=f;
@@ -0,0 +1,342 @@
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";
5
+ 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";
11
+ import { forwardRef as f, useMemo as p, useRef as m } from "react";
12
+ 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";
15
+ //#region src/components/table/table.tsx
16
+ var be = ({ transform: e, draggingNodeRect: t, containerNodeRect: n }) => {
17
+ let r = {
18
+ ...e,
19
+ y: 0
20
+ };
21
+ if (!t || !n) return r;
22
+ let i = n.left - t.left, a = n.right - t.right;
23
+ return r.x = Math.min(Math.max(r.x, i), a), r;
24
+ }, _ = 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) => {
30
+ let n = y.find((e) => e.key === t);
31
+ if (n?.accessor) {
32
+ let r = n.accessor(e);
33
+ return typeof r == "string" || typeof r == "number" ? r : e[t];
34
+ }
35
+ return e[t];
36
+ }), [
37
+ v,
38
+ A,
39
+ j,
40
+ ke,
41
+ V,
42
+ 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) => {
48
+ let { active: t, over: n } = e;
49
+ if (!F || !n || t.id === n.id) return;
50
+ let r = Me.get(String(n.id));
51
+ 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,
56
+ data: H,
57
+ getCellContent: (e, t) => {
58
+ let n = Y.find((e) => e.key === t);
59
+ return n?.accessor ? n.accessor(e) : e[t];
60
+ },
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);
68
+ return e + (Number.isFinite(r) ? r : 0);
69
+ }, 0) + Be, [
70
+ Y,
71
+ Z,
72
+ Be
73
+ ]), He = p(() => {
74
+ 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,
81
+ excludeRowsSelector: "tr:not([data-empty-row])",
82
+ 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)), [
85
+ E,
86
+ D,
87
+ H,
88
+ Q
89
+ ]), Ke = () => {
90
+ !E || !T || (Ge ? H.forEach((e) => {
91
+ Q(e) && T(e, !1);
92
+ }) : H.forEach((e) => {
93
+ Q(e) || T(e, !0);
94
+ }));
95
+ }, $ = E && !!T && !!k, qe = ne({
96
+ rows: H,
97
+ getRowId: k ?? (() => -1),
98
+ isSelected: (e) => Q(e),
99
+ 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(" ");
105
+ };
106
+ return xe ? /* @__PURE__ */ h("div", {
107
+ 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, {
113
+ message: "데이터를 불러오는 중이에요...",
114
+ className: "min-h-0"
115
+ })
116
+ }) : /* @__PURE__ */ g("div", {
117
+ 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,
122
+ children: [/* @__PURE__ */ h("div", {
123
+ ref: Ie,
124
+ className: "absolute invisible whitespace-nowrap",
125
+ style: {
126
+ top: "-9999px",
127
+ left: "-9999px"
128
+ }
129
+ }), /* @__PURE__ */ g("div", {
130
+ className: "flex flex-1 flex-col min-h-0 gap-4 md:gap-5 xl:gap-6",
131
+ children: [/* @__PURE__ */ g("div", {
132
+ className: "relative flex flex-1 flex-col min-h-0",
133
+ 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"}`,
135
+ ...S ? {
136
+ role: "status",
137
+ "aria-live": "polite"
138
+ } : { "aria-hidden": !0 },
139
+ children: /* @__PURE__ */ h(t, {
140
+ message: "",
141
+ className: "min-h-0"
142
+ })
143
+ }), /* @__PURE__ */ h("div", {
144
+ ref: W,
145
+ className: "scrollbar-table overflow-auto flex-1 bg-[#f9fafb] dark:bg-slate-900/50",
146
+ children: H.length === 0 ? /* @__PURE__ */ h("div", {
147
+ className: "flex items-center justify-center p-8 h-full",
148
+ children: /* @__PURE__ */ h("p", {
149
+ className: "text-neutral-600 dark:text-neutral-400",
150
+ children: Se
151
+ })
152
+ }) : /* @__PURE__ */ h(ue, {
153
+ sensors: je,
154
+ collisionDetection: pe,
155
+ onDragEnd: Ne,
156
+ modifiers: [be],
157
+ children: /* @__PURE__ */ g("table", {
158
+ ref: U,
159
+ className: `${Le} ${Re} ${ze}`,
160
+ style: {
161
+ tableLayout: "fixed",
162
+ minWidth: "100%",
163
+ width: `${Ve}px`
164
+ },
165
+ children: [
166
+ /* @__PURE__ */ g("colgroup", { children: [E && D && /* @__PURE__ */ h("col", { style: { width: "48px" } }), Y.map((e) => /* @__PURE__ */ h("col", {
167
+ "data-col-key": e.key,
168
+ style: { width: Z(e.key, e.width) }
169
+ }, e.key))] }),
170
+ /* @__PURE__ */ g("thead", {
171
+ ref: G,
172
+ className: se(),
173
+ style: {
174
+ position: M ? "sticky" : "relative",
175
+ top: M ? 0 : void 0,
176
+ zIndex: M ? 10 : void 0
177
+ },
178
+ children: [/* @__PURE__ */ g("tr", { children: [E && D && /* @__PURE__ */ h("th", {
179
+ rowSpan: X ? 2 : 1,
180
+ className: `${d()} ${c("center")} w-12 px-0`,
181
+ children: /* @__PURE__ */ h("div", {
182
+ className: "flex items-center justify-center",
183
+ children: /* @__PURE__ */ h(n, {
184
+ checked: Ge,
185
+ onChange: () => Ke(),
186
+ ariaLabel: "전체 선택"
187
+ })
188
+ })
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,
196
+ 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",
201
+ "aria-hidden": "true",
202
+ children: /* @__PURE__ */ h(e, { className: "h-3.5 w-3.5" })
203
+ }), /* @__PURE__ */ h("div", {
204
+ className: "flex items-center justify-center w-full pr-1 pl-3 select-none",
205
+ children: /* @__PURE__ */ h("span", { children: t.header })
206
+ })]
207
+ }, t.key);
208
+ let n = t.leafColumns[0], r = !K || n.excludeFromPreset === !0;
209
+ return /* @__PURE__ */ g(s, {
210
+ id: n.key,
211
+ disabled: r,
212
+ 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`,
215
+ style: {
216
+ width: Z(n.key, n.width),
217
+ minWidth: n.minWidth || 50
218
+ },
219
+ 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",
222
+ "aria-hidden": "true",
223
+ children: /* @__PURE__ */ h(e, { className: "h-3.5 w-3.5" })
224
+ }),
225
+ /* @__PURE__ */ h("div", {
226
+ className: "flex items-center justify-center w-full pr-1 pl-3 select-none",
227
+ children: /* @__PURE__ */ h("span", { children: n.header })
228
+ }),
229
+ n.excludeFromPreset !== !0 && /* @__PURE__ */ h("div", {
230
+ className: "group/resize absolute right-0 top-0 h-full w-3 cursor-col-resize z-50 flex items-center justify-center",
231
+ onPointerDown: (e) => e.stopPropagation(),
232
+ onMouseDown: (e) => {
233
+ e.preventDefault(), e.stopPropagation(), Pe(n.key, e);
234
+ },
235
+ onDoubleClick: (e) => {
236
+ e.preventDefault(), e.stopPropagation(), Fe(n.key, e);
237
+ },
238
+ onClick: (e) => {
239
+ e.preventDefault(), e.stopPropagation();
240
+ },
241
+ style: { touchAction: "none" },
242
+ title: "드래그하여 너비 조절, 더블 클릭하여 자동 조절",
243
+ children: /* @__PURE__ */ h("span", {
244
+ "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"
246
+ })
247
+ })
248
+ ]
249
+ }, n.key);
250
+ })
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" : ""}`,
253
+ style: {
254
+ width: Z(e.key, e.width),
255
+ minWidth: e.minWidth || 50
256
+ },
257
+ children: /* @__PURE__ */ h("div", {
258
+ className: "flex items-center justify-center w-full pr-1 pl-3 select-none",
259
+ children: /* @__PURE__ */ h("span", { children: e.header })
260
+ })
261
+ }, e.key)) })]
262
+ }),
263
+ /* @__PURE__ */ g("tbody", {
264
+ ref: Ae,
265
+ children: [H.map((e, t) => {
266
+ let r = Q(e);
267
+ return /* @__PURE__ */ g("tr", {
268
+ className: Je(e, t),
269
+ onClick: () => C?.(e, t),
270
+ style: x ? { height: `${x}px` } : void 0,
271
+ children: [E && D && /* @__PURE__ */ h("td", {
272
+ className: `${u()} ${c("center")} w-12 select-none`,
273
+ onClick: (e) => e.stopPropagation(),
274
+ onMouseDown: $ ? (e) => {
275
+ e.preventDefault(), qe.onRowMouseDown(t);
276
+ } : void 0,
277
+ onMouseEnter: $ ? () => qe.onRowMouseEnter(t) : void 0,
278
+ children: /* @__PURE__ */ h("div", {
279
+ className: "flex items-center justify-center",
280
+ children: /* @__PURE__ */ h(n, {
281
+ checked: r,
282
+ onChange: (t) => T?.(e, t),
283
+ pointerEventsNone: $,
284
+ ariaLabel: "행 선택"
285
+ })
286
+ })
287
+ }), Y.map((t) => {
288
+ let n = t.accessor ? t.accessor(e) : e[t.key];
289
+ 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" : ""}`,
291
+ style: {
292
+ width: Z(t.key, t.width),
293
+ minWidth: t.minWidth || 50,
294
+ ...x ? {
295
+ height: `${x}px`,
296
+ maxHeight: `${x}px`,
297
+ overflow: "hidden"
298
+ } : {}
299
+ },
300
+ children: n
301
+ }, t.key);
302
+ })]
303
+ }, t);
304
+ }), I && Array.from({ length: Ue }).map((e, t) => {
305
+ let n = H.length + t, r = x ?? We ?? void 0;
306
+ return /* @__PURE__ */ g("tr", {
307
+ "data-empty-row": !0,
308
+ "aria-hidden": "true",
309
+ className: l(n),
310
+ style: r ? { height: `${r}px` } : void 0,
311
+ 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" : ""}`,
316
+ style: {
317
+ width: Z(e.key, e.width),
318
+ minWidth: e.minWidth || 50,
319
+ ...r ? { height: `${r}px` } : {}
320
+ }
321
+ }, e.key))]
322
+ }, `empty-${t}`);
323
+ })]
324
+ })
325
+ ]
326
+ })
327
+ })
328
+ })]
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",
331
+ children: /* @__PURE__ */ g("span", { children: [
332
+ "총 ",
333
+ L.toLocaleString(),
334
+ "건"
335
+ ] })
336
+ }))]
337
+ })]
338
+ });
339
+ });
340
+ _.displayName = "Table";
341
+ //#endregion
342
+ export { _ as Table };
@@ -0,0 +1,37 @@
1
+ var e=()=>`w-full
2
+ border-collapse
3
+ text-left
4
+ table-fixed`.replace(/\s+/g,` `),t=(e=`default`)=>({default:``,bordered:`border border-neutral-200 dark:border-neutral-700`,striped:``})[e],n=(e=`medium`)=>({small:`text-sm`,medium:`text-base`,large:`text-lg`})[e],r=(e=`left`)=>({left:`text-left justify-start`,center:`text-center justify-center`,right:`text-right justify-end`})[e],i=()=>`font-medium
5
+ text-text-secondary
6
+ text-sm
7
+ uppercase
8
+ tracking-wider
9
+ bg-bg-base-secondary
10
+ leading-tight`.replace(/\s+/g,` `),a=()=>`px-6
11
+ py-1.5
12
+ text-text-secondary
13
+ text-sm
14
+ font-medium
15
+ leading-tight
16
+ border-b border-r border-border-secondary dark:border-border-tertiary
17
+ whitespace-nowrap
18
+ bg-bg-base-secondary`.replace(/\s+/g,` `),o=()=>`px-3
19
+ py-0.5
20
+ text-neutral-900 dark:text-white
21
+ text-xs
22
+ leading-tight
23
+ border-b border-r border-[#f2f3f5] dark:border-neutral-700
24
+ whitespace-nowrap
25
+ overflow-hidden
26
+ text-ellipsis`.replace(/\s+/g,` `),s=()=>`px-3
27
+ py-0.5
28
+ text-neutral-900 dark:text-white
29
+ text-xs
30
+ leading-tight
31
+ border-b border-r border-[#f2f3f5] dark:border-neutral-700
32
+ whitespace-nowrap`.replace(/\s+/g,` `),c=e=>e%2==0?`bg-[#f9fafb] dark:bg-slate-900/50 hover:bg-[#f3f4f6] dark:hover:bg-slate-800`:`bg-white dark:bg-slate-950 hover:bg-slate-50 dark:hover:bg-slate-900`,l=()=>`bg-blue-50 dark:bg-blue-950/50
33
+ hover:bg-blue-100 dark:hover:bg-blue-950/70
34
+ shadow-[inset_4px_0_0_0_var(--color-primary-500)]
35
+ dark:shadow-[inset_4px_0_0_0_var(--color-primary-400)]`.replace(/\s+/g,` `),u=()=>`hover:bg-[#f9fafb]
36
+ transition-colors duration-200
37
+ cursor-pointer`.replace(/\s+/g,` `);exports.getColumnAlignClasses=r,exports.getHoverableRowClasses=u,exports.getSelectedRowClasses=l,exports.getStripedRowClasses=c,exports.getTableBaseClasses=e,exports.getTableCellClasses=o,exports.getTableCellClassesNoTruncate=s,exports.getTableHeaderCellClasses=a,exports.getTableHeaderClasses=i,exports.getTableSizeClasses=n,exports.getTableVariantClasses=t;
@@ -0,0 +1,16 @@
1
+ //#region src/components/table/utils.ts
2
+ var e = () => "w-full\n border-collapse\n text-left\n table-fixed".replace(/\s+/g, " "), t = (e = "default") => ({
3
+ default: "",
4
+ bordered: "border border-neutral-200 dark:border-neutral-700",
5
+ striped: ""
6
+ })[e], n = (e = "medium") => ({
7
+ small: "text-sm",
8
+ medium: "text-base",
9
+ large: "text-lg"
10
+ })[e], r = (e = "left") => ({
11
+ left: "text-left justify-start",
12
+ center: "text-center justify-center",
13
+ right: "text-right justify-end"
14
+ })[e], i = () => "font-medium\n text-text-secondary\n text-sm\n uppercase\n tracking-wider\n bg-bg-base-secondary\n leading-tight".replace(/\s+/g, " "), a = () => "px-6\n py-1.5\n text-text-secondary\n text-sm\n font-medium\n leading-tight\n border-b border-r border-border-secondary dark:border-border-tertiary\n whitespace-nowrap\n bg-bg-base-secondary".replace(/\s+/g, " "), o = () => "px-3\n py-0.5\n text-neutral-900 dark:text-white\n text-xs\n leading-tight\n border-b border-r border-[#f2f3f5] dark:border-neutral-700\n whitespace-nowrap\n overflow-hidden\n text-ellipsis".replace(/\s+/g, " "), s = () => "px-3\n py-0.5\n text-neutral-900 dark:text-white\n text-xs\n leading-tight\n border-b border-r border-[#f2f3f5] dark:border-neutral-700\n whitespace-nowrap".replace(/\s+/g, " "), c = (e) => e % 2 == 0 ? "bg-[#f9fafb] dark:bg-slate-900/50 hover:bg-[#f3f4f6] dark:hover:bg-slate-800" : "bg-white dark:bg-slate-950 hover:bg-slate-50 dark:hover:bg-slate-900", l = () => "bg-blue-50 dark:bg-blue-950/50\n hover:bg-blue-100 dark:hover:bg-blue-950/70\n shadow-[inset_4px_0_0_0_var(--color-primary-500)]\n dark:shadow-[inset_4px_0_0_0_var(--color-primary-400)]".replace(/\s+/g, " "), u = () => "hover:bg-[#f9fafb]\n transition-colors duration-200\n cursor-pointer".replace(/\s+/g, " ");
15
+ //#endregion
16
+ export { r as getColumnAlignClasses, u as getHoverableRowClasses, l as getSelectedRowClasses, c as getStripedRowClasses, e as getTableBaseClasses, o as getTableCellClasses, s as getTableCellClassesNoTruncate, a as getTableHeaderCellClasses, i as getTableHeaderClasses, n as getTableSizeClasses, t as getTableVariantClasses };
@@ -0,0 +1 @@
1
+ const e=require("../../node_modules/lucide-react/dist/esm/icons/check.cjs.js"),t=require("../../node_modules/lucide-react/dist/esm/icons/minus.cjs.js");let n=require("react"),r=require("react/jsx-runtime");var i=(0,n.forwardRef)(function({checked:i,indeterminate:a=!1,disabled:o=!1,onChange:s,pointerEventsNone:c=!1,ariaLabel:l},u){let d=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=d.current;e&&(e.indeterminate=a&&!i)},[a,i]);let f=a&&!i;return(0,r.jsxs)(`label`,{className:`relative inline-flex h-[18px] w-[18px] shrink-0 items-center justify-center ${o?`cursor-not-allowed`:`cursor-pointer`} ${c?`pointer-events-none`:``}`,style:{flex:`0 0 18px`},"aria-label":l,children:[(0,r.jsx)(`input`,{ref:e=>{d.current=e,typeof u==`function`?u(e):u&&(u.current=e)},type:`checkbox`,className:`peer sr-only`,checked:i,disabled:o,onChange:e=>s?.(e.target.checked)}),(0,r.jsx)(`span`,{className:`flex h-full w-full items-center justify-center rounded-md border-[1.5px] transition-colors ${i||f?`border-primary-500 bg-primary-500`:`border-neutral-300 bg-white dark:border-neutral-600 dark:bg-neutral-800`} ${o?`opacity-40`:``}`,children:f?(0,r.jsx)(t.Minus,{className:`h-3 w-3 text-white`,strokeWidth:3}):i?(0,r.jsx)(e.Check,{className:`h-3 w-3 text-white`,strokeWidth:3}):null})]})});exports.TableCheckbox=i;