@actioneer/ads 0.5.6 → 0.5.8
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/bin/ads-init.mjs +6 -0
- package/components/accordion.js +50 -48
- package/components/agent-icon.d.ts +12 -0
- package/components/agent-icon.js +135 -121
- package/components/ai-elements/chain-of-thought-icon.d.ts +10 -12
- package/components/ai-elements/chain-of-thought-icon.js +341 -201
- package/components/ai-elements/chain-of-thought.d.ts +2 -2
- package/components/ai-elements/chain-of-thought.js +108 -108
- package/components/ai-elements/chart.js +16 -14
- package/components/ai-elements/inline-citation.js +41 -41
- package/components/ai-elements/message.js +4 -4
- package/components/ai-elements/queue.js +7 -7
- package/components/ai-elements/research-activity.js +114 -114
- package/components/ai-elements/shimmer.d.ts +2 -2
- package/components/ai-elements/speech-input.js +28 -28
- package/components/ai-elements/task-progress.js +26 -16
- package/components/ai-elements/task.js +17 -17
- package/components/ai-elements/tool.js +6 -6
- package/components/ai-elements/transcript.js +6 -5
- package/components/ai-elements/voice.js +1 -1
- package/components/alert.js +10 -10
- package/components/answer-sources.d.ts +42 -0
- package/components/answer-sources.js +111 -0
- package/components/answer.js +115 -114
- package/components/assistant-ui/action-bar.js +94 -48
- package/components/assistant-ui/attachment.js +131 -103
- package/components/assistant-ui/badge.d.ts +1 -1
- package/components/assistant-ui/badge.js +17 -17
- package/components/assistant-ui/chain-of-thought.d.ts +1 -1
- package/components/assistant-ui/composer-add-context.js +9 -9
- package/components/assistant-ui/composer-deep-research.js +5 -5
- package/components/assistant-ui/composer-harness.js +12 -9
- package/components/assistant-ui/composer-trigger-popover.js +45 -34
- package/components/assistant-ui/composer.js +59 -59
- package/components/assistant-ui/error.js +14 -14
- package/components/assistant-ui/file.d.ts +1 -1
- package/components/assistant-ui/image.d.ts +1 -1
- package/components/assistant-ui/image.js +113 -103
- package/components/assistant-ui/markdown-text.js +18 -18
- package/components/assistant-ui/message.js +46 -45
- package/components/assistant-ui/quote.js +1 -1
- package/components/assistant-ui/reasoning.d.ts +1 -1
- package/components/assistant-ui/reasoning.js +66 -77
- package/components/assistant-ui/suggestions.js +4 -4
- package/components/assistant-ui/thread-context.d.ts +2 -0
- package/components/assistant-ui/thread.js +41 -40
- package/components/assistant-ui/tool-fallback.js +60 -63
- package/components/assistant-ui/tool-group.d.ts +1 -1
- package/components/assistant-ui/tool-group.js +36 -42
- package/components/audio-waveform.js +25 -24
- package/components/autocomplete.d.ts +1 -0
- package/components/autocomplete.js +45 -43
- package/components/avatar.js +30 -30
- package/components/badge.d.ts +1 -1
- package/components/breadcrumbs.js +2 -2
- package/components/button.d.ts +2 -2
- package/components/button.js +22 -20
- package/components/card.js +8 -8
- package/components/carousel.js +105 -104
- package/components/chart.js +9 -7
- package/components/checkbox.js +74 -38
- package/components/chip.d.ts +1 -1
- package/components/code-block.js +3 -3
- package/components/collapsible.js +67 -23
- package/components/connector-card.js +6 -6
- package/components/drawer.d.ts +15 -10
- package/components/drawer.js +78 -77
- package/components/dropdown.d.ts +3 -1
- package/components/dropdown.js +88 -79
- package/components/empty-state.d.ts +4 -4
- package/components/empty-state.js +7 -7
- package/components/field.d.ts +4 -0
- package/components/field.js +45 -34
- package/components/file-dropzone.js +12 -12
- package/components/index.d.ts +4 -0
- package/components/index.js +584 -553
- package/components/infinite-canvas.js +1 -1
- package/components/input-field.js +51 -46
- package/components/input.js +20 -20
- package/components/link.js +9 -9
- package/components/modal.js +105 -73
- package/components/navbar.d.ts +1 -1
- package/components/navbar.js +1 -1
- package/components/number-field.js +38 -29
- package/components/page-header.js +12 -12
- package/components/pagination.js +19 -19
- package/components/panel.js +2 -2
- package/components/pixel-blast-svg.js +3 -3
- package/components/pixel-icon.d.ts +3 -1
- package/components/pixel-icon.js +294 -215
- package/components/popover.d.ts +1 -1
- package/components/popover.js +66 -64
- package/components/progress-circle.js +36 -32
- package/components/progress.js +28 -24
- package/components/radio.js +59 -49
- package/components/resizable-panel.js +1 -1
- package/components/reveal.d.ts +2 -2
- package/components/ripple.d.ts +3 -3
- package/components/scroll-area.js +17 -16
- package/components/segmented.d.ts +4 -1
- package/components/segmented.js +26 -25
- package/components/select.d.ts +2 -0
- package/components/select.js +61 -57
- package/components/setting-row.js +45 -42
- package/components/sidebar.d.ts +2 -2
- package/components/sidebar.js +131 -127
- package/components/skeleton.js +5 -5
- package/components/spinner.d.ts +13 -4
- package/components/spinner.js +42 -42
- package/components/stepper.js +21 -21
- package/components/switch.js +52 -32
- package/components/table.d.ts +24 -7
- package/components/table.js +457 -220
- package/components/tabs.js +149 -137
- package/components/textarea.js +1 -2
- package/components/toast.js +66 -66
- package/components/tooltip.js +2 -2
- package/components/tree.js +62 -51
- package/components/typography.d.ts +2 -1
- package/components/typography.js +33 -32
- package/components/ui/button.d.ts +2 -2
- package/components/ui/button.js +19 -19
- package/components/ui/collapsible.d.ts +1 -5
- package/components/ui/dialog.d.ts +3 -3
- package/components/ui/dialog.js +95 -58
- package/components/ui/tooltip.d.ts +2 -2
- package/components/ui/tooltip.js +67 -33
- package/components/viz-charts.js +95 -95
- package/demo/components/add-to-artifact.js +341 -0
- package/demo/lib/artifact-library.js +134 -0
- package/fonts/aribau-grotesk-medium.woff2 +0 -0
- package/fonts/aribau-grotesk-regular.woff2 +0 -0
- package/fonts.css +11 -11
- package/hooks/agents-ui/use-agent-audio-visualizer-aura.js +17 -16
- package/hooks/agents-ui/use-agent-audio-visualizer-wave.js +21 -20
- package/lib/icons.d.ts +12 -0
- package/lib/icons.js +107 -104
- package/lib/motion.d.ts +42 -39
- package/lib/motion.js +112 -52
- package/lib/spinner-mark.d.ts +9 -0
- package/lib/spinner-mark.js +98 -0
- package/llms.txt +69 -26
- package/manifest.json +344 -42
- package/package.json +1 -1
- package/styles.css +175 -161
- package/theme.css +104 -128
- package/components/ui/collapsible.js +0 -35
- package/fonts/aribau-grotesk-500.otf +0 -0
- package/fonts/aribau-grotesk-600.woff2 +0 -0
package/components/table.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
3
|
-
import * as
|
|
4
|
-
import { cn as
|
|
5
|
-
import { Checkbox as
|
|
6
|
-
import { ChevronUp as
|
|
7
|
-
const
|
|
2
|
+
import { jsx as d, jsxs as _ } from "react/jsx-runtime";
|
|
3
|
+
import * as o from "react";
|
|
4
|
+
import { cn as u } from "../lib/cn.js";
|
|
5
|
+
import { Checkbox as re } from "./checkbox.js";
|
|
6
|
+
import { ChevronUp as be, ChevronDown as ge, SortIcon as he } from "../lib/icons.js";
|
|
7
|
+
const ne = (e) => e === "center" ? "text-center" : e === "right" ? "text-right" : "text-left", ae = (e, t = !1) => e === "left" ? u(
|
|
8
8
|
"sticky left-0 z-10",
|
|
9
9
|
// Scroll-aware: the smudge only appears once content is actually
|
|
10
10
|
// hidden behind the pinned column (nothing to scroll back to at the
|
|
11
11
|
// far left → no shadow).
|
|
12
12
|
"group-data-[scroll-left=true]/table-shell:shadow-table-smudge-left"
|
|
13
|
-
) :
|
|
13
|
+
) : e === "right" ? u(
|
|
14
14
|
"sticky right-0 z-10",
|
|
15
15
|
// Backward-compatible fallback. Action columns should opt into the
|
|
16
16
|
// Table-level elevation so one shadow spans the complete column.
|
|
17
|
-
!
|
|
18
|
-
) : void 0,
|
|
19
|
-
"group-first/row:before:pointer-events-none group-first/row:before:absolute group-first/row:before:right-0 group-first/row:before:top-0 group-first/row:before:size-
|
|
20
|
-
"group-last/row:after:pointer-events-none group-last/row:after:absolute group-last/row:after:right-0 group-last/row:after:bottom-0 group-last/row:after:size-
|
|
21
|
-
) :
|
|
22
|
-
"group-first/row:before:pointer-events-none group-first/row:before:absolute group-first/row:before:left-0 group-first/row:before:top-0 group-first/row:before:size-
|
|
23
|
-
"group-last/row:after:pointer-events-none group-last/row:after:absolute group-last/row:after:left-0 group-last/row:after:bottom-0 group-last/row:after:size-
|
|
24
|
-
),
|
|
17
|
+
!t && "group-data-[scroll-right=true]/table-shell:shadow-table-smudge-right"
|
|
18
|
+
) : void 0, se = (e) => e === "right" ? u(
|
|
19
|
+
"group-first/row:before:pointer-events-none group-first/row:before:absolute group-first/row:before:right-0 group-first/row:before:top-0 group-first/row:before:size-3 group-first/row:before:content-[''] group-first/row:before:[background:radial-gradient(circle_at_0%_100%,transparent_11.5px,var(--table-shell)_12px)]",
|
|
20
|
+
"group-last/row:after:pointer-events-none group-last/row:after:absolute group-last/row:after:right-0 group-last/row:after:bottom-0 group-last/row:after:size-3 group-last/row:after:content-[''] group-last/row:after:[background:radial-gradient(circle_at_0%_0%,transparent_11.5px,var(--table-shell)_12px)]"
|
|
21
|
+
) : u(
|
|
22
|
+
"group-first/row:before:pointer-events-none group-first/row:before:absolute group-first/row:before:left-0 group-first/row:before:top-0 group-first/row:before:size-3 group-first/row:before:content-[''] group-first/row:before:[background:radial-gradient(circle_at_100%_100%,transparent_11.5px,var(--table-shell)_12px)]",
|
|
23
|
+
"group-last/row:after:pointer-events-none group-last/row:after:absolute group-last/row:after:left-0 group-last/row:after:bottom-0 group-last/row:after:size-3 group-last/row:after:content-[''] group-last/row:after:[background:radial-gradient(circle_at_100%_0%,transparent_11.5px,var(--table-shell)_12px)]"
|
|
24
|
+
), ie = (e) => u(
|
|
25
25
|
"bg-card align-middle transition-colors",
|
|
26
26
|
// Row separators — functional hairline, none under the last row.
|
|
27
27
|
"border-b border-border group-last/row:border-b-0",
|
|
28
|
-
!
|
|
28
|
+
!e && u(
|
|
29
29
|
// Restore the original quiet neutral hover: the row softly sinks
|
|
30
30
|
// toward the shell instead of picking up a brand tint or a new
|
|
31
31
|
// rounded silhouette. The wash is pre-composited so scrolled text
|
|
@@ -33,167 +33,325 @@ const L = (o) => o === "center" ? "text-center" : o === "right" ? "text-right" :
|
|
|
33
33
|
"group-hover/row:bg-(--table-row-hover) group-focus-within/row:bg-(--table-row-hover)",
|
|
34
34
|
"group-data-[selected]/row:bg-(--table-row-selected)"
|
|
35
35
|
)
|
|
36
|
-
),
|
|
37
|
-
"group-first/row:rounded-tl-
|
|
38
|
-
"group-last/row:rounded-bl-
|
|
39
|
-
),
|
|
40
|
-
"group-first/row:first:rounded-tl-
|
|
41
|
-
"group-first/row:last:rounded-tr-
|
|
42
|
-
"group-last/row:first:rounded-bl-
|
|
43
|
-
"group-last/row:last:rounded-br-
|
|
44
|
-
),
|
|
36
|
+
), we = u(
|
|
37
|
+
"group-first/row:rounded-tl-(--table-card-radius)",
|
|
38
|
+
"group-last/row:rounded-bl-(--table-card-radius)"
|
|
39
|
+
), ve = u(
|
|
40
|
+
"group-first/row:first:rounded-tl-(--table-card-radius)",
|
|
41
|
+
"group-first/row:last:rounded-tr-(--table-card-radius)",
|
|
42
|
+
"group-last/row:first:rounded-bl-(--table-card-radius)",
|
|
43
|
+
"group-last/row:last:rounded-br-(--table-card-radius)"
|
|
44
|
+
), le = u(
|
|
45
45
|
"after:pointer-events-none after:absolute after:right-0 after:top-1/2",
|
|
46
46
|
"after:h-4 after:w-px after:-translate-y-1/2 after:rounded-sm",
|
|
47
47
|
"after:bg-border-strong last:after:hidden"
|
|
48
|
-
),
|
|
48
|
+
), K = "__ads_table_column_", G = 64, xe = new Intl.Collator(void 0, {
|
|
49
|
+
numeric: !0,
|
|
50
|
+
sensitivity: "base"
|
|
51
|
+
});
|
|
52
|
+
function V(e) {
|
|
53
|
+
const t = [];
|
|
54
|
+
return o.Children.forEach(e, (a) => {
|
|
55
|
+
if (o.isValidElement(a) && a.type === o.Fragment) {
|
|
56
|
+
t.push(...V(a.props.children));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
t.push(a);
|
|
60
|
+
}), t;
|
|
61
|
+
}
|
|
62
|
+
function U(e) {
|
|
63
|
+
if (e == null || typeof e == "boolean")
|
|
64
|
+
return "";
|
|
65
|
+
if (typeof e == "number" || typeof e == "string") return e;
|
|
66
|
+
if (Array.isArray(e))
|
|
67
|
+
return e.map((n) => String(U(n))).join(" ").trim();
|
|
68
|
+
if (!o.isValidElement(e)) return "";
|
|
69
|
+
const t = e.props.sortValue;
|
|
70
|
+
if (typeof t == "string" || typeof t == "number" || t instanceof Date)
|
|
71
|
+
return t;
|
|
72
|
+
const a = U(e.props.children);
|
|
73
|
+
if (String(a).trim()) return a;
|
|
74
|
+
for (const n of [
|
|
75
|
+
"value",
|
|
76
|
+
"label",
|
|
77
|
+
"status",
|
|
78
|
+
"name",
|
|
79
|
+
"title",
|
|
80
|
+
"health"
|
|
81
|
+
]) {
|
|
82
|
+
const s = e.props[n];
|
|
83
|
+
if (typeof s == "string" || typeof s == "number") return s;
|
|
84
|
+
}
|
|
85
|
+
return "";
|
|
86
|
+
}
|
|
87
|
+
function oe(e) {
|
|
88
|
+
if (e instanceof Date)
|
|
89
|
+
return { kind: "number", value: e.getTime() };
|
|
90
|
+
if (typeof e == "number")
|
|
91
|
+
return { kind: "number", value: e };
|
|
92
|
+
const t = e.trim();
|
|
93
|
+
if (!t || t === "—" || t === "-")
|
|
94
|
+
return { kind: "empty", value: "" };
|
|
95
|
+
const a = t.replace(/[,\s]/g, "").replace(/^[₹$€£]/, "").replace(/%$/, "");
|
|
96
|
+
if (/^[+-]?(?:\d+\.?\d*|\.\d+)$/.test(a))
|
|
97
|
+
return { kind: "number", value: Number(a) };
|
|
98
|
+
const s = /^\d{4}[-/]\d{1,2}[-/]\d{1,2}/.test(t) || /\b(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\b/i.test(t) ? Date.parse(t) : Number.NaN;
|
|
99
|
+
return Number.isNaN(s) ? { kind: "text", value: t } : { kind: "number", value: s };
|
|
100
|
+
}
|
|
101
|
+
function ye(e, t, a) {
|
|
102
|
+
const n = oe(e), s = oe(t);
|
|
103
|
+
if (n.kind === "empty") return s.kind === "empty" ? 0 : 1;
|
|
104
|
+
if (s.kind === "empty") return -1;
|
|
105
|
+
const l = n.kind === "number" && s.kind === "number" ? n.value - s.value : xe.compare(String(n.value), String(s.value));
|
|
106
|
+
return a === "ascending" ? l : -l;
|
|
107
|
+
}
|
|
108
|
+
const ce = o.createContext(null), q = () => o.useContext(ce), Q = o.createContext("body");
|
|
109
|
+
function Ce(e) {
|
|
110
|
+
const t = [], n = V(e.props.children).map((s, l) => {
|
|
111
|
+
if (!o.isValidElement(s) || s.type !== Y)
|
|
112
|
+
return s;
|
|
113
|
+
let i = 0;
|
|
114
|
+
const w = V(s.props.children).map((r) => {
|
|
115
|
+
if (!o.isValidElement(r)) return r;
|
|
116
|
+
for (; (t[i] ?? 0) > l; )
|
|
117
|
+
i += 1;
|
|
118
|
+
const T = Math.max(1, Number(r.props.colSpan ?? 1)), y = Math.max(1, Number(r.props.rowSpan ?? 1)), v = i;
|
|
119
|
+
for (let C = 0; C < T; C += 1)
|
|
120
|
+
t[v + C] = Math.max(
|
|
121
|
+
t[v + C] ?? 0,
|
|
122
|
+
l + y
|
|
123
|
+
);
|
|
124
|
+
return i += T, r.type !== fe ? r : o.cloneElement(r, { _sortColumnIndex: v });
|
|
125
|
+
});
|
|
126
|
+
return o.cloneElement(s, void 0, w);
|
|
127
|
+
});
|
|
128
|
+
return o.cloneElement(e, void 0, n);
|
|
129
|
+
}
|
|
130
|
+
function Ne(e, t, a) {
|
|
131
|
+
const n = V(e.props.children).map((s, l) => {
|
|
132
|
+
if (!o.isValidElement(s) || s.type !== Y)
|
|
133
|
+
return { row: s, index: l, value: "" };
|
|
134
|
+
const i = V(s.props.children);
|
|
135
|
+
return {
|
|
136
|
+
row: s,
|
|
137
|
+
index: l,
|
|
138
|
+
value: U(i[t])
|
|
139
|
+
};
|
|
140
|
+
});
|
|
141
|
+
return n.sort((s, l) => ye(s.value, l.value, a) || s.index - l.index), o.cloneElement(
|
|
142
|
+
e,
|
|
143
|
+
void 0,
|
|
144
|
+
n.map(({ row: s }) => s)
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
function ue(e, t) {
|
|
148
|
+
const a = t != null && t.column.startsWith(K) ? Number(t.column.slice(K.length)) : Number.NaN;
|
|
149
|
+
return o.Children.map(e, (n) => o.isValidElement(n) ? n.type === o.Fragment ? o.cloneElement(
|
|
150
|
+
n,
|
|
151
|
+
void 0,
|
|
152
|
+
ue(n.props.children, t)
|
|
153
|
+
) : n.type === de ? Ce(n) : n.type === pe && t && Number.isInteger(a) && a >= 0 ? Ne(n, a, t.direction) : n : n);
|
|
154
|
+
}
|
|
155
|
+
const ze = o.forwardRef(
|
|
49
156
|
({
|
|
50
|
-
className:
|
|
51
|
-
wrapperClassName:
|
|
52
|
-
footer:
|
|
53
|
-
children:
|
|
54
|
-
selectionMode:
|
|
55
|
-
selectedKeys:
|
|
56
|
-
onSelectionChange:
|
|
57
|
-
rowKeys:
|
|
58
|
-
elevatedActionColumn:
|
|
59
|
-
actionColumnWidth:
|
|
60
|
-
sortDescriptor:
|
|
61
|
-
onSortChange:
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
157
|
+
className: e,
|
|
158
|
+
wrapperClassName: t,
|
|
159
|
+
footer: a,
|
|
160
|
+
children: n,
|
|
161
|
+
selectionMode: s = "none",
|
|
162
|
+
selectedKeys: l,
|
|
163
|
+
onSelectionChange: i,
|
|
164
|
+
rowKeys: h,
|
|
165
|
+
elevatedActionColumn: w = !1,
|
|
166
|
+
actionColumnWidth: r = "4rem",
|
|
167
|
+
sortDescriptor: T,
|
|
168
|
+
onSortChange: y,
|
|
169
|
+
allowsSorting: v = !0,
|
|
170
|
+
isStatic: C = !1,
|
|
171
|
+
resizableColumns: A = !0,
|
|
172
|
+
...W
|
|
173
|
+
}, M) => {
|
|
174
|
+
const N = o.useMemo(() => h ?? [], [h]), z = l === "all", b = z ? null : l ?? /* @__PURE__ */ new Set(), E = o.useCallback(
|
|
175
|
+
(c) => z || !!(b != null && b.has(c)),
|
|
176
|
+
[z, b]
|
|
177
|
+
), k = N.length > 0 && (z || N.every((c) => b == null ? void 0 : b.has(c))), B = !k && (z || N.some((c) => b == null ? void 0 : b.has(c))), O = o.useCallback(
|
|
178
|
+
(c) => {
|
|
179
|
+
if (!i) return;
|
|
180
|
+
if (s === "single") {
|
|
181
|
+
i(E(c) ? /* @__PURE__ */ new Set() : /* @__PURE__ */ new Set([c]));
|
|
73
182
|
return;
|
|
74
183
|
}
|
|
75
|
-
const
|
|
76
|
-
|
|
184
|
+
const m = new Set(z ? N : b ?? /* @__PURE__ */ new Set());
|
|
185
|
+
m.has(c) ? m.delete(c) : m.add(c), i(m);
|
|
77
186
|
},
|
|
78
|
-
[
|
|
79
|
-
),
|
|
80
|
-
|
|
81
|
-
}, [
|
|
82
|
-
(
|
|
83
|
-
if (!
|
|
84
|
-
const
|
|
85
|
-
|
|
187
|
+
[i, s, E, z, N, b]
|
|
188
|
+
), I = o.useCallback(() => {
|
|
189
|
+
i && i(k ? /* @__PURE__ */ new Set() : new Set(N));
|
|
190
|
+
}, [i, k, N]), [F, H] = o.useState(), R = v && !y, x = R ? F ?? T : T, f = o.useCallback(
|
|
191
|
+
(c) => {
|
|
192
|
+
if (!v) return;
|
|
193
|
+
const m = (x == null ? void 0 : x.column) === c && x.direction === "ascending" ? "descending" : "ascending", g = { column: c, direction: m };
|
|
194
|
+
y ? y(g) : H(g);
|
|
86
195
|
},
|
|
87
|
-
[
|
|
88
|
-
),
|
|
196
|
+
[x, v, y]
|
|
197
|
+
), p = o.useMemo(
|
|
198
|
+
() => R ? ue(n, x) : n,
|
|
199
|
+
[x, R, n]
|
|
200
|
+
), S = o.useRef(null), [D, X] = o.useState({
|
|
89
201
|
left: !1,
|
|
90
202
|
right: !1
|
|
91
|
-
}),
|
|
92
|
-
const
|
|
93
|
-
if (!
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
(
|
|
203
|
+
}), $ = o.useCallback(() => {
|
|
204
|
+
const c = S.current;
|
|
205
|
+
if (!c) return;
|
|
206
|
+
const m = c.scrollWidth - c.clientWidth, g = c.scrollLeft > 1, L = c.scrollLeft < m - 1;
|
|
207
|
+
X(
|
|
208
|
+
(J) => J.left === g && J.right === L ? J : { left: g, right: L }
|
|
97
209
|
);
|
|
98
210
|
}, []);
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const
|
|
102
|
-
if (!
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
return
|
|
107
|
-
}, [
|
|
108
|
-
const
|
|
211
|
+
o.useEffect(() => {
|
|
212
|
+
$();
|
|
213
|
+
const c = S.current;
|
|
214
|
+
if (!c || typeof ResizeObserver > "u") return;
|
|
215
|
+
const m = new ResizeObserver($);
|
|
216
|
+
m.observe(c);
|
|
217
|
+
const g = c.querySelector("table");
|
|
218
|
+
return g && m.observe(g), () => m.disconnect();
|
|
219
|
+
}, [$]);
|
|
220
|
+
const [P, j] = o.useState(
|
|
221
|
+
null
|
|
222
|
+
), Z = o.useCallback(
|
|
223
|
+
(c) => {
|
|
224
|
+
j(
|
|
225
|
+
(m) => m ?? Array.from(
|
|
226
|
+
c.cells,
|
|
227
|
+
(g) => g.getBoundingClientRect().width
|
|
228
|
+
)
|
|
229
|
+
);
|
|
230
|
+
},
|
|
231
|
+
[]
|
|
232
|
+
), ee = o.useCallback(
|
|
233
|
+
(c, m) => {
|
|
234
|
+
j((g) => {
|
|
235
|
+
if (!g) return g;
|
|
236
|
+
const L = [...g];
|
|
237
|
+
return L[c] = Math.max(G, m), L;
|
|
238
|
+
});
|
|
239
|
+
},
|
|
240
|
+
[]
|
|
241
|
+
), te = o.useCallback(
|
|
242
|
+
() => j(null),
|
|
243
|
+
[]
|
|
244
|
+
), me = o.useMemo(
|
|
109
245
|
() => ({
|
|
110
|
-
selectionMode:
|
|
111
|
-
isSelected:
|
|
112
|
-
toggleKey:
|
|
113
|
-
toggleAll:
|
|
114
|
-
allSelected:
|
|
115
|
-
someSelected:
|
|
116
|
-
isStatic:
|
|
117
|
-
sortDescriptor:
|
|
118
|
-
requestSort:
|
|
119
|
-
|
|
246
|
+
selectionMode: s,
|
|
247
|
+
isSelected: E,
|
|
248
|
+
toggleKey: O,
|
|
249
|
+
toggleAll: I,
|
|
250
|
+
allSelected: k,
|
|
251
|
+
someSelected: B,
|
|
252
|
+
isStatic: C,
|
|
253
|
+
sortDescriptor: x,
|
|
254
|
+
requestSort: v ? f : void 0,
|
|
255
|
+
automaticSorting: R,
|
|
256
|
+
elevatedActionColumn: w,
|
|
257
|
+
resizableColumns: A,
|
|
258
|
+
columnWidths: P,
|
|
259
|
+
snapshotColumnWidths: Z,
|
|
260
|
+
setColumnWidth: ee,
|
|
261
|
+
resetColumnWidths: te
|
|
120
262
|
}),
|
|
121
263
|
[
|
|
122
|
-
|
|
264
|
+
s,
|
|
265
|
+
E,
|
|
266
|
+
O,
|
|
267
|
+
I,
|
|
268
|
+
k,
|
|
269
|
+
B,
|
|
123
270
|
C,
|
|
124
|
-
P,
|
|
125
|
-
A,
|
|
126
|
-
N,
|
|
127
|
-
H,
|
|
128
271
|
x,
|
|
129
|
-
|
|
272
|
+
v,
|
|
273
|
+
R,
|
|
274
|
+
f,
|
|
130
275
|
w,
|
|
131
|
-
|
|
132
|
-
|
|
276
|
+
A,
|
|
277
|
+
P,
|
|
278
|
+
Z,
|
|
279
|
+
ee,
|
|
280
|
+
te
|
|
133
281
|
]
|
|
134
282
|
);
|
|
135
|
-
return /* @__PURE__ */
|
|
283
|
+
return /* @__PURE__ */ d(ce.Provider, { value: me, children: /* @__PURE__ */ _(
|
|
136
284
|
"div",
|
|
137
285
|
{
|
|
138
|
-
"data-scroll-left":
|
|
139
|
-
"data-scroll-right":
|
|
140
|
-
className:
|
|
286
|
+
"data-scroll-left": D.left ? "true" : "false",
|
|
287
|
+
"data-scroll-right": D.right ? "true" : "false",
|
|
288
|
+
className: u(
|
|
141
289
|
"group/table-shell overflow-clip rounded-2xl bg-table-shell px-1 pb-1",
|
|
142
|
-
|
|
290
|
+
// Concentric inner radius for the white body card: shell radius
|
|
291
|
+
// minus the 4px inset above. Every card corner (cells, viewport,
|
|
292
|
+
// pinned caps) derives from this one value.
|
|
293
|
+
"[--table-card-radius:calc(var(--radius-2xl)-0.25rem)]",
|
|
294
|
+
t
|
|
143
295
|
),
|
|
144
296
|
children: [
|
|
145
|
-
/* @__PURE__ */
|
|
297
|
+
/* @__PURE__ */ _(
|
|
146
298
|
"div",
|
|
147
299
|
{
|
|
148
300
|
className: "relative",
|
|
149
|
-
style:
|
|
150
|
-
"--table-action-column-width":
|
|
301
|
+
style: w ? {
|
|
302
|
+
"--table-action-column-width": r
|
|
151
303
|
} : void 0,
|
|
152
304
|
children: [
|
|
153
|
-
/* @__PURE__ */
|
|
305
|
+
/* @__PURE__ */ d(
|
|
154
306
|
"div",
|
|
155
307
|
{
|
|
156
|
-
ref:
|
|
157
|
-
onScroll:
|
|
158
|
-
className: "overflow-x-auto rounded-
|
|
159
|
-
children: /* @__PURE__ */
|
|
308
|
+
ref: S,
|
|
309
|
+
onScroll: $,
|
|
310
|
+
className: "overflow-x-auto rounded-(--table-card-radius)",
|
|
311
|
+
children: /* @__PURE__ */ _(
|
|
160
312
|
"table",
|
|
161
313
|
{
|
|
162
|
-
ref:
|
|
314
|
+
ref: M,
|
|
163
315
|
"data-slot": "table",
|
|
164
|
-
className:
|
|
316
|
+
className: u(
|
|
165
317
|
"w-full border-separate border-spacing-0 text-base",
|
|
166
|
-
|
|
318
|
+
// Manual widths need fixed layout so the <colgroup> wins;
|
|
319
|
+
// until the first resize the automatic layout is untouched.
|
|
320
|
+
P && "table-fixed",
|
|
321
|
+
e
|
|
167
322
|
),
|
|
168
|
-
...
|
|
169
|
-
children:
|
|
323
|
+
...W,
|
|
324
|
+
children: [
|
|
325
|
+
P && /* @__PURE__ */ d("colgroup", { children: P.map((c, m) => /* @__PURE__ */ d("col", { style: { width: c } }, m)) }),
|
|
326
|
+
p
|
|
327
|
+
]
|
|
170
328
|
}
|
|
171
329
|
)
|
|
172
330
|
}
|
|
173
331
|
),
|
|
174
|
-
/* @__PURE__ */
|
|
332
|
+
/* @__PURE__ */ d(
|
|
175
333
|
"div",
|
|
176
334
|
{
|
|
177
335
|
"aria-hidden": "true",
|
|
178
336
|
"data-slot": "table-scroll-hint",
|
|
179
|
-
className:
|
|
337
|
+
className: u(
|
|
180
338
|
"pointer-events-none absolute inset-y-0 z-20 w-10",
|
|
181
339
|
"bg-gradient-to-l from-(--table-scroll-hint) to-transparent",
|
|
182
|
-
"opacity-0 transition-opacity duration-
|
|
183
|
-
|
|
184
|
-
|
|
340
|
+
"opacity-0 transition-opacity duration-150 ease-out motion-reduce:transition-none",
|
|
341
|
+
D.right && "opacity-100",
|
|
342
|
+
w ? "right-[var(--table-action-column-width)]" : "right-0"
|
|
185
343
|
)
|
|
186
344
|
}
|
|
187
345
|
),
|
|
188
|
-
|
|
346
|
+
w && /* @__PURE__ */ d(
|
|
189
347
|
"div",
|
|
190
348
|
{
|
|
191
349
|
"aria-hidden": "true",
|
|
192
350
|
"data-slot": "table-action-column-elevation",
|
|
193
|
-
className:
|
|
351
|
+
className: u(
|
|
194
352
|
"pointer-events-none absolute inset-y-0 right-0 z-20",
|
|
195
353
|
"w-[var(--table-action-column-width)]",
|
|
196
|
-
"rounded-br-
|
|
354
|
+
"rounded-br-(--table-card-radius)"
|
|
197
355
|
// No shadow of its own: while columns hide behind the pinned
|
|
198
356
|
// surface the scroll-hint gradient is already washing the
|
|
199
357
|
// seam — stacking a cast on top of it read harsh. The hint
|
|
@@ -204,113 +362,150 @@ const L = (o) => o === "center" ? "text-center" : o === "right" ? "text-right" :
|
|
|
204
362
|
]
|
|
205
363
|
}
|
|
206
364
|
),
|
|
207
|
-
|
|
365
|
+
a && /* @__PURE__ */ d("div", { className: "flex items-center px-4 py-2.5", children: a })
|
|
208
366
|
]
|
|
209
367
|
}
|
|
210
368
|
) });
|
|
211
369
|
}
|
|
212
370
|
);
|
|
213
|
-
|
|
214
|
-
const
|
|
215
|
-
const
|
|
216
|
-
return /* @__PURE__ */
|
|
371
|
+
ze.displayName = "Table";
|
|
372
|
+
const de = o.forwardRef(({ className: e, ...t }, a) => {
|
|
373
|
+
const n = q();
|
|
374
|
+
return /* @__PURE__ */ d(Q.Provider, { value: "header", children: /* @__PURE__ */ d(
|
|
217
375
|
"thead",
|
|
218
376
|
{
|
|
219
|
-
ref:
|
|
220
|
-
className:
|
|
377
|
+
ref: a,
|
|
378
|
+
className: u(
|
|
221
379
|
"text-xs text-muted-foreground",
|
|
222
|
-
(
|
|
223
|
-
|
|
380
|
+
(n == null ? void 0 : n.elevatedActionColumn) && "relative z-30 bg-table-shell",
|
|
381
|
+
e
|
|
224
382
|
),
|
|
225
|
-
...
|
|
383
|
+
...t
|
|
226
384
|
}
|
|
227
385
|
) });
|
|
228
386
|
});
|
|
229
|
-
|
|
230
|
-
const
|
|
231
|
-
|
|
232
|
-
const
|
|
233
|
-
({ className:
|
|
234
|
-
const
|
|
235
|
-
return /* @__PURE__ */
|
|
387
|
+
de.displayName = "TableHeader";
|
|
388
|
+
const pe = o.forwardRef(({ className: e, ...t }, a) => /* @__PURE__ */ d(Q.Provider, { value: "body", children: /* @__PURE__ */ d("tbody", { ref: a, className: u(e), ...t }) }));
|
|
389
|
+
pe.displayName = "TableBody";
|
|
390
|
+
const Y = o.forwardRef(
|
|
391
|
+
({ className: e, rowKey: t, children: a, ...n }, s) => {
|
|
392
|
+
const l = q(), i = o.useContext(Q), h = !!l && l.selectionMode !== "none", w = h && i === "body" && t !== void 0 ? l.isSelected(t) : !1;
|
|
393
|
+
return /* @__PURE__ */ _(
|
|
236
394
|
"tr",
|
|
237
395
|
{
|
|
238
|
-
ref:
|
|
239
|
-
"data-selected":
|
|
240
|
-
className:
|
|
241
|
-
...
|
|
396
|
+
ref: s,
|
|
397
|
+
"data-selected": w || void 0,
|
|
398
|
+
className: u("group/row", e),
|
|
399
|
+
...n,
|
|
242
400
|
children: [
|
|
243
|
-
|
|
401
|
+
h && (i === "header" ? /* @__PURE__ */ _(
|
|
244
402
|
"th",
|
|
245
403
|
{
|
|
246
404
|
scope: "col",
|
|
247
|
-
className:
|
|
405
|
+
className: u(
|
|
248
406
|
"w-10 px-4 py-2.5",
|
|
249
|
-
|
|
407
|
+
le,
|
|
250
408
|
// Sticky without the baked shadow — an always-on smudge
|
|
251
409
|
// muddies the shell's corners (elevation = actionability).
|
|
252
410
|
// (sticky is positioned, so the ::after tick anchors to it —
|
|
253
411
|
// no `relative` needed, and it would conflict with sticky.)
|
|
254
412
|
"sticky left-0 z-10 bg-table-shell"
|
|
255
413
|
),
|
|
256
|
-
children:
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
414
|
+
children: [
|
|
415
|
+
/* @__PURE__ */ d("span", { className: "sr-only", children: "Row selection" }),
|
|
416
|
+
l.selectionMode === "multiple" && /* @__PURE__ */ d(
|
|
417
|
+
re,
|
|
418
|
+
{
|
|
419
|
+
size: "sm",
|
|
420
|
+
"aria-label": "Select all rows",
|
|
421
|
+
checked: l.allSelected,
|
|
422
|
+
indeterminate: l.someSelected,
|
|
423
|
+
onChange: l.toggleAll
|
|
424
|
+
}
|
|
425
|
+
)
|
|
426
|
+
]
|
|
266
427
|
}
|
|
267
|
-
) : /* @__PURE__ */
|
|
428
|
+
) : /* @__PURE__ */ d(
|
|
268
429
|
"td",
|
|
269
430
|
{
|
|
270
|
-
className:
|
|
431
|
+
className: u(
|
|
271
432
|
"w-10 px-4 py-3",
|
|
272
|
-
|
|
273
|
-
|
|
433
|
+
ie(l.isStatic),
|
|
434
|
+
we,
|
|
274
435
|
"sticky left-0 z-10",
|
|
275
436
|
// Same white-behind-white corner problem as pinned data cells.
|
|
276
|
-
|
|
437
|
+
se("left")
|
|
277
438
|
),
|
|
278
|
-
onClick: (
|
|
279
|
-
children:
|
|
280
|
-
|
|
439
|
+
onClick: (r) => r.stopPropagation(),
|
|
440
|
+
children: t !== void 0 && /* @__PURE__ */ d(
|
|
441
|
+
re,
|
|
281
442
|
{
|
|
282
443
|
size: "sm",
|
|
283
|
-
"aria-label": `Select ${
|
|
284
|
-
checked:
|
|
285
|
-
onChange: () =>
|
|
444
|
+
"aria-label": `Select ${t}`,
|
|
445
|
+
checked: w,
|
|
446
|
+
onChange: () => l.toggleKey(t)
|
|
286
447
|
}
|
|
287
448
|
)
|
|
288
449
|
}
|
|
289
450
|
)),
|
|
290
|
-
|
|
451
|
+
a
|
|
291
452
|
]
|
|
292
453
|
}
|
|
293
454
|
);
|
|
294
455
|
}
|
|
295
456
|
);
|
|
296
|
-
|
|
297
|
-
const
|
|
298
|
-
var
|
|
299
|
-
const l =
|
|
300
|
-
|
|
457
|
+
Y.displayName = "TableRow";
|
|
458
|
+
const fe = o.forwardRef(({ className: e, align: t, sticky: a, sortKey: n, allowsSorting: s = !0, _sortColumnIndex: l, children: i, ...h }, w) => {
|
|
459
|
+
var H, R, x;
|
|
460
|
+
const r = q(), y = (r != null && r.automaticSorting && l !== void 0 ? `${K}${l}` : void 0) ?? n, v = Number(h.colSpan ?? 1) === 1, C = String(U(i)).trim(), A = C.length > 0, W = s && v && a !== "right" && A && !!y && !!(r != null && r.requestSort), M = W && ((H = r == null ? void 0 : r.sortDescriptor) == null ? void 0 : H.column) === y, N = (R = r == null ? void 0 : r.sortDescriptor) == null ? void 0 : R.direction, z = !!(r != null && r.resizableColumns) && v && a !== "right", b = o.useRef(null), [E, k] = o.useState(!1), B = (f) => {
|
|
461
|
+
if (f.button !== 0 || !r) return;
|
|
462
|
+
const p = f.currentTarget.parentElement, S = p == null ? void 0 : p.parentElement;
|
|
463
|
+
if (!(!p || !S)) {
|
|
464
|
+
r.snapshotColumnWidths(S), b.current = {
|
|
465
|
+
index: p.cellIndex,
|
|
466
|
+
startX: f.clientX,
|
|
467
|
+
startWidth: p.getBoundingClientRect().width
|
|
468
|
+
}, k(!0);
|
|
469
|
+
try {
|
|
470
|
+
f.currentTarget.setPointerCapture(f.pointerId);
|
|
471
|
+
} catch {
|
|
472
|
+
}
|
|
473
|
+
f.preventDefault();
|
|
474
|
+
}
|
|
475
|
+
}, O = (f) => {
|
|
476
|
+
const p = b.current;
|
|
477
|
+
!p || !r || r.setColumnWidth(
|
|
478
|
+
p.index,
|
|
479
|
+
p.startWidth + (f.clientX - p.startX)
|
|
480
|
+
);
|
|
481
|
+
}, I = () => {
|
|
482
|
+
b.current = null, k(!1);
|
|
483
|
+
}, F = (f) => {
|
|
484
|
+
if (f.key !== "ArrowLeft" && f.key !== "ArrowRight" || !r) return;
|
|
485
|
+
f.preventDefault();
|
|
486
|
+
const p = f.currentTarget.parentElement, S = p == null ? void 0 : p.parentElement;
|
|
487
|
+
if (!p || !S) return;
|
|
488
|
+
r.snapshotColumnWidths(S);
|
|
489
|
+
const D = f.shiftKey ? 32 : 8, X = f.key === "ArrowRight" ? D : -D;
|
|
490
|
+
r.setColumnWidth(p.cellIndex, p.getBoundingClientRect().width + X);
|
|
491
|
+
};
|
|
492
|
+
return /* @__PURE__ */ _(
|
|
301
493
|
"th",
|
|
302
494
|
{
|
|
303
|
-
ref:
|
|
495
|
+
ref: w,
|
|
304
496
|
scope: "col",
|
|
305
|
-
"aria-sort":
|
|
306
|
-
className:
|
|
497
|
+
"aria-sort": M ? N === "ascending" ? "ascending" : "descending" : W ? "none" : void 0,
|
|
498
|
+
className: u(
|
|
307
499
|
// whitespace-nowrap: header labels hug their content — the table
|
|
308
500
|
// scrolls horizontally, so wrapping "Null %" to two lines only
|
|
309
501
|
// wastes header height without saving any width.
|
|
310
502
|
"relative whitespace-nowrap px-4 py-2.5 font-normal",
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
503
|
+
le,
|
|
504
|
+
// The resize handle carries its own tick visual, so drop the
|
|
505
|
+
// decorative one; the last column never shows a handle.
|
|
506
|
+
z && "after:hidden [&:last-child>[data-slot=resize-handle]]:hidden",
|
|
507
|
+
ne(t),
|
|
508
|
+
a && (a === "right" && (r != null && r.elevatedActionColumn) ? u(
|
|
314
509
|
// Preserve the semantic column width, but do not pin or paint
|
|
315
510
|
// a blank header cell over the labels behind it. Only body
|
|
316
511
|
// action cells participate in the sticky elevated surface.
|
|
@@ -318,69 +513,111 @@ const te = a.forwardRef(({ className: o, align: n, sticky: i, sortKey: d, childr
|
|
|
318
513
|
"min-w-[var(--table-action-column-width)]",
|
|
319
514
|
"max-w-[var(--table-action-column-width)]",
|
|
320
515
|
"bg-transparent"
|
|
321
|
-
) :
|
|
322
|
-
|
|
516
|
+
) : u(ae(a), "bg-table-shell")),
|
|
517
|
+
e
|
|
323
518
|
),
|
|
324
|
-
...
|
|
325
|
-
children:
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
519
|
+
...h,
|
|
520
|
+
children: [
|
|
521
|
+
W ? /* @__PURE__ */ _(
|
|
522
|
+
"button",
|
|
523
|
+
{
|
|
524
|
+
type: "button",
|
|
525
|
+
onClick: () => r.requestSort(y),
|
|
526
|
+
className: u(
|
|
527
|
+
"group/sort -mx-1 inline-flex items-center gap-1 rounded px-1 outline-none transition-colors",
|
|
528
|
+
"hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring",
|
|
529
|
+
t === "right" && "flex-row-reverse",
|
|
530
|
+
M && "text-foreground"
|
|
531
|
+
),
|
|
532
|
+
children: [
|
|
533
|
+
i,
|
|
534
|
+
M ? N === "ascending" ? /* @__PURE__ */ d(be, { className: "size-3.5" }) : /* @__PURE__ */ d(ge, { className: "size-3.5" }) : /* @__PURE__ */ d(he, { className: "size-3.5 opacity-0 transition-opacity group-hover/sort:opacity-60" })
|
|
535
|
+
]
|
|
536
|
+
}
|
|
537
|
+
) : A ? i : /* @__PURE__ */ d("span", { className: "sr-only", children: h["aria-label"] ?? "Table column" }),
|
|
538
|
+
z && /* @__PURE__ */ d(
|
|
539
|
+
"span",
|
|
540
|
+
{
|
|
541
|
+
"data-slot": "resize-handle",
|
|
542
|
+
role: "separator",
|
|
543
|
+
"aria-orientation": "vertical",
|
|
544
|
+
"aria-label": `Resize ${C || "this"} column`,
|
|
545
|
+
"aria-valuemin": G,
|
|
546
|
+
"aria-valuemax": 2e3,
|
|
547
|
+
"aria-valuenow": ((x = r == null ? void 0 : r.columnWidths) == null ? void 0 : x[l ?? -1]) ?? G,
|
|
548
|
+
tabIndex: 0,
|
|
549
|
+
"data-resizing": E ? "true" : void 0,
|
|
550
|
+
onPointerDown: B,
|
|
551
|
+
onPointerMove: O,
|
|
552
|
+
onPointerUp: I,
|
|
553
|
+
onPointerCancel: I,
|
|
554
|
+
onKeyDown: F,
|
|
555
|
+
onDoubleClick: () => r == null ? void 0 : r.resetColumnWidths(),
|
|
556
|
+
className: u(
|
|
557
|
+
// 12px hit area straddling the column edge; the 1px tick inside
|
|
558
|
+
// is the visible affordance (it replaces the decorative one).
|
|
559
|
+
"group/resize absolute -right-1.5 top-0 z-10 flex h-full w-3 cursor-col-resize touch-none select-none items-center justify-center rounded-sm outline-none",
|
|
560
|
+
"focus-visible:ring-2 focus-visible:ring-ring"
|
|
561
|
+
),
|
|
562
|
+
children: /* @__PURE__ */ d(
|
|
563
|
+
"span",
|
|
564
|
+
{
|
|
565
|
+
"aria-hidden": "true",
|
|
566
|
+
className: u(
|
|
567
|
+
"h-4 w-px rounded-sm bg-border-strong",
|
|
568
|
+
"transition-[transform,background-color] duration-150 ease-out motion-reduce:transition-none",
|
|
569
|
+
"group-hover/resize:scale-y-125 group-hover/resize:bg-foreground/60",
|
|
570
|
+
"group-focus-visible/resize:scale-y-125 group-focus-visible/resize:bg-foreground/60",
|
|
571
|
+
"group-data-[resizing]/resize:scale-y-125 group-data-[resizing]/resize:bg-foreground/60"
|
|
572
|
+
)
|
|
573
|
+
}
|
|
574
|
+
)
|
|
575
|
+
}
|
|
576
|
+
)
|
|
577
|
+
]
|
|
342
578
|
}
|
|
343
579
|
);
|
|
344
580
|
});
|
|
345
|
-
|
|
346
|
-
const
|
|
347
|
-
({ className:
|
|
348
|
-
const
|
|
349
|
-
return /* @__PURE__ */
|
|
581
|
+
fe.displayName = "TableColumn";
|
|
582
|
+
const Se = o.forwardRef(
|
|
583
|
+
({ className: e, align: t, sticky: a, sortValue: n, ...s }, l) => {
|
|
584
|
+
const i = q(), h = a === "right" && (i == null ? void 0 : i.elevatedActionColumn);
|
|
585
|
+
return /* @__PURE__ */ d(
|
|
350
586
|
"td",
|
|
351
587
|
{
|
|
352
|
-
ref:
|
|
353
|
-
|
|
588
|
+
ref: l,
|
|
589
|
+
"data-sort-value": n instanceof Date ? n.toISOString() : n,
|
|
590
|
+
className: u(
|
|
354
591
|
// whitespace-nowrap: cell content never wraps — the table's
|
|
355
592
|
// overflow-x-auto viewport scrolls horizontally instead, matching the
|
|
356
593
|
// header cells. Opt back into wrapping with `whitespace-normal` for
|
|
357
594
|
// deliberate multi-line content (e.g. an EmptyState in a colSpan cell).
|
|
358
595
|
"whitespace-nowrap px-4 py-3",
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
596
|
+
ie((i == null ? void 0 : i.isStatic) ?? !1),
|
|
597
|
+
ve,
|
|
598
|
+
ne(t),
|
|
599
|
+
a && ae(a, i == null ? void 0 : i.elevatedActionColumn),
|
|
600
|
+
a && se(a),
|
|
601
|
+
h && u(
|
|
365
602
|
"w-[var(--table-action-column-width)]",
|
|
366
603
|
"min-w-[var(--table-action-column-width)]",
|
|
367
604
|
"max-w-[var(--table-action-column-width)]",
|
|
368
605
|
"bg-elevated",
|
|
369
606
|
"group-hover/row:bg-elevated group-focus-within/row:bg-elevated"
|
|
370
607
|
),
|
|
371
|
-
|
|
608
|
+
e
|
|
372
609
|
),
|
|
373
|
-
...
|
|
610
|
+
...s
|
|
374
611
|
}
|
|
375
612
|
);
|
|
376
613
|
}
|
|
377
614
|
);
|
|
378
|
-
|
|
615
|
+
Se.displayName = "TableCell";
|
|
379
616
|
export {
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
617
|
+
ze as Table,
|
|
618
|
+
pe as TableBody,
|
|
619
|
+
Se as TableCell,
|
|
620
|
+
fe as TableColumn,
|
|
621
|
+
de as TableHeader,
|
|
622
|
+
Y as TableRow
|
|
386
623
|
};
|