@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.
- package/dist/components/accordion/accordion.js +57 -48
- package/dist/components/accordion/accordion.js.map +1 -1
- package/dist/components/alert-dialog/alert-dialog.js +120 -92
- package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/components/avatar/avatar-group.js +38 -35
- package/dist/components/avatar/avatar-group.js.map +1 -1
- package/dist/components/avatar/avatar.js +78 -71
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/badge/badge.js +60 -55
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.js +99 -54
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/components/button/button.js +87 -77
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/button-group/button-group.js +36 -32
- package/dist/components/button-group/button-group.js.map +1 -1
- package/dist/components/callout/callout.js +105 -98
- package/dist/components/callout/callout.js.map +1 -1
- package/dist/components/card/card.js +62 -52
- package/dist/components/card/card.js.map +1 -1
- package/dist/components/checkbox/checkbox.js +22 -19
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/code-block/code-block.js +135 -123
- package/dist/components/code-block/code-block.js.map +1 -1
- package/dist/components/code-editor/code-editor.js +276 -260
- package/dist/components/code-editor/code-editor.js.map +1 -1
- package/dist/components/collapsible-sidebar/collapsible-sidebar.js +62 -56
- package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -1
- package/dist/components/command/command.js +116 -105
- package/dist/components/command/command.js.map +1 -1
- package/dist/components/data-table/data-table-body.js +38 -34
- package/dist/components/data-table/data-table-body.js.map +1 -1
- package/dist/components/data-table/data-table-column-header.js +30 -26
- package/dist/components/data-table/data-table-column-header.js.map +1 -1
- package/dist/components/data-table/data-table-column-order.js +79 -73
- package/dist/components/data-table/data-table-column-order.js.map +1 -1
- package/dist/components/data-table/data-table-column-visibility.js +25 -22
- package/dist/components/data-table/data-table-column-visibility.js.map +1 -1
- package/dist/components/data-table/data-table-content.js +47 -44
- package/dist/components/data-table/data-table-content.js.map +1 -1
- package/dist/components/data-table/data-table-error.js +36 -32
- package/dist/components/data-table/data-table-error.js.map +1 -1
- package/dist/components/data-table/data-table-footer.js +10 -8
- package/dist/components/data-table/data-table-footer.js.map +1 -1
- package/dist/components/data-table/data-table-header-draggable.js +40 -36
- package/dist/components/data-table/data-table-header-draggable.js.map +1 -1
- package/dist/components/data-table/data-table-loading.js +21 -18
- package/dist/components/data-table/data-table-loading.js.map +1 -1
- package/dist/components/data-table/data-table-resize-handle.js +13 -11
- package/dist/components/data-table/data-table-resize-handle.js.map +1 -1
- package/dist/components/data-table/data-table-row.js +47 -44
- package/dist/components/data-table/data-table-row.js.map +1 -1
- package/dist/components/data-table/data-table-toolbar.js +9 -7
- package/dist/components/data-table/data-table-toolbar.js.map +1 -1
- package/dist/components/data-table/data-table.js +48 -46
- package/dist/components/data-table/data-table.js.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.js +173 -164
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/date-range-picker/range-calendar.js +36 -34
- package/dist/components/date-range-picker/range-calendar.js.map +1 -1
- package/dist/components/date-time-picker/calendar.js +290 -272
- package/dist/components/date-time-picker/calendar.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-input.js +22 -20
- package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-panel.js +126 -120
- package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker.js +42 -40
- package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
- package/dist/components/date-time-picker/time-picker.js +95 -87
- package/dist/components/date-time-picker/time-picker.js.map +1 -1
- package/dist/components/dialog/dialog.js +115 -95
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/drawer/drawer.js +144 -109
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.js +141 -112
- package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/components/field/field-combobox.js +196 -176
- package/dist/components/field/field-combobox.js.map +1 -1
- package/dist/components/field/field.js +137 -126
- package/dist/components/field/field.js.map +1 -1
- package/dist/components/list/list.js +237 -219
- package/dist/components/list/list.js.map +1 -1
- package/dist/components/option-card/option-card.js +129 -116
- package/dist/components/option-card/option-card.js.map +1 -1
- package/dist/components/pill/pill.js +55 -51
- package/dist/components/pill/pill.js.map +1 -1
- package/dist/components/popover/popover.js +53 -36
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/radio/radio.js +38 -34
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/scroll-area/scroll-area.js +38 -35
- package/dist/components/scroll-area/scroll-area.js.map +1 -1
- package/dist/components/scroll-overflow/scroll-overflow.js +166 -151
- package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
- package/dist/components/segmented-control/segmented-control.js +93 -85
- package/dist/components/segmented-control/segmented-control.js.map +1 -1
- package/dist/components/select/select.js +149 -128
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/separator/separator.js +19 -16
- package/dist/components/separator/separator.js.map +1 -1
- package/dist/components/skeleton/skeleton.js +34 -30
- package/dist/components/skeleton/skeleton.js.map +1 -1
- package/dist/components/spinner/spinner.js +22 -17
- package/dist/components/spinner/spinner.js.map +1 -1
- package/dist/components/surface/surface.js +25 -22
- package/dist/components/surface/surface.js.map +1 -1
- package/dist/components/switch/switch.js +66 -57
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/table/table-pagination.js +139 -129
- package/dist/components/table/table-pagination.js.map +1 -1
- package/dist/components/table/table.js +104 -90
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/tabs/tabs.js +206 -128
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/toast/toast.js +112 -100
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/toggle/toggle.js +32 -30
- package/dist/components/toggle/toggle.js.map +1 -1
- package/dist/components/tooltip/tooltip.js +59 -46
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/lib/clear-button.js +18 -17
- package/dist/lib/clear-button.js.map +1 -1
- package/dist/styles/host-reset.js +47 -0
- package/dist/styles/host-reset.js.map +1 -0
- package/dist/styles/overlay-layer.js +5 -0
- package/dist/styles/overlay-layer.js.map +1 -0
- package/dist/tokens.json +1 -1
- package/package.json +8 -7
- package/scripts/migration-diagnostics.mjs +42 -7
- package/scripts/migration-sweep.mjs +9 -1
|
@@ -1,112 +1,115 @@
|
|
|
1
|
-
import { jsx as a, jsxs as
|
|
2
|
-
import * as
|
|
3
|
-
import { useRef as T, useState as v, useCallback as y, useEffect as
|
|
4
|
-
import { flushSync as
|
|
5
|
-
import { useVirtualizer as
|
|
6
|
-
import { SLOT_ATTR as x, mergeClasses as
|
|
7
|
-
import { makeZenithStyles as
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
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
|
-
...
|
|
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:
|
|
28
|
-
lineHeight:
|
|
30
|
+
fontSize: Y,
|
|
31
|
+
lineHeight: X
|
|
29
32
|
}
|
|
30
|
-
}),
|
|
33
|
+
}), ve = P.forwardRef(function({ children: w, className: W, style: V }, s) {
|
|
31
34
|
var z;
|
|
32
|
-
const d =
|
|
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
|
-
|
|
41
|
+
q(() => {
|
|
39
42
|
const t = m.current;
|
|
40
43
|
if (!t || typeof ResizeObserver > "u") return;
|
|
41
44
|
const o = new ResizeObserver((r) => {
|
|
42
|
-
|
|
45
|
+
_(r[0].contentRect.width);
|
|
43
46
|
});
|
|
44
47
|
return o.observe(t), () => o.disconnect();
|
|
45
48
|
}, []);
|
|
46
49
|
const C = y(() => {
|
|
47
|
-
if (
|
|
48
|
-
const t =
|
|
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,
|
|
54
|
-
const R = o[
|
|
56
|
+
t.forEach((b, $) => {
|
|
57
|
+
const R = o[$];
|
|
55
58
|
R && (r[R.id] = Math.round(
|
|
56
59
|
b.getBoundingClientRect().width
|
|
57
60
|
));
|
|
58
|
-
}),
|
|
59
|
-
|
|
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 =
|
|
64
|
-
count: l ?
|
|
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) ??
|
|
67
|
-
overscan: (e == null ? void 0 : e.overscan) ??
|
|
69
|
+
estimateSize: () => (e == null ? void 0 : e.estimateRowHeight) ?? oe,
|
|
70
|
+
overscan: (e == null ? void 0 : e.overscan) ?? ee,
|
|
68
71
|
enabled: l
|
|
69
|
-
}),
|
|
70
|
-
/* @__PURE__ */ a(
|
|
71
|
-
/* @__PURE__ */ a(
|
|
72
|
-
] }),
|
|
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
|
-
),
|
|
78
|
+
), N = u(
|
|
76
79
|
() => l ? { virtualizer: g, scrollContainerRef: m } : null,
|
|
77
80
|
[l, g]
|
|
78
81
|
);
|
|
79
|
-
return /* @__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:
|
|
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:
|
|
89
|
+
className: J(
|
|
87
90
|
d.container,
|
|
88
|
-
|
|
89
|
-
|
|
91
|
+
H && d.resizing,
|
|
92
|
+
W
|
|
90
93
|
),
|
|
91
94
|
style: {
|
|
92
95
|
height: l ? e == null ? void 0 : e.containerHeight : void 0,
|
|
93
|
-
...
|
|
96
|
+
...V
|
|
94
97
|
},
|
|
95
98
|
children: /* @__PURE__ */ a(
|
|
96
99
|
"table",
|
|
97
100
|
{
|
|
98
|
-
ref:
|
|
101
|
+
ref: f,
|
|
99
102
|
"data-slot": "table",
|
|
100
103
|
[x]: "table",
|
|
101
104
|
className: d.table,
|
|
102
105
|
style: { width: B },
|
|
103
|
-
children:
|
|
106
|
+
children: U
|
|
104
107
|
}
|
|
105
108
|
)
|
|
106
109
|
}
|
|
107
110
|
) }) });
|
|
108
111
|
});
|
|
109
112
|
export {
|
|
110
|
-
|
|
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":"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"}
|
|
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
|
|
2
|
-
import * as
|
|
3
|
-
import { mergeClasses as
|
|
4
|
-
import { makeZenithStyles as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
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
|
-
...
|
|
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
|
-
),
|
|
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:
|
|
35
|
+
marginBottom: b
|
|
33
36
|
},
|
|
34
37
|
title: {
|
|
35
|
-
fontSize:
|
|
36
|
-
lineHeight:
|
|
37
|
-
fontWeight:
|
|
38
|
-
color:
|
|
38
|
+
fontSize: Z,
|
|
39
|
+
lineHeight: B,
|
|
40
|
+
fontWeight: S,
|
|
41
|
+
color: v,
|
|
39
42
|
...r.margin(0)
|
|
40
43
|
},
|
|
41
44
|
description: {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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:
|
|
53
|
+
marginTop: x
|
|
50
54
|
}
|
|
51
|
-
}),
|
|
52
|
-
const e =
|
|
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:
|
|
60
|
+
ref: g,
|
|
57
61
|
"data-slot": "data-table-error",
|
|
58
|
-
[
|
|
62
|
+
[q]: "data-table-error",
|
|
59
63
|
role: "alert",
|
|
60
|
-
className:
|
|
61
|
-
children:
|
|
62
|
-
/* @__PURE__ */ t(
|
|
63
|
-
/* @__PURE__ */ t("p", { className: e.title, children:
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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:
|
|
74
|
+
onClick: n,
|
|
71
75
|
className: e.retry,
|
|
72
|
-
children:
|
|
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
|
-
|
|
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":"
|
|
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 {
|
|
6
|
-
|
|
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:
|
|
12
|
+
gap: d,
|
|
11
13
|
...i.paddingBlock(c)
|
|
12
14
|
}
|
|
13
|
-
}),
|
|
14
|
-
const r =
|
|
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:
|
|
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
|
-
...
|
|
25
|
+
...e,
|
|
24
26
|
children: o
|
|
25
27
|
}
|
|
26
28
|
);
|
|
27
29
|
});
|
|
28
30
|
export {
|
|
29
|
-
|
|
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":"
|
|
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
|
|
1
|
+
import { jsx as a, jsxs as g } from "react/jsx-runtime";
|
|
2
2
|
import * as c from "react";
|
|
3
|
-
import { useSortable as
|
|
4
|
-
import { CSS as
|
|
5
|
-
import { SLOT_ATTR as r, mergeClasses as
|
|
6
|
-
import { makeZenithStyles as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
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
|
-
),
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
}),
|
|
78
|
-
headerId:
|
|
81
|
+
}), _ = c.forwardRef(function({
|
|
82
|
+
headerId: m,
|
|
79
83
|
disabled: o = !1,
|
|
80
84
|
children: h,
|
|
81
|
-
style:
|
|
82
|
-
className:
|
|
83
|
-
...
|
|
85
|
+
style: b,
|
|
86
|
+
className: f,
|
|
87
|
+
...p
|
|
84
88
|
}, e) {
|
|
85
|
-
const t =
|
|
86
|
-
attributes:
|
|
87
|
-
listeners:
|
|
89
|
+
const t = B(), {
|
|
90
|
+
attributes: x,
|
|
91
|
+
listeners: y,
|
|
88
92
|
setNodeRef: i,
|
|
89
|
-
transform:
|
|
90
|
-
transition:
|
|
93
|
+
transform: u,
|
|
94
|
+
transition: v,
|
|
91
95
|
isDragging: S
|
|
92
|
-
} =
|
|
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
|
-
),
|
|
98
|
-
...
|
|
99
|
-
transform:
|
|
100
|
-
transition:
|
|
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
|
-
|
|
108
|
+
W,
|
|
105
109
|
{
|
|
106
|
-
ref:
|
|
107
|
-
style:
|
|
108
|
-
className:
|
|
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
|
-
...
|
|
113
|
-
children: /* @__PURE__ */
|
|
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
|
-
|
|
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
|
-
|
|
153
|
+
_ as DataTableHeaderDraggable
|
|
150
154
|
};
|
|
151
155
|
//# sourceMappingURL=data-table-header-draggable.js.map
|