@multiplatform.one/table-primitives 6.0.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.
Files changed (40) hide show
  1. package/LICENSE +201 -0
  2. package/dist/cjs/index.cjs +416 -0
  3. package/dist/cjs/index.native.js +462 -0
  4. package/dist/cjs/index.native.js.map +1 -0
  5. package/dist/cjs/table.spec.cjs +183 -0
  6. package/dist/cjs/table.spec.native.js +186 -0
  7. package/dist/cjs/table.spec.native.js.map +1 -0
  8. package/dist/cjs/tableCellContext.cjs +45 -0
  9. package/dist/cjs/tableCellContext.native.js +48 -0
  10. package/dist/cjs/tableCellContext.native.js.map +1 -0
  11. package/dist/esm/index.mjs +388 -0
  12. package/dist/esm/index.mjs.map +1 -0
  13. package/dist/esm/index.native.js +431 -0
  14. package/dist/esm/index.native.js.map +1 -0
  15. package/dist/esm/table.spec.mjs +184 -0
  16. package/dist/esm/table.spec.mjs.map +1 -0
  17. package/dist/esm/table.spec.native.js +184 -0
  18. package/dist/esm/table.spec.native.js.map +1 -0
  19. package/dist/esm/tableCellContext.mjs +18 -0
  20. package/dist/esm/tableCellContext.mjs.map +1 -0
  21. package/dist/esm/tableCellContext.native.js +18 -0
  22. package/dist/esm/tableCellContext.native.js.map +1 -0
  23. package/dist/jsx/index.js +388 -0
  24. package/dist/jsx/index.js.map +1 -0
  25. package/dist/jsx/index.mjs +388 -0
  26. package/dist/jsx/index.mjs.map +1 -0
  27. package/dist/jsx/index.native.js +462 -0
  28. package/dist/jsx/index.native.js.map +1 -0
  29. package/dist/jsx/table.spec.mjs +184 -0
  30. package/dist/jsx/table.spec.mjs.map +1 -0
  31. package/dist/jsx/table.spec.native.js +186 -0
  32. package/dist/jsx/table.spec.native.js.map +1 -0
  33. package/dist/jsx/tableCellContext.mjs +18 -0
  34. package/dist/jsx/tableCellContext.mjs.map +1 -0
  35. package/dist/jsx/tableCellContext.native.js +48 -0
  36. package/dist/jsx/tableCellContext.native.js.map +1 -0
  37. package/package.json +78 -0
  38. package/src/index.tsx +364 -0
  39. package/src/table.spec.tsx +177 -0
  40. package/src/tableCellContext.ts +34 -0
@@ -0,0 +1,462 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var index_exports = {};
26
+ __export(index_exports, {
27
+ Table: () => Table,
28
+ TableCellContext: () => import_tableCellContext2.TableCellContext,
29
+ useIsInTableCell: () => import_tableCellContext2.useIsInTableCell,
30
+ useTableCellContext: () => import_tableCellContext2.useTableCellContext
31
+ });
32
+ module.exports = __toCommonJS(index_exports);
33
+ var import_jsx_runtime = require("react/jsx-runtime");
34
+ var import_theme = require("@multiplatform.one/theme");
35
+ var import_tableCellContext = require("./tableCellContext.native.js");
36
+ var import_tamagui = require("tamagui");
37
+ var import_tableCellContext2 = require("./tableCellContext.native.js");
38
+ var TableContext = (0, import_tamagui.createStyledContext)({
39
+ cellWidth: "$8",
40
+ cellHeight: "$8",
41
+ alignHeaderCells: {
42
+ x: "start",
43
+ y: "center"
44
+ },
45
+ alignCells: {
46
+ x: "start",
47
+ y: "center"
48
+ },
49
+ borderColor: "$color6",
50
+ displayMode: "table"
51
+ });
52
+ var Row = (0, import_tamagui.styled)(import_tamagui.ThemeableStack, {
53
+ name: "TableRow",
54
+ ...{
55
+ tag: "tr"
56
+ },
57
+ role: "row",
58
+ context: TableContext,
59
+ display: "table-row",
60
+ variants: {
61
+ displayMode: {
62
+ table: {
63
+ display: "table-row"
64
+ },
65
+ flex: {
66
+ display: "flex",
67
+ flexDirection: "row",
68
+ width: "100%",
69
+ alignItems: "center"
70
+ }
71
+ },
72
+ rowLocation: {
73
+ first: function first() {
74
+ return {};
75
+ },
76
+ last: function last() {
77
+ return {};
78
+ },
79
+ middle: function middle() {
80
+ return {};
81
+ }
82
+ }
83
+ }
84
+ });
85
+ var Cell = (0, import_tamagui.styled)(import_tamagui.ThemeableStack, {
86
+ name: "TableCell",
87
+ ...{
88
+ tag: "td"
89
+ },
90
+ context: TableContext,
91
+ display: "table-cell",
92
+ // verticalAlign goes via inline style; Tamagui forwards it to the DOM as a JSX
93
+ // prop otherwise, which React rejects ("React does not recognize verticalAlign").
94
+ style: {
95
+ verticalAlign: "middle"
96
+ },
97
+ alignItems: "center",
98
+ justifyContent: "flex-start",
99
+ paddingHorizontal: "$2",
100
+ paddingVertical: "$1",
101
+ overflow: "hidden",
102
+ variants: {
103
+ displayMode: {
104
+ table: {
105
+ display: "table-cell",
106
+ style: {
107
+ verticalAlign: "middle"
108
+ }
109
+ },
110
+ flex: {
111
+ display: "flex",
112
+ overflow: "visible"
113
+ }
114
+ },
115
+ cellWidth: {
116
+ /** Equal flex for consistency across rows (flex rows size independently) */
117
+ auto: function auto() {
118
+ return {
119
+ flex: 1
120
+ };
121
+ },
122
+ ":number": function (val) {
123
+ return {
124
+ width: val,
125
+ minWidth: val
126
+ };
127
+ },
128
+ "...size": function (name, param) {
129
+ var {
130
+ tokens
131
+ } = param;
132
+ return {
133
+ width: tokens.size[name],
134
+ minWidth: tokens.size[name]
135
+ };
136
+ }
137
+ },
138
+ cellHeight: {
139
+ "...size": function (name, param) {
140
+ var {
141
+ tokens
142
+ } = param;
143
+ return {
144
+ minHeight: tokens.size[name]
145
+ };
146
+ }
147
+ },
148
+ alignCells: function alignCells(val) {
149
+ return {
150
+ alignItems: val.y === "center" ? "center" : `flex-${val.y}`,
151
+ justifyContent: val.x === "center" ? "center" : `flex-${val.x}`
152
+ };
153
+ },
154
+ cellLocation: {
155
+ first: function first2() {
156
+ return {};
157
+ },
158
+ last: function last2() {
159
+ return {};
160
+ },
161
+ middle: function middle2() {
162
+ return {};
163
+ }
164
+ }
165
+ }
166
+ });
167
+ var HeaderCell = (0, import_tamagui.styled)(import_tamagui.ThemeableStack, {
168
+ name: "TableHeaderCell",
169
+ ...{
170
+ tag: "th",
171
+ scope: "col"
172
+ },
173
+ context: TableContext,
174
+ display: "table-cell",
175
+ // verticalAlign goes via inline style; see TableCell above for context.
176
+ style: {
177
+ verticalAlign: "middle"
178
+ },
179
+ alignItems: "center",
180
+ justifyContent: "flex-start",
181
+ paddingHorizontal: "$2",
182
+ paddingVertical: "$1",
183
+ backgroundColor: "$color3",
184
+ variants: {
185
+ displayMode: {
186
+ table: {
187
+ display: "table-cell",
188
+ style: {
189
+ verticalAlign: "middle"
190
+ }
191
+ },
192
+ flex: {
193
+ display: "flex"
194
+ }
195
+ },
196
+ cellWidth: {
197
+ /** Equal flex for consistency across rows */
198
+ auto: function auto2() {
199
+ return {
200
+ flex: 1
201
+ };
202
+ },
203
+ ":number": function (val) {
204
+ return {
205
+ width: val,
206
+ minWidth: val
207
+ };
208
+ },
209
+ "...size": function (name, param) {
210
+ var {
211
+ tokens
212
+ } = param;
213
+ return {
214
+ width: tokens.size[name],
215
+ minWidth: tokens.size[name]
216
+ };
217
+ }
218
+ },
219
+ alignHeaderCells: function alignHeaderCells(val) {
220
+ return {
221
+ alignItems: val.y === "center" ? "center" : `flex-${val.y}`,
222
+ justifyContent: val.x === "center" ? "center" : `flex-${val.x}`
223
+ };
224
+ },
225
+ cellHeight: {
226
+ "...size": function (name, param) {
227
+ var {
228
+ tokens
229
+ } = param;
230
+ return {
231
+ minHeight: tokens.size[name]
232
+ };
233
+ }
234
+ },
235
+ cellLocation: {
236
+ first: function first3() {
237
+ return {};
238
+ },
239
+ last: function last3() {
240
+ return {};
241
+ },
242
+ middle: function middle3() {
243
+ return {};
244
+ }
245
+ }
246
+ }
247
+ });
248
+ var TableBody = (0, import_tamagui.styled)(import_tamagui.ThemeableStack, {
249
+ name: "TableBody",
250
+ ...{
251
+ tag: "tbody"
252
+ },
253
+ context: TableContext,
254
+ display: "table-row-group",
255
+ variants: {
256
+ displayMode: {
257
+ table: {
258
+ display: "table-row-group"
259
+ },
260
+ flex: {
261
+ display: "flex",
262
+ flexDirection: "column",
263
+ width: "100%",
264
+ overflowY: "auto",
265
+ flex: 1,
266
+ minHeight: 0
267
+ }
268
+ }
269
+ }
270
+ });
271
+ var TableHead = (0, import_tamagui.styled)(import_tamagui.ThemeableStack, {
272
+ name: "TableHead",
273
+ ...{
274
+ tag: "thead"
275
+ },
276
+ context: TableContext,
277
+ display: "table-header-group",
278
+ borderBottomWidth: 1,
279
+ borderBottomColor: "$color6",
280
+ variants: {
281
+ displayMode: {
282
+ table: {
283
+ display: "table-header-group"
284
+ },
285
+ flex: {
286
+ display: "flex",
287
+ flexDirection: "column",
288
+ width: "100%",
289
+ flexShrink: 0
290
+ }
291
+ }
292
+ }
293
+ });
294
+ var TableFoot = (0, import_tamagui.styled)(import_tamagui.ThemeableStack, {
295
+ name: "TableFoot",
296
+ ...{
297
+ tag: "tfoot"
298
+ },
299
+ context: TableContext,
300
+ display: "table-footer-group",
301
+ variants: {
302
+ displayMode: {
303
+ table: {
304
+ display: "table-footer-group"
305
+ },
306
+ flex: {
307
+ display: "flex",
308
+ flexDirection: "column",
309
+ width: "100%",
310
+ flexShrink: 0
311
+ }
312
+ }
313
+ }
314
+ });
315
+ var TableCaption = (0, import_tamagui.styled)(import_tamagui.ThemeableStack, {
316
+ name: "TableCaption",
317
+ ...{
318
+ tag: "caption"
319
+ },
320
+ context: TableContext,
321
+ display: "table-caption",
322
+ paddingVertical: "$2",
323
+ paddingHorizontal: "$2"
324
+ });
325
+ var TableComp = (0, import_tamagui.styled)(import_tamagui.ThemeableStack, {
326
+ name: "Table",
327
+ ...{
328
+ tag: "table"
329
+ },
330
+ context: TableContext,
331
+ display: "table",
332
+ borderWidth: 1,
333
+ borderColor: "$color6",
334
+ backgroundColor: "$background",
335
+ overflow: "hidden",
336
+ width: "100%",
337
+ variants: {
338
+ displayMode: {
339
+ table: {
340
+ display: "table"
341
+ },
342
+ flex: {
343
+ display: "flex",
344
+ flexDirection: "column",
345
+ flex: 1,
346
+ minHeight: 0
347
+ }
348
+ },
349
+ /** Empty variants to satisfy context-driven props without ts errors on Table */
350
+ cellWidth: {
351
+ "...size": function () {
352
+ return {};
353
+ }
354
+ },
355
+ cellHeight: {
356
+ "...size": function () {
357
+ return {};
358
+ }
359
+ },
360
+ alignHeaderCells: function alignHeaderCells2(_val) {
361
+ return {};
362
+ },
363
+ alignCells: function alignCells2(_val) {
364
+ return {};
365
+ }
366
+ }
367
+ });
368
+ function resolveIntent(props) {
369
+ if (props.accent) return "accent";
370
+ if (props.error) return "error";
371
+ if (props.warning) return "warning";
372
+ if (props.success) return "success";
373
+ return void 0;
374
+ }
375
+ function ThemedTableComp(props) {
376
+ var {
377
+ knobProps
378
+ } = (0, import_theme.useResolvedKnobs)();
379
+ var baseBorderWidth = knobProps.borderRadius.borderWidth;
380
+ var resolvedBorderWidth = knobProps.outlined ? Math.max(baseBorderWidth, 1) : baseBorderWidth;
381
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(TableComp, {
382
+ ...knobProps.borderRadius,
383
+ borderWidth: resolvedBorderWidth,
384
+ borderColor: "$color6",
385
+ backgroundColor: "$background",
386
+ elevation: knobProps.elevation,
387
+ ...props,
388
+ style: [{
389
+ tableLayout: "fixed"
390
+ }, props.style]
391
+ });
392
+ }
393
+ function ThemedRow(param) {
394
+ var {
395
+ accent,
396
+ error,
397
+ warning,
398
+ success,
399
+ ...props
400
+ } = param;
401
+ var intent = resolveIntent({
402
+ accent,
403
+ error,
404
+ warning,
405
+ success
406
+ });
407
+ var row = /* @__PURE__ */(0, import_jsx_runtime.jsx)(Row, {
408
+ ...(intent ? {
409
+ backgroundColor: "$color3"
410
+ } : {}),
411
+ ...props
412
+ });
413
+ if (intent) {
414
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Theme, {
415
+ name: intent,
416
+ children: row
417
+ });
418
+ }
419
+ return row;
420
+ }
421
+ function ThemedCell(param) {
422
+ var {
423
+ children,
424
+ ...props
425
+ } = param;
426
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(Cell, {
427
+ ...props,
428
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tableCellContext.TableCellContext.Provider, {
429
+ value: {
430
+ inTableCell: true,
431
+ isHeader: false
432
+ },
433
+ children
434
+ })
435
+ });
436
+ }
437
+ function ThemedHeaderCell(param) {
438
+ var {
439
+ children,
440
+ ...props
441
+ } = param;
442
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(HeaderCell, {
443
+ ...props,
444
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tableCellContext.TableCellContext.Provider, {
445
+ value: {
446
+ inTableCell: true,
447
+ isHeader: true
448
+ },
449
+ children
450
+ })
451
+ });
452
+ }
453
+ var Table = (0, import_tamagui.withStaticProperties)(ThemedTableComp, {
454
+ Head: TableHead,
455
+ Body: TableBody,
456
+ Row: ThemedRow,
457
+ Cell: ThemedCell,
458
+ HeaderCell: ThemedHeaderCell,
459
+ Foot: TableFoot,
460
+ Caption: TableCaption
461
+ });
462
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","Table","TableCellContext","import_tableCellContext2","useIsInTableCell","useTableCellContext","module","exports","import_jsx_runtime","require","import_theme","import_tableCellContext","import_tamagui","TableContext","createStyledContext","cellWidth","cellHeight","alignHeaderCells","x","y","alignCells","borderColor","displayMode","Row","styled","ThemeableStack","name","tag","role","context","display","variants","table","flex","flexDirection","width","alignItems","rowLocation","first","last","middle","Cell","style","verticalAlign","justifyContent","paddingHorizontal","paddingVertical","overflow","auto",":number","val","minWidth","...size","param","tokens","size","minHeight","cellLocation","first2","last2","middle2","HeaderCell","scope","backgroundColor","auto2","first3","last3","middle3","TableBody","overflowY","TableHead","borderBottomWidth","borderBottomColor","flexShrink","TableFoot","TableCaption"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,183 @@
1
+ var import_test_utils = require("@multiplatform.one/test-utils");
2
+ var import_vitest = require("vitest");
3
+ var import_index = require("./index.cjs");
4
+ var import_jsx_runtime = require("react/jsx-runtime");
5
+ (0, import_vitest.describe)("Table Primitives", () => {
6
+ (0, import_vitest.it)("renders semantic HTML structure via tag attributes (table, thead, tbody, tfoot, tr, td, th, caption)", () => {
7
+ const {
8
+ container
9
+ } = (0, import_test_utils.renderWithProviders)(/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_index.Table, {
10
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Caption, {
11
+ children: "Test Caption"
12
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Head, {
13
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Row, {
14
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.HeaderCell, {
15
+ children: "Header"
16
+ })
17
+ })
18
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Body, {
19
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Row, {
20
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Cell, {
21
+ children: "Cell"
22
+ })
23
+ })
24
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Foot, {
25
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Row, {
26
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Cell, {
27
+ children: "Footer"
28
+ })
29
+ })
30
+ })]
31
+ }));
32
+ (0, import_vitest.expect)(container.querySelector('[tag="table"]')).not.toBeNull();
33
+ (0, import_vitest.expect)(container.querySelector('[tag="thead"]')).not.toBeNull();
34
+ (0, import_vitest.expect)(container.querySelector('[tag="tbody"]')).not.toBeNull();
35
+ (0, import_vitest.expect)(container.querySelector('[tag="tfoot"]')).not.toBeNull();
36
+ (0, import_vitest.expect)(container.querySelectorAll('[tag="tr"]').length).toBe(3);
37
+ (0, import_vitest.expect)(container.querySelector('[tag="td"]')).not.toBeNull();
38
+ (0, import_vitest.expect)(container.querySelector('[tag="th"]')).not.toBeNull();
39
+ (0, import_vitest.expect)(container.querySelector('[tag="caption"]')).not.toBeNull();
40
+ (0, import_vitest.expect)(container.querySelector(".is_Table")).not.toBeNull();
41
+ (0, import_vitest.expect)(container.querySelector(".is_TableHead")).not.toBeNull();
42
+ (0, import_vitest.expect)(container.querySelector(".is_TableBody")).not.toBeNull();
43
+ (0, import_vitest.expect)(container.querySelector(".is_TableFoot")).not.toBeNull();
44
+ (0, import_vitest.expect)(container.querySelector(".is_TableRow")).not.toBeNull();
45
+ (0, import_vitest.expect)(container.querySelector(".is_TableCell")).not.toBeNull();
46
+ (0, import_vitest.expect)(container.querySelector(".is_TableHeaderCell")).not.toBeNull();
47
+ (0, import_vitest.expect)(container.querySelector(".is_TableCaption")).not.toBeNull();
48
+ });
49
+ (0, import_vitest.it)("applies intent props on Table.Row with Theme wrapping", () => {
50
+ const {
51
+ container: withIntent
52
+ } = (0, import_test_utils.renderWithProviders)(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table, {
53
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_index.Table.Body, {
54
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Row, {
55
+ accent: true,
56
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Cell, {
57
+ children: "Accent row"
58
+ })
59
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Row, {
60
+ error: true,
61
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Cell, {
62
+ children: "Error row"
63
+ })
64
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Row, {
65
+ warning: true,
66
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Cell, {
67
+ children: "Warning row"
68
+ })
69
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Row, {
70
+ success: true,
71
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Cell, {
72
+ children: "Success row"
73
+ })
74
+ })]
75
+ })
76
+ }));
77
+ const {
78
+ container: withoutIntent
79
+ } = (0, import_test_utils.renderWithProviders)(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table, {
80
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Body, {
81
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Row, {
82
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Cell, {
83
+ children: "Normal row"
84
+ })
85
+ })
86
+ })
87
+ }));
88
+ const rows = withIntent.querySelectorAll('[tag="tr"]');
89
+ (0, import_vitest.expect)(rows.length).toBe(4);
90
+ (0, import_vitest.expect)(withIntent.textContent).toContain("Accent row");
91
+ (0, import_vitest.expect)(withIntent.textContent).toContain("Error row");
92
+ (0, import_vitest.expect)(withIntent.textContent).toContain("Warning row");
93
+ (0, import_vitest.expect)(withIntent.textContent).toContain("Success row");
94
+ const intentThemeWrappers = withIntent.querySelectorAll(".is_Theme");
95
+ const normalThemeWrappers = withoutIntent.querySelectorAll(".is_Theme");
96
+ (0, import_vitest.expect)(intentThemeWrappers.length).toBeGreaterThan(normalThemeWrappers.length);
97
+ });
98
+ (0, import_vitest.it)("spreads knobProps from useResolvedKnobs on Table root", () => {
99
+ const {
100
+ container
101
+ } = (0, import_test_utils.renderWithProviders)(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table, {
102
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Body, {
103
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Row, {
104
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Cell, {
105
+ children: "Content"
106
+ })
107
+ })
108
+ })
109
+ }));
110
+ const table = container.querySelector('[tag="table"]');
111
+ (0, import_vitest.expect)(table).not.toBeNull();
112
+ (0, import_vitest.expect)(table?.textContent).toContain("Content");
113
+ (0, import_vitest.expect)(table?.classList.contains("is_Table")).toBe(true);
114
+ });
115
+ (0, import_vitest.it)("renders Table.Caption as a caption element", () => {
116
+ const {
117
+ container
118
+ } = (0, import_test_utils.renderWithProviders)(/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_index.Table, {
119
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Caption, {
120
+ children: "Monthly Sales Report"
121
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Body, {
122
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Row, {
123
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Cell, {
124
+ children: "Data"
125
+ })
126
+ })
127
+ })]
128
+ }));
129
+ const caption = container.querySelector('[tag="caption"]');
130
+ (0, import_vitest.expect)(caption).not.toBeNull();
131
+ (0, import_vitest.expect)(caption?.textContent).toContain("Monthly Sales Report");
132
+ (0, import_vitest.expect)(caption?.classList.contains("is_TableCaption")).toBe(true);
133
+ const table = container.querySelector('[tag="table"]');
134
+ (0, import_vitest.expect)(table?.querySelector('[tag="caption"]')).not.toBeNull();
135
+ });
136
+ (0, import_vitest.it)("exposes compound component API (Head, Body, Row, Cell, HeaderCell, Foot, Caption)", () => {
137
+ (0, import_vitest.expect)(import_index.Table.Head).toBeDefined();
138
+ (0, import_vitest.expect)(import_index.Table.Body).toBeDefined();
139
+ (0, import_vitest.expect)(import_index.Table.Row).toBeDefined();
140
+ (0, import_vitest.expect)(import_index.Table.Cell).toBeDefined();
141
+ (0, import_vitest.expect)(import_index.Table.HeaderCell).toBeDefined();
142
+ (0, import_vitest.expect)(import_index.Table.Foot).toBeDefined();
143
+ (0, import_vitest.expect)(import_index.Table.Caption).toBeDefined();
144
+ const {
145
+ getByText
146
+ } = (0, import_test_utils.renderWithProviders)(/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_index.Table, {
147
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Caption, {
148
+ children: "Caption"
149
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Head, {
150
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_index.Table.Row, {
151
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.HeaderCell, {
152
+ children: "H1"
153
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.HeaderCell, {
154
+ children: "H2"
155
+ })]
156
+ })
157
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Body, {
158
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_index.Table.Row, {
159
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Cell, {
160
+ children: "A1"
161
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Cell, {
162
+ children: "A2"
163
+ })]
164
+ })
165
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Foot, {
166
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_index.Table.Row, {
167
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Cell, {
168
+ children: "F1"
169
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_index.Table.Cell, {
170
+ children: "F2"
171
+ })]
172
+ })
173
+ })]
174
+ }));
175
+ (0, import_vitest.expect)(getByText("Caption")).toBeDefined();
176
+ (0, import_vitest.expect)(getByText("H1")).toBeDefined();
177
+ (0, import_vitest.expect)(getByText("H2")).toBeDefined();
178
+ (0, import_vitest.expect)(getByText("A1")).toBeDefined();
179
+ (0, import_vitest.expect)(getByText("A2")).toBeDefined();
180
+ (0, import_vitest.expect)(getByText("F1")).toBeDefined();
181
+ (0, import_vitest.expect)(getByText("F2")).toBeDefined();
182
+ });
183
+ });