@gridui/grid 2.1.4 → 2.3.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 (52) hide show
  1. package/README.md +26 -17
  2. package/dist/{primitives/container → container}/container.d.ts +2 -2
  3. package/dist/{primitives/container → container}/style.d.ts +2 -2
  4. package/dist/dashboard-frame/dashboard-frame.d.ts +21 -0
  5. package/dist/dashboard-frame/style.d.ts +12 -0
  6. package/dist/frame-boundary/frame-boundary.d.ts +15 -0
  7. package/dist/frame-boundary/style.d.ts +9 -0
  8. package/dist/frame-footer/frame-footer.d.ts +20 -0
  9. package/dist/{frame/chrome → frame-footer}/style.d.ts +1 -2
  10. package/dist/frame-header/frame-header.d.ts +15 -0
  11. package/dist/frame-rail/frame-rail.d.ts +11 -0
  12. package/dist/{frame/rail → frame-rail}/style.d.ts +1 -1
  13. package/dist/{frame/rail/rail.d.ts → frame-rail-group/frame-rail-group.d.ts} +3 -7
  14. package/dist/frame-region/frame-region.d.ts +12 -0
  15. package/dist/frame-region-row/frame-region-row.d.ts +12 -0
  16. package/dist/{frame/section.d.ts → frame-section/frame-section.d.ts} +7 -7
  17. package/dist/frame-sections/frame-sections.d.ts +9 -0
  18. package/dist/{frame/texture/texture.d.ts → frame-texture/frame-texture.d.ts} +3 -3
  19. package/dist/grid/grid.d.ts +37 -0
  20. package/dist/grid/responsive.d.ts +9 -0
  21. package/dist/{primitives/grid → grid}/style.d.ts +1 -2
  22. package/dist/{primitives/grid → grid}/tracks.d.ts +3 -2
  23. package/dist/{primitives/grid → grid-item}/grid-item.d.ts +4 -4
  24. package/dist/grid-item/responsive.d.ts +8 -0
  25. package/dist/grid-item/style.d.ts +7 -0
  26. package/dist/index.d.ts +44 -2
  27. package/dist/index.js +535 -310
  28. package/dist/index.js.map +4 -4
  29. package/dist/page-frame/page-frame.d.ts +18 -0
  30. package/dist/{frame/page → page-frame}/style.d.ts +2 -2
  31. package/dist/{primitives/row → row}/row.d.ts +2 -2
  32. package/dist/{primitives/row → row}/style.d.ts +1 -1
  33. package/dist/shared/chrome-style.d.ts +7 -0
  34. package/dist/shared/chrome.d.ts +16 -0
  35. package/dist/{frame/decoration → shared}/decoration.d.ts +3 -2
  36. package/dist/shared/frame-style.d.ts +11 -0
  37. package/dist/shared/responsive-types.d.ts +8 -0
  38. package/dist/shared/texture-types.d.ts +7 -0
  39. package/dist/{primitives → shared}/types.d.ts +1 -1
  40. package/dist/{primitives/split → split}/split.d.ts +4 -3
  41. package/dist/{primitives/stack → stack}/stack.d.ts +3 -3
  42. package/dist/{primitives/stack → stack}/style.d.ts +1 -1
  43. package/dist/styles.css +246 -79
  44. package/package.json +5 -10
  45. package/dist/frame/boundary/boundary.d.ts +0 -12
  46. package/dist/frame/chrome/chrome.d.ts +0 -29
  47. package/dist/frame/export.d.ts +0 -19
  48. package/dist/frame/page/page.d.ts +0 -20
  49. package/dist/frame/style.d.ts +0 -11
  50. package/dist/primitives/export.d.ts +0 -19
  51. package/dist/primitives/grid/grid.d.ts +0 -21
  52. package/dist/primitives/responsive.d.ts +0 -11
package/dist/styles.css CHANGED
@@ -5,6 +5,9 @@
5
5
  .\@container {
6
6
  container-type: inline-size;
7
7
  }
8
+ .fixed {
9
+ position: fixed;
10
+ }
8
11
  .relative {
9
12
  position: relative;
10
13
  }
@@ -110,6 +113,66 @@
110
113
  .text-muted {
111
114
  color: var(--gridui-muted);
112
115
  }
116
+ .\[--gridui-dashboard-compact-end-minimum\:0px\] {
117
+ --gridui-dashboard-compact-end-minimum: 0px;
118
+ }
119
+ .\[--gridui-dashboard-compact-end\:0px\] {
120
+ --gridui-dashboard-compact-end: 0px;
121
+ }
122
+ .\[--gridui-dashboard-compact-end\:var\(--gridui-space-8\)\] {
123
+ --gridui-dashboard-compact-end: var(--gridui-space-8);
124
+ }
125
+ .\[--gridui-dashboard-compact-end\:var\(--gridui-space-16\)\] {
126
+ --gridui-dashboard-compact-end: var(--gridui-space-16);
127
+ }
128
+ .\[--gridui-dashboard-compact-end\:var\(--gridui-space-24\)\] {
129
+ --gridui-dashboard-compact-end: var(--gridui-space-24);
130
+ }
131
+ .\[--gridui-dashboard-compact-start-minimum\:0px\] {
132
+ --gridui-dashboard-compact-start-minimum: 0px;
133
+ }
134
+ .\[--gridui-dashboard-compact-start\:0px\] {
135
+ --gridui-dashboard-compact-start: 0px;
136
+ }
137
+ .\[--gridui-dashboard-compact-start\:var\(--gridui-space-8\)\] {
138
+ --gridui-dashboard-compact-start: var(--gridui-space-8);
139
+ }
140
+ .\[--gridui-dashboard-compact-start\:var\(--gridui-space-16\)\] {
141
+ --gridui-dashboard-compact-start: var(--gridui-space-16);
142
+ }
143
+ .\[--gridui-dashboard-compact-start\:var\(--gridui-space-24\)\] {
144
+ --gridui-dashboard-compact-start: var(--gridui-space-24);
145
+ }
146
+ .\[--gridui-dashboard-end-minimum\:0px\] {
147
+ --gridui-dashboard-end-minimum: 0px;
148
+ }
149
+ .\[--gridui-dashboard-end\:0px\] {
150
+ --gridui-dashboard-end: 0px;
151
+ }
152
+ .\[--gridui-dashboard-end\:var\(--gridui-space-8\)\] {
153
+ --gridui-dashboard-end: var(--gridui-space-8);
154
+ }
155
+ .\[--gridui-dashboard-end\:var\(--gridui-space-16\)\] {
156
+ --gridui-dashboard-end: var(--gridui-space-16);
157
+ }
158
+ .\[--gridui-dashboard-end\:var\(--gridui-space-24\)\] {
159
+ --gridui-dashboard-end: var(--gridui-space-24);
160
+ }
161
+ .\[--gridui-dashboard-start-minimum\:0px\] {
162
+ --gridui-dashboard-start-minimum: 0px;
163
+ }
164
+ .\[--gridui-dashboard-start\:0px\] {
165
+ --gridui-dashboard-start: 0px;
166
+ }
167
+ .\[--gridui-dashboard-start\:var\(--gridui-space-8\)\] {
168
+ --gridui-dashboard-start: var(--gridui-space-8);
169
+ }
170
+ .\[--gridui-dashboard-start\:var\(--gridui-space-16\)\] {
171
+ --gridui-dashboard-start: var(--gridui-space-16);
172
+ }
173
+ .\[--gridui-dashboard-start\:var\(--gridui-space-24\)\] {
174
+ --gridui-dashboard-start: var(--gridui-space-24);
175
+ }
113
176
  .\[\&\>\.gridui-frame-rail-content\]\:sticky > .gridui-frame-rail-content {
114
177
  position: sticky;
115
178
  }
@@ -140,6 +203,65 @@
140
203
  }
141
204
  }
142
205
  @layer components {
206
+ .gridui-dashboard-frame {
207
+ --gridui-dashboard-outline-clearance: max(calc(var(--gridui-hover-width) + var(--gridui-hover-offset)), calc(var(--gridui-focus-width) + var(--gridui-focus-offset)));
208
+ --gridui-dashboard-start-minimum: var(--gridui-dashboard-outline-clearance);
209
+ --gridui-dashboard-end-minimum: var(--gridui-dashboard-outline-clearance);
210
+ --gridui-dashboard-compact-start-minimum: var(--gridui-dashboard-outline-clearance);
211
+ --gridui-dashboard-compact-end-minimum: var(--gridui-dashboard-outline-clearance);
212
+ --gridui-dashboard-start-gutter: var(--gridui-dashboard-compact-start);
213
+ --gridui-dashboard-end-gutter: var(--gridui-dashboard-compact-end);
214
+ --gridui-dashboard-start-floor: var(--gridui-dashboard-compact-start-minimum);
215
+ --gridui-dashboard-end-floor: var(--gridui-dashboard-compact-end-minimum);
216
+ --gridui-dashboard-effective-start: max(var(--gridui-dashboard-start-gutter), var(--gridui-dashboard-start-floor));
217
+ --gridui-dashboard-effective-end: max(var(--gridui-dashboard-end-gutter), var(--gridui-dashboard-end-floor));
218
+ --gridui-frame-outset-left: var(--gridui-dashboard-effective-start);
219
+ --gridui-frame-outset-right: var(--gridui-dashboard-effective-end);
220
+ display: flex;
221
+ min-width: 0;
222
+ min-height: 0;
223
+ height: 100%;
224
+ padding-inline: var(--gridui-dashboard-effective-start) var(--gridui-dashboard-effective-end);
225
+ color: var(--gridui-foreground);
226
+ background: var(--gridui-background);
227
+ isolation: isolate;
228
+ }
229
+ .gridui-dashboard-frame:dir(rtl) {
230
+ --gridui-frame-outset-left: var(--gridui-dashboard-effective-end);
231
+ --gridui-frame-outset-right: var(--gridui-dashboard-effective-start);
232
+ }
233
+ .gridui-dashboard-frame-body {
234
+ --gridui-frame-bleed-left: calc(var(--gridui-frame-outset-left) + 1px);
235
+ --gridui-frame-bleed-right: calc(var(--gridui-frame-outset-right) + 1px);
236
+ --gridui-frame-decoration-left-clearance: max(0px, calc(var(--gridui-frame-outset-left) - 1px));
237
+ --gridui-frame-decoration-right-clearance: max(0px, calc(var(--gridui-frame-outset-right) - 1px));
238
+ --gridui-frame-decoration-block-clearance: 0px;
239
+ position: relative;
240
+ display: flex;
241
+ flex: 1;
242
+ min-width: 0;
243
+ min-height: 0;
244
+ border-inline: 1px solid var(--gridui-border);
245
+ }
246
+ .gridui-dashboard-frame-body > * {
247
+ flex: 1;
248
+ min-width: 0;
249
+ min-height: 0;
250
+ }
251
+ .gridui-dashboard-frame > .gridui-dashboard-frame-body > .gridui-frame-decoration {
252
+ display: none;
253
+ }
254
+ @media (min-width: 40rem) {
255
+ .gridui-dashboard-frame {
256
+ --gridui-dashboard-start-gutter: var(--gridui-dashboard-start);
257
+ --gridui-dashboard-start-floor: var(--gridui-dashboard-start-minimum);
258
+ --gridui-dashboard-end-floor: var(--gridui-dashboard-end-minimum);
259
+ --gridui-dashboard-end-gutter: var(--gridui-dashboard-end);
260
+ }
261
+ .gridui-dashboard-frame > .gridui-dashboard-frame-body > .gridui-frame-decoration {
262
+ display: block;
263
+ }
264
+ }
143
265
  .gridui-frame-rail-body, .gridui-frame-page-header, .gridui-frame-page-footer, .gridui-frame-main, .gridui-frame-sections {
144
266
  display: grid;
145
267
  min-width: 0;
@@ -250,6 +372,31 @@
250
372
  --gridui-frame-rail-display: var(--gridui-rail-display-lg);
251
373
  }
252
374
  }
375
+ .gridui-frame-boundary {
376
+ position: relative;
377
+ flex-shrink: 0;
378
+ min-width: 0;
379
+ z-index: var(--gridui-z-boundary);
380
+ border-top: 1px solid var(--gridui-frame-previous-border, var(--gridui-border));
381
+ pointer-events: none;
382
+ }
383
+ .gridui-frame-divider {
384
+ box-sizing: border-box;
385
+ height: var(--gridui-band-size);
386
+ border-bottom: 1px solid var(--gridui-border);
387
+ background: var(--gridui-brand-tint);
388
+ pointer-events: none;
389
+ }
390
+ .gridui-frame-stripe {
391
+ background: repeating-linear-gradient( 135deg, var(--gridui-brand-art) 0 2px, var(--gridui-brand-tint) 2px 8px );
392
+ }
393
+ .gridui-frame-space {
394
+ height: var(--gridui-boundary-space-size);
395
+ border: 0;
396
+ }
397
+ .gridui-frame-boundary[data-boundary-extent="frame"] {
398
+ grid-column: 1 / -1;
399
+ }
253
400
  :where(.gridui-frame-section, .gridui-frame-footer, .gridui-frame-fill, .gridui-frame-sections) {
254
401
  --gridui-frame-previous-border: initial;
255
402
  }
@@ -266,26 +413,7 @@
266
413
  --gridui-frame-previous-border: var(--gridui-danger-border);
267
414
  }
268
415
  .gridui-container > .gridui-frame-boundary {
269
- position: relative;
270
- z-index: var(--gridui-z-boundary);
271
- grid-column: full-start / full-end;
272
- border-top: 1px solid var(--gridui-frame-previous-border, var(--gridui-border));
273
- pointer-events: none;
274
- }
275
- .gridui-container > .gridui-frame-divider {
276
- box-sizing: border-box;
277
416
  grid-column: full-start / full-end;
278
- height: var(--gridui-band-size);
279
- border-bottom: 1px solid var(--gridui-border);
280
- background: var(--gridui-brand-tint);
281
- pointer-events: none;
282
- }
283
- .gridui-container > .gridui-frame-stripe {
284
- background: repeating-linear-gradient( 135deg, var(--gridui-brand-art) 0 2px, var(--gridui-brand-tint) 2px 8px );
285
- }
286
- .gridui-container > .gridui-frame-space {
287
- height: var(--gridui-boundary-space-size);
288
- border: 0;
289
417
  }
290
418
  .gridui-frame-surface {
291
419
  position: relative;
@@ -295,39 +423,54 @@
295
423
  z-index: var(--gridui-z-interaction);
296
424
  }
297
425
  .gridui-frame-decoration {
426
+ --gridui-frame-decoration-width: 0px;
427
+ --gridui-frame-decoration-outset: 0px;
298
428
  position: absolute;
299
429
  z-index: var(--gridui-z-content);
300
430
  display: none;
301
- inset: 0 0 0 calc(0px - var(--gridui-frame-rail-width, 0px));
431
+ inset-block: 0;
432
+ width: min(var(--gridui-frame-decoration-width), var(--gridui-frame-decoration-clearance));
302
433
  pointer-events: none;
303
434
  }
435
+ .gridui-frame-decoration[data-side="start"]:dir(ltr), .gridui-frame-decoration[data-side="end"]:dir(rtl) {
436
+ --gridui-frame-decoration-clearance: var(--gridui-frame-decoration-left-clearance, max(var(--gridui-frame-decoration-width), var(--gridui-frame-decoration-outset)));
437
+ --gridui-frame-decoration-anchor: left;
438
+ left: calc(0px - var(--gridui-frame-rail-width, 0px) - min(var(--gridui-frame-decoration-outset), var(--gridui-frame-decoration-clearance)));
439
+ }
440
+ .gridui-frame-decoration[data-side="end"]:dir(ltr), .gridui-frame-decoration[data-side="start"]:dir(rtl) {
441
+ --gridui-frame-decoration-clearance: var(--gridui-frame-decoration-right-clearance, max(var(--gridui-frame-decoration-width), var(--gridui-frame-decoration-outset)));
442
+ --gridui-frame-decoration-anchor: right;
443
+ right: calc(0px - min(var(--gridui-frame-decoration-outset), var(--gridui-frame-decoration-clearance)));
444
+ }
304
445
  .gridui-frame-decoration[data-decoration="nodes"] {
446
+ --gridui-frame-decoration-width: 5px;
447
+ --gridui-frame-decoration-outset: 3px;
305
448
  display: block;
306
- inset-block: -3px auto;
449
+ inset-block: calc(0px - min(3px, var(--gridui-frame-decoration-block-clearance, 3px))) auto;
307
450
  height: 5px;
308
- margin-inline: -3px;
309
- background: linear-gradient(var(--gridui-border), var(--gridui-border)) left / 5px 5px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) right / 5px 5px no-repeat;
451
+ background: linear-gradient(var(--gridui-border), var(--gridui-border));
310
452
  }
311
453
  @media (min-width: 40rem) {
312
454
  .gridui-frame-decoration {
313
455
  display: block;
314
456
  }
315
457
  .gridui-frame-decoration[data-decoration="marks"] {
458
+ --gridui-frame-decoration-width: 11px;
459
+ --gridui-frame-decoration-outset: 12px;
316
460
  inset-block: 24px auto;
317
461
  height: 36px;
318
- margin-inline: -12px;
319
- background: linear-gradient(var(--gridui-border), var(--gridui-border)) top left / 11px 1px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) bottom left / 11px 1px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) top right / 11px 1px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) bottom right / 11px 1px no-repeat;
462
+ background: linear-gradient(var(--gridui-border), var(--gridui-border)) top / 100% 1px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) bottom / 100% 1px no-repeat;
320
463
  }
321
464
  .gridui-frame-decoration[data-decoration="corners"] {
322
- margin: -4px;
323
- background: linear-gradient(var(--gridui-border), var(--gridui-border)) top left / 9px 1px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) top left / 1px 9px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) top right / 9px 1px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) top right / 1px 9px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) bottom left / 9px 1px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) bottom left / 1px 9px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) bottom right / 9px 1px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) bottom right / 1px 9px no-repeat;
465
+ --gridui-frame-decoration-width: 9px;
466
+ --gridui-frame-decoration-outset: 4px;
467
+ inset-block: calc(0px - min(4px, var(--gridui-frame-decoration-block-clearance, 4px)));
468
+ background: linear-gradient(var(--gridui-border), var(--gridui-border)) top / 100% 1px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) top var(--gridui-frame-decoration-anchor) / 1px 9px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) bottom / 100% 1px no-repeat, linear-gradient(var(--gridui-border), var(--gridui-border)) bottom var(--gridui-frame-decoration-anchor) / 1px 9px no-repeat;
324
469
  }
325
470
  .gridui-frame-decoration[data-decoration="ticks"] {
326
- margin-inline: -13px;
327
- background-image: linear-gradient(to bottom, transparent calc(50% - 0.5px), var(--gridui-decoration) calc(50% - 0.5px), var(--gridui-decoration) calc(50% + 0.5px), transparent calc(50% + 0.5px)), linear-gradient(to bottom, transparent calc(50% - 0.5px), var(--gridui-decoration) calc(50% - 0.5px), var(--gridui-decoration) calc(50% + 0.5px), transparent calc(50% + 0.5px));
328
- background-position: left center, right center;
329
- background-size: 12px 12px;
330
- background-repeat: no-repeat round;
471
+ --gridui-frame-decoration-width: 12px;
472
+ --gridui-frame-decoration-outset: 13px;
473
+ background: linear-gradient(to bottom, transparent calc(50% - 0.5px), var(--gridui-decoration) calc(50% - 0.5px), var(--gridui-decoration) calc(50% + 0.5px), transparent calc(50% + 0.5px)) center / 100% 12px no-repeat round;
331
474
  }
332
475
  }
333
476
  .gridui-frame-texture {
@@ -463,55 +606,8 @@
463
606
  padding: var(--gridui-chrome-padding-lg);
464
607
  }
465
608
  }
466
- .gridui-frame-brand {
467
- --gridui-background: var(--gridui-brand-background);
468
- --gridui-foreground: var(--gridui-brand-foreground);
469
- --gridui-muted: var(--gridui-brand-muted);
470
- --gridui-border: var(--gridui-brand-border);
471
- --gridui-link: var(--gridui-brand-link);
472
- --gridui-accent-background: var(--gridui-brand-accent-background);
473
- --gridui-accent-foreground: var(--gridui-brand-accent-foreground);
474
- }
475
- .gridui-frame-warning {
476
- --gridui-background: var(--gridui-warning-background);
477
- --gridui-foreground: var(--gridui-warning-foreground);
478
- --gridui-muted: var(--gridui-warning-muted);
479
- --gridui-border: var(--gridui-warning-border);
480
- --gridui-link: var(--gridui-warning-link);
481
- --gridui-accent-background: var(--gridui-warning-accent-background);
482
- --gridui-accent-foreground: var(--gridui-warning-accent-foreground);
483
- }
484
- .gridui-frame-danger {
485
- --gridui-background: var(--gridui-danger-background);
486
- --gridui-foreground: var(--gridui-danger-foreground);
487
- --gridui-muted: var(--gridui-danger-muted);
488
- --gridui-border: var(--gridui-danger-border);
489
- --gridui-link: var(--gridui-danger-link);
490
- --gridui-accent-background: var(--gridui-danger-accent-background);
491
- --gridui-accent-foreground: var(--gridui-danger-accent-foreground);
492
- }
493
609
  .gridui-frame-brand, .gridui-frame-warning, .gridui-frame-danger {
494
610
  --gridui-frame-previous-border: initial;
495
- --gridui-control-border: var(--gridui-foreground);
496
- --gridui-focus-color: var(--gridui-foreground);
497
- --gridui-decoration: var(--gridui-foreground);
498
- @supports (color: color-mix(in lab, red, red)) {
499
- --gridui-decoration: color-mix(in srgb, var(--gridui-foreground) 9%, transparent);
500
- }
501
- --gridui-brand-tint: var(--gridui-foreground);
502
- @supports (color: color-mix(in lab, red, red)) {
503
- --gridui-brand-tint: color-mix(in srgb, var(--gridui-foreground) 8%, transparent);
504
- }
505
- --gridui-surface: var(--gridui-foreground);
506
- @supports (color: color-mix(in lab, red, red)) {
507
- --gridui-surface: color-mix(in srgb, var(--gridui-foreground) 8%, var(--gridui-background));
508
- }
509
- --gridui-surface-hover: var(--gridui-foreground);
510
- @supports (color: color-mix(in lab, red, red)) {
511
- --gridui-surface-hover: color-mix(in srgb, var(--gridui-foreground) 12%, var(--gridui-background));
512
- }
513
- color: var(--gridui-foreground);
514
- background: var(--gridui-background);
515
611
  }
516
612
  .gridui-split {
517
613
  display: flex;
@@ -549,6 +645,20 @@
549
645
  .gridui-split[data-direction="column-reverse"][data-seam="line"] > :where(:not([hidden]) ~ :not([hidden])) {
550
646
  border-block-end-width: 1px;
551
647
  }
648
+ .gridui-split[data-direction="row"]:where([data-order="physical"]:dir(rtl)) {
649
+ flex-direction: row-reverse;
650
+ }
651
+ .gridui-split[data-direction="row"]:where([data-order="physical"]:dir(rtl))[data-seam="line"] > :where(:not([hidden]) ~ :not([hidden])) {
652
+ border: 0 solid var(--gridui-border);
653
+ border-left-width: 1px;
654
+ }
655
+ .gridui-split[data-direction="row-reverse"]:where([data-order="physical"]:dir(rtl)) {
656
+ flex-direction: row;
657
+ }
658
+ .gridui-split[data-direction="row-reverse"]:where([data-order="physical"]:dir(rtl))[data-seam="line"] > :where(:not([hidden]) ~ :not([hidden])) {
659
+ border: 0 solid var(--gridui-border);
660
+ border-right-width: 1px;
661
+ }
552
662
  @media (min-width: 40rem) {
553
663
  .gridui-split[data-direction-md="row"] {
554
664
  flex-direction: row;
@@ -577,6 +687,20 @@
577
687
  .gridui-split[data-direction-md="column-reverse"][data-seam-md="line"] > :where(:not([hidden]) ~ :not([hidden])) {
578
688
  border-block-end-width: 1px;
579
689
  }
690
+ .gridui-split[data-direction-md="row"]:where([data-order="physical"]:dir(rtl)) {
691
+ flex-direction: row-reverse;
692
+ }
693
+ .gridui-split[data-direction-md="row"]:where([data-order="physical"]:dir(rtl))[data-seam-md="line"] > :where(:not([hidden]) ~ :not([hidden])) {
694
+ border: 0 solid var(--gridui-border);
695
+ border-left-width: 1px;
696
+ }
697
+ .gridui-split[data-direction-md="row-reverse"]:where([data-order="physical"]:dir(rtl)) {
698
+ flex-direction: row;
699
+ }
700
+ .gridui-split[data-direction-md="row-reverse"]:where([data-order="physical"]:dir(rtl))[data-seam-md="line"] > :where(:not([hidden]) ~ :not([hidden])) {
701
+ border: 0 solid var(--gridui-border);
702
+ border-right-width: 1px;
703
+ }
580
704
  }
581
705
  @media (min-width: 64rem) {
582
706
  .gridui-split[data-direction-lg="row"] {
@@ -606,6 +730,49 @@
606
730
  .gridui-split[data-direction-lg="column-reverse"][data-seam-lg="line"] > :where(:not([hidden]) ~ :not([hidden])) {
607
731
  border-block-end-width: 1px;
608
732
  }
733
+ .gridui-split[data-direction-lg="row"]:where([data-order="physical"]:dir(rtl)) {
734
+ flex-direction: row-reverse;
735
+ }
736
+ .gridui-split[data-direction-lg="row"]:where([data-order="physical"]:dir(rtl))[data-seam-lg="line"] > :where(:not([hidden]) ~ :not([hidden])) {
737
+ border: 0 solid var(--gridui-border);
738
+ border-left-width: 1px;
739
+ }
740
+ .gridui-split[data-direction-lg="row-reverse"]:where([data-order="physical"]:dir(rtl)) {
741
+ flex-direction: row;
742
+ }
743
+ .gridui-split[data-direction-lg="row-reverse"]:where([data-order="physical"]:dir(rtl))[data-seam-lg="line"] > :where(:not([hidden]) ~ :not([hidden])) {
744
+ border: 0 solid var(--gridui-border);
745
+ border-right-width: 1px;
746
+ }
747
+ }
748
+ .gridui-frame-region {
749
+ --gridui-frame-region-left: 0px;
750
+ --gridui-frame-region-right: 0px;
751
+ }
752
+ .gridui-frame-region[data-frame-edge="left"], .gridui-frame-region[data-frame-edge="both"] {
753
+ --gridui-frame-region-left: var(--gridui-frame-bleed-left, 0px);
754
+ }
755
+ .gridui-frame-region[data-frame-edge="right"], .gridui-frame-region[data-frame-edge="both"] {
756
+ --gridui-frame-region-right: var(--gridui-frame-bleed-right, 0px);
757
+ }
758
+ :where(.gridui-frame-region) > :where(*) {
759
+ --gridui-frame-bleed-left: 0px;
760
+ --gridui-frame-bleed-right: 0px;
761
+ }
762
+ .gridui-frame-region-row {
763
+ --gridui-frame-region-leading-inset: max(0px, calc(var(--gridui-frame-region-inset) - var(--gridui-frame-region-left, 0px)));
764
+ display: grid;
765
+ grid-template-columns: [frame-left] var(--gridui-frame-region-left, 0px) [surface-left] var(--gridui-frame-region-leading-inset) [content-left] minmax(0, 1fr) [content-right] var(--gridui-frame-region-inset) [accessory-left] auto [surface-right] var(--gridui-frame-region-right, 0px) [frame-right];
766
+ margin-left: calc(0px - var(--gridui-frame-region-left, 0px));
767
+ margin-right: calc(0px - var(--gridui-frame-region-right, 0px));
768
+ min-width: 0;
769
+ }
770
+ .gridui-frame-region-row:dir(rtl) {
771
+ grid-template-columns: [frame-right] var(--gridui-frame-region-right, 0px) [surface-right] auto [accessory-left] var(--gridui-frame-region-inset) [content-right] minmax(0, 1fr) [content-left] var(--gridui-frame-region-leading-inset) [surface-left] var(--gridui-frame-region-left, 0px) [frame-left];
772
+ }
773
+ :where(.gridui-frame-region-row) > :where(*) {
774
+ grid-column: content-left / content-right;
775
+ min-width: 0;
609
776
  }
610
777
  }
611
778
  @property --tw-border-style {
package/package.json CHANGED
@@ -1,14 +1,9 @@
1
1
  {
2
2
  "name": "@gridui/grid",
3
- "version": "2.1.4",
3
+ "version": "2.3.0",
4
4
  "description": "GridUI React grid",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/sudo-ui/GridUI-React-Monorepo.git",
10
- "directory": "packages/grid"
11
- },
12
7
  "files": [
13
8
  "dist",
14
9
  "README.md"
@@ -27,17 +22,17 @@
27
22
  "access": "public"
28
23
  },
29
24
  "dependencies": {
30
- "@gridui/style-utils": "^2.1.2",
31
- "@gridui/theme": "^2.1.2",
25
+ "@gridui/style-utils": "^2.1.3",
26
+ "@gridui/theme": "^2.3.0",
32
27
  "@radix-ui/react-slot": "1.5.0",
33
28
  "class-variance-authority": "0.7.1"
34
29
  },
35
30
  "devDependencies": {
36
- "@gridui-internal/configuration": "0.0.0",
31
+ "@gridui-internal/configuration": "0.0.0-internal",
37
32
  "@jest/globals": "30.5.2",
38
33
  "@storybook/react-vite": "10.6.5",
39
34
  "@types/jest": "30.0.0",
40
- "@types/node": "26.6.5",
35
+ "@types/node": "26.6.6",
41
36
  "@types/react": "19.3.0",
42
37
  "@types/react-dom": "19.3.0",
43
38
  "jest": "30.5.2",
@@ -1,12 +0,0 @@
1
- /**
2
- * @author WMXPY
3
- * @package Grid
4
- * @namespace Frame_Boundary
5
- * @description Boundary
6
- */
7
- import type { FC } from "react";
8
- export type FrameBoundaryStyle = "none" | "line" | "band" | "stripe" | "space";
9
- export type FrameBoundaryProps = {
10
- readonly boundary: FrameBoundaryStyle;
11
- };
12
- export declare const FrameBoundary: FC<FrameBoundaryProps>;
@@ -1,29 +0,0 @@
1
- /**
2
- * @author WMXPY
3
- * @package Grid
4
- * @namespace Frame_Chrome
5
- * @description Chrome
6
- */
7
- import type { FrameBoundaryStyle } from "../boundary/boundary";
8
- import type { FrameDecorationStyle } from "../decoration/decoration";
9
- import type { FrameTone } from "../style";
10
- import type { Responsive, Space } from "@gridui/style-utils/responsive";
11
- import type { ComponentPropsWithRef, FC, ReactNode } from "react";
12
- export type ChromeProps = {
13
- readonly padding?: Responsive<Space>;
14
- };
15
- export type FrameHeaderProps = ComponentPropsWithRef<"header"> & ChromeProps & {
16
- readonly wrap?: boolean;
17
- readonly gap?: Space;
18
- readonly justify?: "start" | "between";
19
- };
20
- export declare const FrameHeader: FC<FrameHeaderProps>;
21
- export type FrameFooterProps = ComponentPropsWithRef<"footer"> & ChromeProps & {
22
- readonly contentLayout?: "flex" | "block";
23
- readonly tone?: FrameTone;
24
- readonly boundary?: FrameBoundaryStyle;
25
- readonly decoration?: FrameDecorationStyle;
26
- readonly signature?: ReactNode;
27
- readonly signatureAppearance?: "standard" | "cropped";
28
- };
29
- export declare const FrameFooter: FC<FrameFooterProps>;
@@ -1,19 +0,0 @@
1
- /**
2
- * @author WMXPY
3
- * @package Grid
4
- * @namespace Frame
5
- * @description Export
6
- */
7
- export type { FrameBoundaryStyle } from "./boundary/boundary";
8
- export type { FrameFooterProps, FrameHeaderProps } from "./chrome/chrome";
9
- export { FrameFooter, FrameHeader } from "./chrome/chrome";
10
- export type { FrameDecorationStyle } from "./decoration/decoration";
11
- export type { FrameSectionsProps, PageFrameProps } from "./page/page";
12
- export { FrameSections, PageFrame } from "./page/page";
13
- export type { FrameRailGroupProps, FrameRailProps } from "./rail/rail";
14
- export { FrameRail, FrameRailGroup } from "./rail/rail";
15
- export type { FrameSectionProps } from "./section";
16
- export { FrameSection } from "./section";
17
- export type { FrameTone } from "./style";
18
- export type { FrameTextureProps, FrameTextureStyle } from "./texture/texture";
19
- export { FrameTexture } from "./texture/texture";
@@ -1,20 +0,0 @@
1
- /**
2
- * @author WMXPY
3
- * @package Grid
4
- * @namespace Frame_Page
5
- * @description Page
6
- */
7
- import type { ContainerProps } from "../../primitives/container/container";
8
- import type { FrameRailGroupProps } from "../rail/rail";
9
- import type { Responsive, Space } from "@gridui/style-utils/responsive";
10
- import type { ComponentPropsWithRef, FC, ReactNode } from "react";
11
- export type PageFrameProps = FrameRailGroupProps & {
12
- readonly width?: ContainerProps["width"];
13
- readonly header?: ReactNode;
14
- readonly footer?: ReactNode;
15
- readonly railScope?: "page" | "main";
16
- readonly mainGutterStart?: Responsive<Space>;
17
- };
18
- export type FrameSectionsProps = ComponentPropsWithRef<"div">;
19
- export declare const FrameSections: FC<FrameSectionsProps>;
20
- export declare const PageFrame: FC<PageFrameProps>;
@@ -1,11 +0,0 @@
1
- /**
2
- * @author WMXPY
3
- * @package Grid
4
- * @namespace Frame
5
- * @description Style
6
- */
7
- export type FrameTone = "neutral" | "brand" | "warning" | "danger";
8
- export declare const frameToneStyles: (props?: ({
9
- tone?: "neutral" | "brand" | "warning" | "danger" | null | undefined;
10
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
- export declare const frameContentStyles: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
@@ -1,19 +0,0 @@
1
- /**
2
- * @author WMXPY
3
- * @package Grid
4
- * @namespace Primitives
5
- * @description Export
6
- */
7
- export type { ContainerProps } from "./container/container";
8
- export { Container } from "./container/container";
9
- export type { GridProps } from "./grid/grid";
10
- export { Grid } from "./grid/grid";
11
- export type { GridItemProps } from "./grid/grid-item";
12
- export { GridItem } from "./grid/grid-item";
13
- export type { Columns, GridColumns, GridTrack, Span } from "./responsive";
14
- export type { RowProps } from "./row/row";
15
- export { Row } from "./row/row";
16
- export type { SplitDirection, SplitProps } from "./split/split";
17
- export { Split } from "./split/split";
18
- export type { StackProps } from "./stack/stack";
19
- export { Stack } from "./stack/stack";
@@ -1,21 +0,0 @@
1
- /**
2
- * @author WMXPY
3
- * @package Grid
4
- * @namespace Primitives_Grid
5
- * @description Grid
6
- */
7
- import type { GridColumns } from "../responsive";
8
- import type { ElementProps } from "../types";
9
- import type { Responsive, Space } from "@gridui/style-utils/responsive";
10
- import type { FC } from "react";
11
- export type GridProps = ElementProps & {
12
- readonly columns?: Responsive<GridColumns>;
13
- readonly fillLastRow?: boolean;
14
- } & ({
15
- readonly frame?: "none";
16
- readonly gap?: Responsive<Space>;
17
- } | {
18
- readonly frame: "cells" | "internal";
19
- readonly gap?: never;
20
- });
21
- export declare const Grid: FC<GridProps>;
@@ -1,11 +0,0 @@
1
- /**
2
- * @author WMXPY
3
- * @package Grid
4
- * @namespace Primitives
5
- * @description Responsive
6
- */
7
- export type Columns = 1 | 2 | 3 | 4 | 6 | 12;
8
- export type GridTrack = "1fr" | "auto";
9
- export type GridColumns = Columns | readonly [GridTrack, ...GridTrack[]];
10
- export type Span = Columns | 5 | 7 | 8 | 9 | 10 | 11 | "full";
11
- export declare const spanValue: (value: Span) => string;