@sableui/react 0.9.0 → 0.10.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 (221) hide show
  1. package/AGENTS.md +1 -1
  2. package/CHANGELOG.md +124 -0
  3. package/CONTRIBUTING.md +2 -2
  4. package/DESIGN.md +55 -16
  5. package/README.md +12 -0
  6. package/dist/{_contract-C2M1SjBf.d.ts → _contract-CkqXDVww.d.ts} +25 -2
  7. package/dist/blocks/danger-zone-block.js +3 -3
  8. package/dist/blocks/danger-zone-block.meta.js +1 -1
  9. package/dist/blocks/faq-block.js +3 -3
  10. package/dist/blocks/goal-progress-block.js +1 -1
  11. package/dist/blocks/notification-list-block.js +1 -1
  12. package/dist/blocks/pricing-table-block.js +12 -12
  13. package/dist/blocks/product-card-block.js +3 -3
  14. package/dist/blocks/product-card-block.meta.js +3 -3
  15. package/dist/blocks/profile-card-block.js +1 -1
  16. package/dist/blocks/profile-form-block.js +3 -3
  17. package/dist/blocks/revenue-breakdown-block.js +5 -5
  18. package/dist/blocks/stat-row-block.js +3 -3
  19. package/dist/blocks/task-list-block.js +2 -2
  20. package/dist/blocks/team-members-block.js +1 -1
  21. package/dist/blocks/wallet-block.js +4 -4
  22. package/dist/blocks/wallet-block.meta.js +3 -3
  23. package/dist/components/accordion/accordion.meta.js +2 -2
  24. package/dist/components/app-header/app-header.meta.js +1 -1
  25. package/dist/components/app-shell/app-shell.meta.js +2 -2
  26. package/dist/components/area-chart/area-chart.meta.js +3 -3
  27. package/dist/components/badge/badge.js +13 -4
  28. package/dist/components/badge/badge.meta.js +24 -13
  29. package/dist/components/badge/badge.variants.js +37 -23
  30. package/dist/components/banner/banner.meta.js +8 -8
  31. package/dist/components/banner/banner.variants.js +3 -3
  32. package/dist/components/bar-chart/bar-chart.meta.js +4 -4
  33. package/dist/components/breadcrumbs/breadcrumbs.meta.js +1 -1
  34. package/dist/components/button/button.js +13 -2
  35. package/dist/components/button/button.meta.js +3 -3
  36. package/dist/components/card/card.js +16 -7
  37. package/dist/components/card/card.meta.js +4 -4
  38. package/dist/components/checkbox-card/checkbox-card.meta.js +10 -10
  39. package/dist/components/checkbox-card/checkbox-card.variants.js +15 -15
  40. package/dist/components/code-block/code-block.meta.js +1 -1
  41. package/dist/components/command-menu/command-menu.js +2 -0
  42. package/dist/components/command-menu/command-menu.meta.js +1 -1
  43. package/dist/components/context-card/context-card.meta.js +2 -2
  44. package/dist/components/destructive-action-modal/destructive-action-modal.meta.js +1 -1
  45. package/dist/components/dialog/dialog.meta.js +2 -2
  46. package/dist/components/disclosure-picker/disclosure-picker.js +48 -2
  47. package/dist/components/disclosure-picker/disclosure-picker.meta.js +3 -2
  48. package/dist/components/empty-state/empty-state.meta.js +4 -4
  49. package/dist/components/form/form.js +10 -5
  50. package/dist/components/gradient-art/gradient-art.meta.js +3 -3
  51. package/dist/components/label/label.meta.js +1 -1
  52. package/dist/components/line-chart/line-chart.meta.js +3 -3
  53. package/dist/components/meter/meter.js +1 -1
  54. package/dist/components/meter/meter.meta.js +2 -2
  55. package/dist/components/meter/meter.variants.js +1 -1
  56. package/dist/components/middle-truncate/middle-truncate.meta.js +4 -4
  57. package/dist/components/note/note.meta.js +3 -3
  58. package/dist/components/page-header/page-header.js +1 -1
  59. package/dist/components/pagination/pagination.meta.js +2 -2
  60. package/dist/components/phone/phone.meta.js +1 -1
  61. package/dist/components/pie-chart/pie-chart.meta.js +3 -3
  62. package/dist/components/pill/pill.js +4 -2
  63. package/dist/components/pill/pill.meta.js +19 -2
  64. package/dist/components/pill/pill.variants.js +23 -2
  65. package/dist/components/popover/popover.meta.js +2 -2
  66. package/dist/components/radar-chart/radar-chart.meta.js +3 -3
  67. package/dist/components/radial-chart/radial-chart.meta.js +3 -3
  68. package/dist/components/radio/radio.meta.js +2 -2
  69. package/dist/components/radio-card/radio-card.meta.js +6 -6
  70. package/dist/components/radio-card/radio-card.variants.js +15 -15
  71. package/dist/components/scroller/scroller.meta.js +1 -1
  72. package/dist/components/search-input/search-input.meta.js +1 -1
  73. package/dist/components/section-header/section-header.js +1 -1
  74. package/dist/components/segmented-bar/segmented-bar.js +1 -1
  75. package/dist/components/segmented-bar/segmented-bar.meta.js +6 -6
  76. package/dist/components/segmented-bar/segmented-bar.variants.js +4 -4
  77. package/dist/components/select/select.meta.js +2 -2
  78. package/dist/components/sheet/sheet.js +15 -1
  79. package/dist/components/sheet/sheet.meta.js +1 -1
  80. package/dist/components/side-nav/side-nav.meta.js +1 -1
  81. package/dist/components/sidebar/sidebar.meta.js +1 -1
  82. package/dist/components/sparkline/sparkline.meta.js +4 -4
  83. package/dist/components/spinner/spinner.meta.js +1 -1
  84. package/dist/components/status-dot/status-dot.js +4 -1
  85. package/dist/components/status-dot/status-dot.meta.js +8 -16
  86. package/dist/components/status-dot/status-dot.variants.js +13 -4
  87. package/dist/components/stepper/stepper.js +11 -2
  88. package/dist/components/table/table.meta.js +4 -4
  89. package/dist/components/tabs/tabs.meta.js +1 -1
  90. package/dist/components/textarea/textarea.meta.js +2 -2
  91. package/dist/components/toast/toast.js +1 -0
  92. package/dist/components/toast/toast.meta.js +1 -1
  93. package/dist/components/tooltip/tooltip.meta.js +2 -2
  94. package/dist/file-hashes.json +127 -124
  95. package/dist/foundations/spacing.js +8 -8
  96. package/dist/index.d.ts +138 -73
  97. package/dist/index.js +12 -1
  98. package/dist/lib/chart/types.js +3 -3
  99. package/dist/lib/is-promise.js +5 -0
  100. package/dist/lib/palette.js +103 -0
  101. package/dist/lib/selection-card.js +4 -4
  102. package/dist/palette.css +669 -0
  103. package/dist/patterns/auth-page.js +6 -6
  104. package/dist/patterns/auth-page.meta.js +3 -3
  105. package/dist/patterns/brand-landing-page.js +2 -2
  106. package/dist/patterns/chat-panel.js +2 -2
  107. package/dist/patterns/dashboard-page.js +71 -71
  108. package/dist/patterns/dashboard-page.meta.js +5 -5
  109. package/dist/patterns/feed-page.js +25 -25
  110. package/dist/patterns/feed-page.meta.js +3 -3
  111. package/dist/patterns/landing-page.js +1 -1
  112. package/dist/patterns/list-detail-page.js +17 -17
  113. package/dist/patterns/settings-page.js +17 -17
  114. package/dist/presets/index.d.ts +1 -1
  115. package/dist/presets/index.js +17 -2
  116. package/dist/styles.css +163 -55
  117. package/dist/{theme-provider-S0NVJs2Y.d.ts → theme-provider-CdSicAad.d.ts} +1 -1
  118. package/dist/themes/_contract.js +22 -8
  119. package/dist/themes/atelier/atelier.css +13 -13
  120. package/dist/themes/atelier/index.d.ts +1 -1
  121. package/dist/themes/ember/ember.css +13 -13
  122. package/dist/themes/ember/index.d.ts +1 -1
  123. package/dist/themes/index.d.ts +2 -2
  124. package/dist/themes/meridian/index.d.ts +1 -1
  125. package/dist/themes/meridian/meridian.css +13 -13
  126. package/dist/themes/poppy/index.d.ts +1 -1
  127. package/dist/themes/poppy/poppy.css +19 -16
  128. package/dist/themes/prism/index.d.ts +1 -1
  129. package/dist/themes/prism/prism.css +18 -15
  130. package/dist/themes/sable/index.d.ts +1 -1
  131. package/dist/themes/sable/sable.css +18 -22
  132. package/dist/themes/verdant/index.d.ts +1 -1
  133. package/dist/themes/verdant/verdant.css +15 -15
  134. package/llms/blocks/danger-zone-block.md +4 -4
  135. package/llms/blocks/faq-block.md +3 -3
  136. package/llms/blocks/goal-progress-block.md +1 -1
  137. package/llms/blocks/notification-list-block.md +1 -1
  138. package/llms/blocks/pricing-table-block.md +12 -12
  139. package/llms/blocks/product-card-block.md +6 -6
  140. package/llms/blocks/profile-card-block.md +1 -1
  141. package/llms/blocks/profile-form-block.md +3 -3
  142. package/llms/blocks/revenue-breakdown-block.md +5 -5
  143. package/llms/blocks/stat-row-block.md +3 -3
  144. package/llms/blocks/task-list-block.md +2 -2
  145. package/llms/blocks/team-members-block.md +1 -1
  146. package/llms/blocks/wallet-block.md +7 -7
  147. package/llms/components/accordion.md +2 -2
  148. package/llms/components/app-header.md +1 -1
  149. package/llms/components/app-shell.md +2 -2
  150. package/llms/components/area-chart.md +1 -1
  151. package/llms/components/badge.md +15 -7
  152. package/llms/components/banner.md +6 -6
  153. package/llms/components/bar-chart.md +2 -2
  154. package/llms/components/breadcrumbs.md +1 -1
  155. package/llms/components/button.md +3 -3
  156. package/llms/components/card.md +4 -4
  157. package/llms/components/checkbox-card.md +5 -5
  158. package/llms/components/code-block.md +1 -1
  159. package/llms/components/command-menu.md +1 -1
  160. package/llms/components/context-card.md +2 -2
  161. package/llms/components/destructive-action-modal.md +1 -1
  162. package/llms/components/dialog.md +2 -2
  163. package/llms/components/disclosure-picker.md +2 -1
  164. package/llms/components/empty-state.md +4 -4
  165. package/llms/components/gradient-art.md +3 -3
  166. package/llms/components/label.md +1 -1
  167. package/llms/components/line-chart.md +1 -1
  168. package/llms/components/meter.md +2 -2
  169. package/llms/components/middle-truncate.md +5 -5
  170. package/llms/components/note.md +3 -3
  171. package/llms/components/pagination.md +2 -2
  172. package/llms/components/phone.md +1 -1
  173. package/llms/components/pie-chart.md +1 -1
  174. package/llms/components/pill.md +12 -2
  175. package/llms/components/popover.md +2 -2
  176. package/llms/components/radar-chart.md +1 -1
  177. package/llms/components/radial-chart.md +1 -1
  178. package/llms/components/radio-card.md +4 -4
  179. package/llms/components/radio.md +2 -2
  180. package/llms/components/scroller.md +1 -1
  181. package/llms/components/search-input.md +1 -1
  182. package/llms/components/segmented-bar.md +7 -7
  183. package/llms/components/select.md +2 -2
  184. package/llms/components/sheet.md +1 -1
  185. package/llms/components/side-nav.md +1 -1
  186. package/llms/components/sidebar.md +1 -1
  187. package/llms/components/sparkline.md +2 -2
  188. package/llms/components/spinner.md +1 -1
  189. package/llms/components/status-dot.md +4 -4
  190. package/llms/components/table.md +8 -8
  191. package/llms/components/tabs.md +1 -1
  192. package/llms/components/textarea.md +2 -2
  193. package/llms/components/toast.md +1 -1
  194. package/llms/components/tooltip.md +2 -2
  195. package/llms/foundations/spacing.md +7 -7
  196. package/llms/layout/grid.md +1 -1
  197. package/llms/layout/page.md +1 -1
  198. package/llms/layout/region.md +1 -1
  199. package/llms/layout/split-pane.md +1 -1
  200. package/llms/patterns/auth-page.md +11 -11
  201. package/llms/patterns/brand-landing-page.md +2 -2
  202. package/llms/patterns/chat-panel.md +2 -2
  203. package/llms/patterns/dashboard-page.md +78 -78
  204. package/llms/patterns/feed-page.md +31 -31
  205. package/llms/patterns/landing-page.md +1 -1
  206. package/llms/patterns/list-detail-page.md +18 -18
  207. package/llms/patterns/settings-page.md +18 -18
  208. package/llms/reference/token-intent.md +25 -11
  209. package/llms/reference/utilities.md +1 -1
  210. package/llms/tasks/adding-a-component.md +4 -1
  211. package/llms/tasks/building-a-page.md +40 -0
  212. package/llms/tasks/building-with-sable.md +4 -0
  213. package/llms/tasks/converting-an-app.md +3 -1
  214. package/llms/tasks/using-presets.md +4 -0
  215. package/llms-full.txt +433 -347
  216. package/llms.txt +7 -7
  217. package/package.json +4 -4
  218. package/registry.json +369 -233
  219. package/scripts/lint-rules.mjs +26 -5
  220. package/scripts/sources.mjs +4 -1
  221. package/skills/sable/SKILL.md +14 -3
package/dist/styles.css CHANGED
@@ -35,6 +35,11 @@
35
35
  to check. */
36
36
  @import "./themes/sable/sable.css";
37
37
 
38
+ /* The palette: nine colour families and a scale under every tone, generated
39
+ from whatever theme is painting (bg-blue-500, text-tone-1-700,
40
+ border-neutral-200). Generated; see src/lib/palette.ts. */
41
+ @import "./palette.css";
42
+
38
43
  /* Scan the package for utility classes (path is relative to THIS file). Covers
39
44
  both workspace source (.ts/.tsx next to this file in src/) and the compiled
40
45
  dist (.js next to the copied styles.css), so the same file works in both. */
@@ -95,18 +100,18 @@
95
100
  --color-sidebar-ring: var(--sidebar-ring);
96
101
 
97
102
  /* Post-type tones + highlight (semantic — carry meaning) */
98
- --color-tone-standard: var(--tone-standard);
99
- --color-tone-collectible: var(--tone-collectible);
100
- --color-tone-edition: var(--tone-edition);
103
+ --color-tone-3: var(--tone-3);
104
+ --color-tone-2: var(--tone-2);
105
+ --color-tone-1: var(--tone-1);
101
106
  --color-tone-warning: var(--tone-warning);
102
107
  --color-tone-info: var(--tone-info);
103
108
  --color-highlight: var(--highlight);
104
109
 
105
110
  /* Tone ink — theme-adaptive legible text/icon color ON a tone fill, so a
106
- component writes `text-tone-edition-foreground` (no palette name, no dark:). */
107
- --color-tone-standard-foreground: var(--tone-standard-foreground);
108
- --color-tone-collectible-foreground: var(--tone-collectible-foreground);
109
- --color-tone-edition-foreground: var(--tone-edition-foreground);
111
+ component writes `text-tone-1-foreground` (no palette name, no dark:). */
112
+ --color-tone-3-foreground: var(--tone-3-foreground);
113
+ --color-tone-2-foreground: var(--tone-2-foreground);
114
+ --color-tone-1-foreground: var(--tone-1-foreground);
110
115
  --color-tone-warning-foreground: var(--tone-warning-foreground);
111
116
  --color-tone-info-foreground: var(--tone-info-foreground);
112
117
  /* Status text: a status colour drawn on a surface. Tailwind resolves each
@@ -404,9 +409,9 @@
404
409
  neutral (black/white buttons): then the art must keep the brand, or Ember's
405
410
  embers go grey. Set the hook to the brand wherever --primary stops being it. */
406
411
  --art-1: var(--theme-art-1, oklch(from var(--tone-info) clamp(0.5, calc(l + 0.16), 0.9) max(calc(c * 1.25), 0.1) h));
407
- --art-2: var(--theme-art-2, oklch(from var(--tone-collectible) clamp(0.5, calc(l + 0.16), 0.9) max(calc(c * 1.25), 0.1) h));
408
- --art-3: var(--theme-art-3, oklch(from var(--tone-edition) clamp(0.5, calc(l + 0.16), 0.9) max(calc(c * 1.25), 0.1) h));
409
- --art-4: var(--theme-art-4, oklch(from var(--tone-standard) clamp(0.5, calc(l + 0.16), 0.9) max(calc(c * 1.25), 0.1) h));
412
+ --art-2: var(--theme-art-2, oklch(from var(--tone-2) clamp(0.5, calc(l + 0.16), 0.9) max(calc(c * 1.25), 0.1) h));
413
+ --art-3: var(--theme-art-3, oklch(from var(--tone-1) clamp(0.5, calc(l + 0.16), 0.9) max(calc(c * 1.25), 0.1) h));
414
+ --art-4: var(--theme-art-4, oklch(from var(--tone-3) clamp(0.5, calc(l + 0.16), 0.9) max(calc(c * 1.25), 0.1) h));
410
415
  --art-5: var(--theme-art-5, transparent);
411
416
  --art-6: var(--theme-art-6, transparent);
412
417
  --art-ground: var(--theme-art-ground, color-mix(in oklab, var(--theme-art-brand, var(--primary)) 55%, oklch(from var(--tone-info) 0.3 c h)));
@@ -415,54 +420,111 @@
415
420
  --art-grain: var(--theme-art-grain, 0);
416
421
  }
417
422
 
423
+ /* ==========================================================================
424
+ Vertical rhythm — the baseline is DERIVED from the body text, the way a
425
+ page is set in print: one line of body copy (size × leading) is the unit,
426
+ divided into a few equal steps that everything else lands on. See
427
+ DESIGN.md → Vertical rhythm.
428
+
429
+ --baseline one line of body text, rounded so it divides evenly
430
+ --baseline-split how many steps a line divides into. A theme picks it with
431
+ --theme-baseline-split; thirds (8px at 15/24) by default.
432
+ Halves read calmer and more editorial; finer than thirds
433
+ stops giving structure unless every value is chosen by eye.
434
+ --baseline-step the step: line heights round to it, and the spacing scale
435
+ is half of it (so `p-4` is two steps)
436
+ --leading-scale how open the reading text is set. This is what makes a
437
+ look Airy or Compact: more leading is a longer line, so a
438
+ bigger step, so every gap grows with the text it spaces.
439
+ A theme sets --theme-leading-scale; the customizer sets it.
440
+
441
+ The step is whole px (rounded with `round(…, 1px)`), so a rule on the step
442
+ is never a fraction that drifts. --spacing derives from it — at Sable's
443
+ defaults that is exactly Tailwind's 0.25rem at any root size, so nothing
444
+ moves until the type does.
445
+
446
+ Declared on every element that can re-declare the type tokens, not just
447
+ :root: a custom property resolves where it is declared, so a preset-scoped
448
+ preview would otherwise keep the page's step.
449
+ ========================================================================== */
450
+
451
+ :root,
452
+ [data-sable-theme] {
453
+ --leading-scale: var(--theme-leading-scale, 1);
454
+ --baseline-split: var(--theme-baseline-split, 3);
455
+ --baseline-step: max(
456
+ 2px,
457
+ round(
458
+ nearest,
459
+ calc(var(--type-body-md-size, 0.9375rem) * var(--type-body-md-leading, 1.55) * var(--leading-scale) / var(--baseline-split)),
460
+ 1px
461
+ )
462
+ );
463
+ --baseline: calc(var(--baseline-step) * var(--baseline-split));
464
+ --spacing: calc(var(--baseline-step) / 2);
465
+ /* Every Stack/Row/Grid gap number is in steps. */
466
+ --rhythm-unit: calc(var(--spacing) * 2);
467
+ /* Gutters are in steps too: a Grid's row gap is vertical space. 2 steps on
468
+ phones, 3 on desktop, snapped in between rather than fluid. */
469
+ --grid-gutter: round(
470
+ nearest,
471
+ clamp(calc(var(--rhythm-unit) * 2), calc(var(--rhythm-unit) * 1.6 + 1vw), calc(var(--rhythm-unit) * 3)),
472
+ var(--rhythm-unit)
473
+ );
474
+ }
475
+
418
476
  /* ==========================================================================
419
477
  Typography — six tiers. Each utility bundles size + weight + line-height +
420
478
  tracking. Compose with color/margin only; never override the four paired
421
479
  properties individually. Mono uses the theme's --font-mono.
422
480
 
423
481
  Leading is authored as a RATIO (the `--type-*-leading` hooks every theme
424
- tunes) and rendered on the 0.25rem grid: `round(nearest, ratio × 1em,
425
- 0.25rem)`. Ratios alone landed almost nowhere on the grid DESIGN.md
426
- promises (15px body at 1.55 = 23.25px, a 36px h1 at 1.15 = 41.4px), so
427
- stacked text drifted off the vertical rhythm a fraction of a pixel per
428
- line. Rounding keeps each tier's (and each theme's) intended proportion and
429
- snaps the result — 24px and 40px there — at any root size, because the grid
430
- step is in rem too. The `ui-*` tier is already whole px on the grid.
482
+ tunes) and rendered on the baseline step: `round(nearest, ratio × 1em,
483
+ var(--baseline-step))`. Ratios alone landed almost nowhere on a grid (15px
484
+ body at 1.55 = 23.25px, a 36px h1 at 1.15 = 41.4px), so stacked text
485
+ drifted off the rhythm a fraction of a pixel per line. Rounding keeps each
486
+ tier's (and each theme's) intended proportion and snaps the result — 24px
487
+ and 40px there at the default 8px step.
488
+
489
+ The reading tiers (body, title, caption, mono-md) also take
490
+ --leading-scale, so Airy opens the text itself; display, heading and label
491
+ leading is a shape the theme chose and only snaps. The `ui-*` tier is
492
+ already whole px on its own 4px grid (the workspace register).
431
493
  ========================================================================== */
432
494
 
433
495
  @utility text-display-4xl {
434
496
  font-family: var(--font-display, var(--font-sans));
435
497
  font-size: var(--type-display-4xl-size, clamp(4.5rem, 12vw, 12rem));
436
498
  font-weight: var(--type-display-4xl-weight, 800);
437
- line-height: round(nearest, calc(var(--type-display-4xl-leading, 0.9) * 1em), 0.25rem);
499
+ line-height: round(nearest, calc(var(--type-display-4xl-leading, 0.9) * 1em), var(--baseline-step, 0.25rem));
438
500
  letter-spacing: var(--type-display-4xl-tracking, -0.05em);
439
501
  }
440
502
  @utility text-display-3xl {
441
503
  font-family: var(--font-display, var(--font-sans));
442
504
  font-size: var(--type-display-3xl-size, 6rem);
443
505
  font-weight: var(--type-display-3xl-weight, 700);
444
- line-height: round(nearest, calc(var(--type-display-3xl-leading, 0.95) * 1em), 0.25rem);
506
+ line-height: round(nearest, calc(var(--type-display-3xl-leading, 0.95) * 1em), var(--baseline-step, 0.25rem));
445
507
  letter-spacing: var(--type-display-3xl-tracking, -0.045em);
446
508
  }
447
509
  @utility text-display-2xl {
448
510
  font-family: var(--font-display, var(--font-sans));
449
511
  font-size: var(--type-display-2xl-size, 4.5rem);
450
512
  font-weight: var(--type-display-2xl-weight, 700);
451
- line-height: round(nearest, calc(var(--type-display-2xl-leading, 1) * 1em), 0.25rem);
513
+ line-height: round(nearest, calc(var(--type-display-2xl-leading, 1) * 1em), var(--baseline-step, 0.25rem));
452
514
  letter-spacing: var(--type-display-2xl-tracking, -0.04em);
453
515
  }
454
516
  @utility text-display-xl {
455
517
  font-family: var(--font-display, var(--font-sans));
456
518
  font-size: var(--type-display-xl-size, 3.75rem);
457
519
  font-weight: var(--type-display-xl-weight, 700);
458
- line-height: round(nearest, calc(var(--type-display-xl-leading, 1.05) * 1em), 0.25rem);
520
+ line-height: round(nearest, calc(var(--type-display-xl-leading, 1.05) * 1em), var(--baseline-step, 0.25rem));
459
521
  letter-spacing: var(--type-display-xl-tracking, -0.035em);
460
522
  }
461
523
  @utility text-display-lg {
462
524
  font-family: var(--font-display, var(--font-sans));
463
525
  font-size: var(--type-display-lg-size, 3rem);
464
526
  font-weight: var(--type-display-lg-weight, 700);
465
- line-height: round(nearest, calc(var(--type-display-lg-leading, 1.1) * 1em), 0.25rem);
527
+ line-height: round(nearest, calc(var(--type-display-lg-leading, 1.1) * 1em), var(--baseline-step, 0.25rem));
466
528
  letter-spacing: var(--type-display-lg-tracking, -0.03em);
467
529
  }
468
530
 
@@ -470,28 +532,28 @@
470
532
  font-family: var(--font-display, var(--font-sans));
471
533
  font-size: var(--type-heading-1-size, 2.25rem);
472
534
  font-weight: var(--type-heading-weight, 600);
473
- line-height: round(nearest, calc(var(--type-heading-1-leading, 1.15) * 1em), 0.25rem);
535
+ line-height: round(nearest, calc(var(--type-heading-1-leading, 1.15) * 1em), var(--baseline-step, 0.25rem));
474
536
  letter-spacing: var(--type-heading-1-tracking, -0.025em);
475
537
  }
476
538
  @utility text-heading-2 {
477
539
  font-family: var(--font-display, var(--font-sans));
478
540
  font-size: var(--type-heading-2-size, 1.75rem);
479
541
  font-weight: var(--type-heading-weight, 600);
480
- line-height: round(nearest, calc(var(--type-heading-2-leading, 1.2) * 1em), 0.25rem);
542
+ line-height: round(nearest, calc(var(--type-heading-2-leading, 1.2) * 1em), var(--baseline-step, 0.25rem));
481
543
  letter-spacing: var(--type-heading-2-tracking, -0.02em);
482
544
  }
483
545
  @utility text-heading-3 {
484
546
  font-family: var(--font-display, var(--font-sans));
485
547
  font-size: var(--type-heading-3-size, 1.375rem);
486
548
  font-weight: var(--type-heading-weight, 600);
487
- line-height: round(nearest, calc(var(--type-heading-3-leading, 1.25) * 1em), 0.25rem);
549
+ line-height: round(nearest, calc(var(--type-heading-3-leading, 1.25) * 1em), var(--baseline-step, 0.25rem));
488
550
  letter-spacing: var(--type-heading-3-tracking, -0.015em);
489
551
  }
490
552
  @utility text-heading-4 {
491
553
  font-family: var(--font-display, var(--font-sans));
492
554
  font-size: var(--type-heading-4-size, 1.125rem);
493
555
  font-weight: var(--type-heading-weight, 600);
494
- line-height: round(nearest, calc(var(--type-heading-4-leading, 1.3) * 1em), 0.25rem);
556
+ line-height: round(nearest, calc(var(--type-heading-4-leading, 1.3) * 1em), var(--baseline-step, 0.25rem));
495
557
  letter-spacing: var(--type-heading-4-tracking, -0.01em);
496
558
  }
497
559
 
@@ -506,13 +568,13 @@
506
568
  @utility text-title-lg {
507
569
  font-size: var(--type-title-lg-size, 1rem);
508
570
  font-weight: var(--type-title-weight, 600);
509
- line-height: round(nearest, calc(var(--type-title-leading, 1.4) * 1em), 0.25rem);
571
+ line-height: round(nearest, calc(var(--type-title-leading, 1.4) * var(--leading-scale, 1) * 1em), var(--baseline-step, 0.25rem));
510
572
  letter-spacing: var(--type-title-tracking, -0.01em);
511
573
  }
512
574
  @utility text-title-sm {
513
575
  font-size: var(--type-title-sm-size, 0.875rem);
514
576
  font-weight: var(--type-title-weight, 600);
515
- line-height: round(nearest, calc(var(--type-title-leading, 1.4) * 1em), 0.25rem);
577
+ line-height: round(nearest, calc(var(--type-title-leading, 1.4) * var(--leading-scale, 1) * 1em), var(--baseline-step, 0.25rem));
516
578
  letter-spacing: var(--type-title-sm-tracking, -0.005em);
517
579
  }
518
580
 
@@ -531,20 +593,20 @@
531
593
  @utility text-body-lg {
532
594
  font-size: var(--type-body-lg-size, 1.0625rem);
533
595
  font-weight: var(--type-body-lg-weight, 400);
534
- line-height: round(nearest, calc(var(--type-body-lg-leading, 1.6) * 1em), 0.25rem);
596
+ line-height: round(nearest, calc(var(--type-body-lg-leading, 1.6) * var(--leading-scale, 1) * 1em), var(--baseline-step, 0.25rem));
535
597
  letter-spacing: var(--type-body-lg-tracking, -0.005em);
536
598
  text-wrap: pretty;
537
599
  }
538
600
  @utility text-body-md {
539
601
  font-size: var(--type-body-md-size, 0.9375rem);
540
602
  font-weight: var(--type-body-md-weight, 400);
541
- line-height: round(nearest, calc(var(--type-body-md-leading, 1.55) * 1em), 0.25rem);
603
+ line-height: round(nearest, calc(var(--type-body-md-leading, 1.55) * var(--leading-scale, 1) * 1em), var(--baseline-step, 0.25rem));
542
604
  letter-spacing: var(--type-body-md-tracking, -0.005em);
543
605
  }
544
606
  @utility text-body-sm {
545
607
  font-size: var(--type-body-sm-size, 0.8125rem);
546
608
  font-weight: var(--type-body-sm-weight, 400);
547
- line-height: round(nearest, calc(var(--type-body-sm-leading, 1.5) * 1em), 0.25rem);
609
+ line-height: round(nearest, calc(var(--type-body-sm-leading, 1.5) * var(--leading-scale, 1) * 1em), var(--baseline-step, 0.25rem));
548
610
  letter-spacing: var(--type-body-sm-tracking, 0);
549
611
  }
550
612
  /* The dense floor of the body ramp — running text in operator consoles,
@@ -553,7 +615,7 @@
553
615
  @utility text-body-xs {
554
616
  font-size: var(--type-body-xs-size, 0.75rem);
555
617
  font-weight: var(--type-body-xs-weight, 400);
556
- line-height: round(nearest, calc(var(--type-body-xs-leading, 1.5) * 1em), 0.25rem);
618
+ line-height: round(nearest, calc(var(--type-body-xs-leading, 1.5) * var(--leading-scale, 1) * 1em), var(--baseline-step, 0.25rem));
557
619
  letter-spacing: var(--type-body-xs-tracking, 0);
558
620
  }
559
621
 
@@ -580,10 +642,11 @@
580
642
  list-style: disc;
581
643
  padding-inline-start: 1.25em;
582
644
  font-size: var(--type-body-md-size, 0.9375rem);
583
- line-height: round(nearest, calc(var(--type-body-md-leading, 1.55) * 1em), 0.25rem);
645
+ line-height: round(nearest, calc(var(--type-body-md-leading, 1.55) * var(--leading-scale, 1) * 1em), var(--baseline-step, 0.25rem));
584
646
  color: var(--foreground);
585
647
  & > li + li {
586
- margin-block-start: --spacing(1.5);
648
+ /* One baseline step: items stay on the rhythm. */
649
+ margin-block-start: --spacing(2);
587
650
  }
588
651
  & > li::marker {
589
652
  color: var(--muted-foreground);
@@ -593,10 +656,11 @@
593
656
  list-style: decimal;
594
657
  padding-inline-start: 1.5em;
595
658
  font-size: var(--type-body-md-size, 0.9375rem);
596
- line-height: round(nearest, calc(var(--type-body-md-leading, 1.55) * 1em), 0.25rem);
659
+ line-height: round(nearest, calc(var(--type-body-md-leading, 1.55) * var(--leading-scale, 1) * 1em), var(--baseline-step, 0.25rem));
597
660
  color: var(--foreground);
598
661
  & > li + li {
599
- margin-block-start: --spacing(1.5);
662
+ /* One baseline step: items stay on the rhythm. */
663
+ margin-block-start: --spacing(2);
600
664
  }
601
665
  & > li::marker {
602
666
  color: var(--muted-foreground);
@@ -608,18 +672,19 @@
608
672
  grid-template-columns: max-content minmax(0, 1fr);
609
673
  align-items: baseline;
610
674
  column-gap: --spacing(6);
611
- row-gap: --spacing(3);
675
+ /* Two baseline steps between pairs, so each row starts on the rhythm. */
676
+ row-gap: --spacing(4);
612
677
  /* The values' type and ink live on the list and the <dd>s inherit them, so a
613
678
  text-* utility on a <dd> (text-success, text-mono-md) simply wins. The term
614
679
  and the wrapping rules sit in :where(), which adds no specificity. */
615
680
  font-size: var(--type-body-md-size, 0.9375rem);
616
- line-height: round(nearest, calc(var(--type-body-md-leading, 1.55) * 1em), 0.25rem);
681
+ line-height: round(nearest, calc(var(--type-body-md-leading, 1.55) * var(--leading-scale, 1) * 1em), var(--baseline-step, 0.25rem));
617
682
  letter-spacing: var(--type-body-md-tracking, -0.005em);
618
683
  color: var(--foreground);
619
684
  & > :where(dt) {
620
685
  font-size: var(--type-label-md-size, 0.75rem);
621
686
  font-weight: var(--type-label-md-weight, 600);
622
- line-height: round(nearest, calc(var(--type-label-md-leading, 1.2) * 1em), 0.25rem);
687
+ line-height: round(nearest, calc(var(--type-label-md-leading, 1.2) * 1em), var(--baseline-step, 0.25rem));
623
688
  letter-spacing: var(--type-label-md-tracking, 0);
624
689
  color: var(--muted-foreground);
625
690
  }
@@ -638,19 +703,19 @@
638
703
  @utility text-label-lg {
639
704
  font-size: var(--type-label-lg-size, 0.875rem);
640
705
  font-weight: var(--type-label-lg-weight, 600);
641
- line-height: round(nearest, calc(var(--type-label-lg-leading, 1.25) * 1em), 0.25rem);
706
+ line-height: round(nearest, calc(var(--type-label-lg-leading, 1.25) * 1em), var(--baseline-step, 0.25rem));
642
707
  letter-spacing: var(--type-label-lg-tracking, -0.005em);
643
708
  }
644
709
  @utility text-label-md {
645
710
  font-size: var(--type-label-md-size, 0.75rem);
646
711
  font-weight: var(--type-label-md-weight, 600);
647
- line-height: round(nearest, calc(var(--type-label-md-leading, 1.2) * 1em), 0.25rem);
712
+ line-height: round(nearest, calc(var(--type-label-md-leading, 1.2) * 1em), var(--baseline-step, 0.25rem));
648
713
  letter-spacing: var(--type-label-md-tracking, 0);
649
714
  }
650
715
  @utility text-label-sm {
651
716
  font-size: var(--type-label-sm-size, 0.6875rem);
652
717
  font-weight: var(--type-label-sm-weight, 600);
653
- line-height: round(nearest, calc(var(--type-label-sm-leading, 1.2) * 1em), 0.25rem);
718
+ line-height: round(nearest, calc(var(--type-label-sm-leading, 1.2) * 1em), var(--baseline-step, 0.25rem));
654
719
  letter-spacing: var(--type-label-sm-tracking, 0);
655
720
  }
656
721
  /* Sentence case like every other label (UI text is sentence case). The
@@ -660,14 +725,14 @@
660
725
  @utility text-label-xs {
661
726
  font-size: var(--type-label-xs-size, 0.6875rem);
662
727
  font-weight: var(--type-label-xs-weight, 600);
663
- line-height: round(nearest, calc(var(--type-label-xs-leading, 1.2) * 1em), 0.25rem);
728
+ line-height: round(nearest, calc(var(--type-label-xs-leading, 1.2) * 1em), var(--baseline-step, 0.25rem));
664
729
  letter-spacing: var(--type-label-xs-tracking, 0.01em);
665
730
  text-transform: var(--type-label-xs-transform, none);
666
731
  }
667
732
  @utility text-caption {
668
733
  font-size: var(--type-caption-size, 0.75rem);
669
734
  font-weight: var(--type-caption-weight, 400);
670
- line-height: round(nearest, calc(var(--type-caption-leading, 1.4) * 1em), 0.25rem);
735
+ line-height: round(nearest, calc(var(--type-caption-leading, 1.4) * var(--leading-scale, 1) * 1em), var(--baseline-step, 0.25rem));
671
736
  letter-spacing: var(--type-caption-tracking, 0);
672
737
  }
673
738
 
@@ -678,7 +743,7 @@
678
743
  @utility text-overline {
679
744
  font-size: var(--type-overline-size, 0.75rem);
680
745
  font-weight: var(--type-overline-weight, 600);
681
- line-height: round(nearest, calc(var(--type-overline-leading, 1.2) * 1em), 0.25rem);
746
+ line-height: round(nearest, calc(var(--type-overline-leading, 1.2) * 1em), var(--baseline-step, 0.25rem));
682
747
  letter-spacing: var(--type-overline-tracking, 0.08em);
683
748
  text-transform: var(--type-overline-transform, uppercase);
684
749
  }
@@ -690,7 +755,7 @@
690
755
  font-family: var(--font-mono);
691
756
  font-size: var(--type-mono-xl-size, 1.75rem);
692
757
  font-weight: var(--type-mono-xl-weight, 500);
693
- line-height: round(nearest, calc(var(--type-mono-xl-leading, 1.15) * 1em), 0.25rem);
758
+ line-height: round(nearest, calc(var(--type-mono-xl-leading, 1.15) * 1em), var(--baseline-step, 0.25rem));
694
759
  letter-spacing: var(--type-mono-xl-tracking, -0.01em);
695
760
  font-variant-numeric: tabular-nums;
696
761
  }
@@ -698,7 +763,7 @@
698
763
  font-family: var(--font-mono);
699
764
  font-size: var(--type-mono-lg-size, 1.25rem);
700
765
  font-weight: var(--type-mono-lg-weight, 500);
701
- line-height: round(nearest, calc(var(--type-mono-lg-leading, 1.25) * 1em), 0.25rem);
766
+ line-height: round(nearest, calc(var(--type-mono-lg-leading, 1.25) * 1em), var(--baseline-step, 0.25rem));
702
767
  letter-spacing: var(--type-mono-lg-tracking, 0);
703
768
  font-variant-numeric: tabular-nums;
704
769
  }
@@ -706,7 +771,7 @@
706
771
  font-family: var(--font-mono);
707
772
  font-size: var(--type-mono-md-size, 0.8125rem);
708
773
  font-weight: var(--type-mono-md-weight, 400);
709
- line-height: round(nearest, calc(var(--type-mono-md-leading, 1.5) * 1em), 0.25rem);
774
+ line-height: round(nearest, calc(var(--type-mono-md-leading, 1.5) * var(--leading-scale, 1) * 1em), var(--baseline-step, 0.25rem));
710
775
  letter-spacing: var(--type-mono-md-tracking, 0);
711
776
  font-variant-numeric: tabular-nums;
712
777
  }
@@ -717,7 +782,7 @@
717
782
  font-family: var(--font-mono);
718
783
  font-size: var(--type-mono-caption-size, 0.75rem);
719
784
  font-weight: var(--type-mono-caption-weight, 400);
720
- line-height: round(nearest, calc(var(--type-mono-caption-leading, 1.4) * 1em), 0.25rem);
785
+ line-height: round(nearest, calc(var(--type-mono-caption-leading, 1.4) * var(--leading-scale, 1) * 1em), var(--baseline-step, 0.25rem));
721
786
  letter-spacing: var(--type-mono-caption-tracking, 0);
722
787
  font-variant-numeric: tabular-nums;
723
788
  }
@@ -725,7 +790,7 @@
725
790
  font-family: var(--font-mono);
726
791
  font-size: var(--type-mono-sm-size, 0.6875rem);
727
792
  font-weight: var(--type-mono-sm-weight, 500);
728
- line-height: round(nearest, calc(var(--type-mono-sm-leading, 1.2) * 1em), 0.25rem);
793
+ line-height: round(nearest, calc(var(--type-mono-sm-leading, 1.2) * 1em), var(--baseline-step, 0.25rem));
729
794
  letter-spacing: var(--type-mono-sm-tracking, 0.02em);
730
795
  font-variant-numeric: tabular-nums;
731
796
  }
@@ -1549,15 +1614,23 @@
1549
1614
 
1550
1615
  /* Toasts keep clear of an open Sheet's actions. A right sheet's pinned footer
1551
1616
  (Check out) sat under a bottom-right toast, and its close button under a
1552
- top-right one. Where there is room, the stack moves beside the sheet (both are
1553
- w-95); on a narrower screen a bottom stack moves to the top, away from the
1554
- footer. A bottom sheet sends a bottom stack to the top at any width. */
1617
+ top-right one.
1618
+ - Where there is room, a stack on the sheet's side moves beside it. The sheet
1619
+ publishes its real width (--sable-sheet-right-w / -left-w) while mounted.
1620
+ - On a narrower screen the sheet leaves no room beside it. A bottom stack
1621
+ moves to the top, off the footer's actions; a top stack stays, over the
1622
+ header.
1623
+ - A bottom sheet sends a bottom stack to the top, a top sheet sends a top
1624
+ stack to the bottom, at any width.
1625
+ A stack that moves to the other edge re-anchors its stacked toasts too: they
1626
+ hang from the viewport's edge and grow away from it, so a bottom-anchored
1627
+ deck at the top would grow off the screen. */
1555
1628
  @media (width >= 52rem) {
1556
1629
  :root:has([data-sable-sheet="right"][data-open]) [data-sable-toast-viewport][data-position$="right"] {
1557
- right: calc(min(var(--spacing) * 95, 90vw) + var(--spacing) * 4);
1630
+ right: calc(var(--sable-sheet-right-w, min(var(--spacing) * 95, 90vw)) + var(--spacing) * 4);
1558
1631
  }
1559
1632
  :root:has([data-sable-sheet="left"][data-open]) [data-sable-toast-viewport][data-position$="left"] {
1560
- left: calc(min(var(--spacing) * 95, 90vw) + var(--spacing) * 4);
1633
+ left: calc(var(--sable-sheet-left-w, min(var(--spacing) * 95, 90vw)) + var(--spacing) * 4);
1561
1634
  }
1562
1635
  }
1563
1636
  @media (width < 52rem) {
@@ -1566,10 +1639,45 @@
1566
1639
  top: calc(var(--spacing) * 4);
1567
1640
  bottom: auto;
1568
1641
  }
1642
+ :root:has([data-sable-sheet="right"][data-open]) [data-sable-toast-viewport][data-position="bottom-right"] [data-sable-toast-stacked],
1643
+ :root:has([data-sable-sheet="left"][data-open]) [data-sable-toast-viewport][data-position="bottom-left"] [data-sable-toast-stacked] {
1644
+ top: 0;
1645
+ bottom: auto;
1646
+ transform-origin: top;
1647
+ --toast-dir: 1;
1648
+ &::after {
1649
+ top: 100%;
1650
+ bottom: auto;
1651
+ }
1652
+ }
1569
1653
  }
1570
1654
  :root:has([data-sable-sheet="bottom"][data-open]) [data-sable-toast-viewport][data-position^="bottom"] {
1571
1655
  top: calc(var(--spacing) * 4);
1572
1656
  bottom: auto;
1657
+ & [data-sable-toast-stacked] {
1658
+ top: 0;
1659
+ bottom: auto;
1660
+ transform-origin: top;
1661
+ --toast-dir: 1;
1662
+ &::after {
1663
+ top: 100%;
1664
+ bottom: auto;
1665
+ }
1666
+ }
1667
+ }
1668
+ :root:has([data-sable-sheet="top"][data-open]) [data-sable-toast-viewport][data-position^="top"] {
1669
+ top: auto;
1670
+ bottom: calc(var(--spacing) * 4);
1671
+ & [data-sable-toast-stacked] {
1672
+ top: auto;
1673
+ bottom: 0;
1674
+ transform-origin: bottom;
1675
+ --toast-dir: -1;
1676
+ &::after {
1677
+ top: auto;
1678
+ bottom: 100%;
1679
+ }
1680
+ }
1573
1681
  }
1574
1682
 
1575
1683
  /* `Col span={{ base, md, lg }}` / `start={…}` — each breakpoint resolves to the
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
- import { T as ThemeManifest } from './_contract-C2M1SjBf.js';
3
+ import { T as ThemeManifest } from './_contract-CkqXDVww.js';
4
4
 
5
5
  declare const SABLE_THEME_ATTRIBUTE: "data-sable-theme";
6
6
  declare const DEFAULT_THEME_ID: string;
@@ -32,25 +32,25 @@ var SEMANTIC_TOKENS = [
32
32
  "destructive",
33
33
  "destructive-foreground",
34
34
  // Success — the positive-state counterpart to destructive (mirrors it 1:1).
35
- // Backed by caribbean-green; a SEPARATE token from the `tone-standard`
35
+ // Backed by caribbean-green; a SEPARATE token from the `tone-3`
36
36
  // post-type so success-as-state can be retuned without moving the post tone.
37
37
  "success",
38
38
  "success-foreground",
39
39
  // Tones (semantic — carry meaning, not decoration)
40
- "tone-standard",
41
- "tone-collectible",
42
- "tone-edition",
40
+ "tone-3",
41
+ "tone-2",
42
+ "tone-1",
43
43
  "tone-info",
44
44
  "tone-warning",
45
45
  "highlight",
46
46
  // Tone ink — the legible text/icon color ON a tone fill. Theme-adaptive:
47
47
  // because a tone fill flips lightness with the mode (dark 600/700 in light
48
48
  // mode, lighter dark-tuned values in dark mode), its ink must flip too. These
49
- // let a component write `text-tone-edition-foreground` — an intent token with
49
+ // let a component write `text-tone-1-foreground` — an intent token with
50
50
  // no palette name and no `dark:` variant — instead of naming palette steps.
51
- "tone-standard-foreground",
52
- "tone-collectible-foreground",
53
- "tone-edition-foreground",
51
+ "tone-3-foreground",
52
+ "tone-2-foreground",
53
+ "tone-1-foreground",
54
54
  "tone-info-foreground",
55
55
  "tone-warning-foreground",
56
56
  "highlight-foreground",
@@ -218,6 +218,7 @@ var TYPE_OVERLINE_TOKENS = [
218
218
  "type-overline-tracking",
219
219
  "type-overline-transform"
220
220
  ];
221
+ var RHYTHM_TOKENS = ["theme-leading-scale", "theme-baseline-split"];
221
222
  var DENSITY_TOKENS = [
222
223
  "control-xs",
223
224
  "control-sm",
@@ -300,6 +301,16 @@ var ART_TOKENS = [
300
301
  "art-softness",
301
302
  "art-grain"
302
303
  ];
304
+ var PALETTE_TOKENS = ["palette-harmony"];
305
+ var PALETTE_SLOT_TOKENS = [
306
+ "palette-wash",
307
+ "palette-wash-strong",
308
+ "palette-edge",
309
+ "palette-dot",
310
+ "palette-solid",
311
+ "palette-text",
312
+ "palette-solid-ink"
313
+ ];
303
314
  var DERIVED_EDGE_TOKENS = ["border-floating"];
304
315
  var TYPE_UI_TOKENS = [
305
316
  "type-ui-md-size",
@@ -317,7 +328,10 @@ export {
317
328
  DERIVED_EDGE_TOKENS,
318
329
  LAYERING_TOKENS,
319
330
  MOTION_TOKENS,
331
+ PALETTE_SLOT_TOKENS,
332
+ PALETTE_TOKENS,
320
333
  RADIUS_TOKENS,
334
+ RHYTHM_TOKENS,
321
335
  SEMANTIC_TOKENS,
322
336
  TYPE_OVERLINE_TOKENS,
323
337
  TYPE_REFINEMENT_TOKENS,
@@ -2,7 +2,7 @@
2
2
  Mono Editorial — a Sable theme, developed from reference analysis.
3
3
 
4
4
  Components must reference the SEMANTIC tokens (--background, --primary,
5
- --tone-edition, …), never any palette ramp directly. See themes/_contract.ts.
5
+ --tone-1, …), never any palette ramp directly. See themes/_contract.ts.
6
6
  ========================================================================== */
7
7
 
8
8
  [data-sable-theme="atelier"] {
@@ -115,17 +115,17 @@
115
115
  --success: oklch(50% 0.10 173);
116
116
  --success-text: oklch(50% 0.10 173);
117
117
  --success-foreground: #ffffff;
118
- --tone-standard: oklch(45% 0 0);
119
- --tone-collectible: oklch(46% 0.11 300);
120
- --tone-edition: oklch(46% 0.09 173);
118
+ --tone-3: oklch(45% 0 0);
119
+ --tone-2: oklch(46% 0.11 300);
120
+ --tone-1: oklch(46% 0.09 173);
121
121
  --tone-info: oklch(47% 0.10 250);
122
122
  --tone-info-text: oklch(47% 0.10 250);
123
123
  --tone-warning: oklch(52% 0.12 52);
124
124
  --tone-warning-text: oklch(52% 0.12 52);
125
125
  --highlight: oklch(93% 0 0);
126
- --tone-standard-foreground: #ffffff;
127
- --tone-collectible-foreground: #ffffff;
128
- --tone-edition-foreground: #ffffff;
126
+ --tone-3-foreground: #ffffff;
127
+ --tone-2-foreground: #ffffff;
128
+ --tone-1-foreground: #ffffff;
129
129
  --tone-info-foreground: #ffffff;
130
130
  --tone-warning-foreground: #ffffff;
131
131
  --highlight-foreground: #000000;
@@ -198,17 +198,17 @@
198
198
  --success: oklch(74% 0.12 173);
199
199
  --success-text: oklch(74% 0.12 173);
200
200
  --success-foreground: oklch(13% 0 0);
201
- --tone-standard: oklch(80% 0 0);
202
- --tone-collectible: oklch(76% 0.12 300);
203
- --tone-edition: oklch(76% 0.10 173);
201
+ --tone-3: oklch(80% 0 0);
202
+ --tone-2: oklch(76% 0.12 300);
203
+ --tone-1: oklch(76% 0.10 173);
204
204
  --tone-info: oklch(76% 0.10 250);
205
205
  --tone-info-text: oklch(76% 0.10 250);
206
206
  --tone-warning: oklch(80% 0.13 52);
207
207
  --tone-warning-text: oklch(80% 0.13 52);
208
208
  --highlight: oklch(26% 0 0);
209
- --tone-standard-foreground: oklch(13% 0 0);
210
- --tone-collectible-foreground: oklch(13% 0 0);
211
- --tone-edition-foreground: oklch(13% 0 0);
209
+ --tone-3-foreground: oklch(13% 0 0);
210
+ --tone-2-foreground: oklch(13% 0 0);
211
+ --tone-1-foreground: oklch(13% 0 0);
212
212
  --tone-info-foreground: oklch(13% 0 0);
213
213
  --tone-warning-foreground: oklch(13% 0 0);
214
214
  --highlight-foreground: #ffffff;
@@ -1,4 +1,4 @@
1
- import { T as ThemeManifest } from '../../_contract-C2M1SjBf.js';
1
+ import { T as ThemeManifest } from '../../_contract-CkqXDVww.js';
2
2
 
3
3
  /**
4
4
  * Mono Editorial — a Sable theme. Concrete token values live in