@starci/grammar 0.17.0 → 0.18.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 (63) hide show
  1. package/README.md +25 -7
  2. package/dist/.build-stamp.json +4 -4
  3. package/dist/common/components-forms.css +8 -8
  4. package/dist/common/components-navigation.css +29 -29
  5. package/dist/common/components-overlays.css +13 -15
  6. package/dist/common/components-spacing.css +97 -0
  7. package/dist/common/index.d.ts +1 -1
  8. package/dist/common/index.d.ts.map +1 -1
  9. package/dist/common/index.js +1 -1
  10. package/dist/common/index.js.map +1 -1
  11. package/dist/common/registry.d.ts +11 -0
  12. package/dist/common/registry.d.ts.map +1 -1
  13. package/dist/common/registry.js +2 -1
  14. package/dist/common/registry.js.map +1 -1
  15. package/dist/common/renderers.d.ts +3 -0
  16. package/dist/common/renderers.d.ts.map +1 -1
  17. package/dist/common/renderers.js +3 -0
  18. package/dist/common/renderers.js.map +1 -1
  19. package/dist/common/spacing.d.ts +32 -2
  20. package/dist/common/spacing.d.ts.map +1 -1
  21. package/dist/common/spacing.js +29 -2
  22. package/dist/common/spacing.js.map +1 -1
  23. package/dist/common/styles.css +206 -78
  24. package/dist/core/branch/Rail/index.d.ts +1 -1
  25. package/dist/core/branch/Rail/index.d.ts.map +1 -1
  26. package/dist/core/branch/Rail/index.js +1 -1
  27. package/dist/core/branch/Rail/index.js.map +1 -1
  28. package/dist/core/branch/Tabs/index.d.ts +4 -4
  29. package/dist/core/branch/Tabs/index.d.ts.map +1 -1
  30. package/dist/core/branch/Tabs/index.js +1 -3
  31. package/dist/core/branch/Tabs/index.js.map +1 -1
  32. package/dist/core/composition/Cluster/index.d.ts +23 -0
  33. package/dist/core/composition/Cluster/index.d.ts.map +1 -0
  34. package/dist/core/composition/Cluster/index.js +8 -0
  35. package/dist/core/composition/Cluster/index.js.map +1 -0
  36. package/dist/core/composition/Grid/index.d.ts +32 -0
  37. package/dist/core/composition/Grid/index.d.ts.map +1 -0
  38. package/dist/core/composition/Grid/index.js +19 -0
  39. package/dist/core/composition/Grid/index.js.map +1 -0
  40. package/dist/core/composition/Page/PanesFill.d.ts +11 -0
  41. package/dist/core/composition/Page/PanesFill.d.ts.map +1 -0
  42. package/dist/core/composition/Page/PanesFill.js +12 -0
  43. package/dist/core/composition/Page/PanesFill.js.map +1 -0
  44. package/dist/core/composition/Page/index.d.ts.map +1 -1
  45. package/dist/core/composition/Page/index.js +2 -3
  46. package/dist/core/composition/Page/index.js.map +1 -1
  47. package/dist/core/composition/Stack/index.d.ts +30 -0
  48. package/dist/core/composition/Stack/index.d.ts.map +1 -0
  49. package/dist/core/composition/Stack/index.js +23 -0
  50. package/dist/core/composition/Stack/index.js.map +1 -0
  51. package/dist/core/dna.d.ts +7 -30
  52. package/dist/core/dna.d.ts.map +1 -1
  53. package/dist/core/dna.js +3 -17
  54. package/dist/core/dna.js.map +1 -1
  55. package/dist/core/primitive/Button/index.js +7 -2
  56. package/dist/core/primitive/Button/index.js.map +1 -1
  57. package/dist/core/styles.css +1 -1
  58. package/dist/offset-pop/components-navigation.css +1 -1
  59. package/dist/offset-pop/dna.d.ts +7 -53
  60. package/dist/offset-pop/dna.d.ts.map +1 -1
  61. package/dist/offset-pop/dna.js +3 -17
  62. package/dist/offset-pop/dna.js.map +1 -1
  63. package/package.json +1 -1
package/README.md CHANGED
@@ -409,8 +409,8 @@ The package requires Node 22 or newer, as does the pinned DiceBear engine.
409
409
  MarkdownTableFrame, MediaFrame, Rail, SectionHeader, StaticStateRow, SurfaceAccordionCard,
410
410
  SurfaceCard, SurfaceCopyGroup, SurfaceListCard, VerticalScrollRegion.
411
411
 
412
- **Compositions (12).** BottomNav, Footer, NavigationFeatureNav, Page, PageContainer, PageHeader,
413
- PaneGrid, PaneSection, PrimaryRailLayout, Sidebar, TopBar, WorkspaceShell. Storybook pins settings and data-list content
412
+ **Compositions (15).** BottomNav, Cluster, Footer, Grid, NavigationFeatureNav, Page, PageContainer, PageHeader,
413
+ PaneGrid, PaneSection, PrimaryRailLayout, Sidebar, Stack, TopBar, WorkspaceShell. Storybook pins settings and data-list content
414
414
  recipes to each family; the mobile app recipes reuse the fixed App shell with its left navigation drawer.
415
415
 
416
416
  `PageHeader` heads one page: `breadcrumbs`, `title` (the page's `h1`), `description`, `meta`, `status` chips beside the
@@ -444,9 +444,9 @@ exactly one `PaneGrid` attached flush to the band's separator, reaching both con
444
444
  and arrays of Panes are legal; anything else throws `PANE_GRID_CHILD_NOT_PANE` in development). A `Pane` owns its
445
445
  content inset (`inset="content"`, default, or `"flush"` for a nested PaneGrid or a full-bleed canvas) and takes no
446
446
  `className`: it never pads itself, it publishes the inset to its descendants so dividers and scrollbars stay full-bleed.
447
- The inline inset is `--grammar-pane-inset-inline` (1rem) on both sides at every breakpoint; the block start is
448
- `--grammar-pane-inset-block-start` (0.75rem); the block end is `--grammar-pane-inset-block-end-outer` (1rem) when the
449
- pane touches the grid's bottom edge and `--grammar-pane-inset-block-end-divider` (0.75rem) when it faces a divider.
447
+ Every side takes the container inset `--grammar-inset` (0.75rem) at every breakpoint, through
448
+ `--grammar-pane-inset-inline`, `--grammar-pane-inset-block-start`, `--grammar-pane-inset-block-end-outer` (the grid's
449
+ bottom edge) and `--grammar-pane-inset-block-end-divider` (a divider below).
450
450
  A `collapse="drawer"` pane renders its children in the drawer under the same inset.
451
451
 
452
452
  `PaneSection` is the one band primitive of a pane: every child of a Pane is a `PaneSection` or one nested `PaneGrid`.
@@ -462,8 +462,26 @@ box keeps the vendor's own padding. In a Pane, `ListBox` resolves `inset="panel"
462
462
  padding so the row box and the selected pill start at the edge, and a `Tabs variant="secondary"` track drops its inline
463
463
  padding so the first pill does.
464
464
 
465
- Card padding has one place per axis too: `--grammar-card-padding-inline` and `--grammar-card-padding-block` (1rem each)
466
- pad the content of `SurfaceCard` and its kin.
465
+ **Spacing.** One scale, 0 4 8 12 24 32 (`COMMON_SPACING_SCALE`), and every value is a root token named by its role:
466
+ gaps `--grammar-identity-gap` (4), `--grammar-inline-gap` (8), `--grammar-row-gap` (12), `--grammar-section-gap` (24)
467
+ and `--grammar-region-gap` (32) (`COMMON_GAP_ROLES`); insets `--grammar-inset` (12, every container: card, pane,
468
+ overlay, band), `--grammar-inset-nested` (8, a box inside a card) and `--grammar-inset-open` (24, an empty state or a
469
+ drop target); the page gutter `--grammar-page-inset` (12, 24 from 48rem, 32 from 70rem); and the control inline
470
+ padding `--grammar-control-padding-inline-{sm,md,lg}` (8, 12, 24) with `--grammar-control-padding-glyph-*` one step
471
+ less on a glyph's side. `--grammar-card-padding-inline`, `--grammar-card-padding-block` and `--grammar-overlay-inset`
472
+ read `--grammar-inset`. Vendor parts take their step in `src/common/components-spacing.css`. Tabs are the underline
473
+ bar everywhere, the first label on the content edge.
474
+
475
+ An app writes no spacing value; it names the relation of the blocks it places:
476
+
477
+ - `Stack` (`gap`: `identity` | `inline` | `row` | `section` | `region`, required; `align`; `measure`: `full` |
478
+ `reading` | `form`; `as`): blocks in the block axis.
479
+ - `Cluster` (`gap`: `identity` | `inline` | `row` | `section`, the same on both axes; `wrap`, default true; `align`;
480
+ `justify`): items side by side that wrap, a chip set, a toolbar group.
481
+ - `Grid` (`kind="cards"` with `columns?: 2 | 3 | 4`, the section gap on both axes; `kind="form"` renders `FormGrid`;
482
+ `kind="main-rail"` renders `PrimaryRailLayout` with its props).
483
+
484
+ None takes a `className` or a `style`.
467
485
 
468
486
  ```tsx
469
487
  <Page measure="reading" header={{ breadcrumbs, title: "Profile", tabs: { label: "Profile", items, selectedKey, onSelect } }}>
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schema": "starci/grammar-build-stamp@1",
3
3
  "package": "@starci/grammar",
4
- "version": "0.17.0",
4
+ "version": "0.18.0",
5
5
  "algorithm": "starci/grammar-source-digest@1",
6
- "sourceDigest": "sha256:5087c93baaa926867d67affea734fc8bee110e3fbb45a8874a810534b26a5cdd",
7
- "distDigest": "sha256:0c103298b00f8b8ab727c992b96bdd0b547c7db9c259d9732b3ee6201d39f071",
8
- "builtAt": "2026-10-31T10:45:19.177Z"
6
+ "sourceDigest": "sha256:c20c88c86e2b076231df335a9877ea7e2300565183082bd4a0645d2d01706356",
7
+ "distDigest": "sha256:5cd2e2caf90d2f1d5fcba3511405b700be01881bbe31bed31b755763e845ca8b",
8
+ "builtAt": "2026-10-31T13:26:41.484Z"
9
9
  }
@@ -278,7 +278,7 @@
278
278
  inline-size: 100%;
279
279
  min-width: 0;
280
280
  flex-direction: column;
281
- gap: var(--grammar-section-gap, 1rem);
281
+ gap: var(--grammar-row-gap, 0.75rem);
282
282
  container-type: inline-size;
283
283
  }
284
284
 
@@ -287,7 +287,7 @@
287
287
  min-width: 0;
288
288
  grid-template-columns: minmax(0, 1fr);
289
289
  grid-auto-rows: auto;
290
- gap: 0 var(--grammar-section-gap, 1rem);
290
+ gap: 0 var(--grammar-row-gap, 0.75rem);
291
291
  align-items: start;
292
292
  }
293
293
 
@@ -302,7 +302,7 @@
302
302
  }
303
303
 
304
304
  :is(.starci-core-form-grid-row > [data-component]:not(:first-child), .starci-core-form-grid-row > .starci-core-field-skeleton-scope:not(:first-child) > [data-component]) {
305
- margin-block-start: var(--grammar-section-gap, 1rem);
305
+ margin-block-start: var(--grammar-row-gap, 0.75rem);
306
306
  }
307
307
 
308
308
  :is(.starci-core-form-grid-row > [data-component], .starci-core-form-grid-row > .starci-core-field-skeleton-scope > [data-component]) > :is([data-slot="label"], [data-grammar-field-label]) {
@@ -426,7 +426,7 @@
426
426
 
427
427
  [data-grammar-orientation="horizontal"] > .starci-core-choice-group-options {
428
428
  flex-flow: row wrap;
429
- gap: 0.75rem 1rem;
429
+ gap: var(--grammar-row-gap, 0.75rem);
430
430
  }
431
431
 
432
432
  /*
@@ -571,7 +571,7 @@
571
571
  display: flex;
572
572
  min-width: 0;
573
573
  flex-direction: column;
574
- gap: var(--grammar-section-gap, 1rem);
574
+ gap: var(--grammar-row-gap, 0.75rem);
575
575
  }
576
576
 
577
577
  .starci-core-fieldset-actions {
@@ -586,7 +586,7 @@
586
586
  display: flex;
587
587
  min-width: 0;
588
588
  flex-direction: column;
589
- gap: var(--grammar-region-gap, 1.5rem);
589
+ gap: var(--grammar-row-gap, 0.75rem);
590
590
  }
591
591
 
592
592
  /* --- FileDropzone: a native file input stretched over the drop target --- */
@@ -599,7 +599,7 @@
599
599
  justify-content: center;
600
600
  border: 2px dashed var(--border, ButtonBorder);
601
601
  border-radius: var(--field-radius, calc(var(--radius, 0.5rem) * 1.5));
602
- padding: 1.5rem;
602
+ padding: var(--grammar-inset-open, 1.5rem);
603
603
  background: var(--field-background, var(--surface, Canvas));
604
604
  color: var(--muted, GrayText);
605
605
  text-align: center;
@@ -656,7 +656,7 @@
656
656
 
657
657
  .starci-core-file-dropzone-files {
658
658
  margin: 0;
659
- padding-inline-start: 1rem;
659
+ padding-inline-start: var(--grammar-section-gap, 1.5rem);
660
660
  color: var(--foreground, CanvasText);
661
661
  font-size: 0.875rem;
662
662
  overflow-wrap: anywhere;
@@ -313,7 +313,7 @@
313
313
  display: flex;
314
314
  min-width: 0;
315
315
  flex-direction: column;
316
- gap: 0.125rem;
316
+ gap: var(--grammar-identity-gap, 0.25rem);
317
317
  padding-block-start: 0.25rem;
318
318
  }
319
319
 
@@ -354,9 +354,9 @@
354
354
  align-items: center;
355
355
  gap: var(--grammar-row-gap, 0.75rem);
356
356
  padding-block: 0.5rem;
357
- padding-inline: var(--grammar-page-inset, 1rem);
358
- padding-inline-start: max(var(--grammar-page-inset, 1rem), env(safe-area-inset-left));
359
- padding-inline-end: max(var(--grammar-page-inset, 1rem), env(safe-area-inset-right));
357
+ padding-inline: var(--grammar-page-inset, 0.75rem);
358
+ padding-inline-start: max(var(--grammar-page-inset, 0.75rem), env(safe-area-inset-left));
359
+ padding-inline-end: max(var(--grammar-page-inset, 0.75rem), env(safe-area-inset-right));
360
360
  border-block-end: 1px solid var(--separator, var(--border, CanvasText));
361
361
  background: var(--surface, Canvas);
362
362
  color: var(--foreground, CanvasText);
@@ -466,11 +466,11 @@
466
466
  }
467
467
 
468
468
  .grammar-common-root:has(.starci-core-bottom-nav[data-grammar-bottom-nav-position="fixed"]) .starci-core-footer {
469
- padding-block-end: calc(var(--grammar-section-gap, 1rem) + max(var(--starci-core-bottom-nav-offset), env(safe-area-inset-bottom, 0px)));
469
+ padding-block-end: calc(var(--grammar-inset, 0.75rem) + max(var(--starci-core-bottom-nav-offset), env(safe-area-inset-bottom, 0px)));
470
470
  }
471
471
 
472
472
  .grammar-common-root:has(.starci-core-bottom-nav[data-grammar-bottom-nav-position="fixed"]) .starci-core-toaster:is([data-placement="bottom-start"], [data-placement="bottom"], [data-placement="bottom-end"]) {
473
- bottom: max(var(--grammar-page-inset, 1rem), env(safe-area-inset-bottom, 0px), calc(var(--starci-core-bottom-nav-offset) + var(--grammar-page-inset, 1rem)));
473
+ bottom: max(var(--grammar-page-inset, 0.75rem), env(safe-area-inset-bottom, 0px), calc(var(--starci-core-bottom-nav-offset) + var(--grammar-page-inset, 0.75rem)));
474
474
  }
475
475
 
476
476
  .starci-core-bottom-nav-list {
@@ -494,7 +494,7 @@
494
494
  flex-direction: column;
495
495
  align-items: center;
496
496
  justify-content: center;
497
- gap: 0.125rem;
497
+ gap: var(--grammar-identity-gap, 0.25rem);
498
498
  padding: 0.25rem;
499
499
  border: 0;
500
500
  border-radius: var(--radius, 0.5rem);
@@ -570,9 +570,9 @@
570
570
  display: flex;
571
571
  min-width: 0;
572
572
  flex-direction: column;
573
- gap: var(--grammar-region-gap, 1.5rem);
574
- padding-block: var(--grammar-region-gap, 1.5rem) calc(var(--grammar-section-gap, 1rem) + env(safe-area-inset-bottom, 0px));
575
- padding-inline: var(--grammar-page-inset, 1rem);
573
+ gap: var(--grammar-section-gap, 1.5rem);
574
+ padding-block: var(--grammar-section-gap, 1.5rem) calc(var(--grammar-inset, 0.75rem) + env(safe-area-inset-bottom, 0px));
575
+ padding-inline: var(--grammar-page-inset, 0.75rem);
576
576
  border-block-start: 1px solid var(--separator, var(--border, CanvasText));
577
577
  color: var(--foreground, CanvasText);
578
578
  }
@@ -581,7 +581,7 @@
581
581
  display: grid;
582
582
  min-width: 0;
583
583
  grid-template-columns: minmax(0, 1fr);
584
- gap: var(--grammar-region-gap, 1.5rem);
584
+ gap: var(--grammar-region-gap, 2rem);
585
585
  }
586
586
 
587
587
  @media (min-width: 48rem) {
@@ -602,7 +602,7 @@
602
602
  display: grid;
603
603
  min-width: 0;
604
604
  grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
605
- gap: var(--grammar-section-gap, 1rem);
605
+ gap: var(--grammar-section-gap, 1.5rem);
606
606
  }
607
607
 
608
608
  .starci-core-footer-group {
@@ -945,7 +945,7 @@
945
945
  min-block-size: 8rem;
946
946
  align-items: center;
947
947
  justify-content: center;
948
- padding: var(--grammar-section-gap, 1rem);
948
+ padding: var(--grammar-inset, 0.75rem);
949
949
  color: var(--muted, GrayText);
950
950
  white-space: normal;
951
951
  text-align: center;
@@ -990,7 +990,7 @@
990
990
  .starci-core-data-table-secondary {
991
991
  display: flex;
992
992
  flex-direction: column;
993
- gap: 0.125rem;
993
+ gap: var(--grammar-identity-gap, 0.25rem);
994
994
  margin-block-start: 0.25rem;
995
995
  color: var(--muted, GrayText);
996
996
  font-size: 0.875em;
@@ -1245,7 +1245,7 @@
1245
1245
  display: flex;
1246
1246
  align-items: center;
1247
1247
  padding-inline: 0.5rem;
1248
- padding-block: 0.375rem;
1248
+ padding-block: var(--grammar-inset-nested, 0.5rem);
1249
1249
  pointer-events: none;
1250
1250
  }
1251
1251
 
@@ -1259,7 +1259,7 @@
1259
1259
  .starci-core-list-box-skeleton-option .starci-core-skeleton-group { gap: 0; }
1260
1260
 
1261
1261
  .starci-core-list-box-empty {
1262
- padding: var(--grammar-section-gap, 1rem);
1262
+ padding: var(--grammar-inset, 0.75rem);
1263
1263
  color: var(--muted, GrayText);
1264
1264
  }
1265
1265
 
@@ -1442,7 +1442,7 @@
1442
1442
  .starci-core-rating {
1443
1443
  display: inline-flex;
1444
1444
  align-items: center;
1445
- gap: 0.125rem;
1445
+ gap: var(--grammar-identity-gap, 0.25rem);
1446
1446
  }
1447
1447
 
1448
1448
  .starci-core-rating-item {
@@ -1519,7 +1519,7 @@
1519
1519
  min-width: 0;
1520
1520
  grid-template-columns: 1.5rem minmax(0, 1fr);
1521
1521
  gap: var(--grammar-row-gap, 0.75rem);
1522
- padding-block-end: var(--grammar-section-gap, 1rem);
1522
+ padding-block-end: var(--grammar-row-gap, 0.75rem);
1523
1523
  }
1524
1524
 
1525
1525
  .starci-core-timeline-item:not(:last-child)::before {
@@ -1605,7 +1605,7 @@
1605
1605
  display: flex;
1606
1606
  min-width: 0;
1607
1607
  flex-direction: column;
1608
- gap: 0.125rem;
1608
+ gap: var(--grammar-identity-gap, 0.25rem);
1609
1609
  }
1610
1610
 
1611
1611
  /* The list title scale (the ListBox and panel row label, text-sm), not whatever size the page body inherits. */
@@ -1777,7 +1777,7 @@
1777
1777
  align-items: center;
1778
1778
  gap: 0.5rem;
1779
1779
  max-inline-size: 14rem;
1780
- padding: 0.375rem 0.875rem;
1780
+ padding: var(--grammar-inset-nested, 0.5rem) var(--grammar-inset, 0.75rem);
1781
1781
  border: 1px solid var(--separator, CanvasText);
1782
1782
  border-radius: 999px;
1783
1783
  background-color: var(--surface, Canvas);
@@ -1805,7 +1805,7 @@
1805
1805
  }
1806
1806
 
1807
1807
  .starci-core-flow-graph-header {
1808
- padding: 0.125rem 0.625rem;
1808
+ padding: 0 var(--grammar-inset-nested, 0.5rem);
1809
1809
  color: var(--muted, GrayText);
1810
1810
  font-size: 0.6875rem;
1811
1811
  font-weight: 600;
@@ -1817,8 +1817,8 @@
1817
1817
 
1818
1818
  .starci-core-flow-graph-header[data-direction="TB"] { text-align: end; }
1819
1819
 
1820
- .starci-core-flow-graph-node[data-size="sm"] { padding: 0.25rem 0.625rem; font-size: 0.75rem; }
1821
- .starci-core-flow-graph-node[data-size="lg"] { padding: 0.625rem 1.25rem; font-size: 1rem; font-weight: 600; }
1820
+ .starci-core-flow-graph-node[data-size="sm"] { padding: var(--grammar-identity-gap, 0.25rem) var(--grammar-inset-nested, 0.5rem); font-size: 0.75rem; }
1821
+ .starci-core-flow-graph-node[data-size="lg"] { padding: var(--grammar-inset, 0.75rem) var(--grammar-section-gap, 1.5rem); font-size: 1rem; font-weight: 600; }
1822
1822
  .starci-core-flow-graph-node[data-tone="accent"] { --starci-flow-tint: var(--accent-soft, transparent); --starci-flow-ink: var(--accent-soft-foreground, CanvasText); }
1823
1823
  .starci-core-flow-graph-node[data-tone="success"] { --starci-flow-tint: var(--success-soft, transparent); --starci-flow-ink: var(--success-soft-foreground, CanvasText); }
1824
1824
  .starci-core-flow-graph-node[data-tone="warning"] { --starci-flow-tint: var(--warning-soft, transparent); --starci-flow-ink: var(--warning-soft-foreground, CanvasText); }
@@ -1847,7 +1847,7 @@
1847
1847
  isolation: isolate;
1848
1848
  justify-content: center;
1849
1849
  min-block-size: 4rem;
1850
- padding: 1rem 2rem;
1850
+ padding: var(--grammar-inset, 0.75rem) var(--grammar-section-gap, 1.5rem);
1851
1851
  border-color: transparent;
1852
1852
  background: none;
1853
1853
  text-align: center;
@@ -1900,7 +1900,7 @@
1900
1900
  .starci-core-flow-graph-count {
1901
1901
  flex: 0 0 auto;
1902
1902
  min-inline-size: 1.25rem;
1903
- padding: 0 0.375rem;
1903
+ padding: 0 var(--grammar-identity-gap, 0.25rem);
1904
1904
  border-radius: 999px;
1905
1905
  background: var(--surface, Canvas);
1906
1906
  color: var(--foreground, CanvasText);
@@ -1931,7 +1931,7 @@
1931
1931
  justify-content: center;
1932
1932
  inline-size: 2rem;
1933
1933
  block-size: 2rem;
1934
- padding: 0.375rem;
1934
+ padding: var(--grammar-inset-nested, 0.5rem);
1935
1935
  border: 0;
1936
1936
  background: transparent;
1937
1937
  color: var(--foreground, CanvasText);
@@ -1974,7 +1974,7 @@
1974
1974
  display: grid;
1975
1975
  min-block-size: var(--starci-mermaid-height);
1976
1976
  place-items: center;
1977
- padding: var(--grammar-section-gap, 1rem);
1977
+ padding: var(--grammar-inset, 0.75rem);
1978
1978
  overflow-x: auto;
1979
1979
  border-radius: inherit;
1980
1980
  outline: none;
@@ -1987,7 +1987,7 @@
1987
1987
 
1988
1988
  .starci-core-mermaid-diagram-canvas > .starci-core-skeleton {
1989
1989
  inline-size: 100%;
1990
- block-size: calc(var(--starci-mermaid-height) - 2 * var(--grammar-section-gap, 1rem));
1990
+ block-size: calc(var(--starci-mermaid-height) - 2 * var(--grammar-section-gap, 1.5rem));
1991
1991
  aspect-ratio: auto;
1992
1992
  }
1993
1993
 
@@ -2000,7 +2000,7 @@
2000
2000
  min-block-size: var(--starci-mermaid-height);
2001
2001
  flex-direction: column;
2002
2002
  gap: var(--grammar-row-gap, 0.75rem);
2003
- padding: var(--grammar-section-gap, 1rem);
2003
+ padding: var(--grammar-inset, 0.75rem);
2004
2004
  }
2005
2005
 
2006
2006
  /*
@@ -41,7 +41,7 @@
41
41
  display: flex;
42
42
  align-items: center;
43
43
  justify-content: center;
44
- padding: var(--grammar-page-inset, 1rem);
44
+ padding: var(--grammar-page-inset, 0.75rem);
45
45
  background: color-mix(in srgb, var(--foreground, CanvasText) 40%, transparent);
46
46
  overscroll-behavior: contain;
47
47
  }
@@ -106,7 +106,7 @@
106
106
  min-width: 0;
107
107
  flex: 1;
108
108
  flex-direction: column;
109
- gap: var(--grammar-section-gap, 1rem);
109
+ gap: var(--grammar-row-gap, 0.75rem);
110
110
  overflow: hidden;
111
111
  color: var(--surface-foreground, CanvasText);
112
112
  }
@@ -393,25 +393,25 @@
393
393
  position: fixed;
394
394
  z-index: 60;
395
395
  display: flex;
396
- width: min(24rem, calc(100vw - 2 * var(--grammar-page-inset, 1rem)));
396
+ width: min(24rem, calc(100vw - 2 * var(--grammar-page-inset, 0.75rem)));
397
397
  flex-direction: column;
398
398
  pointer-events: none;
399
399
  }
400
400
 
401
401
  .starci-core-toaster:is([data-placement="top-start"], [data-placement="top"], [data-placement="top-end"]) {
402
- top: var(--grammar-page-inset, 1rem);
402
+ top: var(--grammar-page-inset, 0.75rem);
403
403
  }
404
404
 
405
405
  .starci-core-toaster:is([data-placement="bottom-start"], [data-placement="bottom"], [data-placement="bottom-end"]) {
406
- bottom: max(var(--grammar-page-inset, 1rem), env(safe-area-inset-bottom));
406
+ bottom: max(var(--grammar-page-inset, 0.75rem), env(safe-area-inset-bottom));
407
407
  }
408
408
 
409
409
  .starci-core-toaster:is([data-placement="top-start"], [data-placement="bottom-start"]) {
410
- inset-inline-start: var(--grammar-page-inset, 1rem);
410
+ inset-inline-start: var(--grammar-page-inset, 0.75rem);
411
411
  }
412
412
 
413
413
  .starci-core-toaster:is([data-placement="top-end"], [data-placement="bottom-end"]) {
414
- inset-inline-end: var(--grammar-page-inset, 1rem);
414
+ inset-inline-end: var(--grammar-page-inset, 0.75rem);
415
415
  }
416
416
 
417
417
  .starci-core-toaster:is([data-placement="top"], [data-placement="bottom"]) {
@@ -441,8 +441,6 @@
441
441
  display: grid;
442
442
  grid-template-columns: auto minmax(0, 1fr) auto auto;
443
443
  align-items: start;
444
- gap: 0.5rem 0.75rem;
445
- padding: 0.75rem 0.5rem 0.75rem 1rem;
446
444
  border-radius: var(--starci-core-surface-radius, 1rem);
447
445
  background: var(--surface, Canvas);
448
446
  color: var(--surface-foreground, CanvasText);
@@ -452,14 +450,14 @@
452
450
 
453
451
  .starci-core-toast-indicator {
454
452
  display: inline-flex;
455
- margin-block-start: 0.125rem;
453
+ margin-block-start: var(--grammar-identity-gap, 0.25rem);
456
454
  color: var(--starci-core-overlay-tone);
457
455
  }
458
456
 
459
457
  .starci-core-toast-indicator[data-grammar-toast-indicator] {
460
458
  width: 0.625rem;
461
459
  height: 0.625rem;
462
- margin-block-start: 0.375rem;
460
+ margin-block-start: var(--grammar-identity-gap, 0.25rem);
463
461
  border-radius: 999px;
464
462
  background: var(--starci-core-overlay-tone);
465
463
  }
@@ -468,7 +466,7 @@
468
466
  display: flex;
469
467
  min-width: 0;
470
468
  flex-direction: column;
471
- gap: 0.125rem;
469
+ gap: var(--grammar-identity-gap, 0.25rem);
472
470
  align-self: center;
473
471
  }
474
472
 
@@ -493,7 +491,7 @@
493
491
 
494
492
  @media (max-width: 40rem) {
495
493
  .starci-core-toaster {
496
- inset-inline: var(--grammar-page-inset, 1rem);
494
+ inset-inline: var(--grammar-page-inset, 0.75rem);
497
495
  width: auto;
498
496
  margin-inline: 0;
499
497
  }
@@ -622,7 +620,7 @@
622
620
  min-width: 1.5rem;
623
621
  align-items: center;
624
622
  justify-content: center;
625
- gap: 0.125rem;
623
+ gap: var(--grammar-identity-gap, 0.25rem);
626
624
  border: 1px solid var(--border, CanvasText);
627
625
  white-space: nowrap;
628
626
  }
@@ -795,7 +793,7 @@
795
793
  width: 100%;
796
794
  min-width: 0;
797
795
  flex-direction: column;
798
- gap: 0.375rem;
796
+ gap: var(--grammar-identity-gap, 0.25rem);
799
797
  }
800
798
 
801
799
  .starci-core-meter-header {
@@ -0,0 +1,97 @@
1
+ /*
2
+ * VENDOR PART SPACING ON THE SCALE.
3
+ *
4
+ * HeroUI's parts carry their own padding and gap (`p-6` on a dialog, `px-4` on a button, `py-1.5` on a list option,
5
+ * `py-2.5` on a table column, a 3px body offset). The Grammar's scale is 0 4 8 12 24 32 (common/spacing.ts), so each
6
+ * part below takes the step its role names. These rules sit in the vendor's own `components` layer: there a compound
7
+ * selector of the Grammar class outranks the vendor's single class by specificity, whichever sheet loads first, so no
8
+ * declaration needs `!important`. The overrides are recorded in contexts/vendor/wrappers.yaml (ruling spacing-roles).
9
+ */
10
+ @layer components {
11
+ /* Dialog and drawer: one inset on every side; header, body and footer are spaced by the dialog's row gap alone. */
12
+ .starci-core-overlay-backdrop > .starci-core-dialog-container {
13
+ padding: 0;
14
+ }
15
+
16
+ .starci-core-dialog-container > .starci-core-dialog,
17
+ .starci-core-drawer-content .starci-core-drawer {
18
+ padding: var(--grammar-overlay-inset, 0.75rem);
19
+ }
20
+
21
+ :is(.starci-core-dialog, .starci-core-drawer) > .starci-core-overlay-header ~ .starci-core-overlay-body,
22
+ :is(.starci-core-dialog, .starci-core-drawer) > .starci-core-overlay-header ~ .starci-core-overlay-footer {
23
+ margin-block: 0;
24
+ }
25
+
26
+ /* The body is the scroll owner: it keeps the identity step inline as focus clearance, drawn back over the inset. */
27
+ :is(.starci-core-dialog, .starci-core-drawer) > .starci-core-overlay-header ~ .starci-core-overlay-body {
28
+ margin-inline: calc(-1 * var(--grammar-identity-gap, 0.25rem));
29
+ padding: 0 var(--grammar-identity-gap, 0.25rem);
30
+ }
31
+
32
+ /* Buttons: the inline padding of the size step, one step less on the side a glyph stands on. */
33
+ .starci-core-button[data-size="sm"] {
34
+ padding-inline: var(--grammar-control-padding-inline-sm, 0.5rem);
35
+ }
36
+
37
+ .starci-core-button:is([data-size="md"], [data-size="control"]) {
38
+ padding-inline: var(--grammar-control-padding-inline-md, 0.75rem);
39
+ }
40
+
41
+ .starci-core-button[data-size="lg"] {
42
+ padding-inline: var(--grammar-control-padding-inline-lg, 1.5rem);
43
+ }
44
+
45
+ .starci-core-button[data-size="sm"][data-grammar-button-start="glyph"] {
46
+ padding-inline-start: var(--grammar-control-padding-glyph-sm, 0.25rem);
47
+ }
48
+
49
+ .starci-core-button[data-size="sm"][data-grammar-button-end="glyph"] {
50
+ padding-inline-end: var(--grammar-control-padding-glyph-sm, 0.25rem);
51
+ }
52
+
53
+ .starci-core-button:is([data-size="md"], [data-size="control"])[data-grammar-button-start="glyph"] {
54
+ padding-inline-start: var(--grammar-control-padding-glyph-md, 0.5rem);
55
+ }
56
+
57
+ .starci-core-button:is([data-size="md"], [data-size="control"])[data-grammar-button-end="glyph"] {
58
+ padding-inline-end: var(--grammar-control-padding-glyph-md, 0.5rem);
59
+ }
60
+
61
+ .starci-core-button[data-size="lg"][data-grammar-button-start="glyph"] {
62
+ padding-inline-start: var(--grammar-control-padding-glyph-lg, 0.75rem);
63
+ }
64
+
65
+ .starci-core-button[data-size="lg"][data-grammar-button-end="glyph"] {
66
+ padding-inline-end: var(--grammar-control-padding-glyph-lg, 0.75rem);
67
+ }
68
+
69
+ /* Alert and toast: a box inside a surface, the container inset on every side, glyph and copy an inline pair. */
70
+ .starci-core-alert[data-component="Alert"],
71
+ .starci-core-toast[data-component="Toast"] {
72
+ gap: var(--grammar-inline-gap, 0.5rem);
73
+ padding: var(--grammar-inset, 0.75rem);
74
+ }
75
+
76
+ /* An alert inside a card is one level in: the nested step on every side. */
77
+ .starci-core-surface-content .starci-core-alert[data-component="Alert"] {
78
+ padding: var(--grammar-inset-nested, 0.5rem);
79
+ }
80
+
81
+ /* The toast's end side holds its close action, which carries its own room: the nested step. */
82
+ .starci-core-toast[data-component="Toast"] {
83
+ padding-inline-end: var(--grammar-inset-nested, 0.5rem);
84
+ }
85
+
86
+ /* List option: the nested inset on every side (a one-line row is 8 + 24 + 8 = 40), the avatar a row step from the text. */
87
+ .starci-core-list-box .starci-core-list-box-item {
88
+ gap: var(--grammar-row-gap, 0.75rem);
89
+ padding: var(--grammar-inset-nested, 0.5rem);
90
+ }
91
+
92
+ /* Table: the container inset inline, the nested step in the block axis (a 40px row). */
93
+ .starci-core-data-table .starci-core-data-table-column,
94
+ .starci-core-data-table .starci-core-data-table-cell {
95
+ padding: var(--grammar-inset-nested, 0.5rem) var(--grammar-inset, 0.75rem);
96
+ }
97
+ }
@@ -1,5 +1,5 @@
1
1
  export { PRESENTATION_STATES, assertPresentationState, isPresentationState, type PresentationState } from "./state.js";
2
- export { COMMON_SPACING_SCALE, COMMON_SPACING_TOKENS, type CommonSpacingStep, type CommonSpacingValue } from "./spacing.js";
2
+ export { COMMON_GAP_ROLES, COMMON_SPACING_SCALE, COMMON_SPACING_TOKENS, type CommonGapRole, type CommonSpacingStep, type CommonSpacingValue, type GapRole } from "./spacing.js";
3
3
  export { COMMON_UI_RULE_IDS, defineGrammarRuleConformance, type GrammarRuleConformance } from "./conformance.js";
4
4
  export * from "./renderers.js";
5
5
  export { COMMON_GRAMMAR_COMPONENTS, defineGrammarFamily, type CommonGrammarComponentName, type GrammarComponentRenderer, type GrammarFamilyContract, type GrammarFamilyStyles, } from "./registry.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACtH,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC3H,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,KAAK,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAChH,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EACH,yBAAyB,EACzB,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GAC3B,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACtH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAA;AAC/K,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,KAAK,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAChH,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EACH,yBAAyB,EACzB,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GAC3B,MAAM,eAAe,CAAA"}
@@ -1,5 +1,5 @@
1
1
  export { PRESENTATION_STATES, assertPresentationState, isPresentationState } from "./state.js";
2
- export { COMMON_SPACING_SCALE, COMMON_SPACING_TOKENS } from "./spacing.js";
2
+ export { COMMON_GAP_ROLES, COMMON_SPACING_SCALE, COMMON_SPACING_TOKENS } from "./spacing.js";
3
3
  export { COMMON_UI_RULE_IDS, defineGrammarRuleConformance } from "./conformance.js";
4
4
  export * from "./renderers.js";
5
5
  export { COMMON_GRAMMAR_COMPONENTS, defineGrammarFamily, } from "./registry.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,EAA0B,MAAM,YAAY,CAAA;AACtH,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAmD,MAAM,cAAc,CAAA;AAC3H,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAA+B,MAAM,kBAAkB,CAAA;AAChH,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EACH,yBAAyB,EACzB,mBAAmB,GAKtB,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,EAA0B,MAAM,YAAY,CAAA;AACtH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,qBAAqB,EAAqF,MAAM,cAAc,CAAA;AAC/K,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAA+B,MAAM,kBAAkB,CAAA;AAChH,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EACH,yBAAyB,EACzB,mBAAmB,GAKtB,MAAM,eAAe,CAAA"}
@@ -128,6 +128,17 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
128
128
  readonly StaticStateRow: (props: import("./renderers.js").StaticStateRowProps) => import("react").JSX.Element;
129
129
  readonly StatusDot: (props: import("./renderers.js").StatusDotProps) => import("react").JSX.Element;
130
130
  readonly Subnav: ({ label, title, leading, menuIcon, openMenuLabel, closeMenuLabel, isMenuOpen, onMenuOpenChange, position, visibility, className, ...navProps }: import("./renderers.js").SubnavProps) => import("react").JSX.Element;
131
+ readonly Stack: ({ children, gap, align, measure, as }: import("./renderers.js").StackProps) => import("react").DetailedReactHTMLElement<{
132
+ className: string;
133
+ "data-component": string;
134
+ "data-tier": string;
135
+ "data-grammar-gap": import("./spacing.js").GapRole;
136
+ "data-grammar-align": import("./renderers.js").StackAlign;
137
+ "data-grammar-measure": import("./renderers.js").StackMeasure;
138
+ "data-contract": string;
139
+ }, HTMLElement>;
140
+ readonly Cluster: ({ children, gap, wrap, align, justify }: import("./renderers.js").ClusterProps) => import("react").JSX.Element;
141
+ readonly Grid: (props: import("./renderers.js").GridProps) => import("react").JSX.Element;
131
142
  readonly SurfaceAccordionCard: <Summary, Body>(props: import("./renderers.js").SurfaceAccordionCardProps<Summary, Body>) => import("react").JSX.Element;
132
143
  readonly SurfaceCard: (props: import("./renderers.js").SurfaceCardProps) => import("react").JSX.Element;
133
144
  readonly SurfaceCopyGroup: ({ className, density, ...props }: import("./renderers.js").SurfaceCopyGroupProps) => import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/common/registry.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAEvE,MAAM,MAAM,wBAAwB,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAA;AAClE,KAAK,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;AACpE,KAAK,sBAAsB,CAAC,MAAM,SAAS,uBAAuB,IAAI;IAClE,QAAQ,EAAE,IAAI,IAAI,MAAM,MAAM,CAAC,CAAC,EAAE,wBAAwB,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CAC3F,CAAA;AACD,KAAK,gCAAgC,CAAC,MAAM,SAAS,uBAAuB,EAAE,UAAU,SAAS,uBAAuB,IACpH,UAAU,GAAG;IAAE,QAAQ,EAAE,IAAI,IAAI,OAAO,CAAC,MAAM,UAAU,EAAE,MAAM,MAAM,CAAC,GAAG,KAAK;CAAE,CAAA;AAEtF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW3B,CAAA;AACX,MAAM,MAAM,0BAA0B,GAAG,MAAM,OAAO,yBAAyB,CAAA;AAE/E,MAAM,MAAM,mBAAmB,CAAC,QAAQ,SAAS,MAAM,IAAI;IACvD,QAAQ,CAAC,UAAU,EAAE,mBAAmB,MAAM,aAAa,CAAA;IAC3D,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;KAAE,CAAA;CAC1F,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,MAAM,EAAE,UAAU,SAAS,uBAAuB,IAAI;IACrG,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,yBAAyB,GAAG,UAAU,CAAC,CAAA;IAC5E,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;QAAE,qBAAqB,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAA;CACrE,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,GAC5B,KAAK,CAAC,QAAQ,SAAS,MAAM,EAC7B,KAAK,CAAC,YAAY,SAAS,sBAAsB,CAAC,OAAO,yBAAyB,CAAC,EACnF,KAAK,CAAC,UAAU,SAAS,uBAAuB,EAClD,YAAY;IACV,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE;QACjB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;QACnC,QAAQ,CAAC,UAAU,EAAE,gCAAgC,CAAC,OAAO,yBAAyB,EAAE,UAAU,CAAC,CAAA;KACtG,CAAA;CACJ,KAAG,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAuB7C,CAAA"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/common/registry.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAEvE,MAAM,MAAM,wBAAwB,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAA;AAClE,KAAK,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;AACpE,KAAK,sBAAsB,CAAC,MAAM,SAAS,uBAAuB,IAAI;IAClE,QAAQ,EAAE,IAAI,IAAI,MAAM,MAAM,CAAC,CAAC,EAAE,wBAAwB,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CAC3F,CAAA;AACD,KAAK,gCAAgC,CAAC,MAAM,SAAS,uBAAuB,EAAE,UAAU,SAAS,uBAAuB,IACpH,UAAU,GAAG;IAAE,QAAQ,EAAE,IAAI,IAAI,OAAO,CAAC,MAAM,UAAU,EAAE,MAAM,MAAM,CAAC,GAAG,KAAK;CAAE,CAAA;AAEtF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY3B,CAAA;AACX,MAAM,MAAM,0BAA0B,GAAG,MAAM,OAAO,yBAAyB,CAAA;AAE/E,MAAM,MAAM,mBAAmB,CAAC,QAAQ,SAAS,MAAM,IAAI;IACvD,QAAQ,CAAC,UAAU,EAAE,mBAAmB,MAAM,aAAa,CAAA;IAC3D,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;KAAE,CAAA;CAC1F,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,MAAM,EAAE,UAAU,SAAS,uBAAuB,IAAI;IACrG,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,yBAAyB,GAAG,UAAU,CAAC,CAAA;IAC5E,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;QAAE,qBAAqB,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAA;CACrE,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,GAC5B,KAAK,CAAC,QAAQ,SAAS,MAAM,EAC7B,KAAK,CAAC,YAAY,SAAS,sBAAsB,CAAC,OAAO,yBAAyB,CAAC,EACnF,KAAK,CAAC,UAAU,SAAS,uBAAuB,EAClD,YAAY;IACV,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE;QACjB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;QACnC,QAAQ,CAAC,UAAU,EAAE,gCAAgC,CAAC,OAAO,yBAAyB,EAAE,UAAU,CAAC,CAAA;KACtG,CAAA;CACJ,KAAG,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAuB7C,CAAA"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { Backdrop, Badge, Button, Code, ChatBubble, PaneGrid, Pane, PaneSection, Divider, EmptyNotice, FencedCodeBlock, FillViewport, Freestyle, GrammarRoot, Heading, HorizontalScrollRegion, Icon, IconButton, IconTile, IncludedMark, Input, Label, LeadingNumber, List, ListItem, ListRow, MarkdownArticle, MarkdownTableFrame, Mascot, MediaFrame, NavigationFeatureNav, NavLandmark, OtpInput, Page, PageContainer, PageHeader, PinnedActionBar, PressableField, PrimaryRailLayout, Progress, Rail, RankArtwork, Region, RelativeTime, SectionHeader, Sidebar, StateMark, StaticStateRow, StatusDot, Subnav, SurfaceAccordionCard, SurfaceCard, SurfaceCopyGroup, SurfaceListCard, Tabs, Terminal, Text, TextAction, Tooltip, VerticalScrollRegion, WorkspaceShell, } from "./renderers.js";
2
+ import { Backdrop, Badge, Button, Code, ChatBubble, PaneGrid, Pane, PaneSection, Divider, EmptyNotice, FencedCodeBlock, FillViewport, Freestyle, GrammarRoot, Heading, HorizontalScrollRegion, Icon, IconButton, IconTile, IncludedMark, Input, Label, LeadingNumber, List, ListItem, ListRow, MarkdownArticle, MarkdownTableFrame, Mascot, MediaFrame, NavigationFeatureNav, NavLandmark, OtpInput, Page, PageContainer, PageHeader, PinnedActionBar, PressableField, PrimaryRailLayout, Progress, Rail, RankArtwork, Region, RelativeTime, SectionHeader, Sidebar, StateMark, StaticStateRow, StatusDot, Subnav, Stack, Cluster, Grid, SurfaceAccordionCard, SurfaceCard, SurfaceCopyGroup, SurfaceListCard, Tabs, Terminal, Text, TextAction, Tooltip, VerticalScrollRegion, WorkspaceShell, } from "./renderers.js";
3
3
  import { COMMON_FORMS_COMPONENTS } from "./renderers-forms.js";
4
4
  import { COMMON_OVERLAYS_COMPONENTS } from "./renderers-overlays.js";
5
5
  import { COMMON_NAVIGATION_COMPONENTS } from "./renderers-navigation.js";
@@ -9,6 +9,7 @@ export const COMMON_GRAMMAR_COMPONENTS = Object.freeze({
9
9
  Label, LeadingNumber, List, ListItem, ListRow, MarkdownArticle, MarkdownTableFrame, Mascot, MediaFrame,
10
10
  NavigationFeatureNav, NavLandmark, OtpInput, Page, PageContainer, PageHeader, PinnedActionBar, PressableField, PrimaryRailLayout,
11
11
  Progress, Rail, RankArtwork, Region, RelativeTime, SectionHeader, Sidebar, StateMark, StaticStateRow, StatusDot, Subnav,
12
+ Stack, Cluster, Grid,
12
13
  SurfaceAccordionCard, SurfaceCard, SurfaceCopyGroup, SurfaceListCard, Tabs, Terminal, Text,
13
14
  TextAction, Tooltip, VerticalScrollRegion, WorkspaceShell,
14
15
  ...COMMON_FORMS_COMPONENTS,