@epilot/zenith-react 0.2.0-next.0 → 0.2.0-next.1

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 (131) hide show
  1. package/dist/components/accordion/accordion.js +57 -48
  2. package/dist/components/accordion/accordion.js.map +1 -1
  3. package/dist/components/alert-dialog/alert-dialog.js +120 -92
  4. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  5. package/dist/components/avatar/avatar-group.js +38 -35
  6. package/dist/components/avatar/avatar-group.js.map +1 -1
  7. package/dist/components/avatar/avatar.js +78 -71
  8. package/dist/components/avatar/avatar.js.map +1 -1
  9. package/dist/components/badge/badge.js +60 -55
  10. package/dist/components/badge/badge.js.map +1 -1
  11. package/dist/components/breadcrumb/breadcrumb.js +99 -54
  12. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  13. package/dist/components/button/button.js +87 -77
  14. package/dist/components/button/button.js.map +1 -1
  15. package/dist/components/button-group/button-group.js +36 -32
  16. package/dist/components/button-group/button-group.js.map +1 -1
  17. package/dist/components/callout/callout.js +105 -98
  18. package/dist/components/callout/callout.js.map +1 -1
  19. package/dist/components/card/card.js +62 -52
  20. package/dist/components/card/card.js.map +1 -1
  21. package/dist/components/checkbox/checkbox.js +22 -19
  22. package/dist/components/checkbox/checkbox.js.map +1 -1
  23. package/dist/components/code-block/code-block.js +135 -123
  24. package/dist/components/code-block/code-block.js.map +1 -1
  25. package/dist/components/code-editor/code-editor.js +276 -260
  26. package/dist/components/code-editor/code-editor.js.map +1 -1
  27. package/dist/components/collapsible-sidebar/collapsible-sidebar.js +62 -56
  28. package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -1
  29. package/dist/components/command/command.js +116 -105
  30. package/dist/components/command/command.js.map +1 -1
  31. package/dist/components/data-table/data-table-body.js +38 -34
  32. package/dist/components/data-table/data-table-body.js.map +1 -1
  33. package/dist/components/data-table/data-table-column-header.js +30 -26
  34. package/dist/components/data-table/data-table-column-header.js.map +1 -1
  35. package/dist/components/data-table/data-table-column-order.js +79 -73
  36. package/dist/components/data-table/data-table-column-order.js.map +1 -1
  37. package/dist/components/data-table/data-table-column-visibility.js +25 -22
  38. package/dist/components/data-table/data-table-column-visibility.js.map +1 -1
  39. package/dist/components/data-table/data-table-content.js +47 -44
  40. package/dist/components/data-table/data-table-content.js.map +1 -1
  41. package/dist/components/data-table/data-table-error.js +36 -32
  42. package/dist/components/data-table/data-table-error.js.map +1 -1
  43. package/dist/components/data-table/data-table-footer.js +10 -8
  44. package/dist/components/data-table/data-table-footer.js.map +1 -1
  45. package/dist/components/data-table/data-table-header-draggable.js +40 -36
  46. package/dist/components/data-table/data-table-header-draggable.js.map +1 -1
  47. package/dist/components/data-table/data-table-loading.js +21 -18
  48. package/dist/components/data-table/data-table-loading.js.map +1 -1
  49. package/dist/components/data-table/data-table-resize-handle.js +13 -11
  50. package/dist/components/data-table/data-table-resize-handle.js.map +1 -1
  51. package/dist/components/data-table/data-table-row.js +47 -44
  52. package/dist/components/data-table/data-table-row.js.map +1 -1
  53. package/dist/components/data-table/data-table-toolbar.js +9 -7
  54. package/dist/components/data-table/data-table-toolbar.js.map +1 -1
  55. package/dist/components/data-table/data-table.js +48 -46
  56. package/dist/components/data-table/data-table.js.map +1 -1
  57. package/dist/components/date-range-picker/date-range-picker.js +173 -164
  58. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  59. package/dist/components/date-range-picker/range-calendar.js +36 -34
  60. package/dist/components/date-range-picker/range-calendar.js.map +1 -1
  61. package/dist/components/date-time-picker/calendar.js +290 -272
  62. package/dist/components/date-time-picker/calendar.js.map +1 -1
  63. package/dist/components/date-time-picker/date-time-picker-input.js +22 -20
  64. package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
  65. package/dist/components/date-time-picker/date-time-picker-panel.js +126 -120
  66. package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
  67. package/dist/components/date-time-picker/date-time-picker.js +42 -40
  68. package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
  69. package/dist/components/date-time-picker/time-picker.js +95 -87
  70. package/dist/components/date-time-picker/time-picker.js.map +1 -1
  71. package/dist/components/dialog/dialog.js +115 -95
  72. package/dist/components/dialog/dialog.js.map +1 -1
  73. package/dist/components/drawer/drawer.js +144 -109
  74. package/dist/components/drawer/drawer.js.map +1 -1
  75. package/dist/components/dropdown-menu/dropdown-menu.js +141 -112
  76. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  77. package/dist/components/field/field-combobox.js +196 -176
  78. package/dist/components/field/field-combobox.js.map +1 -1
  79. package/dist/components/field/field.js +137 -126
  80. package/dist/components/field/field.js.map +1 -1
  81. package/dist/components/list/list.js +237 -219
  82. package/dist/components/list/list.js.map +1 -1
  83. package/dist/components/option-card/option-card.js +129 -116
  84. package/dist/components/option-card/option-card.js.map +1 -1
  85. package/dist/components/pill/pill.js +55 -51
  86. package/dist/components/pill/pill.js.map +1 -1
  87. package/dist/components/popover/popover.js +53 -36
  88. package/dist/components/popover/popover.js.map +1 -1
  89. package/dist/components/radio/radio.js +38 -34
  90. package/dist/components/radio/radio.js.map +1 -1
  91. package/dist/components/scroll-area/scroll-area.js +38 -35
  92. package/dist/components/scroll-area/scroll-area.js.map +1 -1
  93. package/dist/components/scroll-overflow/scroll-overflow.js +166 -151
  94. package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
  95. package/dist/components/segmented-control/segmented-control.js +93 -85
  96. package/dist/components/segmented-control/segmented-control.js.map +1 -1
  97. package/dist/components/select/select.js +149 -128
  98. package/dist/components/select/select.js.map +1 -1
  99. package/dist/components/separator/separator.js +19 -16
  100. package/dist/components/separator/separator.js.map +1 -1
  101. package/dist/components/skeleton/skeleton.js +34 -30
  102. package/dist/components/skeleton/skeleton.js.map +1 -1
  103. package/dist/components/spinner/spinner.js +22 -17
  104. package/dist/components/spinner/spinner.js.map +1 -1
  105. package/dist/components/surface/surface.js +25 -22
  106. package/dist/components/surface/surface.js.map +1 -1
  107. package/dist/components/switch/switch.js +66 -57
  108. package/dist/components/switch/switch.js.map +1 -1
  109. package/dist/components/table/table-pagination.js +139 -129
  110. package/dist/components/table/table-pagination.js.map +1 -1
  111. package/dist/components/table/table.js +104 -90
  112. package/dist/components/table/table.js.map +1 -1
  113. package/dist/components/tabs/tabs.js +206 -128
  114. package/dist/components/tabs/tabs.js.map +1 -1
  115. package/dist/components/toast/toast.js +112 -100
  116. package/dist/components/toast/toast.js.map +1 -1
  117. package/dist/components/toggle/toggle.js +32 -30
  118. package/dist/components/toggle/toggle.js.map +1 -1
  119. package/dist/components/tooltip/tooltip.js +59 -46
  120. package/dist/components/tooltip/tooltip.js.map +1 -1
  121. package/dist/index.d.ts +12 -0
  122. package/dist/lib/clear-button.js +18 -17
  123. package/dist/lib/clear-button.js.map +1 -1
  124. package/dist/styles/host-reset.js +47 -0
  125. package/dist/styles/host-reset.js.map +1 -0
  126. package/dist/styles/overlay-layer.js +5 -0
  127. package/dist/styles/overlay-layer.js.map +1 -0
  128. package/dist/tokens.json +1 -1
  129. package/package.json +8 -7
  130. package/scripts/migration-diagnostics.mjs +42 -7
  131. package/scripts/migration-sweep.mjs +9 -1
@@ -1,112 +1,115 @@
1
- import { jsx as a, jsxs as $, Fragment as j } from "react/jsx-runtime";
2
- import * as k from "react";
3
- import { useRef as T, useState as v, useCallback as y, useEffect as P, useMemo as u } from "react";
4
- import { flushSync as q } from "react-dom";
5
- import { useVirtualizer as G } from "../../vendor/.bun/@tanstack_react-virtual@3.11.2_6f4b9a1cfb20c0ae/vendor/@tanstack/react-virtual/dist/esm/index.js";
6
- import { SLOT_ATTR as x, mergeClasses as Z, shorthands as J } from "@epilot/zenith-runtime/v1";
7
- import { makeZenithStyles as K } from "../../styles/make-styles.js";
8
- import { leadingSm as Q, textSm as X } from "../../tokens/index.js";
9
- import { DEFAULT_OVERSCAN as Y, DataTableContentContext as ee, DataTableVirtualizerContext as te, DEFAULT_ROW_HEIGHT as ne } from "./data-table-context.js";
10
- import { DataTableHeader as oe } from "./data-table-header.js";
11
- import { DataTableBody as ie } from "./data-table-body.js";
12
- import { useDataTable as re } from "./hooks/use-data-table.js";
13
- const ae = 150, se = K({
1
+ import { jsx as a, jsxs as j, Fragment as k } from "react/jsx-runtime";
2
+ import * as P from "react";
3
+ import { useRef as T, useState as v, useCallback as y, useEffect as q, useMemo as u } from "react";
4
+ import { flushSync as G } from "react-dom";
5
+ import { useVirtualizer as Z } from "../../vendor/.bun/@tanstack_react-virtual@3.11.2_6f4b9a1cfb20c0ae/vendor/@tanstack/react-virtual/dist/esm/index.js";
6
+ import { SLOT_ATTR as x, mergeClasses as J, shorthands as K } from "@epilot/zenith-runtime/v1";
7
+ import { makeZenithStyles as Q } from "../../styles/make-styles.js";
8
+ import { boxModel as D } from "../../styles/host-reset.js";
9
+ import { leadingSm as X, textSm as Y } from "../../tokens/index.js";
10
+ import { DEFAULT_OVERSCAN as ee, DataTableContentContext as te, DataTableVirtualizerContext as ne, DEFAULT_ROW_HEIGHT as oe } from "./data-table-context.js";
11
+ import { DataTableHeader as ie } from "./data-table-header.js";
12
+ import { DataTableBody as re } from "./data-table-body.js";
13
+ import { useDataTable as ae } from "./hooks/use-data-table.js";
14
+ const se = 150, le = Q({
14
15
  container: {
16
+ ...D,
15
17
  position: "relative",
16
18
  width: "100%",
17
- ...J.overflow("auto")
19
+ ...K.overflow("auto")
18
20
  },
19
21
  resizing: {
20
22
  cursor: "col-resize",
21
23
  userSelect: "none"
22
24
  },
23
25
  table: {
26
+ ...D,
24
27
  tableLayout: "fixed",
25
28
  borderCollapse: "separate",
26
29
  borderSpacing: 0,
27
- fontSize: X,
28
- lineHeight: Q
30
+ fontSize: Y,
31
+ lineHeight: X
29
32
  }
30
- }), Re = k.forwardRef(function({ children: D, className: w, style: W }, s) {
33
+ }), ve = P.forwardRef(function({ children: w, className: W, style: V }, s) {
31
34
  var z;
32
- const d = se(), { table: n, config: e, disableColumnResizing: V } = re(), E = !V && ((z = n.getState().columnSizingInfo) == null ? void 0 : z.isResizingColumn), m = T(null), h = T(null), [i, H] = v(!1), [f, L] = v(0), _ = n.getRowModel().rows, A = y(
35
+ const d = le(), { table: n, config: e, disableColumnResizing: E } = ae(), H = !E && ((z = n.getState().columnSizingInfo) == null ? void 0 : z.isResizingColumn), m = T(null), f = T(null), [i, L] = v(!1), [h, _] = v(0), A = n.getRowModel().rows, F = y(
33
36
  (t) => {
34
37
  m.current = t, typeof s == "function" ? s(t) : s && (s.current = t);
35
38
  },
36
39
  [s]
37
40
  );
38
- P(() => {
41
+ q(() => {
39
42
  const t = m.current;
40
43
  if (!t || typeof ResizeObserver > "u") return;
41
44
  const o = new ResizeObserver((r) => {
42
- L(r[0].contentRect.width);
45
+ _(r[0].contentRect.width);
43
46
  });
44
47
  return o.observe(t), () => o.disconnect();
45
48
  }, []);
46
49
  const C = y(() => {
47
- if (h.current && !i) {
48
- const t = h.current.querySelectorAll(
50
+ if (f.current && !i) {
51
+ const t = f.current.querySelectorAll(
49
52
  "th:not([data-spacer])"
50
53
  ), o = n.getVisibleLeafColumns();
51
54
  if (t.length === o.length) {
52
55
  const r = {};
53
- t.forEach((b, N) => {
54
- const R = o[N];
56
+ t.forEach((b, $) => {
57
+ const R = o[$];
55
58
  R && (r[R.id] = Math.round(
56
59
  b.getBoundingClientRect().width
57
60
  ));
58
- }), q(() => {
59
- H(!0), n.setColumnSizing((b) => ({ ...b, ...r }));
61
+ }), G(() => {
62
+ L(!0), n.setColumnSizing((b) => ({ ...b, ...r }));
60
63
  });
61
64
  }
62
65
  }
63
- }, [n, i]), l = !!(e != null && e.enableVirtualization), g = G({
64
- count: l ? _.length : 0,
66
+ }, [n, i]), l = !!(e != null && e.enableVirtualization), g = Z({
67
+ count: l ? A.length : 0,
65
68
  getScrollElement: () => m.current,
66
- estimateSize: () => (e == null ? void 0 : e.estimateRowHeight) ?? ne,
67
- overscan: (e == null ? void 0 : e.overscan) ?? Y,
69
+ estimateSize: () => (e == null ? void 0 : e.estimateRowHeight) ?? oe,
70
+ overscan: (e == null ? void 0 : e.overscan) ?? ee,
68
71
  enabled: l
69
- }), F = n.getState().columnSizing, O = n.getState().columnVisibility, c = u(() => n.getVisibleLeafColumns().reduce((o, r) => o + (r.getSize() ?? ae), 0), [n, F, O]), S = 4, B = u(() => i ? c ? `${c}px` : `calc(100% - ${S}px)` : `calc(100% - ${S}px)`, [i, c]), p = u(() => !i || !f ? 0 : Math.max(0, f - c), [i, f, c]), M = D ?? /* @__PURE__ */ $(j, { children: [
70
- /* @__PURE__ */ a(oe, {}),
71
- /* @__PURE__ */ a(ie, {})
72
- ] }), U = u(
72
+ }), M = n.getState().columnSizing, O = n.getState().columnVisibility, c = u(() => n.getVisibleLeafColumns().reduce((o, r) => o + (r.getSize() ?? se), 0), [n, M, O]), S = 4, B = u(() => i ? c ? `${c}px` : `calc(100% - ${S}px)` : `calc(100% - ${S}px)`, [i, c]), p = u(() => !i || !h ? 0 : Math.max(0, h - c), [i, h, c]), U = w ?? /* @__PURE__ */ j(k, { children: [
73
+ /* @__PURE__ */ a(ie, {}),
74
+ /* @__PURE__ */ a(re, {})
75
+ ] }), I = u(
73
76
  () => ({ syncColumnWidthsBeforeResize: C, spacerWidth: p }),
74
77
  [C, p]
75
- ), I = u(
78
+ ), N = u(
76
79
  () => l ? { virtualizer: g, scrollContainerRef: m } : null,
77
80
  [l, g]
78
81
  );
79
- return /* @__PURE__ */ a(ee.Provider, { value: U, children: /* @__PURE__ */ a(te.Provider, { value: I, children: /* @__PURE__ */ a(
82
+ return /* @__PURE__ */ a(te.Provider, { value: I, children: /* @__PURE__ */ a(ne.Provider, { value: N, children: /* @__PURE__ */ a(
80
83
  "div",
81
84
  {
82
- ref: A,
85
+ ref: F,
83
86
  "data-slot": "data-table-content",
84
87
  [x]: "data-table-content",
85
88
  "data-fs-element": "DataTable-Content",
86
- className: Z(
89
+ className: J(
87
90
  d.container,
88
- E && d.resizing,
89
- w
91
+ H && d.resizing,
92
+ W
90
93
  ),
91
94
  style: {
92
95
  height: l ? e == null ? void 0 : e.containerHeight : void 0,
93
- ...W
96
+ ...V
94
97
  },
95
98
  children: /* @__PURE__ */ a(
96
99
  "table",
97
100
  {
98
- ref: h,
101
+ ref: f,
99
102
  "data-slot": "table",
100
103
  [x]: "table",
101
104
  className: d.table,
102
105
  style: { width: B },
103
- children: M
106
+ children: U
104
107
  }
105
108
  )
106
109
  }
107
110
  ) }) });
108
111
  });
109
112
  export {
110
- Re as DataTableContent
113
+ ve as DataTableContent
111
114
  };
112
115
  //# sourceMappingURL=data-table-content.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-content.js","sources":["../../../src/components/data-table/data-table-content.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { useRef, useMemo, useCallback, useState, useEffect } from \"react\"\nimport { flushSync } from \"react-dom\"\nimport type { ReactNode } from \"react\"\nimport { useVirtualizer } from \"@tanstack/react-virtual\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\nimport { useDataTable } from \"./hooks\"\nimport {\n DataTableContentContext,\n DataTableVirtualizerContext,\n DEFAULT_ROW_HEIGHT,\n DEFAULT_OVERSCAN,\n} from \"./data-table-context\"\nimport { DataTableHeader } from \"./data-table-header\"\nimport { DataTableBody } from \"./data-table-body\"\n\n// TanStack Table's default column width\nconst DEFAULT_COLUMN_WIDTH = 150\n\nconst useStyles = makeZenithStyles({\n container: {\n position: \"relative\",\n width: \"100%\",\n ...shorthands.overflow(\"auto\"),\n },\n resizing: {\n cursor: \"col-resize\",\n userSelect: \"none\",\n },\n table: {\n tableLayout: \"fixed\",\n borderCollapse: \"separate\",\n borderSpacing: 0,\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n})\n\nexport type DataTableContentProps = {\n /** Children to render inside the table (DataTableHeader, DataTableBody) */\n children?: ReactNode\n /** Additional class name */\n className?: string\n /** Additional style */\n style?: React.CSSProperties\n}\n\n/**\n * Container component for DataTable that handles the table structure and virtualization.\n * When virtualization is enabled, this component manages the scroll container.\n *\n * If no children are provided, renders DataTableHeader and DataTableBody by default.\n */\nexport const DataTableContent = React.forwardRef<\n HTMLDivElement,\n DataTableContentProps\n>(function DataTableContent({ children, className, style }, ref) {\n const styles = useStyles()\n const { table, config, disableColumnResizing } = useDataTable()\n const enableColumnResizing = !disableColumnResizing\n\n const isResizing =\n enableColumnResizing && table.getState().columnSizingInfo?.isResizingColumn\n const internalContainerRef = useRef<HTMLDivElement>(null!)\n const tableRef = useRef<HTMLTableElement>(null)\n const [hasSyncedWidths, setHasSyncedWidths] = useState(false)\n const [containerWidth, setContainerWidth] = useState(0)\n const rows = table.getRowModel().rows\n\n // Attach ref to internal ref or forwarded ref\n const handleRef = useCallback(\n (node: HTMLDivElement | null) => {\n internalContainerRef.current = node!\n if (typeof ref === \"function\") {\n ref(node)\n } else if (ref) {\n ;(ref as React.MutableRefObject<HTMLDivElement | null>).current = node\n }\n },\n [ref]\n )\n\n // Track container width for spacer calculation\n useEffect(() => {\n const container = internalContainerRef.current\n if (!container || typeof ResizeObserver === \"undefined\") return\n\n const observer = new ResizeObserver((entries) => {\n setContainerWidth(entries[0].contentRect.width)\n })\n observer.observe(container)\n return () => observer.disconnect()\n }, [])\n\n // Sync visual column widths to stored widths BEFORE resize starts\n const syncColumnWidthsBeforeResize = useCallback(() => {\n if (tableRef.current && !hasSyncedWidths) {\n const headerCells = tableRef.current.querySelectorAll(\n \"th:not([data-spacer])\"\n )\n const columns = table.getVisibleLeafColumns()\n\n if (headerCells.length === columns.length) {\n const newSizing: Record<string, number> = {}\n\n headerCells.forEach((cell, index) => {\n const column = columns[index]\n if (column) {\n newSizing[column.id] = Math.round(\n cell.getBoundingClientRect().width\n )\n }\n })\n\n flushSync(() => {\n setHasSyncedWidths(true)\n table.setColumnSizing((prev) => ({ ...prev, ...newSizing }))\n })\n }\n }\n }, [table, hasSyncedWidths])\n\n const isVirtual = Boolean(config?.enableVirtualization)\n\n // Always call useVirtualizer to follow React hooks rules\n // When virtualization is disabled, count=0 makes it effectively a no-op\n const virtualizer = useVirtualizer({\n count: isVirtual ? rows.length : 0,\n getScrollElement: () => internalContainerRef.current,\n estimateSize: () => config?.estimateRowHeight ?? DEFAULT_ROW_HEIGHT,\n overscan: config?.overscan ?? DEFAULT_OVERSCAN,\n enabled: isVirtual,\n })\n\n // Get column sizing and visibility state to trigger recalculation\n const columnSizing = table.getState().columnSizing\n const columnVisibility = table.getState().columnVisibility\n\n // Calculate total column width from visible columns\n const calculatedColumnSum = useMemo(() => {\n const totalWidth = table.getVisibleLeafColumns().reduce((sum, col) => {\n return sum + (col.getSize() ?? DEFAULT_COLUMN_WIDTH)\n }, 0)\n return totalWidth\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [table, columnSizing, columnVisibility])\n\n const WIDTH_BUFFER = 4\n const tableWidth = useMemo(() => {\n if (!hasSyncedWidths) {\n return `calc(100% - ${WIDTH_BUFFER}px)`\n }\n return calculatedColumnSum\n ? `${calculatedColumnSum}px`\n : `calc(100% - ${WIDTH_BUFFER}px)`\n }, [hasSyncedWidths, calculatedColumnSum])\n\n // Calculate spacer width to fill remaining container space after resize\n const spacerWidth = useMemo(() => {\n if (!hasSyncedWidths || !containerWidth) return 0\n return Math.max(0, containerWidth - calculatedColumnSum)\n }, [hasSyncedWidths, containerWidth, calculatedColumnSum])\n\n // If no children, render default header + body\n const content = children ?? (\n <>\n <DataTableHeader />\n <DataTableBody />\n </>\n )\n\n const contentContextValue = useMemo(\n () => ({ syncColumnWidthsBeforeResize, spacerWidth }),\n [syncColumnWidthsBeforeResize, spacerWidth]\n )\n\n const virtualizerContextValue = useMemo(\n () =>\n isVirtual\n ? { virtualizer, scrollContainerRef: internalContainerRef }\n : null,\n [isVirtual, virtualizer]\n )\n\n return (\n <DataTableContentContext.Provider value={contentContextValue}>\n <DataTableVirtualizerContext.Provider value={virtualizerContextValue}>\n <div\n ref={handleRef}\n data-slot=\"data-table-content\"\n {...{ [SLOT_ATTR]: \"data-table-content\" }}\n data-fs-element=\"DataTable-Content\"\n className={mergeClasses(\n styles.container,\n isResizing && styles.resizing,\n className\n )}\n style={{\n height: isVirtual ? config?.containerHeight : undefined,\n ...style,\n }}\n >\n <table\n ref={tableRef}\n data-slot=\"table\"\n {...{ [SLOT_ATTR]: \"table\" }}\n className={styles.table}\n style={{ width: tableWidth }}\n >\n {content}\n </table>\n </div>\n </DataTableVirtualizerContext.Provider>\n </DataTableContentContext.Provider>\n )\n})\n"],"names":["DEFAULT_COLUMN_WIDTH","useStyles","makeZenithStyles","shorthands","tokens.textSm","tokens.leadingSm","DataTableContent","React","children","className","style","ref","styles","table","config","disableColumnResizing","useDataTable","isResizing","_a","internalContainerRef","useRef","tableRef","hasSyncedWidths","setHasSyncedWidths","useState","containerWidth","setContainerWidth","rows","handleRef","useCallback","node","useEffect","container","observer","entries","syncColumnWidthsBeforeResize","headerCells","columns","newSizing","cell","index","column","flushSync","prev","isVirtual","virtualizer","useVirtualizer","DEFAULT_ROW_HEIGHT","DEFAULT_OVERSCAN","columnSizing","columnVisibility","calculatedColumnSum","useMemo","sum","col","WIDTH_BUFFER","tableWidth","spacerWidth","content","jsxs","Fragment","jsx","DataTableHeader","DataTableBody","contentContextValue","virtualizerContextValue","DataTableContentContext","DataTableVirtualizerContext","SLOT_ATTR","mergeClasses"],"mappings":";;;;;;;;;;;;AAqBA,MAAMA,KAAuB,KAEvBC,KAAYC,EAAiB;AAAA,EACjC,WAAW;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,IACP,GAAGC,EAAW,SAAS,MAAM;AAAA,EAAA;AAAA,EAE/B,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,EAAA;AAAA,EAEd,OAAO;AAAA,IACL,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,UAAUC;AAAAA,IACV,YAAYC;AAAAA,EAAO;AAEvB,CAAC,GAiBYC,KAAmBC,EAAM,WAGpC,SAA0B,EAAE,UAAAC,GAAU,WAAAC,GAAW,OAAAC,EAAA,GAASC,GAAK;;AAC/D,QAAMC,IAASX,GAAA,GACT,EAAE,OAAAY,GAAO,QAAAC,GAAQ,uBAAAC,EAAA,IAA0BC,GAAA,GAG3CC,IAFuB,CAACF,OAGJG,IAAAL,EAAM,SAAA,EAAW,qBAAjB,gBAAAK,EAAmC,mBACvDC,IAAuBC,EAAuB,IAAK,GACnDC,IAAWD,EAAyB,IAAI,GACxC,CAACE,GAAiBC,CAAkB,IAAIC,EAAS,EAAK,GACtD,CAACC,GAAgBC,CAAiB,IAAIF,EAAS,CAAC,GAChDG,IAAOd,EAAM,YAAA,EAAc,MAG3Be,IAAYC;AAAA,IAChB,CAACC,MAAgC;AAC/B,MAAAX,EAAqB,UAAUW,GAC3B,OAAOnB,KAAQ,aACjBA,EAAImB,CAAI,IACCnB,MACPA,EAAsD,UAAUmB;AAAA,IAEtE;AAAA,IACA,CAACnB,CAAG;AAAA,EAAA;AAIN,EAAAoB,EAAU,MAAM;AACd,UAAMC,IAAYb,EAAqB;AACvC,QAAI,CAACa,KAAa,OAAO,iBAAmB,IAAa;AAEzD,UAAMC,IAAW,IAAI,eAAe,CAACC,MAAY;AAC/C,MAAAR,EAAkBQ,EAAQ,CAAC,EAAE,YAAY,KAAK;AAAA,IAChD,CAAC;AACD,WAAAD,EAAS,QAAQD,CAAS,GACnB,MAAMC,EAAS,WAAA;AAAA,EACxB,GAAG,CAAA,CAAE;AAGL,QAAME,IAA+BN,EAAY,MAAM;AACrD,QAAIR,EAAS,WAAW,CAACC,GAAiB;AACxC,YAAMc,IAAcf,EAAS,QAAQ;AAAA,QACnC;AAAA,MAAA,GAEIgB,IAAUxB,EAAM,sBAAA;AAEtB,UAAIuB,EAAY,WAAWC,EAAQ,QAAQ;AACzC,cAAMC,IAAoC,CAAA;AAE1C,QAAAF,EAAY,QAAQ,CAACG,GAAMC,MAAU;AACnC,gBAAMC,IAASJ,EAAQG,CAAK;AAC5B,UAAIC,MACFH,EAAUG,EAAO,EAAE,IAAI,KAAK;AAAA,YAC1BF,EAAK,wBAAwB;AAAA,UAAA;AAAA,QAGnC,CAAC,GAEDG,EAAU,MAAM;AACd,UAAAnB,EAAmB,EAAI,GACvBV,EAAM,gBAAgB,CAAC8B,OAAU,EAAE,GAAGA,GAAM,GAAGL,IAAY;AAAA,QAC7D,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,GAAG,CAACzB,GAAOS,CAAe,CAAC,GAErBsB,IAAY,GAAQ9B,KAAA,QAAAA,EAAQ,uBAI5B+B,IAAcC,EAAe;AAAA,IACjC,OAAOF,IAAYjB,EAAK,SAAS;AAAA,IACjC,kBAAkB,MAAMR,EAAqB;AAAA,IAC7C,cAAc,OAAML,KAAA,gBAAAA,EAAQ,sBAAqBiC;AAAA,IACjD,WAAUjC,KAAA,gBAAAA,EAAQ,aAAYkC;AAAA,IAC9B,SAASJ;AAAA,EAAA,CACV,GAGKK,IAAepC,EAAM,SAAA,EAAW,cAChCqC,IAAmBrC,EAAM,SAAA,EAAW,kBAGpCsC,IAAsBC,EAAQ,MACfvC,EAAM,sBAAA,EAAwB,OAAO,CAACwC,GAAKC,MACrDD,KAAOC,EAAI,QAAA,KAAatD,KAC9B,CAAC,GAGH,CAACa,GAAOoC,GAAcC,CAAgB,CAAC,GAEpCK,IAAe,GACfC,IAAaJ,EAAQ,MACpB9B,IAGE6B,IACH,GAAGA,CAAmB,OACtB,eAAeI,CAAY,QAJtB,eAAeA,CAAY,OAKnC,CAACjC,GAAiB6B,CAAmB,CAAC,GAGnCM,IAAcL,EAAQ,MACtB,CAAC9B,KAAmB,CAACG,IAAuB,IACzC,KAAK,IAAI,GAAGA,IAAiB0B,CAAmB,GACtD,CAAC7B,GAAiBG,GAAgB0B,CAAmB,CAAC,GAGnDO,IAAUlD,KACd,gBAAAmD,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC,EAACC,IAAA,EAAgB;AAAA,sBAChBC,IAAA,CAAA,CAAc;AAAA,EAAA,GACjB,GAGIC,IAAsBZ;AAAA,IAC1B,OAAO,EAAE,8BAAAjB,GAA8B,aAAAsB;IACvC,CAACtB,GAA8BsB,CAAW;AAAA,EAAA,GAGtCQ,IAA0Bb;AAAA,IAC9B,MACER,IACI,EAAE,aAAAC,GAAa,oBAAoB1B,MACnC;AAAA,IACN,CAACyB,GAAWC,CAAW;AAAA,EAAA;AAGzB,SACE,gBAAAgB,EAACK,GAAwB,UAAxB,EAAiC,OAAOF,GACvC,UAAA,gBAAAH,EAACM,GAA4B,UAA5B,EAAqC,OAAOF,GAC3C,UAAA,gBAAAJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKjC;AAAA,MACL,aAAU;AAAA,MACJ,CAACwC,CAAS,GAAG;AAAA,MACnB,mBAAgB;AAAA,MAChB,WAAWC;AAAA,QACTzD,EAAO;AAAA,QACPK,KAAcL,EAAO;AAAA,QACrBH;AAAA,MAAA;AAAA,MAEF,OAAO;AAAA,QACL,QAAQmC,IAAY9B,KAAA,gBAAAA,EAAQ,kBAAkB;AAAA,QAC9C,GAAGJ;AAAA,MAAA;AAAA,MAGL,UAAA,gBAAAmD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAKxC;AAAA,UACL,aAAU;AAAA,UACJ,CAAC+C,CAAS,GAAG;AAAA,UACnB,WAAWxD,EAAO;AAAA,UAClB,OAAO,EAAE,OAAO4C,EAAA;AAAA,UAEf,UAAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA,GAEJ,EAAA,CACF;AAEJ,CAAC;"}
1
+ {"version":3,"file":"data-table-content.js","sources":["../../../src/components/data-table/data-table-content.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { useRef, useMemo, useCallback, useState, useEffect } from \"react\"\nimport { flushSync } from \"react-dom\"\nimport type { ReactNode } from \"react\"\nimport { useVirtualizer } from \"@tanstack/react-virtual\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel } from \"../../styles/host-reset\"\nimport * as tokens from \"../../tokens\"\nimport { useDataTable } from \"./hooks\"\nimport {\n DataTableContentContext,\n DataTableVirtualizerContext,\n DEFAULT_ROW_HEIGHT,\n DEFAULT_OVERSCAN,\n} from \"./data-table-context\"\nimport { DataTableHeader } from \"./data-table-header\"\nimport { DataTableBody } from \"./data-table-body\"\n\n// TanStack Table's default column width\nconst DEFAULT_COLUMN_WIDTH = 150\n\nconst useStyles = makeZenithStyles({\n container: {\n ...boxModel,\n position: \"relative\",\n width: \"100%\",\n ...shorthands.overflow(\"auto\"),\n },\n resizing: {\n cursor: \"col-resize\",\n userSelect: \"none\",\n },\n table: {\n ...boxModel,\n tableLayout: \"fixed\",\n borderCollapse: \"separate\",\n borderSpacing: 0,\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n})\n\nexport type DataTableContentProps = {\n /** Children to render inside the table (DataTableHeader, DataTableBody) */\n children?: ReactNode\n /** Additional class name */\n className?: string\n /** Additional style */\n style?: React.CSSProperties\n}\n\n/**\n * Container component for DataTable that handles the table structure and virtualization.\n * When virtualization is enabled, this component manages the scroll container.\n *\n * If no children are provided, renders DataTableHeader and DataTableBody by default.\n */\nexport const DataTableContent = React.forwardRef<\n HTMLDivElement,\n DataTableContentProps\n>(function DataTableContent({ children, className, style }, ref) {\n const styles = useStyles()\n const { table, config, disableColumnResizing } = useDataTable()\n const enableColumnResizing = !disableColumnResizing\n\n const isResizing =\n enableColumnResizing && table.getState().columnSizingInfo?.isResizingColumn\n const internalContainerRef = useRef<HTMLDivElement>(null!)\n const tableRef = useRef<HTMLTableElement>(null)\n const [hasSyncedWidths, setHasSyncedWidths] = useState(false)\n const [containerWidth, setContainerWidth] = useState(0)\n const rows = table.getRowModel().rows\n\n // Attach ref to internal ref or forwarded ref\n const handleRef = useCallback(\n (node: HTMLDivElement | null) => {\n internalContainerRef.current = node!\n if (typeof ref === \"function\") {\n ref(node)\n } else if (ref) {\n ;(ref as React.MutableRefObject<HTMLDivElement | null>).current = node\n }\n },\n [ref]\n )\n\n // Track container width for spacer calculation\n useEffect(() => {\n const container = internalContainerRef.current\n if (!container || typeof ResizeObserver === \"undefined\") return\n\n const observer = new ResizeObserver((entries) => {\n setContainerWidth(entries[0].contentRect.width)\n })\n observer.observe(container)\n return () => observer.disconnect()\n }, [])\n\n // Sync visual column widths to stored widths BEFORE resize starts\n const syncColumnWidthsBeforeResize = useCallback(() => {\n if (tableRef.current && !hasSyncedWidths) {\n const headerCells = tableRef.current.querySelectorAll(\n \"th:not([data-spacer])\"\n )\n const columns = table.getVisibleLeafColumns()\n\n if (headerCells.length === columns.length) {\n const newSizing: Record<string, number> = {}\n\n headerCells.forEach((cell, index) => {\n const column = columns[index]\n if (column) {\n newSizing[column.id] = Math.round(\n cell.getBoundingClientRect().width\n )\n }\n })\n\n flushSync(() => {\n setHasSyncedWidths(true)\n table.setColumnSizing((prev) => ({ ...prev, ...newSizing }))\n })\n }\n }\n }, [table, hasSyncedWidths])\n\n const isVirtual = Boolean(config?.enableVirtualization)\n\n // Always call useVirtualizer to follow React hooks rules\n // When virtualization is disabled, count=0 makes it effectively a no-op\n const virtualizer = useVirtualizer({\n count: isVirtual ? rows.length : 0,\n getScrollElement: () => internalContainerRef.current,\n estimateSize: () => config?.estimateRowHeight ?? DEFAULT_ROW_HEIGHT,\n overscan: config?.overscan ?? DEFAULT_OVERSCAN,\n enabled: isVirtual,\n })\n\n // Get column sizing and visibility state to trigger recalculation\n const columnSizing = table.getState().columnSizing\n const columnVisibility = table.getState().columnVisibility\n\n // Calculate total column width from visible columns\n const calculatedColumnSum = useMemo(() => {\n const totalWidth = table.getVisibleLeafColumns().reduce((sum, col) => {\n return sum + (col.getSize() ?? DEFAULT_COLUMN_WIDTH)\n }, 0)\n return totalWidth\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [table, columnSizing, columnVisibility])\n\n const WIDTH_BUFFER = 4\n const tableWidth = useMemo(() => {\n if (!hasSyncedWidths) {\n return `calc(100% - ${WIDTH_BUFFER}px)`\n }\n return calculatedColumnSum\n ? `${calculatedColumnSum}px`\n : `calc(100% - ${WIDTH_BUFFER}px)`\n }, [hasSyncedWidths, calculatedColumnSum])\n\n // Calculate spacer width to fill remaining container space after resize\n const spacerWidth = useMemo(() => {\n if (!hasSyncedWidths || !containerWidth) return 0\n return Math.max(0, containerWidth - calculatedColumnSum)\n }, [hasSyncedWidths, containerWidth, calculatedColumnSum])\n\n // If no children, render default header + body\n const content = children ?? (\n <>\n <DataTableHeader />\n <DataTableBody />\n </>\n )\n\n const contentContextValue = useMemo(\n () => ({ syncColumnWidthsBeforeResize, spacerWidth }),\n [syncColumnWidthsBeforeResize, spacerWidth]\n )\n\n const virtualizerContextValue = useMemo(\n () =>\n isVirtual\n ? { virtualizer, scrollContainerRef: internalContainerRef }\n : null,\n [isVirtual, virtualizer]\n )\n\n return (\n <DataTableContentContext.Provider value={contentContextValue}>\n <DataTableVirtualizerContext.Provider value={virtualizerContextValue}>\n <div\n ref={handleRef}\n data-slot=\"data-table-content\"\n {...{ [SLOT_ATTR]: \"data-table-content\" }}\n data-fs-element=\"DataTable-Content\"\n className={mergeClasses(\n styles.container,\n isResizing && styles.resizing,\n className\n )}\n style={{\n height: isVirtual ? config?.containerHeight : undefined,\n ...style,\n }}\n >\n <table\n ref={tableRef}\n data-slot=\"table\"\n {...{ [SLOT_ATTR]: \"table\" }}\n className={styles.table}\n style={{ width: tableWidth }}\n >\n {content}\n </table>\n </div>\n </DataTableVirtualizerContext.Provider>\n </DataTableContentContext.Provider>\n )\n})\n"],"names":["DEFAULT_COLUMN_WIDTH","useStyles","makeZenithStyles","boxModel","shorthands","tokens.textSm","tokens.leadingSm","DataTableContent","React","children","className","style","ref","styles","table","config","disableColumnResizing","useDataTable","isResizing","_a","internalContainerRef","useRef","tableRef","hasSyncedWidths","setHasSyncedWidths","useState","containerWidth","setContainerWidth","rows","handleRef","useCallback","node","useEffect","container","observer","entries","syncColumnWidthsBeforeResize","headerCells","columns","newSizing","cell","index","column","flushSync","prev","isVirtual","virtualizer","useVirtualizer","DEFAULT_ROW_HEIGHT","DEFAULT_OVERSCAN","columnSizing","columnVisibility","calculatedColumnSum","useMemo","sum","col","WIDTH_BUFFER","tableWidth","spacerWidth","content","jsxs","Fragment","jsx","DataTableHeader","DataTableBody","contentContextValue","virtualizerContextValue","DataTableContentContext","DataTableVirtualizerContext","SLOT_ATTR","mergeClasses"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
- import { jsx as t, jsxs as g, Fragment as d } from "react/jsx-runtime";
2
- import * as p from "react";
3
- import { mergeClasses as h, SLOT_ATTR as T, shorthands as r } from "@epilot/zenith-runtime/v1";
4
- import { makeZenithStyles as q } from "../../styles/make-styles.js";
5
- import { spacingGroup1 as f, grayA11 as x, leadingSm as u, textSm as y, grayA12 as w, fontWeightMedium as v, leadingBase as S, textBase as B, spacingElement2 as Z, errorA11 as A, spacingElement1 as E, spacingLayout2 as N } from "../../tokens/index.js";
6
- import { Button as b } from "../button/button.js";
7
- const C = (o) => /* @__PURE__ */ t(
1
+ import { jsx as t, jsxs as d, Fragment as p } from "react/jsx-runtime";
2
+ import * as h from "react";
3
+ import { mergeClasses as T, SLOT_ATTR as q, shorthands as r } from "@epilot/zenith-runtime/v1";
4
+ import { makeZenithStyles as f } from "../../styles/make-styles.js";
5
+ import { boxModel as o } from "../../styles/host-reset.js";
6
+ import { spacingGroup1 as x, grayA11 as u, leadingSm as y, textSm as w, grayA12 as v, fontWeightMedium as S, leadingBase as B, textBase as Z, spacingElement2 as b, errorA11 as A, spacingElement1 as E, spacingLayout2 as N } from "../../tokens/index.js";
7
+ import { Button as C } from "../button/button.js";
8
+ const j = (i) => /* @__PURE__ */ t(
8
9
  "svg",
9
10
  {
10
11
  xmlns: "http://www.w3.org/2000/svg",
@@ -12,11 +13,12 @@ const C = (o) => /* @__PURE__ */ t(
12
13
  viewBox: "0 -960 960 960",
13
14
  width: "24px",
14
15
  fill: "currentColor",
15
- ...o,
16
+ ...i,
16
17
  children: /* @__PURE__ */ t("path", { d: "M480-280q17 0 28.5-11.5T520-320q0-17-11.5-28.5T480-360q-17 0-28.5 11.5T440-320q0 17 11.5 28.5T480-280Zm0-160q17 0 28.5-11.5T520-480v-160q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640v160q0 17 11.5 28.5T480-440Zm0 360q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" })
17
18
  }
18
- ), j = q({
19
+ ), k = f({
19
20
  root: {
21
+ ...o,
20
22
  display: "flex",
21
23
  flexDirection: "column",
22
24
  alignItems: "center",
@@ -26,50 +28,52 @@ const C = (o) => /* @__PURE__ */ t(
26
28
  textAlign: "center"
27
29
  },
28
30
  icon: {
31
+ ...o,
29
32
  width: "2.5rem",
30
33
  height: "2.5rem",
31
34
  color: A,
32
- marginBottom: Z
35
+ marginBottom: b
33
36
  },
34
37
  title: {
35
- fontSize: B,
36
- lineHeight: S,
37
- fontWeight: v,
38
- color: w,
38
+ fontSize: Z,
39
+ lineHeight: B,
40
+ fontWeight: S,
41
+ color: v,
39
42
  ...r.margin(0)
40
43
  },
41
44
  description: {
42
- fontSize: y,
43
- lineHeight: u,
44
- color: x,
45
+ ...o,
46
+ fontSize: w,
47
+ lineHeight: y,
48
+ color: u,
45
49
  maxWidth: "28rem",
46
50
  ...r.margin(0)
47
51
  },
48
52
  retry: {
49
- marginTop: f
53
+ marginTop: x
50
54
  }
51
- }), I = p.forwardRef(function({ title: n, description: i, retryLabel: l, onRetry: a, className: s, children: m }, c) {
52
- const e = j();
55
+ }), L = h.forwardRef(function({ title: l, description: a, retryLabel: s, onRetry: n, className: m, children: c }, g) {
56
+ const e = k();
53
57
  return /* @__PURE__ */ t(
54
58
  "div",
55
59
  {
56
- ref: c,
60
+ ref: g,
57
61
  "data-slot": "data-table-error",
58
- [T]: "data-table-error",
62
+ [q]: "data-table-error",
59
63
  role: "alert",
60
- className: h(e.root, s),
61
- children: m ?? /* @__PURE__ */ g(d, { children: [
62
- /* @__PURE__ */ t(C, { className: e.icon }),
63
- /* @__PURE__ */ t("p", { className: e.title, children: n }),
64
- i && /* @__PURE__ */ t("p", { className: e.description, children: i }),
65
- a && /* @__PURE__ */ t(
66
- b,
64
+ className: T(e.root, m),
65
+ children: c ?? /* @__PURE__ */ d(p, { children: [
66
+ /* @__PURE__ */ t(j, { className: e.icon }),
67
+ /* @__PURE__ */ t("p", { className: e.title, children: l }),
68
+ a && /* @__PURE__ */ t("p", { className: e.description, children: a }),
69
+ n && /* @__PURE__ */ t(
70
+ C,
67
71
  {
68
72
  variant: "secondary",
69
73
  size: "sm",
70
- onClick: a,
74
+ onClick: n,
71
75
  className: e.retry,
72
- children: l
76
+ children: s
73
77
  }
74
78
  )
75
79
  ] })
@@ -77,6 +81,6 @@ const C = (o) => /* @__PURE__ */ t(
77
81
  );
78
82
  });
79
83
  export {
80
- I as DataTableError
84
+ L as DataTableError
81
85
  };
82
86
  //# sourceMappingURL=data-table-error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-error.js","sources":["../../../src/components/data-table/data-table-error.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { ReactNode } from \"react\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\nimport { Button } from \"../button/button\"\n\nconst ErrorIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 -960 960 960\"\n width=\"24px\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M480-280q17 0 28.5-11.5T520-320q0-17-11.5-28.5T480-360q-17 0-28.5 11.5T440-320q0 17 11.5 28.5T480-280Zm0-160q17 0 28.5-11.5T520-480v-160q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640v160q0 17 11.5 28.5T480-440Zm0 360q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: tokens.spacingElement1,\n ...shorthands.paddingBlock(tokens.spacingLayout2),\n textAlign: \"center\",\n },\n icon: {\n width: \"2.5rem\",\n height: \"2.5rem\",\n color: tokens.errorA11,\n marginBottom: tokens.spacingElement2,\n },\n title: {\n fontSize: tokens.textBase,\n lineHeight: tokens.leadingBase,\n fontWeight: tokens.fontWeightMedium,\n color: tokens.grayA12,\n ...shorthands.margin(0),\n },\n description: {\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA11,\n maxWidth: \"28rem\",\n ...shorthands.margin(0),\n },\n retry: {\n marginTop: tokens.spacingGroup1,\n },\n})\n\nexport type DataTableErrorProps = {\n /** Error title text */\n title?: string\n /** Error description/message */\n description?: ReactNode\n /** Retry button text */\n retryLabel?: string\n /** Callback when retry is clicked */\n onRetry?: () => void\n /** Additional class name */\n className?: string\n /** Custom error content (overrides default error display) */\n children?: ReactNode\n}\n\n/**\n * Error state display for DataTable.\n * Shows an error icon, message, and optional retry button.\n */\nexport const DataTableError = React.forwardRef<\n HTMLDivElement,\n DataTableErrorProps\n>(function DataTableError(\n { title, description, retryLabel, onRetry, className, children },\n ref\n) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"data-table-error\"\n {...{ [SLOT_ATTR]: \"data-table-error\" }}\n role=\"alert\"\n className={mergeClasses(styles.root, className)}\n >\n {children ?? (\n <>\n <ErrorIcon className={styles.icon} />\n <p className={styles.title}>{title}</p>\n {description && <p className={styles.description}>{description}</p>}\n {onRetry && (\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={onRetry}\n className={styles.retry}\n >\n {retryLabel}\n </Button>\n )}\n </>\n )}\n </div>\n )\n})\n"],"names":["ErrorIcon","props","jsx","useStyles","makeZenithStyles","tokens.spacingElement1","shorthands","tokens.spacingLayout2","tokens.errorA11","tokens.spacingElement2","tokens.textBase","tokens.leadingBase","tokens.fontWeightMedium","tokens.grayA12","tokens.textSm","tokens.leadingSm","tokens.grayA11","tokens.spacingGroup1","DataTableError","React","title","description","retryLabel","onRetry","className","children","ref","styles","SLOT_ATTR","mergeClasses","jsxs","Fragment","Button"],"mappings":";;;;;;AASA,MAAMA,IAAY,CAACC,MACjB,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,OAAM;AAAA,IACN,MAAK;AAAA,IACJ,GAAGD;AAAA,IAEJ,UAAA,gBAAAC,EAAC,QAAA,EAAK,GAAE,kfAAA,CAAkf;AAAA,EAAA;AAC5f,GAGIC,IAAYC,EAAiB;AAAA,EACjC,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,KAAKC;AAAAA,IACL,GAAGC,EAAW,aAAaC,CAAqB;AAAA,IAChD,WAAW;AAAA,EAAA;AAAA,EAEb,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAOC;AAAAA,IACP,cAAcC;AAAAA,EAAO;AAAA,EAEvB,OAAO;AAAA,IACL,UAAUC;AAAAA,IACV,YAAYC;AAAAA,IACZ,YAAYC;AAAAA,IACZ,OAAOC;AAAAA,IACP,GAAGP,EAAW,OAAO,CAAC;AAAA,EAAA;AAAA,EAExB,aAAa;AAAA,IACX,UAAUQ;AAAAA,IACV,YAAYC;AAAAA,IACZ,OAAOC;AAAAA,IACP,UAAU;AAAA,IACV,GAAGV,EAAW,OAAO,CAAC;AAAA,EAAA;AAAA,EAExB,OAAO;AAAA,IACL,WAAWW;AAAAA,EAAO;AAEtB,CAAC,GAqBYC,IAAiBC,EAAM,WAGlC,SACA,EAAE,OAAAC,GAAO,aAAAC,GAAa,YAAAC,GAAY,SAAAC,GAAS,WAAAC,GAAW,UAAAC,EAAA,GACtDC,GACA;AACA,QAAMC,IAASxB,EAAA;AAEf,SACE,gBAAAD;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAwB;AAAA,MACA,aAAU;AAAA,MACJ,CAACE,CAAS,GAAG;AAAA,MACnB,MAAK;AAAA,MACL,WAAWC,EAAaF,EAAO,MAAMH,CAAS;AAAA,MAE7C,eACC,gBAAAM,EAAAC,GAAA,EACE,UAAA;AAAA,QAAA,gBAAA7B,EAACF,GAAA,EAAU,WAAW2B,EAAO,KAAA,CAAM;AAAA,QACnC,gBAAAzB,EAAC,KAAA,EAAE,WAAWyB,EAAO,OAAQ,UAAAP,GAAM;AAAA,QAClCC,KAAe,gBAAAnB,EAAC,KAAA,EAAE,WAAWyB,EAAO,aAAc,UAAAN,GAAY;AAAA,QAC9DE,KACC,gBAAArB;AAAA,UAAC8B;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAST;AAAA,YACT,WAAWI,EAAO;AAAA,YAEjB,UAAAL;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,CAEJ;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;"}
1
+ {"version":3,"file":"data-table-error.js","sources":["../../../src/components/data-table/data-table-error.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { ReactNode } from \"react\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel } from \"../../styles/host-reset\"\nimport * as tokens from \"../../tokens\"\nimport { Button } from \"../button/button\"\n\nconst ErrorIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 -960 960 960\"\n width=\"24px\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M480-280q17 0 28.5-11.5T520-320q0-17-11.5-28.5T480-360q-17 0-28.5 11.5T440-320q0 17 11.5 28.5T480-280Zm0-160q17 0 28.5-11.5T520-480v-160q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640v160q0 17 11.5 28.5T480-440Zm0 360q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n root: {\n ...boxModel,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: tokens.spacingElement1,\n ...shorthands.paddingBlock(tokens.spacingLayout2),\n textAlign: \"center\",\n },\n icon: {\n ...boxModel,\n width: \"2.5rem\",\n height: \"2.5rem\",\n color: tokens.errorA11,\n marginBottom: tokens.spacingElement2,\n },\n title: {\n fontSize: tokens.textBase,\n lineHeight: tokens.leadingBase,\n fontWeight: tokens.fontWeightMedium,\n color: tokens.grayA12,\n ...shorthands.margin(0),\n },\n description: {\n ...boxModel,\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA11,\n maxWidth: \"28rem\",\n ...shorthands.margin(0),\n },\n retry: {\n marginTop: tokens.spacingGroup1,\n },\n})\n\nexport type DataTableErrorProps = {\n /** Error title text */\n title?: string\n /** Error description/message */\n description?: ReactNode\n /** Retry button text */\n retryLabel?: string\n /** Callback when retry is clicked */\n onRetry?: () => void\n /** Additional class name */\n className?: string\n /** Custom error content (overrides default error display) */\n children?: ReactNode\n}\n\n/**\n * Error state display for DataTable.\n * Shows an error icon, message, and optional retry button.\n */\nexport const DataTableError = React.forwardRef<\n HTMLDivElement,\n DataTableErrorProps\n>(function DataTableError(\n { title, description, retryLabel, onRetry, className, children },\n ref\n) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"data-table-error\"\n {...{ [SLOT_ATTR]: \"data-table-error\" }}\n role=\"alert\"\n className={mergeClasses(styles.root, className)}\n >\n {children ?? (\n <>\n <ErrorIcon className={styles.icon} />\n <p className={styles.title}>{title}</p>\n {description && <p className={styles.description}>{description}</p>}\n {onRetry && (\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={onRetry}\n className={styles.retry}\n >\n {retryLabel}\n </Button>\n )}\n </>\n )}\n </div>\n )\n})\n"],"names":["ErrorIcon","props","jsx","useStyles","makeZenithStyles","boxModel","tokens.spacingElement1","shorthands","tokens.spacingLayout2","tokens.errorA11","tokens.spacingElement2","tokens.textBase","tokens.leadingBase","tokens.fontWeightMedium","tokens.grayA12","tokens.textSm","tokens.leadingSm","tokens.grayA11","tokens.spacingGroup1","DataTableError","React","title","description","retryLabel","onRetry","className","children","ref","styles","SLOT_ATTR","mergeClasses","jsxs","Fragment","Button"],"mappings":";;;;;;;AAUA,MAAMA,IAAY,CAACC,MACjB,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,OAAM;AAAA,IACN,MAAK;AAAA,IACJ,GAAGD;AAAA,IAEJ,UAAA,gBAAAC,EAAC,QAAA,EAAK,GAAE,kfAAA,CAAkf;AAAA,EAAA;AAC5f,GAGIC,IAAYC,EAAiB;AAAA,EACjC,MAAM;AAAA,IACJ,GAAGC;AAAA,IACH,SAAS;AAAA,IACT,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,KAAKC;AAAAA,IACL,GAAGC,EAAW,aAAaC,CAAqB;AAAA,IAChD,WAAW;AAAA,EAAA;AAAA,EAEb,MAAM;AAAA,IACJ,GAAGH;AAAA,IACH,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAOI;AAAAA,IACP,cAAcC;AAAAA,EAAO;AAAA,EAEvB,OAAO;AAAA,IACL,UAAUC;AAAAA,IACV,YAAYC;AAAAA,IACZ,YAAYC;AAAAA,IACZ,OAAOC;AAAAA,IACP,GAAGP,EAAW,OAAO,CAAC;AAAA,EAAA;AAAA,EAExB,aAAa;AAAA,IACX,GAAGF;AAAA,IACH,UAAUU;AAAAA,IACV,YAAYC;AAAAA,IACZ,OAAOC;AAAAA,IACP,UAAU;AAAA,IACV,GAAGV,EAAW,OAAO,CAAC;AAAA,EAAA;AAAA,EAExB,OAAO;AAAA,IACL,WAAWW;AAAAA,EAAO;AAEtB,CAAC,GAqBYC,IAAiBC,EAAM,WAGlC,SACA,EAAE,OAAAC,GAAO,aAAAC,GAAa,YAAAC,GAAY,SAAAC,GAAS,WAAAC,GAAW,UAAAC,EAAA,GACtDC,GACA;AACA,QAAMC,IAASzB,EAAA;AAEf,SACE,gBAAAD;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAyB;AAAA,MACA,aAAU;AAAA,MACJ,CAACE,CAAS,GAAG;AAAA,MACnB,MAAK;AAAA,MACL,WAAWC,EAAaF,EAAO,MAAMH,CAAS;AAAA,MAE7C,eACC,gBAAAM,EAAAC,GAAA,EACE,UAAA;AAAA,QAAA,gBAAA9B,EAACF,GAAA,EAAU,WAAW4B,EAAO,KAAA,CAAM;AAAA,QACnC,gBAAA1B,EAAC,KAAA,EAAE,WAAW0B,EAAO,OAAQ,UAAAP,GAAM;AAAA,QAClCC,KAAe,gBAAApB,EAAC,KAAA,EAAE,WAAW0B,EAAO,aAAc,UAAAN,GAAY;AAAA,QAC9DE,KACC,gBAAAtB;AAAA,UAAC+B;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAST;AAAA,YACT,WAAWI,EAAO;AAAA,YAEjB,UAAAL;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,CAEJ;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;"}
@@ -2,30 +2,32 @@ import { jsx as s } from "react/jsx-runtime";
2
2
  import * as l from "react";
3
3
  import { mergeClasses as m, SLOT_ATTR as n, shorthands as i } from "@epilot/zenith-runtime/v1";
4
4
  import { makeZenithStyles as f } from "../../styles/make-styles.js";
5
- import { spacingGroup2 as p, spacingElement3 as c } from "../../tokens/index.js";
6
- const d = f({
5
+ import { boxModel as p } from "../../styles/host-reset.js";
6
+ import { spacingGroup2 as d, spacingElement3 as c } from "../../tokens/index.js";
7
+ const b = f({
7
8
  root: {
9
+ ...p,
8
10
  display: "flex",
9
11
  alignItems: "center",
10
- gap: p,
12
+ gap: d,
11
13
  ...i.paddingBlock(c)
12
14
  }
13
- }), h = l.forwardRef(function({ className: t, children: o, ...a }, e) {
14
- const r = d();
15
+ }), D = l.forwardRef(function({ className: t, children: o, ...e }, a) {
16
+ const r = b();
15
17
  return /* @__PURE__ */ s(
16
18
  "div",
17
19
  {
18
- ref: e,
20
+ ref: a,
19
21
  "data-slot": "data-table-footer",
20
22
  [n]: "data-table-footer",
21
23
  "data-fs-element": "DataTable-Footer",
22
24
  className: m(r.root, t),
23
- ...a,
25
+ ...e,
24
26
  children: o
25
27
  }
26
28
  );
27
29
  });
28
30
  export {
29
- h as DataTableFooter
31
+ D as DataTableFooter
30
32
  };
31
33
  //# sourceMappingURL=data-table-footer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-footer.js","sources":["../../../src/components/data-table/data-table-footer.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\n\nconst useStyles = makeZenithStyles({\n root: {\n display: \"flex\",\n alignItems: \"center\",\n gap: tokens.spacingGroup2,\n ...shorthands.paddingBlock(tokens.spacingElement3),\n },\n})\n\nexport type DataTableFooterProps = React.ComponentProps<\"div\">\n\n/**\n * A footer wrapper for DataTable that sits between the table content and pagination.\n * Use for custom actions like \"Show more\" links or summary information.\n */\nexport const DataTableFooter = React.forwardRef<\n HTMLDivElement,\n DataTableFooterProps\n>(function DataTableFooter({ className, children, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"data-table-footer\"\n {...{ [SLOT_ATTR]: \"data-table-footer\" }}\n data-fs-element=\"DataTable-Footer\"\n className={mergeClasses(styles.root, className)}\n {...props}\n >\n {children}\n </div>\n )\n})\n"],"names":["useStyles","makeZenithStyles","tokens.spacingGroup2","shorthands","tokens.spacingElement3","DataTableFooter","React","className","children","props","ref","styles","jsx","SLOT_ATTR","mergeClasses"],"mappings":";;;;;AAOA,MAAMA,IAAYC,EAAiB;AAAA,EACjC,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,KAAKC;AAAAA,IACL,GAAGC,EAAW,aAAaC,CAAsB;AAAA,EAAA;AAErD,CAAC,GAQYC,IAAkBC,EAAM,WAGnC,SAAyB,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,GAAK;AACjE,QAAMC,IAASX,EAAA;AAEf,SACE,gBAAAY;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,aAAU;AAAA,MACJ,CAACG,CAAS,GAAG;AAAA,MACnB,mBAAgB;AAAA,MAChB,WAAWC,EAAaH,EAAO,MAAMJ,CAAS;AAAA,MAC7C,GAAGE;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}
1
+ {"version":3,"file":"data-table-footer.js","sources":["../../../src/components/data-table/data-table-footer.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel } from \"../../styles/host-reset\"\nimport * as tokens from \"../../tokens\"\n\nconst useStyles = makeZenithStyles({\n root: {\n ...boxModel,\n display: \"flex\",\n alignItems: \"center\",\n gap: tokens.spacingGroup2,\n ...shorthands.paddingBlock(tokens.spacingElement3),\n },\n})\n\nexport type DataTableFooterProps = React.ComponentProps<\"div\">\n\n/**\n * A footer wrapper for DataTable that sits between the table content and pagination.\n * Use for custom actions like \"Show more\" links or summary information.\n */\nexport const DataTableFooter = React.forwardRef<\n HTMLDivElement,\n DataTableFooterProps\n>(function DataTableFooter({ className, children, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"data-table-footer\"\n {...{ [SLOT_ATTR]: \"data-table-footer\" }}\n data-fs-element=\"DataTable-Footer\"\n className={mergeClasses(styles.root, className)}\n {...props}\n >\n {children}\n </div>\n )\n})\n"],"names":["useStyles","makeZenithStyles","boxModel","tokens.spacingGroup2","shorthands","tokens.spacingElement3","DataTableFooter","React","className","children","props","ref","styles","jsx","SLOT_ATTR","mergeClasses"],"mappings":";;;;;;AAQA,MAAMA,IAAYC,EAAiB;AAAA,EACjC,MAAM;AAAA,IACJ,GAAGC;AAAA,IACH,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,KAAKC;AAAAA,IACL,GAAGC,EAAW,aAAaC,CAAsB;AAAA,EAAA;AAErD,CAAC,GAQYC,IAAkBC,EAAM,WAGnC,SAAyB,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,GAAK;AACjE,QAAMC,IAASZ,EAAA;AAEf,SACE,gBAAAa;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,aAAU;AAAA,MACJ,CAACG,CAAS,GAAG;AAAA,MACnB,mBAAgB;AAAA,MAChB,WAAWC,EAAaH,EAAO,MAAMJ,CAAS;AAAA,MAC7C,GAAGE;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}
@@ -1,12 +1,13 @@
1
- import { jsx as a, jsxs as d } from "react/jsx-runtime";
1
+ import { jsx as a, jsxs as g } from "react/jsx-runtime";
2
2
  import * as c from "react";
3
- import { useSortable as D } from "../../vendor/.bun/@dnd-kit_sortable@10.0.0_1d291640e1250bbe/vendor/@dnd-kit/sortable/dist/sortable.esm.js";
4
- import { CSS as T } from "../../vendor/.bun/@dnd-kit_utilities@3.2.2_62547eec5a2188e3/vendor/@dnd-kit/utilities/dist/utilities.esm.js";
5
- import { SLOT_ATTR as r, mergeClasses as C, shorthands as s } from "@epilot/zenith-runtime/v1";
6
- import { makeZenithStyles as H } from "../../styles/make-styles.js";
7
- import { accentA8 as N, grayA12 as R, grayA8 as k } from "../../tokens/index.js";
8
- import { TableHead as A } from "../table/table.js";
9
- const I = (n) => /* @__PURE__ */ d(
3
+ import { useSortable as T } from "../../vendor/.bun/@dnd-kit_sortable@10.0.0_1d291640e1250bbe/vendor/@dnd-kit/sortable/dist/sortable.esm.js";
4
+ import { CSS as C } from "../../vendor/.bun/@dnd-kit_utilities@3.2.2_62547eec5a2188e3/vendor/@dnd-kit/utilities/dist/utilities.esm.js";
5
+ import { SLOT_ATTR as r, mergeClasses as H, shorthands as s } from "@epilot/zenith-runtime/v1";
6
+ import { makeZenithStyles as N } from "../../styles/make-styles.js";
7
+ import { boxModel as d, nativeControl as R } from "../../styles/host-reset.js";
8
+ import { accentA8 as k, grayA12 as A, grayA8 as I } from "../../tokens/index.js";
9
+ import { TableHead as W } from "../table/table.js";
10
+ const j = (n) => /* @__PURE__ */ g(
10
11
  "svg",
11
12
  {
12
13
  xmlns: "http://www.w3.org/2000/svg",
@@ -24,7 +25,7 @@ const I = (n) => /* @__PURE__ */ d(
24
25
  /* @__PURE__ */ a("circle", { cx: "15", cy: "19", r: "1.5" })
25
26
  ]
26
27
  }
27
- ), W = H({
28
+ ), B = N({
28
29
  root: {
29
30
  // When not disabled, hovering over the cell reveals the drag handle
30
31
  [`&:hover [${r}="data-table-header-drag-handle"]`]: {
@@ -36,12 +37,13 @@ const I = (n) => /* @__PURE__ */ d(
36
37
  alignItems: "center"
37
38
  },
38
39
  dragHandle: {
40
+ ...R,
39
41
  display: "inline-flex",
40
42
  flexShrink: 0,
41
43
  cursor: "grab",
42
44
  touchAction: "none",
43
45
  alignItems: "center",
44
- color: k,
46
+ color: I,
45
47
  opacity: 0,
46
48
  transitionProperty: "opacity",
47
49
  transitionDuration: "150ms",
@@ -51,66 +53,68 @@ const I = (n) => /* @__PURE__ */ d(
51
53
  ...s.borderWidth(0),
52
54
  ...s.padding(0),
53
55
  "&:hover": {
54
- color: R
56
+ color: A
55
57
  },
56
58
  "&:focus-visible": {
57
59
  opacity: 1,
58
60
  outlineWidth: "2px",
59
61
  outlineStyle: "solid",
60
62
  outlineOffset: "2px",
61
- outlineColor: N
63
+ outlineColor: k
62
64
  },
63
65
  "&:active": {
64
66
  cursor: "grabbing"
65
67
  }
66
68
  },
67
69
  content: {
70
+ ...d,
68
71
  minWidth: 0,
69
72
  flexGrow: 1,
70
73
  flexShrink: 1,
71
74
  flexBasis: "0%"
72
75
  },
73
76
  icon: {
77
+ ...d,
74
78
  width: "14px",
75
79
  height: "14px"
76
80
  }
77
- }), V = c.forwardRef(function({
78
- headerId: g,
81
+ }), _ = c.forwardRef(function({
82
+ headerId: m,
79
83
  disabled: o = !1,
80
84
  children: h,
81
- style: m,
82
- className: b,
83
- ...f
85
+ style: b,
86
+ className: f,
87
+ ...p
84
88
  }, e) {
85
- const t = W(), {
86
- attributes: p,
87
- listeners: x,
89
+ const t = B(), {
90
+ attributes: x,
91
+ listeners: y,
88
92
  setNodeRef: i,
89
- transform: y,
90
- transition: u,
93
+ transform: u,
94
+ transition: v,
91
95
  isDragging: S
92
- } = D({ id: g, disabled: o }), v = c.useCallback(
96
+ } = T({ id: m, disabled: o }), w = c.useCallback(
93
97
  (l) => {
94
98
  i(l), typeof e == "function" ? e(l) : e && (e.current = l);
95
99
  },
96
100
  [i, e]
97
- ), w = {
98
- ...m,
99
- transform: T.Transform.toString(y),
100
- transition: u,
101
+ ), D = {
102
+ ...b,
103
+ transform: C.Transform.toString(u),
104
+ transition: v,
101
105
  ...S && { zIndex: 50, opacity: 0.8 }
102
106
  };
103
107
  return /* @__PURE__ */ a(
104
- A,
108
+ W,
105
109
  {
106
- ref: v,
107
- style: w,
108
- className: C(!o && t.root, b),
110
+ ref: w,
111
+ style: D,
112
+ className: H(!o && t.root, f),
109
113
  "data-slot": "data-table-header-draggable",
110
114
  [r]: "data-table-header-draggable",
111
115
  "data-fs-element": "DataTable-Header-Draggable",
112
- ...f,
113
- children: /* @__PURE__ */ d(
116
+ ...p,
117
+ children: /* @__PURE__ */ g(
114
118
  "div",
115
119
  {
116
120
  className: t.inner,
@@ -125,9 +129,9 @@ const I = (n) => /* @__PURE__ */ d(
125
129
  "data-slot": "data-table-header-drag-handle",
126
130
  [r]: "data-table-header-drag-handle",
127
131
  "aria-label": "Drag to reorder column",
128
- ...p,
129
132
  ...x,
130
- children: /* @__PURE__ */ a(I, { className: t.icon })
133
+ ...y,
134
+ children: /* @__PURE__ */ a(j, { className: t.icon })
131
135
  }
132
136
  ),
133
137
  /* @__PURE__ */ a(
@@ -146,6 +150,6 @@ const I = (n) => /* @__PURE__ */ d(
146
150
  );
147
151
  });
148
152
  export {
149
- V as DataTableHeaderDraggable
153
+ _ as DataTableHeaderDraggable
150
154
  };
151
155
  //# sourceMappingURL=data-table-header-draggable.js.map