@zentauri-ui/zentauri-components 1.8.0 → 1.8.2

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 (253) hide show
  1. package/README.md +25 -10
  2. package/cli/registry.json +12 -0
  3. package/dist/charts/area.js +9 -10
  4. package/dist/charts/area.js.map +1 -1
  5. package/dist/charts/area.mjs +2 -3
  6. package/dist/charts/area.mjs.map +1 -1
  7. package/dist/charts/bar.js +10 -95
  8. package/dist/charts/bar.js.map +1 -1
  9. package/dist/charts/bar.mjs +2 -95
  10. package/dist/charts/bar.mjs.map +1 -1
  11. package/dist/charts/bubble.js +8 -9
  12. package/dist/charts/bubble.js.map +1 -1
  13. package/dist/charts/bubble.mjs +2 -3
  14. package/dist/charts/bubble.mjs.map +1 -1
  15. package/dist/charts/funnel/Funnel.d.ts +6 -0
  16. package/dist/charts/funnel/Funnel.d.ts.map +1 -0
  17. package/dist/charts/funnel/index.d.ts +4 -0
  18. package/dist/charts/funnel/index.d.ts.map +1 -0
  19. package/dist/charts/funnel.js +102 -0
  20. package/dist/charts/funnel.js.map +1 -0
  21. package/dist/charts/funnel.mjs +89 -0
  22. package/dist/charts/funnel.mjs.map +1 -0
  23. package/dist/charts/line.js +8 -9
  24. package/dist/charts/line.js.map +1 -1
  25. package/dist/charts/line.mjs +2 -3
  26. package/dist/charts/line.mjs.map +1 -1
  27. package/dist/charts/pie/Pie.d.ts +1 -1
  28. package/dist/charts/pie/Pie.d.ts.map +1 -1
  29. package/dist/charts/pie.js +19 -6
  30. package/dist/charts/pie.js.map +1 -1
  31. package/dist/charts/pie.mjs +17 -4
  32. package/dist/charts/pie.mjs.map +1 -1
  33. package/dist/charts/radar/Radar.d.ts +6 -0
  34. package/dist/charts/radar/Radar.d.ts.map +1 -0
  35. package/dist/charts/radar/index.d.ts +4 -0
  36. package/dist/charts/radar/index.d.ts.map +1 -0
  37. package/dist/charts/radar.js +94 -0
  38. package/dist/charts/radar.js.map +1 -0
  39. package/dist/charts/radar.mjs +81 -0
  40. package/dist/charts/radar.mjs.map +1 -0
  41. package/dist/charts/scatter/Scatter.d.ts +6 -0
  42. package/dist/charts/scatter/Scatter.d.ts.map +1 -0
  43. package/dist/charts/scatter/index.d.ts +4 -0
  44. package/dist/charts/scatter/index.d.ts.map +1 -0
  45. package/dist/charts/scatter.js +116 -0
  46. package/dist/charts/scatter.js.map +1 -0
  47. package/dist/charts/scatter.mjs +103 -0
  48. package/dist/charts/scatter.mjs.map +1 -0
  49. package/dist/charts/shared/chart-frame.d.ts +2 -1
  50. package/dist/charts/shared/chart-frame.d.ts.map +1 -1
  51. package/dist/charts/shared/types.d.ts +22 -2
  52. package/dist/charts/shared/types.d.ts.map +1 -1
  53. package/dist/charts/stacked-bar/StackedBar.d.ts +6 -0
  54. package/dist/charts/stacked-bar/StackedBar.d.ts.map +1 -0
  55. package/dist/charts/stacked-bar/index.d.ts +4 -0
  56. package/dist/charts/stacked-bar/index.d.ts.map +1 -0
  57. package/dist/charts/stacked-bar.js +29 -0
  58. package/dist/charts/stacked-bar.js.map +1 -0
  59. package/dist/charts/stacked-bar.mjs +15 -0
  60. package/dist/charts/stacked-bar.mjs.map +1 -0
  61. package/dist/chunk-7TGUGTTQ.mjs +147 -0
  62. package/dist/chunk-7TGUGTTQ.mjs.map +1 -0
  63. package/dist/chunk-CQMV7BB6.js +50 -0
  64. package/dist/chunk-CQMV7BB6.js.map +1 -0
  65. package/dist/chunk-DN7TYUJ6.js +119 -0
  66. package/dist/chunk-DN7TYUJ6.js.map +1 -0
  67. package/dist/chunk-F3V4POW3.mjs +8 -0
  68. package/dist/chunk-F3V4POW3.mjs.map +1 -0
  69. package/dist/{chunk-G2WARVAM.mjs → chunk-HZIRD3SR.mjs} +35 -15
  70. package/dist/chunk-HZIRD3SR.mjs.map +1 -0
  71. package/dist/{chunk-G66SXATZ.js → chunk-IL4LH2XX.js} +50 -4
  72. package/dist/chunk-IL4LH2XX.js.map +1 -0
  73. package/dist/chunk-LREMK2XR.js +97 -0
  74. package/dist/chunk-LREMK2XR.js.map +1 -0
  75. package/dist/chunk-O2KM3ETC.mjs +95 -0
  76. package/dist/chunk-O2KM3ETC.mjs.map +1 -0
  77. package/dist/chunk-ODBG4Y6R.mjs +48 -0
  78. package/dist/chunk-ODBG4Y6R.mjs.map +1 -0
  79. package/dist/{chunk-ZIFMIS7D.mjs → chunk-OL3BJSRC.mjs} +51 -5
  80. package/dist/chunk-OL3BJSRC.mjs.map +1 -0
  81. package/dist/{chunk-QNUDODDX.js → chunk-PWPMKXEG.js} +36 -14
  82. package/dist/chunk-PWPMKXEG.js.map +1 -0
  83. package/dist/chunk-RKX5MERK.js +150 -0
  84. package/dist/chunk-RKX5MERK.js.map +1 -0
  85. package/dist/chunk-VYI3GS2C.mjs +115 -0
  86. package/dist/chunk-VYI3GS2C.mjs.map +1 -0
  87. package/dist/chunk-XRM7GOIE.js +10 -0
  88. package/dist/chunk-XRM7GOIE.js.map +1 -0
  89. package/dist/design-system/copy-button.d.ts +43 -0
  90. package/dist/design-system/copy-button.d.ts.map +1 -0
  91. package/dist/design-system/index.d.ts +2 -0
  92. package/dist/design-system/index.d.ts.map +1 -1
  93. package/dist/design-system/kbd.d.ts +44 -0
  94. package/dist/design-system/kbd.d.ts.map +1 -0
  95. package/dist/hooks/index.d.ts +2 -0
  96. package/dist/hooks/index.d.ts.map +1 -1
  97. package/dist/hooks/useClipboard.js +6 -44
  98. package/dist/hooks/useClipboard.js.map +1 -1
  99. package/dist/hooks/useClipboard.mjs +1 -46
  100. package/dist/hooks/useClipboard.mjs.map +1 -1
  101. package/dist/hooks/useIsomorphicLayoutEffect.js +6 -4
  102. package/dist/hooks/useIsomorphicLayoutEffect.js.map +1 -1
  103. package/dist/hooks/useIsomorphicLayoutEffect.mjs +1 -6
  104. package/dist/hooks/useIsomorphicLayoutEffect.mjs.map +1 -1
  105. package/dist/hooks/useTableFilter/index.d.ts +3 -0
  106. package/dist/hooks/useTableFilter/index.d.ts.map +1 -0
  107. package/dist/hooks/useTableFilter/types.d.ts +20 -0
  108. package/dist/hooks/useTableFilter/types.d.ts.map +1 -0
  109. package/dist/hooks/useTableFilter/useTableFilter.d.ts +3 -0
  110. package/dist/hooks/useTableFilter/useTableFilter.d.ts.map +1 -0
  111. package/dist/hooks/useTableFilter.js +124 -0
  112. package/dist/hooks/useTableFilter.js.map +1 -0
  113. package/dist/hooks/useTableFilter.mjs +122 -0
  114. package/dist/hooks/useTableFilter.mjs.map +1 -0
  115. package/dist/hooks/useTableSort/index.d.ts +3 -0
  116. package/dist/hooks/useTableSort/index.d.ts.map +1 -0
  117. package/dist/hooks/useTableSort/types.d.ts +15 -0
  118. package/dist/hooks/useTableSort/types.d.ts.map +1 -0
  119. package/dist/hooks/useTableSort/useTableSort.d.ts +3 -0
  120. package/dist/hooks/useTableSort/useTableSort.d.ts.map +1 -0
  121. package/dist/hooks/useTableSort.js +99 -0
  122. package/dist/hooks/useTableSort.js.map +1 -0
  123. package/dist/hooks/useTableSort.mjs +97 -0
  124. package/dist/hooks/useTableSort.mjs.map +1 -0
  125. package/dist/ui/copy-button/animated/animations.d.ts +3 -0
  126. package/dist/ui/copy-button/animated/animations.d.ts.map +1 -0
  127. package/dist/ui/copy-button/animated/copy-button-animated.d.ts +6 -0
  128. package/dist/ui/copy-button/animated/copy-button-animated.d.ts.map +1 -0
  129. package/dist/ui/copy-button/animated/index.d.ts +4 -0
  130. package/dist/ui/copy-button/animated/index.d.ts.map +1 -0
  131. package/dist/ui/copy-button/animated/types.d.ts +26 -0
  132. package/dist/ui/copy-button/animated/types.d.ts.map +1 -0
  133. package/dist/ui/copy-button/animated.js +59 -0
  134. package/dist/ui/copy-button/animated.js.map +1 -0
  135. package/dist/ui/copy-button/animated.mjs +56 -0
  136. package/dist/ui/copy-button/animated.mjs.map +1 -0
  137. package/dist/ui/copy-button/copy-button-base.d.ts +6 -0
  138. package/dist/ui/copy-button/copy-button-base.d.ts.map +1 -0
  139. package/dist/ui/copy-button/copy-button.d.ts +6 -0
  140. package/dist/ui/copy-button/copy-button.d.ts.map +1 -0
  141. package/dist/ui/copy-button/index.d.ts +4 -0
  142. package/dist/ui/copy-button/index.d.ts.map +1 -0
  143. package/dist/ui/copy-button/types.d.ts +32 -0
  144. package/dist/ui/copy-button/types.d.ts.map +1 -0
  145. package/dist/ui/copy-button/variants.d.ts +6 -0
  146. package/dist/ui/copy-button/variants.d.ts.map +1 -0
  147. package/dist/ui/copy-button.js +20 -0
  148. package/dist/ui/copy-button.js.map +1 -0
  149. package/dist/ui/copy-button.mjs +15 -0
  150. package/dist/ui/copy-button.mjs.map +1 -0
  151. package/dist/ui/kbd/animated/animations.d.ts +3 -0
  152. package/dist/ui/kbd/animated/animations.d.ts.map +1 -0
  153. package/dist/ui/kbd/animated/index.d.ts +4 -0
  154. package/dist/ui/kbd/animated/index.d.ts.map +1 -0
  155. package/dist/ui/kbd/animated/kbd-animated.d.ts +6 -0
  156. package/dist/ui/kbd/animated/kbd-animated.d.ts.map +1 -0
  157. package/dist/ui/kbd/animated/types.d.ts +10 -0
  158. package/dist/ui/kbd/animated/types.d.ts.map +1 -0
  159. package/dist/ui/kbd/animated.js +42 -0
  160. package/dist/ui/kbd/animated.js.map +1 -0
  161. package/dist/ui/kbd/animated.mjs +39 -0
  162. package/dist/ui/kbd/animated.mjs.map +1 -0
  163. package/dist/ui/kbd/index.d.ts +4 -0
  164. package/dist/ui/kbd/index.d.ts.map +1 -0
  165. package/dist/ui/kbd/kbd-base.d.ts +6 -0
  166. package/dist/ui/kbd/kbd-base.d.ts.map +1 -0
  167. package/dist/ui/kbd/kbd.d.ts +6 -0
  168. package/dist/ui/kbd/kbd.d.ts.map +1 -0
  169. package/dist/ui/kbd/types.d.ts +17 -0
  170. package/dist/ui/kbd/types.d.ts.map +1 -0
  171. package/dist/ui/kbd/variants.d.ts +8 -0
  172. package/dist/ui/kbd/variants.d.ts.map +1 -0
  173. package/dist/ui/kbd.js +23 -0
  174. package/dist/ui/kbd.js.map +1 -0
  175. package/dist/ui/kbd.mjs +14 -0
  176. package/dist/ui/kbd.mjs.map +1 -0
  177. package/dist/ui/marquee/marquee.d.ts.map +1 -1
  178. package/dist/ui/marquee.js +82 -21
  179. package/dist/ui/marquee.js.map +1 -1
  180. package/dist/ui/marquee.mjs +83 -22
  181. package/dist/ui/marquee.mjs.map +1 -1
  182. package/dist/ui/table/animated.js +8 -8
  183. package/dist/ui/table/animated.mjs +2 -2
  184. package/dist/ui/table/index.d.ts +1 -1
  185. package/dist/ui/table/index.d.ts.map +1 -1
  186. package/dist/ui/table/table-base.d.ts +2 -2
  187. package/dist/ui/table/table-base.d.ts.map +1 -1
  188. package/dist/ui/table/types.d.ts +9 -1
  189. package/dist/ui/table/types.d.ts.map +1 -1
  190. package/dist/ui/table.js +14 -14
  191. package/dist/ui/table.mjs +1 -1
  192. package/package.json +1 -1
  193. package/src/charts/charts.test.tsx +80 -0
  194. package/src/charts/funnel/Funnel.tsx +105 -0
  195. package/src/charts/funnel/index.ts +14 -0
  196. package/src/charts/pie/Pie.tsx +28 -1
  197. package/src/charts/radar/Radar.tsx +84 -0
  198. package/src/charts/radar/index.ts +16 -0
  199. package/src/charts/scatter/Scatter.tsx +104 -0
  200. package/src/charts/scatter/index.ts +16 -0
  201. package/src/charts/shared/chart-frame.tsx +4 -2
  202. package/src/charts/shared/types.ts +42 -2
  203. package/src/charts/stacked-bar/StackedBar.tsx +12 -0
  204. package/src/charts/stacked-bar/index.ts +16 -0
  205. package/src/design-system/copy-button.ts +81 -0
  206. package/src/design-system/index.ts +2 -0
  207. package/src/design-system/kbd.ts +83 -0
  208. package/src/hooks/index.ts +12 -0
  209. package/src/hooks/useTableFilter/index.ts +7 -0
  210. package/src/hooks/useTableFilter/types.ts +28 -0
  211. package/src/hooks/useTableFilter/useTableFilter.test.ts +141 -0
  212. package/src/hooks/useTableFilter/useTableFilter.ts +153 -0
  213. package/src/hooks/useTableSort/index.ts +5 -0
  214. package/src/hooks/useTableSort/types.ts +23 -0
  215. package/src/hooks/useTableSort/useTableSort.test.ts +150 -0
  216. package/src/hooks/useTableSort/useTableSort.ts +121 -0
  217. package/src/ui/copy-button/animated/animations.ts +22 -0
  218. package/src/ui/copy-button/animated/copy-button-animated.tsx +39 -0
  219. package/src/ui/copy-button/animated/index.ts +10 -0
  220. package/src/ui/copy-button/animated/types.ts +21 -0
  221. package/src/ui/copy-button/copy-button-base.tsx +88 -0
  222. package/src/ui/copy-button/copy-button.test.tsx +82 -0
  223. package/src/ui/copy-button/copy-button.tsx +9 -0
  224. package/src/ui/copy-button/index.ts +10 -0
  225. package/src/ui/copy-button/types.ts +37 -0
  226. package/src/ui/copy-button/variants.ts +29 -0
  227. package/src/ui/divider/divider.test.tsx +55 -0
  228. package/src/ui/empty-state/empty-state.test.tsx +88 -0
  229. package/src/ui/kbd/animated/animations.ts +15 -0
  230. package/src/ui/kbd/animated/index.ts +9 -0
  231. package/src/ui/kbd/animated/kbd-animated.tsx +26 -0
  232. package/src/ui/kbd/animated/types.ts +16 -0
  233. package/src/ui/kbd/index.ts +5 -0
  234. package/src/ui/kbd/kbd-base.tsx +50 -0
  235. package/src/ui/kbd/kbd.test.tsx +48 -0
  236. package/src/ui/kbd/kbd.tsx +9 -0
  237. package/src/ui/kbd/types.ts +21 -0
  238. package/src/ui/kbd/variants.ts +31 -0
  239. package/src/ui/marquee/marquee.test.tsx +45 -4
  240. package/src/ui/marquee/marquee.tsx +100 -18
  241. package/src/ui/skeleton/skeleton.test.tsx +85 -0
  242. package/src/ui/table/index.ts +3 -0
  243. package/src/ui/table/table-base.tsx +69 -4
  244. package/src/ui/table/table.test.tsx +207 -0
  245. package/src/ui/table/types.ts +13 -1
  246. package/dist/chunk-G2WARVAM.mjs.map +0 -1
  247. package/dist/chunk-G66SXATZ.js.map +0 -1
  248. package/dist/chunk-OULU7OC4.mjs +0 -21
  249. package/dist/chunk-OULU7OC4.mjs.map +0 -1
  250. package/dist/chunk-QNUDODDX.js.map +0 -1
  251. package/dist/chunk-Z6S36PDD.js +0 -24
  252. package/dist/chunk-Z6S36PDD.js.map +0 -1
  253. package/dist/chunk-ZIFMIS7D.mjs.map +0 -1
@@ -198,11 +198,12 @@ function TableRow({
198
198
  children,
199
199
  ref,
200
200
  as: Wrapper = "tr",
201
+ rowAnimation: _rowAnimation,
201
202
  ...rest
202
203
  }) {
203
204
  const { appearance } = useTableContext("TableRow");
204
205
  return /* @__PURE__ */ jsxRuntime.jsx(
205
- "tr",
206
+ Wrapper,
206
207
  {
207
208
  ref,
208
209
  "data-slot": "table-row",
@@ -217,22 +218,67 @@ function TableHead({
217
218
  className,
218
219
  children,
219
220
  scope = "col",
221
+ sortKey,
220
222
  sortDirection,
223
+ onSortChange,
224
+ onClick,
225
+ onKeyDown,
226
+ tabIndex,
221
227
  ref,
222
228
  ...rest
223
229
  }) {
224
230
  const { appearance, size, textAlign } = useTableContext("TableHead");
231
+ const isSortable = Boolean(sortKey && onSortChange);
232
+ const sortableDirection = sortDirection ?? "none";
233
+ const handleSort = react.useCallback(() => {
234
+ if (!sortKey || !onSortChange) {
235
+ return;
236
+ }
237
+ const nextDirection = sortableDirection === "ascending" ? "descending" : sortableDirection === "descending" ? "none" : "ascending";
238
+ onSortChange({
239
+ sortKey,
240
+ sortDirection: nextDirection
241
+ });
242
+ }, [onSortChange, sortKey, sortableDirection]);
243
+ const handleClick = react.useCallback(
244
+ (event) => {
245
+ onClick?.(event);
246
+ if (!event.defaultPrevented) {
247
+ handleSort();
248
+ }
249
+ },
250
+ [handleSort, onClick]
251
+ );
252
+ const handleKeyDown = react.useCallback(
253
+ (event) => {
254
+ onKeyDown?.(event);
255
+ if (event.defaultPrevented || !isSortable) {
256
+ return;
257
+ }
258
+ if (event.key === "Enter" || event.key === " ") {
259
+ event.preventDefault();
260
+ handleSort();
261
+ }
262
+ },
263
+ [handleSort, isSortable, onKeyDown]
264
+ );
225
265
  return /* @__PURE__ */ jsxRuntime.jsx(
226
266
  "th",
227
267
  {
228
268
  ref,
229
269
  "data-slot": "table-head",
230
270
  scope,
231
- "aria-sort": sortDirection,
271
+ "aria-sort": isSortable ? sortableDirection : sortDirection,
272
+ "data-sort-key": sortKey,
273
+ "data-sort-direction": sortDirection,
274
+ tabIndex: isSortable ? tabIndex ?? 0 : tabIndex,
232
275
  className: chunkZS5756ZC_js.cn(
233
276
  tableCellVariants({ appearance, size, textAlign }),
277
+ isSortable && "cursor-pointer select-none outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950",
234
278
  className
235
279
  ),
280
+ onClick: isSortable ? handleClick : onClick,
281
+ onKeyDown: isSortable ? handleKeyDown : onKeyDown,
236
282
  ...rest,
237
283
  children
238
284
  }
@@ -292,5 +338,5 @@ exports.tableCellVariants = tableCellVariants;
292
338
  exports.tableRowVariants = tableRowVariants;
293
339
  exports.tableVariants = tableVariants;
294
340
  exports.useTableContext = useTableContext;
295
- //# sourceMappingURL=chunk-G66SXATZ.js.map
296
- //# sourceMappingURL=chunk-G66SXATZ.js.map
341
+ //# sourceMappingURL=chunk-IL4LH2XX.js.map
342
+ //# sourceMappingURL=chunk-IL4LH2XX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/design-system/table.ts","../src/ui/table/variants.ts","../src/ui/table/table-base.tsx"],"names":["cva","createContext","useContext","useMemo","jsx","cn","useCallback"],"mappings":"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","file":"chunk-IL4LH2XX.js","sourcesContent":["export const zuiTableBase =\n \"w-full table-auto border-collapse caption-bottom text-sm text-[color:var(--zui-table-fg,oklch(37.2%_0.044_257.287))] dark:text-[color:var(--zui-table-fg-dark,oklch(92.9%_0.013_255.508))] md:table-fixed\";\n\nexport const zuiTableAppearances = {\n default: \"\",\n striped: \"\",\n bordered:\n \"border border-[color:var(--zui-table-bordered-border,#0000001a)] dark:border-[color:var(--zui-table-bordered-border-dark,#ffffff1a)]\",\n ghost: \"\",\n sky: \"border border-[color:var(--zui-table-sky-border,oklch(44.3%_0.11_240.79))] dark:border-[color:var(--zui-table-sky-border-dark,oklch(58.8%_0.158_241.966))]\",\n rose: \"border border-[color:var(--zui-table-rose-border,oklch(45.5%_0.188_13.697))] dark:border-[color:var(--zui-table-rose-border-dark,oklch(58.6%_0.253_17.585))]\",\n purple:\n \"border border-[color:var(--zui-table-purple-border,oklch(43.8%_0.218_303.724))] dark:border-[color:var(--zui-table-purple-border-dark,oklch(55.8%_0.288_302.321))]\",\n pink: \"border border-[color:var(--zui-table-pink-border,oklch(45.9%_0.187_3.815))] dark:border-[color:var(--zui-table-pink-border-dark,oklch(59.2%_0.249_0.584))]\",\n orange:\n \"border border-[color:var(--zui-table-orange-border,oklch(47%_0.157_37.304))] dark:border-[color:var(--zui-table-orange-border-dark,oklch(64.6%_0.222_41.116))]\",\n yellow:\n \"border border-[color:var(--zui-table-yellow-border,oklch(47.6%_0.114_61.907))] dark:border-[color:var(--zui-table-yellow-border-dark,oklch(68.1%_0.162_75.834))]\",\n teal: \"border border-[color:var(--zui-table-teal-border,oklch(43.7%_0.078_188.216))] dark:border-[color:var(--zui-table-teal-border-dark,oklch(60%_0.118_184.704))]\",\n indigo:\n \"border border-[color:var(--zui-table-indigo-border,oklch(39.8%_0.195_277.366))] dark:border-[color:var(--zui-table-indigo-border-dark,oklch(51.1%_0.262_276.966))]\",\n emerald:\n \"border border-[color:var(--zui-table-emerald-border,oklch(43.2%_0.095_166.913))] dark:border-[color:var(--zui-table-emerald-border-dark,oklch(59.6%_0.145_163.225))]\",\n gray: \"border border-[color:var(--zui-table-gray-border,oklch(27.8%_0.033_256.848))] dark:border-[color:var(--zui-table-gray-border-dark,oklch(44.6%_0.03_256.802))]\",\n amber:\n \"border border-[color:var(--zui-table-amber-border,oklch(47.3%_0.137_46.201))] dark:border-[color:var(--zui-table-amber-border-dark,oklch(66.6%_0.179_58.318))]\",\n violet:\n \"border border-[color:var(--zui-table-violet-border,oklch(43.2%_0.232_292.759))] dark:border-[color:var(--zui-table-violet-border-dark,oklch(54.1%_0.281_293.009))]\",\n} as const;\n\nexport const zuiTableSizes = {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n} as const;\n\nexport const zuiTableStickyHeader = {\n true: \"\",\n false: \"\",\n} as const;\n\nexport const zuiTableRowBase =\n \"border-b border-[color:var(--zui-table-row-border,#0000000d)] dark:border-[color:var(--zui-table-row-border-dark,#ffffff0d)] transition-colors data-[state=selected]:bg-[var(--zui-table-row-bg-selected,#0000000f)] dark:data-[state=selected]:bg-[var(--zui-table-row-bg-selected-dark,#ffffff0f)]\";\n\nexport const zuiTableRowAppearances = {\n default: \"\",\n striped:\n \"odd:bg-[var(--zui-table-row-striped-bg,#00000008)] dark:odd:bg-[var(--zui-table-row-striped-bg-dark,#ffffff08)]\",\n bordered: \"\",\n ghost:\n \"border-[color:var(--zui-table-row-ghost-border,transparent)] dark:border-[color:var(--zui-table-row-ghost-border-dark,transparent)] hover:bg-[var(--zui-table-row-ghost-bg-hover,#00000008)] dark:hover:bg-[var(--zui-table-row-ghost-bg-hover-dark,#ffffff08)]\",\n sky: \"border-[color:var(--zui-table-row-sky-border,oklch(44.3%_0.11_240.79))] dark:border-[color:var(--zui-table-row-sky-border-dark,oklch(58.8%_0.158_241.966))] hover:bg-[var(--zui-table-row-sky-bg-hover,oklch(44.3%_0.11_240.79))] dark:hover:bg-[var(--zui-table-row-sky-bg-hover-dark,oklch(58.8%_0.158_241.966))] hover:text-[color:var(--zui-table-row-sky-fg-hover,oklch(95.1%_0.026_236.824))] dark:hover:text-[color:var(--zui-table-row-sky-fg-hover-dark,oklch(95.1%_0.026_236.824))]\",\n rose: \"border-[color:var(--zui-table-row-rose-border,oklch(45.5%_0.188_13.697))] dark:border-[color:var(--zui-table-row-rose-border-dark,oklch(58.6%_0.253_17.585))] hover:bg-[var(--zui-table-row-rose-bg-hover,oklch(64.5%_0.246_16.439))] dark:hover:bg-[var(--zui-table-row-rose-bg-hover-dark,oklch(41%_0.159_10.272))] hover:text-[color:var(--zui-table-row-rose-fg-hover,oklch(94.1%_0.03_12.58))] dark:hover:text-[color:var(--zui-table-row-rose-fg-hover-dark,oklch(94.1%_0.03_12.58))]\",\n purple:\n \"border-[color:var(--zui-table-row-purple-border,oklch(43.8%_0.218_303.724))] dark:border-[color:var(--zui-table-row-purple-border-dark,oklch(55.8%_0.288_302.321))] hover:bg-[var(--zui-table-row-purple-bg-hover,oklch(62.7%_0.265_303.9))] dark:hover:bg-[var(--zui-table-row-purple-bg-hover-dark,oklch(38.1%_0.176_304.987))] hover:text-[color:var(--zui-table-row-purple-fg-hover,oklch(94.6%_0.033_307.174))] dark:hover:text-[color:var(--zui-table-row-purple-fg-hover-dark,oklch(94.6%_0.033_307.174))]\",\n pink: \"border-[color:var(--zui-table-row-pink-border,oklch(45.9%_0.187_3.815))] dark:border-[color:var(--zui-table-row-pink-border-dark,oklch(59.2%_0.249_0.584))] hover:bg-[var(--zui-table-row-pink-bg-hover,oklch(65.6%_0.241_354.308))] dark:hover:bg-[var(--zui-table-row-pink-bg-hover-dark,oklch(40.8%_0.153_2.432))] hover:text-[color:var(--zui-table-row-pink-fg-hover,oklch(94.8%_0.028_342.258))] dark:hover:text-[color:var(--zui-table-row-pink-fg-hover-dark,oklch(94.8%_0.028_342.258))]\",\n orange:\n \"border-[color:var(--zui-table-row-orange-border,oklch(47%_0.157_37.304))] dark:border-[color:var(--zui-table-row-orange-border-dark,oklch(64.6%_0.222_41.116))] hover:bg-[var(--zui-table-row-orange-bg-hover,oklch(70.5%_0.213_47.604))] dark:hover:bg-[var(--zui-table-row-orange-bg-hover-dark,oklch(40.8%_0.123_38.172))] hover:text-[color:var(--zui-table-row-orange-fg-hover,oklch(95.4%_0.038_75.164))] dark:hover:text-[color:var(--zui-table-row-orange-fg-hover-dark,oklch(95.4%_0.038_75.164))]\",\n yellow:\n \"border-[color:var(--zui-table-row-yellow-border,oklch(47.6%_0.114_61.907))] dark:border-[color:var(--zui-table-row-yellow-border-dark,oklch(68.1%_0.162_75.834))] hover:bg-[var(--zui-table-row-yellow-bg-hover,oklch(79.5%_0.184_86.047))] dark:hover:bg-[var(--zui-table-row-yellow-bg-hover-dark,oklch(42.1%_0.095_57.708))] hover:text-[color:var(--zui-table-row-yellow-fg-hover,oklch(97.3%_0.071_103.193))] dark:hover:text-[color:var(--zui-table-row-yellow-fg-hover-dark,oklch(97.3%_0.071_103.193))]\",\n teal: \"border-[color:var(--zui-table-row-teal-border,oklch(43.7%_0.078_188.216))] dark:border-[color:var(--zui-table-row-teal-border-dark,oklch(60%_0.118_184.704))] hover:bg-[var(--zui-table-row-teal-bg-hover,oklch(70.4%_0.14_182.503))] dark:hover:bg-[var(--zui-table-row-teal-bg-hover-dark,oklch(38.6%_0.063_188.416))] hover:text-[color:var(--zui-table-row-teal-fg-hover,oklch(95.3%_0.051_180.801))] dark:hover:text-[color:var(--zui-table-row-teal-fg-hover-dark,oklch(95.3%_0.051_180.801))]\",\n indigo:\n \"border-[color:var(--zui-table-row-indigo-border,oklch(39.8%_0.195_277.366))] dark:border-[color:var(--zui-table-row-indigo-border-dark,oklch(51.1%_0.262_276.966))] hover:bg-[var(--zui-table-row-indigo-bg-hover,oklch(58.5%_0.233_277.117))] dark:hover:bg-[var(--zui-table-row-indigo-bg-hover-dark,oklch(35.9%_0.144_278.697))] hover:text-[color:var(--zui-table-row-indigo-fg-hover,oklch(93%_0.034_272.788))] dark:hover:text-[color:var(--zui-table-row-indigo-fg-hover-dark,oklch(93%_0.034_272.788))]\",\n emerald:\n \"border-[color:var(--zui-table-row-emerald-border,oklch(43.2%_0.095_166.913))] dark:border-[color:var(--zui-table-row-emerald-border-dark,oklch(59.6%_0.145_163.225))] hover:bg-[var(--zui-table-row-emerald-bg-hover,oklch(69.6%_0.17_162.48))] dark:hover:bg-[var(--zui-table-row-emerald-bg-hover-dark,oklch(37.8%_0.077_168.94))] hover:text-[color:var(--zui-table-row-emerald-fg-hover,oklch(95%_0.052_163.051))] dark:hover:text-[color:var(--zui-table-row-emerald-fg-hover-dark,oklch(95%_0.052_163.051))]\",\n gray: \"border-[color:var(--zui-table-row-gray-border,oklch(27.8%_0.033_256.848))] dark:border-[color:var(--zui-table-row-gray-border-dark,oklch(44.6%_0.03_256.802))] hover:bg-[var(--zui-table-row-gray-bg-hover,oklch(55.1%_0.027_264.364))] dark:hover:bg-[var(--zui-table-row-gray-bg-hover-dark,oklch(21%_0.034_264.665))] hover:text-[color:var(--zui-table-row-gray-fg-hover,oklch(96.7%_0.003_264.542))] dark:hover:text-[color:var(--zui-table-row-gray-fg-hover-dark,oklch(96.7%_0.003_264.542))]\",\n amber:\n \"border-[color:var(--zui-table-row-amber-border,oklch(47.3%_0.137_46.201))] dark:border-[color:var(--zui-table-row-amber-border-dark,oklch(66.6%_0.179_58.318))] hover:bg-[var(--zui-table-row-amber-bg-hover,oklch(76.9%_0.188_70.08))] dark:hover:bg-[var(--zui-table-row-amber-bg-hover-dark,oklch(41.4%_0.112_45.904))] hover:text-[color:var(--zui-table-row-amber-fg-hover,oklch(96.2%_0.059_95.617))] dark:hover:text-[color:var(--zui-table-row-amber-fg-hover-dark,oklch(96.2%_0.059_95.617))]\",\n violet:\n \"border-[color:var(--zui-table-row-violet-border,oklch(43.2%_0.232_292.759))] dark:border-[color:var(--zui-table-row-violet-border-dark,oklch(54.1%_0.281_293.009))] hover:bg-[var(--zui-table-row-violet-bg-hover,oklch(60.6%_0.25_292.717))] dark:hover:bg-[var(--zui-table-row-violet-bg-hover-dark,oklch(38%_0.189_293.745))] hover:text-[color:var(--zui-table-row-violet-fg-hover,oklch(94.3%_0.029_294.588))] dark:hover:text-[color:var(--zui-table-row-violet-fg-hover-dark,oklch(94.3%_0.029_294.588))]\",\n} as const;\n\nexport const zuiTableCellBase = \"min-w-0 border p-3 align-middle break-words\";\n\nexport const zuiTableCellAppearances = {\n default:\n \"border-[color:var(--zui-table-cell-default-border,#0000001a)] dark:border-[color:var(--zui-table-cell-default-border-dark,#ffffff1a)]\",\n striped:\n \"border-[color:var(--zui-table-cell-striped-border,#0000001a)] dark:border-[color:var(--zui-table-cell-striped-border-dark,#ffffff1a)]\",\n bordered:\n \"border-[color:var(--zui-table-cell-bordered-border,#0000001a)] dark:border-[color:var(--zui-table-cell-bordered-border-dark,#ffffff1a)]\",\n ghost:\n \"border-[color:var(--zui-table-cell-ghost-border,#0000001a)] dark:border-[color:var(--zui-table-cell-ghost-border-dark,#ffffff1a)]\",\n sky: \"border-[color:var(--zui-table-cell-sky-border,oklch(44.3%_0.11_240.79))] dark:border-[color:var(--zui-table-cell-sky-border-dark,oklch(58.8%_0.158_241.966))]\",\n rose: \"border-[color:var(--zui-table-cell-rose-border,oklch(45.5%_0.188_13.697))] dark:border-[color:var(--zui-table-cell-rose-border-dark,oklch(58.6%_0.253_17.585))]\",\n purple:\n \"border-[color:var(--zui-table-cell-purple-border,oklch(43.8%_0.218_303.724))] dark:border-[color:var(--zui-table-cell-purple-border-dark,oklch(55.8%_0.288_302.321))]\",\n pink: \"border-[color:var(--zui-table-cell-pink-border,oklch(45.9%_0.187_3.815))] dark:border-[color:var(--zui-table-cell-pink-border-dark,oklch(59.2%_0.249_0.584))]\",\n orange:\n \"border-[color:var(--zui-table-cell-orange-border,oklch(47%_0.157_37.304))] dark:border-[color:var(--zui-table-cell-orange-border-dark,oklch(64.6%_0.222_41.116))]\",\n yellow:\n \"border-[color:var(--zui-table-cell-yellow-border,oklch(47.6%_0.114_61.907))] dark:border-[color:var(--zui-table-cell-yellow-border-dark,oklch(68.1%_0.162_75.834))]\",\n teal: \"border-[color:var(--zui-table-cell-teal-border,oklch(43.7%_0.078_188.216))] dark:border-[color:var(--zui-table-cell-teal-border-dark,oklch(60%_0.118_184.704))]\",\n indigo:\n \"border-[color:var(--zui-table-cell-indigo-border,oklch(39.8%_0.195_277.366))] dark:border-[color:var(--zui-table-cell-indigo-border-dark,oklch(51.1%_0.262_276.966))]\",\n emerald:\n \"border-[color:var(--zui-table-cell-emerald-border,oklch(43.2%_0.095_166.913))] dark:border-[color:var(--zui-table-cell-emerald-border-dark,oklch(59.6%_0.145_163.225))]\",\n gray: \"border-[color:var(--zui-table-cell-gray-border,oklch(27.8%_0.033_256.848))] dark:border-[color:var(--zui-table-cell-gray-border-dark,oklch(44.6%_0.03_256.802))]\",\n amber:\n \"border-[color:var(--zui-table-cell-amber-border,oklch(47.3%_0.137_46.201))] dark:border-[color:var(--zui-table-cell-amber-border-dark,oklch(66.6%_0.179_58.318))]\",\n violet:\n \"border-[color:var(--zui-table-cell-violet-border,oklch(43.2%_0.232_292.759))] dark:border-[color:var(--zui-table-cell-violet-border-dark,oklch(54.1%_0.281_293.009))]\",\n} as const;\n\nexport const zuiTableCellSizes = {\n sm: \"p-2\",\n md: \"p-3\",\n lg: \"p-4\",\n} as const;\n\nexport const zuiTableTextAlignments = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n} as const;\n","import { cva } from \"class-variance-authority\";\n\nimport {\n zuiTableAppearances,\n zuiTableBase,\n zuiTableCellAppearances,\n zuiTableCellBase,\n zuiTableCellSizes,\n zuiTableRowAppearances,\n zuiTableRowBase,\n zuiTableSizes,\n zuiTableStickyHeader,\n zuiTableTextAlignments,\n} from \"../../design-system/table\";\n\nexport const tableVariants = cva(zuiTableBase, {\n variants: {\n appearance: zuiTableAppearances,\n size: zuiTableSizes,\n stickyHeader: zuiTableStickyHeader,\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n stickyHeader: false,\n },\n});\n\nexport const tableRowVariants = cva(zuiTableRowBase, {\n variants: {\n appearance: zuiTableRowAppearances,\n },\n defaultVariants: { appearance: \"default\" },\n});\n\nexport const tableCellVariants = cva(zuiTableCellBase, {\n variants: {\n appearance: zuiTableCellAppearances,\n size: zuiTableCellSizes,\n textAlign: zuiTableTextAlignments,\n },\n defaultVariants: { appearance: \"default\", size: \"md\" },\n});\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n type KeyboardEvent,\n} from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type {\n TableCtx,\n TableCellProps,\n TableHeadCellProps,\n TableProps,\n TableSectionProps,\n TableSortDirection,\n} from \"./types\";\nimport { tableCellVariants, tableRowVariants, tableVariants } from \"./variants\";\n\nexport const TableContext = createContext<TableCtx | null>(null);\n\nexport function useTableContext(component: string): TableCtx {\n const ctx = useContext(TableContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Table>`);\n }\n return ctx;\n}\n\nexport function TableBase(props: TableProps) {\n const {\n className,\n appearance = \"default\",\n size = \"md\",\n textAlign = \"left\",\n stickyHeader = false,\n scrollAreaAriaLabel,\n children,\n ref,\n ...rest\n } = props;\n const ctx = useMemo(\n () => ({\n appearance: appearance ?? \"default\",\n size: size ?? \"md\",\n stickyHeader: Boolean(stickyHeader),\n rowAnimation: \"none\" as const,\n textAlign,\n }),\n [appearance, size, stickyHeader, textAlign],\n );\n\n return (\n <TableContext.Provider value={ctx}>\n <div\n data-slot=\"table-scroll\"\n tabIndex={0}\n role=\"region\"\n aria-label={scrollAreaAriaLabel ?? \"Scrollable table\"}\n className={cn(\n \"relative w-full overflow-auto\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950\",\n )}\n >\n <table\n ref={ref}\n data-slot=\"table\"\n className={cn(\n tableVariants({ appearance, size, stickyHeader }),\n \"w-full min-w-0 table\",\n className,\n )}\n {...rest}\n >\n {children}\n </table>\n </div>\n </TableContext.Provider>\n );\n}\n\nTableBase.displayName = \"Table\";\n\nexport function TableHeader({ className, children }: TableSectionProps) {\n const { stickyHeader } = useTableContext(\"TableHeader\");\n const stickyClass = stickyHeader\n ? \"sticky top-0 z-10 dark:bg-slate-950/95 bg-slate-50/95 backdrop-blur\"\n : \"\";\n return (\n <thead data-slot=\"table-header\" className={cn(stickyClass, className)}>\n {children}\n </thead>\n );\n}\n\nTableHeader.displayName = \"TableHeader\";\n\nexport function TableBody({ className, children }: TableSectionProps) {\n return (\n <tbody data-slot=\"table-body\" className={cn(className)}>\n {children}\n </tbody>\n );\n}\n\nTableBody.displayName = \"TableBody\";\n\nexport function TableFooter({ className, children }: TableSectionProps) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"border-t border-white/10 bg-white/3 font-medium\",\n className,\n )}\n >\n {children}\n </tfoot>\n );\n}\n\nTableFooter.displayName = \"TableFooter\";\n\nexport function TableRow({\n className,\n children,\n ref,\n as: Wrapper = \"tr\",\n rowAnimation: _rowAnimation,\n ...rest\n}: TableSectionProps & { ref?: React.Ref<HTMLTableRowElement> }) {\n const { appearance } = useTableContext(\"TableRow\");\n\n return (\n <Wrapper\n ref={ref}\n data-slot=\"table-row\"\n className={cn(tableRowVariants({ appearance }), className)}\n {...rest}\n >\n {children}\n </Wrapper>\n );\n}\n\nTableRow.displayName = \"TableRow\";\n\nexport function TableHead({\n className,\n children,\n scope = \"col\",\n sortKey,\n sortDirection,\n onSortChange,\n onClick,\n onKeyDown,\n tabIndex,\n ref,\n ...rest\n}: TableHeadCellProps) {\n const { appearance, size, textAlign } = useTableContext(\"TableHead\");\n const isSortable = Boolean(sortKey && onSortChange);\n const sortableDirection: TableSortDirection = sortDirection ?? \"none\";\n\n const handleSort = useCallback(() => {\n if (!sortKey || !onSortChange) {\n return;\n }\n\n const nextDirection: TableSortDirection =\n sortableDirection === \"ascending\"\n ? \"descending\"\n : sortableDirection === \"descending\"\n ? \"none\"\n : \"ascending\";\n\n onSortChange({\n sortKey,\n sortDirection: nextDirection,\n });\n }, [onSortChange, sortKey, sortableDirection]);\n\n const handleClick = useCallback<NonNullable<TableHeadCellProps[\"onClick\"]>>(\n (event) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n handleSort();\n }\n },\n [handleSort, onClick],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLTableCellElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || !isSortable) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleSort();\n }\n },\n [handleSort, isSortable, onKeyDown],\n );\n\n return (\n <th\n ref={ref}\n data-slot=\"table-head\"\n scope={scope}\n aria-sort={isSortable ? sortableDirection : sortDirection}\n data-sort-key={sortKey}\n data-sort-direction={sortDirection}\n tabIndex={isSortable ? (tabIndex ?? 0) : tabIndex}\n className={cn(\n tableCellVariants({ appearance, size, textAlign }),\n isSortable &&\n \"cursor-pointer select-none outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950\",\n className,\n )}\n onClick={isSortable ? handleClick : onClick}\n onKeyDown={isSortable ? handleKeyDown : onKeyDown}\n {...rest}\n >\n {children}\n </th>\n );\n}\n\nTableHead.displayName = \"TableHead\";\n\nexport function TableCell({\n className,\n children,\n ref,\n scope,\n ...rest\n}: TableCellProps) {\n const { appearance, size, textAlign } = useTableContext(\"TableCell\");\n const cellClassName = cn(\n tableCellVariants({ appearance, size, textAlign }),\n className,\n );\n\n if (scope !== undefined) {\n return (\n <th\n ref={ref}\n data-slot=\"table-cell\"\n scope={scope}\n className={cellClassName}\n {...rest}\n >\n {children}\n </th>\n );\n }\n\n return (\n <td ref={ref} data-slot=\"table-cell\" className={cellClassName} {...rest}>\n {children}\n </td>\n );\n}\n\nTableCell.displayName = \"TableCell\";\n\nexport function TableCaption({ className, children }: TableSectionProps) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-3 text-left text-xs text-slate-500\", className)}\n >\n {children}\n </caption>\n );\n}\n\nTableCaption.displayName = \"TableCaption\";\n"]}
@@ -0,0 +1,97 @@
1
+ 'use strict';
2
+
3
+ var chunkPWPMKXEG_js = require('./chunk-PWPMKXEG.js');
4
+ var recharts = require('recharts');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ function BarChart({
8
+ appearance,
9
+ className,
10
+ containerStyle,
11
+ data,
12
+ density,
13
+ emptyState = null,
14
+ height = 320,
15
+ margin = chunkPWPMKXEG_js.defaultChartMargin,
16
+ series,
17
+ showGrid = true,
18
+ showLegend = false,
19
+ showTooltip = true,
20
+ tooltipColor = "#0f172a",
21
+ stacked = false,
22
+ style,
23
+ syncId,
24
+ xKey,
25
+ ...props
26
+ }) {
27
+ const hasData = data.length > 0 && series.length > 0;
28
+ const xAxisKey = String(xKey);
29
+ return /* @__PURE__ */ jsxRuntime.jsx(
30
+ chunkPWPMKXEG_js.ChartFrame,
31
+ {
32
+ appearance,
33
+ className,
34
+ containerStyle,
35
+ density,
36
+ emptyState,
37
+ hasData,
38
+ height,
39
+ style,
40
+ ...props,
41
+ children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.BarChart, { data, margin, syncId, children: [
42
+ /* @__PURE__ */ jsxRuntime.jsx(
43
+ chunkPWPMKXEG_js.ChartDecorators,
44
+ {
45
+ axis: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
46
+ /* @__PURE__ */ jsxRuntime.jsx(
47
+ recharts.XAxis,
48
+ {
49
+ dataKey: xAxisKey,
50
+ minTickGap: 24,
51
+ tickLine: false,
52
+ tickMargin: 10,
53
+ axisLine: false,
54
+ fontSize: 12
55
+ }
56
+ ),
57
+ /* @__PURE__ */ jsxRuntime.jsx(
58
+ recharts.YAxis,
59
+ {
60
+ width: 40,
61
+ tickLine: false,
62
+ tickMargin: 8,
63
+ axisLine: false,
64
+ fontSize: 12
65
+ }
66
+ )
67
+ ] }),
68
+ showGrid,
69
+ showLegend,
70
+ showTooltip,
71
+ tooltipColor
72
+ }
73
+ ),
74
+ series.map((item, index) => {
75
+ const color = chunkPWPMKXEG_js.resolveColor(item.color, index);
76
+ return /* @__PURE__ */ jsxRuntime.jsx(
77
+ recharts.Bar,
78
+ {
79
+ dataKey: item.dataKey,
80
+ name: item.name,
81
+ stackId: stacked ? item.stackId ?? "stack" : item.stackId,
82
+ fill: item.fill ?? color.stroke,
83
+ radius: [6, 6, 0, 0],
84
+ stroke: item.stroke ?? color.stroke
85
+ },
86
+ item.dataKey
87
+ );
88
+ })
89
+ ] })
90
+ }
91
+ );
92
+ }
93
+ BarChart.displayName = "BarChart";
94
+
95
+ exports.BarChart = BarChart;
96
+ //# sourceMappingURL=chunk-LREMK2XR.js.map
97
+ //# sourceMappingURL=chunk-LREMK2XR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/charts/bar/Bar.tsx"],"names":["defaultChartMargin","jsx","ChartFrame","jsxs","RechartsBarChart","ChartDecorators","Fragment","XAxis","YAxis","resolveColor","Bar"],"mappings":";;;;;;AAYO,SAAS,QAAA,CAEd;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,MAAA,GAAS,GAAA;AAAA,EACT,MAAA,GAASA,mCAAA;AAAA,EACT,MAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,UAAA,GAAa,KAAA;AAAA,EACb,WAAA,GAAc,IAAA;AAAA,EACd,YAAA,GAAe,SAAA;AAAA,EACf,OAAA,GAAU,KAAA;AAAA,EACV,KAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0B;AACxB,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,OAAO,MAAA,GAAS,CAAA;AACnD,EAAA,MAAM,QAAA,GAAW,OAAO,IAAI,CAAA;AAE5B,EAAA,uBACEC,cAAA;AAAA,IAACC,2BAAA;AAAA,IAAA;AAAA,MACC,UAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAC,eAAA,CAACC,iBAAA,EAAA,EAAiB,IAAA,EAAY,MAAA,EAAgB,MAAA,EAC5C,QAAA,EAAA;AAAA,wBAAAH,cAAA;AAAA,UAACI,gCAAA;AAAA,UAAA;AAAA,YACC,sBACEF,eAAA,CAAAG,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,8BAAAL,cAAA;AAAA,gBAACM,cAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,QAAA;AAAA,kBACT,UAAA,EAAY,EAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,UAAA,EAAY,EAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,QAAA,EAAU;AAAA;AAAA,eACZ;AAAA,8BACAN,cAAA;AAAA,gBAACO,cAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,EAAA;AAAA,kBACP,QAAA,EAAU,KAAA;AAAA,kBACV,UAAA,EAAY,CAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,QAAA,EAAU;AAAA;AAAA;AACZ,aAAA,EACF,CAAA;AAAA,YAEF,QAAA;AAAA,YACA,UAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,QACC,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC3B,UAAA,MAAM,KAAA,GAAQC,6BAAA,CAAa,IAAA,CAAK,KAAA,EAAO,KAAK,CAAA;AAC5C,UAAA,uBACER,cAAA;AAAA,YAACS,YAAA;AAAA,YAAA;AAAA,cAEC,SAAS,IAAA,CAAK,OAAA;AAAA,cACd,MAAM,IAAA,CAAK,IAAA;AAAA,cACX,OAAA,EAAS,OAAA,GAAW,IAAA,CAAK,OAAA,IAAW,UAAW,IAAA,CAAK,OAAA;AAAA,cACpD,IAAA,EAAM,IAAA,CAAK,IAAA,IAAQ,KAAA,CAAM,MAAA;AAAA,cACzB,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,cACnB,MAAA,EAAQ,IAAA,CAAK,MAAA,IAAU,KAAA,CAAM;AAAA,aAAA;AAAA,YANxB,IAAA,CAAK;AAAA,WAOZ;AAAA,QAEJ,CAAC;AAAA,OAAA,EACH;AAAA;AAAA,GACF;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-LREMK2XR.js","sourcesContent":["\"use client\";\n\nimport { Bar, BarChart as RechartsBarChart, XAxis, YAxis } from \"recharts\";\n\nimport {\n ChartDecorators,\n ChartFrame,\n defaultChartMargin,\n} from \"../shared/chart-frame\";\nimport { resolveColor } from \"../shared/colors\";\nimport type { BarChartProps } from \"../shared/types\";\n\nexport function BarChart<\n TDatum extends Record<string, number | string | null | undefined>,\n>({\n appearance,\n className,\n containerStyle,\n data,\n density,\n emptyState = null,\n height = 320,\n margin = defaultChartMargin,\n series,\n showGrid = true,\n showLegend = false,\n showTooltip = true,\n tooltipColor = \"#0f172a\",\n stacked = false,\n style,\n syncId,\n xKey,\n ...props\n}: BarChartProps<TDatum>) {\n const hasData = data.length > 0 && series.length > 0;\n const xAxisKey = String(xKey);\n\n return (\n <ChartFrame\n appearance={appearance}\n className={className}\n containerStyle={containerStyle}\n density={density}\n emptyState={emptyState}\n hasData={hasData}\n height={height}\n style={style}\n {...props}\n >\n <RechartsBarChart data={data} margin={margin} syncId={syncId}>\n <ChartDecorators\n axis={\n <>\n <XAxis\n dataKey={xAxisKey}\n minTickGap={24}\n tickLine={false}\n tickMargin={10}\n axisLine={false}\n fontSize={12}\n />\n <YAxis\n width={40}\n tickLine={false}\n tickMargin={8}\n axisLine={false}\n fontSize={12}\n />\n </>\n }\n showGrid={showGrid}\n showLegend={showLegend}\n showTooltip={showTooltip}\n tooltipColor={tooltipColor}\n />\n {series.map((item, index) => {\n const color = resolveColor(item.color, index);\n return (\n <Bar\n key={item.dataKey}\n dataKey={item.dataKey}\n name={item.name}\n stackId={stacked ? (item.stackId ?? \"stack\") : item.stackId}\n fill={item.fill ?? color.stroke}\n radius={[6, 6, 0, 0]}\n stroke={item.stroke ?? color.stroke}\n />\n );\n })}\n </RechartsBarChart>\n </ChartFrame>\n );\n}\n\nBarChart.displayName = \"BarChart\";\n"]}
@@ -0,0 +1,95 @@
1
+ import { ChartFrame, defaultChartMargin, ChartDecorators, resolveColor } from './chunk-HZIRD3SR.mjs';
2
+ import { BarChart as BarChart$1, XAxis, YAxis, Bar } from 'recharts';
3
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
+
5
+ function BarChart({
6
+ appearance,
7
+ className,
8
+ containerStyle,
9
+ data,
10
+ density,
11
+ emptyState = null,
12
+ height = 320,
13
+ margin = defaultChartMargin,
14
+ series,
15
+ showGrid = true,
16
+ showLegend = false,
17
+ showTooltip = true,
18
+ tooltipColor = "#0f172a",
19
+ stacked = false,
20
+ style,
21
+ syncId,
22
+ xKey,
23
+ ...props
24
+ }) {
25
+ const hasData = data.length > 0 && series.length > 0;
26
+ const xAxisKey = String(xKey);
27
+ return /* @__PURE__ */ jsx(
28
+ ChartFrame,
29
+ {
30
+ appearance,
31
+ className,
32
+ containerStyle,
33
+ density,
34
+ emptyState,
35
+ hasData,
36
+ height,
37
+ style,
38
+ ...props,
39
+ children: /* @__PURE__ */ jsxs(BarChart$1, { data, margin, syncId, children: [
40
+ /* @__PURE__ */ jsx(
41
+ ChartDecorators,
42
+ {
43
+ axis: /* @__PURE__ */ jsxs(Fragment, { children: [
44
+ /* @__PURE__ */ jsx(
45
+ XAxis,
46
+ {
47
+ dataKey: xAxisKey,
48
+ minTickGap: 24,
49
+ tickLine: false,
50
+ tickMargin: 10,
51
+ axisLine: false,
52
+ fontSize: 12
53
+ }
54
+ ),
55
+ /* @__PURE__ */ jsx(
56
+ YAxis,
57
+ {
58
+ width: 40,
59
+ tickLine: false,
60
+ tickMargin: 8,
61
+ axisLine: false,
62
+ fontSize: 12
63
+ }
64
+ )
65
+ ] }),
66
+ showGrid,
67
+ showLegend,
68
+ showTooltip,
69
+ tooltipColor
70
+ }
71
+ ),
72
+ series.map((item, index) => {
73
+ const color = resolveColor(item.color, index);
74
+ return /* @__PURE__ */ jsx(
75
+ Bar,
76
+ {
77
+ dataKey: item.dataKey,
78
+ name: item.name,
79
+ stackId: stacked ? item.stackId ?? "stack" : item.stackId,
80
+ fill: item.fill ?? color.stroke,
81
+ radius: [6, 6, 0, 0],
82
+ stroke: item.stroke ?? color.stroke
83
+ },
84
+ item.dataKey
85
+ );
86
+ })
87
+ ] })
88
+ }
89
+ );
90
+ }
91
+ BarChart.displayName = "BarChart";
92
+
93
+ export { BarChart };
94
+ //# sourceMappingURL=chunk-O2KM3ETC.mjs.map
95
+ //# sourceMappingURL=chunk-O2KM3ETC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/charts/bar/Bar.tsx"],"names":["RechartsBarChart"],"mappings":";;;;AAYO,SAAS,QAAA,CAEd;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,MAAA,GAAS,GAAA;AAAA,EACT,MAAA,GAAS,kBAAA;AAAA,EACT,MAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,UAAA,GAAa,KAAA;AAAA,EACb,WAAA,GAAc,IAAA;AAAA,EACd,YAAA,GAAe,SAAA;AAAA,EACf,OAAA,GAAU,KAAA;AAAA,EACV,KAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0B;AACxB,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,OAAO,MAAA,GAAS,CAAA;AACnD,EAAA,MAAM,QAAA,GAAW,OAAO,IAAI,CAAA;AAE5B,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,UAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,IAAA,CAACA,UAAA,EAAA,EAAiB,IAAA,EAAY,MAAA,EAAgB,MAAA,EAC5C,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,sBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,QAAA;AAAA,kBACT,UAAA,EAAY,EAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,UAAA,EAAY,EAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,QAAA,EAAU;AAAA;AAAA,eACZ;AAAA,8BACA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,EAAA;AAAA,kBACP,QAAA,EAAU,KAAA;AAAA,kBACV,UAAA,EAAY,CAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,QAAA,EAAU;AAAA;AAAA;AACZ,aAAA,EACF,CAAA;AAAA,YAEF,QAAA;AAAA,YACA,UAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,QACC,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC3B,UAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,KAAK,CAAA;AAC5C,UAAA,uBACE,GAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cAEC,SAAS,IAAA,CAAK,OAAA;AAAA,cACd,MAAM,IAAA,CAAK,IAAA;AAAA,cACX,OAAA,EAAS,OAAA,GAAW,IAAA,CAAK,OAAA,IAAW,UAAW,IAAA,CAAK,OAAA;AAAA,cACpD,IAAA,EAAM,IAAA,CAAK,IAAA,IAAQ,KAAA,CAAM,MAAA;AAAA,cACzB,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,cACnB,MAAA,EAAQ,IAAA,CAAK,MAAA,IAAU,KAAA,CAAM;AAAA,aAAA;AAAA,YANxB,IAAA,CAAK;AAAA,WAOZ;AAAA,QAEJ,CAAC;AAAA,OAAA,EACH;AAAA;AAAA,GACF;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-O2KM3ETC.mjs","sourcesContent":["\"use client\";\n\nimport { Bar, BarChart as RechartsBarChart, XAxis, YAxis } from \"recharts\";\n\nimport {\n ChartDecorators,\n ChartFrame,\n defaultChartMargin,\n} from \"../shared/chart-frame\";\nimport { resolveColor } from \"../shared/colors\";\nimport type { BarChartProps } from \"../shared/types\";\n\nexport function BarChart<\n TDatum extends Record<string, number | string | null | undefined>,\n>({\n appearance,\n className,\n containerStyle,\n data,\n density,\n emptyState = null,\n height = 320,\n margin = defaultChartMargin,\n series,\n showGrid = true,\n showLegend = false,\n showTooltip = true,\n tooltipColor = \"#0f172a\",\n stacked = false,\n style,\n syncId,\n xKey,\n ...props\n}: BarChartProps<TDatum>) {\n const hasData = data.length > 0 && series.length > 0;\n const xAxisKey = String(xKey);\n\n return (\n <ChartFrame\n appearance={appearance}\n className={className}\n containerStyle={containerStyle}\n density={density}\n emptyState={emptyState}\n hasData={hasData}\n height={height}\n style={style}\n {...props}\n >\n <RechartsBarChart data={data} margin={margin} syncId={syncId}>\n <ChartDecorators\n axis={\n <>\n <XAxis\n dataKey={xAxisKey}\n minTickGap={24}\n tickLine={false}\n tickMargin={10}\n axisLine={false}\n fontSize={12}\n />\n <YAxis\n width={40}\n tickLine={false}\n tickMargin={8}\n axisLine={false}\n fontSize={12}\n />\n </>\n }\n showGrid={showGrid}\n showLegend={showLegend}\n showTooltip={showTooltip}\n tooltipColor={tooltipColor}\n />\n {series.map((item, index) => {\n const color = resolveColor(item.color, index);\n return (\n <Bar\n key={item.dataKey}\n dataKey={item.dataKey}\n name={item.name}\n stackId={stacked ? (item.stackId ?? \"stack\") : item.stackId}\n fill={item.fill ?? color.stroke}\n radius={[6, 6, 0, 0]}\n stroke={item.stroke ?? color.stroke}\n />\n );\n })}\n </RechartsBarChart>\n </ChartFrame>\n );\n}\n\nBarChart.displayName = \"BarChart\";\n"]}
@@ -0,0 +1,48 @@
1
+ import { useState, useRef, useCallback } from 'react';
2
+
3
+ // src/hooks/useClipboard/useClipboard.ts
4
+ function useClipboard(resetDelay = 2e3) {
5
+ const [copied, setCopied] = useState(false);
6
+ const [error, setError] = useState(void 0);
7
+ const timeoutRef = useRef(
8
+ void 0
9
+ );
10
+ const reset = useCallback(() => {
11
+ if (timeoutRef.current) {
12
+ clearTimeout(timeoutRef.current);
13
+ timeoutRef.current = void 0;
14
+ }
15
+ setCopied(false);
16
+ setError(void 0);
17
+ }, []);
18
+ const copy = useCallback(
19
+ async (text) => {
20
+ reset();
21
+ if (typeof navigator === "undefined" || !navigator.clipboard?.writeText) {
22
+ const err = new Error("Clipboard API is not available");
23
+ setError(err);
24
+ return false;
25
+ }
26
+ try {
27
+ await navigator.clipboard.writeText(text);
28
+ setCopied(true);
29
+ if (resetDelay > 0) {
30
+ timeoutRef.current = setTimeout(() => {
31
+ setCopied(false);
32
+ }, resetDelay);
33
+ }
34
+ return true;
35
+ } catch (cause) {
36
+ const err = cause instanceof Error ? cause : new Error(String(cause));
37
+ setError(err);
38
+ return false;
39
+ }
40
+ },
41
+ [reset, resetDelay]
42
+ );
43
+ return { copied, error, copy, reset };
44
+ }
45
+
46
+ export { useClipboard };
47
+ //# sourceMappingURL=chunk-ODBG4Y6R.mjs.map
48
+ //# sourceMappingURL=chunk-ODBG4Y6R.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useClipboard/useClipboard.ts"],"names":[],"mappings":";;;AAwBO,SAAS,YAAA,CAAa,aAAa,GAAA,EAA0B;AAClE,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAA4B,MAAS,CAAA;AAC/D,EAAA,MAAM,UAAA,GAAa,MAAA;AAAA,IACjB;AAAA,GACF;AAEA,EAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAA,IAAI,WAAW,OAAA,EAAS;AACtB,MAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAC/B,MAAA,UAAA,CAAW,OAAA,GAAU,MAAA;AAAA,IACvB;AACA,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAA,QAAA,CAAS,MAAS,CAAA;AAAA,EACpB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,IAAA,GAAO,WAAA;AAAA,IACX,OAAO,IAAA,KAAiB;AACtB,MAAA,KAAA,EAAM;AACN,MAAA,IAAI,OAAO,SAAA,KAAc,WAAA,IAAe,CAAC,SAAA,CAAU,WAAW,SAAA,EAAW;AACvE,QAAA,MAAM,GAAA,GAAM,IAAI,KAAA,CAAM,gCAAgC,CAAA;AACtD,QAAA,QAAA,CAAS,GAAG,CAAA;AACZ,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,IAAI;AACF,QAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,IAAI,CAAA;AACxC,QAAA,SAAA,CAAU,IAAI,CAAA;AACd,QAAA,IAAI,aAAa,CAAA,EAAG;AAClB,UAAA,UAAA,CAAW,OAAA,GAAU,WAAW,MAAM;AACpC,YAAA,SAAA,CAAU,KAAK,CAAA;AAAA,UACjB,GAAG,UAAU,CAAA;AAAA,QACf;AACA,QAAA,OAAO,IAAA;AAAA,MACT,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,GAAA,GAAM,iBAAiB,KAAA,GAAQ,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC,CAAA;AACpE,QAAA,QAAA,CAAS,GAAG,CAAA;AACZ,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF,CAAA;AAAA,IACA,CAAC,OAAO,UAAU;AAAA,GACpB;AAEA,EAAA,OAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,KAAA,EAAM;AACtC","file":"chunk-ODBG4Y6R.mjs","sourcesContent":["\"use client\";\n\nimport { useCallback, useRef, useState } from \"react\";\n\nexport type UseClipboardResult = {\n /** `true` after a successful `copy` until the reset delay elapses or `reset` is called. */\n copied: boolean;\n /** Set when the Clipboard API is missing or `writeText` rejects (e.g. permission denied). */\n error: Error | undefined;\n /** Writes `text` via `navigator.clipboard.writeText`; returns whether the write succeeded. */\n copy: (text: string) => Promise<boolean>;\n /** Clears `copied`/`error` and cancels any pending auto-reset timeout. */\n reset: () => void;\n};\n\n/**\n * Wraps the async Clipboard API with React state for UX feedback (“Copied!”) and error surfacing.\n *\n * After a successful copy, `copied` flips to `true` for `resetDelay` ms (or stays true if `resetDelay` is 0).\n * SSR-safe: `copy` resolves `false` with an error when `navigator.clipboard` is unavailable.\n *\n * @param resetDelay - Milliseconds before `copied` auto-clears after success; `0` disables auto-clear.\n * @returns `{ copied, error, copy, reset }` for rendering and handlers.\n */\nexport function useClipboard(resetDelay = 2000): UseClipboardResult {\n const [copied, setCopied] = useState(false);\n const [error, setError] = useState<Error | undefined>(undefined);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(\n undefined,\n );\n\n const reset = useCallback(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n setCopied(false);\n setError(undefined);\n }, []);\n\n const copy = useCallback(\n async (text: string) => {\n reset();\n if (typeof navigator === \"undefined\" || !navigator.clipboard?.writeText) {\n const err = new Error(\"Clipboard API is not available\");\n setError(err);\n return false;\n }\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n if (resetDelay > 0) {\n timeoutRef.current = setTimeout(() => {\n setCopied(false);\n }, resetDelay);\n }\n return true;\n } catch (cause) {\n const err = cause instanceof Error ? cause : new Error(String(cause));\n setError(err);\n return false;\n }\n },\n [reset, resetDelay],\n );\n\n return { copied, error, copy, reset };\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { cn } from './chunk-4D54YOL6.mjs';
2
2
  import { cva } from 'class-variance-authority';
3
- import { createContext, useContext, useMemo } from 'react';
3
+ import { createContext, useContext, useMemo, useCallback } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
6
6
  // src/design-system/table.ts
@@ -196,11 +196,12 @@ function TableRow({
196
196
  children,
197
197
  ref,
198
198
  as: Wrapper = "tr",
199
+ rowAnimation: _rowAnimation,
199
200
  ...rest
200
201
  }) {
201
202
  const { appearance } = useTableContext("TableRow");
202
203
  return /* @__PURE__ */ jsx(
203
- "tr",
204
+ Wrapper,
204
205
  {
205
206
  ref,
206
207
  "data-slot": "table-row",
@@ -215,22 +216,67 @@ function TableHead({
215
216
  className,
216
217
  children,
217
218
  scope = "col",
219
+ sortKey,
218
220
  sortDirection,
221
+ onSortChange,
222
+ onClick,
223
+ onKeyDown,
224
+ tabIndex,
219
225
  ref,
220
226
  ...rest
221
227
  }) {
222
228
  const { appearance, size, textAlign } = useTableContext("TableHead");
229
+ const isSortable = Boolean(sortKey && onSortChange);
230
+ const sortableDirection = sortDirection ?? "none";
231
+ const handleSort = useCallback(() => {
232
+ if (!sortKey || !onSortChange) {
233
+ return;
234
+ }
235
+ const nextDirection = sortableDirection === "ascending" ? "descending" : sortableDirection === "descending" ? "none" : "ascending";
236
+ onSortChange({
237
+ sortKey,
238
+ sortDirection: nextDirection
239
+ });
240
+ }, [onSortChange, sortKey, sortableDirection]);
241
+ const handleClick = useCallback(
242
+ (event) => {
243
+ onClick?.(event);
244
+ if (!event.defaultPrevented) {
245
+ handleSort();
246
+ }
247
+ },
248
+ [handleSort, onClick]
249
+ );
250
+ const handleKeyDown = useCallback(
251
+ (event) => {
252
+ onKeyDown?.(event);
253
+ if (event.defaultPrevented || !isSortable) {
254
+ return;
255
+ }
256
+ if (event.key === "Enter" || event.key === " ") {
257
+ event.preventDefault();
258
+ handleSort();
259
+ }
260
+ },
261
+ [handleSort, isSortable, onKeyDown]
262
+ );
223
263
  return /* @__PURE__ */ jsx(
224
264
  "th",
225
265
  {
226
266
  ref,
227
267
  "data-slot": "table-head",
228
268
  scope,
229
- "aria-sort": sortDirection,
269
+ "aria-sort": isSortable ? sortableDirection : sortDirection,
270
+ "data-sort-key": sortKey,
271
+ "data-sort-direction": sortDirection,
272
+ tabIndex: isSortable ? tabIndex ?? 0 : tabIndex,
230
273
  className: cn(
231
274
  tableCellVariants({ appearance, size, textAlign }),
275
+ isSortable && "cursor-pointer select-none outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950",
232
276
  className
233
277
  ),
278
+ onClick: isSortable ? handleClick : onClick,
279
+ onKeyDown: isSortable ? handleKeyDown : onKeyDown,
234
280
  ...rest,
235
281
  children
236
282
  }
@@ -278,5 +324,5 @@ function TableCaption({ className, children }) {
278
324
  TableCaption.displayName = "TableCaption";
279
325
 
280
326
  export { TableBase, TableBody, TableCaption, TableCell, TableContext, TableFooter, TableHead, TableHeader, TableRow, tableCellVariants, tableRowVariants, tableVariants, useTableContext };
281
- //# sourceMappingURL=chunk-ZIFMIS7D.mjs.map
282
- //# sourceMappingURL=chunk-ZIFMIS7D.mjs.map
327
+ //# sourceMappingURL=chunk-OL3BJSRC.mjs.map
328
+ //# sourceMappingURL=chunk-OL3BJSRC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/design-system/table.ts","../src/ui/table/variants.ts","../src/ui/table/table-base.tsx"],"names":[],"mappings":"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","file":"chunk-OL3BJSRC.mjs","sourcesContent":["export const zuiTableBase =\n \"w-full table-auto border-collapse caption-bottom text-sm text-[color:var(--zui-table-fg,oklch(37.2%_0.044_257.287))] dark:text-[color:var(--zui-table-fg-dark,oklch(92.9%_0.013_255.508))] md:table-fixed\";\n\nexport const zuiTableAppearances = {\n default: \"\",\n striped: \"\",\n bordered:\n \"border border-[color:var(--zui-table-bordered-border,#0000001a)] dark:border-[color:var(--zui-table-bordered-border-dark,#ffffff1a)]\",\n ghost: \"\",\n sky: \"border border-[color:var(--zui-table-sky-border,oklch(44.3%_0.11_240.79))] dark:border-[color:var(--zui-table-sky-border-dark,oklch(58.8%_0.158_241.966))]\",\n rose: \"border border-[color:var(--zui-table-rose-border,oklch(45.5%_0.188_13.697))] dark:border-[color:var(--zui-table-rose-border-dark,oklch(58.6%_0.253_17.585))]\",\n purple:\n \"border border-[color:var(--zui-table-purple-border,oklch(43.8%_0.218_303.724))] dark:border-[color:var(--zui-table-purple-border-dark,oklch(55.8%_0.288_302.321))]\",\n pink: \"border border-[color:var(--zui-table-pink-border,oklch(45.9%_0.187_3.815))] dark:border-[color:var(--zui-table-pink-border-dark,oklch(59.2%_0.249_0.584))]\",\n orange:\n \"border border-[color:var(--zui-table-orange-border,oklch(47%_0.157_37.304))] dark:border-[color:var(--zui-table-orange-border-dark,oklch(64.6%_0.222_41.116))]\",\n yellow:\n \"border border-[color:var(--zui-table-yellow-border,oklch(47.6%_0.114_61.907))] dark:border-[color:var(--zui-table-yellow-border-dark,oklch(68.1%_0.162_75.834))]\",\n teal: \"border border-[color:var(--zui-table-teal-border,oklch(43.7%_0.078_188.216))] dark:border-[color:var(--zui-table-teal-border-dark,oklch(60%_0.118_184.704))]\",\n indigo:\n \"border border-[color:var(--zui-table-indigo-border,oklch(39.8%_0.195_277.366))] dark:border-[color:var(--zui-table-indigo-border-dark,oklch(51.1%_0.262_276.966))]\",\n emerald:\n \"border border-[color:var(--zui-table-emerald-border,oklch(43.2%_0.095_166.913))] dark:border-[color:var(--zui-table-emerald-border-dark,oklch(59.6%_0.145_163.225))]\",\n gray: \"border border-[color:var(--zui-table-gray-border,oklch(27.8%_0.033_256.848))] dark:border-[color:var(--zui-table-gray-border-dark,oklch(44.6%_0.03_256.802))]\",\n amber:\n \"border border-[color:var(--zui-table-amber-border,oklch(47.3%_0.137_46.201))] dark:border-[color:var(--zui-table-amber-border-dark,oklch(66.6%_0.179_58.318))]\",\n violet:\n \"border border-[color:var(--zui-table-violet-border,oklch(43.2%_0.232_292.759))] dark:border-[color:var(--zui-table-violet-border-dark,oklch(54.1%_0.281_293.009))]\",\n} as const;\n\nexport const zuiTableSizes = {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n} as const;\n\nexport const zuiTableStickyHeader = {\n true: \"\",\n false: \"\",\n} as const;\n\nexport const zuiTableRowBase =\n \"border-b border-[color:var(--zui-table-row-border,#0000000d)] dark:border-[color:var(--zui-table-row-border-dark,#ffffff0d)] transition-colors data-[state=selected]:bg-[var(--zui-table-row-bg-selected,#0000000f)] dark:data-[state=selected]:bg-[var(--zui-table-row-bg-selected-dark,#ffffff0f)]\";\n\nexport const zuiTableRowAppearances = {\n default: \"\",\n striped:\n \"odd:bg-[var(--zui-table-row-striped-bg,#00000008)] dark:odd:bg-[var(--zui-table-row-striped-bg-dark,#ffffff08)]\",\n bordered: \"\",\n ghost:\n \"border-[color:var(--zui-table-row-ghost-border,transparent)] dark:border-[color:var(--zui-table-row-ghost-border-dark,transparent)] hover:bg-[var(--zui-table-row-ghost-bg-hover,#00000008)] dark:hover:bg-[var(--zui-table-row-ghost-bg-hover-dark,#ffffff08)]\",\n sky: \"border-[color:var(--zui-table-row-sky-border,oklch(44.3%_0.11_240.79))] dark:border-[color:var(--zui-table-row-sky-border-dark,oklch(58.8%_0.158_241.966))] hover:bg-[var(--zui-table-row-sky-bg-hover,oklch(44.3%_0.11_240.79))] dark:hover:bg-[var(--zui-table-row-sky-bg-hover-dark,oklch(58.8%_0.158_241.966))] hover:text-[color:var(--zui-table-row-sky-fg-hover,oklch(95.1%_0.026_236.824))] dark:hover:text-[color:var(--zui-table-row-sky-fg-hover-dark,oklch(95.1%_0.026_236.824))]\",\n rose: \"border-[color:var(--zui-table-row-rose-border,oklch(45.5%_0.188_13.697))] dark:border-[color:var(--zui-table-row-rose-border-dark,oklch(58.6%_0.253_17.585))] hover:bg-[var(--zui-table-row-rose-bg-hover,oklch(64.5%_0.246_16.439))] dark:hover:bg-[var(--zui-table-row-rose-bg-hover-dark,oklch(41%_0.159_10.272))] hover:text-[color:var(--zui-table-row-rose-fg-hover,oklch(94.1%_0.03_12.58))] dark:hover:text-[color:var(--zui-table-row-rose-fg-hover-dark,oklch(94.1%_0.03_12.58))]\",\n purple:\n \"border-[color:var(--zui-table-row-purple-border,oklch(43.8%_0.218_303.724))] dark:border-[color:var(--zui-table-row-purple-border-dark,oklch(55.8%_0.288_302.321))] hover:bg-[var(--zui-table-row-purple-bg-hover,oklch(62.7%_0.265_303.9))] dark:hover:bg-[var(--zui-table-row-purple-bg-hover-dark,oklch(38.1%_0.176_304.987))] hover:text-[color:var(--zui-table-row-purple-fg-hover,oklch(94.6%_0.033_307.174))] dark:hover:text-[color:var(--zui-table-row-purple-fg-hover-dark,oklch(94.6%_0.033_307.174))]\",\n pink: \"border-[color:var(--zui-table-row-pink-border,oklch(45.9%_0.187_3.815))] dark:border-[color:var(--zui-table-row-pink-border-dark,oklch(59.2%_0.249_0.584))] hover:bg-[var(--zui-table-row-pink-bg-hover,oklch(65.6%_0.241_354.308))] dark:hover:bg-[var(--zui-table-row-pink-bg-hover-dark,oklch(40.8%_0.153_2.432))] hover:text-[color:var(--zui-table-row-pink-fg-hover,oklch(94.8%_0.028_342.258))] dark:hover:text-[color:var(--zui-table-row-pink-fg-hover-dark,oklch(94.8%_0.028_342.258))]\",\n orange:\n \"border-[color:var(--zui-table-row-orange-border,oklch(47%_0.157_37.304))] dark:border-[color:var(--zui-table-row-orange-border-dark,oklch(64.6%_0.222_41.116))] hover:bg-[var(--zui-table-row-orange-bg-hover,oklch(70.5%_0.213_47.604))] dark:hover:bg-[var(--zui-table-row-orange-bg-hover-dark,oklch(40.8%_0.123_38.172))] hover:text-[color:var(--zui-table-row-orange-fg-hover,oklch(95.4%_0.038_75.164))] dark:hover:text-[color:var(--zui-table-row-orange-fg-hover-dark,oklch(95.4%_0.038_75.164))]\",\n yellow:\n \"border-[color:var(--zui-table-row-yellow-border,oklch(47.6%_0.114_61.907))] dark:border-[color:var(--zui-table-row-yellow-border-dark,oklch(68.1%_0.162_75.834))] hover:bg-[var(--zui-table-row-yellow-bg-hover,oklch(79.5%_0.184_86.047))] dark:hover:bg-[var(--zui-table-row-yellow-bg-hover-dark,oklch(42.1%_0.095_57.708))] hover:text-[color:var(--zui-table-row-yellow-fg-hover,oklch(97.3%_0.071_103.193))] dark:hover:text-[color:var(--zui-table-row-yellow-fg-hover-dark,oklch(97.3%_0.071_103.193))]\",\n teal: \"border-[color:var(--zui-table-row-teal-border,oklch(43.7%_0.078_188.216))] dark:border-[color:var(--zui-table-row-teal-border-dark,oklch(60%_0.118_184.704))] hover:bg-[var(--zui-table-row-teal-bg-hover,oklch(70.4%_0.14_182.503))] dark:hover:bg-[var(--zui-table-row-teal-bg-hover-dark,oklch(38.6%_0.063_188.416))] hover:text-[color:var(--zui-table-row-teal-fg-hover,oklch(95.3%_0.051_180.801))] dark:hover:text-[color:var(--zui-table-row-teal-fg-hover-dark,oklch(95.3%_0.051_180.801))]\",\n indigo:\n \"border-[color:var(--zui-table-row-indigo-border,oklch(39.8%_0.195_277.366))] dark:border-[color:var(--zui-table-row-indigo-border-dark,oklch(51.1%_0.262_276.966))] hover:bg-[var(--zui-table-row-indigo-bg-hover,oklch(58.5%_0.233_277.117))] dark:hover:bg-[var(--zui-table-row-indigo-bg-hover-dark,oklch(35.9%_0.144_278.697))] hover:text-[color:var(--zui-table-row-indigo-fg-hover,oklch(93%_0.034_272.788))] dark:hover:text-[color:var(--zui-table-row-indigo-fg-hover-dark,oklch(93%_0.034_272.788))]\",\n emerald:\n \"border-[color:var(--zui-table-row-emerald-border,oklch(43.2%_0.095_166.913))] dark:border-[color:var(--zui-table-row-emerald-border-dark,oklch(59.6%_0.145_163.225))] hover:bg-[var(--zui-table-row-emerald-bg-hover,oklch(69.6%_0.17_162.48))] dark:hover:bg-[var(--zui-table-row-emerald-bg-hover-dark,oklch(37.8%_0.077_168.94))] hover:text-[color:var(--zui-table-row-emerald-fg-hover,oklch(95%_0.052_163.051))] dark:hover:text-[color:var(--zui-table-row-emerald-fg-hover-dark,oklch(95%_0.052_163.051))]\",\n gray: \"border-[color:var(--zui-table-row-gray-border,oklch(27.8%_0.033_256.848))] dark:border-[color:var(--zui-table-row-gray-border-dark,oklch(44.6%_0.03_256.802))] hover:bg-[var(--zui-table-row-gray-bg-hover,oklch(55.1%_0.027_264.364))] dark:hover:bg-[var(--zui-table-row-gray-bg-hover-dark,oklch(21%_0.034_264.665))] hover:text-[color:var(--zui-table-row-gray-fg-hover,oklch(96.7%_0.003_264.542))] dark:hover:text-[color:var(--zui-table-row-gray-fg-hover-dark,oklch(96.7%_0.003_264.542))]\",\n amber:\n \"border-[color:var(--zui-table-row-amber-border,oklch(47.3%_0.137_46.201))] dark:border-[color:var(--zui-table-row-amber-border-dark,oklch(66.6%_0.179_58.318))] hover:bg-[var(--zui-table-row-amber-bg-hover,oklch(76.9%_0.188_70.08))] dark:hover:bg-[var(--zui-table-row-amber-bg-hover-dark,oklch(41.4%_0.112_45.904))] hover:text-[color:var(--zui-table-row-amber-fg-hover,oklch(96.2%_0.059_95.617))] dark:hover:text-[color:var(--zui-table-row-amber-fg-hover-dark,oklch(96.2%_0.059_95.617))]\",\n violet:\n \"border-[color:var(--zui-table-row-violet-border,oklch(43.2%_0.232_292.759))] dark:border-[color:var(--zui-table-row-violet-border-dark,oklch(54.1%_0.281_293.009))] hover:bg-[var(--zui-table-row-violet-bg-hover,oklch(60.6%_0.25_292.717))] dark:hover:bg-[var(--zui-table-row-violet-bg-hover-dark,oklch(38%_0.189_293.745))] hover:text-[color:var(--zui-table-row-violet-fg-hover,oklch(94.3%_0.029_294.588))] dark:hover:text-[color:var(--zui-table-row-violet-fg-hover-dark,oklch(94.3%_0.029_294.588))]\",\n} as const;\n\nexport const zuiTableCellBase = \"min-w-0 border p-3 align-middle break-words\";\n\nexport const zuiTableCellAppearances = {\n default:\n \"border-[color:var(--zui-table-cell-default-border,#0000001a)] dark:border-[color:var(--zui-table-cell-default-border-dark,#ffffff1a)]\",\n striped:\n \"border-[color:var(--zui-table-cell-striped-border,#0000001a)] dark:border-[color:var(--zui-table-cell-striped-border-dark,#ffffff1a)]\",\n bordered:\n \"border-[color:var(--zui-table-cell-bordered-border,#0000001a)] dark:border-[color:var(--zui-table-cell-bordered-border-dark,#ffffff1a)]\",\n ghost:\n \"border-[color:var(--zui-table-cell-ghost-border,#0000001a)] dark:border-[color:var(--zui-table-cell-ghost-border-dark,#ffffff1a)]\",\n sky: \"border-[color:var(--zui-table-cell-sky-border,oklch(44.3%_0.11_240.79))] dark:border-[color:var(--zui-table-cell-sky-border-dark,oklch(58.8%_0.158_241.966))]\",\n rose: \"border-[color:var(--zui-table-cell-rose-border,oklch(45.5%_0.188_13.697))] dark:border-[color:var(--zui-table-cell-rose-border-dark,oklch(58.6%_0.253_17.585))]\",\n purple:\n \"border-[color:var(--zui-table-cell-purple-border,oklch(43.8%_0.218_303.724))] dark:border-[color:var(--zui-table-cell-purple-border-dark,oklch(55.8%_0.288_302.321))]\",\n pink: \"border-[color:var(--zui-table-cell-pink-border,oklch(45.9%_0.187_3.815))] dark:border-[color:var(--zui-table-cell-pink-border-dark,oklch(59.2%_0.249_0.584))]\",\n orange:\n \"border-[color:var(--zui-table-cell-orange-border,oklch(47%_0.157_37.304))] dark:border-[color:var(--zui-table-cell-orange-border-dark,oklch(64.6%_0.222_41.116))]\",\n yellow:\n \"border-[color:var(--zui-table-cell-yellow-border,oklch(47.6%_0.114_61.907))] dark:border-[color:var(--zui-table-cell-yellow-border-dark,oklch(68.1%_0.162_75.834))]\",\n teal: \"border-[color:var(--zui-table-cell-teal-border,oklch(43.7%_0.078_188.216))] dark:border-[color:var(--zui-table-cell-teal-border-dark,oklch(60%_0.118_184.704))]\",\n indigo:\n \"border-[color:var(--zui-table-cell-indigo-border,oklch(39.8%_0.195_277.366))] dark:border-[color:var(--zui-table-cell-indigo-border-dark,oklch(51.1%_0.262_276.966))]\",\n emerald:\n \"border-[color:var(--zui-table-cell-emerald-border,oklch(43.2%_0.095_166.913))] dark:border-[color:var(--zui-table-cell-emerald-border-dark,oklch(59.6%_0.145_163.225))]\",\n gray: \"border-[color:var(--zui-table-cell-gray-border,oklch(27.8%_0.033_256.848))] dark:border-[color:var(--zui-table-cell-gray-border-dark,oklch(44.6%_0.03_256.802))]\",\n amber:\n \"border-[color:var(--zui-table-cell-amber-border,oklch(47.3%_0.137_46.201))] dark:border-[color:var(--zui-table-cell-amber-border-dark,oklch(66.6%_0.179_58.318))]\",\n violet:\n \"border-[color:var(--zui-table-cell-violet-border,oklch(43.2%_0.232_292.759))] dark:border-[color:var(--zui-table-cell-violet-border-dark,oklch(54.1%_0.281_293.009))]\",\n} as const;\n\nexport const zuiTableCellSizes = {\n sm: \"p-2\",\n md: \"p-3\",\n lg: \"p-4\",\n} as const;\n\nexport const zuiTableTextAlignments = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n} as const;\n","import { cva } from \"class-variance-authority\";\n\nimport {\n zuiTableAppearances,\n zuiTableBase,\n zuiTableCellAppearances,\n zuiTableCellBase,\n zuiTableCellSizes,\n zuiTableRowAppearances,\n zuiTableRowBase,\n zuiTableSizes,\n zuiTableStickyHeader,\n zuiTableTextAlignments,\n} from \"../../design-system/table\";\n\nexport const tableVariants = cva(zuiTableBase, {\n variants: {\n appearance: zuiTableAppearances,\n size: zuiTableSizes,\n stickyHeader: zuiTableStickyHeader,\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n stickyHeader: false,\n },\n});\n\nexport const tableRowVariants = cva(zuiTableRowBase, {\n variants: {\n appearance: zuiTableRowAppearances,\n },\n defaultVariants: { appearance: \"default\" },\n});\n\nexport const tableCellVariants = cva(zuiTableCellBase, {\n variants: {\n appearance: zuiTableCellAppearances,\n size: zuiTableCellSizes,\n textAlign: zuiTableTextAlignments,\n },\n defaultVariants: { appearance: \"default\", size: \"md\" },\n});\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n type KeyboardEvent,\n} from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type {\n TableCtx,\n TableCellProps,\n TableHeadCellProps,\n TableProps,\n TableSectionProps,\n TableSortDirection,\n} from \"./types\";\nimport { tableCellVariants, tableRowVariants, tableVariants } from \"./variants\";\n\nexport const TableContext = createContext<TableCtx | null>(null);\n\nexport function useTableContext(component: string): TableCtx {\n const ctx = useContext(TableContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Table>`);\n }\n return ctx;\n}\n\nexport function TableBase(props: TableProps) {\n const {\n className,\n appearance = \"default\",\n size = \"md\",\n textAlign = \"left\",\n stickyHeader = false,\n scrollAreaAriaLabel,\n children,\n ref,\n ...rest\n } = props;\n const ctx = useMemo(\n () => ({\n appearance: appearance ?? \"default\",\n size: size ?? \"md\",\n stickyHeader: Boolean(stickyHeader),\n rowAnimation: \"none\" as const,\n textAlign,\n }),\n [appearance, size, stickyHeader, textAlign],\n );\n\n return (\n <TableContext.Provider value={ctx}>\n <div\n data-slot=\"table-scroll\"\n tabIndex={0}\n role=\"region\"\n aria-label={scrollAreaAriaLabel ?? \"Scrollable table\"}\n className={cn(\n \"relative w-full overflow-auto\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950\",\n )}\n >\n <table\n ref={ref}\n data-slot=\"table\"\n className={cn(\n tableVariants({ appearance, size, stickyHeader }),\n \"w-full min-w-0 table\",\n className,\n )}\n {...rest}\n >\n {children}\n </table>\n </div>\n </TableContext.Provider>\n );\n}\n\nTableBase.displayName = \"Table\";\n\nexport function TableHeader({ className, children }: TableSectionProps) {\n const { stickyHeader } = useTableContext(\"TableHeader\");\n const stickyClass = stickyHeader\n ? \"sticky top-0 z-10 dark:bg-slate-950/95 bg-slate-50/95 backdrop-blur\"\n : \"\";\n return (\n <thead data-slot=\"table-header\" className={cn(stickyClass, className)}>\n {children}\n </thead>\n );\n}\n\nTableHeader.displayName = \"TableHeader\";\n\nexport function TableBody({ className, children }: TableSectionProps) {\n return (\n <tbody data-slot=\"table-body\" className={cn(className)}>\n {children}\n </tbody>\n );\n}\n\nTableBody.displayName = \"TableBody\";\n\nexport function TableFooter({ className, children }: TableSectionProps) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"border-t border-white/10 bg-white/3 font-medium\",\n className,\n )}\n >\n {children}\n </tfoot>\n );\n}\n\nTableFooter.displayName = \"TableFooter\";\n\nexport function TableRow({\n className,\n children,\n ref,\n as: Wrapper = \"tr\",\n rowAnimation: _rowAnimation,\n ...rest\n}: TableSectionProps & { ref?: React.Ref<HTMLTableRowElement> }) {\n const { appearance } = useTableContext(\"TableRow\");\n\n return (\n <Wrapper\n ref={ref}\n data-slot=\"table-row\"\n className={cn(tableRowVariants({ appearance }), className)}\n {...rest}\n >\n {children}\n </Wrapper>\n );\n}\n\nTableRow.displayName = \"TableRow\";\n\nexport function TableHead({\n className,\n children,\n scope = \"col\",\n sortKey,\n sortDirection,\n onSortChange,\n onClick,\n onKeyDown,\n tabIndex,\n ref,\n ...rest\n}: TableHeadCellProps) {\n const { appearance, size, textAlign } = useTableContext(\"TableHead\");\n const isSortable = Boolean(sortKey && onSortChange);\n const sortableDirection: TableSortDirection = sortDirection ?? \"none\";\n\n const handleSort = useCallback(() => {\n if (!sortKey || !onSortChange) {\n return;\n }\n\n const nextDirection: TableSortDirection =\n sortableDirection === \"ascending\"\n ? \"descending\"\n : sortableDirection === \"descending\"\n ? \"none\"\n : \"ascending\";\n\n onSortChange({\n sortKey,\n sortDirection: nextDirection,\n });\n }, [onSortChange, sortKey, sortableDirection]);\n\n const handleClick = useCallback<NonNullable<TableHeadCellProps[\"onClick\"]>>(\n (event) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n handleSort();\n }\n },\n [handleSort, onClick],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLTableCellElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || !isSortable) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleSort();\n }\n },\n [handleSort, isSortable, onKeyDown],\n );\n\n return (\n <th\n ref={ref}\n data-slot=\"table-head\"\n scope={scope}\n aria-sort={isSortable ? sortableDirection : sortDirection}\n data-sort-key={sortKey}\n data-sort-direction={sortDirection}\n tabIndex={isSortable ? (tabIndex ?? 0) : tabIndex}\n className={cn(\n tableCellVariants({ appearance, size, textAlign }),\n isSortable &&\n \"cursor-pointer select-none outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950\",\n className,\n )}\n onClick={isSortable ? handleClick : onClick}\n onKeyDown={isSortable ? handleKeyDown : onKeyDown}\n {...rest}\n >\n {children}\n </th>\n );\n}\n\nTableHead.displayName = \"TableHead\";\n\nexport function TableCell({\n className,\n children,\n ref,\n scope,\n ...rest\n}: TableCellProps) {\n const { appearance, size, textAlign } = useTableContext(\"TableCell\");\n const cellClassName = cn(\n tableCellVariants({ appearance, size, textAlign }),\n className,\n );\n\n if (scope !== undefined) {\n return (\n <th\n ref={ref}\n data-slot=\"table-cell\"\n scope={scope}\n className={cellClassName}\n {...rest}\n >\n {children}\n </th>\n );\n }\n\n return (\n <td ref={ref} data-slot=\"table-cell\" className={cellClassName} {...rest}>\n {children}\n </td>\n );\n}\n\nTableCell.displayName = \"TableCell\";\n\nexport function TableCaption({ className, children }: TableSectionProps) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-3 text-left text-xs text-slate-500\", className)}\n >\n {children}\n </caption>\n );\n}\n\nTableCaption.displayName = \"TableCaption\";\n"]}