@epilot/volt-ui-experimental-griffel 0.2.3 → 0.3.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/ADOPTING.md +416 -0
- package/README.md +32 -31
- package/dist/components/alert-dialog/alert-dialog.js +61 -59
- package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/components/avatar/avatar.js +6 -6
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/badge/badge.js +47 -39
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/button/button.js +71 -68
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/checkbox/checkbox.js +23 -20
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/command/command.js +50 -35
- package/dist/components/command/command.js.map +1 -1
- package/dist/components/data-table/data-table.js +89 -88
- package/dist/components/data-table/data-table.js.map +1 -1
- package/dist/components/density-provider/density-provider.js +28 -0
- package/dist/components/density-provider/density-provider.js.map +1 -0
- package/dist/components/dialog/dialog.js +122 -100
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/drawer/drawer.js +61 -59
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.js +88 -85
- package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/components/field/field-combobox.js +121 -106
- package/dist/components/field/field-combobox.js.map +1 -1
- package/dist/components/field/field.js +105 -104
- package/dist/components/field/field.js.map +1 -1
- package/dist/components/list/list.js +282 -308
- package/dist/components/list/list.js.map +1 -1
- package/dist/components/pill/pill.js +58 -56
- package/dist/components/pill/pill.js.map +1 -1
- package/dist/components/popover/popover.js +47 -38
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/radio/radio.js +21 -18
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/select/select.js +185 -156
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/skeleton/skeleton.js +2 -2
- package/dist/components/skeleton/skeleton.js.map +1 -1
- package/dist/components/switch/switch.js +34 -29
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/table/table-pagination.js +92 -90
- package/dist/components/table/table-pagination.js.map +1 -1
- package/dist/components/table/table.js +109 -121
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/toggle/toggle.js +29 -29
- package/dist/components/toggle/toggle.js.map +1 -1
- package/dist/components/tooltip/tooltip.js +36 -34
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/index.d.ts +600 -427
- package/dist/index.js +215 -212
- package/dist/index.js.map +1 -1
- package/dist/packages/volt-runtime/dist/sheet.js +27 -10
- package/dist/packages/volt-runtime/dist/sheet.js.map +1 -1
- package/dist/packages/volt-runtime/dist/styles/recipe.js +76 -0
- package/dist/packages/volt-runtime/dist/styles/recipe.js.map +1 -0
- package/dist/styles/document-context.js +12 -0
- package/dist/styles/document-context.js.map +1 -0
- package/dist/styles/make-styles.js +18 -10
- package/dist/styles/make-styles.js.map +1 -1
- package/dist/tokens/core.generated.js +1238 -1166
- package/dist/tokens/core.generated.js.map +1 -1
- package/dist/tokens/index.d.ts +442 -415
- package/dist/tokens/index.js +1105 -1078
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/install.js +9 -5
- package/dist/tokens/install.js.map +1 -1
- package/dist/tokens/use-palette-tokens.js +20 -0
- package/dist/tokens/use-palette-tokens.js.map +1 -0
- package/dist/tokens.json +83 -2
- package/package.json +13 -5
- package/scripts/migration-diagnostics-core.mjs +859 -0
- package/scripts/migration-diagnostics.mjs +353 -0
- package/scripts/migration-sweep.mjs +179 -0
- package/AGENTS.md +0 -153
- package/AUTHORING.md +0 -292
- package/dist/packages/volt-runtime/dist/styles/make-styles.js +0 -22
- package/dist/packages/volt-runtime/dist/styles/make-styles.js.map +0 -1
|
@@ -1,60 +1,64 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import * as
|
|
3
|
-
import { shorthands as
|
|
1
|
+
import { jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import * as i from "react";
|
|
3
|
+
import { shorthands as g } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/index.js";
|
|
4
4
|
import { SLOT_ATTR as c } from "../../packages/volt-runtime/dist/renderer/contract.js";
|
|
5
|
-
import { mergeClasses as
|
|
6
|
-
import { makeVoltStyles as
|
|
7
|
-
import { grayA5 as
|
|
8
|
-
|
|
5
|
+
import { mergeClasses as d } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/mergeClasses.js";
|
|
6
|
+
import { makeVoltStyles as A } from "../../styles/make-styles.js";
|
|
7
|
+
import { grayA5 as u, spacingGroup2 as w, grayA11 as B, leadingSm as x, textSm as R, grayA12 as C, fontWeightNormal as H, tableCellPaddingY as N, spacingElement3 as m, fontWeightMedium as v, tableHeadHeight as S, accentA3 as k, semGraySoft as W } from "../../tokens/index.js";
|
|
8
|
+
import { canonicalDensity as T, DensityContextBoundary as y } from "../density-provider/density-provider.js";
|
|
9
|
+
const j = i.createContext("normal"), s = A({
|
|
9
10
|
wrapper: {
|
|
10
11
|
position: "relative",
|
|
11
12
|
width: "100%",
|
|
12
|
-
...
|
|
13
|
+
...g.overflow("auto")
|
|
13
14
|
},
|
|
14
15
|
root: {
|
|
15
16
|
width: "100%",
|
|
16
|
-
fontSize:
|
|
17
|
-
lineHeight:
|
|
17
|
+
fontSize: R,
|
|
18
|
+
lineHeight: x
|
|
18
19
|
},
|
|
19
20
|
header: {
|
|
20
21
|
"& tr": {
|
|
21
|
-
...
|
|
22
|
+
...g.borderBottom("1px", "solid", u)
|
|
22
23
|
}
|
|
23
24
|
},
|
|
24
25
|
body: {
|
|
25
26
|
"& tr:last-child": {
|
|
26
|
-
...
|
|
27
|
+
...g.borderWidth(0)
|
|
27
28
|
}
|
|
28
29
|
},
|
|
29
30
|
footer: {
|
|
30
|
-
...
|
|
31
|
-
backgroundColor:
|
|
32
|
-
fontWeight:
|
|
31
|
+
...g.borderTop("1px", "solid", u),
|
|
32
|
+
backgroundColor: W,
|
|
33
|
+
fontWeight: v,
|
|
33
34
|
"& > tr:last-child": {
|
|
34
35
|
borderBottomWidth: 0
|
|
35
36
|
}
|
|
36
37
|
},
|
|
37
38
|
row: {
|
|
38
|
-
...
|
|
39
|
+
...g.borderBottom("1px", "solid", u),
|
|
39
40
|
transitionProperty: "color, background-color, border-color, text-decoration-color, fill, stroke",
|
|
40
41
|
transitionDuration: "150ms",
|
|
41
42
|
transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
42
43
|
"&[data-state='selected']": {
|
|
43
|
-
backgroundColor:
|
|
44
|
+
backgroundColor: k
|
|
44
45
|
}
|
|
45
46
|
},
|
|
46
47
|
rowHover: {
|
|
47
48
|
":hover": {
|
|
48
|
-
backgroundColor:
|
|
49
|
+
backgroundColor: k
|
|
49
50
|
}
|
|
50
51
|
},
|
|
51
52
|
head: {
|
|
52
53
|
// px-3
|
|
53
|
-
paddingLeft:
|
|
54
|
-
paddingRight:
|
|
54
|
+
paddingLeft: m,
|
|
55
|
+
paddingRight: m,
|
|
56
|
+
// Density-bound (TABLE-DENSITY-IMPLEMENTATION.md): cascades from the nearest [data-density]
|
|
57
|
+
// ancestor — 32/36/40px for compact/normal/comfortable. No JS density switch needed.
|
|
58
|
+
height: S,
|
|
55
59
|
verticalAlign: "middle",
|
|
56
|
-
fontWeight:
|
|
57
|
-
color:
|
|
60
|
+
fontWeight: v,
|
|
61
|
+
color: C,
|
|
58
62
|
"&:has([role='checkbox'])": {
|
|
59
63
|
paddingRight: 0
|
|
60
64
|
},
|
|
@@ -63,16 +67,6 @@ const x = n.createContext("normal"), d = S({
|
|
|
63
67
|
translate: "0 2px"
|
|
64
68
|
}
|
|
65
69
|
},
|
|
66
|
-
// h-8 / h-9 / h-10
|
|
67
|
-
headCompact: {
|
|
68
|
-
height: W
|
|
69
|
-
},
|
|
70
|
-
headNormal: {
|
|
71
|
-
height: "2.25rem"
|
|
72
|
-
},
|
|
73
|
-
headComfortable: {
|
|
74
|
-
height: "2.5rem"
|
|
75
|
-
},
|
|
76
70
|
alignLeft: {
|
|
77
71
|
textAlign: "left"
|
|
78
72
|
},
|
|
@@ -84,11 +78,15 @@ const x = n.createContext("normal"), d = S({
|
|
|
84
78
|
},
|
|
85
79
|
cell: {
|
|
86
80
|
// px-3
|
|
87
|
-
paddingLeft:
|
|
88
|
-
paddingRight:
|
|
81
|
+
paddingLeft: m,
|
|
82
|
+
paddingRight: m,
|
|
83
|
+
// Density-bound (TABLE-DENSITY-IMPLEMENTATION.md): cascades from the nearest [data-density]
|
|
84
|
+
// ancestor — 6/8/12px for compact/normal/comfortable. No JS density switch needed.
|
|
85
|
+
paddingTop: N,
|
|
86
|
+
paddingBottom: N,
|
|
89
87
|
verticalAlign: "middle",
|
|
90
|
-
fontWeight:
|
|
91
|
-
color:
|
|
88
|
+
fontWeight: H,
|
|
89
|
+
color: C,
|
|
92
90
|
"&:has([role='checkbox'])": {
|
|
93
91
|
paddingRight: 0
|
|
94
92
|
},
|
|
@@ -97,26 +95,13 @@ const x = n.createContext("normal"), d = S({
|
|
|
97
95
|
translate: "0 2px"
|
|
98
96
|
}
|
|
99
97
|
},
|
|
100
|
-
// py-1.5 / py-2 / py-3
|
|
101
|
-
cellCompact: {
|
|
102
|
-
paddingTop: "0.375rem",
|
|
103
|
-
paddingBottom: "0.375rem"
|
|
104
|
-
},
|
|
105
|
-
cellNormal: {
|
|
106
|
-
paddingTop: v,
|
|
107
|
-
paddingBottom: v
|
|
108
|
-
},
|
|
109
|
-
cellComfortable: {
|
|
110
|
-
paddingTop: g,
|
|
111
|
-
paddingBottom: g
|
|
112
|
-
},
|
|
113
98
|
cellNumeric: {
|
|
114
99
|
fontVariantNumeric: "tabular-nums"
|
|
115
100
|
},
|
|
116
101
|
caption: {
|
|
117
|
-
fontSize:
|
|
118
|
-
lineHeight:
|
|
119
|
-
color:
|
|
102
|
+
fontSize: R,
|
|
103
|
+
lineHeight: x,
|
|
104
|
+
color: B
|
|
120
105
|
},
|
|
121
106
|
captionTop: {
|
|
122
107
|
captionSide: "top",
|
|
@@ -128,137 +113,140 @@ const x = n.createContext("normal"), d = S({
|
|
|
128
113
|
// mt-4
|
|
129
114
|
marginTop: w
|
|
130
115
|
}
|
|
131
|
-
}),
|
|
132
|
-
function({ className:
|
|
133
|
-
const
|
|
134
|
-
return /* @__PURE__ */
|
|
116
|
+
}), E = i.forwardRef(
|
|
117
|
+
function({ className: a, density: t, children: o, ...e }, r) {
|
|
118
|
+
const f = s();
|
|
119
|
+
return /* @__PURE__ */ l("div", { className: f.wrapper, children: /* @__PURE__ */ l(
|
|
135
120
|
"table",
|
|
136
121
|
{
|
|
137
122
|
ref: r,
|
|
138
123
|
"data-slot": "table",
|
|
139
124
|
[c]: "table",
|
|
140
|
-
className:
|
|
141
|
-
...
|
|
125
|
+
className: d(f.root, a),
|
|
126
|
+
...e,
|
|
127
|
+
...t !== void 0 ? { "data-density": T(t) } : {},
|
|
128
|
+
children: /* @__PURE__ */ l(y, { density: t, children: o })
|
|
142
129
|
}
|
|
143
|
-
) })
|
|
130
|
+
) });
|
|
144
131
|
}
|
|
145
|
-
), M =
|
|
146
|
-
const
|
|
147
|
-
return /* @__PURE__ */
|
|
132
|
+
), M = i.forwardRef(function({ className: a, ...t }, o) {
|
|
133
|
+
const e = s();
|
|
134
|
+
return /* @__PURE__ */ l(
|
|
148
135
|
"thead",
|
|
149
136
|
{
|
|
150
|
-
ref:
|
|
137
|
+
ref: o,
|
|
151
138
|
"data-slot": "table-header",
|
|
152
139
|
[c]: "table-header",
|
|
153
|
-
className:
|
|
140
|
+
className: d(e.header, a),
|
|
154
141
|
...t
|
|
155
142
|
}
|
|
156
143
|
);
|
|
157
|
-
}), O =
|
|
158
|
-
const
|
|
159
|
-
return /* @__PURE__ */
|
|
144
|
+
}), O = i.forwardRef(function({ className: a, ...t }, o) {
|
|
145
|
+
const e = s();
|
|
146
|
+
return /* @__PURE__ */ l(
|
|
160
147
|
"tbody",
|
|
161
148
|
{
|
|
162
|
-
ref:
|
|
149
|
+
ref: o,
|
|
163
150
|
"data-slot": "table-body",
|
|
164
151
|
[c]: "table-body",
|
|
165
|
-
className:
|
|
152
|
+
className: d(e.body, a),
|
|
166
153
|
...t
|
|
167
154
|
}
|
|
168
155
|
);
|
|
169
|
-
}), Q =
|
|
170
|
-
const
|
|
171
|
-
return /* @__PURE__ */
|
|
156
|
+
}), Q = i.forwardRef(function({ className: a, ...t }, o) {
|
|
157
|
+
const e = s();
|
|
158
|
+
return /* @__PURE__ */ l(
|
|
172
159
|
"tfoot",
|
|
173
160
|
{
|
|
174
|
-
ref:
|
|
161
|
+
ref: o,
|
|
175
162
|
"data-slot": "table-footer",
|
|
176
163
|
[c]: "table-footer",
|
|
177
|
-
className:
|
|
164
|
+
className: d(e.footer, a),
|
|
178
165
|
...t
|
|
179
166
|
}
|
|
180
167
|
);
|
|
181
|
-
}),
|
|
182
|
-
function({ className:
|
|
183
|
-
const
|
|
184
|
-
return /* @__PURE__ */
|
|
168
|
+
}), Y = i.forwardRef(
|
|
169
|
+
function({ className: a, noHover: t, ...o }, e) {
|
|
170
|
+
const r = s();
|
|
171
|
+
return /* @__PURE__ */ l(
|
|
185
172
|
"tr",
|
|
186
173
|
{
|
|
187
|
-
ref:
|
|
174
|
+
ref: e,
|
|
188
175
|
"data-slot": "table-row",
|
|
189
176
|
[c]: "table-row",
|
|
190
|
-
className:
|
|
191
|
-
|
|
192
|
-
!t &&
|
|
193
|
-
|
|
177
|
+
className: d(
|
|
178
|
+
r.row,
|
|
179
|
+
!t && r.rowHover,
|
|
180
|
+
a
|
|
194
181
|
),
|
|
195
|
-
...
|
|
182
|
+
...o
|
|
196
183
|
}
|
|
197
184
|
);
|
|
198
185
|
}
|
|
199
|
-
),
|
|
200
|
-
function({ className:
|
|
201
|
-
const
|
|
202
|
-
return /* @__PURE__ */
|
|
186
|
+
), _ = i.forwardRef(
|
|
187
|
+
function({ className: a, align: t = "left", density: o, scope: e = "col", children: r, ...f }, p) {
|
|
188
|
+
const n = s(), h = t === "center" ? n.alignCenter : t === "right" ? n.alignRight : n.alignLeft;
|
|
189
|
+
return /* @__PURE__ */ l(
|
|
203
190
|
"th",
|
|
204
191
|
{
|
|
205
|
-
ref:
|
|
192
|
+
ref: p,
|
|
206
193
|
"data-slot": "table-head",
|
|
207
194
|
[c]: "table-head",
|
|
208
|
-
scope:
|
|
209
|
-
className:
|
|
210
|
-
...
|
|
211
|
-
|
|
195
|
+
scope: e,
|
|
196
|
+
className: d(n.head, h, a),
|
|
197
|
+
...f,
|
|
198
|
+
...o !== void 0 ? { "data-density": T(o) } : {},
|
|
199
|
+
children: /* @__PURE__ */ l(y, { density: o, children: r })
|
|
212
200
|
}
|
|
213
201
|
);
|
|
214
202
|
}
|
|
215
|
-
),
|
|
216
|
-
function({ className:
|
|
217
|
-
const
|
|
218
|
-
return /* @__PURE__ */
|
|
203
|
+
), q = i.forwardRef(
|
|
204
|
+
function({ className: a, align: t = "left", numeric: o, density: e, children: r, ...f }, p) {
|
|
205
|
+
const n = s(), h = t === "center" ? n.alignCenter : t === "right" ? n.alignRight : n.alignLeft;
|
|
206
|
+
return /* @__PURE__ */ l(
|
|
219
207
|
"td",
|
|
220
208
|
{
|
|
221
|
-
ref:
|
|
209
|
+
ref: p,
|
|
222
210
|
"data-slot": "table-cell",
|
|
223
211
|
[c]: "table-cell",
|
|
224
|
-
className:
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
a
|
|
229
|
-
o
|
|
212
|
+
className: d(
|
|
213
|
+
n.cell,
|
|
214
|
+
h,
|
|
215
|
+
o && n.cellNumeric,
|
|
216
|
+
a
|
|
230
217
|
),
|
|
231
|
-
...
|
|
232
|
-
|
|
218
|
+
...f,
|
|
219
|
+
...e !== void 0 ? { "data-density": T(e) } : {},
|
|
220
|
+
children: /* @__PURE__ */ l(y, { density: e, children: r })
|
|
233
221
|
}
|
|
234
222
|
);
|
|
235
223
|
}
|
|
236
|
-
),
|
|
237
|
-
const
|
|
238
|
-
return /* @__PURE__ */
|
|
224
|
+
), I = i.forwardRef(function({ className: a, position: t = "bottom", ...o }, e) {
|
|
225
|
+
const r = s();
|
|
226
|
+
return /* @__PURE__ */ l(
|
|
239
227
|
"caption",
|
|
240
228
|
{
|
|
241
|
-
ref:
|
|
229
|
+
ref: e,
|
|
242
230
|
"data-slot": "table-caption",
|
|
243
231
|
[c]: "table-caption",
|
|
244
|
-
className:
|
|
245
|
-
|
|
246
|
-
t === "top" ?
|
|
247
|
-
|
|
232
|
+
className: d(
|
|
233
|
+
r.caption,
|
|
234
|
+
t === "top" ? r.captionTop : r.captionBottom,
|
|
235
|
+
a
|
|
248
236
|
),
|
|
249
|
-
...
|
|
237
|
+
...o
|
|
250
238
|
}
|
|
251
239
|
);
|
|
252
240
|
});
|
|
253
241
|
export {
|
|
254
|
-
|
|
242
|
+
E as Table,
|
|
255
243
|
O as TableBody,
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
244
|
+
I as TableCaption,
|
|
245
|
+
q as TableCell,
|
|
246
|
+
j as TableDensityContext,
|
|
259
247
|
Q as TableFooter,
|
|
260
|
-
|
|
248
|
+
_ as TableHead,
|
|
261
249
|
M as TableHeader,
|
|
262
|
-
|
|
250
|
+
Y as TableRow
|
|
263
251
|
};
|
|
264
252
|
//# sourceMappingURL=table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../../src/components/table/table.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { mergeClasses, shorthands } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\n\n/**\n * Table — the primitive set (Table, TableHeader, TableBody, TableFooter, TableRow, TableHead,\n * TableCell, TableCaption) in Card's compound pattern: one `makeVoltStyles` call, one slot per\n * sub-component, each reading its own slot.\n *\n * v1 ships a density dimension through React context, defaulting to `normal`; TableHead and\n * TableCell each resolve `effectiveDensity = density ?? contextDensity`, and that drives a height\n * (head) or a vertical padding (cell) slot. Selectors carry over untouched where they do not\n * involve `data-slot`: `[&_tr]:border-b`, `[&_tr:last-child]:border-0`,\n * `data-[state=selected]:bg-accent-a3` (Radix selection state) and the `role=\"checkbox\"`\n * column-reflow rules all obey the original attribute.\n *\n * Values explicit where no token exists: `px-3` (0.75rem) on head/cell, the `h-9` / `h-10`\n * heights (2.25rem / 2.5rem), `py-1.5` (0.375rem) and `py-3` (0.75rem) cell paddings. The row's\n * `transition-colors` expands to Tailwind v4's default property list plus the 150ms\n * `cubic-bezier(0.4, 0, 0.2, 1)` easing — visible motion from the framework's default theme,\n * which the v1 file does not state (Rule 0: flagged, not approximated away). The checkbox\n * `translate-y-[2px]` maps to the modern `translate` property, which is what Tailwind v4 emits.\n */\n\nexport type TableDensity = \"compact\" | \"normal\" | \"comfortable\"\n\nconst TableDensityContext = React.createContext<TableDensity>(\"normal\")\n\nconst useStyles = makeVoltStyles({\n wrapper: {\n position: \"relative\",\n width: \"100%\",\n ...shorthands.overflow(\"auto\"),\n },\n root: {\n width: \"100%\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n header: {\n \"& tr\": {\n ...shorthands.borderBottom(\"1px\", \"solid\", tokens.grayA5),\n },\n },\n body: {\n \"& tr:last-child\": {\n ...shorthands.borderWidth(0),\n },\n },\n footer: {\n ...shorthands.borderTop(\"1px\", \"solid\", tokens.grayA5),\n backgroundColor: tokens.semGraySoft,\n fontWeight: tokens.fontWeightMedium,\n \"& > tr:last-child\": {\n borderBottomWidth: 0,\n },\n },\n row: {\n ...shorthands.borderBottom(\"1px\", \"solid\", tokens.grayA5),\n transitionProperty:\n \"color, background-color, border-color, text-decoration-color, fill, stroke\",\n transitionDuration: \"150ms\",\n transitionTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n \"&[data-state='selected']\": {\n backgroundColor: tokens.accentA3,\n },\n },\n rowHover: {\n \":hover\": {\n backgroundColor: tokens.accentA3,\n },\n },\n head: {\n // px-3\n paddingLeft: tokens.spacingElement3,\n paddingRight: tokens.spacingElement3,\n verticalAlign: \"middle\",\n fontWeight: tokens.fontWeightMedium,\n color: tokens.grayA12,\n \"&:has([role='checkbox'])\": {\n paddingRight: 0,\n },\n \"& > [role='checkbox']\": {\n // v1 `translate-y-[2px]`.\n translate: \"0 2px\",\n },\n },\n // h-8 / h-9 / h-10\n headCompact: {\n height: tokens.spacingLayout2,\n },\n headNormal: {\n height: \"2.25rem\",\n },\n headComfortable: {\n height: \"2.5rem\",\n },\n alignLeft: {\n textAlign: \"left\",\n },\n alignCenter: {\n textAlign: \"center\",\n },\n alignRight: {\n textAlign: \"right\",\n },\n cell: {\n // px-3\n paddingLeft: tokens.spacingElement3,\n paddingRight: tokens.spacingElement3,\n verticalAlign: \"middle\",\n fontWeight: tokens.fontWeightNormal,\n color: tokens.grayA12,\n \"&:has([role='checkbox'])\": {\n paddingRight: 0,\n },\n \"& > [role='checkbox']\": {\n // v1 `translate-y-[2px]`.\n translate: \"0 2px\",\n },\n },\n // py-1.5 / py-2 / py-3\n cellCompact: {\n paddingTop: \"0.375rem\",\n paddingBottom: \"0.375rem\",\n },\n cellNormal: {\n paddingTop: tokens.spacingElement2,\n paddingBottom: tokens.spacingElement2,\n },\n cellComfortable: {\n paddingTop: tokens.spacingElement3,\n paddingBottom: tokens.spacingElement3,\n },\n cellNumeric: {\n fontVariantNumeric: \"tabular-nums\",\n },\n caption: {\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA11,\n },\n captionTop: {\n captionSide: \"top\",\n // mb-4\n marginBottom: tokens.spacingGroup2,\n },\n captionBottom: {\n captionSide: \"bottom\",\n // mt-4\n marginTop: tokens.spacingGroup2,\n },\n})\n\nexport type TableProps = React.ComponentProps<\"table\"> & {\n density?: TableDensity\n}\n\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n function Table({ className, density = \"normal\", ...props }, ref) {\n const styles = useStyles()\n\n return (\n <TableDensityContext.Provider value={density}>\n <div className={styles.wrapper}>\n <table\n ref={ref}\n data-slot=\"table\"\n {...{ [SLOT_ATTR]: \"table\" }}\n className={mergeClasses(styles.root, className)}\n {...props}\n />\n </div>\n </TableDensityContext.Provider>\n )\n }\n)\n\nexport const TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"thead\">\n>(function TableHeader({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <thead\n ref={ref}\n data-slot=\"table-header\"\n {...{ [SLOT_ATTR]: \"table-header\" }}\n className={mergeClasses(styles.header, className)}\n {...props}\n />\n )\n})\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"tbody\">\n>(function TableBody({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <tbody\n ref={ref}\n data-slot=\"table-body\"\n {...{ [SLOT_ATTR]: \"table-body\" }}\n className={mergeClasses(styles.body, className)}\n {...props}\n />\n )\n})\n\nexport const TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"tfoot\">\n>(function TableFooter({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <tfoot\n ref={ref}\n data-slot=\"table-footer\"\n {...{ [SLOT_ATTR]: \"table-footer\" }}\n className={mergeClasses(styles.footer, className)}\n {...props}\n />\n )\n})\n\nexport type TableRowProps = React.ComponentProps<\"tr\"> & {\n /** Disable hover background effect */\n noHover?: boolean\n}\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n function TableRow({ className, noHover, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <tr\n ref={ref}\n data-slot=\"table-row\"\n {...{ [SLOT_ATTR]: \"table-row\" }}\n className={mergeClasses(\n styles.row,\n !noHover && styles.rowHover,\n className\n )}\n {...props}\n />\n )\n }\n)\n\nexport type TableHeadProps = React.ComponentProps<\"th\"> & {\n align?: \"left\" | \"center\" | \"right\"\n density?: TableDensity\n}\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n function TableHead(\n { className, align = \"left\", density, scope = \"col\", children, ...props },\n ref\n ) {\n const contextDensity = React.useContext(TableDensityContext)\n const effectiveDensity = density ?? contextDensity\n const styles = useStyles()\n\n const height =\n effectiveDensity === \"compact\"\n ? styles.headCompact\n : effectiveDensity === \"normal\"\n ? styles.headNormal\n : styles.headComfortable\n const alignment =\n align === \"center\"\n ? styles.alignCenter\n : align === \"right\"\n ? styles.alignRight\n : styles.alignLeft\n\n return (\n <th\n ref={ref}\n data-slot=\"table-head\"\n {...{ [SLOT_ATTR]: \"table-head\" }}\n scope={scope}\n className={mergeClasses(styles.head, height, alignment, className)}\n {...props}\n >\n {children}\n </th>\n )\n }\n)\n\nexport type TableCellProps = React.ComponentProps<\"td\"> & {\n align?: \"left\" | \"center\" | \"right\"\n numeric?: boolean\n density?: TableDensity\n}\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n function TableCell(\n { className, align = \"left\", numeric, density, children, ...props },\n ref\n ) {\n const contextDensity = React.useContext(TableDensityContext)\n const effectiveDensity = density ?? contextDensity\n const styles = useStyles()\n\n const height =\n effectiveDensity === \"compact\"\n ? styles.cellCompact\n : effectiveDensity === \"normal\"\n ? styles.cellNormal\n : styles.cellComfortable\n const alignment =\n align === \"center\"\n ? styles.alignCenter\n : align === \"right\"\n ? styles.alignRight\n : styles.alignLeft\n\n return (\n <td\n ref={ref}\n data-slot=\"table-cell\"\n {...{ [SLOT_ATTR]: \"table-cell\" }}\n className={mergeClasses(\n styles.cell,\n height,\n alignment,\n numeric && styles.cellNumeric,\n className\n )}\n {...props}\n >\n {children}\n </td>\n )\n }\n)\n\nexport type TableCaptionProps = React.ComponentProps<\"caption\"> & {\n position?: \"top\" | \"bottom\"\n}\n\nexport const TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n TableCaptionProps\n>(function TableCaption({ className, position = \"bottom\", ...props }, ref) {\n const styles = useStyles()\n\n return (\n <caption\n ref={ref}\n data-slot=\"table-caption\"\n {...{ [SLOT_ATTR]: \"table-caption\" }}\n className={mergeClasses(\n styles.caption,\n position === \"top\" ? styles.captionTop : styles.captionBottom,\n className\n )}\n {...props}\n />\n )\n})\n\nexport { TableDensityContext }\n"],"names":["TableDensityContext","React","useStyles","makeVoltStyles","shorthands","tokens.textSm","tokens.leadingSm","tokens.grayA5","tokens.semGraySoft","tokens.fontWeightMedium","tokens.accentA3","tokens.spacingElement3","tokens.grayA12","tokens.spacingLayout2","tokens.fontWeightNormal","tokens.spacingElement2","tokens.grayA11","tokens.spacingGroup2","Table","className","density","props","ref","styles","jsx","SLOT_ATTR","mergeClasses","TableHeader","TableBody","TableFooter","TableRow","noHover","TableHead","align","scope","children","contextDensity","effectiveDensity","height","alignment","TableCell","numeric","TableCaption","position"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.js","sources":["../../../src/components/table/table.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { mergeClasses, shorthands } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\nimport {\n canonicalDensity,\n DensityContextBoundary,\n} from \"../density-provider/density-provider\"\n\n/**\n * Table — the primitive set (Table, TableHeader, TableBody, TableFooter, TableRow, TableHead,\n * TableCell, TableCaption) in Card's compound pattern: one `makeVoltStyles` call, one slot per\n * sub-component, each reading its own slot.\n *\n * Density (approved 2026-09-09, TABLE-DENSITY-IMPLEMENTATION.md — replaces the earlier\n * context-only mechanism described by `TABLE-LIST-DENSITY-COMPATIBILITY-NOTE.md`, now resolved;\n * corrected 2026-09-09 per TABLE-DENSITY-REVIEW-1.md, see the two notes below):\n * `TableHead`/`TableCell` read `tokens.tableHeadHeight`/`tokens.tableCellPaddingY` directly —\n * generated CSS custom properties that cascade from the nearest `[data-density]` ancestor, exactly\n * like Button/Field/Select. `Table`'s own `density` prop, when explicit, stamps `data-density` on\n * the `<table>` element itself; when omitted, no attribute is stamped and ambient shell density\n * (or an outer `DensityProvider`) inherits through ordinary DOM/CSS with no React involvement — a\n * shell attribute mutation restyles an already-mounted table without a rerender. Per-cell\n * `TableHead`/`TableCell` `density` props stamp their own `data-density` the same way, overriding\n * locally. `TableDensityContext` (below) is a deprecated, now-inert compatibility export — see its\n * own doc comment.\n *\n * Two corrections (TABLE-DENSITY-REVIEW-1.md), both applied identically to `Table`, `DataTable`\n * (`data-table.tsx`), `TableHead` and `TableCell`:\n *\n * 1. An explicit `density` establishes a `DensityContextBoundary`, not just a DOM stamp. A DOM\n * attribute alone reaches ordinary CSS-inheriting descendants, but a Radix `Portal` (a real\n * `Select`/`Popover`/etc. rendered inside a cell) is a DOM sibling, not descendant, of that cell\n * — its own `useDensity()` read needs the REACT context updated too, or it silently reports a\n * stale ancestor value instead of the cell's own override.\n * 2. The DOM stamp and the context value both run through the SAME `canonicalDensity` function\n * (from `density-provider.tsx`, package-internal). Before this fix, `DensityContextBoundary`\n * normalized invalid runtime input (e.g. a bad string bypassing TypeScript) for the context, but\n * the DOM attribute was written raw/unnormalized — an invalid value could stamp `data-density`\n * with something no generated CSS selector matches while `useDensity()` reported the normalized\n * `\"normal\"`, disagreeing about what density is actually in effect.\n *\n * Selectors carry over untouched where they do not involve `data-slot`: `[&_tr]:border-b`,\n * `[&_tr:last-child]:border-0`, `data-[state=selected]:bg-accent-a3` (Radix selection state) and\n * the `role=\"checkbox\"` column-reflow rules all obey the original attribute.\n *\n * Values explicit where no token exists: `px-3` (0.75rem) on head/cell. The row's\n * `transition-colors` expands to Tailwind v4's default property list plus the 150ms\n * `cubic-bezier(0.4, 0, 0.2, 1)` easing — visible motion from the framework's default theme,\n * which the v1 file does not state (Rule 0: flagged, not approximated away). The checkbox\n * `translate-y-[2px]` maps to the modern `translate` property, which is what Tailwind v4 emits.\n */\n\nexport type TableDensity = \"compact\" | \"normal\" | \"comfortable\"\n\n/**\n * @deprecated No longer a supported way to control Table/DataTable geometry (approved 2026-09-09,\n * TABLE-DENSITY-IMPLEMENTATION.md). `Table`/`DataTable` no longer provide a value into this\n * context, and `TableHead`/`TableCell` no longer read it — density now flows entirely through CSS\n * custom-property inheritance from the nearest `[data-density]` ancestor (ambient shell or\n * `DensityProvider`), plus each component's own `density` prop stamping its own `data-density`\n * when explicit. This context simply no longer controls or reports Table/DataTable geometry —\n * `useContext(TableDensityContext)` still returns whatever a consumer's own raw\n * `TableDensityContext.Provider` sets (or the bare `\"normal\"` default with no such Provider), it\n * just has no bearing on what actually renders any more. Kept only so existing\n * `import { TableDensityContext }` statements and `useContext(TableDensityContext)` call sites do\n * not hard-error. Use the `density` prop on `Table`/`DataTable`/`TableHead`/`TableCell`, or wrap a\n * subtree in `DensityProvider`, instead. This is a disclosed behavioural change; the context's own\n * type and default value are unchanged.\n */\nconst TableDensityContext = React.createContext<TableDensity>(\"normal\")\n\nconst useStyles = makeVoltStyles({\n wrapper: {\n position: \"relative\",\n width: \"100%\",\n ...shorthands.overflow(\"auto\"),\n },\n root: {\n width: \"100%\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n header: {\n \"& tr\": {\n ...shorthands.borderBottom(\"1px\", \"solid\", tokens.grayA5),\n },\n },\n body: {\n \"& tr:last-child\": {\n ...shorthands.borderWidth(0),\n },\n },\n footer: {\n ...shorthands.borderTop(\"1px\", \"solid\", tokens.grayA5),\n backgroundColor: tokens.semGraySoft,\n fontWeight: tokens.fontWeightMedium,\n \"& > tr:last-child\": {\n borderBottomWidth: 0,\n },\n },\n row: {\n ...shorthands.borderBottom(\"1px\", \"solid\", tokens.grayA5),\n transitionProperty:\n \"color, background-color, border-color, text-decoration-color, fill, stroke\",\n transitionDuration: \"150ms\",\n transitionTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n \"&[data-state='selected']\": {\n backgroundColor: tokens.accentA3,\n },\n },\n rowHover: {\n \":hover\": {\n backgroundColor: tokens.accentA3,\n },\n },\n head: {\n // px-3\n paddingLeft: tokens.spacingElement3,\n paddingRight: tokens.spacingElement3,\n // Density-bound (TABLE-DENSITY-IMPLEMENTATION.md): cascades from the nearest [data-density]\n // ancestor — 32/36/40px for compact/normal/comfortable. No JS density switch needed.\n height: tokens.tableHeadHeight,\n verticalAlign: \"middle\",\n fontWeight: tokens.fontWeightMedium,\n color: tokens.grayA12,\n \"&:has([role='checkbox'])\": {\n paddingRight: 0,\n },\n \"& > [role='checkbox']\": {\n // v1 `translate-y-[2px]`.\n translate: \"0 2px\",\n },\n },\n alignLeft: {\n textAlign: \"left\",\n },\n alignCenter: {\n textAlign: \"center\",\n },\n alignRight: {\n textAlign: \"right\",\n },\n cell: {\n // px-3\n paddingLeft: tokens.spacingElement3,\n paddingRight: tokens.spacingElement3,\n // Density-bound (TABLE-DENSITY-IMPLEMENTATION.md): cascades from the nearest [data-density]\n // ancestor — 6/8/12px for compact/normal/comfortable. No JS density switch needed.\n paddingTop: tokens.tableCellPaddingY,\n paddingBottom: tokens.tableCellPaddingY,\n verticalAlign: \"middle\",\n fontWeight: tokens.fontWeightNormal,\n color: tokens.grayA12,\n \"&:has([role='checkbox'])\": {\n paddingRight: 0,\n },\n \"& > [role='checkbox']\": {\n // v1 `translate-y-[2px]`.\n translate: \"0 2px\",\n },\n },\n cellNumeric: {\n fontVariantNumeric: \"tabular-nums\",\n },\n caption: {\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA11,\n },\n captionTop: {\n captionSide: \"top\",\n // mb-4\n marginBottom: tokens.spacingGroup2,\n },\n captionBottom: {\n captionSide: \"bottom\",\n // mt-4\n marginTop: tokens.spacingGroup2,\n },\n})\n\nexport type TableProps = React.ComponentProps<\"table\"> & {\n density?: TableDensity\n}\n\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n function Table({ className, density, children, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div className={styles.wrapper}>\n <table\n ref={ref}\n data-slot=\"table\"\n {...{ [SLOT_ATTR]: \"table\" }}\n className={mergeClasses(styles.root, className)}\n {...props}\n // Authoritative, spread last: a raw caller data-density prop (part of {...props}, since\n // TableProps extends every native table prop) must never win over the normalized density\n // prop — same invariant DensityProvider enforces for its own data-density stamp.\n // canonicalDensity here is the SAME normalization DensityContextBoundary below applies to\n // the context value, so an invalid density can never make the DOM and context disagree\n // (TABLE-DENSITY-REVIEW-1.md #2).\n {...(density !== undefined\n ? { \"data-density\": canonicalDensity(density) }\n : {})}\n >\n <DensityContextBoundary density={density}>\n {children}\n </DensityContextBoundary>\n </table>\n </div>\n )\n }\n)\n\nexport const TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"thead\">\n>(function TableHeader({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <thead\n ref={ref}\n data-slot=\"table-header\"\n {...{ [SLOT_ATTR]: \"table-header\" }}\n className={mergeClasses(styles.header, className)}\n {...props}\n />\n )\n})\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"tbody\">\n>(function TableBody({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <tbody\n ref={ref}\n data-slot=\"table-body\"\n {...{ [SLOT_ATTR]: \"table-body\" }}\n className={mergeClasses(styles.body, className)}\n {...props}\n />\n )\n})\n\nexport const TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"tfoot\">\n>(function TableFooter({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <tfoot\n ref={ref}\n data-slot=\"table-footer\"\n {...{ [SLOT_ATTR]: \"table-footer\" }}\n className={mergeClasses(styles.footer, className)}\n {...props}\n />\n )\n})\n\nexport type TableRowProps = React.ComponentProps<\"tr\"> & {\n /** Disable hover background effect */\n noHover?: boolean\n}\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n function TableRow({ className, noHover, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <tr\n ref={ref}\n data-slot=\"table-row\"\n {...{ [SLOT_ATTR]: \"table-row\" }}\n className={mergeClasses(\n styles.row,\n !noHover && styles.rowHover,\n className\n )}\n {...props}\n />\n )\n }\n)\n\nexport type TableHeadProps = React.ComponentProps<\"th\"> & {\n align?: \"left\" | \"center\" | \"right\"\n density?: TableDensity\n}\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n function TableHead(\n { className, align = \"left\", density, scope = \"col\", children, ...props },\n ref\n ) {\n const styles = useStyles()\n\n const alignment =\n align === \"center\"\n ? styles.alignCenter\n : align === \"right\"\n ? styles.alignRight\n : styles.alignLeft\n\n return (\n <th\n ref={ref}\n data-slot=\"table-head\"\n {...{ [SLOT_ATTR]: \"table-head\" }}\n scope={scope}\n className={mergeClasses(styles.head, alignment, className)}\n {...props}\n // Authoritative, normalized, spread last — see the matching comment on Table above.\n {...(density !== undefined\n ? { \"data-density\": canonicalDensity(density) }\n : {})}\n >\n {/* TABLE-DENSITY-REVIEW-1.md #1: an explicit per-cell override must also establish the\n context boundary, not just the DOM stamp — a real portal (Select/Popover/etc.) rendered\n inside this cell is a DOM sibling, not a descendant, so only useDensity() reaches it. */}\n <DensityContextBoundary density={density}>{children}</DensityContextBoundary>\n </th>\n )\n }\n)\n\nexport type TableCellProps = React.ComponentProps<\"td\"> & {\n align?: \"left\" | \"center\" | \"right\"\n numeric?: boolean\n density?: TableDensity\n}\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n function TableCell(\n { className, align = \"left\", numeric, density, children, ...props },\n ref\n ) {\n const styles = useStyles()\n\n const alignment =\n align === \"center\"\n ? styles.alignCenter\n : align === \"right\"\n ? styles.alignRight\n : styles.alignLeft\n\n return (\n <td\n ref={ref}\n data-slot=\"table-cell\"\n {...{ [SLOT_ATTR]: \"table-cell\" }}\n className={mergeClasses(\n styles.cell,\n alignment,\n numeric && styles.cellNumeric,\n className\n )}\n {...props}\n // Authoritative, normalized, spread last — see the matching comment on Table above.\n {...(density !== undefined\n ? { \"data-density\": canonicalDensity(density) }\n : {})}\n >\n {/* TABLE-DENSITY-REVIEW-1.md #1: see the matching comment on TableHead above. */}\n <DensityContextBoundary density={density}>{children}</DensityContextBoundary>\n </td>\n )\n }\n)\n\nexport type TableCaptionProps = React.ComponentProps<\"caption\"> & {\n position?: \"top\" | \"bottom\"\n}\n\nexport const TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n TableCaptionProps\n>(function TableCaption({ className, position = \"bottom\", ...props }, ref) {\n const styles = useStyles()\n\n return (\n <caption\n ref={ref}\n data-slot=\"table-caption\"\n {...{ [SLOT_ATTR]: \"table-caption\" }}\n className={mergeClasses(\n styles.caption,\n position === \"top\" ? styles.captionTop : styles.captionBottom,\n className\n )}\n {...props}\n />\n )\n})\n\nexport { TableDensityContext }\n"],"names":["TableDensityContext","React","useStyles","makeVoltStyles","shorthands","tokens.textSm","tokens.leadingSm","tokens.grayA5","tokens.semGraySoft","tokens.fontWeightMedium","tokens.accentA3","tokens.spacingElement3","tokens.tableHeadHeight","tokens.grayA12","tokens.tableCellPaddingY","tokens.fontWeightNormal","tokens.grayA11","tokens.spacingGroup2","Table","className","density","children","props","ref","styles","jsx","SLOT_ATTR","mergeClasses","canonicalDensity","DensityContextBoundary","TableHeader","TableBody","TableFooter","TableRow","noHover","TableHead","align","scope","alignment","TableCell","numeric","TableCaption","position"],"mappings":"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"}
|
|
@@ -3,10 +3,10 @@ import * as l from "react";
|
|
|
3
3
|
import { Root as d } from "../../vendor/@radix-ui/react-toggle/dist/index.js";
|
|
4
4
|
import { shorthands as o } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/index.js";
|
|
5
5
|
import { SLOT_ATTR as m } from "../../packages/volt-runtime/dist/renderer/contract.js";
|
|
6
|
-
import { mergeClasses as
|
|
7
|
-
import { makeVoltStyles as
|
|
8
|
-
import { radius2xl as u, spacingElement2 as h, radiusXl as f, radiusLg as p, spacingElement1 as b, errorA4 as v,
|
|
9
|
-
const
|
|
6
|
+
import { mergeClasses as c } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/mergeClasses.js";
|
|
7
|
+
import { makeVoltStyles as g } from "../../styles/make-styles.js";
|
|
8
|
+
import { radius2xl as u, spacingElement2 as h, radiusXl as f, radiusLg as p, spacingElement1 as b, errorA4 as v, semErrorOnSoft as C, errorA3 as S, semErrorSoft as k, semErrorLight as y, accentA4 as x, semAccentOnSoft as A, accentA3 as R, semAccentSoft as E, semAccentLight as T, semFocusRing as W, fontWeightSemibold as w } from "../../tokens/index.js";
|
|
9
|
+
const I = g({
|
|
10
10
|
root: {
|
|
11
11
|
display: "inline-flex",
|
|
12
12
|
alignItems: "center",
|
|
@@ -14,16 +14,20 @@ const w = c({
|
|
|
14
14
|
...o.gap(b),
|
|
15
15
|
flexShrink: 0,
|
|
16
16
|
cursor: "pointer",
|
|
17
|
-
fontWeight:
|
|
17
|
+
fontWeight: w,
|
|
18
18
|
transitionProperty: "all",
|
|
19
19
|
transitionDuration: "150ms",
|
|
20
20
|
transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
21
|
+
"@media (prefers-reduced-motion: reduce)": {
|
|
22
|
+
transitionDuration: "0.01ms"
|
|
23
|
+
},
|
|
21
24
|
...o.borderStyle("none"),
|
|
22
25
|
...o.borderWidth(0),
|
|
23
26
|
":focus-visible": {
|
|
24
27
|
outlineWidth: "2px",
|
|
25
28
|
outlineOffset: "2px",
|
|
26
|
-
outlineStyle: "solid"
|
|
29
|
+
outlineStyle: "solid",
|
|
30
|
+
outlineColor: W
|
|
27
31
|
},
|
|
28
32
|
":disabled, &[data-disabled]": {
|
|
29
33
|
pointerEvents: "none",
|
|
@@ -38,31 +42,27 @@ const w = c({
|
|
|
38
42
|
// Variants
|
|
39
43
|
default: {
|
|
40
44
|
backgroundColor: "transparent",
|
|
41
|
-
color:
|
|
45
|
+
color: T,
|
|
42
46
|
":hover": {
|
|
43
|
-
backgroundColor:
|
|
44
|
-
},
|
|
45
|
-
":focus-visible": {
|
|
46
|
-
outlineColor: R
|
|
47
|
+
backgroundColor: E
|
|
47
48
|
},
|
|
48
49
|
"&[data-state='on']": {
|
|
49
|
-
backgroundColor:
|
|
50
|
+
backgroundColor: R,
|
|
51
|
+
color: A
|
|
50
52
|
},
|
|
51
53
|
"&[data-state='on']:hover": {
|
|
52
|
-
backgroundColor:
|
|
54
|
+
backgroundColor: x
|
|
53
55
|
}
|
|
54
56
|
},
|
|
55
57
|
destructive: {
|
|
56
58
|
backgroundColor: "transparent",
|
|
57
|
-
color:
|
|
59
|
+
color: y,
|
|
58
60
|
":hover": {
|
|
59
|
-
backgroundColor:
|
|
60
|
-
},
|
|
61
|
-
":focus-visible": {
|
|
62
|
-
outlineColor: k
|
|
61
|
+
backgroundColor: k
|
|
63
62
|
},
|
|
64
63
|
"&[data-state='on']": {
|
|
65
|
-
backgroundColor:
|
|
64
|
+
backgroundColor: S,
|
|
65
|
+
color: C
|
|
66
66
|
},
|
|
67
67
|
"&[data-state='on']:hover": {
|
|
68
68
|
backgroundColor: v
|
|
@@ -99,26 +99,26 @@ const w = c({
|
|
|
99
99
|
height: "1.25rem"
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
|
-
}),
|
|
103
|
-
const
|
|
102
|
+
}), Q = l.forwardRef(function({ className: e, variant: t = "default", size: n = "base", ...i }, a) {
|
|
103
|
+
const r = I();
|
|
104
104
|
return /* @__PURE__ */ s(
|
|
105
105
|
d,
|
|
106
106
|
{
|
|
107
107
|
ref: a,
|
|
108
108
|
"data-slot": "toggle",
|
|
109
109
|
[m]: "toggle",
|
|
110
|
-
className:
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
110
|
+
className: c(
|
|
111
|
+
r.root,
|
|
112
|
+
r[t],
|
|
113
|
+
r[n],
|
|
114
|
+
e
|
|
115
115
|
),
|
|
116
|
-
...
|
|
116
|
+
...i
|
|
117
117
|
}
|
|
118
118
|
);
|
|
119
119
|
});
|
|
120
120
|
export {
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
Q as Toggle,
|
|
122
|
+
I as useToggleStyles
|
|
123
123
|
};
|
|
124
124
|
//# sourceMappingURL=toggle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle.js","sources":["../../../src/components/toggle/toggle.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { mergeClasses, shorthands } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\n\nexport type ToggleVariant = \"default\" | \"destructive\"\nexport type ToggleSize = \"sm\" | \"base\" | \"lg\"\n\nexport const useToggleStyles = makeVoltStyles({\n root: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n ...shorthands.gap(tokens.spacingElement1),\n flexShrink: 0,\n cursor: \"pointer\",\n fontWeight: tokens.fontWeightSemibold,\n transitionProperty: \"all\",\n transitionDuration: \"150ms\",\n transitionTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n ...shorthands.borderStyle(\"none\"),\n ...shorthands.borderWidth(0),\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineOffset: \"2px\",\n outlineStyle: \"solid\",\n },\n \":disabled, &[data-disabled]\": {\n pointerEvents: \"none\",\n opacity: 0.5,\n },\n \"& svg\": {\n flexShrink: 0,\n pointerEvents: \"none\",\n color: \"currentColor\",\n },\n },\n // Variants\n default: {\n backgroundColor: \"transparent\",\n color: tokens.semAccentLight,\n \":hover\": {\n backgroundColor: tokens.semAccentSoft,\n },\n \"
|
|
1
|
+
{"version":3,"file":"toggle.js","sources":["../../../src/components/toggle/toggle.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { mergeClasses, shorthands } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\n\nexport type ToggleVariant = \"default\" | \"destructive\"\nexport type ToggleSize = \"sm\" | \"base\" | \"lg\"\n\nexport const useToggleStyles = makeVoltStyles({\n root: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n ...shorthands.gap(tokens.spacingElement1),\n flexShrink: 0,\n cursor: \"pointer\",\n fontWeight: tokens.fontWeightSemibold,\n transitionProperty: \"all\",\n transitionDuration: \"150ms\",\n transitionTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n \"@media (prefers-reduced-motion: reduce)\": {\n transitionDuration: \"0.01ms\",\n },\n ...shorthands.borderStyle(\"none\"),\n ...shorthands.borderWidth(0),\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineOffset: \"2px\",\n outlineStyle: \"solid\",\n outlineColor: tokens.semFocusRing,\n },\n \":disabled, &[data-disabled]\": {\n pointerEvents: \"none\",\n opacity: 0.5,\n },\n \"& svg\": {\n flexShrink: 0,\n pointerEvents: \"none\",\n color: \"currentColor\",\n },\n },\n // Variants\n default: {\n backgroundColor: \"transparent\",\n color: tokens.semAccentLight,\n \":hover\": {\n backgroundColor: tokens.semAccentSoft,\n },\n \"&[data-state='on']\": {\n backgroundColor: tokens.accentA3,\n color: tokens.semAccentOnSoft,\n },\n \"&[data-state='on']:hover\": {\n backgroundColor: tokens.accentA4,\n },\n },\n destructive: {\n backgroundColor: \"transparent\",\n color: tokens.semErrorLight,\n \":hover\": {\n backgroundColor: tokens.semErrorSoft,\n },\n \"&[data-state='on']\": {\n backgroundColor: tokens.errorA3,\n color: tokens.semErrorOnSoft,\n },\n \"&[data-state='on']:hover\": {\n backgroundColor: tokens.errorA4,\n },\n },\n // Sizes\n sm: {\n height: \"1.5rem\",\n minWidth: \"1.5rem\",\n ...shorthands.borderRadius(tokens.radiusLg),\n ...shorthands.paddingInline(\"0.375rem\"),\n \"& svg\": {\n width: \"0.875rem\",\n height: \"0.875rem\",\n },\n },\n base: {\n height: \"2rem\",\n minWidth: \"2rem\",\n ...shorthands.borderRadius(tokens.radiusXl),\n ...shorthands.paddingInline(tokens.spacingElement2),\n \"& svg\": {\n width: \"1rem\",\n height: \"1rem\",\n },\n },\n lg: {\n height: \"2.5rem\",\n minWidth: \"2.5rem\",\n ...shorthands.borderRadius(tokens.radius2xl),\n ...shorthands.paddingInline(\"0.625rem\"),\n \"& svg\": {\n width: \"1.25rem\",\n height: \"1.25rem\",\n },\n },\n})\n\nexport type ToggleProps = React.ComponentProps<typeof TogglePrimitive.Root> & {\n variant?: ToggleVariant\n size?: ToggleSize\n}\n\nexport const Toggle = React.forwardRef<\n React.ComponentRef<typeof TogglePrimitive.Root>,\n ToggleProps\n>(function Toggle(\n { className, variant = \"default\", size = \"base\", ...props },\n ref\n) {\n const styles = useToggleStyles()\n\n return (\n <TogglePrimitive.Root\n ref={ref}\n data-slot=\"toggle\"\n {...{ [SLOT_ATTR]: \"toggle\" }}\n className={mergeClasses(\n styles.root,\n styles[variant],\n styles[size],\n className\n )}\n {...props}\n />\n )\n})\n"],"names":["useToggleStyles","makeVoltStyles","shorthands","tokens.spacingElement1","tokens.fontWeightSemibold","tokens.semFocusRing","tokens.semAccentLight","tokens.semAccentSoft","tokens.accentA3","tokens.semAccentOnSoft","tokens.accentA4","tokens.semErrorLight","tokens.semErrorSoft","tokens.errorA3","tokens.semErrorOnSoft","tokens.errorA4","tokens.radiusLg","tokens.radiusXl","tokens.spacingElement2","tokens.radius2xl","Toggle","React","className","variant","size","props","ref","styles","jsx","TogglePrimitive.Root","SLOT_ATTR","mergeClasses"],"mappings":";;;;;;;;AAWO,MAAMA,IAAkBC,EAAe;AAAA,EAC5C,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,GAAGC,EAAW,IAAIC,CAAsB;AAAA,IACxC,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,YAAYC;AAAAA,IACZ,oBAAoB;AAAA,IACpB,oBAAoB;AAAA,IACpB,0BAA0B;AAAA,IAC1B,2CAA2C;AAAA,MACzC,oBAAoB;AAAA,IAAA;AAAA,IAEtB,GAAGF,EAAW,YAAY,MAAM;AAAA,IAChC,GAAGA,EAAW,YAAY,CAAC;AAAA,IAC3B,kBAAkB;AAAA,MAChB,cAAc;AAAA,MACd,eAAe;AAAA,MACf,cAAc;AAAA,MACd,cAAcG;AAAAA,IAAO;AAAA,IAEvB,+BAA+B;AAAA,MAC7B,eAAe;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,IAEX,SAAS;AAAA,MACP,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,OAAO;AAAA,IAAA;AAAA,EACT;AAAA;AAAA,EAGF,SAAS;AAAA,IACP,iBAAiB;AAAA,IACjB,OAAOC;AAAAA,IACP,UAAU;AAAA,MACR,iBAAiBC;AAAAA,IAAO;AAAA,IAE1B,sBAAsB;AAAA,MACpB,iBAAiBC;AAAAA,MACjB,OAAOC;AAAAA,IAAO;AAAA,IAEhB,4BAA4B;AAAA,MAC1B,iBAAiBC;AAAAA,IAAO;AAAA,EAC1B;AAAA,EAEF,aAAa;AAAA,IACX,iBAAiB;AAAA,IACjB,OAAOC;AAAAA,IACP,UAAU;AAAA,MACR,iBAAiBC;AAAAA,IAAO;AAAA,IAE1B,sBAAsB;AAAA,MACpB,iBAAiBC;AAAAA,MACjB,OAAOC;AAAAA,IAAO;AAAA,IAEhB,4BAA4B;AAAA,MAC1B,iBAAiBC;AAAAA,IAAO;AAAA,EAC1B;AAAA;AAAA,EAGF,IAAI;AAAA,IACF,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,GAAGb,EAAW,aAAac,CAAe;AAAA,IAC1C,GAAGd,EAAW,cAAc,UAAU;AAAA,IACtC,SAAS;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA;AAAA,EACV;AAAA,EAEF,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,GAAGA,EAAW,aAAae,CAAe;AAAA,IAC1C,GAAGf,EAAW,cAAcgB,CAAsB;AAAA,IAClD,SAAS;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA;AAAA,EACV;AAAA,EAEF,IAAI;AAAA,IACF,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,GAAGhB,EAAW,aAAaiB,CAAgB;AAAA,IAC3C,GAAGjB,EAAW,cAAc,UAAU;AAAA,IACtC,SAAS;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA;AAAA,EACV;AAEJ,CAAC,GAOYkB,IAASC,EAAM,WAG1B,SACA,EAAE,WAAAC,GAAW,SAAAC,IAAU,WAAW,MAAAC,IAAO,QAAQ,GAAGC,EAAA,GACpDC,GACA;AACA,QAAMC,IAAS3B,EAAA;AAEf,SACE,gBAAA4B;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,KAAAH;AAAA,MACA,aAAU;AAAA,MACJ,CAACI,CAAS,GAAG;AAAA,MACnB,WAAWC;AAAAA,QACTJ,EAAO;AAAA,QACPA,EAAOJ,CAAO;AAAA,QACdI,EAAOH,CAAI;AAAA,QACXF;AAAA,MAAA;AAAA,MAED,GAAGG;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;"}
|