@spark-web/columns 0.0.0-snapshot-release-20260409001813

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/CHANGELOG.md ADDED
@@ -0,0 +1,709 @@
1
+ # @spark-web/columns
2
+
3
+ ## 0.0.0-snapshot-release-20260409001813
4
+
5
+ ### Patch Changes
6
+
7
+ - [#782](https://github.com/brighte-labs/spark-web/pull/782)
8
+ [`b18cf44`](https://github.com/brighte-labs/spark-web/commit/b18cf4426df1e94b005ece8d93996459dc3e41d6)
9
+ Thanks [@jacobporci-brighte](https://github.com/jacobporci-brighte)! -
10
+ **docs:** add CLAUDE.md AI context files to foundation and form packages;
11
+ patch data-table with manual sort and spinner overlay patterns
12
+ - Updated dependencies
13
+ [[`b18cf44`](https://github.com/brighte-labs/spark-web/commit/b18cf4426df1e94b005ece8d93996459dc3e41d6)]:
14
+ - @spark-web/box@0.0.0-snapshot-release-20260409001813
15
+
16
+ ## 5.1.0
17
+
18
+ ### Minor Changes
19
+
20
+ - [#667](https://github.com/brighte-labs/spark-web/pull/667)
21
+ [`80d9c15`](https://github.com/brighte-labs/spark-web/commit/80d9c156a40bbcd2b1a91a2d0403b3c8e9b47b4e)
22
+ Thanks [@Leo704099](https://github.com/Leo704099)! - Support react 17 to 19
23
+
24
+ ### Patch Changes
25
+
26
+ - Updated dependencies
27
+ [[`80d9c15`](https://github.com/brighte-labs/spark-web/commit/80d9c156a40bbcd2b1a91a2d0403b3c8e9b47b4e)]:
28
+ - @spark-web/theme@5.13.0
29
+ - @spark-web/utils@5.1.0
30
+ - @spark-web/box@6.0.0
31
+
32
+ ## 5.0.2
33
+
34
+ ### Patch Changes
35
+
36
+ - [#698](https://github.com/brighte-labs/spark-web/pull/698)
37
+ [`814b373`](https://github.com/brighte-labs/spark-web/commit/814b373cbe9fcf0757738c78eef6b516624df62c)
38
+ Thanks [@michtntbrighte](https://github.com/michtntbrighte)! - Bump version
39
+
40
+ - Updated dependencies
41
+ [[`814b373`](https://github.com/brighte-labs/spark-web/commit/814b373cbe9fcf0757738c78eef6b516624df62c)]:
42
+ - @spark-web/box@5.2.2
43
+ - @spark-web/theme@5.12.1
44
+
45
+ ## 5.0.1
46
+
47
+ ### Patch Changes
48
+
49
+ - Updated dependencies
50
+ [[`1995db7`](https://github.com/brighte-labs/spark-web/commit/1995db7f4342803732c7648ab3ca6d32442cc347)]:
51
+ - @spark-web/theme@5.12.0
52
+
53
+ ## 5.0.0
54
+
55
+ ### Major Changes
56
+
57
+ - This release of spark-web standardises the version across all packages to be
58
+ **`v5`**, primarily signifying the switch from `@emotion/css` to
59
+ `@emotion/react` as one of the key dependencies of the entire library, in
60
+ order to support server-side rendering / SSR.
61
+
62
+ This release also introduces support for theming, to allow for more co-branded
63
+ experiences across our web applications. It also supports component-level
64
+ theming for `<Button />`, `<ButtonLink />`, and `<Checkbox />`, which provides
65
+ the capability to override the global theme available inside an application.
66
+
67
+ To use this in an application, you can wrap the affected areas with a
68
+ `ThemeProvider`:
69
+
70
+ ```
71
+ <ThemeProvider theme="pantheon">
72
+ <Input type="text" />
73
+ <Button type="submit" />
74
+ </ThemeProvider>
75
+ ```
76
+
77
+ Part of the theming capabilities includes a new theme for `spark-web` called
78
+ "pantheon", which should map with our co-branding efforts in the Pantheon
79
+ project. It currently includes a small set of colors and its corresponding
80
+ font family.
81
+
82
+ ### Patch Changes
83
+
84
+ - [#532](https://github.com/brighte-labs/spark-web/pull/532)
85
+ [`631573c`](https://github.com/brighte-labs/spark-web/commit/631573cb72981d99b9afa4ad559123f44e47b2a9)
86
+ Thanks [@ralcoriza-brighte](https://github.com/ralcoriza-brighte)! - Fix
87
+ type-related issues
88
+
89
+ - Updated dependencies
90
+ [[`631573c`](https://github.com/brighte-labs/spark-web/commit/631573cb72981d99b9afa4ad559123f44e47b2a9)]:
91
+ - @spark-web/theme@5.0.0
92
+ - @spark-web/utils@5.0.0
93
+ - @spark-web/box@5.0.0
94
+
95
+ ## 5.0.0-rc.31
96
+
97
+ ### Patch Changes
98
+
99
+ - Fix type-related issues
100
+
101
+ - Updated dependencies []:
102
+ - @spark-web/theme@5.0.0-rc.31
103
+ - @spark-web/utils@5.0.0-rc.31
104
+ - @spark-web/box@5.0.0-rc.31
105
+
106
+ ## 5.0.0-rc.30
107
+
108
+ ### Minor Changes
109
+
110
+ - Adopt latest changes from stable main branch
111
+
112
+ ### Patch Changes
113
+
114
+ - Updated dependencies []:
115
+ - @spark-web/theme@5.0.0-rc.30
116
+ - @spark-web/utils@5.0.0-rc.30
117
+ - @spark-web/box@5.0.0-rc.30
118
+
119
+ ## 5.0.0-rc.29
120
+
121
+ ### Minor Changes
122
+
123
+ - Revise stylesheet maps to align with theme name change
124
+
125
+ ### Patch Changes
126
+
127
+ - Updated dependencies []:
128
+ - @spark-web/theme@5.0.0-rc.29
129
+ - @spark-web/utils@5.0.0-rc.29
130
+ - @spark-web/box@5.0.0-rc.29
131
+
132
+ ## 5.0.0-rc.28
133
+
134
+ ### Minor Changes
135
+
136
+ - Move fonts to theme package; Introduce Pantheon font family and stylesheet
137
+
138
+ ### Patch Changes
139
+
140
+ - Updated dependencies []:
141
+ - @spark-web/theme@5.0.0-rc.28
142
+ - @spark-web/utils@5.0.0-rc.28
143
+ - @spark-web/box@5.0.0-rc.28
144
+
145
+ ## 5.0.0-rc.27
146
+
147
+ ### Minor Changes
148
+
149
+ - Remove theme prop in button link
150
+
151
+ ### Patch Changes
152
+
153
+ - Updated dependencies []:
154
+ - @spark-web/theme@5.0.0-rc.27
155
+ - @spark-web/utils@5.0.0-rc.27
156
+ - @spark-web/box@5.0.0-rc.27
157
+
158
+ ## 5.0.0-rc.26
159
+
160
+ ### Minor Changes
161
+
162
+ - Roll back on using theme prop for component level theming; prefer using
163
+ ThemeProvider in applications instead
164
+
165
+ ### Patch Changes
166
+
167
+ - Updated dependencies []:
168
+ - @spark-web/theme@5.0.0-rc.26
169
+ - @spark-web/utils@5.0.0-rc.26
170
+ - @spark-web/box@5.0.0-rc.26
171
+
172
+ ## 5.0.0-rc.25
173
+
174
+ ### Minor Changes
175
+
176
+ - Implement checkbox tokens for test theme
177
+
178
+ ### Patch Changes
179
+
180
+ - Updated dependencies []:
181
+ - @spark-web/theme@5.0.0-rc.25
182
+ - @spark-web/utils@5.0.0-rc.25
183
+ - @spark-web/box@5.0.0-rc.25
184
+
185
+ ## 5.0.0-rc.24
186
+
187
+ ### Minor Changes
188
+
189
+ - Resolve issues with package build output
190
+
191
+ ### Patch Changes
192
+
193
+ - Updated dependencies []:
194
+ - @spark-web/theme@5.0.0-rc.24
195
+ - @spark-web/utils@5.0.0-rc.24
196
+ - @spark-web/box@5.0.0-rc.24
197
+
198
+ ## 3.0.0-rc.21
199
+
200
+ ### Minor Changes
201
+
202
+ - Introduce global theming provider to set global default theme
203
+
204
+ ### Patch Changes
205
+
206
+ - Updated dependencies []:
207
+ - @spark-web/theme@4.0.0-rc.21
208
+ - @spark-web/utils@2.0.0-rc.21
209
+ - @spark-web/box@2.0.0-rc.21
210
+
211
+ ## 3.0.0-rc.20
212
+
213
+ ### Minor Changes
214
+
215
+ - Support for component-level theming; button-level theming
216
+
217
+ ### Patch Changes
218
+
219
+ - Updated dependencies []:
220
+ - @spark-web/theme@4.0.0-rc.20
221
+ - @spark-web/utils@2.0.0-rc.20
222
+ - @spark-web/box@2.0.0-rc.20
223
+
224
+ ## 3.0.0-rc.19
225
+
226
+ ### Major Changes
227
+
228
+ - test
229
+
230
+ ### Patch Changes
231
+
232
+ - Updated dependencies []:
233
+ - @spark-web/theme@4.0.0-rc.19
234
+ - @spark-web/utils@2.0.0-rc.19
235
+ - @spark-web/box@2.0.0-rc.19
236
+
237
+ ## 3.0.0-rc.18
238
+
239
+ ### Major Changes
240
+
241
+ - tests
242
+
243
+ ### Patch Changes
244
+
245
+ - Updated dependencies []:
246
+ - @spark-web/theme@4.0.0-rc.18
247
+ - @spark-web/utils@2.0.0-rc.18
248
+ - @spark-web/box@2.0.0-rc.18
249
+
250
+ ## 3.0.0-rc.17
251
+
252
+ ### Major Changes
253
+
254
+ - test
255
+
256
+ ### Patch Changes
257
+
258
+ - Updated dependencies []:
259
+ - @spark-web/theme@4.0.0-rc.17
260
+ - @spark-web/utils@2.0.0-rc.17
261
+ - @spark-web/box@2.0.0-rc.17
262
+
263
+ ## 3.0.0-rc.16
264
+
265
+ ### Major Changes
266
+
267
+ - test
268
+
269
+ ### Patch Changes
270
+
271
+ - Updated dependencies []:
272
+ - @spark-web/theme@4.0.0-rc.16
273
+ - @spark-web/utils@2.0.0-rc.16
274
+ - @spark-web/box@2.0.0-rc.16
275
+
276
+ ## 3.0.0-rc.15
277
+
278
+ ### Major Changes
279
+
280
+ - test
281
+
282
+ ### Patch Changes
283
+
284
+ - Updated dependencies []:
285
+ - @spark-web/theme@4.0.0-rc.15
286
+ - @spark-web/utils@2.0.0-rc.15
287
+ - @spark-web/box@2.0.0-rc.15
288
+
289
+ ## 3.0.0-rc.14
290
+
291
+ ### Major Changes
292
+
293
+ - test
294
+
295
+ ### Patch Changes
296
+
297
+ - Updated dependencies []:
298
+ - @spark-web/theme@4.0.0-rc.14
299
+ - @spark-web/utils@2.0.0-rc.14
300
+ - @spark-web/box@2.0.0-rc.14
301
+
302
+ ## 3.0.0-rc.13
303
+
304
+ ### Major Changes
305
+
306
+ - test
307
+
308
+ ### Patch Changes
309
+
310
+ - Updated dependencies []:
311
+ - @spark-web/theme@4.0.0-rc.13
312
+ - @spark-web/utils@2.0.0-rc.13
313
+ - @spark-web/box@2.0.0-rc.13
314
+
315
+ ## 3.0.0-rc.12
316
+
317
+ ### Major Changes
318
+
319
+ - test
320
+
321
+ ### Patch Changes
322
+
323
+ - Updated dependencies []:
324
+ - @spark-web/theme@4.0.0-rc.12
325
+ - @spark-web/utils@2.0.0-rc.12
326
+ - @spark-web/box@2.0.0-rc.12
327
+
328
+ ## 3.0.0-rc.11
329
+
330
+ ### Major Changes
331
+
332
+ - test
333
+
334
+ ### Patch Changes
335
+
336
+ - Updated dependencies []:
337
+ - @spark-web/theme@4.0.0-rc.11
338
+ - @spark-web/utils@2.0.0-rc.11
339
+ - @spark-web/box@2.0.0-rc.11
340
+
341
+ ## 3.0.0-rc.10
342
+
343
+ ### Major Changes
344
+
345
+ - test
346
+
347
+ ### Patch Changes
348
+
349
+ - Updated dependencies []:
350
+ - @spark-web/theme@4.0.0-rc.10
351
+ - @spark-web/utils@2.0.0-rc.10
352
+ - @spark-web/box@2.0.0-rc.10
353
+
354
+ ## 3.0.0-rc.9
355
+
356
+ ### Major Changes
357
+
358
+ - test
359
+
360
+ ### Patch Changes
361
+
362
+ - Updated dependencies []:
363
+ - @spark-web/theme@4.0.0-rc.9
364
+ - @spark-web/utils@2.0.0-rc.9
365
+ - @spark-web/box@2.0.0-rc.9
366
+
367
+ ## 3.0.0-rc.8
368
+
369
+ ### Major Changes
370
+
371
+ - test
372
+
373
+ ### Patch Changes
374
+
375
+ - Updated dependencies []:
376
+ - @spark-web/theme@4.0.0-rc.8
377
+ - @spark-web/utils@2.0.0-rc.8
378
+ - @spark-web/box@2.0.0-rc.8
379
+
380
+ ## 3.0.0-rc.7
381
+
382
+ ### Major Changes
383
+
384
+ - test
385
+
386
+ ### Patch Changes
387
+
388
+ - Updated dependencies []:
389
+ - @spark-web/theme@4.0.0-rc.7
390
+ - @spark-web/utils@2.0.0-rc.7
391
+ - @spark-web/box@2.0.0-rc.7
392
+
393
+ ## 3.0.0-rc.6
394
+
395
+ ### Major Changes
396
+
397
+ - test
398
+
399
+ ### Patch Changes
400
+
401
+ - Updated dependencies []:
402
+ - @spark-web/theme@4.0.0-rc.6
403
+ - @spark-web/utils@2.0.0-rc.6
404
+ - @spark-web/box@2.0.0-rc.6
405
+
406
+ ## 3.0.0-rc.5
407
+
408
+ ### Major Changes
409
+
410
+ - test
411
+
412
+ ### Patch Changes
413
+
414
+ - Updated dependencies []:
415
+ - @spark-web/theme@4.0.0-rc.5
416
+ - @spark-web/utils@2.0.0-rc.5
417
+ - @spark-web/box@2.0.0-rc.5
418
+
419
+ ## 3.0.0-rc.4
420
+
421
+ ### Major Changes
422
+
423
+ - bug
424
+
425
+ ### Patch Changes
426
+
427
+ - Updated dependencies []:
428
+ - @spark-web/theme@4.0.0-rc.4
429
+ - @spark-web/utils@2.0.0-rc.4
430
+ - @spark-web/box@2.0.0-rc.4
431
+
432
+ ## 3.0.0-rc.3
433
+
434
+ ### Major Changes
435
+
436
+ - upgrade package
437
+
438
+ ### Patch Changes
439
+
440
+ - Updated dependencies []:
441
+ - @spark-web/theme@4.0.0-rc.3
442
+ - @spark-web/utils@2.0.0-rc.3
443
+ - @spark-web/box@2.0.0-rc.3
444
+
445
+ ## 3.0.0-rc.2
446
+
447
+ ### Major Changes
448
+
449
+ - add parser
450
+
451
+ ### Patch Changes
452
+
453
+ - Updated dependencies []:
454
+ - @spark-web/theme@4.0.0-rc.2
455
+ - @spark-web/utils@2.0.0-rc.2
456
+ - @spark-web/box@2.0.0-rc.2
457
+
458
+ ## 3.0.0-rc.1
459
+
460
+ ### Major Changes
461
+
462
+ - rc
463
+
464
+ ### Patch Changes
465
+
466
+ - Updated dependencies []:
467
+ - @spark-web/theme@4.0.0-rc.1
468
+ - @spark-web/utils@2.0.0-rc.1
469
+ - @spark-web/box@2.0.0-rc.1
470
+
471
+ ## 3.0.0-rc.0
472
+
473
+ ### Major Changes
474
+
475
+ - rc versio
476
+
477
+ ### Patch Changes
478
+
479
+ - Updated dependencies []:
480
+ - @spark-web/theme@4.0.0-rc.0
481
+ - @spark-web/box@2.0.0-rc.0
482
+ - @spark-web/utils@2.0.0-rc.0
483
+
484
+ ## 2.1.0
485
+
486
+ ### Minor Changes
487
+
488
+ - [#382](https://github.com/brighte-labs/spark-web/pull/382)
489
+ [`955bf5d`](https://github.com/brighte-labs/spark-web/commit/955bf5d7698bfdf45e7f317aa3e726c81d3444c0)
490
+ Thanks [@dilipt-brighte](https://github.com/dilipt-brighte)! - Updates React
491
+ version to latest (18.2.0)
492
+
493
+ ### Patch Changes
494
+
495
+ - Updated dependencies
496
+ [[`955bf5d`](https://github.com/brighte-labs/spark-web/commit/955bf5d7698bfdf45e7f317aa3e726c81d3444c0)]:
497
+ - @spark-web/box@1.2.0
498
+ - @spark-web/theme@3.2.0
499
+ - @spark-web/utils@1.3.0
500
+
501
+ ## 2.0.5
502
+
503
+ ### Patch Changes
504
+
505
+ - [#246](https://github.com/brighte-labs/spark-web/pull/246)
506
+ [`de99b9c`](https://github.com/brighte-labs/spark-web/commit/de99b9c7f72373bd1902cf67f5cfec9a1e1db01c)
507
+ Thanks [@lukebennett88](https://github.com/lukebennett88)! - Remove
508
+ destructuring from theme object
509
+
510
+ - [#218](https://github.com/brighte-labs/spark-web/pull/218)
511
+ [`6fc8d1b`](https://github.com/brighte-labs/spark-web/commit/6fc8d1bc37e25d0cd622bc37f68a1d92eb5961b5)
512
+ Thanks [@nderkim](https://github.com/nderkim)! - Rename files to kebab case
513
+
514
+ - [#222](https://github.com/brighte-labs/spark-web/pull/222)
515
+ [`7f93c45`](https://github.com/brighte-labs/spark-web/commit/7f93c45bbae8c765e10df9d0dd7615473797749b)
516
+ Thanks [@lukebennett88](https://github.com/lukebennett88)! - Update
517
+ dependencies
518
+
519
+ - [#242](https://github.com/brighte-labs/spark-web/pull/242)
520
+ [`6df05f7`](https://github.com/brighte-labs/spark-web/commit/6df05f764e4181c140d6547d6b897d0210468f6a)
521
+ Thanks [@lukebennett88](https://github.com/lukebennett88)! - - Add homepage
522
+ and repository keys to package.json
523
+ - Add CHANGELOG and README to files key in package.json
524
+ - Updated dependencies
525
+ [[`adc5e9e`](https://github.com/brighte-labs/spark-web/commit/adc5e9e6c99acd117f3261edcefdb5573132441b),
526
+ [`de99b9c`](https://github.com/brighte-labs/spark-web/commit/de99b9c7f72373bd1902cf67f5cfec9a1e1db01c),
527
+ [`6fc8d1b`](https://github.com/brighte-labs/spark-web/commit/6fc8d1bc37e25d0cd622bc37f68a1d92eb5961b5),
528
+ [`7f93c45`](https://github.com/brighte-labs/spark-web/commit/7f93c45bbae8c765e10df9d0dd7615473797749b),
529
+ [`62f7de8`](https://github.com/brighte-labs/spark-web/commit/62f7de8a2e1df5ae088c093d3acdaa868d3f61fe),
530
+ [`6df05f7`](https://github.com/brighte-labs/spark-web/commit/6df05f764e4181c140d6547d6b897d0210468f6a)]:
531
+ - @spark-web/box@1.1.0
532
+ - @spark-web/theme@3.1.0
533
+ - @spark-web/utils@1.2.3
534
+
535
+ ## 2.0.4
536
+
537
+ ### Patch Changes
538
+
539
+ - [#208](https://github.com/brighte-labs/spark-web/pull/208)
540
+ [`1ea26ef`](https://github.com/brighte-labs/spark-web/commit/1ea26ef04a3b45875ed0dd2326eeab1fbe1e4bc5)
541
+ Thanks [@lukebennett88](https://github.com/lukebennett88)! - Lower required
542
+ node version
543
+
544
+ - Updated dependencies
545
+ [[`1ea26ef`](https://github.com/brighte-labs/spark-web/commit/1ea26ef04a3b45875ed0dd2326eeab1fbe1e4bc5)]:
546
+ - @spark-web/box@1.0.9
547
+ - @spark-web/theme@3.0.6
548
+ - @spark-web/utils@1.2.2
549
+
550
+ ## 2.0.3
551
+
552
+ ### Patch Changes
553
+
554
+ - [#197](https://github.com/brighte-labs/spark-web/pull/197)
555
+ [`94016d8`](https://github.com/brighte-labs/spark-web/commit/94016d84e26bbe55833bbcbab847a2cce6041538)
556
+ Thanks [@lukebennett88](https://github.com/lukebennett88)! - Update packages
557
+
558
+ - Updated dependencies
559
+ [[`94016d8`](https://github.com/brighte-labs/spark-web/commit/94016d84e26bbe55833bbcbab847a2cce6041538)]:
560
+ - @spark-web/box@1.0.8
561
+ - @spark-web/theme@3.0.5
562
+ - @spark-web/utils@1.2.1
563
+
564
+ ## 2.0.2
565
+
566
+ ### Patch Changes
567
+
568
+ - [#173](https://github.com/brighte-labs/spark-web/pull/173)
569
+ [`90b7e9c`](https://github.com/brighte-labs/spark-web/commit/90b7e9cf4eb7e864d765c74b22c3dedf3d262e25)
570
+ Thanks [@lukebennett88](https://github.com/lukebennett88)! - Update babel
571
+ dependency
572
+
573
+ - Updated dependencies
574
+ [[`90b7e9c`](https://github.com/brighte-labs/spark-web/commit/90b7e9cf4eb7e864d765c74b22c3dedf3d262e25),
575
+ [`c3867af`](https://github.com/brighte-labs/spark-web/commit/c3867af7b77dfae3580ab63a5d5c9e8452f2da62)]:
576
+ - @spark-web/box@1.0.7
577
+ - @spark-web/theme@3.0.3
578
+ - @spark-web/utils@1.2.0
579
+
580
+ ## 2.0.1
581
+
582
+ ### Patch Changes
583
+
584
+ - [#167](https://github.com/brighte-labs/spark-web/pull/167)
585
+ [`4f79350`](https://github.com/brighte-labs/spark-web/commit/4f793508fdb43ddd452f0d59a3126101f9fa5459)
586
+ Thanks [@lukebennett88](https://github.com/lukebennett88)! - Update Babel
587
+
588
+ - Updated dependencies
589
+ [[`4f79350`](https://github.com/brighte-labs/spark-web/commit/4f793508fdb43ddd452f0d59a3126101f9fa5459),
590
+ [`60f7281`](https://github.com/brighte-labs/spark-web/commit/60f7281c4a194d934a2ce561cad47e737b0fb48e)]:
591
+ - @spark-web/box@1.0.6
592
+ - @spark-web/theme@3.0.2
593
+ - @spark-web/utils@1.1.5
594
+
595
+ ## 2.0.0
596
+
597
+ ### Major Changes
598
+
599
+ - [#99](https://github.com/brighte-labs/spark-web/pull/99)
600
+ [`3db131b`](https://github.com/brighte-labs/spark-web/commit/3db131bfadbc4149d05b7c74be1a3e68cdd5b18f)
601
+ Thanks [@oscargws](https://github.com/oscargws)! - Removed props spreading
602
+ from multiple packages
603
+
604
+ ### Minor Changes
605
+
606
+ - [#146](https://github.com/brighte-labs/spark-web/pull/146)
607
+ [`4e2dc42`](https://github.com/brighte-labs/spark-web/commit/4e2dc429711b2d0d9e180716dcee6a124608f694)
608
+ Thanks [@lukebennett88](https://github.com/lukebennett88)! - Add className and
609
+ style back to layout primitives
610
+
611
+ ## 1.0.5
612
+
613
+ ### Patch Changes
614
+
615
+ - [#113](https://github.com/brighte-labs/spark-web/pull/113)
616
+ [`156236d`](https://github.com/brighte-labs/spark-web/commit/156236d2474aee66a0b8e2030635f9c08a5b78ba)
617
+ Thanks [@lukebennett88](https://github.com/lukebennett88)! - Update
618
+ dependencies
619
+
620
+ - Updated dependencies
621
+ [[`156236d`](https://github.com/brighte-labs/spark-web/commit/156236d2474aee66a0b8e2030635f9c08a5b78ba)]:
622
+ - @spark-web/box@1.0.5
623
+ - @spark-web/theme@3.0.1
624
+ - @spark-web/utils@1.1.3
625
+
626
+ ## 1.0.4
627
+
628
+ ### Patch Changes
629
+
630
+ - [#83](https://github.com/brighte-labs/spark-web/pull/83)
631
+ [`1ef4f82`](https://github.com/brighte-labs/spark-web/commit/1ef4f82df999c487b79cd216c17ca5735e444fc5)
632
+ Thanks [@ChristopherMitchell242](https://github.com/ChristopherMitchell242)! -
633
+ Data attribute added to component props to allow consumers to attach custom
634
+ attributes to components
635
+
636
+ * [#52](https://github.com/brighte-labs/spark-web/pull/52)
637
+ [`82ab744`](https://github.com/brighte-labs/spark-web/commit/82ab744f198466810f3386bc459b8ab4d57c820e)
638
+ Thanks [@lukebennett88](https://github.com/lukebennett88)! - Add files array
639
+ to package.json files
640
+
641
+ * Updated dependencies
642
+ [[`182a53a`](https://github.com/brighte-labs/spark-web/commit/182a53a484892df48754e89dd714459a7f69fcff),
643
+ [`82ab744`](https://github.com/brighte-labs/spark-web/commit/82ab744f198466810f3386bc459b8ab4d57c820e),
644
+ [`df618d9`](https://github.com/brighte-labs/spark-web/commit/df618d92d534e06f06ecedc95ea6bdd51cdc906b)]:
645
+ - @spark-web/theme@3.0.0
646
+ - @spark-web/box@1.0.4
647
+ - @spark-web/utils@1.1.2
648
+
649
+ ## 1.0.3
650
+
651
+ ### Patch Changes
652
+
653
+ - [#42](https://github.com/brighte-labs/spark-web/pull/42)
654
+ [`435779a`](https://github.com/brighte-labs/spark-web/commit/435779aa42bd635bbf43e1fd41724c666402caa2)
655
+ Thanks [@lukebennett88](https://github.com/lukebennett88)! - Prevent multiple
656
+ versions of React
657
+
658
+ - Updated dependencies
659
+ [[`435779a`](https://github.com/brighte-labs/spark-web/commit/435779aa42bd635bbf43e1fd41724c666402caa2)]:
660
+ - @spark-web/box@1.0.3
661
+ - @spark-web/theme@2.0.2
662
+ - @spark-web/utils@1.1.1
663
+
664
+ ## 1.0.2
665
+
666
+ ### Patch Changes
667
+
668
+ - [#40](https://github.com/brighte-labs/spark-web/pull/40)
669
+ [`062c8ab`](https://github.com/brighte-labs/spark-web/commit/062c8ab8c7b4120f8d14c269b5f7801288c678ca)
670
+ Thanks [@lukebennett88](https://github.com/lukebennett88)! - Add
671
+ @babel/transform-runtime
672
+
673
+ - Updated dependencies
674
+ [[`062c8ab`](https://github.com/brighte-labs/spark-web/commit/062c8ab8c7b4120f8d14c269b5f7801288c678ca)]:
675
+ - @spark-web/box@1.0.2
676
+ - @spark-web/theme@2.0.1
677
+ - @spark-web/utils@1.0.2
678
+
679
+ ## 1.0.1
680
+
681
+ ### Patch Changes
682
+
683
+ - [#36](https://github.com/brighte-labs/spark-web/pull/36)
684
+ [`8546f8f`](https://github.com/brighte-labs/spark-web/commit/8546f8f05daaa79ea3ff954c6c4928a7a2d0622d)
685
+ Thanks [@lukebennett88](https://github.com/lukebennett88)! - Update Babel
686
+ config
687
+
688
+ - Updated dependencies
689
+ [[`aebff30`](https://github.com/brighte-labs/spark-web/commit/aebff30c86cb0a9db22b545c46159ce0d1c14afb),
690
+ [`8546f8f`](https://github.com/brighte-labs/spark-web/commit/8546f8f05daaa79ea3ff954c6c4928a7a2d0622d)]:
691
+ - @spark-web/theme@2.0.0
692
+ - @spark-web/box@1.0.1
693
+ - @spark-web/utils@1.0.1
694
+
695
+ ## 1.0.0
696
+
697
+ ### Major Changes
698
+
699
+ - [#27](https://github.com/brighte-labs/spark-web/pull/27)
700
+ [`4c8e398`](https://github.com/brighte-labs/spark-web/commit/4c8e3988f8a59d3dab60a6b67b1128b6ff2a5f2c)
701
+ Thanks [@JedWatson](https://github.com/JedWatson)! - Initial Version
702
+
703
+ ### Patch Changes
704
+
705
+ - Updated dependencies
706
+ [[`4c8e398`](https://github.com/brighte-labs/spark-web/commit/4c8e3988f8a59d3dab60a6b67b1128b6ff2a5f2c)]:
707
+ - @spark-web/box@1.0.0
708
+ - @spark-web/theme@1.0.0
709
+ - @spark-web/utils@1.0.0
package/CLAUDE.md ADDED
@@ -0,0 +1,70 @@
1
+ # @spark-web/columns — AI Context
2
+
3
+ ## What this is
4
+
5
+ CSS grid layout component. Distributes children into equal-width columns by
6
+ default, or proportionally via a `template` array. Supports responsive collapse
7
+ to a single column below a breakpoint. Use `Columns` for filter bars, form
8
+ layouts with side-by-side fields, and any N-column grid.
9
+
10
+ ## What this is NOT
11
+
12
+ - Not for a single row of items — use `Row` for horizontal flex layouts
13
+ - Not for vertical stacks — use `Stack`
14
+ - Not for wrapping inline content — use `Inline`
15
+
16
+ ## Props interface
17
+
18
+ | Prop | Type | Default | Notes |
19
+ | --------------- | --------------------------------------------------------- | ------- | --------------------------------------------------------------------------- |
20
+ | `gap` | spacing token (responsive) | — | Gap between all grid cells |
21
+ | `template` | `number[]` | — | Fractional column widths, e.g. `[2, 1]` → `2fr 1fr`. Omit for equal columns |
22
+ | `collapseBelow` | `'tablet' \| 'desktop' \| 'wide'` | — | Stack columns vertically below this breakpoint |
23
+ | `alignY` | `'top' \| 'center' \| 'bottom' \| 'stretch'` (responsive) | `'top'` | Vertical alignment of items in each row |
24
+ | `data` | `DataAttributeMap` | — | Test/analytics attributes |
25
+
26
+ Column count is derived from the number of direct children. Each direct child
27
+ occupies one column.
28
+
29
+ ## Common patterns
30
+
31
+ ### Equal-width 3-column filter bar (collapses on mobile)
32
+
33
+ ```tsx
34
+ <Columns gap="medium" collapseBelow="tablet">
35
+ <Field label="Role" labelVisibility="hidden">
36
+ <Select options={roleOptions} placeholder="Select role" />
37
+ </Field>
38
+ <Field label="Status" labelVisibility="hidden">
39
+ <Select options={statusOptions} placeholder="Select status" />
40
+ </Field>
41
+ <Field label="Search" labelVisibility="hidden">
42
+ <TextInput placeholder="Search users">
43
+ <InputAdornment placement="start">
44
+ <SearchIcon size="xsmall" tone="placeholder" />
45
+ </InputAdornment>
46
+ </TextInput>
47
+ </Field>
48
+ </Columns>
49
+ ```
50
+
51
+ ### Proportional 2-column layout
52
+
53
+ ```tsx
54
+ {
55
+ /* Left column takes 2/3, right takes 1/3 */
56
+ }
57
+ <Columns gap="large" template={[2, 1]}>
58
+ <MainContent />
59
+ <Sidebar />
60
+ </Columns>;
61
+ ```
62
+
63
+ ## Do NOTs
64
+
65
+ - NEVER set `display`, `gap` via inline styles, or `gridTemplateColumns`
66
+ directly — use `Columns` props
67
+ - NEVER wrap a single child in `Columns` — use `Box` or `Stack`
68
+ - NEVER use `Columns` when items need to wrap dynamically — use `Inline`
69
+ - NEVER use `template` values that don't sum to a meaningful ratio — keep it
70
+ simple (e.g. `[1, 1]`, `[2, 1]`, `[1, 2, 1]`)
package/README.md ADDED
@@ -0,0 +1,113 @@
1
+ ---
2
+ title: Columns
3
+ storybookPath: page-layout-columns--default
4
+ isExperimentalPackage: false
5
+ ---
6
+
7
+ Use the columns primitive to layout content in configurable columns.
8
+
9
+ Each child represents a single column. By default that column will span 1
10
+ fraction of the total number of children.
11
+
12
+ ```jsx live
13
+ <Columns>
14
+ <Placeholder />
15
+ <Placeholder />
16
+ <Placeholder />
17
+ </Columns>
18
+ ```
19
+
20
+ ## Examples
21
+
22
+ ### Gap
23
+
24
+ The spacing between children can be adjusted using the `gap` prop.
25
+
26
+ ```jsx live
27
+ <Columns gap="large">
28
+ <Placeholder />
29
+ <Placeholder />
30
+ <Placeholder />
31
+ </Columns>
32
+ ```
33
+
34
+ ### Vertical alignment
35
+
36
+ Columns can be aligned vertically using the `alignY` prop.
37
+
38
+ ```jsx live
39
+ <Stack gap="medium" dividers>
40
+ <Columns gap="small" alignY="top">
41
+ <Placeholder />
42
+ <Placeholder label="top (default)" height={64} />
43
+ <Placeholder />
44
+ </Columns>
45
+ <Columns gap="small" alignY="center">
46
+ <Placeholder />
47
+ <Placeholder label="center" height={64} />
48
+ <Placeholder />
49
+ </Columns>
50
+ <Columns gap="small" alignY="bottom">
51
+ <Placeholder />
52
+ <Placeholder label="bottom" height={64} />
53
+ <Placeholder />
54
+ </Columns>
55
+ <Columns gap="small" alignY="stretch">
56
+ <Placeholder />
57
+ <Placeholder label="stretch" height={64} />
58
+ <Placeholder />
59
+ </Columns>
60
+ </Stack>
61
+ ```
62
+
63
+ ### Collapsing across breakpoints
64
+
65
+ Columns can be collapsed into a single vertical stack responsively using the
66
+ `collapseBelow` prop.
67
+
68
+ ```jsx live
69
+ <Columns gap="large" collapseBelow="desktop">
70
+ <Placeholder />
71
+ <Placeholder />
72
+ <Placeholder />
73
+ </Columns>
74
+ ```
75
+
76
+ ### Template
77
+
78
+ If you need more control over how your columns are distributed, you can use the
79
+ `template` prop. `template` receives an array of numbers that represent the
80
+ relative width of each column.
81
+
82
+ ```jsx live
83
+ <Columns gap="small" template={[1, 3, 1]} collapseBelow="tablet">
84
+ <Box border="field" padding="small">
85
+ <Text>nav</Text>
86
+ </Box>
87
+ <Box border="field" padding="small">
88
+ <Text>main</Text>
89
+ </Box>
90
+ <Box border="field" padding="small">
91
+ <Text>aside</Text>
92
+ </Box>
93
+ </Columns>
94
+ ```
95
+
96
+ ## Props
97
+
98
+ <PropsTable displayName="Columns" />
99
+
100
+ [`Box`](/package/box) props are also included as `Column` props and are not
101
+ listed here (excluding `display`, `alignItems`, `gap`, `flexDirection`,
102
+ `justifyContent` and `flexWrap`).
103
+
104
+ Extra props are passed into the underlying [`Box`](/package/box) component.
105
+
106
+ [responsive-prop]:
107
+ https://github.com/brighte-labs/spark-web/blob/e503bea4f7668d187ec7a78f99c5ed374417588b/packages/theme/src/themeUtils.ts#L11
108
+ [responsive-range-props]:
109
+ https://github.com/brighte-labs/spark-web/blob/e503bea4f7668d187ec7a78f99c5ed374417588b/packages/theme/src/themeUtils.ts#L130
110
+ [gap]:
111
+ https://github.com/brighte-labs/spark-web/blob/e7f6f4285b4cfd876312cc89fbdd094039aa239a/packages/columns/src/Columns.tsx#L17
112
+ [data-attribute-map]:
113
+ https://github.com/brighte-labs/spark-web/blob/e7f6f4285b4cfd876312cc89fbdd094039aa239a/packages/utils/src/internal/buildDataAttributes.ts#L1
@@ -0,0 +1,14 @@
1
+ declare const alignYLookup: {
2
+ readonly top: "start";
3
+ readonly center: "center";
4
+ readonly bottom: "end";
5
+ readonly stretch: "stretch";
6
+ };
7
+ export type AlignY = keyof typeof alignYLookup;
8
+ export declare const alignYToAlignItems: (prop?: import("@spark-web/theme").ResponsiveProp<"center" | "bottom" | "top" | "stretch"> | undefined) => "center" | "end" | "start" | "stretch" | {
9
+ mobile: "center" | "end" | "start" | "stretch" | undefined;
10
+ tablet: "center" | "end" | "start" | "stretch" | undefined;
11
+ desktop: "center" | "end" | "start" | "stretch" | undefined;
12
+ wide: "center" | "end" | "start" | "stretch" | undefined;
13
+ } | undefined;
14
+ export {};
@@ -0,0 +1,39 @@
1
+ import type { BoxProps } from '@spark-web/box';
2
+ import type { ResponsiveProp, ResponsiveRangeProps, SparkTheme } from '@spark-web/theme';
3
+ import type { DataAttributeMap } from '@spark-web/utils/internal';
4
+ import type { ReactNode } from 'react';
5
+ import type { AlignY } from "./alignment.js";
6
+ type Gap = ResponsiveProp<keyof Omit<SparkTheme['spacing'], 'none'>>;
7
+ type ValidBoxProps = Omit<BoxProps, 'display' | 'alignItems' | 'gap' | 'flexDirection' | 'justifyContent' | 'flexWrap' | 'dangerouslySetInnerHTML'>;
8
+ export type ColumnsProps = {
9
+ /** Vertically align items within the container. */
10
+ alignY?: ResponsiveProp<AlignY>;
11
+ /** Elements representing each column. */
12
+ children: ReactNode;
13
+ /** At which breakpoint, if any, should the columns collapse. */
14
+ collapseBelow?: ResponsiveRangeProps['below'];
15
+ /** Sets data attributes on the component. */
16
+ data?: DataAttributeMap;
17
+ /** The size of the gap between each column. */
18
+ gap?: Gap;
19
+ /** Define the relative width of each column. By default each column is the same width. */
20
+ template?: number[];
21
+ } & ValidBoxProps;
22
+ export declare const Columns: <Comp extends import("react").ElementType = "div">(props: {
23
+ as?: Comp | undefined;
24
+ ref?: import("react").Ref<Comp extends "symbol" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "set" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | keyof HTMLElementTagNameMap ? (HTMLElementTagNameMap & Pick<SVGElementTagNameMap, "symbol" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "set" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view">)[Comp] : Comp extends new (...args: any) => any ? InstanceType<Comp> : undefined> | undefined;
25
+ } & Omit<import("react").PropsWithoutRef<import("react").ComponentProps<Comp>>, "as"> & {
26
+ /** Vertically align items within the container. */
27
+ alignY?: ResponsiveProp<AlignY>;
28
+ /** Elements representing each column. */
29
+ children: ReactNode;
30
+ /** At which breakpoint, if any, should the columns collapse. */
31
+ collapseBelow?: ResponsiveRangeProps["below"];
32
+ /** Sets data attributes on the component. */
33
+ data?: DataAttributeMap;
34
+ /** The size of the gap between each column. */
35
+ gap?: Gap;
36
+ /** Define the relative width of each column. By default each column is the same width. */
37
+ template?: number[];
38
+ } & ValidBoxProps) => import("react").ReactElement;
39
+ export {};
@@ -0,0 +1,2 @@
1
+ export { Columns } from "./columns.js";
2
+ export type { ColumnsProps } from "./columns.js";
@@ -0,0 +1,2 @@
1
+ export * from "./declarations/src/index.js";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bhcmstd2ViLWNvbHVtbnMuY2pzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuL2RlY2xhcmF0aW9ucy9zcmMvaW5kZXguZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSJ9
@@ -0,0 +1,62 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
6
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
7
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
8
+ var react$1 = require('@emotion/react');
9
+ var box = require('@spark-web/box');
10
+ var theme = require('@spark-web/theme');
11
+ var ts = require('@spark-web/utils/ts');
12
+ var react = require('react');
13
+ var jsxRuntime = require('@emotion/react/jsx-runtime');
14
+
15
+ var alignYLookup = {
16
+ top: 'start',
17
+ center: 'center',
18
+ bottom: 'end',
19
+ stretch: 'stretch'
20
+ };
21
+ var alignYToAlignItems = theme.createResponsiveMapFn(alignYLookup);
22
+
23
+ var _excluded = ["alignY", "collapseBelow", "data", "gap", "template"];
24
+ var Columns = ts.forwardRefWithAs(function (_ref, forwardedRef) {
25
+ var _ref$alignY = _ref.alignY,
26
+ alignY = _ref$alignY === void 0 ? 'top' : _ref$alignY,
27
+ collapseBelow = _ref.collapseBelow,
28
+ data = _ref.data,
29
+ gap = _ref.gap,
30
+ template = _ref.template,
31
+ props = _objectWithoutProperties(_ref, _excluded);
32
+ var theme$1 = theme.useTheme();
33
+ var alignItems = alignYToAlignItems(alignY);
34
+ var count = react.Children.count(props.children);
35
+ var gridTemplateColumns = template ? template.map(function (c) {
36
+ return "".concat(c, "fr");
37
+ }).join(' ') : "repeat(".concat(count, ", 1fr)");
38
+ var _theme$utils$responsi = theme$1.utils.responsiveRange({
39
+ below: collapseBelow
40
+ }),
41
+ _theme$utils$responsi2 = _slicedToArray(_theme$utils$responsi, 4),
42
+ collapseOnMobile = _theme$utils$responsi2[0],
43
+ collapseOnTablet = _theme$utils$responsi2[1],
44
+ collapseOnDesktop = _theme$utils$responsi2[2],
45
+ collapseOnWide = _theme$utils$responsi2[3];
46
+ return jsxRuntime.jsx(box.Box, _objectSpread({
47
+ ref: forwardedRef,
48
+ css: react$1.css(theme$1.utils.resolveResponsiveProps({
49
+ alignItems: alignItems,
50
+ display: 'grid',
51
+ gap: theme$1.utils.mapResponsiveScale(gap, theme$1.spacing),
52
+ gridTemplateColumns: collapseBelow ? theme$1.utils.optimizeResponsiveArray([collapseOnMobile ? null : gridTemplateColumns, collapseOnTablet ? null : gridTemplateColumns, collapseOnDesktop ? null : gridTemplateColumns, collapseOnWide ? null : gridTemplateColumns]) : gridTemplateColumns,
53
+ // fix flex overflow bug that prevents text truncation
54
+ '> *': {
55
+ minWidth: 0
56
+ }
57
+ })),
58
+ data: data
59
+ }, props));
60
+ });
61
+
62
+ exports.Columns = Columns;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ if (process.env.NODE_ENV === "production") {
4
+ module.exports = require("./spark-web-columns.cjs.prod.js");
5
+ } else {
6
+ module.exports = require("./spark-web-columns.cjs.dev.js");
7
+ }
@@ -0,0 +1,62 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
6
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
7
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
8
+ var react$1 = require('@emotion/react');
9
+ var box = require('@spark-web/box');
10
+ var theme = require('@spark-web/theme');
11
+ var ts = require('@spark-web/utils/ts');
12
+ var react = require('react');
13
+ var jsxRuntime = require('@emotion/react/jsx-runtime');
14
+
15
+ var alignYLookup = {
16
+ top: 'start',
17
+ center: 'center',
18
+ bottom: 'end',
19
+ stretch: 'stretch'
20
+ };
21
+ var alignYToAlignItems = theme.createResponsiveMapFn(alignYLookup);
22
+
23
+ var _excluded = ["alignY", "collapseBelow", "data", "gap", "template"];
24
+ var Columns = ts.forwardRefWithAs(function (_ref, forwardedRef) {
25
+ var _ref$alignY = _ref.alignY,
26
+ alignY = _ref$alignY === void 0 ? 'top' : _ref$alignY,
27
+ collapseBelow = _ref.collapseBelow,
28
+ data = _ref.data,
29
+ gap = _ref.gap,
30
+ template = _ref.template,
31
+ props = _objectWithoutProperties(_ref, _excluded);
32
+ var theme$1 = theme.useTheme();
33
+ var alignItems = alignYToAlignItems(alignY);
34
+ var count = react.Children.count(props.children);
35
+ var gridTemplateColumns = template ? template.map(function (c) {
36
+ return "".concat(c, "fr");
37
+ }).join(' ') : "repeat(".concat(count, ", 1fr)");
38
+ var _theme$utils$responsi = theme$1.utils.responsiveRange({
39
+ below: collapseBelow
40
+ }),
41
+ _theme$utils$responsi2 = _slicedToArray(_theme$utils$responsi, 4),
42
+ collapseOnMobile = _theme$utils$responsi2[0],
43
+ collapseOnTablet = _theme$utils$responsi2[1],
44
+ collapseOnDesktop = _theme$utils$responsi2[2],
45
+ collapseOnWide = _theme$utils$responsi2[3];
46
+ return jsxRuntime.jsx(box.Box, _objectSpread({
47
+ ref: forwardedRef,
48
+ css: react$1.css(theme$1.utils.resolveResponsiveProps({
49
+ alignItems: alignItems,
50
+ display: 'grid',
51
+ gap: theme$1.utils.mapResponsiveScale(gap, theme$1.spacing),
52
+ gridTemplateColumns: collapseBelow ? theme$1.utils.optimizeResponsiveArray([collapseOnMobile ? null : gridTemplateColumns, collapseOnTablet ? null : gridTemplateColumns, collapseOnDesktop ? null : gridTemplateColumns, collapseOnWide ? null : gridTemplateColumns]) : gridTemplateColumns,
53
+ // fix flex overflow bug that prevents text truncation
54
+ '> *': {
55
+ minWidth: 0
56
+ }
57
+ })),
58
+ data: data
59
+ }, props));
60
+ });
61
+
62
+ exports.Columns = Columns;
@@ -0,0 +1,58 @@
1
+ import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
2
+ import _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';
3
+ import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
4
+ import { css } from '@emotion/react';
5
+ import { Box } from '@spark-web/box';
6
+ import { createResponsiveMapFn, useTheme } from '@spark-web/theme';
7
+ import { forwardRefWithAs } from '@spark-web/utils/ts';
8
+ import { Children } from 'react';
9
+ import { jsx } from '@emotion/react/jsx-runtime';
10
+
11
+ var alignYLookup = {
12
+ top: 'start',
13
+ center: 'center',
14
+ bottom: 'end',
15
+ stretch: 'stretch'
16
+ };
17
+ var alignYToAlignItems = createResponsiveMapFn(alignYLookup);
18
+
19
+ var _excluded = ["alignY", "collapseBelow", "data", "gap", "template"];
20
+ var Columns = forwardRefWithAs(function (_ref, forwardedRef) {
21
+ var _ref$alignY = _ref.alignY,
22
+ alignY = _ref$alignY === void 0 ? 'top' : _ref$alignY,
23
+ collapseBelow = _ref.collapseBelow,
24
+ data = _ref.data,
25
+ gap = _ref.gap,
26
+ template = _ref.template,
27
+ props = _objectWithoutProperties(_ref, _excluded);
28
+ var theme = useTheme();
29
+ var alignItems = alignYToAlignItems(alignY);
30
+ var count = Children.count(props.children);
31
+ var gridTemplateColumns = template ? template.map(function (c) {
32
+ return "".concat(c, "fr");
33
+ }).join(' ') : "repeat(".concat(count, ", 1fr)");
34
+ var _theme$utils$responsi = theme.utils.responsiveRange({
35
+ below: collapseBelow
36
+ }),
37
+ _theme$utils$responsi2 = _slicedToArray(_theme$utils$responsi, 4),
38
+ collapseOnMobile = _theme$utils$responsi2[0],
39
+ collapseOnTablet = _theme$utils$responsi2[1],
40
+ collapseOnDesktop = _theme$utils$responsi2[2],
41
+ collapseOnWide = _theme$utils$responsi2[3];
42
+ return jsx(Box, _objectSpread({
43
+ ref: forwardedRef,
44
+ css: css(theme.utils.resolveResponsiveProps({
45
+ alignItems: alignItems,
46
+ display: 'grid',
47
+ gap: theme.utils.mapResponsiveScale(gap, theme.spacing),
48
+ gridTemplateColumns: collapseBelow ? theme.utils.optimizeResponsiveArray([collapseOnMobile ? null : gridTemplateColumns, collapseOnTablet ? null : gridTemplateColumns, collapseOnDesktop ? null : gridTemplateColumns, collapseOnWide ? null : gridTemplateColumns]) : gridTemplateColumns,
49
+ // fix flex overflow bug that prevents text truncation
50
+ '> *': {
51
+ minWidth: 0
52
+ }
53
+ })),
54
+ data: data
55
+ }, props));
56
+ });
57
+
58
+ export { Columns };
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@spark-web/columns",
3
+ "version": "0.0.0-snapshot-release-20260409001813",
4
+ "homepage": "https://github.com/brighte-labs/spark-web#readme",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/brighte-labs/spark-web.git",
8
+ "directory": "packages/columns"
9
+ },
10
+ "main": "dist/spark-web-columns.cjs.js",
11
+ "module": "dist/spark-web-columns.esm.js",
12
+ "files": [
13
+ "CHANGELOG.md",
14
+ "CLAUDE.md",
15
+ "dist",
16
+ "README.md"
17
+ ],
18
+ "dependencies": {
19
+ "@babel/runtime": "^7.25.0",
20
+ "@emotion/react": "^11.14.0",
21
+ "@spark-web/box": "0.0.0-snapshot-release-20260409001813",
22
+ "@spark-web/theme": "^5.13.0",
23
+ "@spark-web/utils": "^5.1.0"
24
+ },
25
+ "devDependencies": {
26
+ "@types/react": "^19.1.0",
27
+ "react": "^19.1.0"
28
+ },
29
+ "peerDependencies": {
30
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
31
+ },
32
+ "engines": {
33
+ "node": ">=14"
34
+ }
35
+ }