@motion-proto/live-tokens 0.94.2 → 0.95.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 (108) hide show
  1. package/.claude/skills/live-tokens-create-page/SKILL.md +7 -3
  2. package/CHANGELOG.md +108 -0
  3. package/README.md +6 -6
  4. package/dist-plugin/{chunk-7XSUHJUH.js → chunk-4J6JPSVS.js} +53 -2
  5. package/dist-plugin/{chunk-W5VQV32K.js → chunk-GYRULB2X.js} +1 -1
  6. package/dist-plugin/{chunk-ONYAIXCZ.js → chunk-QQASYPW7.js} +32 -9
  7. package/dist-plugin/index.cjs +598 -17
  8. package/dist-plugin/index.d.cts +9 -1
  9. package/dist-plugin/index.d.ts +9 -1
  10. package/dist-plugin/index.js +513 -6
  11. package/dist-plugin/migrateData/index.cjs +32 -9
  12. package/dist-plugin/migrateData/index.js +2 -2
  13. package/dist-plugin/setColors/index.cjs +32 -22
  14. package/dist-plugin/setColors/index.js +2 -15
  15. package/dist-plugin/setGeometry/index.cjs +32 -9
  16. package/dist-plugin/setGeometry/index.js +1 -1
  17. package/dist-plugin/tokensCssMigrations/index.cjs +53 -2
  18. package/dist-plugin/tokensCssMigrations/index.d.cts +9 -2
  19. package/dist-plugin/tokensCssMigrations/index.d.ts +9 -2
  20. package/dist-plugin/tokensCssMigrations/index.js +1 -1
  21. package/package.json +8 -3
  22. package/src/demo/ChromeSelect.svelte +111 -0
  23. package/src/demo/Demo.svelte +39 -5
  24. package/src/demo/DemoBar.svelte +33 -14
  25. package/src/demo/FloatingTokenTags.css +33 -4
  26. package/src/demo/FloatingTokenTags.svelte +81 -68
  27. package/src/demo/Section.svelte +1 -7
  28. package/src/demo/SketchSelect.svelte +36 -12
  29. package/src/demo/SourceLinks.svelte +5 -4
  30. package/src/demo/TestingLoops.svelte +128 -19
  31. package/src/demo/ThemeSelect.svelte +34 -11
  32. package/src/demo/evalResults.ts +7 -7
  33. package/src/demo/sections/SectionClaude.svelte +20 -13
  34. package/src/demo/sections/SectionFooter.svelte +4 -5
  35. package/src/demo/sections/SectionGetStarted.svelte +5 -6
  36. package/src/demo/sections/SectionHero.svelte +43 -23
  37. package/src/demo/sections/SectionKit.svelte +141 -45
  38. package/src/demo/sections/SectionLayers.svelte +3 -3
  39. package/src/demo/sections/SectionOffering.svelte +8 -23
  40. package/src/editor/bootstrap.ts +12 -6
  41. package/src/editor/component-editor/ImageEditor.svelte +1 -1
  42. package/src/editor/component-editor/ImageLightboxEditor.svelte +3 -4
  43. package/src/editor/component-editor/registration.ts +36 -0
  44. package/src/editor/component-editor/registry.ts +5 -12
  45. package/src/editor/component-editor/scaffolding/ShadowBackdrop.svelte +11 -2
  46. package/src/editor/component-editor/scaffolding/StateBlock.svelte +7 -0
  47. package/src/editor/component-editor/scaffolding/TokenLayout.svelte +1 -2
  48. package/src/editor/component-editor/scaffolding/VariantGroup.svelte +17 -2
  49. package/src/editor/core/store/editorPersistence.ts +6 -1
  50. package/src/editor/core/store/editorRenderer.ts +1 -4
  51. package/src/editor/core/store/editorStore.ts +5 -9
  52. package/src/editor/core/store/editorTypes.ts +2 -2
  53. package/src/editor/core/themes/migrations/2026-10-15-responsive-columns.ts +40 -0
  54. package/src/editor/core/themes/migrations/index.ts +2 -0
  55. package/src/editor/core/themes/slices/columns.ts +112 -42
  56. package/src/editor/docs/Docs.svelte +25 -22
  57. package/src/editor/docs/chapters.ts +1 -0
  58. package/src/editor/docs/content/editing-tokens.md +5 -3
  59. package/src/editor/docs/content/production-css.md +116 -0
  60. package/src/editor/docs/content/themes-workflow.md +2 -0
  61. package/src/editor/docs/content.generated.ts +3 -2
  62. package/src/editor/index.ts +2 -1
  63. package/src/editor/overlay/LiveEditorOverlay.svelte +67 -19
  64. package/src/editor/overlay/LiveTokensRouter.svelte +8 -4
  65. package/src/editor/pages/Editor.svelte +15 -1
  66. package/src/editor/pages/EditorShell.svelte +312 -99
  67. package/src/editor/skill-atlas/SkillAtlas.svelte +111 -24
  68. package/src/editor/skill-atlas/TreeCanvas.svelte +14 -0
  69. package/src/editor/skill-atlas/skillSources.generated.ts +1 -1
  70. package/src/editor/skill-atlas/trees/create-page.ts +24 -24
  71. package/src/editor/skill-atlas/wireLayout.ts +62 -0
  72. package/src/editor/ui/BezierCurveEditor.svelte +3 -0
  73. package/src/editor/ui/FontStackEditor.svelte +2 -2
  74. package/src/editor/ui/PaletteEditor.svelte +64 -6
  75. package/src/editor/ui/UIPaletteSelector.svelte +2 -0
  76. package/src/editor/ui/colors/ColorsTab.svelte +5 -2
  77. package/src/editor/ui/palette/OverridesPanel.svelte +1 -0
  78. package/src/editor/ui/palette/ScaleCurveEditor.svelte +127 -18
  79. package/src/editor/ui/sections/ColumnsSection.svelte +79 -49
  80. package/src/editor/ui/sections/ShadowsSection.svelte +14 -0
  81. package/src/editor/ui/sections/WashesSection.svelte +11 -0
  82. package/src/editor/ui/sketch/SketchTab.svelte +1 -1
  83. package/src/live-tokens/data/colors-and-type/autumn.json +1 -4
  84. package/src/live-tokens/data/colors-and-type/default.json +1 -4
  85. package/src/live-tokens/data/colors-and-type/halloween.json +1 -4
  86. package/src/live-tokens/data/colors-and-type/midnight-study.json +1 -4
  87. package/src/live-tokens/data/colors-and-type/ocean.json +1 -4
  88. package/src/live-tokens/data/colors-and-type/royal-velvet.json +1 -4
  89. package/src/live-tokens/data/colors-and-type/sketchy.json +1 -4
  90. package/src/live-tokens/data/colors-and-type/spring-meadow.json +1 -4
  91. package/src/live-tokens/data/colors-and-type/sunset.json +1 -4
  92. package/src/live-tokens/data/themes/autumn.json +1 -4
  93. package/src/live-tokens/data/themes/halloween.json +1 -4
  94. package/src/live-tokens/data/themes/midnight-study.json +1 -4
  95. package/src/live-tokens/data/themes/ocean.json +1 -4
  96. package/src/live-tokens/data/themes/royal-velvet.json +1 -4
  97. package/src/live-tokens/data/themes/sketchy.json +1 -4
  98. package/src/live-tokens/data/themes/spring-meadow.json +1 -4
  99. package/src/live-tokens/data/themes/sunset.json +1 -4
  100. package/src/live-tokens/data/tokens.generated.css +1 -4
  101. package/src/system/components/SectionDivider.svelte +4 -0
  102. package/src/system/styles/CONVENTIONS.md +1 -1
  103. package/src/system/styles/tokens.css +30 -4
  104. package/template/src/main.ts +2 -2
  105. package/template/src/pages/Home.svelte +11 -8
  106. package/template/vite.config.ts +7 -3
  107. package/src/system/assets/offering.webp +0 -0
  108. /package/dist-plugin/{chunk-O6GQ6GBH.js → chunk-A4TBP4MM.js} +0 -0
@@ -1,31 +1,52 @@
1
1
  <script lang="ts">
2
- import { onMount } from 'svelte';
3
2
  import { editorState, mutate, beginSliderGesture } from '../../core/store/editorStore';
4
- import type { ColumnsState } from '../../core/store/editorTypes';
3
+ import {
4
+ COLUMN_BREAKPOINTS,
5
+ COLUMN_DEFAULTS,
6
+ type ColumnProperty,
7
+ type ColumnViewport,
8
+ } from '../../core/themes/slices/columns';
9
+ import UISegmentedControl from '../UISegmentedControl.svelte';
5
10
 
6
- const STANDARD_COLS = 12;
7
11
  const COLS_MIN = 1;
8
12
  const COLS_MAX = 24;
9
- // Pointer-events needed to break free of 12 once the drag arrives there.
10
- // The slider is bound to state, so returning early during these trips
11
- // keeps the thumb visually pinned at 12 even as the pointer wanders.
13
+ // Pointer-events needed to break free of the default count once the drag
14
+ // arrives there. The slider is bound to state, so returning early during
15
+ // these trips keeps the thumb visually pinned even as the pointer wanders.
12
16
  const DETENT_RESISTANCE = 4;
13
17
 
18
+ const VIEWPORT_OPTIONS: { value: ColumnViewport; label: string; title: string }[] = [
19
+ { value: 'desktop', label: 'Desktop', title: `Wider than ${COLUMN_BREAKPOINTS.tablet}px` },
20
+ { value: 'tablet', label: 'Tablet', title: `${COLUMN_BREAKPOINTS.tablet}px and narrower` },
21
+ { value: 'phone', label: 'Phone', title: `${COLUMN_BREAKPOINTS.phone}px and narrower` },
22
+ ];
23
+
24
+ let viewport = $state<ColumnViewport>('desktop');
25
+ let count = $derived($editorState.columns.count);
26
+ let values = $derived($editorState.columns.viewports[viewport]);
27
+ let viewportLabel = $derived(VIEWPORT_OPTIONS.find((o) => o.value === viewport)!.label.toLowerCase());
28
+ // The preview scales the grid to the widest window it serves.
29
+ let previewWidth = $derived(viewport === 'desktop' ? $editorState.columns.maxWidth : COLUMN_BREAKPOINTS[viewport]);
30
+
14
31
  function clampNum(v: number, lo: number, hi: number): number {
15
32
  return Math.max(lo, Math.min(hi, Math.round(v)));
16
33
  }
17
34
 
35
+ function setViewportValue(property: ColumnProperty, value: number) {
36
+ const target = viewport;
37
+ mutate(`set ${target} columns ${property}`, (s) => { s.columns.viewports[target][property] = value; });
38
+ }
18
39
  function setColumnsCount(n: number) {
19
40
  mutate('set columns count', (s) => { s.columns.count = clampNum(n, COLS_MIN, COLS_MAX); });
20
41
  }
21
- function setColumnsMaxWidth(px: number) {
22
- mutate('set columns max-width', (s) => { s.columns.maxWidth = clampNum(px, 320, 2560); });
23
- }
24
42
  function setColumnsGutter(px: number) {
25
- mutate('set columns gutter', (s) => { s.columns.gutter = clampNum(px, 0, 200); });
43
+ setViewportValue('gutter', clampNum(px, 0, 200));
26
44
  }
27
45
  function setColumnsMargin(px: number) {
28
- mutate('set columns margin', (s) => { s.columns.margin = clampNum(px, 0, 400); });
46
+ setViewportValue('margin', clampNum(px, 0, 400));
47
+ }
48
+ function setColumnsMaxWidth(px: number) {
49
+ mutate('set columns max-width', (s) => { s.columns.maxWidth = clampNum(px, 320, 2560); });
29
50
  }
30
51
 
31
52
  let colsDragging = false;
@@ -41,76 +62,70 @@
41
62
  colsDetentTrips = 0;
42
63
  }
43
64
  function handleColsInput(raw: number, target: HTMLInputElement) {
44
- const current = $editorState.columns.count;
65
+ const detent = COLUMN_DEFAULTS.count;
45
66
  if (
46
67
  colsDragging &&
47
- current === STANDARD_COLS &&
48
- Math.abs(raw - STANDARD_COLS) === 1
68
+ count === detent &&
69
+ Math.abs(raw - detent) === 1
49
70
  ) {
50
71
  colsDetentTrips += 1;
51
72
  if (colsDetentTrips < DETENT_RESISTANCE) {
52
73
  // Force the thumb back. Svelte's controlled value may not re-sync
53
74
  // when the underlying number is unchanged, so set the DOM value here.
54
- target.value = String(STANDARD_COLS);
75
+ target.value = String(detent);
55
76
  return;
56
77
  }
57
78
  colsDetentTrips = 0;
58
79
  }
59
- if (raw === STANDARD_COLS) colsDetentTrips = 0;
80
+ if (raw === detent) colsDetentTrips = 0;
60
81
  setColumnsCount(raw);
61
82
  }
62
83
 
63
- // Tick position on the slider track. Slider runs from COLS_MIN to COLS_MAX,
64
- // so 12 sits at (12 - min) / (max - min) along the track. Inset the edges by
65
- // approximately one thumb-radius so the tick aligns with where the thumb
66
- // sits when value === 12.
67
- const colsTickPct = ((STANDARD_COLS - COLS_MIN) / (COLS_MAX - COLS_MIN)) * 100;
68
-
69
- let initialColumns: ColumnsState | null = null;
84
+ // Inset by approximately one thumb-radius so the tick aligns with where the
85
+ // thumb sits at the default count.
86
+ const colsTickPct = ((COLUMN_DEFAULTS.count - COLS_MIN) / (COLS_MAX - COLS_MIN)) * 100;
70
87
 
71
- onMount(() => {
72
- initialColumns = { ...$editorState.columns };
73
- });
74
-
75
- function resetColumns() {
76
- if (!initialColumns) return;
77
- const snapshot = initialColumns;
78
- mutate('reset columns', (s) => { s.columns = { ...snapshot }; });
88
+ function resetViewport() {
89
+ const target = viewport;
90
+ mutate(`reset ${target} columns`, (s) => { s.columns.viewports[target] = { ...COLUMN_DEFAULTS.viewports[target] }; });
79
91
  }
80
92
  </script>
81
93
 
82
94
  <section class="section" id="columns">
83
95
  <h2 class="section-title">Columns</h2>
84
96
  <p class="columns-intro">
85
- Layout grid for page content. Toggle the live overlay from the editor bar's
97
+ Layout grid for page content. The count and the max width hold at every
98
+ width. Desktop, tablet and phone each hold a gutter and a margin, and the
99
+ grid switches them at {COLUMN_BREAKPOINTS.tablet}px and
100
+ {COLUMN_BREAKPOINTS.phone}px. Toggle the live overlay from the editor bar's
86
101
  <i class="fas fa-grip-lines-vertical"></i> button to visualize.
87
102
  </p>
88
103
 
89
104
  <div class="columns-controls">
90
105
  <div class="global-shadow-row cols-row">
91
- <span class="shadow-slider-label" title="Number of columns">Cols</span>
106
+ <span class="shadow-slider-label" title="Number of columns, shared by every viewport">Cols</span>
92
107
  <div class="cols-slider-wrap">
93
- <input type="range" min={COLS_MIN} max={COLS_MAX} value={$editorState.columns.count}
108
+ <input type="range" min={COLS_MIN} max={COLS_MAX} value={count}
94
109
  onpointerdown={onColsPointerDown}
95
110
  onpointerup={onColsPointerUp}
96
111
  onpointercancel={onColsPointerUp}
97
112
  oninput={(e) => handleColsInput(+e.currentTarget.value, e.currentTarget)} />
98
113
  <span class="cols-tick" style="left: {colsTickPct}%" aria-hidden="true"></span>
99
- <span class="cols-tick-label" style="left: {colsTickPct}%" aria-hidden="true">12</span>
114
+ <span class="cols-tick-label" style="left: {colsTickPct}%" aria-hidden="true">{COLUMN_DEFAULTS.count}</span>
100
115
  </div>
101
116
  <input class="shadow-slider-input" type="number" min={COLS_MIN} max={COLS_MAX}
102
- value={$editorState.columns.count}
117
+ value={count}
103
118
  onchange={(e) => setColumnsCount(+e.currentTarget.value)} />
104
119
  <span class="shadow-slider-unit"></span>
105
120
  </div>
106
- {#if $editorState.columns.count !== STANDARD_COLS}
121
+ {#if count !== COLUMN_DEFAULTS.count}
107
122
  <p class="cols-consequence" role="note">
108
123
  <i class="fas fa-circle-exclamation"></i>
109
- <span>Most components assume 12 cols. Reset to restore.</span>
124
+ <span>Most layouts assume {COLUMN_DEFAULTS.count} cols.</span>
110
125
  </p>
111
126
  {/if}
112
127
  <div class="global-shadow-row">
113
- <span class="shadow-slider-label" title="Maximum content width">Max-Width</span>
128
+ <span class="shadow-slider-label" title="Maximum content width, shared by every viewport">Max-Width</span>
114
129
  <input type="range" min="480" max="2560" step="10" value={$editorState.columns.maxWidth}
115
130
  onpointerdown={() => beginSliderGesture('drag columns max-width')}
116
131
  oninput={(e) => setColumnsMaxWidth(+e.currentTarget.value)} />
@@ -119,41 +134,49 @@
119
134
  onchange={(e) => setColumnsMaxWidth(+e.currentTarget.value)} />
120
135
  <span class="shadow-slider-unit">px</span>
121
136
  </div>
137
+
138
+ <div class="columns-viewport">
139
+ <UISegmentedControl bind:value={viewport} options={VIEWPORT_OPTIONS} ariaLabel="Viewport" />
140
+ </div>
141
+
122
142
  <div class="global-shadow-row">
123
143
  <span class="shadow-slider-label" title="Space between columns">Gutter</span>
124
- <input type="range" min="0" max="80" value={$editorState.columns.gutter}
125
- onpointerdown={() => beginSliderGesture('drag columns gutter')}
144
+ <input type="range" min="0" max="80" value={values.gutter}
145
+ onpointerdown={() => beginSliderGesture(`drag ${viewport} columns gutter`)}
126
146
  oninput={(e) => setColumnsGutter(+e.currentTarget.value)} />
127
147
  <input class="shadow-slider-input" type="number" min="0" max="200"
128
- value={$editorState.columns.gutter}
148
+ value={values.gutter}
129
149
  onchange={(e) => setColumnsGutter(+e.currentTarget.value)} />
130
150
  <span class="shadow-slider-unit">px</span>
131
151
  </div>
132
152
  <div class="global-shadow-row">
133
153
  <span class="shadow-slider-label" title="Outer page margin (side gutters)">Margin</span>
134
- <input type="range" min="0" max="200" value={$editorState.columns.margin}
135
- onpointerdown={() => beginSliderGesture('drag columns margin')}
154
+ <input type="range" min="0" max="200" value={values.margin}
155
+ onpointerdown={() => beginSliderGesture(`drag ${viewport} columns margin`)}
136
156
  oninput={(e) => setColumnsMargin(+e.currentTarget.value)} />
137
157
  <input class="shadow-slider-input columns-input-wide" type="number" min="0" max="400"
138
- value={$editorState.columns.margin}
158
+ value={values.margin}
139
159
  onchange={(e) => setColumnsMargin(+e.currentTarget.value)} />
140
160
  <span class="shadow-slider-unit">px</span>
141
161
  </div>
142
162
 
143
163
  <div class="columns-controls-footer">
144
- <button class="columns-reset" onclick={resetColumns} title="Restore values from when this editor session opened">
164
+ <button class="columns-reset" onclick={resetViewport} title="Restore the default {viewportLabel} gutter and margin">
145
165
  <i class="fas fa-rotate-left"></i>
146
- Reset to initial
166
+ Reset {viewportLabel}
147
167
  </button>
148
168
  </div>
149
169
  </div>
150
170
 
171
+ <!-- A scaled picture of the grid at the widest window it serves: gutter and
172
+ margin are shares of that width, so the preview keeps its proportions in
173
+ any panel. -->
151
174
  <div class="columns-preview">
152
175
  <div
153
176
  class="columns-preview-inner"
154
- style="gap: {$editorState.columns.gutter}px; padding-inline: {$editorState.columns.margin}px; grid-template-columns: repeat({$editorState.columns.count}, 1fr);"
177
+ style="gap: {(values.gutter / previewWidth) * 100}%; padding-inline: {(values.margin / previewWidth) * 100}%; grid-template-columns: repeat({count}, minmax(0, 1fr));"
155
178
  >
156
- {#each Array($editorState.columns.count) as _, i}
179
+ {#each { length: count }, i (i)}
157
180
  <div class="columns-preview-col"><span>{i + 1}</span></div>
158
181
  {/each}
159
182
  </div>
@@ -203,6 +226,13 @@
203
226
  text-align: left;
204
227
  }
205
228
 
229
+ .columns-viewport {
230
+ display: flex;
231
+ padding-top: var(--ui-space-8);
232
+ margin-top: var(--ui-space-4);
233
+ border-top: 1px solid var(--ui-border-low);
234
+ }
235
+
206
236
  .cols-row {
207
237
  /* Slightly more breathing room so the tick label below the slider
208
238
  does not collide with the next row. */
@@ -853,6 +853,20 @@
853
853
  align-items: flex-start;
854
854
  }
855
855
 
856
+ /* No room for the sidebar: the editor stacks above the shadows and scrolls
857
+ with them, since pinned it would cover the screen. */
858
+ @media (max-width: 600px) {
859
+ .shadows-layout {
860
+ flex-direction: column-reverse;
861
+ align-items: stretch;
862
+ }
863
+
864
+ .global-shadow-editor {
865
+ position: static;
866
+ width: auto;
867
+ }
868
+ }
869
+
856
870
  .shadows-main {
857
871
  flex: 1;
858
872
  min-width: 0;
@@ -205,6 +205,17 @@
205
205
 
206
206
  .wash-control { min-width: 0; }
207
207
 
208
+ /* Too narrow for three columns: the control drops under the swatch and name. */
209
+ @media (max-width: 600px) {
210
+ .wash-row {
211
+ grid-template-columns: 3.5rem minmax(0, 1fr);
212
+ }
213
+
214
+ .wash-control {
215
+ grid-column: 1 / -1;
216
+ }
217
+ }
218
+
208
219
  .wash-opacity {
209
220
  display: flex;
210
221
  align-items: center;
@@ -1159,7 +1159,7 @@
1159
1159
 
1160
1160
  .preview-col {
1161
1161
  position: sticky;
1162
- top: 0;
1162
+ top: var(--editor-sticky-top, 0px);
1163
1163
  }
1164
1164
 
1165
1165
  @media (max-width: 1100px) {
@@ -2219,10 +2219,7 @@
2219
2219
  "--gradient-2": "linear-gradient(135deg, var(--color-special-500) 0%, var(--color-brand-500) 100%)",
2220
2220
  "--gradient-3": "linear-gradient(90deg, var(--color-brand-500) 0%, var(--color-accent-500) 100%)",
2221
2221
  "--gradient-4": "linear-gradient(180deg, var(--color-canvas-200) 0%, var(--color-canvas-500) 100%)",
2222
- "--columns-count": "12",
2223
2222
  "--columns-max-width": "1440px",
2224
- "--columns-gutter": "32px",
2225
- "--columns-margin": "0px",
2226
2223
  "--scrim-color": "var(--surface-neutral-lowest)",
2227
2224
  "--scrim-opacity-low": "0.7",
2228
2225
  "--scrim-opacity": "0.8",
@@ -2407,7 +2404,7 @@
2407
2404
  "family": null
2408
2405
  }
2409
2406
  ],
2410
- "schemaVersion": 9,
2407
+ "schemaVersion": 10,
2411
2408
  "gradients": [
2412
2409
  {
2413
2410
  "variable": "--gradient-1",
@@ -2250,10 +2250,7 @@
2250
2250
  "--gradient-2": "linear-gradient(135deg, var(--color-brand-500) 0%, var(--color-special-500) 100%)",
2251
2251
  "--gradient-3": "linear-gradient(90deg, var(--color-success-500) 0%, var(--color-info-500) 100%)",
2252
2252
  "--gradient-4": "linear-gradient(45deg, var(--color-danger-500) 0%, var(--color-warning-500) 100%)",
2253
- "--columns-count": "12",
2254
2253
  "--columns-max-width": "1440px",
2255
- "--columns-gutter": "32px",
2256
- "--columns-margin": "0px",
2257
2254
  "--scrim-color": "var(--surface-neutral-lowest)",
2258
2255
  "--scrim-opacity-low": "0.7",
2259
2256
  "--scrim-opacity": "0.8",
@@ -2417,5 +2414,5 @@
2417
2414
  ]
2418
2415
  }
2419
2416
  ],
2420
- "schemaVersion": 9
2417
+ "schemaVersion": 10
2421
2418
  }
@@ -2266,10 +2266,7 @@
2266
2266
  "--gradient-2": "linear-gradient(135deg, var(--color-special-500) 0%, var(--color-brand-500) 100%)",
2267
2267
  "--gradient-3": "linear-gradient(90deg, var(--color-accent-400) 0%, var(--color-accent-700) 100%)",
2268
2268
  "--gradient-4": "linear-gradient(180deg, var(--color-canvas-600) 0%, var(--color-canvas-900) 100%)",
2269
- "--columns-count": "12",
2270
2269
  "--columns-max-width": "1440px",
2271
- "--columns-gutter": "32px",
2272
- "--columns-margin": "0px",
2273
2270
  "--scrim-color": "var(--surface-neutral-lowest)",
2274
2271
  "--scrim-opacity-low": "0.7",
2275
2272
  "--scrim-opacity": "0.8",
@@ -2446,7 +2443,7 @@
2446
2443
  "family": null
2447
2444
  }
2448
2445
  ],
2449
- "schemaVersion": 9,
2446
+ "schemaVersion": 10,
2450
2447
  "gradients": [
2451
2448
  {
2452
2449
  "variable": "--gradient-1",
@@ -2262,10 +2262,7 @@
2262
2262
  }
2263
2263
  },
2264
2264
  "cssVariables": {
2265
- "--columns-count": "12",
2266
2265
  "--columns-max-width": "1440px",
2267
- "--columns-gutter": "32px",
2268
- "--columns-margin": "0px",
2269
2266
  "--scrim-color": "var(--surface-neutral-lowest)",
2270
2267
  "--scrim-opacity-low": "0.7",
2271
2268
  "--scrim-opacity": "0.8",
@@ -2525,5 +2522,5 @@
2525
2522
  "family": null
2526
2523
  }
2527
2524
  ],
2528
- "schemaVersion": 9
2525
+ "schemaVersion": 10
2529
2526
  }
@@ -2219,10 +2219,7 @@
2219
2219
  "--gradient-2": "linear-gradient(135deg, var(--color-special-400) 0%, var(--color-special-700) 100%)",
2220
2220
  "--gradient-3": "linear-gradient(90deg, var(--color-brand-500) 0%, var(--color-accent-500) 100%)",
2221
2221
  "--gradient-4": "linear-gradient(180deg, var(--color-canvas-200) 0%, var(--color-canvas-500) 100%)",
2222
- "--columns-count": "12",
2223
2222
  "--columns-max-width": "1440px",
2224
- "--columns-gutter": "32px",
2225
- "--columns-margin": "0px",
2226
2223
  "--scrim-color": "var(--surface-neutral-lowest)",
2227
2224
  "--scrim-opacity-low": "0.7",
2228
2225
  "--scrim-opacity": "0.8",
@@ -2406,7 +2403,7 @@
2406
2403
  "family": null
2407
2404
  }
2408
2405
  ],
2409
- "schemaVersion": 9,
2406
+ "schemaVersion": 10,
2410
2407
  "gradients": [
2411
2408
  {
2412
2409
  "variable": "--gradient-1",
@@ -2251,10 +2251,7 @@
2251
2251
  "--gradient-2": "linear-gradient(135deg, var(--color-special-500) 0%, var(--color-brand-500) 100%)",
2252
2252
  "--gradient-3": "linear-gradient(90deg, var(--color-accent-400) 0%, var(--color-accent-700) 100%)",
2253
2253
  "--gradient-4": "linear-gradient(180deg, var(--color-canvas-600) 0%, var(--color-canvas-900) 100%)",
2254
- "--columns-count": "12",
2255
2254
  "--columns-max-width": "1440px",
2256
- "--columns-gutter": "32px",
2257
- "--columns-margin": "0px",
2258
2255
  "--scrim-color": "var(--surface-neutral-lowest)",
2259
2256
  "--scrim-opacity-low": "0.7",
2260
2257
  "--scrim-opacity": "0.8",
@@ -2437,7 +2434,7 @@
2437
2434
  "family": null
2438
2435
  }
2439
2436
  ],
2440
- "schemaVersion": 9,
2437
+ "schemaVersion": 10,
2441
2438
  "gradients": [
2442
2439
  {
2443
2440
  "variable": "--gradient-1",
@@ -2205,10 +2205,7 @@
2205
2205
  "--gradient-2": "linear-gradient(135deg, var(--color-special-500) 0%, var(--color-brand-500) 100%)",
2206
2206
  "--gradient-3": "linear-gradient(90deg, var(--color-brand-500) 0%, var(--color-accent-500) 100%)",
2207
2207
  "--gradient-4": "linear-gradient(180deg, var(--color-canvas-200) 0%, var(--color-canvas-500) 100%)",
2208
- "--columns-count": "12",
2209
2208
  "--columns-max-width": "1440px",
2210
- "--columns-gutter": "32px",
2211
- "--columns-margin": "0px",
2212
2209
  "--scrim-color": "var(--surface-neutral-lowest)",
2213
2210
  "--scrim-opacity-low": "0.7",
2214
2211
  "--scrim-opacity": "0.8",
@@ -2482,5 +2479,5 @@
2482
2479
  "family": null
2483
2480
  }
2484
2481
  ],
2485
- "schemaVersion": 9
2482
+ "schemaVersion": 10
2486
2483
  }
@@ -2205,10 +2205,7 @@
2205
2205
  "--gradient-2": "linear-gradient(135deg, var(--color-special-400) 0%, var(--color-special-700) 100%)",
2206
2206
  "--gradient-3": "linear-gradient(90deg, var(--color-brand-500) 0%, var(--color-accent-500) 100%)",
2207
2207
  "--gradient-4": "linear-gradient(180deg, var(--color-canvas-200) 0%, var(--color-canvas-500) 100%)",
2208
- "--columns-count": "12",
2209
2208
  "--columns-max-width": "1440px",
2210
- "--columns-gutter": "32px",
2211
- "--columns-margin": "0px",
2212
2209
  "--scrim-color": "var(--surface-neutral-lowest)",
2213
2210
  "--scrim-opacity-low": "0.7",
2214
2211
  "--scrim-opacity": "0.8",
@@ -2393,7 +2390,7 @@
2393
2390
  "family": null
2394
2391
  }
2395
2392
  ],
2396
- "schemaVersion": 9,
2393
+ "schemaVersion": 10,
2397
2394
  "gradients": [
2398
2395
  {
2399
2396
  "variable": "--gradient-1",
@@ -2266,10 +2266,7 @@
2266
2266
  "--gradient-2": "linear-gradient(135deg, var(--color-special-500) 0%, var(--color-brand-500) 100%)",
2267
2267
  "--gradient-3": "linear-gradient(90deg, var(--color-brand-500) 0%, var(--color-accent-500) 100%)",
2268
2268
  "--gradient-4": "linear-gradient(180deg, var(--color-canvas-600) 0%, var(--color-canvas-900) 100%)",
2269
- "--columns-count": "12",
2270
2269
  "--columns-max-width": "1440px",
2271
- "--columns-gutter": "32px",
2272
- "--columns-margin": "0px",
2273
2270
  "--scrim-color": "var(--surface-neutral-lowest)",
2274
2271
  "--scrim-opacity-low": "0.7",
2275
2272
  "--scrim-opacity": "0.8",
@@ -2445,7 +2442,7 @@
2445
2442
  "family": null
2446
2443
  }
2447
2444
  ],
2448
- "schemaVersion": 9,
2445
+ "schemaVersion": 10,
2449
2446
  "gradients": [
2450
2447
  {
2451
2448
  "variable": "--gradient-1",
@@ -2224,10 +2224,7 @@
2224
2224
  "--gradient-2": "linear-gradient(135deg, var(--color-special-500) 0%, var(--color-brand-500) 100%)",
2225
2225
  "--gradient-3": "linear-gradient(90deg, var(--color-brand-500) 0%, var(--color-accent-500) 100%)",
2226
2226
  "--gradient-4": "linear-gradient(180deg, var(--color-canvas-200) 0%, var(--color-canvas-500) 100%)",
2227
- "--columns-count": "12",
2228
2227
  "--columns-max-width": "1440px",
2229
- "--columns-gutter": "32px",
2230
- "--columns-margin": "0px",
2231
2228
  "--scrim-color": "var(--surface-neutral-lowest)",
2232
2229
  "--scrim-opacity-low": "0.7",
2233
2230
  "--scrim-opacity": "0.8",
@@ -2412,7 +2409,7 @@
2412
2409
  "family": null
2413
2410
  }
2414
2411
  ],
2415
- "schemaVersion": 9,
2412
+ "schemaVersion": 10,
2416
2413
  "gradients": [
2417
2414
  {
2418
2415
  "variable": "--gradient-1",
@@ -2271,10 +2271,7 @@
2271
2271
  "--gradient-2": "linear-gradient(135deg, var(--color-special-500) 0%, var(--color-brand-500) 100%)",
2272
2272
  "--gradient-3": "linear-gradient(90deg, var(--color-accent-400) 0%, var(--color-accent-700) 100%)",
2273
2273
  "--gradient-4": "linear-gradient(180deg, var(--color-canvas-600) 0%, var(--color-canvas-900) 100%)",
2274
- "--columns-count": "12",
2275
2274
  "--columns-max-width": "1440px",
2276
- "--columns-gutter": "32px",
2277
- "--columns-margin": "0px",
2278
2275
  "--scrim-color": "var(--surface-neutral-lowest)",
2279
2276
  "--scrim-opacity-low": "0.7",
2280
2277
  "--scrim-opacity": "0.8",
@@ -2451,7 +2448,7 @@
2451
2448
  "family": null
2452
2449
  }
2453
2450
  ],
2454
- "schemaVersion": 9,
2451
+ "schemaVersion": 10,
2455
2452
  "gradients": [
2456
2453
  {
2457
2454
  "variable": "--gradient-1",
@@ -2267,10 +2267,7 @@
2267
2267
  }
2268
2268
  },
2269
2269
  "cssVariables": {
2270
- "--columns-count": "12",
2271
2270
  "--columns-max-width": "1440px",
2272
- "--columns-gutter": "32px",
2273
- "--columns-margin": "0px",
2274
2271
  "--scrim-color": "var(--surface-neutral-lowest)",
2275
2272
  "--scrim-opacity-low": "0.7",
2276
2273
  "--scrim-opacity": "0.8",
@@ -2530,7 +2527,7 @@
2530
2527
  "family": null
2531
2528
  }
2532
2529
  ],
2533
- "schemaVersion": 9
2530
+ "schemaVersion": 10
2534
2531
  },
2535
2532
  "componentConfigs": {
2536
2533
  "badge": {
@@ -2224,10 +2224,7 @@
2224
2224
  "--gradient-2": "linear-gradient(135deg, var(--color-special-400) 0%, var(--color-special-700) 100%)",
2225
2225
  "--gradient-3": "linear-gradient(90deg, var(--color-brand-500) 0%, var(--color-accent-500) 100%)",
2226
2226
  "--gradient-4": "linear-gradient(180deg, var(--color-canvas-200) 0%, var(--color-canvas-500) 100%)",
2227
- "--columns-count": "12",
2228
2227
  "--columns-max-width": "1440px",
2229
- "--columns-gutter": "32px",
2230
- "--columns-margin": "0px",
2231
2228
  "--scrim-color": "var(--surface-neutral-lowest)",
2232
2229
  "--scrim-opacity-low": "0.7",
2233
2230
  "--scrim-opacity": "0.8",
@@ -2411,7 +2408,7 @@
2411
2408
  "family": null
2412
2409
  }
2413
2410
  ],
2414
- "schemaVersion": 9,
2411
+ "schemaVersion": 10,
2415
2412
  "gradients": [
2416
2413
  {
2417
2414
  "variable": "--gradient-1",
@@ -2256,10 +2256,7 @@
2256
2256
  "--gradient-2": "linear-gradient(135deg, var(--color-special-500) 0%, var(--color-brand-500) 100%)",
2257
2257
  "--gradient-3": "linear-gradient(90deg, var(--color-accent-400) 0%, var(--color-accent-700) 100%)",
2258
2258
  "--gradient-4": "linear-gradient(180deg, var(--color-canvas-600) 0%, var(--color-canvas-900) 100%)",
2259
- "--columns-count": "12",
2260
2259
  "--columns-max-width": "1440px",
2261
- "--columns-gutter": "32px",
2262
- "--columns-margin": "0px",
2263
2260
  "--scrim-color": "var(--surface-neutral-lowest)",
2264
2261
  "--scrim-opacity-low": "0.7",
2265
2262
  "--scrim-opacity": "0.8",
@@ -2442,7 +2439,7 @@
2442
2439
  "family": null
2443
2440
  }
2444
2441
  ],
2445
- "schemaVersion": 9,
2442
+ "schemaVersion": 10,
2446
2443
  "gradients": [
2447
2444
  {
2448
2445
  "variable": "--gradient-1",
@@ -2210,10 +2210,7 @@
2210
2210
  "--gradient-2": "linear-gradient(135deg, var(--color-special-500) 0%, var(--color-brand-500) 100%)",
2211
2211
  "--gradient-3": "linear-gradient(90deg, var(--color-brand-500) 0%, var(--color-accent-500) 100%)",
2212
2212
  "--gradient-4": "linear-gradient(180deg, var(--color-canvas-200) 0%, var(--color-canvas-500) 100%)",
2213
- "--columns-count": "12",
2214
2213
  "--columns-max-width": "1440px",
2215
- "--columns-gutter": "32px",
2216
- "--columns-margin": "0px",
2217
2214
  "--scrim-color": "var(--surface-neutral-lowest)",
2218
2215
  "--scrim-opacity-low": "0.7",
2219
2216
  "--scrim-opacity": "0.8",
@@ -2487,7 +2484,7 @@
2487
2484
  "family": null
2488
2485
  }
2489
2486
  ],
2490
- "schemaVersion": 9
2487
+ "schemaVersion": 10
2491
2488
  },
2492
2489
  "componentConfigs": {
2493
2490
  "badge": {
@@ -2210,10 +2210,7 @@
2210
2210
  "--gradient-2": "linear-gradient(135deg, var(--color-special-400) 0%, var(--color-special-700) 100%)",
2211
2211
  "--gradient-3": "linear-gradient(90deg, var(--color-brand-500) 0%, var(--color-accent-500) 100%)",
2212
2212
  "--gradient-4": "linear-gradient(180deg, var(--color-canvas-200) 0%, var(--color-canvas-500) 100%)",
2213
- "--columns-count": "12",
2214
2213
  "--columns-max-width": "1440px",
2215
- "--columns-gutter": "32px",
2216
- "--columns-margin": "0px",
2217
2214
  "--scrim-color": "var(--surface-neutral-lowest)",
2218
2215
  "--scrim-opacity-low": "0.7",
2219
2216
  "--scrim-opacity": "0.8",
@@ -2398,7 +2395,7 @@
2398
2395
  "family": null
2399
2396
  }
2400
2397
  ],
2401
- "schemaVersion": 9,
2398
+ "schemaVersion": 10,
2402
2399
  "gradients": [
2403
2400
  {
2404
2401
  "variable": "--gradient-1",
@@ -2271,10 +2271,7 @@
2271
2271
  "--gradient-2": "linear-gradient(135deg, var(--color-special-500) 0%, var(--color-brand-500) 100%)",
2272
2272
  "--gradient-3": "linear-gradient(90deg, var(--color-brand-500) 0%, var(--color-accent-500) 100%)",
2273
2273
  "--gradient-4": "linear-gradient(180deg, var(--color-canvas-600) 0%, var(--color-canvas-900) 100%)",
2274
- "--columns-count": "12",
2275
2274
  "--columns-max-width": "1440px",
2276
- "--columns-gutter": "32px",
2277
- "--columns-margin": "0px",
2278
2275
  "--scrim-color": "var(--surface-neutral-lowest)",
2279
2276
  "--scrim-opacity-low": "0.7",
2280
2277
  "--scrim-opacity": "0.8",
@@ -2450,7 +2447,7 @@
2450
2447
  "family": null
2451
2448
  }
2452
2449
  ],
2453
- "schemaVersion": 9,
2450
+ "schemaVersion": 10,
2454
2451
  "gradients": [
2455
2452
  {
2456
2453
  "variable": "--gradient-1",