@motion-proto/live-tokens 0.78.0 → 0.80.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 (172) hide show
  1. package/.claude/skills/live-tokens-check-compliance/SKILL.md +49 -38
  2. package/.claude/skills/live-tokens-create-component/SKILL.md +23 -28
  3. package/.claude/skills/live-tokens-create-component/references/contract-tests.md +61 -0
  4. package/.claude/skills/live-tokens-create-component/references/sketch-mode.md +2 -2
  5. package/.claude/skills/live-tokens-create-component/references/token-naming.md +6 -15
  6. package/.claude/skills/live-tokens-create-page/SKILL.md +6 -4
  7. package/.claude/skills/live-tokens-create-theme/references/design-directions.md +1 -1
  8. package/.claude/skills/live-tokens-pick-component/SKILL.md +3 -3
  9. package/.claude/skills/live-tokens-set-colors/references/color-anchors.md +1 -1
  10. package/.claude/skills/live-tokens-set-geometry/SKILL.md +1 -1
  11. package/.claude/skills/live-tokens-set-geometry/references/geometry-anchors.md +1 -1
  12. package/CHANGELOG.md +271 -0
  13. package/README.md +10 -16
  14. package/bin/check-component.mjs +154 -551
  15. package/bin/check-page.mjs +57 -541
  16. package/bin/cli.mjs +93 -16
  17. package/bin/contractRunner.mjs +37 -91
  18. package/bin/lib/buildChecks.mjs +32 -0
  19. package/bin/lib/catalogue.mjs +161 -34
  20. package/bin/lib/componentSource.mjs +152 -0
  21. package/bin/lib/cssValues.mjs +9 -0
  22. package/bin/lib/dataDir.mjs +126 -0
  23. package/bin/lib/findings.mjs +103 -12
  24. package/bin/lib/fixers.mjs +64 -0
  25. package/bin/lib/geometry.mjs +92 -0
  26. package/bin/lib/pageSource.mjs +230 -0
  27. package/bin/lib/report.mjs +57 -59
  28. package/bin/lib/tokenVocabulary.mjs +104 -34
  29. package/bin/migrate-build-script.mjs +66 -0
  30. package/bin/migrate.mjs +5 -0
  31. package/bin/rules/componentStructure.mjs +344 -0
  32. package/bin/rules/componentUse.mjs +313 -0
  33. package/bin/rules/importsAndRoutes.mjs +136 -0
  34. package/bin/rules/testRuns.mjs +122 -0
  35. package/bin/rules/tokens.mjs +426 -0
  36. package/bin/setup-claude.mjs +1 -2
  37. package/dist-plugin/{chunk-PDNL4NC5.js → chunk-D4WRIKEZ.js} +7 -2
  38. package/dist-plugin/{chunk-SWXRVZKT.js → chunk-REBHE3ZM.js} +414 -1
  39. package/dist-plugin/index.cjs +470 -19
  40. package/dist-plugin/index.d.cts +1 -0
  41. package/dist-plugin/index.d.ts +1 -0
  42. package/dist-plugin/index.js +87 -55
  43. package/dist-plugin/migrateData/index.cjs +422 -4
  44. package/dist-plugin/migrateData/index.js +2 -2
  45. package/dist-plugin/setColors/index.cjs +414 -1
  46. package/dist-plugin/setColors/index.d.cts +1 -1
  47. package/dist-plugin/setColors/index.d.ts +1 -1
  48. package/dist-plugin/setColors/index.js +1 -1
  49. package/dist-plugin/setGeometry/index.cjs +423 -13
  50. package/dist-plugin/setGeometry/index.d.cts +3 -3
  51. package/dist-plugin/setGeometry/index.d.ts +3 -3
  52. package/dist-plugin/setGeometry/index.js +10 -13
  53. package/dist-plugin/setType/index.d.cts +1 -1
  54. package/dist-plugin/setType/index.d.ts +1 -1
  55. package/dist-plugin/{themeTypes-BxRtuN5V.d.cts → themeTypes-B8_Idrp4.d.cts} +2 -2
  56. package/dist-plugin/{themeTypes-BxRtuN5V.d.ts → themeTypes-B8_Idrp4.d.ts} +2 -2
  57. package/package.json +2 -2
  58. package/src/editor/component-editor/CalloutEditor.svelte +2 -2
  59. package/src/editor/component-editor/CollapsibleSectionEditor.svelte +14 -15
  60. package/src/editor/component-editor/CornerBadgeEditor.svelte +14 -14
  61. package/src/editor/component-editor/DialogEditor.svelte +5 -5
  62. package/src/editor/component-editor/InlineEditActionsEditor.svelte +2 -2
  63. package/src/editor/component-editor/RadioButtonEditor.svelte +21 -21
  64. package/src/editor/component-editor/SectionDividerEditor.svelte +7 -7
  65. package/src/editor/component-editor/SegmentedControlEditor.svelte +5 -5
  66. package/src/editor/component-editor/SideNavigationEditor.svelte +25 -25
  67. package/src/editor/component-editor/TabBarEditor.svelte +6 -6
  68. package/src/editor/component-editor/TableEditor.svelte +6 -6
  69. package/src/editor/component-editor/ToggleEditor.svelte +2 -2
  70. package/src/editor/component-editor/index.ts +3 -0
  71. package/src/editor/component-editor/registry.ts +57 -1
  72. package/src/editor/component-editor/scaffolding/TokenLayout.svelte +14 -14
  73. package/src/editor/component-editor/scaffolding/VariantGroup.svelte +3 -0
  74. package/src/editor/component-editor/scaffolding/types.ts +15 -0
  75. package/src/editor/core/components/adjustAliases.ts +4 -4
  76. package/src/editor/core/components/aliasKinds.ts +20 -19
  77. package/src/editor/core/sketch/sketchLayer.ts +3 -3
  78. package/src/editor/core/themes/migrateComponentConfig.ts +14 -6
  79. package/src/editor/core/themes/migrations/2026-09-13-badge-brand.ts +42 -0
  80. package/src/editor/core/themes/migrations/2026-09-13-collapsiblesection-open.ts +33 -0
  81. package/src/editor/core/themes/migrations/2026-09-13-cornerbadge-prefix.ts +70 -0
  82. package/src/editor/core/themes/migrations/2026-09-13-hairline.ts +92 -0
  83. package/src/editor/core/themes/migrations/2026-09-13-indicator.ts +54 -0
  84. package/src/editor/core/themes/migrations/2026-09-13-sectiondivider-surface.ts +36 -0
  85. package/src/editor/core/themes/migrations/2026-09-13-selected-state.ts +124 -0
  86. package/src/editor/core/themes/migrations/2026-09-13-toggle-label.ts +31 -0
  87. package/src/editor/core/themes/migrations/index.ts +16 -0
  88. package/src/editor/core/themes/themeService.ts +3 -3
  89. package/src/editor/core/themes/themeTypes.ts +13 -15
  90. package/src/editor/docs/Docs.svelte +1 -1
  91. package/src/editor/docs/content/light-and-dark.md +3 -3
  92. package/src/editor/docs/content.generated.ts +1 -1
  93. package/src/editor/index.ts +1 -0
  94. package/src/editor/overlay/LiveEditorOverlay.svelte +15 -0
  95. package/src/editor/skill-atlas/SkillAtlas.svelte +4 -4
  96. package/src/editor/skill-atlas/TreeNodeCard.svelte +4 -4
  97. package/src/editor/skill-atlas/skillSources.generated.ts +11 -14
  98. package/src/editor/skill-atlas/skillTrees.ts +1 -3
  99. package/src/editor/skill-atlas/trees/check-compliance.ts +37 -149
  100. package/src/editor/skill-atlas/trees/create-component.ts +62 -64
  101. package/src/editor/skill-atlas/trees/create-page.ts +38 -17
  102. package/src/editor/skill-atlas/trees/pick-component.ts +3 -3
  103. package/src/editor/skill-atlas/trees/set-geometry.ts +1 -1
  104. package/src/editor/ui/UIPaletteSelector.svelte +11 -15
  105. package/src/editor/ui/variantScales.ts +8 -8
  106. package/src/live-tokens/data/themes/autumn.json +188 -188
  107. package/src/live-tokens/data/themes/halloween.json +188 -188
  108. package/src/live-tokens/data/themes/midnight-study.json +245 -245
  109. package/src/live-tokens/data/themes/ocean.json +188 -188
  110. package/src/live-tokens/data/themes/royal-velvet.json +188 -188
  111. package/src/live-tokens/data/themes/sketchy.json +188 -188
  112. package/src/live-tokens/data/themes/spring-meadow.json +188 -188
  113. package/src/live-tokens/data/themes/sunset.json +188 -188
  114. package/src/system/components/Badge.svelte +27 -23
  115. package/src/system/components/Button.svelte +13 -7
  116. package/src/system/components/Callout.svelte +16 -11
  117. package/src/system/components/Card.svelte +22 -15
  118. package/src/system/components/CodeSnippet.svelte +10 -6
  119. package/src/system/components/CollapsibleSection.svelte +81 -76
  120. package/src/system/components/CornerBadge.svelte +78 -72
  121. package/src/system/components/Dialog.svelte +21 -18
  122. package/src/system/components/IconButton.svelte +13 -9
  123. package/src/system/components/Image.svelte +14 -8
  124. package/src/system/components/ImageLightbox.svelte +10 -6
  125. package/src/system/components/InlineEditActions.svelte +17 -14
  126. package/src/system/components/Input.svelte +13 -7
  127. package/src/system/components/MenuSelect.svelte +13 -7
  128. package/src/system/components/Notification.svelte +17 -11
  129. package/src/system/components/Panel.svelte +13 -6
  130. package/src/system/components/ProgressBar.svelte +10 -5
  131. package/src/system/components/RadioButton.svelte +33 -30
  132. package/src/system/components/SectionDivider.svelte +28 -21
  133. package/src/system/components/SegmentedControl.svelte +27 -23
  134. package/src/system/components/SideNavigation.svelte +175 -171
  135. package/src/system/components/Slider.svelte +11 -7
  136. package/src/system/components/TabBar.svelte +53 -49
  137. package/src/system/components/Table.svelte +20 -15
  138. package/src/system/components/Toggle.svelte +14 -10
  139. package/src/system/components/Tooltip.svelte +10 -6
  140. package/src/system/styles/CONVENTIONS.md +3 -4
  141. package/src/testing-js/chunk-3UKGXCDL.js +48 -0
  142. package/src/testing-js/chunk-3UKGXCDL.js.map +1 -0
  143. package/src/testing-js/{chunk-FAFOAWYL.js → chunk-Q3YIAAG3.js} +17 -3
  144. package/src/testing-js/chunk-Q3YIAAG3.js.map +1 -0
  145. package/src/testing-js/{chunk-GNIUPIU2.js → chunk-U7OJE5DU.js} +18 -18
  146. package/src/testing-js/chunk-U7OJE5DU.js.map +1 -0
  147. package/src/testing-js/{chunk-4JQX6WWL.js → chunk-ZMZQZ33J.js} +474 -166
  148. package/src/testing-js/chunk-ZMZQZ33J.js.map +1 -0
  149. package/src/testing-js/component-behavior.contract.js +155 -0
  150. package/src/testing-js/component-behavior.contract.js.map +1 -0
  151. package/src/testing-js/component-editor.contract.js +6 -4
  152. package/src/testing-js/component-editor.contract.js.map +1 -1
  153. package/src/testing-js/component-render.contract.js +14 -10
  154. package/src/testing-js/component-render.contract.js.map +1 -1
  155. package/src/testing-js/index.d.ts +44 -4
  156. package/src/testing-js/index.js +13 -7
  157. package/src/testing-js/index.js.map +1 -1
  158. package/src/testing-js/page-compliance.contract.js +48 -10
  159. package/src/testing-js/page-compliance.contract.js.map +1 -1
  160. package/src/testing-js/registry.contract.js +5 -3
  161. package/src/testing-js/registry.contract.js.map +1 -1
  162. package/src/testing-js/{vitest-C-wNWcoA.d.ts → vitest-BMLIbDs2.d.ts} +8 -2
  163. package/src/testing-js/vitest.d.ts +1 -1
  164. package/src/testing-js/vitest.js +2 -1
  165. package/template/package.json +1 -2
  166. package/template/vite.config.ts +3 -2
  167. package/.claude/skills/live-tokens-create-component/SKILL copy.md +0 -196
  168. package/.claude/skills/live-tokens-fix-findings/SKILL.md +0 -105
  169. package/src/editor/skill-atlas/trees/fix-findings.ts +0 -504
  170. package/src/testing-js/chunk-4JQX6WWL.js.map +0 -1
  171. package/src/testing-js/chunk-FAFOAWYL.js.map +0 -1
  172. package/src/testing-js/chunk-GNIUPIU2.js.map +0 -1
@@ -2,7 +2,7 @@ import type { SkillTree } from '../types';
2
2
 
3
3
  export const setGeometry: SkillTree = {
4
4
  "id": "live-tokens-set-geometry",
5
- "digest": "sha256:fbe78a12bbd4791a",
5
+ "digest": "sha256:adba9f61a4113c03",
6
6
  "title": "set-geometry",
7
7
  "tagline": "Set Spacing, Corner Radius, Line Weight",
8
8
  "nodes": [
@@ -18,11 +18,7 @@
18
18
 
19
19
  /** Tokens that match the surface/fill suffix but live in <color>-only CSS contexts
20
20
  (color-mix, box-shadow color slot) where a gradient would invalidate the declaration. */
21
- const GRADIENT_DENYLIST = new Set<string>([
22
- '--radiobutton-default-surface',
23
- '--radiobutton-hover-surface',
24
- '--radiobutton-active-surface',
25
- ]);
21
+ const GRADIENT_DENYLIST = new Set<string>([]);
26
22
 
27
23
  /** Slot kinds where a gradient is a renderable assignment. */
28
24
  function acceptsGradient(name: string): boolean {
@@ -135,7 +131,7 @@
135
131
 
136
132
  let selector: UITokenSelector | undefined = $state();
137
133
  let selectedFamily: string | null = $state(null);
138
- let selectedTab: Category = $state('palette');
134
+ let selectedCategory: Category = $state('palette');
139
135
 
140
136
  /** Compass-rose layout for the orientation grid. Angles follow the CSS
141
137
  * linear-gradient convention (0° points up, 90° points right). */
@@ -459,7 +455,7 @@
459
455
  if (familyFilter && name !== familyFilter) return;
460
456
  selectedFamily = name;
461
457
  if (name === chosenFamily && chosenCategory) {
462
- selectedTab = chosenCategory;
458
+ selectedCategory = chosenCategory;
463
459
  }
464
460
  }
465
461
 
@@ -575,8 +571,8 @@
575
571
  const family = selectedFamily;
576
572
  const tabs = availableTabs;
577
573
  untrack(() => {
578
- if (family && !tabs.find(t => t.id === selectedTab)) {
579
- selectedTab = 'palette';
574
+ if (family && !tabs.find(t => t.id === selectedCategory)) {
575
+ selectedCategory = 'palette';
580
576
  }
581
577
  });
582
578
  });
@@ -674,14 +670,14 @@
674
670
  {#each availableTabs as tab}
675
671
  <button
676
672
  class="tab-btn"
677
- class:selected={selectedTab === tab.id}
673
+ class:selected={selectedCategory === tab.id}
678
674
  class:assigned={chosenCategory === tab.id && chosenFamily === selectedFamily}
679
- onclick={() => selectedTab = tab.id}
675
+ onclick={() => selectedCategory = tab.id}
680
676
  >{tab.label}</button>
681
677
  {/each}
682
678
  </div>
683
679
 
684
- {#if selectedTab === 'palette'}
680
+ {#if selectedCategory === 'palette'}
685
681
  <div class="step-grid">
686
682
  {#each paletteSteps as step}
687
683
  <button
@@ -694,7 +690,7 @@
694
690
  </button>
695
691
  {/each}
696
692
  </div>
697
- {:else if selectedTab === 'surface'}
693
+ {:else if selectedCategory === 'surface'}
698
694
  <div class="step-grid">
699
695
  {#each surfaceSteps as step}
700
696
  <button
@@ -707,7 +703,7 @@
707
703
  </button>
708
704
  {/each}
709
705
  </div>
710
- {:else if selectedTab === 'border'}
706
+ {:else if selectedCategory === 'border'}
711
707
  <div class="step-grid">
712
708
  {#each borderSteps as step}
713
709
  <button
@@ -720,7 +716,7 @@
720
716
  </button>
721
717
  {/each}
722
718
  </div>
723
- {:else if selectedTab === 'text'}
719
+ {:else if selectedCategory === 'text'}
724
720
  <div class="step-grid">
725
721
  {#each (selectedFamily === 'neutral' ? neutralTextSteps : textSteps) as step}
726
722
  <button
@@ -102,10 +102,10 @@ export const SHADOW: VariantScaleEntry = {
102
102
  ],
103
103
  };
104
104
 
105
- /** Used by `*-divider-height` / `*-track-height` variables; values come from the `--space-*` scale,
106
- * not a dedicated `--divider-height-*` scale. The label-set differs from BORDER_WIDTH so a divider
107
- * can pick from larger heights (up to 100%). */
108
- export const DIVIDER_HEIGHT: VariantScaleEntry = {
105
+ /** Used by `*-track-height` variables; values come from the `--space-*` scale,
106
+ * not a dedicated height scale. The label-set differs from BORDER_WIDTH so a
107
+ * track can pick from larger heights (up to 100%). */
108
+ export const TRACK_HEIGHT: VariantScaleEntry = {
109
109
  varPrefix: '--space-',
110
110
  options: [
111
111
  { key: '0', label: 'None', value: '0px' },
@@ -135,12 +135,12 @@ export const DURATION: VariantScaleEntry = {
135
135
  ],
136
136
  };
137
137
 
138
- /** Used by `*-divider-inset` variables (margin-block trimmed off a stretched
139
- * divider). Labels describe the resulting divider, not the inset value: 0
140
- * inset = bar-height divider ("Full"); larger insets = shorter divider.
138
+ /** Used by `*-hairline-inset` variables (margin-block trimmed off a stretched
139
+ * hairline). Labels describe the resulting line, not the inset value: 0
140
+ * inset = bar-height line ("Full"); larger insets = shorter line.
141
141
  * Replaces the percentage-height approach that collapsed to 0 in
142
142
  * auto-height flex parents. */
143
- export const DIVIDER_INSET: VariantScaleEntry = {
143
+ export const HAIRLINE_INSET: VariantScaleEntry = {
144
144
  varPrefix: '--space-',
145
145
  options: [
146
146
  { key: '0', label: 'Full', value: '0px' },