@motion-proto/live-tokens 0.73.0 → 0.75.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 (196) hide show
  1. package/.claude/skills/live-tokens-check-compliance/SKILL.md +33 -38
  2. package/.claude/skills/live-tokens-create-component/SKILL copy.md +196 -0
  3. package/.claude/skills/live-tokens-create-component/SKILL.md +198 -146
  4. package/.claude/skills/live-tokens-create-component/references/contract-tests.md +95 -52
  5. package/.claude/skills/live-tokens-create-component/references/intrinsics.md +2 -2
  6. package/.claude/skills/live-tokens-create-component/references/linked-siblings.md +2 -2
  7. package/.claude/skills/live-tokens-create-component/references/sketch-mode.md +12 -12
  8. package/.claude/skills/live-tokens-create-component/references/token-naming.md +2 -1
  9. package/.claude/skills/live-tokens-create-page/SKILL.md +187 -0
  10. package/.claude/skills/live-tokens-create-page/references/interaction-sources.md +66 -0
  11. package/.claude/skills/live-tokens-create-page/references/layout-sources.md +87 -0
  12. package/.claude/skills/live-tokens-create-theme/SKILL.md +84 -0
  13. package/.claude/skills/live-tokens-create-theme/references/design-directions.md +94 -0
  14. package/.claude/skills/live-tokens-fix-findings/SKILL.md +69 -60
  15. package/.claude/skills/live-tokens-pick-component/SKILL.md +64 -79
  16. package/.claude/skills/live-tokens-set-colors/SKILL.md +149 -0
  17. package/.claude/skills/live-tokens-set-colors/references/color-anchors.md +80 -0
  18. package/.claude/skills/live-tokens-set-geometry/SKILL.md +121 -0
  19. package/.claude/skills/live-tokens-set-geometry/references/geometry-anchors.md +63 -0
  20. package/.claude/skills/live-tokens-set-type/SKILL.md +93 -0
  21. package/.claude/skills/live-tokens-set-type/references/type-anchors.md +60 -0
  22. package/CHANGELOG.md +194 -0
  23. package/README.md +27 -18
  24. package/bin/check-component.mjs +91 -19
  25. package/bin/check-page.mjs +105 -24
  26. package/bin/cli.mjs +154 -97
  27. package/bin/contractRunner.mjs +945 -0
  28. package/bin/create.mjs +1 -1
  29. package/bin/lib/catalogue.mjs +37 -30
  30. package/bin/lib/findings.mjs +46 -15
  31. package/bin/lib/liveState.mjs +110 -0
  32. package/bin/lib/report.mjs +3 -3
  33. package/bin/lib/tokenVocabulary.mjs +4 -4
  34. package/bin/migrate-routes.mjs +5 -5
  35. package/bin/migrate.mjs +4 -4
  36. package/bin/save-theme.mjs +176 -0
  37. package/bin/set-colors.mjs +189 -0
  38. package/bin/{adjust.mjs → set-geometry.mjs} +25 -57
  39. package/bin/{set-fonts.mjs → set-type.mjs} +26 -62
  40. package/dist-plugin/{chunk-W6Y4BWFB.js → chunk-6WGFOJXO.js} +22 -0
  41. package/dist-plugin/{chunk-RIXO2E55.js → chunk-PDNL4NC5.js} +9 -2
  42. package/dist-plugin/{chunk-YLCOIGQC.js → chunk-SWXRVZKT.js} +98 -2
  43. package/dist-plugin/{dataPaths-BhWzd5cL.d.ts → dataPaths-BpIK_Obx.d.cts} +1 -0
  44. package/dist-plugin/{dataPaths-BhWzd5cL.d.cts → dataPaths-BpIK_Obx.d.ts} +1 -0
  45. package/dist-plugin/index.cjs +366 -148
  46. package/dist-plugin/index.d.cts +1 -1
  47. package/dist-plugin/index.d.ts +1 -1
  48. package/dist-plugin/index.js +226 -130
  49. package/dist-plugin/migrateData/index.cjs +121 -2
  50. package/dist-plugin/migrateData/index.d.cts +1 -1
  51. package/dist-plugin/migrateData/index.d.ts +1 -1
  52. package/dist-plugin/migrateData/index.js +3 -3
  53. package/dist-plugin/{generateColorsAndType → setColors}/index.cjs +594 -499
  54. package/dist-plugin/{generateColorsAndType → setColors}/index.d.cts +34 -25
  55. package/dist-plugin/{generateColorsAndType → setColors}/index.d.ts +34 -25
  56. package/dist-plugin/{generateColorsAndType → setColors}/index.js +48 -66
  57. package/dist-plugin/{adjust → setGeometry}/index.cjs +166 -48
  58. package/dist-plugin/{adjust → setGeometry}/index.d.cts +6 -6
  59. package/dist-plugin/{adjust → setGeometry}/index.d.ts +6 -6
  60. package/dist-plugin/{adjust → setGeometry}/index.js +51 -45
  61. package/dist-plugin/{fontPairing → setType}/index.cjs +19 -4
  62. package/dist-plugin/{fontPairing → setType}/index.d.cts +2 -2
  63. package/dist-plugin/{fontPairing → setType}/index.d.ts +2 -2
  64. package/dist-plugin/{fontPairing → setType}/index.js +1 -1
  65. package/dist-plugin/{themeTypes-DSV3Zisf.d.cts → themeTypes-BxRtuN5V.d.cts} +1 -1
  66. package/dist-plugin/{themeTypes-DSV3Zisf.d.ts → themeTypes-BxRtuN5V.d.ts} +1 -1
  67. package/dist-plugin/tokensCssMigrations/index.d.cts +1 -1
  68. package/dist-plugin/tokensCssMigrations/index.d.ts +1 -1
  69. package/dist-plugin/tokensCssMigrations/index.js +1 -1
  70. package/package.json +36 -8
  71. package/src/app/site.css +19 -9
  72. package/src/editor/bootstrap.ts +2 -0
  73. package/src/editor/component-editor/CollapsibleSectionEditor.svelte +4 -4
  74. package/src/editor/component-editor/DialogEditor.svelte +4 -4
  75. package/src/editor/component-editor/MenuSelectEditor.svelte +4 -1
  76. package/src/editor/component-editor/SegmentedControlEditor.svelte +6 -1
  77. package/src/editor/component-editor/TabBarEditor.svelte +1 -1
  78. package/src/editor/component-editor/TableEditor.svelte +2 -2
  79. package/src/editor/component-editor/scaffolding/TokenLayout.svelte +6 -3
  80. package/src/editor/component-editor/scaffolding/VariantGroup.svelte +41 -20
  81. package/src/editor/core/components/adjustAliases.ts +59 -45
  82. package/src/editor/core/components/aliasKinds.ts +9 -5
  83. package/src/editor/core/preview/themePreview.ts +9 -2
  84. package/src/editor/core/sketch/sketchLayer.ts +22 -0
  85. package/src/editor/core/store/editorStore.ts +10 -1
  86. package/src/editor/core/themes/{generateColorsAndType.ts → buildColors.ts} +84 -98
  87. package/src/editor/core/themes/liveStateStream.ts +26 -0
  88. package/src/editor/core/themes/migrations/2026-09-03-drop-legacy-component-keys.ts +62 -0
  89. package/src/editor/core/themes/migrations/2026-09-07-stroke-role-renames.ts +52 -0
  90. package/src/editor/core/themes/migrations/index.ts +4 -0
  91. package/src/editor/core/themes/themeDocumentSync.ts +22 -11
  92. package/src/editor/core/themes/themeService.ts +9 -2
  93. package/src/editor/docs/content/themes-workflow.md +2 -2
  94. package/src/editor/docs/content.generated.ts +1 -1
  95. package/src/editor/overlay/LiveEditorOverlay.svelte +519 -28
  96. package/src/editor/pages/ComponentEditorPage.svelte +17 -1
  97. package/src/editor/pages/liveTokensEditorHandle.ts +23 -0
  98. package/src/editor/skill-atlas/SkillAtlas.svelte +76 -574
  99. package/src/editor/skill-atlas/TreeCanvas.svelte +263 -0
  100. package/src/editor/skill-atlas/TreeNodeCard.svelte +136 -53
  101. package/src/editor/skill-atlas/edges.ts +31 -0
  102. package/src/editor/skill-atlas/skillSources.generated.ts +29 -24
  103. package/src/editor/skill-atlas/skillTrees.ts +19 -3687
  104. package/src/editor/skill-atlas/trees/check-compliance.ts +183 -0
  105. package/src/editor/skill-atlas/trees/create-component.ts +275 -0
  106. package/src/editor/skill-atlas/trees/create-page.ts +320 -0
  107. package/src/editor/skill-atlas/trees/create-theme.ts +255 -0
  108. package/src/editor/skill-atlas/trees/fix-findings.ts +469 -0
  109. package/src/editor/skill-atlas/trees/pick-component.ts +300 -0
  110. package/src/editor/skill-atlas/trees/set-colors.ts +148 -0
  111. package/src/editor/skill-atlas/trees/set-geometry.ts +136 -0
  112. package/src/editor/skill-atlas/trees/set-type.ts +142 -0
  113. package/src/editor/skill-atlas/types.ts +3 -4
  114. package/src/editor/skill-atlas/wireLayout.ts +287 -0
  115. package/src/live-tokens/data/colors-and-type/autumn.json +1 -37
  116. package/src/live-tokens/data/colors-and-type/default.json +1 -37
  117. package/src/live-tokens/data/colors-and-type/halloween.json +1 -37
  118. package/src/live-tokens/data/colors-and-type/midnight-study.json +1 -37
  119. package/src/live-tokens/data/colors-and-type/ocean.json +1 -37
  120. package/src/live-tokens/data/colors-and-type/royal-velvet.json +1 -37
  121. package/src/live-tokens/data/colors-and-type/sketchy.json +1 -37
  122. package/src/live-tokens/data/colors-and-type/spring-meadow.json +1 -37
  123. package/src/live-tokens/data/colors-and-type/sunset.json +1 -37
  124. package/src/live-tokens/data/themes/autumn.json +16 -52
  125. package/src/live-tokens/data/themes/halloween.json +16 -52
  126. package/src/live-tokens/data/themes/midnight-study.json +16 -52
  127. package/src/live-tokens/data/themes/ocean.json +16 -52
  128. package/src/live-tokens/data/themes/royal-velvet.json +16 -52
  129. package/src/live-tokens/data/themes/sketchy.json +16 -52
  130. package/src/live-tokens/data/themes/spring-meadow.json +16 -52
  131. package/src/live-tokens/data/themes/sunset.json +16 -52
  132. package/src/live-tokens/data/tokens.generated.css +0 -36
  133. package/src/system/components/Badge.svelte +7 -0
  134. package/src/system/components/Button.svelte +7 -0
  135. package/src/system/components/Callout.svelte +10 -6
  136. package/src/system/components/Card.svelte +23 -4
  137. package/src/system/components/CodeSnippet.svelte +4 -3
  138. package/src/system/components/CollapsibleSection.svelte +23 -8
  139. package/src/system/components/CornerBadge.svelte +6 -0
  140. package/src/system/components/Dialog.svelte +13 -6
  141. package/src/system/components/IconButton.svelte +9 -0
  142. package/src/system/components/Image.svelte +8 -0
  143. package/src/system/components/ImageLightbox.svelte +6 -0
  144. package/src/system/components/InlineEditActions.svelte +7 -0
  145. package/src/system/components/Input.svelte +7 -0
  146. package/src/system/components/MenuSelect.svelte +7 -0
  147. package/src/system/components/Notification.svelte +7 -0
  148. package/src/system/components/Panel.svelte +6 -0
  149. package/src/system/components/ProgressBar.svelte +5 -0
  150. package/src/system/components/RadioButton.svelte +11 -5
  151. package/src/system/components/SectionDivider.svelte +8 -0
  152. package/src/system/components/SegmentedControl.svelte +6 -0
  153. package/src/system/components/SideNavigation.svelte +6 -0
  154. package/src/system/components/Slider.svelte +7 -4
  155. package/src/system/components/TabBar.svelte +15 -9
  156. package/src/system/components/Table.svelte +8 -3
  157. package/src/system/components/Toggle.svelte +4 -4
  158. package/src/system/components/Tooltip.svelte +6 -0
  159. package/src/testing-js/chunk-AO7EZHYV.js +776 -0
  160. package/src/testing-js/chunk-AO7EZHYV.js.map +1 -0
  161. package/src/testing-js/chunk-FAFOAWYL.js +39 -0
  162. package/src/testing-js/chunk-FAFOAWYL.js.map +1 -0
  163. package/src/testing-js/chunk-L73N4NSO.js +23 -0
  164. package/src/testing-js/chunk-L73N4NSO.js.map +1 -0
  165. package/src/testing-js/chunk-LXR3MN6N.js +3063 -0
  166. package/src/testing-js/chunk-LXR3MN6N.js.map +1 -0
  167. package/src/testing-js/chunk-ZMSX6CXR.js +53 -0
  168. package/src/testing-js/chunk-ZMSX6CXR.js.map +1 -0
  169. package/src/testing-js/component-alias.contract.js +81 -0
  170. package/src/testing-js/component-alias.contract.js.map +1 -0
  171. package/src/testing-js/component-editor.contract.js +62 -0
  172. package/src/testing-js/component-editor.contract.js.map +1 -0
  173. package/src/testing-js/component-render.contract.js +568 -0
  174. package/src/testing-js/component-render.contract.js.map +1 -0
  175. package/src/testing-js/index.d.ts +293 -0
  176. package/src/testing-js/index.js +222 -0
  177. package/src/testing-js/index.js.map +1 -0
  178. package/src/testing-js/registry.contract.js +39 -0
  179. package/src/testing-js/registry.contract.js.map +1 -0
  180. package/src/testing-js/vitest-BE6uGF31.d.ts +73 -0
  181. package/src/testing-js/vitest.d.ts +3 -0
  182. package/src/testing-js/vitest.js +13 -0
  183. package/src/testing-js/vitest.js.map +1 -0
  184. package/template/README.md +13 -0
  185. package/template/_gitignore +2 -0
  186. package/template/package.json +2 -1
  187. package/template/src/pages/Home.svelte +4 -18
  188. package/.claude/skills/live-tokens-adjust-geometry/SKILL.md +0 -93
  189. package/.claude/skills/live-tokens-build-page/SKILL.md +0 -103
  190. package/.claude/skills/live-tokens-build-page/references/layout-sources.md +0 -48
  191. package/.claude/skills/live-tokens-generate-theme/SKILL.md +0 -156
  192. package/.claude/skills/live-tokens-generate-theme/references/mood-vocabulary.md +0 -43
  193. package/.claude/skills/live-tokens-generate-theme/references/named-themes.md +0 -18
  194. package/.claude/skills/live-tokens-generate-theme/references/style-vocabulary.md +0 -35
  195. package/.claude/skills/live-tokens-pair-fonts/SKILL.md +0 -90
  196. package/bin/generate-theme.mjs +0 -260
@@ -2210,42 +2210,6 @@
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
- "--badge-trait-surface": "var(--surface-brand)",
2214
- "--badge-trait-text": "var(--text-brand)",
2215
- "--badge-trait-text-font-family": "var(--font-sans)",
2216
- "--badge-trait-text-font-size": "var(--font-size-sm)",
2217
- "--badge-trait-text-font-weight": "var(--font-weight-light)",
2218
- "--badge-trait-text-line-height": "var(--line-height-none)",
2219
- "--badge-trait-border": "var(--border-brand-medium)",
2220
- "--badge-trait-border-width": "var(--border-width-1)",
2221
- "--badge-trait-shadow": "transparent",
2222
- "--sectiondivider-title": "var(--text-primary)",
2223
- "--sectiondivider-title-font-family": "var(--font-display)",
2224
- "--sectiondivider-title-font-size": "var(--font-size-5xl)",
2225
- "--sectiondivider-title-font-weight": "var(--font-weight-normal)",
2226
- "--sectiondivider-title-line-height": "var(--line-height-none)",
2227
- "--sectiondivider-title-border-width": "var(--border-width-4)",
2228
- "--sectiondivider-title-stroke-color": "var(--surface-canvas-lowest)",
2229
- "--sectiondivider-description": "var(--text-secondary)",
2230
- "--sectiondivider-description-font-family": "var(--font-sans)",
2231
- "--sectiondivider-description-font-size": "var(--font-size-md)",
2232
- "--sectiondivider-description-font-weight": "var(--font-weight-normal)",
2233
- "--sectiondivider-description-line-height": "var(--line-height-normal)",
2234
- "--dialog-primary-default-surface": "var(--surface-neutral-high)",
2235
- "--dialog-primary-default-text": "var(--text-primary)",
2236
- "--dialog-primary-default-border": "var(--border-neutral-medium)",
2237
- "--dialog-primary-default-border-width": "var(--border-width-1)",
2238
- "--dialog-primary-hover-surface": "var(--surface-neutral-higher)",
2239
- "--dialog-primary-hover-text": "var(--text-primary)",
2240
- "--dialog-primary-hover-border": "var(--border-neutral-strong)",
2241
- "--dialog-primary-hover-border-width": "var(--border-width-1)",
2242
- "--dialog-secondary-default-text": "var(--text-primary)",
2243
- "--dialog-secondary-default-border": "var(--border-neutral-medium)",
2244
- "--dialog-secondary-default-border-width": "var(--border-width-1)",
2245
- "--dialog-secondary-hover-surface": "var(--surface-neutral-lower)",
2246
- "--dialog-secondary-hover-text": "var(--text-primary)",
2247
- "--dialog-secondary-hover-border": "var(--border-neutral-strong)",
2248
- "--dialog-secondary-hover-border-width": "var(--border-width-1)",
2249
2213
  "--columns-count": "12",
2250
2214
  "--columns-max-width": "1440px",
2251
2215
  "--columns-gutter": "32px",
@@ -2432,7 +2396,7 @@
2432
2396
  "family": null
2433
2397
  }
2434
2398
  ],
2435
- "schemaVersion": 3,
2399
+ "schemaVersion": 8,
2436
2400
  "gradients": [
2437
2401
  {
2438
2402
  "variable": "--gradient-1",
@@ -2917,8 +2881,8 @@
2917
2881
  "--collapsiblesection-chromeless-hover-icon-size": "--icon-size-xs",
2918
2882
  "--collapsiblesection-chromeless-expanded-padding": "--space-8",
2919
2883
  "--collapsiblesection-divider-default-surface": "--color-transparent",
2920
- "--collapsiblesection-divider-default-border": "--border-brand",
2921
- "--collapsiblesection-divider-default-border-width": "--border-width-1",
2884
+ "--collapsiblesection-divider-default-hairline-color": "--border-brand",
2885
+ "--collapsiblesection-divider-default-hairline-thickness": "--border-width-1",
2922
2886
  "--collapsiblesection-divider-default-padding": "--space-8",
2923
2887
  "--collapsiblesection-divider-default-label": "--text-primary",
2924
2888
  "--collapsiblesection-divider-default-label-font-family": "--font-sans",
@@ -2928,8 +2892,8 @@
2928
2892
  "--collapsiblesection-divider-default-icon": "--text-primary",
2929
2893
  "--collapsiblesection-divider-default-icon-size": "--icon-size-xs",
2930
2894
  "--collapsiblesection-divider-hover-surface": "--color-transparent",
2931
- "--collapsiblesection-divider-hover-border": "--border-neutral",
2932
- "--collapsiblesection-divider-hover-border-width": "--border-width-1",
2895
+ "--collapsiblesection-divider-hover-hairline-color": "--border-neutral",
2896
+ "--collapsiblesection-divider-hover-hairline-thickness": "--border-width-1",
2933
2897
  "--collapsiblesection-divider-hover-padding": "--space-8",
2934
2898
  "--collapsiblesection-divider-hover-label": "--text-primary",
2935
2899
  "--collapsiblesection-divider-hover-label-font-family": "--font-sans",
@@ -3026,8 +2990,8 @@
3026
2990
  "--dialog-shadow": "--shadow-2xl",
3027
2991
  "--dialog-blur": "--blur-none",
3028
2992
  "--dialog-header-surface": "--surface-neutral-lower",
3029
- "--dialog-header-border": "--border-neutral-subtle",
3030
- "--dialog-header-border-width": "--border-width-1",
2993
+ "--dialog-header-divider": "--border-neutral-subtle",
2994
+ "--dialog-header-divider-width": "--border-width-1",
3031
2995
  "--dialog-header-padding": "--space-12",
3032
2996
  "--dialog-title": "--text-primary",
3033
2997
  "--dialog-title-font-family": "--font-sans",
@@ -3042,8 +3006,8 @@
3042
3006
  "--dialog-body-font-size": "--font-size-md",
3043
3007
  "--dialog-body-font-weight": "--font-weight-normal",
3044
3008
  "--dialog-body-line-height": "--line-height-normal",
3045
- "--dialog-footer-border": "--border-neutral-subtle",
3046
- "--dialog-footer-border-width": "--border-width-1",
3009
+ "--dialog-footer-divider": "--border-neutral-subtle",
3010
+ "--dialog-footer-divider-width": "--border-width-1",
3047
3011
  "--dialog-footer-padding": "--space-24"
3048
3012
  }
3049
3013
  },
@@ -3830,7 +3794,7 @@
3830
3794
  "--tabbar-default-tab-border-width": "--border-width-0",
3831
3795
  "--tabbar-default-tab-top-radius": "--radius-sm",
3832
3796
  "--tabbar-default-tab-bottom-radius": "--radius-sm",
3833
- "--tabbar-default-indicator-border-width": "--border-width-2",
3797
+ "--tabbar-default-indicator-width": "--border-width-2",
3834
3798
  "--tabbar-hover-text": "--text-secondary",
3835
3799
  "--tabbar-hover-surface": "--surface-neutral-lower",
3836
3800
  "--tabbar-hover-text-font-family": "--font-sans",
@@ -3844,7 +3808,7 @@
3844
3808
  "--tabbar-hover-tab-border-width": "--border-width-0",
3845
3809
  "--tabbar-hover-tab-top-radius": "--radius-sm",
3846
3810
  "--tabbar-hover-tab-bottom-radius": "--radius-sm",
3847
- "--tabbar-hover-indicator-border-width": "--border-width-2",
3811
+ "--tabbar-hover-indicator-width": "--border-width-2",
3848
3812
  "--tabbar-active-text": "--text-primary",
3849
3813
  "--tabbar-active-border": "--color-brand-500",
3850
3814
  "--tabbar-active-surface": "--tint-low",
@@ -3858,7 +3822,7 @@
3858
3822
  "--tabbar-active-tab-border-width": "--border-width-0",
3859
3823
  "--tabbar-active-tab-top-radius": "--radius-sm",
3860
3824
  "--tabbar-active-tab-bottom-radius": "--radius-sm",
3861
- "--tabbar-active-indicator-border-width": "--border-width-2",
3825
+ "--tabbar-active-indicator-width": "--border-width-2",
3862
3826
  "--tabbar-disabled-text": "--text-disabled",
3863
3827
  "--tabbar-disabled-text-font-family": "--font-sans",
3864
3828
  "--tabbar-disabled-text-font-size": "--font-size-md",
@@ -3872,7 +3836,7 @@
3872
3836
  "--tabbar-disabled-tab-border-width": "--border-width-0",
3873
3837
  "--tabbar-disabled-tab-top-radius": "--radius-sm",
3874
3838
  "--tabbar-disabled-tab-bottom-radius": "--radius-sm",
3875
- "--tabbar-disabled-indicator-border-width": "--border-width-2"
3839
+ "--tabbar-disabled-indicator-width": "--border-width-2"
3876
3840
  }
3877
3841
  },
3878
3842
  "table": {
@@ -3893,8 +3857,8 @@
3893
3857
  "--table-default-header-font-weight": "--font-weight-semibold",
3894
3858
  "--table-default-header-line-height": "--line-height-none",
3895
3859
  "--table-default-header-padding": "--space-20",
3896
- "--table-default-header-border": "--border-neutral",
3897
- "--table-default-header-border-width": "--border-width-1",
3860
+ "--table-default-header-divider": "--border-neutral",
3861
+ "--table-default-header-divider-width": "--border-width-1",
3898
3862
  "--table-default-cell-text": "--text-secondary",
3899
3863
  "--table-default-cell-font-family": "--font-sans",
3900
3864
  "--table-default-cell-font-size": "--font-size-md",
@@ -4016,5 +3980,5 @@
4016
3980
  }
4017
3981
  }
4018
3982
  },
4019
- "componentSchemaVersion": 26
3983
+ "componentSchemaVersion": 27
4020
3984
  }
@@ -2271,42 +2271,6 @@
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
- "--badge-trait-surface": "var(--surface-brand)",
2275
- "--badge-trait-text": "var(--text-brand)",
2276
- "--badge-trait-text-font-family": "var(--font-sans)",
2277
- "--badge-trait-text-font-size": "var(--font-size-sm)",
2278
- "--badge-trait-text-font-weight": "var(--font-weight-light)",
2279
- "--badge-trait-text-line-height": "var(--line-height-none)",
2280
- "--badge-trait-border": "var(--border-brand-medium)",
2281
- "--badge-trait-border-width": "var(--border-width-1)",
2282
- "--badge-trait-shadow": "transparent",
2283
- "--sectiondivider-title": "var(--text-primary)",
2284
- "--sectiondivider-title-font-family": "var(--font-display)",
2285
- "--sectiondivider-title-font-size": "var(--font-size-5xl)",
2286
- "--sectiondivider-title-font-weight": "var(--font-weight-normal)",
2287
- "--sectiondivider-title-line-height": "var(--line-height-none)",
2288
- "--sectiondivider-title-border-width": "var(--border-width-4)",
2289
- "--sectiondivider-title-stroke-color": "var(--surface-canvas-lowest)",
2290
- "--sectiondivider-description": "var(--text-secondary)",
2291
- "--sectiondivider-description-font-family": "var(--font-sans)",
2292
- "--sectiondivider-description-font-size": "var(--font-size-md)",
2293
- "--sectiondivider-description-font-weight": "var(--font-weight-normal)",
2294
- "--sectiondivider-description-line-height": "var(--line-height-normal)",
2295
- "--dialog-primary-default-surface": "var(--surface-neutral-high)",
2296
- "--dialog-primary-default-text": "var(--text-primary)",
2297
- "--dialog-primary-default-border": "var(--border-neutral-medium)",
2298
- "--dialog-primary-default-border-width": "var(--border-width-1)",
2299
- "--dialog-primary-hover-surface": "var(--surface-neutral-higher)",
2300
- "--dialog-primary-hover-text": "var(--text-primary)",
2301
- "--dialog-primary-hover-border": "var(--border-neutral-strong)",
2302
- "--dialog-primary-hover-border-width": "var(--border-width-1)",
2303
- "--dialog-secondary-default-text": "var(--text-primary)",
2304
- "--dialog-secondary-default-border": "var(--border-neutral-medium)",
2305
- "--dialog-secondary-default-border-width": "var(--border-width-1)",
2306
- "--dialog-secondary-hover-surface": "var(--surface-neutral-lower)",
2307
- "--dialog-secondary-hover-text": "var(--text-primary)",
2308
- "--dialog-secondary-hover-border": "var(--border-neutral-strong)",
2309
- "--dialog-secondary-hover-border-width": "var(--border-width-1)",
2310
2274
  "--columns-count": "12",
2311
2275
  "--columns-max-width": "1440px",
2312
2276
  "--columns-gutter": "32px",
@@ -2484,7 +2448,7 @@
2484
2448
  "family": null
2485
2449
  }
2486
2450
  ],
2487
- "schemaVersion": 3,
2451
+ "schemaVersion": 8,
2488
2452
  "gradients": [
2489
2453
  {
2490
2454
  "variable": "--gradient-1",
@@ -2969,8 +2933,8 @@
2969
2933
  "--collapsiblesection-chromeless-hover-icon-size": "--icon-size-xs",
2970
2934
  "--collapsiblesection-chromeless-expanded-padding": "--space-6",
2971
2935
  "--collapsiblesection-divider-default-surface": "--color-transparent",
2972
- "--collapsiblesection-divider-default-border": "--border-brand",
2973
- "--collapsiblesection-divider-default-border-width": "--border-width-1",
2936
+ "--collapsiblesection-divider-default-hairline-color": "--border-brand",
2937
+ "--collapsiblesection-divider-default-hairline-thickness": "--border-width-1",
2974
2938
  "--collapsiblesection-divider-default-padding": "--space-6",
2975
2939
  "--collapsiblesection-divider-default-label": "--text-primary",
2976
2940
  "--collapsiblesection-divider-default-label-font-family": "--font-sans",
@@ -2980,8 +2944,8 @@
2980
2944
  "--collapsiblesection-divider-default-icon": "--text-primary",
2981
2945
  "--collapsiblesection-divider-default-icon-size": "--icon-size-xs",
2982
2946
  "--collapsiblesection-divider-hover-surface": "--color-transparent",
2983
- "--collapsiblesection-divider-hover-border": "--border-neutral",
2984
- "--collapsiblesection-divider-hover-border-width": "--border-width-1",
2947
+ "--collapsiblesection-divider-hover-hairline-color": "--border-neutral",
2948
+ "--collapsiblesection-divider-hover-hairline-thickness": "--border-width-1",
2985
2949
  "--collapsiblesection-divider-hover-padding": "--space-6",
2986
2950
  "--collapsiblesection-divider-hover-label": "--text-primary",
2987
2951
  "--collapsiblesection-divider-hover-label-font-family": "--font-sans",
@@ -3078,8 +3042,8 @@
3078
3042
  "--dialog-shadow": "--shadow-2xl",
3079
3043
  "--dialog-blur": "--blur-none",
3080
3044
  "--dialog-header-surface": "--surface-neutral-lower",
3081
- "--dialog-header-border": "--border-neutral-subtle",
3082
- "--dialog-header-border-width": "--border-width-1",
3045
+ "--dialog-header-divider": "--border-neutral-subtle",
3046
+ "--dialog-header-divider-width": "--border-width-1",
3083
3047
  "--dialog-header-padding": "--space-10",
3084
3048
  "--dialog-title": "--text-primary",
3085
3049
  "--dialog-title-font-family": "--font-sans",
@@ -3094,8 +3058,8 @@
3094
3058
  "--dialog-body-font-size": "--font-size-md",
3095
3059
  "--dialog-body-font-weight": "--font-weight-normal",
3096
3060
  "--dialog-body-line-height": "--line-height-normal",
3097
- "--dialog-footer-border": "--border-neutral-subtle",
3098
- "--dialog-footer-border-width": "--border-width-1",
3061
+ "--dialog-footer-divider": "--border-neutral-subtle",
3062
+ "--dialog-footer-divider-width": "--border-width-1",
3099
3063
  "--dialog-footer-padding": "--space-20"
3100
3064
  }
3101
3065
  },
@@ -3882,7 +3846,7 @@
3882
3846
  "--tabbar-default-tab-border-width": "--border-width-0",
3883
3847
  "--tabbar-default-tab-top-radius": "--radius-sm",
3884
3848
  "--tabbar-default-tab-bottom-radius": "--radius-sm",
3885
- "--tabbar-default-indicator-border-width": "--border-width-2",
3849
+ "--tabbar-default-indicator-width": "--border-width-2",
3886
3850
  "--tabbar-hover-text": "--text-secondary",
3887
3851
  "--tabbar-hover-surface": "--surface-neutral-lower",
3888
3852
  "--tabbar-hover-text-font-family": "--font-sans",
@@ -3896,7 +3860,7 @@
3896
3860
  "--tabbar-hover-tab-border-width": "--border-width-0",
3897
3861
  "--tabbar-hover-tab-top-radius": "--radius-sm",
3898
3862
  "--tabbar-hover-tab-bottom-radius": "--radius-sm",
3899
- "--tabbar-hover-indicator-border-width": "--border-width-2",
3863
+ "--tabbar-hover-indicator-width": "--border-width-2",
3900
3864
  "--tabbar-active-text": "--text-primary",
3901
3865
  "--tabbar-active-border": "--color-brand-500",
3902
3866
  "--tabbar-active-surface": "--tint-low",
@@ -3910,7 +3874,7 @@
3910
3874
  "--tabbar-active-tab-border-width": "--border-width-0",
3911
3875
  "--tabbar-active-tab-top-radius": "--radius-sm",
3912
3876
  "--tabbar-active-tab-bottom-radius": "--radius-sm",
3913
- "--tabbar-active-indicator-border-width": "--border-width-2",
3877
+ "--tabbar-active-indicator-width": "--border-width-2",
3914
3878
  "--tabbar-disabled-text": "--text-disabled",
3915
3879
  "--tabbar-disabled-text-font-family": "--font-sans",
3916
3880
  "--tabbar-disabled-text-font-size": "--font-size-md",
@@ -3924,7 +3888,7 @@
3924
3888
  "--tabbar-disabled-tab-border-width": "--border-width-0",
3925
3889
  "--tabbar-disabled-tab-top-radius": "--radius-sm",
3926
3890
  "--tabbar-disabled-tab-bottom-radius": "--radius-sm",
3927
- "--tabbar-disabled-indicator-border-width": "--border-width-2"
3891
+ "--tabbar-disabled-indicator-width": "--border-width-2"
3928
3892
  }
3929
3893
  },
3930
3894
  "table": {
@@ -3945,8 +3909,8 @@
3945
3909
  "--table-default-header-font-weight": "--font-weight-semibold",
3946
3910
  "--table-default-header-line-height": "--line-height-none",
3947
3911
  "--table-default-header-padding": "--space-16",
3948
- "--table-default-header-border": "--border-neutral",
3949
- "--table-default-header-border-width": "--border-width-1",
3912
+ "--table-default-header-divider": "--border-neutral",
3913
+ "--table-default-header-divider-width": "--border-width-1",
3950
3914
  "--table-default-cell-text": "--text-secondary",
3951
3915
  "--table-default-cell-font-family": "--font-sans",
3952
3916
  "--table-default-cell-font-size": "--font-size-md",
@@ -4068,5 +4032,5 @@
4068
4032
  }
4069
4033
  }
4070
4034
  },
4071
- "componentSchemaVersion": 26
4035
+ "componentSchemaVersion": 27
4072
4036
  }
@@ -7,42 +7,6 @@
7
7
  --gradient-2: linear-gradient(135deg, var(--color-brand-500) 0%, var(--color-special-500) 100%);
8
8
  --gradient-3: linear-gradient(90deg, var(--color-success-500) 0%, var(--color-info-500) 100%);
9
9
  --gradient-4: linear-gradient(45deg, var(--color-danger-500) 0%, var(--color-warning-500) 100%);
10
- --badge-trait-surface: var(--surface-brand);
11
- --badge-trait-text: var(--text-brand);
12
- --badge-trait-text-font-family: var(--font-sans);
13
- --badge-trait-text-font-size: var(--font-size-sm);
14
- --badge-trait-text-font-weight: var(--font-weight-light);
15
- --badge-trait-text-line-height: var(--line-height-none);
16
- --badge-trait-border: var(--border-brand-medium);
17
- --badge-trait-border-width: var(--border-width-1);
18
- --badge-trait-shadow: transparent;
19
- --sectiondivider-title: var(--text-primary);
20
- --sectiondivider-title-font-family: var(--font-display);
21
- --sectiondivider-title-font-size: var(--font-size-5xl);
22
- --sectiondivider-title-font-weight: var(--font-weight-normal);
23
- --sectiondivider-title-line-height: var(--line-height-none);
24
- --sectiondivider-title-border-width: var(--border-width-4);
25
- --sectiondivider-title-stroke-color: var(--surface-canvas-lowest);
26
- --sectiondivider-description: var(--text-secondary);
27
- --sectiondivider-description-font-family: var(--font-sans);
28
- --sectiondivider-description-font-size: var(--font-size-md);
29
- --sectiondivider-description-font-weight: var(--font-weight-normal);
30
- --sectiondivider-description-line-height: var(--line-height-normal);
31
- --dialog-primary-default-surface: var(--surface-neutral-high);
32
- --dialog-primary-default-text: var(--text-primary);
33
- --dialog-primary-default-border: var(--border-neutral-medium);
34
- --dialog-primary-default-border-width: var(--border-width-1);
35
- --dialog-primary-hover-surface: var(--surface-neutral-higher);
36
- --dialog-primary-hover-text: var(--text-primary);
37
- --dialog-primary-hover-border: var(--border-neutral-strong);
38
- --dialog-primary-hover-border-width: var(--border-width-1);
39
- --dialog-secondary-default-text: var(--text-primary);
40
- --dialog-secondary-default-border: var(--border-neutral-medium);
41
- --dialog-secondary-default-border-width: var(--border-width-1);
42
- --dialog-secondary-hover-surface: var(--surface-neutral-lower);
43
- --dialog-secondary-hover-text: var(--text-primary);
44
- --dialog-secondary-hover-border: var(--border-neutral-strong);
45
- --dialog-secondary-hover-border-width: var(--border-width-1);
46
10
  --columns-count: 12;
47
11
  --columns-max-width: 1440px;
48
12
  --columns-gutter: 32px;
@@ -1,3 +1,10 @@
1
+ <!--
2
+ Badge.svelte. A short standing label on an element.
3
+ Use for: status the reader takes at a glance, such as "Beta", "New", or a
4
+ version.
5
+ Not for: a marker that sits on a parent's corner (CornerBadge); feedback
6
+ after an action (Notification).
7
+ -->
1
8
  <script module lang="ts">
2
9
  export const badgeVariants = [
3
10
  'primary',
@@ -1,3 +1,10 @@
1
+ <!--
2
+ Button.svelte. A labelled action.
3
+ Use for: an action that needs a word to be unambiguous.
4
+ Not for: an icon-only action (IconButton); a link to another page.
5
+ Emphasis: one primary per page; secondary for the rest; outline for a
6
+ tertiary action; danger for a destructive one.
7
+ -->
1
8
  <script lang="ts">
2
9
  import { createEventDispatcher } from 'svelte';
3
10
 
@@ -1,3 +1,9 @@
1
+ <!--
2
+ Callout.svelte. A standing message that sits inside a section.
3
+ Use for: something the reader must know about the content around it.
4
+ Not for: feedback after an action (Notification); a hint that hangs off one
5
+ element (Tooltip).
6
+ -->
1
7
  <script module lang="ts">
2
8
  export const calloutVariants = ['info', 'success', 'warning', 'danger'] as const;
3
9
  export type CalloutVariant = typeof calloutVariants[number];
@@ -29,7 +35,7 @@
29
35
  --callout-info-surface: var(--surface-info-lowest);
30
36
  --callout-info-border: var(--border-info-medium);
31
37
  --callout-info-border-width: var(--border-width-1);
32
- --callout-info-accent-width: var(--border-width-4);
38
+ --callout-info-accent-width: var(--border-width-1);
33
39
  --callout-info-radius: var(--radius-lg);
34
40
  --callout-info-padding: var(--space-12);
35
41
  --callout-info-label: var(--text-primary);
@@ -47,7 +53,7 @@
47
53
  --callout-success-surface: var(--surface-success-lowest);
48
54
  --callout-success-border: var(--border-success-subtle);
49
55
  --callout-success-border-width: var(--border-width-1);
50
- --callout-success-accent-width: var(--border-width-4);
56
+ --callout-success-accent-width: var(--border-width-1);
51
57
  --callout-success-radius: var(--radius-lg);
52
58
  --callout-success-padding: var(--space-12);
53
59
  --callout-success-label: var(--text-primary);
@@ -65,7 +71,7 @@
65
71
  --callout-warning-surface: var(--surface-warning-lowest);
66
72
  --callout-warning-border: var(--border-warning-subtle);
67
73
  --callout-warning-border-width: var(--border-width-1);
68
- --callout-warning-accent-width: var(--border-width-4);
74
+ --callout-warning-accent-width: var(--border-width-1);
69
75
  --callout-warning-radius: var(--radius-lg);
70
76
  --callout-warning-padding: var(--space-12);
71
77
  --callout-warning-label: var(--text-primary);
@@ -83,7 +89,7 @@
83
89
  --callout-danger-surface: var(--surface-danger-lowest);
84
90
  --callout-danger-border: var(--border-danger-subtle);
85
91
  --callout-danger-border-width: var(--border-width-1);
86
- --callout-danger-accent-width: var(--border-width-4);
92
+ --callout-danger-accent-width: var(--border-width-1);
87
93
  --callout-danger-radius: var(--radius-lg);
88
94
  --callout-danger-padding: var(--space-12);
89
95
  --callout-danger-label: var(--text-primary);
@@ -99,8 +105,6 @@
99
105
  }
100
106
 
101
107
  .callout {
102
- margin: var(--space-24) 0;
103
-
104
108
  :global(p) {
105
109
  margin: 0;
106
110
  display: inline;
@@ -1,3 +1,10 @@
1
+ <!--
2
+ Card.svelte. One item with a title.
3
+ Use for: an item on its own, or each item in a set: a product, a record, a
4
+ plan the reader may act on.
5
+ Not for: a section of the page's content (Panel); content the reader opens
6
+ on demand (CollapsibleSection); a decision that blocks the page (Dialog).
7
+ -->
1
8
  <script lang="ts">
2
9
  interface Props {
3
10
  icon?: string;
@@ -16,6 +23,8 @@
16
23
  default; `true`/`false` force this instance on/off. */
17
24
  hover?: boolean | undefined;
18
25
  class?: string;
26
+ /** Content at the header's trailing edge: a badge, a count, an action. */
27
+ aside?: import('svelte').Snippet;
19
28
  children?: import('svelte').Snippet;
20
29
  }
21
30
 
@@ -29,6 +38,7 @@
29
38
  flush = false,
30
39
  hover = undefined,
31
40
  class: className = '',
41
+ aside,
32
42
  children
33
43
  }: Props = $props();
34
44
 
@@ -40,7 +50,7 @@
40
50
  hover === undefined ? undefined : hover ? 'var(--card-hover-shadow)' : 'var(--card-default-shadow)',
41
51
  );
42
52
 
43
- let showHeader = $derived(variant !== 'bare' && Boolean(icon || title));
53
+ let showHeader = $derived(variant !== 'bare' && Boolean(icon || title || aside));
44
54
 
45
55
  $effect(() => {
46
56
  if (import.meta.env.DEV && variant === 'default' && !icon && !title) {
@@ -65,6 +75,9 @@
65
75
  {#if title}
66
76
  <span class="card-title">{title}</span>
67
77
  {/if}
78
+ {#if aside}
79
+ <div class="card-aside">{@render aside()}</div>
80
+ {/if}
68
81
  </div>
69
82
  {/if}
70
83
  <div class="card-body" class:prose class:flush>
@@ -142,10 +155,11 @@
142
155
  box-shadow: var(--card-hover-shadow-enabled);
143
156
  }
144
157
 
145
- /* Editor preview hook: paint hover tokens directly, ignoring the on/off gate. */
158
+ /* Editor preview hook. Reads the same gated tokens as the real :hover rule,
159
+ so turning "Use hover" off shows the resting card the page will draw. */
146
160
  .card.force-hover {
147
- border-color: var(--card-hover-border);
148
- box-shadow: var(--card-hover-shadow);
161
+ border-color: var(--card-hover-border-enabled);
162
+ box-shadow: var(--card-hover-shadow-enabled);
149
163
  }
150
164
 
151
165
  .card-header {
@@ -156,6 +170,11 @@
156
170
  background: var(--card-default-header-surface);
157
171
  }
158
172
 
173
+ .card-aside {
174
+ flex-shrink: 0;
175
+ margin-left: auto;
176
+ }
177
+
159
178
  .card.compact .card-header,
160
179
  .card.compact .card-body {
161
180
  padding: var(--space-8) var(--space-12);
@@ -1,7 +1,8 @@
1
1
  <!--
2
- CodeSnippet.svelte — code display with a copy button pinned top-right. Click
3
- the button to copy `code` to the clipboard; a Tooltip-rendered confirmation
4
- ("Copied") flashes briefly above the button.
2
+ CodeSnippet.svelte. A command or value with a copy button.
3
+ Use for: text the reader is meant to run or paste somewhere else.
4
+ Not for: prose the reader only reads (a paragraph in its Card or Panel); a
5
+ value the reader edits (Input).
5
6
  -->
6
7
  <script lang="ts">
7
8
  import Tooltip from './Tooltip.svelte';
@@ -1,3 +1,11 @@
1
+ <!--
2
+ CollapsibleSection.svelte. A section the reader opens and closes.
3
+ Use for: secondary content that most readers skip.
4
+ Not for: content every reader needs (Card); moving between pages
5
+ (SideNavigation).
6
+ Variant: `chromeless` sits inside other content, `divider` rules a line
7
+ under the header, `container` frames the whole section.
8
+ -->
1
9
  <script lang="ts">
2
10
  import { createEventDispatcher } from 'svelte';
3
11
 
@@ -60,10 +68,17 @@
60
68
  {@render summary?.()}
61
69
  </div>
62
70
  {:else}
63
- <!-- svelte-ignore a11y_click_events_have_key_events, a11y_no_noninteractive_element_interactions, a11y_no_static_element_interactions -->
64
- <div class="section-header" class:expanded onclick={fireToggle}>
71
+ <div class="section-header" class:expanded>
65
72
  <div class="section-toggle">
66
- <i class="fas fa-chevron-right toggle-icon"></i>
73
+ <button
74
+ type="button"
75
+ class="section-toggle-button"
76
+ onclick={fireToggle}
77
+ aria-label={expanded ? 'Collapse section' : 'Expand section'}
78
+ aria-expanded={expanded}
79
+ >
80
+ <i class="fas fa-chevron-right toggle-icon"></i>
81
+ </button>
67
82
  <span class="section-label">{label}</span>
68
83
  </div>
69
84
  {@render summary?.()}
@@ -106,8 +121,8 @@
106
121
 
107
122
  /* Divider — default */
108
123
  --collapsiblesection-divider-default-surface: var(--color-transparent);
109
- --collapsiblesection-divider-default-border: var(--border-brand);
110
- --collapsiblesection-divider-default-border-width: var(--border-width-1);
124
+ --collapsiblesection-divider-default-hairline-color: var(--border-brand);
125
+ --collapsiblesection-divider-default-hairline-thickness: var(--border-width-1);
111
126
  --collapsiblesection-divider-default-padding: var(--space-4);
112
127
  --collapsiblesection-divider-default-label: var(--text-primary);
113
128
  --collapsiblesection-divider-default-label-font-family: var(--font-sans);
@@ -118,8 +133,8 @@
118
133
  --collapsiblesection-divider-default-icon-size: var(--icon-size-xs);
119
134
  /* Divider — hover */
120
135
  --collapsiblesection-divider-hover-surface: var(--color-transparent);
121
- --collapsiblesection-divider-hover-border: var(--border-neutral);
122
- --collapsiblesection-divider-hover-border-width: var(--border-width-1);
136
+ --collapsiblesection-divider-hover-hairline-color: var(--border-neutral);
137
+ --collapsiblesection-divider-hover-hairline-thickness: var(--border-width-1);
123
138
  --collapsiblesection-divider-hover-padding: var(--space-4);
124
139
  --collapsiblesection-divider-hover-label: var(--text-primary);
125
140
  --collapsiblesection-divider-hover-label-font-family: var(--font-sans);
@@ -237,7 +252,7 @@
237
252
  }
238
253
 
239
254
  @mixin divider-bottom($state) {
240
- border-bottom: var(--collapsiblesection-divider-#{$state}-border-width) solid var(--collapsiblesection-divider-#{$state}-border);
255
+ border-bottom: var(--collapsiblesection-divider-#{$state}-hairline-thickness) solid var(--collapsiblesection-divider-#{$state}-hairline-color);
241
256
  }
242
257
 
243
258
  .es-root.variant-chromeless {
@@ -1,3 +1,9 @@
1
+ <!--
2
+ CornerBadge.svelte. A badge that sits on a corner of its parent.
3
+ Use for: a count or status marker that sits on the thing it describes.
4
+ Not for: a label in the text flow (Badge); feedback after an action
5
+ (Notification).
6
+ -->
1
7
  <script module lang="ts">
2
8
  export type CornerAnchor = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
3
9
  </script>
@@ -1,3 +1,10 @@
1
+ <!--
2
+ Dialog.svelte. A modal window that blocks the page.
3
+ Use for: a decision the page cannot continue without, such as a destructive
4
+ confirmation or a sign-in.
5
+ Not for: a routine form (Panel); a message that asks nothing of the reader
6
+ (Notification).
7
+ -->
1
8
  <script lang="ts">
2
9
  import { createEventDispatcher, tick } from 'svelte';
3
10
  import type { Snippet } from 'svelte';
@@ -179,8 +186,8 @@
179
186
 
180
187
  /* Header */
181
188
  --dialog-header-surface: var(--surface-neutral-lower);
182
- --dialog-header-border: var(--border-neutral-subtle);
183
- --dialog-header-border-width: var(--border-width-1);
189
+ --dialog-header-divider: var(--border-neutral-subtle);
190
+ --dialog-header-divider-width: var(--border-width-1);
184
191
  --dialog-header-padding: var(--space-8);
185
192
 
186
193
  /* Title */
@@ -203,8 +210,8 @@
203
210
  --dialog-body-line-height: var(--line-height-normal);
204
211
 
205
212
  /* Footer */
206
- --dialog-footer-border: var(--border-neutral-subtle);
207
- --dialog-footer-border-width: var(--border-width-1);
213
+ --dialog-footer-divider: var(--border-neutral-subtle);
214
+ --dialog-footer-divider-width: var(--border-width-1);
208
215
  --dialog-footer-padding: var(--space-16);
209
216
  }
210
217
 
@@ -264,7 +271,7 @@
264
271
  var(--dialog-header-padding-right, calc(var(--dialog-header-padding) * 3))
265
272
  var(--dialog-header-padding-bottom, var(--dialog-header-padding))
266
273
  var(--dialog-header-padding-left, calc(var(--dialog-header-padding) * 3));
267
- border-bottom: var(--dialog-header-border-width) solid var(--dialog-header-border);
274
+ border-bottom: var(--dialog-header-divider-width) solid var(--dialog-header-divider);
268
275
  background: var(--dialog-header-surface);
269
276
  display: flex;
270
277
  justify-content: space-between;
@@ -320,7 +327,7 @@
320
327
  var(--dialog-footer-padding-right, var(--dialog-footer-padding))
321
328
  var(--dialog-footer-padding-bottom, var(--dialog-footer-padding))
322
329
  var(--dialog-footer-padding-left, var(--dialog-footer-padding));
323
- border-top: var(--dialog-footer-border-width) solid var(--dialog-footer-border);
330
+ border-top: var(--dialog-footer-divider-width) solid var(--dialog-footer-divider);
324
331
  display: flex;
325
332
  justify-content: space-between;
326
333
  align-items: center;
@@ -1,3 +1,12 @@
1
+ <!--
2
+ IconButton.svelte. An action that an icon alone carries.
3
+ Use for: an action whose meaning is plain from the glyph, such as close,
4
+ edit, or delete.
5
+ Not for: an action that needs a word (Button); the confirm-and-cancel pair
6
+ after an inline edit (InlineEditActions).
7
+ Emphasis: one primary per page; secondary for the rest; outline for a
8
+ tertiary action; danger for a destructive one.
9
+ -->
1
10
  <script lang="ts">
2
11
  interface Props {
3
12
  /** Wash the hovered surface with the theme's tint. `undefined` inherits the