@brycks/core-front 0.3.6 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/data/List/List.cjs +1 -1
- package/dist/components/data/List/List.cjs.map +1 -1
- package/dist/components/data/List/List.js +68 -148
- package/dist/components/data/List/List.js.map +1 -1
- package/dist/components/data/Table/Table.cjs +1 -1
- package/dist/components/data/Table/Table.cjs.map +1 -1
- package/dist/components/data/Table/Table.js +148 -217
- package/dist/components/data/Table/Table.js.map +1 -1
- package/dist/components/data/TreeView/TreeView.cjs +1 -1
- package/dist/components/data/TreeView/TreeView.cjs.map +1 -1
- package/dist/components/data/TreeView/TreeView.js +141 -182
- package/dist/components/data/TreeView/TreeView.js.map +1 -1
- package/dist/components/data.cjs +1 -1
- package/dist/components/data.js +23 -21
- package/dist/components/feedback/Banner/Banner.cjs +2 -0
- package/dist/components/feedback/Banner/Banner.cjs.map +1 -0
- package/dist/components/feedback/Banner/Banner.js +77 -0
- package/dist/components/feedback/Banner/Banner.js.map +1 -0
- package/dist/components/feedback/ConfirmDialog/ConfirmDialog.cjs +2 -0
- package/dist/components/feedback/ConfirmDialog/ConfirmDialog.cjs.map +1 -0
- package/dist/components/feedback/ConfirmDialog/ConfirmDialog.js +68 -0
- package/dist/components/feedback/ConfirmDialog/ConfirmDialog.js.map +1 -0
- package/dist/components/feedback/Drawer/Drawer.cjs +1 -22
- package/dist/components/feedback/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/feedback/Drawer/Drawer.js +84 -184
- package/dist/components/feedback/Drawer/Drawer.js.map +1 -1
- package/dist/components/feedback/Modal/Modal.cjs +1 -1
- package/dist/components/feedback/Modal/Modal.cjs.map +1 -1
- package/dist/components/feedback/Modal/Modal.js +73 -150
- package/dist/components/feedback/Modal/Modal.js.map +1 -1
- package/dist/components/feedback/Popover/Popover.cjs +2 -2
- package/dist/components/feedback/Popover/Popover.cjs.map +1 -1
- package/dist/components/feedback/Popover/Popover.js +43 -44
- package/dist/components/feedback/Popover/Popover.js.map +1 -1
- package/dist/components/feedback/Toast/Toast.cjs +1 -10
- package/dist/components/feedback/Toast/Toast.cjs.map +1 -1
- package/dist/components/feedback/Toast/Toast.js +94 -187
- package/dist/components/feedback/Toast/Toast.js.map +1 -1
- package/dist/components/feedback.cjs +1 -1
- package/dist/components/feedback.js +17 -13
- package/dist/components/feedback.js.map +1 -1
- package/dist/components/form/Checkbox/Checkbox.cjs +1 -1
- package/dist/components/form/Checkbox/Checkbox.js +11 -11
- package/dist/components/form/Combobox/Combobox.cjs +1 -6
- package/dist/components/form/Combobox/Combobox.cjs.map +1 -1
- package/dist/components/form/Combobox/Combobox.js +190 -266
- package/dist/components/form/Combobox/Combobox.js.map +1 -1
- package/dist/components/form/Input/Input.cjs +1 -1
- package/dist/components/form/Input/Input.cjs.map +1 -1
- package/dist/components/form/Input/Input.js +38 -133
- package/dist/components/form/Input/Input.js.map +1 -1
- package/dist/components/form/SearchInput/SearchInput.cjs +2 -0
- package/dist/components/form/SearchInput/SearchInput.cjs.map +1 -0
- package/dist/components/form/SearchInput/SearchInput.js +68 -0
- package/dist/components/form/SearchInput/SearchInput.js.map +1 -0
- package/dist/components/form/Select/Select.cjs +1 -1
- package/dist/components/form/Select/Select.cjs.map +1 -1
- package/dist/components/form/Select/Select.js +36 -82
- package/dist/components/form/Select/Select.js.map +1 -1
- package/dist/components/form/TagInput/TagInput.cjs +1 -1
- package/dist/components/form/TagInput/TagInput.js +8 -8
- package/dist/components/form/Textarea/Textarea.cjs +1 -1
- package/dist/components/form/Textarea/Textarea.cjs.map +1 -1
- package/dist/components/form/Textarea/Textarea.js +61 -95
- package/dist/components/form/Textarea/Textarea.js.map +1 -1
- package/dist/components/form.cjs +1 -1
- package/dist/components/form.js +15 -13
- package/dist/components/form.js.map +1 -1
- package/dist/components/layout/Card/Card.cjs +1 -1
- package/dist/components/layout/Card/Card.cjs.map +1 -1
- package/dist/components/layout/Card/Card.js +7 -5
- package/dist/components/layout/Card/Card.js.map +1 -1
- package/dist/components/navigation/ContextMenu/ContextMenu.cjs +1 -1
- package/dist/components/navigation/ContextMenu/ContextMenu.js +9 -9
- package/dist/components/navigation/Menu/Menu.cjs +1 -1
- package/dist/components/navigation/Menu/Menu.cjs.map +1 -1
- package/dist/components/navigation/Menu/Menu.js +70 -135
- package/dist/components/navigation/Menu/Menu.js.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.cjs +1 -1
- package/dist/components/navigation/Pagination/Pagination.cjs.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +87 -157
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/SegmentedControl/SegmentedControl.cjs +2 -0
- package/dist/components/navigation/SegmentedControl/SegmentedControl.cjs.map +1 -0
- package/dist/components/navigation/SegmentedControl/SegmentedControl.js +90 -0
- package/dist/components/navigation/SegmentedControl/SegmentedControl.js.map +1 -0
- package/dist/components/navigation.cjs +1 -1
- package/dist/components/navigation.js +25 -23
- package/dist/components/navigation.js.map +1 -1
- package/dist/components/utility/Avatar/Avatar.cjs +1 -1
- package/dist/components/utility/Avatar/Avatar.cjs.map +1 -1
- package/dist/components/utility/Avatar/Avatar.js +18 -18
- package/dist/components/utility/Avatar/Avatar.js.map +1 -1
- package/dist/components/utility/Badge/Badge.cjs +1 -1
- package/dist/components/utility/Badge/Badge.cjs.map +1 -1
- package/dist/components/utility/Badge/Badge.js +31 -23
- package/dist/components/utility/Badge/Badge.js.map +1 -1
- package/dist/components/utility/Kbd/Kbd.cjs +2 -0
- package/dist/components/utility/Kbd/Kbd.cjs.map +1 -0
- package/dist/components/utility/Kbd/Kbd.js +20 -0
- package/dist/components/utility/Kbd/Kbd.js.map +1 -0
- package/dist/components/utility/Logo/Logo.cjs +1 -1
- package/dist/components/utility/Logo/Logo.cjs.map +1 -1
- package/dist/components/utility/Logo/Logo.js +19 -19
- package/dist/components/utility/Logo/Logo.js.map +1 -1
- package/dist/components/utility.cjs +1 -1
- package/dist/components/utility.js +9 -7
- package/dist/components/utility.js.map +1 -1
- package/dist/data.d.ts +34 -1
- package/dist/feedback.d.ts +67 -2
- package/dist/form.d.ts +31 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +184 -3
- package/dist/index.js +177 -165
- package/dist/index.js.map +1 -1
- package/dist/navigation.d.ts +39 -0
- package/dist/styles.css +1 -1
- package/dist/utility.d.ts +19 -0
- package/package.json +1 -1
|
@@ -1,268 +1,199 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { cx as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
function g() {
|
|
10
|
-
return z($);
|
|
1
|
+
import { jsx as e, jsxs as p, Fragment as N } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as b, createContext as C, useContext as g } from "react";
|
|
3
|
+
import { cx as i } from "../../../utils/styles.js";
|
|
4
|
+
import { EmptyState as x } from "../../utility/EmptyState/EmptyState.js";
|
|
5
|
+
import { Skeleton as w } from "../../utility/Skeleton/Skeleton.js";
|
|
6
|
+
const h = C({ size: "md", variant: "default", stickyHeader: !1 });
|
|
7
|
+
function v() {
|
|
8
|
+
return g(h);
|
|
11
9
|
}
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
children:
|
|
24
|
-
testId: s,
|
|
25
|
-
...b
|
|
26
|
-
}, c) {
|
|
27
|
-
const f = {
|
|
28
|
-
position: "relative",
|
|
29
|
-
width: "100%",
|
|
30
|
-
overflow: "auto",
|
|
31
|
-
...d
|
|
32
|
-
}, h = {
|
|
33
|
-
width: "100%",
|
|
34
|
-
borderCollapse: e === "bordered" ? "separate" : "collapse",
|
|
35
|
-
borderSpacing: 0,
|
|
36
|
-
fontSize: S[t].fontSize,
|
|
37
|
-
fontVariantNumeric: "tabular-nums",
|
|
38
|
-
opacity: o ? 0.6 : 1,
|
|
39
|
-
transition: `opacity ${T.quick}ms ${x.easeOut}`
|
|
40
|
-
};
|
|
41
|
-
return /* @__PURE__ */ r($.Provider, { value: { size: t, variant: e, stickyHeader: n }, children: /* @__PURE__ */ r("div", { className: "brycks-table-container", style: f, children: /* @__PURE__ */ r(
|
|
10
|
+
const H = b(function({
|
|
11
|
+
size: a = "md",
|
|
12
|
+
variant: t = "default",
|
|
13
|
+
stickyHeader: r = !1,
|
|
14
|
+
loading: l = !1,
|
|
15
|
+
className: n,
|
|
16
|
+
style: s,
|
|
17
|
+
children: o,
|
|
18
|
+
testId: d,
|
|
19
|
+
...y
|
|
20
|
+
}, f) {
|
|
21
|
+
return /* @__PURE__ */ e(h.Provider, { value: { size: a, variant: t, stickyHeader: r }, children: /* @__PURE__ */ e("div", { className: "brycks-table-container", style: s, children: /* @__PURE__ */ e(
|
|
42
22
|
"table",
|
|
43
23
|
{
|
|
44
|
-
ref:
|
|
45
|
-
className:
|
|
46
|
-
style:
|
|
47
|
-
"aria-busy":
|
|
48
|
-
"data-testid":
|
|
49
|
-
...
|
|
50
|
-
children:
|
|
24
|
+
ref: f,
|
|
25
|
+
className: i("brycks-table", `brycks-table--${a}`, `brycks-table--${t}`, n),
|
|
26
|
+
style: l ? { opacity: 0.6 } : void 0,
|
|
27
|
+
"aria-busy": l || void 0,
|
|
28
|
+
"data-testid": d,
|
|
29
|
+
...y,
|
|
30
|
+
children: o
|
|
51
31
|
}
|
|
52
32
|
) }) });
|
|
53
33
|
});
|
|
54
|
-
|
|
55
|
-
const
|
|
56
|
-
const { stickyHeader:
|
|
57
|
-
|
|
58
|
-
position: s ? "sticky" : void 0,
|
|
59
|
-
top: s ? 0 : void 0,
|
|
60
|
-
zIndex: s ? 1 : void 0,
|
|
61
|
-
...n
|
|
62
|
-
};
|
|
63
|
-
return /* @__PURE__ */ r(
|
|
34
|
+
H.displayName = "Table";
|
|
35
|
+
const S = b(function({ sticky: a = !1, className: t, style: r, children: l, ...n }, s) {
|
|
36
|
+
const { stickyHeader: o } = v();
|
|
37
|
+
return /* @__PURE__ */ e(
|
|
64
38
|
"thead",
|
|
65
39
|
{
|
|
66
|
-
ref:
|
|
67
|
-
className:
|
|
68
|
-
style:
|
|
69
|
-
...
|
|
70
|
-
children:
|
|
40
|
+
ref: s,
|
|
41
|
+
className: i("brycks-table-head", (a || o) && "brycks-table-head--sticky", t),
|
|
42
|
+
style: r,
|
|
43
|
+
...n,
|
|
44
|
+
children: l
|
|
71
45
|
}
|
|
72
46
|
);
|
|
73
47
|
});
|
|
74
|
-
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
...e
|
|
78
|
-
};
|
|
79
|
-
return /* @__PURE__ */ r(
|
|
48
|
+
S.displayName = "TableHead";
|
|
49
|
+
const L = b(function({ className: a, style: t, children: r, ...l }, n) {
|
|
50
|
+
return /* @__PURE__ */ e(
|
|
80
51
|
"tbody",
|
|
81
52
|
{
|
|
82
|
-
ref:
|
|
83
|
-
className:
|
|
84
|
-
style:
|
|
85
|
-
...
|
|
86
|
-
children:
|
|
53
|
+
ref: n,
|
|
54
|
+
className: i("brycks-table-body", a),
|
|
55
|
+
style: t,
|
|
56
|
+
...l,
|
|
57
|
+
children: r
|
|
87
58
|
}
|
|
88
59
|
);
|
|
89
60
|
});
|
|
90
|
-
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
backgroundColor: t ? "var(--brycks-primary-muted)" : "transparent",
|
|
94
|
-
borderBottom: s !== "bordered" ? "1px solid var(--brycks-border-muted)" : void 0,
|
|
95
|
-
cursor: e ? "pointer" : void 0,
|
|
96
|
-
transition: `background-color ${T.quick}ms ${x.easeOut}`,
|
|
97
|
-
...o
|
|
98
|
-
};
|
|
99
|
-
return /* @__PURE__ */ r(
|
|
61
|
+
L.displayName = "TableBody";
|
|
62
|
+
const k = b(function({ selected: a = !1, clickable: t = !1, className: r, style: l, children: n, ...s }, o) {
|
|
63
|
+
return /* @__PURE__ */ e(
|
|
100
64
|
"tr",
|
|
101
65
|
{
|
|
102
|
-
ref:
|
|
103
|
-
className:
|
|
66
|
+
ref: o,
|
|
67
|
+
className: i(
|
|
104
68
|
"brycks-table-row",
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
69
|
+
a && "brycks-table-row--selected",
|
|
70
|
+
t && "brycks-table-row--clickable",
|
|
71
|
+
r
|
|
108
72
|
),
|
|
109
|
-
style:
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
},
|
|
113
|
-
onMouseLeave: (c) => {
|
|
114
|
-
t || (c.currentTarget.style.backgroundColor = "transparent");
|
|
115
|
-
},
|
|
116
|
-
...d,
|
|
117
|
-
children: a
|
|
73
|
+
style: l,
|
|
74
|
+
...s,
|
|
75
|
+
children: n
|
|
118
76
|
}
|
|
119
77
|
);
|
|
120
78
|
});
|
|
121
|
-
|
|
122
|
-
function
|
|
123
|
-
return
|
|
124
|
-
/* @__PURE__ */
|
|
125
|
-
/* @__PURE__ */
|
|
79
|
+
k.displayName = "TableRow";
|
|
80
|
+
function _({ direction: c }) {
|
|
81
|
+
return c ? /* @__PURE__ */ e("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: c === "asc" ? /* @__PURE__ */ e("path", { d: "M7 3L10 6H4L7 3Z", fill: "currentColor" }) : /* @__PURE__ */ e("path", { d: "M7 11L4 8H10L7 11Z", fill: "currentColor" }) }) : /* @__PURE__ */ p("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", style: { opacity: 0.4 }, "aria-hidden": "true", children: [
|
|
82
|
+
/* @__PURE__ */ e("path", { d: "M7 3L10 6H4L7 3Z", fill: "currentColor" }),
|
|
83
|
+
/* @__PURE__ */ e("path", { d: "M7 11L4 8H10L7 11Z", fill: "currentColor" })
|
|
126
84
|
] });
|
|
127
85
|
}
|
|
128
|
-
const
|
|
129
|
-
sortable:
|
|
130
|
-
sortDirection:
|
|
131
|
-
onSort:
|
|
132
|
-
align:
|
|
133
|
-
className:
|
|
134
|
-
style:
|
|
135
|
-
children:
|
|
136
|
-
...
|
|
137
|
-
},
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
whiteSpace: "nowrap",
|
|
144
|
-
transition: `color ${T.quick}ms ${x.easeOut}`,
|
|
145
|
-
...d
|
|
146
|
-
}, C = {
|
|
147
|
-
display: "flex",
|
|
148
|
-
alignItems: "center",
|
|
149
|
-
gap: L.sm,
|
|
150
|
-
justifyContent: o === "right" ? "flex-end" : o === "center" ? "center" : "flex-start"
|
|
151
|
-
}, H = {
|
|
152
|
-
...C,
|
|
153
|
-
width: "100%",
|
|
154
|
-
padding: 0,
|
|
155
|
-
background: "transparent",
|
|
156
|
-
border: "none",
|
|
157
|
-
font: "inherit",
|
|
158
|
-
fontWeight: "inherit",
|
|
159
|
-
color: "inherit",
|
|
160
|
-
cursor: "pointer",
|
|
161
|
-
userSelect: "none"
|
|
86
|
+
const B = b(function({
|
|
87
|
+
sortable: a = !1,
|
|
88
|
+
sortDirection: t = null,
|
|
89
|
+
onSort: r,
|
|
90
|
+
align: l = "left",
|
|
91
|
+
className: n,
|
|
92
|
+
style: s,
|
|
93
|
+
children: o,
|
|
94
|
+
...d
|
|
95
|
+
}, y) {
|
|
96
|
+
const f = {
|
|
97
|
+
textAlign: l,
|
|
98
|
+
...s
|
|
99
|
+
}, m = {
|
|
100
|
+
justifyContent: l === "right" ? "flex-end" : l === "center" ? "center" : "flex-start"
|
|
162
101
|
};
|
|
163
|
-
return /* @__PURE__ */
|
|
102
|
+
return /* @__PURE__ */ e(
|
|
164
103
|
"th",
|
|
165
104
|
{
|
|
166
|
-
ref:
|
|
167
|
-
"aria-sort":
|
|
168
|
-
className:
|
|
169
|
-
style:
|
|
170
|
-
...
|
|
171
|
-
children:
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
}
|
|
188
|
-
) : /* @__PURE__ */ r("span", { style: C, children: l })
|
|
105
|
+
ref: y,
|
|
106
|
+
"aria-sort": a ? t === "asc" ? "ascending" : t === "desc" ? "descending" : "none" : void 0,
|
|
107
|
+
className: i("brycks-table-header", a && "brycks-table-header--sortable", n),
|
|
108
|
+
style: f,
|
|
109
|
+
...d,
|
|
110
|
+
children: a ? (
|
|
111
|
+
// Sorting happens through a real button so it is reachable by keyboard
|
|
112
|
+
/* @__PURE__ */ p(
|
|
113
|
+
"button",
|
|
114
|
+
{
|
|
115
|
+
type: "button",
|
|
116
|
+
className: "brycks-table-header__content brycks-table-header__sort",
|
|
117
|
+
style: m,
|
|
118
|
+
onClick: () => r?.(),
|
|
119
|
+
children: [
|
|
120
|
+
o,
|
|
121
|
+
/* @__PURE__ */ e(_, { direction: t })
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
)
|
|
125
|
+
) : /* @__PURE__ */ e("span", { className: "brycks-table-header__content", style: m, children: o })
|
|
189
126
|
}
|
|
190
127
|
);
|
|
191
128
|
});
|
|
192
|
-
|
|
193
|
-
const
|
|
194
|
-
const
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
textAlign: t,
|
|
198
|
-
verticalAlign: "middle",
|
|
199
|
-
border: b === "bordered" ? "1px solid var(--brycks-border-muted)" : void 0,
|
|
200
|
-
maxWidth: e ? 200 : void 0,
|
|
201
|
-
overflow: e ? "hidden" : void 0,
|
|
202
|
-
textOverflow: e ? "ellipsis" : void 0,
|
|
203
|
-
whiteSpace: e ? "nowrap" : void 0,
|
|
204
|
-
...o
|
|
129
|
+
B.displayName = "TableHeader";
|
|
130
|
+
const T = b(function({ align: a = "left", truncate: t = !1, className: r, style: l, children: n, ...s }, o) {
|
|
131
|
+
const d = {
|
|
132
|
+
textAlign: a,
|
|
133
|
+
...l
|
|
205
134
|
};
|
|
206
|
-
return /* @__PURE__ */
|
|
135
|
+
return /* @__PURE__ */ e(
|
|
207
136
|
"td",
|
|
208
137
|
{
|
|
209
|
-
ref:
|
|
210
|
-
className:
|
|
211
|
-
style:
|
|
212
|
-
title:
|
|
213
|
-
...
|
|
214
|
-
children:
|
|
138
|
+
ref: o,
|
|
139
|
+
className: i("brycks-table-cell", t && "brycks-table-cell--truncate", r),
|
|
140
|
+
style: d,
|
|
141
|
+
title: t && typeof n == "string" ? n : void 0,
|
|
142
|
+
...s,
|
|
143
|
+
children: n
|
|
215
144
|
}
|
|
216
145
|
);
|
|
217
146
|
});
|
|
218
|
-
|
|
219
|
-
const
|
|
220
|
-
|
|
221
|
-
backgroundColor: "var(--brycks-background-muted)",
|
|
222
|
-
fontWeight: 500,
|
|
223
|
-
...e
|
|
224
|
-
};
|
|
225
|
-
return /* @__PURE__ */ r(
|
|
147
|
+
T.displayName = "TableCell";
|
|
148
|
+
const A = b(function({ className: a, style: t, children: r, ...l }, n) {
|
|
149
|
+
return /* @__PURE__ */ e(
|
|
226
150
|
"tfoot",
|
|
227
151
|
{
|
|
228
|
-
ref:
|
|
229
|
-
className:
|
|
230
|
-
style:
|
|
231
|
-
...
|
|
232
|
-
children:
|
|
152
|
+
ref: n,
|
|
153
|
+
className: i("brycks-table-foot", a),
|
|
154
|
+
style: t,
|
|
155
|
+
...l,
|
|
156
|
+
children: r
|
|
233
157
|
}
|
|
234
158
|
);
|
|
235
159
|
});
|
|
236
|
-
|
|
237
|
-
const
|
|
238
|
-
const
|
|
239
|
-
captionSide:
|
|
240
|
-
|
|
241
|
-
fontSize: m.base - 1,
|
|
242
|
-
color: "var(--brycks-foreground-muted)",
|
|
243
|
-
textAlign: "left",
|
|
244
|
-
...n
|
|
160
|
+
A.displayName = "TableFoot";
|
|
161
|
+
const E = b(function({ placement: a = "bottom", className: t, style: r, children: l, ...n }, s) {
|
|
162
|
+
const o = {
|
|
163
|
+
captionSide: a,
|
|
164
|
+
...r
|
|
245
165
|
};
|
|
246
|
-
return /* @__PURE__ */
|
|
166
|
+
return /* @__PURE__ */ e(
|
|
247
167
|
"caption",
|
|
248
168
|
{
|
|
249
|
-
ref:
|
|
250
|
-
className:
|
|
251
|
-
style:
|
|
252
|
-
...
|
|
253
|
-
children:
|
|
169
|
+
ref: s,
|
|
170
|
+
className: i("brycks-table-caption", t),
|
|
171
|
+
style: o,
|
|
172
|
+
...n,
|
|
173
|
+
children: l
|
|
254
174
|
}
|
|
255
175
|
);
|
|
256
176
|
});
|
|
257
|
-
|
|
177
|
+
E.displayName = "TableCaption";
|
|
178
|
+
const F = b(function({ colSpan: a, icon: t, title: r, description: l, action: n, className: s }, o) {
|
|
179
|
+
return /* @__PURE__ */ e("tr", { ref: o, className: i("brycks-table-empty", s), children: /* @__PURE__ */ e("td", { colSpan: a, style: { padding: 0 }, children: /* @__PURE__ */ e(x, { icon: t, title: r, description: l, action: n }) }) });
|
|
180
|
+
});
|
|
181
|
+
F.displayName = "TableEmpty";
|
|
182
|
+
const u = ["70%", "45%", "85%", "55%", "60%", "40%"];
|
|
183
|
+
function M({ rows: c = 5, columns: a, className: t }) {
|
|
184
|
+
return /* @__PURE__ */ e(N, { children: Array.from({ length: c }).map((r, l) => /* @__PURE__ */ e(k, { className: i("brycks-table-skeleton-row", t), "aria-hidden": "true", children: Array.from({ length: a }).map((n, s) => /* @__PURE__ */ e(T, { children: /* @__PURE__ */ e(w, { variant: "text", width: u[s % u.length] }) }, s)) }, l)) });
|
|
185
|
+
}
|
|
186
|
+
M.displayName = "TableSkeleton";
|
|
258
187
|
export {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
B as
|
|
188
|
+
H as Table,
|
|
189
|
+
L as TableBody,
|
|
190
|
+
E as TableCaption,
|
|
191
|
+
T as TableCell,
|
|
192
|
+
F as TableEmpty,
|
|
193
|
+
A as TableFoot,
|
|
194
|
+
S as TableHead,
|
|
195
|
+
B as TableHeader,
|
|
196
|
+
k as TableRow,
|
|
197
|
+
M as TableSkeleton
|
|
267
198
|
};
|
|
268
199
|
//# sourceMappingURL=Table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sources":["../../../../src/components/data/Table/Table.tsx"],"sourcesContent":["/**\n * Table Component\n *\n * A flexible table component with sorting, selection, and responsive support.\n * Follows design system patterns for consistent styling.\n */\n\nimport {\n forwardRef,\n createContext,\n useContext,\n type CSSProperties,\n type HTMLAttributes,\n type ThHTMLAttributes,\n type TdHTMLAttributes,\n} from 'react'\nimport { cx } from '../../../utils/styles'\nimport { spacing, fontSizes, durations, easings } from '../../../design-system'\nimport { componentGap, componentPaddingX, componentPaddingY } from '../../../design-system/primitives'\n\nexport type TableSize = 'sm' | 'md' | 'lg'\nexport type TableVariant = 'default' | 'striped' | 'bordered'\n\ninterface TableContextValue {\n size: TableSize\n variant: TableVariant\n stickyHeader: boolean\n}\n\nconst TableContext = createContext<TableContextValue>({ size: 'md', variant: 'default', stickyHeader: false })\n\nfunction useTableContext() {\n return useContext(TableContext)\n}\n\nexport interface TableProps extends HTMLAttributes<HTMLTableElement> {\n /** Table size */\n size?: TableSize\n /** Table variant */\n variant?: TableVariant\n /** Whether the table has a sticky header */\n stickyHeader?: boolean\n /** Whether the table is in a loading state */\n loading?: boolean\n /** Custom class name */\n className?: string\n /** Test ID */\n testId?: string\n}\n\nconst sizeConfig: Record<TableSize, { fontSize: number; paddingY: number; paddingX: number; headerPaddingY: number; headerPaddingX: number }> = {\n sm: { fontSize: fontSizes.base - 1, paddingY: componentPaddingY.md, paddingX: componentPaddingX.sm, headerPaddingY: componentPaddingY.md, headerPaddingX: componentPaddingX.sm },\n md: { fontSize: fontSizes.base, paddingY: componentPaddingX.sm, paddingX: componentPaddingX.md, headerPaddingY: componentPaddingX.sm, headerPaddingX: componentPaddingX.md },\n lg: { fontSize: fontSizes.base + 1, paddingY: componentPaddingX.md, paddingX: componentPaddingX.lg, headerPaddingY: spacing[3.5], headerPaddingX: componentPaddingX.lg },\n}\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(function Table(\n {\n size = 'md',\n variant = 'default',\n stickyHeader = false,\n loading = false,\n className,\n style,\n children,\n testId,\n ...props\n },\n ref\n) {\n const containerStyle: CSSProperties = {\n position: 'relative',\n width: '100%',\n overflow: 'auto',\n ...style,\n }\n\n const tableStyle: CSSProperties = {\n width: '100%',\n borderCollapse: variant === 'bordered' ? 'separate' : 'collapse',\n borderSpacing: 0,\n fontSize: sizeConfig[size].fontSize,\n fontVariantNumeric: 'tabular-nums',\n opacity: loading ? 0.6 : 1,\n transition: `opacity ${durations.quick}ms ${easings.easeOut}`,\n }\n\n return (\n <TableContext.Provider value={{ size, variant, stickyHeader }}>\n <div className=\"brycks-table-container\" style={containerStyle}>\n <table\n ref={ref}\n className={cx('brycks-table', `brycks-table--${size}`, `brycks-table--${variant}`, className)}\n style={tableStyle}\n aria-busy={loading || undefined}\n data-testid={testId}\n {...props}\n >\n {children}\n </table>\n </div>\n </TableContext.Provider>\n )\n})\n\nTable.displayName = 'Table'\n\n// TableHead\nexport interface TableHeadProps extends HTMLAttributes<HTMLTableSectionElement> {\n /** Whether the header is sticky */\n sticky?: boolean\n /** Custom class name */\n className?: string\n}\n\nexport const TableHead = forwardRef<HTMLTableSectionElement, TableHeadProps>(function TableHead(\n { sticky = false, className, style, children, ...props },\n ref\n) {\n const { stickyHeader } = useTableContext()\n const isSticky = sticky || stickyHeader\n\n const headStyle: CSSProperties = {\n backgroundColor: 'var(--brycks-background-muted)',\n position: isSticky ? 'sticky' : undefined,\n top: isSticky ? 0 : undefined,\n zIndex: isSticky ? 1 : undefined,\n ...style,\n }\n\n return (\n <thead\n ref={ref}\n className={cx('brycks-table-head', isSticky && 'brycks-table-head--sticky', className)}\n style={headStyle}\n {...props}\n >\n {children}\n </thead>\n )\n})\n\nTableHead.displayName = 'TableHead'\n\n// TableBody\nexport interface TableBodyProps extends HTMLAttributes<HTMLTableSectionElement> {\n /** Custom class name */\n className?: string\n}\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, TableBodyProps>(function TableBody(\n { className, style, children, ...props },\n ref\n) {\n const bodyStyle: CSSProperties = {\n ...style,\n }\n\n return (\n <tbody\n ref={ref}\n className={cx('brycks-table-body', className)}\n style={bodyStyle}\n {...props}\n >\n {children}\n </tbody>\n )\n})\n\nTableBody.displayName = 'TableBody'\n\n// TableRow\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n /** Whether the row is selected */\n selected?: boolean\n /** Whether the row is clickable */\n clickable?: boolean\n /** Custom class name */\n className?: string\n}\n\nexport const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(function TableRow(\n { selected = false, clickable = false, className, style, children, ...props },\n ref\n) {\n const { variant } = useTableContext()\n\n const rowStyle: CSSProperties = {\n backgroundColor: selected\n ? 'var(--brycks-primary-muted)'\n : 'transparent',\n borderBottom: variant !== 'bordered' ? '1px solid var(--brycks-border-muted)' : undefined,\n cursor: clickable ? 'pointer' : undefined,\n transition: `background-color ${durations.quick}ms ${easings.easeOut}`,\n ...style,\n }\n\n return (\n <tr\n ref={ref}\n className={cx(\n 'brycks-table-row',\n selected && 'brycks-table-row--selected',\n clickable && 'brycks-table-row--clickable',\n className\n )}\n style={rowStyle}\n onMouseEnter={(e) => {\n if (clickable && !selected) {\n e.currentTarget.style.backgroundColor = 'var(--brycks-background-muted)'\n }\n }}\n onMouseLeave={(e) => {\n if (!selected) {\n e.currentTarget.style.backgroundColor = 'transparent'\n }\n }}\n {...props}\n >\n {children}\n </tr>\n )\n})\n\nTableRow.displayName = 'TableRow'\n\n// TableHeader (th)\nexport interface TableHeaderProps extends ThHTMLAttributes<HTMLTableCellElement> {\n /** Whether the column is sortable */\n sortable?: boolean\n /** Sort direction */\n sortDirection?: 'asc' | 'desc' | null\n /** Callback when sort is requested */\n onSort?: () => void\n /** Text alignment */\n align?: 'left' | 'center' | 'right'\n /** Custom class name */\n className?: string\n}\n\nfunction SortIcon({ direction }: { direction: 'asc' | 'desc' | null }) {\n if (!direction) {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" style={{ opacity: 0.4 }} aria-hidden=\"true\">\n <path d=\"M7 3L10 6H4L7 3Z\" fill=\"currentColor\" />\n <path d=\"M7 11L4 8H10L7 11Z\" fill=\"currentColor\" />\n </svg>\n )\n }\n\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n {direction === 'asc' ? (\n <path d=\"M7 3L10 6H4L7 3Z\" fill=\"currentColor\" />\n ) : (\n <path d=\"M7 11L4 8H10L7 11Z\" fill=\"currentColor\" />\n )}\n </svg>\n )\n}\n\nexport const TableHeader = forwardRef<HTMLTableCellElement, TableHeaderProps>(function TableHeader(\n {\n sortable = false,\n sortDirection = null,\n onSort,\n align = 'left',\n className,\n style,\n children,\n ...props\n },\n ref\n) {\n const { size } = useTableContext()\n const config = sizeConfig[size]\n\n const headerStyle: CSSProperties = {\n padding: `${config.headerPaddingY}px ${config.headerPaddingX}px`,\n fontWeight: 600,\n color: 'var(--brycks-foreground-muted)',\n textAlign: align,\n whiteSpace: 'nowrap',\n transition: `color ${durations.quick}ms ${easings.easeOut}`,\n ...style,\n }\n\n const contentStyle: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: componentGap.sm,\n justifyContent: align === 'right' ? 'flex-end' : align === 'center' ? 'center' : 'flex-start',\n }\n\n // Sorting happens through a real button so it is reachable by keyboard\n const sortButtonStyle: CSSProperties = {\n ...contentStyle,\n width: '100%',\n padding: 0,\n background: 'transparent',\n border: 'none',\n font: 'inherit',\n fontWeight: 'inherit',\n color: 'inherit',\n cursor: 'pointer',\n userSelect: 'none',\n }\n\n return (\n <th\n ref={ref}\n aria-sort={\n sortable\n ? sortDirection === 'asc'\n ? 'ascending'\n : sortDirection === 'desc'\n ? 'descending'\n : 'none'\n : undefined\n }\n className={cx('brycks-table-header', sortable && 'brycks-table-header--sortable', className)}\n style={headerStyle}\n {...props}\n >\n {sortable ? (\n <button\n type=\"button\"\n style={sortButtonStyle}\n onClick={() => onSort?.()}\n onMouseEnter={(e) => {\n e.currentTarget.style.color = 'var(--brycks-foreground-default)'\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.color = 'inherit'\n }}\n >\n {children}\n <SortIcon direction={sortDirection} />\n </button>\n ) : (\n <span style={contentStyle}>{children}</span>\n )}\n </th>\n )\n})\n\nTableHeader.displayName = 'TableHeader'\n\n// TableCell (td)\nexport interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {\n /** Text alignment */\n align?: 'left' | 'center' | 'right'\n /** Whether to truncate text */\n truncate?: boolean\n /** Custom class name */\n className?: string\n}\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TableCellProps>(function TableCell(\n { align = 'left', truncate = false, className, style, children, ...props },\n ref\n) {\n const { size, variant } = useTableContext()\n const config = sizeConfig[size]\n\n const cellStyle: CSSProperties = {\n padding: `${config.paddingY}px ${config.paddingX}px`,\n color: 'var(--brycks-foreground-default)',\n textAlign: align,\n verticalAlign: 'middle',\n border: variant === 'bordered' ? '1px solid var(--brycks-border-muted)' : undefined,\n maxWidth: truncate ? 200 : undefined,\n overflow: truncate ? 'hidden' : undefined,\n textOverflow: truncate ? 'ellipsis' : undefined,\n whiteSpace: truncate ? 'nowrap' : undefined,\n ...style,\n }\n\n return (\n <td\n ref={ref}\n className={cx('brycks-table-cell', truncate && 'brycks-table-cell--truncate', className)}\n style={cellStyle}\n title={truncate && typeof children === 'string' ? children : undefined}\n {...props}\n >\n {children}\n </td>\n )\n})\n\nTableCell.displayName = 'TableCell'\n\n// TableFoot\nexport interface TableFootProps extends HTMLAttributes<HTMLTableSectionElement> {\n /** Custom class name */\n className?: string\n}\n\nexport const TableFoot = forwardRef<HTMLTableSectionElement, TableFootProps>(function TableFoot(\n { className, style, children, ...props },\n ref\n) {\n const footStyle: CSSProperties = {\n backgroundColor: 'var(--brycks-background-muted)',\n fontWeight: 500,\n ...style,\n }\n\n return (\n <tfoot\n ref={ref}\n className={cx('brycks-table-foot', className)}\n style={footStyle}\n {...props}\n >\n {children}\n </tfoot>\n )\n})\n\nTableFoot.displayName = 'TableFoot'\n\n// TableCaption\nexport interface TableCaptionProps extends HTMLAttributes<HTMLTableCaptionElement> {\n /** Caption placement */\n placement?: 'top' | 'bottom'\n /** Custom class name */\n className?: string\n}\n\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, TableCaptionProps>(function TableCaption(\n { placement = 'bottom', className, style, children, ...props },\n ref\n) {\n const captionStyle: CSSProperties = {\n captionSide: placement,\n padding: `${spacing[3]}px ${spacing[4]}px`,\n fontSize: fontSizes.base - 1,\n color: 'var(--brycks-foreground-muted)',\n textAlign: 'left',\n ...style,\n }\n\n return (\n <caption\n ref={ref}\n className={cx('brycks-table-caption', className)}\n style={captionStyle}\n {...props}\n >\n {children}\n </caption>\n )\n})\n\nTableCaption.displayName = 'TableCaption'\n"],"names":["TableContext","createContext","useTableContext","useContext","sizeConfig","fontSizes","componentPaddingY","componentPaddingX","spacing","Table","forwardRef","size","variant","stickyHeader","loading","className","style","children","testId","props","ref","containerStyle","tableStyle","durations","easings","jsx","cx","TableHead","sticky","isSticky","headStyle","TableBody","bodyStyle","TableRow","selected","clickable","rowStyle","e","SortIcon","direction","TableHeader","sortable","sortDirection","onSort","align","config","headerStyle","contentStyle","componentGap","sortButtonStyle","jsxs","TableCell","truncate","cellStyle","TableFoot","footStyle","TableCaption","placement","captionStyle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Table.js","sources":["../../../../src/components/data/Table/Table.tsx"],"sourcesContent":["/**\n * Table Component\n *\n * A flexible table component with sorting, selection, and responsive support.\n * Follows design system patterns for consistent styling.\n */\n\nimport {\n forwardRef,\n createContext,\n useContext,\n type CSSProperties,\n type HTMLAttributes,\n type ThHTMLAttributes,\n type TdHTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { cx } from '../../../utils/styles'\nimport { EmptyState } from '../../utility/EmptyState'\nimport { Skeleton } from '../../utility/Skeleton'\n\nexport type TableSize = 'sm' | 'md' | 'lg'\n// `striped` was dead API (no CSS, incompatible with inline row styling) — removed in 0.5.0.\nexport type TableVariant = 'default' | 'bordered'\n\ninterface TableContextValue {\n size: TableSize\n variant: TableVariant\n stickyHeader: boolean\n}\n\nconst TableContext = createContext<TableContextValue>({ size: 'md', variant: 'default', stickyHeader: false })\n\nfunction useTableContext() {\n return useContext(TableContext)\n}\n\nexport interface TableProps extends HTMLAttributes<HTMLTableElement> {\n /** Table size */\n size?: TableSize\n /** Table variant */\n variant?: TableVariant\n /** Whether the table has a sticky header */\n stickyHeader?: boolean\n /** Whether the table is in a loading state */\n loading?: boolean\n /** Custom class name */\n className?: string\n /** Test ID */\n testId?: string\n}\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(function Table(\n {\n size = 'md',\n variant = 'default',\n stickyHeader = false,\n loading = false,\n className,\n style,\n children,\n testId,\n ...props\n },\n ref\n) {\n return (\n <TableContext.Provider value={{ size, variant, stickyHeader }}>\n <div className=\"brycks-table-container\" style={style}>\n <table\n ref={ref}\n className={cx('brycks-table', `brycks-table--${size}`, `brycks-table--${variant}`, className)}\n style={loading ? { opacity: 0.6 } : undefined}\n aria-busy={loading || undefined}\n data-testid={testId}\n {...props}\n >\n {children}\n </table>\n </div>\n </TableContext.Provider>\n )\n})\n\nTable.displayName = 'Table'\n\n// TableHead\nexport interface TableHeadProps extends HTMLAttributes<HTMLTableSectionElement> {\n /** Whether the header is sticky */\n sticky?: boolean\n /** Custom class name */\n className?: string\n}\n\nexport const TableHead = forwardRef<HTMLTableSectionElement, TableHeadProps>(function TableHead(\n { sticky = false, className, style, children, ...props },\n ref\n) {\n const { stickyHeader } = useTableContext()\n const isSticky = sticky || stickyHeader\n\n return (\n <thead\n ref={ref}\n className={cx('brycks-table-head', isSticky && 'brycks-table-head--sticky', className)}\n style={style}\n {...props}\n >\n {children}\n </thead>\n )\n})\n\nTableHead.displayName = 'TableHead'\n\n// TableBody\nexport interface TableBodyProps extends HTMLAttributes<HTMLTableSectionElement> {\n /** Custom class name */\n className?: string\n}\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, TableBodyProps>(function TableBody(\n { className, style, children, ...props },\n ref\n) {\n return (\n <tbody\n ref={ref}\n className={cx('brycks-table-body', className)}\n style={style}\n {...props}\n >\n {children}\n </tbody>\n )\n})\n\nTableBody.displayName = 'TableBody'\n\n// TableRow\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n /** Whether the row is selected */\n selected?: boolean\n /** Whether the row is clickable */\n clickable?: boolean\n /** Custom class name */\n className?: string\n}\n\nexport const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(function TableRow(\n { selected = false, clickable = false, className, style, children, ...props },\n ref\n) {\n return (\n <tr\n ref={ref}\n className={cx(\n 'brycks-table-row',\n selected && 'brycks-table-row--selected',\n clickable && 'brycks-table-row--clickable',\n className\n )}\n style={style}\n {...props}\n >\n {children}\n </tr>\n )\n})\n\nTableRow.displayName = 'TableRow'\n\n// TableHeader (th)\nexport interface TableHeaderProps extends ThHTMLAttributes<HTMLTableCellElement> {\n /** Whether the column is sortable */\n sortable?: boolean\n /** Sort direction */\n sortDirection?: 'asc' | 'desc' | null\n /** Callback when sort is requested */\n onSort?: () => void\n /** Text alignment */\n align?: 'left' | 'center' | 'right'\n /** Custom class name */\n className?: string\n}\n\nfunction SortIcon({ direction }: { direction: 'asc' | 'desc' | null }) {\n if (!direction) {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" style={{ opacity: 0.4 }} aria-hidden=\"true\">\n <path d=\"M7 3L10 6H4L7 3Z\" fill=\"currentColor\" />\n <path d=\"M7 11L4 8H10L7 11Z\" fill=\"currentColor\" />\n </svg>\n )\n }\n\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n {direction === 'asc' ? (\n <path d=\"M7 3L10 6H4L7 3Z\" fill=\"currentColor\" />\n ) : (\n <path d=\"M7 11L4 8H10L7 11Z\" fill=\"currentColor\" />\n )}\n </svg>\n )\n}\n\nexport const TableHeader = forwardRef<HTMLTableCellElement, TableHeaderProps>(function TableHeader(\n {\n sortable = false,\n sortDirection = null,\n onSort,\n align = 'left',\n className,\n style,\n children,\n ...props\n },\n ref\n) {\n // Alignment is dynamic per prop; everything else lives in CSS.\n const alignStyle: CSSProperties = {\n textAlign: align,\n ...style,\n }\n\n const contentJustify: CSSProperties = {\n justifyContent: align === 'right' ? 'flex-end' : align === 'center' ? 'center' : 'flex-start',\n }\n\n return (\n <th\n ref={ref}\n aria-sort={\n sortable\n ? sortDirection === 'asc'\n ? 'ascending'\n : sortDirection === 'desc'\n ? 'descending'\n : 'none'\n : undefined\n }\n className={cx('brycks-table-header', sortable && 'brycks-table-header--sortable', className)}\n style={alignStyle}\n {...props}\n >\n {sortable ? (\n // Sorting happens through a real button so it is reachable by keyboard\n <button\n type=\"button\"\n className=\"brycks-table-header__content brycks-table-header__sort\"\n style={contentJustify}\n onClick={() => onSort?.()}\n >\n {children}\n <SortIcon direction={sortDirection} />\n </button>\n ) : (\n <span className=\"brycks-table-header__content\" style={contentJustify}>\n {children}\n </span>\n )}\n </th>\n )\n})\n\nTableHeader.displayName = 'TableHeader'\n\n// TableCell (td)\nexport interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {\n /** Text alignment */\n align?: 'left' | 'center' | 'right'\n /** Whether to truncate text */\n truncate?: boolean\n /** Custom class name */\n className?: string\n}\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TableCellProps>(function TableCell(\n { align = 'left', truncate = false, className, style, children, ...props },\n ref\n) {\n // Alignment is dynamic per prop; everything else lives in CSS.\n const alignStyle: CSSProperties = {\n textAlign: align,\n ...style,\n }\n\n return (\n <td\n ref={ref}\n className={cx('brycks-table-cell', truncate && 'brycks-table-cell--truncate', className)}\n style={alignStyle}\n title={truncate && typeof children === 'string' ? children : undefined}\n {...props}\n >\n {children}\n </td>\n )\n})\n\nTableCell.displayName = 'TableCell'\n\n// TableFoot\nexport interface TableFootProps extends HTMLAttributes<HTMLTableSectionElement> {\n /** Custom class name */\n className?: string\n}\n\nexport const TableFoot = forwardRef<HTMLTableSectionElement, TableFootProps>(function TableFoot(\n { className, style, children, ...props },\n ref\n) {\n return (\n <tfoot\n ref={ref}\n className={cx('brycks-table-foot', className)}\n style={style}\n {...props}\n >\n {children}\n </tfoot>\n )\n})\n\nTableFoot.displayName = 'TableFoot'\n\n// TableCaption\nexport interface TableCaptionProps extends HTMLAttributes<HTMLTableCaptionElement> {\n /** Caption placement */\n placement?: 'top' | 'bottom'\n /** Custom class name */\n className?: string\n}\n\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, TableCaptionProps>(function TableCaption(\n { placement = 'bottom', className, style, children, ...props },\n ref\n) {\n // Caption side is dynamic per prop; everything else lives in CSS.\n const captionStyle: CSSProperties = {\n captionSide: placement,\n ...style,\n }\n\n return (\n <caption\n ref={ref}\n className={cx('brycks-table-caption', className)}\n style={captionStyle}\n {...props}\n >\n {children}\n </caption>\n )\n})\n\nTableCaption.displayName = 'TableCaption'\n\n// TableEmpty — a full-width empty state row, drop inside <TableBody>\nexport interface TableEmptyProps {\n /** Number of columns to span (match the table's column count) */\n colSpan: number\n /** Icon or illustration */\n icon?: ReactNode\n /** Title text */\n title?: ReactNode\n /** Description text */\n description?: ReactNode\n /** Action element (button, link) */\n action?: ReactNode\n /** Custom class name */\n className?: string\n}\n\nexport const TableEmpty = forwardRef<HTMLTableRowElement, TableEmptyProps>(function TableEmpty(\n { colSpan, icon, title, description, action, className },\n ref\n) {\n return (\n <tr ref={ref} className={cx('brycks-table-empty', className)}>\n <td colSpan={colSpan} style={{ padding: 0 }}>\n <EmptyState icon={icon} title={title} description={description} action={action} />\n </td>\n </tr>\n )\n})\n\nTableEmpty.displayName = 'TableEmpty'\n\n// TableSkeleton — placeholder rows shown while data loads, drop inside <TableBody>\nexport interface TableSkeletonProps {\n /** Number of skeleton rows */\n rows?: number\n /** Number of columns per row (match the table's column count) */\n columns: number\n /** Custom class name applied to each row */\n className?: string\n}\n\n// Deterministic per-column widths so the placeholder reads like real data\nconst skeletonWidths = ['70%', '45%', '85%', '55%', '60%', '40%']\n\nexport function TableSkeleton({ rows = 5, columns, className }: TableSkeletonProps) {\n return (\n <>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <TableRow key={rowIndex} className={cx('brycks-table-skeleton-row', className)} aria-hidden=\"true\">\n {Array.from({ length: columns }).map((_, colIndex) => (\n <TableCell key={colIndex}>\n <Skeleton variant=\"text\" width={skeletonWidths[colIndex % skeletonWidths.length]} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </>\n )\n}\n\nTableSkeleton.displayName = 'TableSkeleton'\n"],"names":["TableContext","createContext","useTableContext","useContext","Table","forwardRef","size","variant","stickyHeader","loading","className","style","children","testId","props","ref","jsx","cx","TableHead","sticky","TableBody","TableRow","selected","clickable","SortIcon","direction","TableHeader","sortable","sortDirection","onSort","align","alignStyle","contentJustify","jsxs","TableCell","truncate","TableFoot","TableCaption","placement","captionStyle","TableEmpty","colSpan","icon","title","description","action","EmptyState","skeletonWidths","TableSkeleton","rows","columns","Fragment","_","rowIndex","colIndex","Skeleton"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),o=require("react"),T=require("../../../utils/styles.cjs"),j=require("../../../design-system/tokens/spacing.cjs"),g=require("../../../design-system/primitives/sizing.cjs"),N=require("../../../design-system/tokens/typography.cjs"),P=require("../../../design-system/tokens/motion.cjs"),O={sm:{fontSize:N.fontSizes.sm,iconSize:g.iconSizes.xs,padding:g.componentPaddingY.xs,indent:j.spacing[4]},md:{fontSize:N.fontSizes.base,iconSize:g.iconSizes.sm,padding:g.componentPaddingY.sm,indent:j.spacing[5]},lg:{fontSize:N.fontSizes.md,iconSize:g.iconSizes.md,padding:g.componentPaddingY.md,indent:j.spacing[6]}};function B({expanded:e}){return a.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",style:{transform:e?"rotate(90deg)":"rotate(0)",transition:`transform ${P.durations.fast}ms ${P.easings.easeOut}`},children:a.jsx("path",{d:"M6 4l4 4-4 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}function A({node:e,level:p,config:u,isSelected:v,isExpanded:r,showLines:_,onToggle:f,onSelect:h,renderNode:y,selectedIds:k,expandedIds:x,multiSelect:z}){const l=e.children&&e.children.length>0,S=o.useCallback(s=>{e.disabled||h(e.id,s.ctrlKey||s.metaKey)},[e.id,e.disabled,h]),D=o.useCallback(s=>{s.stopPropagation(),l&&f(e.id)},[e.id,l,f]),I=o.useCallback(s=>{if(!e.disabled)switch(s.key){case"Enter":case" ":s.preventDefault(),h(e.id,s.ctrlKey||s.metaKey);break;case"ArrowRight":s.preventDefault(),l&&!r&&f(e.id);break;case"ArrowLeft":s.preventDefault(),l&&r&&f(e.id);break}},[e.id,e.disabled,l,r,f,h]),C={paddingLeft:j.spacing[2]+p*u.indent},K={left:j.spacing[2]+(p-1)*u.indent+u.iconSize/2};return a.jsxs("li",{role:"treeitem","aria-selected":v,"aria-expanded":l?r:void 0,children:[a.jsxs("div",{tabIndex:e.disabled?-1:0,className:T.cx("brycks-treeview__item",v&&"brycks-treeview__item--selected",e.disabled&&"brycks-treeview__item--disabled"),style:C,onClick:S,onKeyDown:I,children:[_&&p>0&&a.jsx("span",{className:"brycks-treeview__line",style:K,"aria-hidden":"true"}),a.jsx("span",{className:"brycks-treeview__toggle",onClick:D,children:l&&a.jsx(B,{expanded:r})}),e.icon&&a.jsx("span",{className:"brycks-treeview__icon",children:e.icon}),y?y(e,v,r):a.jsx("span",{className:"brycks-treeview__label",children:e.label})]}),l&&r&&a.jsx("ul",{role:"group",className:"brycks-treeview__group",children:e.children.map(s=>a.jsx(A,{node:s,level:p+1,config:u,isSelected:k.includes(s.id),isExpanded:x.includes(s.id),showLines:_,onToggle:f,onSelect:h,renderNode:y,selectedIds:k,expandedIds:x,multiSelect:z},s.id))})]})}const R=o.forwardRef(function({data:p,selectedIds:u,defaultSelectedIds:v=[],expandedIds:r,defaultExpandedIds:_=[],onSelectionChange:f,onExpansionChange:h,onNodeClick:y,multiSelect:k=!1,size:x="md",showLines:z=!1,renderNode:l,"aria-label":S="Tree",className:D,testId:I},C){const[K,s]=o.useState(v),[V,L]=o.useState(_),d=u!==void 0?u:K,m=r!==void 0?r:V,M=O[x],n=o.useMemo(()=>{const i=(c,t=[])=>(c.forEach(b=>{t.push(b),b.children&&m.includes(b.id)&&i(b.children,t)}),t);return i(p)},[p,m]),Y=o.useCallback(i=>{const c=m.includes(i)?m.filter(t=>t!==i):[...m,i];r===void 0&&L(c),h?.(c)},[m,r,h]),w=o.useCallback((i,c)=>{const t=n.find(q=>q.id===i);t&&y?.(t);let b;k&&c?b=d.includes(i)?d.filter(q=>q!==i):[...d,i]:b=d.includes(i)&&d.length===1?[]:[i],u===void 0&&s(b),f?.(b)},[n,k,d,u,f,y]),$=o.useCallback(i=>{const c=n.findIndex(t=>d.includes(t.id));switch(i.key){case"ArrowDown":{i.preventDefault();const t=c<n.length-1?c+1:0;w(n[t].id,!1);break}case"ArrowUp":{i.preventDefault();const t=c>0?c-1:n.length-1;w(n[t].id,!1);break}case"Home":i.preventDefault(),n.length>0&&w(n[0].id,!1);break;case"End":i.preventDefault(),n.length>0&&w(n[n.length-1].id,!1);break}},[n,d,w]);return a.jsx("ul",{ref:C,role:"tree","aria-label":S,"aria-multiselectable":k,tabIndex:0,className:T.cx("brycks-treeview",`brycks-treeview--${x}`,D),"data-testid":I,onKeyDown:$,children:p.map(i=>a.jsx(A,{node:i,level:0,config:M,isSelected:d.includes(i.id),isExpanded:m.includes(i.id),showLines:z,onToggle:Y,onSelect:w,renderNode:l,selectedIds:d,expandedIds:m,multiSelect:k},i.id))})});R.displayName="TreeView";exports.TreeView=R;
|
|
2
2
|
//# sourceMappingURL=TreeView.cjs.map
|