@starci/grammar 0.4.5 → 0.4.7

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.
@@ -172,22 +172,37 @@
172
172
  min-width: 0;
173
173
  }
174
174
 
175
+ /*
176
+ * THE COLLAPSED FORM IS THE DEFAULT. Every two-column form lives INSIDE the container query.
177
+ *
178
+ * A container query adds no specificity, so while the expanded tracks were written outside it
179
+ * as attribute selectors, `[data-grammar-layout-rail-width="wide"]` (0,2,0) outranked the
180
+ * collapse (0,1,0) and the layout never collapsed at all: in a 358px container the primary
181
+ * track computed to 0px and the entire primary column vanished on a phone.
182
+ *
183
+ * Restating the collapse once per attribute value would repair today's three variants and break
184
+ * again on the fourth one somebody adds. The two ranges are made MUTUALLY EXCLUSIVE instead:
185
+ * the narrow form is what remains when the query does not match, so no selector inside the
186
+ * query - at any specificity, with any attribute invented later - can outrank it. It is also
187
+ * what a renderer without container queries gets, which is the safe half of the pair.
188
+ */
175
189
  .starci-core-primary-rail-layout {
176
190
  display: grid;
177
191
  min-width: 0;
178
- grid-template-columns: minmax(0, 1fr) minmax(16rem, 20rem);
179
- gap: var(--starci-core-region-gap, 1.5rem);
180
- }
181
-
182
- .starci-core-primary-rail-layout[data-grammar-layout-rail="absent"] {
183
192
  grid-template-columns: minmax(0, 1fr);
193
+ gap: var(--starci-core-region-gap, 1.5rem);
184
194
  }
185
195
 
186
- .starci-core-primary-rail-layout[data-grammar-layout-rail-width="compact"] { grid-template-columns: minmax(0, 1fr) minmax(14rem, 16rem); }
187
- .starci-core-primary-rail-layout[data-grammar-layout-rail-width="wide"] { grid-template-columns: minmax(0, 1fr) minmax(20rem, 24rem); }
188
196
  .starci-core-primary-rail-layout[data-grammar-layout-align="start"] { align-items: start; }
189
197
  .starci-core-primary-rail-layout[data-grammar-layout-align="stretch"] { align-items: stretch; }
190
198
 
199
+ /* The rail track is spelled once per width, and only where there is a rail to give it to. */
200
+ @container starci-core-primary-rail (min-width: 56.001rem) {
201
+ .starci-core-primary-rail-layout[data-grammar-layout-rail="present"] { grid-template-columns: minmax(0, 1fr) minmax(16rem, 20rem); }
202
+ .starci-core-primary-rail-layout[data-grammar-layout-rail="present"][data-grammar-layout-rail-width="compact"] { grid-template-columns: minmax(0, 1fr) minmax(14rem, 16rem); }
203
+ .starci-core-primary-rail-layout[data-grammar-layout-rail="present"][data-grammar-layout-rail-width="wide"] { grid-template-columns: minmax(0, 1fr) minmax(20rem, 24rem); }
204
+ }
205
+
191
206
  .starci-core-primary-region,
192
207
  .starci-core-rail-region {
193
208
  min-width: 0;
@@ -1167,11 +1182,13 @@
1167
1182
  }
1168
1183
 
1169
1184
  @container starci-core-primary-rail (max-width: 56rem) {
1170
- .starci-core-primary-rail-layout {
1171
- grid-template-columns: minmax(0, 1fr);
1172
- }
1173
-
1174
- /* Collapsed, the rail may lead - a filter or summary a reader needs before the content. */
1185
+ /*
1186
+ * The single column itself is the DEFAULT above, not an override here - see the note on
1187
+ * `.starci-core-primary-rail-layout`. This block owns only what is true of the collapsed
1188
+ * reading order, which has no counterpart outside the query to fight with.
1189
+ *
1190
+ * Collapsed, the rail may lead - a filter or summary a reader needs before the content.
1191
+ */
1175
1192
  .starci-core-primary-rail-layout[data-grammar-layout-collapsed-order="rail-first"] .starci-core-rail-region {
1176
1193
  order: -1;
1177
1194
  }
@@ -1293,6 +1310,47 @@
1293
1310
  gap: var(--starci-core-inline-gap, 0.5rem);
1294
1311
  }
1295
1312
 
1313
+ /*
1314
+ * THE BAND'S OWN CONTROLS MEET THE 44px TOUCH FLOOR.
1315
+ *
1316
+ * Every pressable in the two action slots was the vendor button's own height - 2.25rem on
1317
+ * desktop and 2.5rem compact - so the language menu, the cart, the account button, the compact
1318
+ * drawer trigger and the field-shaped search trigger all sat under the floor, on the surface a
1319
+ * reader is most likely to touch. It is a MINIMUM, not a size: `min-inline-size` and
1320
+ * `min-block-size` are properties the vendor's rules never set, so the glyph, the label, the
1321
+ * paint and the corner are all untouched and no `!important` is owed to the components layer.
1322
+ *
1323
+ * The band does NOT grow. The primary row is 4rem with a 0.5rem block inset on each side, so
1324
+ * 44px is 4px short of the 3rem it already offers a control, and `--starci-core-band-height`
1325
+ * stays `calc(4rem + 1px)`. The floor is spelled on the pressable, never on the slot: a slot
1326
+ * with a min-height would pad a row that has nothing in it.
1327
+ *
1328
+ * The feature layer is deliberately out of scope - its tabs are a Tabs branch, and a tab's
1329
+ * target is that branch's to answer.
1330
+ *
1331
+ * The primary destinations in the `navigation` slot carry the identical selector: a
1332
+ * `route`-appearance TextAction already meets the floor on its own (below), but the slot rule
1333
+ * is the family's general-purpose net for ANY pressable a consumer puts there, the same way the
1334
+ * action slots protect a control regardless of which leaf renders it.
1335
+ */
1336
+ .starci-core-navigation-feature-nav-actions :where(button, [role="button"], a[href]),
1337
+ .starci-core-navigation-feature-nav-navigation :where(button, [role="button"], a[href]),
1338
+ .starci-core-navigation-feature-nav-compact-navigation :where(button, [role="button"], a[href]) {
1339
+ min-inline-size: 44px;
1340
+ min-block-size: 44px;
1341
+ }
1342
+
1343
+ /*
1344
+ * The identity slot's brand link is a `plain` TextAction used as a same-document pressable, not
1345
+ * a route: `plain` elsewhere in the family stays a compact inline mark with no reserved hit
1346
+ * area, so the floor is scoped to this one band slot instead of the bare `[data-appearance]`
1347
+ * rule, which would grow every quiet inline action across the app that never claimed to be a
1348
+ * touch target.
1349
+ */
1350
+ .starci-core-navigation-feature-nav-identity .starci-core-text-action[data-appearance="plain"] {
1351
+ min-block-size: var(--starci-core-control-min-size, 2.75rem);
1352
+ }
1353
+
1296
1354
  .starci-core-navigation-feature-nav-feature {
1297
1355
  width: 100%;
1298
1356
  padding-inline: 0.75rem;
@@ -1450,16 +1508,26 @@
1450
1508
  display: none;
1451
1509
  }
1452
1510
 
1511
+ /*
1512
+ * THE COLLAPSED FORM IS THE DEFAULT here too, for the reason recorded on
1513
+ * `.starci-core-primary-rail-layout`: every multi-track form lives INSIDE a container query, so
1514
+ * the stacked one cannot be outranked by an attribute selector written outside it. Before this,
1515
+ * the two-track rule for `[navigation="present"][rail="present"]` (0,3,0) in the 72rem query
1516
+ * beat the collapse group's bare class (0,1,0), and the leading four-track rule (0,4,0) beat
1517
+ * every collapse rule there is, so a shell carrying a navigation and a rail never stacked.
1518
+ *
1519
+ * The tiers are mutually exclusive ranges, narrowest first:
1520
+ * default one column, one row per region
1521
+ * > 56rem the regions take their own tracks
1522
+ * > 72rem a navigation AND a rail stand beside the primary at the same time
1523
+ */
1453
1524
  .starci-core-workspace-shell-layout {
1454
1525
  --starci-core-workspace-navigation-track: minmax(14rem, var(--starci-core-workspace-navigation-width, 18rem));
1455
1526
  --starci-core-workspace-rail-track: minmax(16rem, var(--starci-core-rail-standard, 20rem));
1456
1527
  display: grid;
1457
1528
  min-width: 0;
1458
- grid-template-areas: "navigation primary rail";
1459
- grid-template-columns:
1460
- var(--starci-core-workspace-navigation-track)
1461
- minmax(0, 1fr)
1462
- var(--starci-core-workspace-rail-track);
1529
+ grid-template-areas: "navigation" "primary" "rail";
1530
+ grid-template-columns: minmax(0, 1fr);
1463
1531
  gap: var(--starci-core-region-gap, 1.5rem);
1464
1532
  }
1465
1533
 
@@ -1467,25 +1535,22 @@
1467
1535
  --starci-core-workspace-navigation-track: max-content;
1468
1536
  }
1469
1537
 
1470
- .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="absent"][data-grammar-workspace-rail="present"] {
1471
- grid-template-areas: "primary rail";
1472
- grid-template-columns: minmax(0, 1fr) var(--starci-core-workspace-rail-track);
1538
+ /* Stacked, an absent region leaves no row behind - an empty one would still take a gap. */
1539
+ .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="absent"] {
1540
+ grid-template-areas: "primary" "rail";
1473
1541
  }
1474
1542
 
1475
- .starci-core-workspace-shell-layout[data-grammar-workspace-rail-position="leading"][data-grammar-workspace-navigation="absent"][data-grammar-workspace-rail="present"] {
1476
- grid-template-areas: "rail rule primary";
1477
- grid-template-columns: var(--starci-core-workspace-rail-track) 1px minmax(0, 1fr);
1478
- column-gap: 0;
1543
+ .starci-core-workspace-shell-layout[data-grammar-workspace-rail="absent"] {
1544
+ grid-template-areas: "navigation" "primary";
1479
1545
  }
1480
1546
 
1481
- .starci-core-workspace-shell-layout[data-grammar-workspace-rail-position="leading"][data-grammar-workspace-navigation="present"][data-grammar-workspace-rail="present"] {
1482
- grid-template-areas: "navigation rail rule primary";
1483
- grid-template-columns:
1484
- var(--starci-core-workspace-navigation-track)
1485
- var(--starci-core-workspace-rail-track)
1486
- 1px
1487
- minmax(0, 1fr);
1488
- column-gap: 0;
1547
+ .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="absent"][data-grammar-workspace-rail="absent"] {
1548
+ grid-template-areas: "primary";
1549
+ }
1550
+
1551
+ /* A leading rail keeps its precedence in the reading order once the tracks are gone. */
1552
+ .starci-core-workspace-shell-layout[data-grammar-workspace-rail-position="leading"][data-grammar-workspace-navigation="absent"][data-grammar-workspace-rail="present"] {
1553
+ grid-template-areas: "rail" "primary";
1489
1554
  }
1490
1555
 
1491
1556
  .starci-core-workspace-shell-leading-rule {
@@ -1497,22 +1562,61 @@
1497
1562
  background: var(--separator, var(--starci-core-separator, GrayText));
1498
1563
  }
1499
1564
 
1500
- .starci-core-workspace-shell-layout[data-grammar-workspace-rail-position="leading"] .starci-core-workspace-shell-leading-rule {
1501
- display: block;
1502
- }
1565
+ @container starci-core-workspace-shell (min-width: 56.001rem) {
1566
+ .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="present"][data-grammar-workspace-rail="present"] {
1567
+ grid-template-areas: "navigation primary" "navigation rail";
1568
+ grid-template-columns: var(--starci-core-workspace-navigation-track) minmax(0, 1fr);
1569
+ }
1503
1570
 
1504
- .starci-core-workspace-shell-layout[data-grammar-workspace-rail-position="leading"] .starci-core-workspace-shell-primary {
1505
- padding-inline-start: var(--starci-core-workspace-leading-seam, 2rem);
1506
- }
1571
+ .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="absent"][data-grammar-workspace-rail="present"] {
1572
+ grid-template-areas: "primary rail";
1573
+ grid-template-columns: minmax(0, 1fr) var(--starci-core-workspace-rail-track);
1574
+ }
1575
+
1576
+ .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="present"][data-grammar-workspace-rail="absent"] {
1577
+ grid-template-areas: "navigation primary";
1578
+ grid-template-columns: var(--starci-core-workspace-navigation-track) minmax(0, 1fr);
1579
+ }
1580
+
1581
+ .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="absent"][data-grammar-workspace-rail="absent"] {
1582
+ grid-template-areas: "primary";
1583
+ grid-template-columns: minmax(0, 1fr);
1584
+ }
1585
+
1586
+ .starci-core-workspace-shell-layout[data-grammar-workspace-rail-position="leading"][data-grammar-workspace-navigation="absent"][data-grammar-workspace-rail="present"] {
1587
+ grid-template-areas: "rail rule primary";
1588
+ grid-template-columns: var(--starci-core-workspace-rail-track) 1px minmax(0, 1fr);
1589
+ column-gap: 0;
1590
+ }
1591
+
1592
+ .starci-core-workspace-shell-layout[data-grammar-workspace-rail-position="leading"][data-grammar-workspace-navigation="present"][data-grammar-workspace-rail="present"] {
1593
+ grid-template-areas: "navigation rail rule primary";
1594
+ grid-template-columns:
1595
+ var(--starci-core-workspace-navigation-track)
1596
+ var(--starci-core-workspace-rail-track)
1597
+ 1px
1598
+ minmax(0, 1fr);
1599
+ column-gap: 0;
1600
+ }
1507
1601
 
1508
- .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="present"][data-grammar-workspace-rail="absent"] {
1509
- grid-template-areas: "navigation primary";
1510
- grid-template-columns: var(--starci-core-workspace-navigation-track) minmax(0, 1fr);
1602
+ /* The seam and its rule belong to the side-by-side form, so they arrive with the tracks. */
1603
+ .starci-core-workspace-shell-layout[data-grammar-workspace-rail-position="leading"] .starci-core-workspace-shell-leading-rule {
1604
+ display: block;
1605
+ }
1606
+
1607
+ .starci-core-workspace-shell-layout[data-grammar-workspace-rail-position="leading"] .starci-core-workspace-shell-primary {
1608
+ padding-inline-start: var(--starci-core-workspace-leading-seam, 2rem);
1609
+ }
1511
1610
  }
1512
1611
 
1513
- .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="absent"][data-grammar-workspace-rail="absent"] {
1514
- grid-template-areas: "primary";
1515
- grid-template-columns: minmax(0, 1fr);
1612
+ @container starci-core-workspace-shell (min-width: 72.001rem) {
1613
+ .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="present"][data-grammar-workspace-rail="present"] {
1614
+ grid-template-areas: "navigation primary rail";
1615
+ grid-template-columns:
1616
+ var(--starci-core-workspace-navigation-track)
1617
+ minmax(0, 1fr)
1618
+ var(--starci-core-workspace-rail-track);
1619
+ }
1516
1620
  }
1517
1621
 
1518
1622
  .starci-core-workspace-shell-layout[data-grammar-workspace-rail-width="compact"] {
@@ -1847,62 +1951,16 @@
1847
1951
  }
1848
1952
 
1849
1953
  @container starci-core-workspace-shell (max-width: 72rem) {
1850
- .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="present"][data-grammar-workspace-rail="present"] {
1851
- grid-template-areas: "navigation primary" "navigation rail";
1852
- grid-template-columns: var(--starci-core-workspace-navigation-track) minmax(0, 1fr);
1853
- }
1854
-
1855
- .starci-core-workspace-shell-layout[data-grammar-workspace-rail-position="leading"][data-grammar-workspace-navigation="present"][data-grammar-workspace-rail="present"] {
1856
- grid-template-areas: "navigation rail rule primary";
1857
- grid-template-columns:
1858
- var(--starci-core-workspace-navigation-track)
1859
- var(--starci-core-workspace-rail-track)
1860
- 1px
1861
- minmax(0, 1fr);
1862
- }
1863
-
1864
1954
  .starci-core-workspace-shell-rail .starci-core-rail {
1865
1955
  max-width: none;
1866
1956
  }
1867
1957
  }
1868
1958
 
1959
+ /*
1960
+ * Every grid template this shell can take now lives in the two `min-width` tiers above. What
1961
+ * stays here is the behaviour of a STACKED rail, which no rule outside the query contradicts.
1962
+ */
1869
1963
  @container starci-core-workspace-shell (max-width: 56rem) {
1870
- .starci-core-workspace-shell-layout,
1871
- .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="absent"][data-grammar-workspace-rail="present"],
1872
- .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="present"][data-grammar-workspace-rail="absent"],
1873
- .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="absent"][data-grammar-workspace-rail="absent"] {
1874
- grid-template-areas: "navigation" "primary" "rail";
1875
- grid-template-columns: minmax(0, 1fr);
1876
- }
1877
-
1878
- .starci-core-workspace-shell-layout[data-grammar-workspace-rail-position="leading"][data-grammar-workspace-navigation="absent"][data-grammar-workspace-rail="present"] {
1879
- grid-template-areas: "rail" "primary";
1880
- }
1881
-
1882
- .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="absent"] {
1883
- grid-template-areas: "primary" "rail";
1884
- }
1885
-
1886
- .starci-core-workspace-shell-layout[data-grammar-workspace-rail-position="leading"][data-grammar-workspace-navigation="absent"] {
1887
- grid-template-areas: "rail" "primary";
1888
- }
1889
-
1890
- .starci-core-workspace-shell-layout[data-grammar-workspace-rail-position="leading"] .starci-core-workspace-shell-leading-rule {
1891
- display: none;
1892
- }
1893
-
1894
- .starci-core-workspace-shell-layout[data-grammar-workspace-rail-position="leading"] .starci-core-workspace-shell-primary {
1895
- padding-inline-start: 0;
1896
- }
1897
-
1898
- .starci-core-workspace-shell-layout[data-grammar-workspace-rail="absent"] {
1899
- grid-template-areas: "navigation" "primary";
1900
- }
1901
-
1902
- .starci-core-workspace-shell-layout[data-grammar-workspace-navigation="absent"][data-grammar-workspace-rail="absent"] {
1903
- grid-template-areas: "primary";
1904
- }
1905
-
1906
1964
  .starci-core-workspace-shell-rail .starci-core-rail-frame {
1907
1965
  position: static;
1908
1966
  max-height: none;
@@ -2006,12 +2064,26 @@
2006
2064
  */
2007
2065
 
2008
2066
  /* --- Surface card: the card, its label row and its content shell are HeroUI `Card` parts. --- */
2067
+ /*
2068
+ * THE CARD'S OUTER BOX IS ITS BOUNDARY, exactly as the list's and the accordion's are.
2069
+ *
2070
+ * `SurfaceCard` is the only one of the three whose root is a HeroUI `Card`, and the vendor's
2071
+ * `.card` carries a 1rem padding of its own. That inset moved the card's visible surface AND
2072
+ * its label a further 16px inward, so a padded `SurfaceCard` and an unpadded
2073
+ * `SurfaceAccordionCard` standing in one column disagreed by 16px at both edges - two members
2074
+ * of one family drawing the same boundary in two places. The label row and the content shell
2075
+ * were already given `padding: 0 !important` here for the same reason; the root was missed.
2076
+ *
2077
+ * The card keeps its inset where the contract puts it: `PADDING-4` is claimed by the CONTENT
2078
+ * REGION inside the surface, which is where the reader's copy is held off the boundary.
2079
+ */
2009
2080
  .starci-core-surface-card {
2010
2081
  display: flex !important;
2011
2082
  width: 100% !important;
2012
2083
  min-width: 0;
2013
2084
  flex-direction: column !important;
2014
2085
  gap: var(--starci-core-section-gap, 0.75rem) !important;
2086
+ padding: 0 !important;
2015
2087
  }
2016
2088
 
2017
2089
  .starci-core-surface-label {
@@ -2351,9 +2423,19 @@
2351
2423
  font-weight: 500;
2352
2424
  }
2353
2425
 
2426
+ /*
2427
+ * A `route` TextAction is always a destination, so its 44px floor is unconditional rather than
2428
+ * scoped to one composition: this is the SAME family law the band's action slots carry, applied
2429
+ * to a text-shaped pressable. `min-block-size` is used instead of a taller `padding-block`
2430
+ * because `route` draws no background at rest - only `data-current="true"` paints one - so the
2431
+ * extra block size is invisible chrome around unchanged FONT-2/PADDING-2 typography, not a
2432
+ * bigger pill. The band row still has 3rem (48px) to give a control after its own block inset,
2433
+ * so 44px fits with headroom and `--starci-core-band-height` is untouched.
2434
+ */
2354
2435
  .starci-core-text-action[data-appearance="route"] {
2355
2436
  border-radius: var(--starci-core-pill-radius, 999px);
2356
2437
  padding: 0.5rem 0.75rem;
2438
+ min-block-size: var(--starci-core-control-min-size, 2.75rem);
2357
2439
  color: var(--muted, var(--starci-core-muted, GrayText));
2358
2440
  }
2359
2441
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starci/grammar",
3
- "version": "0.4.5",
3
+ "version": "0.4.7",
4
4
  "description": "Reusable StarCi React components, compositions, and packaged visual DNA.",
5
5
  "keywords": [
6
6
  "starci",
@@ -55,7 +55,7 @@
55
55
  "scripts": {
56
56
  "build": "node scripts/clean.mjs && tsc -p tsconfig.build.json && node scripts/copy-css.mjs",
57
57
  "typecheck": "tsc -p tsconfig.build.json --noEmit",
58
- "test": "npm run build && node --test src/common/index.test.mjs src/core/index.test.mjs src/package-boundary.test.mjs && vitest run --config vitest.config.ts src/shipped-geometry.spec.ts src/core/shipped-claims.spec.tsx src/common/conformance.spec.ts src/common/styles.spec.ts src/core/family.spec.tsx src/core/styles.spec.ts src/core/surface-card-family.spec.tsx src/core/scrollable-surfaces.spec.tsx src/core/primitive/Badge/index.spec.tsx src/core/primitive/Button/index.spec.tsx src/core/primitive/Divider/index.spec.tsx src/core/primitive/Heading/index.spec.tsx src/core/primitive/Icon/index.spec.tsx src/core/primitive/IconButton/index.spec.tsx src/core/primitive/IconTile/index.spec.tsx src/core/primitive/Input/index.spec.tsx src/core/primitive/PressableField/index.spec.tsx src/core/primitive/Progress/index.spec.tsx src/core/primitive/Text/index.spec.tsx src/core/primitive/TextAction/index.spec.tsx src/core/primitive/Label/index.spec.tsx src/core/primitive/RankArtwork/index.spec.tsx src/core/composite/EmptyNotice/index.spec.tsx src/core/branch/Tabs/index.spec.tsx src/core/branch/Subnav/index.spec.tsx src/core/branch/Tooltip/index.spec.tsx src/core/composition/NavigationFeatureNav/index.spec.tsx src/core/composition/NavigationFeatureNav/styles.spec.ts src/core/composition/Sidebar/index.spec.tsx src/core/composition/Sidebar/styles.spec.ts src/core/composition/WorkspaceShell/index.spec.tsx src/core/composition/ChatWorkspace/index.spec.tsx src/heritage/index.spec.tsx src/heritage/styles.spec.ts src/offset-pop/index.spec.tsx src/offset-pop/render.spec.tsx src/offset-pop/styles.spec.ts",
58
+ "test": "npm run build && node --test src/common/index.test.mjs src/core/index.test.mjs src/package-boundary.test.mjs && vitest run --config vitest.config.ts src/shipped-geometry.spec.ts src/core/shipped-claims.spec.tsx src/common/conformance.spec.ts src/common/styles.spec.ts src/core/family.spec.tsx src/core/styles.spec.ts src/core/surface-card-family.spec.tsx src/core/scrollable-surfaces.spec.tsx src/core/primitive/Badge/index.spec.tsx src/core/primitive/Button/index.spec.tsx src/core/primitive/Divider/index.spec.tsx src/core/primitive/Heading/index.spec.tsx src/core/primitive/Icon/index.spec.tsx src/core/primitive/IconButton/index.spec.tsx src/core/primitive/IconTile/index.spec.tsx src/core/primitive/Input/index.spec.tsx src/core/primitive/PressableField/index.spec.tsx src/core/primitive/Progress/index.spec.tsx src/core/primitive/Text/index.spec.tsx src/core/primitive/TextAction/index.spec.tsx src/core/primitive/Label/index.spec.tsx src/core/primitive/RankArtwork/index.spec.tsx src/core/composite/EmptyNotice/index.spec.tsx src/core/branch/Tabs/index.spec.tsx src/core/branch/Subnav/index.spec.tsx src/core/branch/Tooltip/index.spec.tsx src/core/composition/NavigationFeatureNav/index.spec.tsx src/core/composition/NavigationFeatureNav/styles.spec.ts src/core/composition/Sidebar/index.spec.tsx src/core/composition/Sidebar/styles.spec.ts src/core/composition/collapse.spec.tsx src/core/composition/WorkspaceShell/index.spec.tsx src/core/composition/ChatWorkspace/index.spec.tsx src/heritage/index.spec.tsx src/heritage/styles.spec.ts src/offset-pop/index.spec.tsx src/offset-pop/render.spec.tsx src/offset-pop/styles.spec.ts",
59
59
  "prepack": "npm run typecheck && npm test"
60
60
  },
61
61
  "engines": {