@motion-proto/live-tokens 0.6.2 → 0.8.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 (232) hide show
  1. package/README.md +14 -13
  2. package/dist-plugin/index.cjs +854 -226
  3. package/dist-plugin/index.d.cts +2 -1
  4. package/dist-plugin/index.d.ts +2 -1
  5. package/dist-plugin/index.js +852 -225
  6. package/package.json +26 -40
  7. package/src/{styles → app}/site.css +1 -1
  8. package/src/{component-editor → editor/component-editor}/BadgeEditor.svelte +8 -82
  9. package/src/{component-editor → editor/component-editor}/CalloutEditor.svelte +4 -4
  10. package/src/{component-editor → editor/component-editor}/CardEditor.svelte +28 -76
  11. package/src/{component-editor → editor/component-editor}/CollapsibleSectionEditor.svelte +37 -30
  12. package/src/{component-editor → editor/component-editor}/CornerBadgeEditor.svelte +31 -93
  13. package/src/{component-editor → editor/component-editor}/DialogEditor.svelte +60 -57
  14. package/src/editor/component-editor/ImageEditor.svelte +30 -0
  15. package/src/{component-editor → editor/component-editor}/InlineEditActionsEditor.svelte +6 -4
  16. package/src/editor/component-editor/MenuSelectEditor.svelte +160 -0
  17. package/src/{component-editor → editor/component-editor}/NotificationEditor.svelte +67 -38
  18. package/src/{component-editor → editor/component-editor}/ProgressBarEditor.svelte +5 -4
  19. package/src/{component-editor → editor/component-editor}/RadioButtonEditor.svelte +3 -3
  20. package/src/editor/component-editor/SectionDividerEditor.svelte +565 -0
  21. package/src/{component-editor → editor/component-editor}/SegmentedControlEditor.svelte +2 -2
  22. package/src/{component-editor → editor/component-editor}/StandardButtonsEditor.svelte +29 -21
  23. package/src/{component-editor → editor/component-editor}/TabBarEditor.svelte +9 -14
  24. package/src/{component-editor → editor/component-editor}/TableEditor.svelte +9 -18
  25. package/src/{component-editor → editor/component-editor}/TooltipEditor.svelte +11 -47
  26. package/src/editor/component-editor/editors.d.ts +10 -0
  27. package/src/{component-editor → editor/component-editor}/registry.ts +28 -18
  28. package/src/{component-editor → editor/component-editor}/scaffolding/AngleDial.svelte +54 -15
  29. package/src/{component-editor → editor/component-editor}/scaffolding/ComponentEditorBase.svelte +3 -51
  30. package/src/{component-editor → editor/component-editor}/scaffolding/ComponentFileManager.svelte +151 -424
  31. package/src/{component-editor → editor/component-editor}/scaffolding/ComponentFileMenu.svelte +18 -170
  32. package/src/{component-editor → editor/component-editor}/scaffolding/ComponentsTab.svelte +2 -2
  33. package/src/{component-editor → editor/component-editor}/scaffolding/CopyFromMenu.svelte +44 -4
  34. package/src/{component-editor → editor/component-editor}/scaffolding/FieldsetWrapper.svelte +1 -1
  35. package/src/{component-editor → editor/component-editor}/scaffolding/LinkageChart.svelte +6 -6
  36. package/src/{component-editor → editor/component-editor}/scaffolding/LinkedBlock.svelte +6 -12
  37. package/src/editor/component-editor/scaffolding/NonStylableConfig.svelte +38 -0
  38. package/src/editor/component-editor/scaffolding/RadialShapePad.svelte +483 -0
  39. package/src/{component-editor → editor/component-editor}/scaffolding/SaveAsDialog.svelte +66 -12
  40. package/src/editor/component-editor/scaffolding/ShadowBackdrop.svelte +85 -0
  41. package/src/editor/component-editor/scaffolding/ShadowBackdropControls.svelte +132 -0
  42. package/src/editor/component-editor/scaffolding/StateBlock.svelte +345 -0
  43. package/src/{component-editor → editor/component-editor}/scaffolding/TokenLayout.svelte +17 -12
  44. package/src/{component-editor → editor/component-editor}/scaffolding/TypeEditor.svelte +13 -1
  45. package/src/editor/component-editor/scaffolding/VariantGroup.svelte +858 -0
  46. package/src/{component-editor → editor/component-editor}/scaffolding/buildTypeGroupTokens.ts +1 -0
  47. package/src/{component-editor → editor/component-editor}/scaffolding/editorContext.ts +19 -9
  48. package/src/{component-editor → editor/component-editor}/scaffolding/linkedBlock.ts +2 -2
  49. package/src/{component-editor → editor/component-editor}/scaffolding/types.ts +25 -0
  50. package/src/{lib → editor/core/components}/componentConfigKeys.ts +8 -0
  51. package/src/{lib → editor/core/components}/componentConfigService.ts +3 -3
  52. package/src/{lib → editor/core/components}/componentPersist.ts +11 -9
  53. package/src/editor/core/flashStatus.ts +30 -0
  54. package/src/{lib → editor/core/fonts}/fontLoader.ts +2 -2
  55. package/src/{lib → editor/core/fonts}/fontMigration.ts +4 -4
  56. package/src/{lib → editor/core/fonts}/fontParse.ts +1 -1
  57. package/src/editor/core/manifests/manifestService.ts +171 -0
  58. package/src/editor/core/palettes/familySwap.ts +99 -0
  59. package/src/{lib → editor/core/palettes}/paletteDerivation.ts +71 -2
  60. package/src/{lib → editor/core/palettes}/tokenRegistry.ts +9 -6
  61. package/src/editor/core/productionPulse.ts +37 -0
  62. package/src/{lib → editor/core/routing}/router.ts +1 -1
  63. package/src/{lib/files/versionedFileResource.ts → editor/core/storage/files/versionedFileResourceClient.ts} +8 -1
  64. package/src/{lib → editor/core/store}/editorCore.ts +24 -8
  65. package/src/{lib → editor/core/store}/editorPersistence.ts +3 -3
  66. package/src/{lib → editor/core/store}/editorRenderer.ts +2 -2
  67. package/src/{lib → editor/core/store}/editorStore.ts +222 -28
  68. package/src/{lib → editor/core/store}/editorTypes.ts +56 -13
  69. package/src/editor/core/store/gradientSource.ts +192 -0
  70. package/src/editor/core/themes/migrations/2026-05-19-collapsiblesection-drop-frame-surface.ts +28 -0
  71. package/src/editor/core/themes/migrations/2026-05-19-sectiondivider-rich-gradient.ts +35 -0
  72. package/src/editor/core/themes/migrations/2026-05-20-sectiondivider-slim-variants.ts +82 -0
  73. package/src/editor/core/themes/migrations/2026-05-21-sectiondivider-spacing-to-padding.ts +24 -0
  74. package/src/editor/core/themes/migrations/2026-05-22-sectiondivider-intrinsics-to-css.ts +81 -0
  75. package/src/{lib → editor/core/themes}/migrations/index.ts +10 -0
  76. package/src/{lib → editor/core/themes}/slices/columns.ts +2 -2
  77. package/src/{lib → editor/core/themes}/slices/components.ts +20 -6
  78. package/src/{lib → editor/core/themes}/slices/fonts.ts +1 -1
  79. package/src/{lib → editor/core/themes}/slices/gradients.ts +89 -14
  80. package/src/{lib → editor/core/themes}/slices/overlays.ts +1 -1
  81. package/src/{lib → editor/core/themes}/slices/palettes.ts +1 -1
  82. package/src/{lib → editor/core/themes}/slices/shadows.ts +3 -3
  83. package/src/{lib → editor/core/themes}/themeInit.ts +8 -8
  84. package/src/{lib → editor/core/themes}/themeService.ts +6 -6
  85. package/src/{lib → editor/core/themes}/themeTypes.ts +67 -8
  86. package/src/editor/index.ts +69 -0
  87. package/src/{lib → editor/overlay}/ColumnsOverlay.svelte +0 -1
  88. package/src/{lib → editor/overlay}/LiveEditorOverlay.svelte +80 -129
  89. package/src/{lib → editor/overlay}/columnsOverlay.ts +2 -2
  90. package/src/{pages → editor/pages}/ComponentEditorPage.svelte +12 -12
  91. package/src/{pages → editor/pages}/Editor.svelte +4 -4
  92. package/src/{pages → editor/pages}/EditorShell.svelte +18 -36
  93. package/src/{styles → editor/styles}/ui-editor.css +43 -22
  94. package/src/{styles → editor/styles}/ui-form-controls.css +23 -24
  95. package/src/{ui → editor/ui}/BezierCurveEditor.svelte +119 -68
  96. package/src/{ui → editor/ui}/ColorEditPanel.svelte +13 -13
  97. package/src/{ui → editor/ui}/EditorViewSwitcher.svelte +7 -6
  98. package/src/editor/ui/FileLoadList.svelte +367 -0
  99. package/src/editor/ui/FilePill.svelte +80 -0
  100. package/src/editor/ui/FontStackEditor.svelte +499 -0
  101. package/src/editor/ui/GradientEditor.svelte +690 -0
  102. package/src/{ui → editor/ui}/GradientStopPicker.svelte +12 -4
  103. package/src/editor/ui/ManifestFileManager.svelte +438 -0
  104. package/src/{ui → editor/ui}/PaletteEditor.svelte +180 -673
  105. package/src/editor/ui/ProjectFontsSection.svelte +638 -0
  106. package/src/{ui → editor/ui}/SurfacesTab.svelte +3 -3
  107. package/src/{ui → editor/ui}/TextTab.svelte +3 -3
  108. package/src/editor/ui/ThemeFileManager.svelte +783 -0
  109. package/src/{ui → editor/ui}/UICopyPopover.svelte +4 -4
  110. package/src/{ui → editor/ui}/UIFontFamilySelector.svelte +6 -7
  111. package/src/{ui → editor/ui}/UIFontSizeSelector.svelte +4 -1
  112. package/src/editor/ui/UIInfoPopover.svelte +243 -0
  113. package/src/editor/ui/UILetterSpacingSelector.svelte +65 -0
  114. package/src/{ui → editor/ui}/UILineHeightSelector.svelte +5 -5
  115. package/src/{ui → editor/ui}/UILinkToggle.svelte +2 -2
  116. package/src/{ui → editor/ui}/UIPaddingSelector.svelte +6 -6
  117. package/src/{ui → editor/ui}/UIPaletteSelector.svelte +57 -30
  118. package/src/editor/ui/UIPillButton.svelte +168 -0
  119. package/src/{ui → editor/ui}/UIRadio.svelte +2 -2
  120. package/src/{ui → editor/ui}/UIRelinkConfirmPopover.svelte +4 -4
  121. package/src/editor/ui/UISegmentedControl.svelte +114 -0
  122. package/src/editor/ui/UISquareButton.svelte +172 -0
  123. package/src/{ui → editor/ui}/UITokenSelector.svelte +14 -11
  124. package/src/{ui → editor/ui}/UIVariantSelector.svelte +1 -1
  125. package/src/{ui → editor/ui}/VariablesTab.svelte +46 -17
  126. package/src/{ui → editor/ui}/palette/GradientStopEditor.svelte +13 -13
  127. package/src/{ui → editor/ui}/palette/OverridesPanel.svelte +24 -47
  128. package/src/{ui → editor/ui}/palette/PaletteBase.svelte +11 -8
  129. package/src/{ui → editor/ui}/palette/paletteEditorState.ts +1 -1
  130. package/src/editor/ui/palette/paletteMath.ts +275 -0
  131. package/src/{ui → editor/ui}/sections/ColumnsSection.svelte +137 -18
  132. package/src/{ui → editor/ui}/sections/GradientsSection.svelte +8 -8
  133. package/src/{ui → editor/ui}/sections/OverlaysSection.svelte +18 -18
  134. package/src/{ui → editor/ui}/sections/ShadowsSection.svelte +23 -23
  135. package/src/{ui → editor/ui}/sections/TokenScaleTable.svelte +3 -3
  136. package/src/{components → system/components}/Badge.svelte +0 -36
  137. package/src/{components → system/components}/Button.svelte +2 -2
  138. package/src/{components → system/components}/Card.svelte +34 -60
  139. package/src/{components → system/components}/CollapsibleSection.svelte +25 -2
  140. package/src/{components → system/components}/CornerBadge.svelte +8 -24
  141. package/src/{components → system/components}/Dialog.svelte +1 -1
  142. package/src/system/components/FloatingTokenTags.css +275 -0
  143. package/src/system/components/FloatingTokenTags.svelte +543 -0
  144. package/src/{components → system/components}/InlineEditActions.svelte +6 -4
  145. package/src/system/components/MenuSelect.svelte +229 -0
  146. package/src/{components → system/components}/Notification.svelte +8 -1
  147. package/src/{components → system/components}/ProgressBar.svelte +29 -11
  148. package/src/system/components/SectionDivider.svelte +560 -0
  149. package/src/{components → system/components}/SegmentedControl.svelte +49 -43
  150. package/src/{components → system/components}/TabBar.svelte +81 -65
  151. package/src/{components → system/components}/Table.svelte +17 -3
  152. package/src/{components → system/components}/Tooltip.svelte +6 -4
  153. package/src/system/styles/CONVENTIONS.md +178 -0
  154. package/src/system/styles/fonts.css +20 -0
  155. package/src/system/styles/tokens.css +601 -0
  156. package/src/system/styles/tokens.generated.css +544 -0
  157. package/src/component-editor/ImageEditor.svelte +0 -74
  158. package/src/component-editor/SectionDividerEditor.svelte +0 -265
  159. package/src/component-editor/scaffolding/DividerEditor.svelte +0 -94
  160. package/src/component-editor/scaffolding/GradientCard.svelte +0 -296
  161. package/src/component-editor/scaffolding/NonStylableConfig.svelte +0 -62
  162. package/src/component-editor/scaffolding/ShadowBackdrop.svelte +0 -37
  163. package/src/component-editor/scaffolding/ShadowBackdropControls.svelte +0 -61
  164. package/src/component-editor/scaffolding/StateBlock.svelte +0 -132
  165. package/src/component-editor/scaffolding/VariantGroup.svelte +0 -310
  166. package/src/components/SectionDivider.svelte +0 -483
  167. package/src/data/google-fonts.json +0 -75
  168. package/src/lib/index.ts +0 -68
  169. package/src/lib/presetService.ts +0 -214
  170. package/src/lib/productionPulse.ts +0 -32
  171. package/src/styles/fonts.css +0 -30
  172. package/src/styles/tokens.css +0 -1324
  173. package/src/ui/FontStackEditor.svelte +0 -361
  174. package/src/ui/GradientEditor.svelte +0 -470
  175. package/src/ui/PresetFileManager.svelte +0 -1116
  176. package/src/ui/ProjectFontsSection.svelte +0 -645
  177. package/src/ui/ThemeFileManager.svelte +0 -1020
  178. package/src/ui/UnsavedComponentsDialog.svelte +0 -315
  179. /package/src/{component-editor → editor/component-editor}/index.ts +0 -0
  180. /package/src/{component-editor → editor/component-editor}/scaffolding/DemoHeader.svelte +0 -0
  181. /package/src/{component-editor → editor/component-editor}/scaffolding/componentSectionType.ts +0 -0
  182. /package/src/{component-editor → editor/component-editor}/scaffolding/componentSources.ts +0 -0
  183. /package/src/{component-editor → editor/component-editor}/scaffolding/defaultSections.ts +0 -0
  184. /package/src/{component-editor → editor/component-editor}/scaffolding/siblings.ts +0 -0
  185. /package/src/{lib → editor/core}/cssVarSync.ts +0 -0
  186. /package/src/{lib → editor/core/palettes}/oklch.ts +0 -0
  187. /package/src/{lib → editor/core/routing}/navLinkTypes.ts +0 -0
  188. /package/src/{lib → editor/core/routing}/parentRouteStore.ts +0 -0
  189. /package/src/{lib → editor/core/storage}/storage.ts +0 -0
  190. /package/src/{lib → editor/core/store}/editorConfig.ts +0 -0
  191. /package/src/{lib → editor/core/store}/editorConfigStore.ts +0 -0
  192. /package/src/{lib → editor/core/store}/editorKeybindings.ts +0 -0
  193. /package/src/{lib → editor/core/store}/editorViewStore.ts +0 -0
  194. /package/src/{lib → editor/core/themes}/migrations/2026-04-24-component-prefix-and-suffix-renames.ts +0 -0
  195. /package/src/{lib → editor/core/themes}/migrations/2026-04-24-legacy-keys-and-bg-to-canvas.ts +0 -0
  196. /package/src/{lib → editor/core/themes}/migrations/2026-04-27-segmentedcontrol-disabled-flatten.ts +0 -0
  197. /package/src/{lib → editor/core/themes}/migrations/2026-05-08-collapsiblesection-frame-and-cleanup.ts +0 -0
  198. /package/src/{lib → editor/core/themes}/migrations/2026-05-08-collapsiblesection-variant-namespace.ts +0 -0
  199. /package/src/{lib → editor/core/themes}/migrations/2026-05-10-sectiondivider-gradient-stops.ts +0 -0
  200. /package/src/{lib → editor/core/themes}/migrations/2026-05-13-primary-to-brand.ts +0 -0
  201. /package/src/{lib → editor/core/themes}/parsers/globalRootBlock.ts +0 -0
  202. /package/src/{lib → editor/core/themes}/slices/domainVars.ts +0 -0
  203. /package/src/{lib → editor/overlay}/overlayState.ts +0 -0
  204. /package/src/{pages → editor/pages}/ComponentEditorPage.svelte.d.ts +0 -0
  205. /package/src/{pages → editor/pages}/Editor.svelte.d.ts +0 -0
  206. /package/src/{ui → editor/ui}/Toggle.svelte +0 -0
  207. /package/src/{ui → editor/ui}/UIDialog.svelte +0 -0
  208. /package/src/{ui → editor/ui}/UIFontWeightSelector.svelte +0 -0
  209. /package/src/{ui → editor/ui}/UIOptionItem.svelte +0 -0
  210. /package/src/{ui → editor/ui}/UIOptionList.svelte +0 -0
  211. /package/src/{ui → editor/ui}/UIRadioGroup.svelte +0 -0
  212. /package/src/{lib → editor/ui}/copyPopover.ts +0 -0
  213. /package/src/{ui → editor/ui}/curveEngine.ts +0 -0
  214. /package/src/{ui → editor/ui}/index.ts +0 -0
  215. /package/src/{ui → editor/ui}/keepInViewport.ts +0 -0
  216. /package/src/{ui → editor/ui}/palette/ScaleCurveEditor.svelte +0 -0
  217. /package/src/{lib → editor/ui}/scrollSection.ts +0 -0
  218. /package/src/{ui → editor/ui}/sections/tokenScales.ts +0 -0
  219. /package/src/{ui → editor/ui}/variantScales.ts +0 -0
  220. /package/src/{assets → system/assets}/newspaper.webp +0 -0
  221. /package/src/{assets → system/assets}/offering.webp +0 -0
  222. /package/src/{components → system/components}/Callout.svelte +0 -0
  223. /package/src/{components → system/components}/Image.svelte +0 -0
  224. /package/src/{components → system/components}/RadioButton.svelte +0 -0
  225. /package/src/{components → system/components}/types.ts +0 -0
  226. /package/src/{styles → system/styles}/_padding.scss +0 -0
  227. /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-italic-latin-ext.woff2 +0 -0
  228. /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-italic-latin.woff2 +0 -0
  229. /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-roman-latin-ext.woff2 +0 -0
  230. /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-roman-latin.woff2 +0 -0
  231. /package/src/{styles → system/styles}/fonts/Manrope/Manrope-latin-ext.woff2 +0 -0
  232. /package/src/{styles → system/styles}/fonts/Manrope/Manrope-latin.woff2 +0 -0
@@ -1,483 +0,0 @@
1
- <script lang="ts">
2
- import { run } from 'svelte/legacy';
3
-
4
- import { onMount, tick } from 'svelte';
5
-
6
- interface Props {
7
- title: string;
8
- description?: string | undefined;
9
- variant?: 'canvas' | 'neutral' | 'alternate' | 'primary' | 'accent' | 'special';
10
- }
11
-
12
- let { title, description = undefined, variant = 'canvas' }: Props = $props();
13
-
14
- let svgEl: SVGSVGElement | undefined = $state();
15
- let svgTextEl: SVGTextElement | undefined = $state();
16
- let svgW = $state(0);
17
- let svgH = $state(0);
18
- let svgX = $state(0);
19
- let svgY = $state(0);
20
-
21
- // feMorphology radius and feFlood flood-color are non-presentation attributes:
22
- // they can't read CSS vars. We read the resolved values off the SVG element
23
- // and push them onto the filter primitives, refreshing whenever the editor
24
- // mutates inline CSS vars on documentElement. Reading the variant-scoped
25
- // internal `--_divider-title-*` vars (set by the .variant-{v} class) keeps
26
- // this independent of the variant prop.
27
- let outlineRadius = $state('0');
28
- let outlineColor = $state('#000');
29
- // Stable per-instance id so multiple SectionDividers on the same page each
30
- // bind their <text> to their own filter.
31
- const filterId = `sd-outline-${Math.random().toString(36).slice(2, 10)}`;
32
-
33
- function syncFilter(): void {
34
- if (!svgEl) return;
35
- const cs = getComputedStyle(svgEl);
36
- const wPx = parseFloat(cs.getPropertyValue('--_divider-title-border-width'));
37
- // SVG stroke extends `width/2` on each side; feMorphology radius dilates
38
- // by `radius` outward — so radius = width/2 gives the same visible outline.
39
- outlineRadius = String(Number.isFinite(wPx) ? wPx / 2 : 0);
40
- const c = cs.getPropertyValue('--_divider-title-stroke-color').trim();
41
- outlineColor = c || '#000';
42
- }
43
-
44
- function measure(): void {
45
- if (!svgTextEl) return;
46
- const bb = svgTextEl.getBBox();
47
- // Size the SVG to the glyph bbox exactly and map that bbox onto the
48
- // canvas via viewBox. Otherwise svgH = bb.y + bb.height carries any
49
- // empty band between y=0 and the glyph top (and any extra at the
50
- // bottom of the bbox), leaving the title vertically unbalanced inside
51
- // the container's symmetric top/bottom padding.
52
- svgX = bb.x;
53
- svgY = bb.y;
54
- svgW = Math.ceil(bb.width);
55
- svgH = Math.ceil(bb.height);
56
- }
57
-
58
- run(() => {
59
- if (title) {
60
- tick().then(() => { measure(); syncFilter(); });
61
- }
62
- });
63
-
64
- onMount(() => {
65
- measure();
66
- syncFilter();
67
- // CSS-var edits (font-size/family/weight) change the rendered bbox but
68
- // never change the `title` prop — so re-measure on every style mutation
69
- // alongside the filter sync.
70
- const obs = new MutationObserver(() => { measure(); syncFilter(); });
71
- obs.observe(document.documentElement, { attributes: true, attributeFilter: ['style'] });
72
- return () => obs.disconnect();
73
- });
74
- </script>
75
-
76
- <div class="section-divider variant-{variant}">
77
- <svg
78
- bind:this={svgEl}
79
- class="divider-label"
80
- width={svgW || undefined}
81
- height={svgH || undefined}
82
- viewBox={svgW && svgH ? `${svgX} ${svgY} ${svgW} ${svgH}` : undefined}
83
- aria-label={title}
84
- role="img"
85
- >
86
- <defs>
87
- <filter id={filterId} x="-50%" y="-50%" width="200%" height="200%">
88
- <feMorphology in="SourceAlpha" operator="dilate" radius={outlineRadius} result="dilated" />
89
- <feFlood flood-color={outlineColor} result="color" />
90
- <feComposite in="color" in2="dilated" operator="in" result="outline" />
91
- <feComposite in="SourceGraphic" in2="outline" operator="over" />
92
- </filter>
93
- </defs>
94
- <text
95
- bind:this={svgTextEl}
96
- x="0"
97
- y="0"
98
- dominant-baseline="hanging"
99
- filter="url(#{filterId})"
100
- >{title}</text>
101
- </svg>
102
- {#if description}
103
- <p class="divider-description">{description}</p>
104
- {/if}
105
- </div>
106
-
107
- <style>
108
- /* Per-variant slots. Properties the editor links across variants
109
- (typography, padding, outline, radius) ship with identical defaults so
110
- they read as one linked group out of the box; gradient angle, stop
111
- colors, and stop positions are authored per variant and are not linked. */
112
- :global(:root) {
113
- /* Canvas */
114
- --sectiondivider-canvas-padding: var(--space-16);
115
- --sectiondivider-canvas-title: var(--text-primary);
116
- --sectiondivider-canvas-title-font-family: var(--font-display);
117
- --sectiondivider-canvas-title-font-size: var(--font-size-5xl);
118
- --sectiondivider-canvas-title-font-weight: var(--font-weight-normal);
119
- --sectiondivider-canvas-title-line-height: var(--line-height-xs);
120
- --sectiondivider-canvas-title-border-width: var(--border-width-4);
121
- --sectiondivider-canvas-title-stroke-color: var(--surface-canvas-lowest);
122
- /* Title stroke defaults intentionally diverge per variant — the property
123
- is linkable but ships unlinked, with each variant matching its own
124
- surface-lowest so stroke + gradient read as one family. */
125
- --sectiondivider-canvas-description: var(--text-secondary);
126
- --sectiondivider-canvas-description-font-family: var(--font-sans);
127
- --sectiondivider-canvas-description-font-size: var(--font-size-md);
128
- --sectiondivider-canvas-description-font-weight: var(--font-weight-normal);
129
- --sectiondivider-canvas-description-line-height: var(--line-height-md);
130
- --sectiondivider-canvas-gradient-angle: var(--gradient-angle-diagonal);
131
- --sectiondivider-canvas-gradient-stop-1-color: var(--surface-canvas-highest);
132
- --sectiondivider-canvas-gradient-stop-1-position: var(--gradient-stop-start);
133
- --sectiondivider-canvas-gradient-stop-2-color: var(--surface-canvas-higher);
134
- --sectiondivider-canvas-gradient-stop-2-position: var(--gradient-stop-mid);
135
- --sectiondivider-canvas-gradient-stop-3-color: var(--surface-canvas);
136
- --sectiondivider-canvas-gradient-stop-3-position: var(--gradient-stop-end);
137
- --sectiondivider-canvas-radius: var(--radius-lg);
138
- --sectiondivider-canvas-border: var(--color-transparent);
139
- --sectiondivider-canvas-border-width: var(--border-width-0);
140
- --sectiondivider-canvas-shadow: var(--shadow-none);
141
-
142
- /* Neutral */
143
- --sectiondivider-neutral-padding: var(--space-16);
144
- --sectiondivider-neutral-title: var(--text-primary);
145
- --sectiondivider-neutral-title-font-family: var(--font-display);
146
- --sectiondivider-neutral-title-font-size: var(--font-size-5xl);
147
- --sectiondivider-neutral-title-font-weight: var(--font-weight-normal);
148
- --sectiondivider-neutral-title-line-height: var(--line-height-xs);
149
- --sectiondivider-neutral-title-border-width: var(--border-width-4);
150
- --sectiondivider-neutral-title-stroke-color: var(--surface-neutral-lowest);
151
- --sectiondivider-neutral-description: var(--text-secondary);
152
- --sectiondivider-neutral-description-font-family: var(--font-sans);
153
- --sectiondivider-neutral-description-font-size: var(--font-size-md);
154
- --sectiondivider-neutral-description-font-weight: var(--font-weight-normal);
155
- --sectiondivider-neutral-description-line-height: var(--line-height-md);
156
- --sectiondivider-neutral-gradient-angle: var(--gradient-angle-diagonal);
157
- --sectiondivider-neutral-gradient-stop-1-color: var(--surface-neutral-highest);
158
- --sectiondivider-neutral-gradient-stop-1-position: var(--gradient-stop-start);
159
- --sectiondivider-neutral-gradient-stop-2-color: var(--surface-neutral-higher);
160
- --sectiondivider-neutral-gradient-stop-2-position: var(--gradient-stop-mid);
161
- --sectiondivider-neutral-gradient-stop-3-color: var(--surface-neutral);
162
- --sectiondivider-neutral-gradient-stop-3-position: var(--gradient-stop-end);
163
- --sectiondivider-neutral-radius: var(--radius-lg);
164
- --sectiondivider-neutral-border: var(--color-transparent);
165
- --sectiondivider-neutral-border-width: var(--border-width-0);
166
- --sectiondivider-neutral-shadow: var(--shadow-none);
167
-
168
- /* Alternate */
169
- --sectiondivider-alternate-padding: var(--space-16);
170
- --sectiondivider-alternate-title: var(--text-primary);
171
- --sectiondivider-alternate-title-font-family: var(--font-display);
172
- --sectiondivider-alternate-title-font-size: var(--font-size-5xl);
173
- --sectiondivider-alternate-title-font-weight: var(--font-weight-normal);
174
- --sectiondivider-alternate-title-line-height: var(--line-height-xs);
175
- --sectiondivider-alternate-title-border-width: var(--border-width-4);
176
- --sectiondivider-alternate-title-stroke-color: var(--surface-alternate-lowest);
177
- --sectiondivider-alternate-description: var(--text-secondary);
178
- --sectiondivider-alternate-description-font-family: var(--font-sans);
179
- --sectiondivider-alternate-description-font-size: var(--font-size-md);
180
- --sectiondivider-alternate-description-font-weight: var(--font-weight-normal);
181
- --sectiondivider-alternate-description-line-height: var(--line-height-md);
182
- --sectiondivider-alternate-gradient-angle: var(--gradient-angle-diagonal);
183
- --sectiondivider-alternate-gradient-stop-1-color: var(--surface-alternate-highest);
184
- --sectiondivider-alternate-gradient-stop-1-position: var(--gradient-stop-start);
185
- --sectiondivider-alternate-gradient-stop-2-color: var(--surface-alternate-higher);
186
- --sectiondivider-alternate-gradient-stop-2-position: var(--gradient-stop-mid);
187
- --sectiondivider-alternate-gradient-stop-3-color: var(--surface-alternate);
188
- --sectiondivider-alternate-gradient-stop-3-position: var(--gradient-stop-end);
189
- --sectiondivider-alternate-radius: var(--radius-lg);
190
- --sectiondivider-alternate-border: var(--color-transparent);
191
- --sectiondivider-alternate-border-width: var(--border-width-0);
192
- --sectiondivider-alternate-shadow: var(--shadow-none);
193
-
194
- /* Primary */
195
- --sectiondivider-primary-padding: var(--space-16);
196
- --sectiondivider-primary-title: var(--text-primary);
197
- --sectiondivider-primary-title-font-family: var(--font-display);
198
- --sectiondivider-primary-title-font-size: var(--font-size-5xl);
199
- --sectiondivider-primary-title-font-weight: var(--font-weight-normal);
200
- --sectiondivider-primary-title-line-height: var(--line-height-xs);
201
- --sectiondivider-primary-title-border-width: var(--border-width-4);
202
- --sectiondivider-primary-title-stroke-color: var(--surface-brand-lowest);
203
- --sectiondivider-primary-description: var(--text-secondary);
204
- --sectiondivider-primary-description-font-family: var(--font-sans);
205
- --sectiondivider-primary-description-font-size: var(--font-size-md);
206
- --sectiondivider-primary-description-font-weight: var(--font-weight-normal);
207
- --sectiondivider-primary-description-line-height: var(--line-height-md);
208
- --sectiondivider-primary-gradient-angle: var(--gradient-angle-diagonal);
209
- --sectiondivider-primary-gradient-stop-1-color: var(--surface-brand-highest);
210
- --sectiondivider-primary-gradient-stop-1-position: var(--gradient-stop-start);
211
- --sectiondivider-primary-gradient-stop-2-color: var(--surface-brand-higher);
212
- --sectiondivider-primary-gradient-stop-2-position: var(--gradient-stop-mid);
213
- --sectiondivider-primary-gradient-stop-3-color: var(--surface-brand);
214
- --sectiondivider-primary-gradient-stop-3-position: var(--gradient-stop-end);
215
- --sectiondivider-primary-radius: var(--radius-lg);
216
- --sectiondivider-primary-border: var(--color-transparent);
217
- --sectiondivider-primary-border-width: var(--border-width-0);
218
- --sectiondivider-primary-shadow: var(--shadow-none);
219
-
220
- /* Accent */
221
- --sectiondivider-accent-padding: var(--space-16);
222
- --sectiondivider-accent-title: var(--text-primary);
223
- --sectiondivider-accent-title-font-family: var(--font-display);
224
- --sectiondivider-accent-title-font-size: var(--font-size-5xl);
225
- --sectiondivider-accent-title-font-weight: var(--font-weight-normal);
226
- --sectiondivider-accent-title-line-height: var(--line-height-xs);
227
- --sectiondivider-accent-title-border-width: var(--border-width-4);
228
- --sectiondivider-accent-title-stroke-color: var(--surface-accent-lowest);
229
- --sectiondivider-accent-description: var(--text-secondary);
230
- --sectiondivider-accent-description-font-family: var(--font-sans);
231
- --sectiondivider-accent-description-font-size: var(--font-size-md);
232
- --sectiondivider-accent-description-font-weight: var(--font-weight-normal);
233
- --sectiondivider-accent-description-line-height: var(--line-height-md);
234
- --sectiondivider-accent-gradient-angle: var(--gradient-angle-diagonal);
235
- --sectiondivider-accent-gradient-stop-1-color: var(--surface-accent-highest);
236
- --sectiondivider-accent-gradient-stop-1-position: var(--gradient-stop-start);
237
- --sectiondivider-accent-gradient-stop-2-color: var(--surface-accent-higher);
238
- --sectiondivider-accent-gradient-stop-2-position: var(--gradient-stop-mid);
239
- --sectiondivider-accent-gradient-stop-3-color: var(--surface-accent);
240
- --sectiondivider-accent-gradient-stop-3-position: var(--gradient-stop-end);
241
- --sectiondivider-accent-radius: var(--radius-lg);
242
- --sectiondivider-accent-border: var(--color-transparent);
243
- --sectiondivider-accent-border-width: var(--border-width-0);
244
- --sectiondivider-accent-shadow: var(--shadow-none);
245
-
246
- /* Special */
247
- --sectiondivider-special-padding: var(--space-16);
248
- --sectiondivider-special-title: var(--text-primary);
249
- --sectiondivider-special-title-font-family: var(--font-display);
250
- --sectiondivider-special-title-font-size: var(--font-size-5xl);
251
- --sectiondivider-special-title-font-weight: var(--font-weight-normal);
252
- --sectiondivider-special-title-line-height: var(--line-height-xs);
253
- --sectiondivider-special-title-border-width: var(--border-width-4);
254
- --sectiondivider-special-title-stroke-color: var(--surface-special-lowest);
255
- --sectiondivider-special-description: var(--text-secondary);
256
- --sectiondivider-special-description-font-family: var(--font-sans);
257
- --sectiondivider-special-description-font-size: var(--font-size-md);
258
- --sectiondivider-special-description-font-weight: var(--font-weight-normal);
259
- --sectiondivider-special-description-line-height: var(--line-height-md);
260
- --sectiondivider-special-gradient-angle: var(--gradient-angle-diagonal);
261
- --sectiondivider-special-gradient-stop-1-color: var(--surface-special-highest);
262
- --sectiondivider-special-gradient-stop-1-position: var(--gradient-stop-start);
263
- --sectiondivider-special-gradient-stop-2-color: var(--surface-special-higher);
264
- --sectiondivider-special-gradient-stop-2-position: var(--gradient-stop-mid);
265
- --sectiondivider-special-gradient-stop-3-color: var(--surface-special);
266
- --sectiondivider-special-gradient-stop-3-position: var(--gradient-stop-end);
267
- --sectiondivider-special-radius: var(--radius-lg);
268
- --sectiondivider-special-border: var(--color-transparent);
269
- --sectiondivider-special-border-width: var(--border-width-0);
270
- --sectiondivider-special-shadow: var(--shadow-none);
271
- }
272
-
273
- .section-divider {
274
- margin: var(--space-24) 0;
275
- padding: var(--_divider-padding) calc(var(--_divider-padding) * 1.5);
276
- border-radius: var(--_divider-radius);
277
- border: var(--_divider-border-width) solid var(--_divider-border);
278
- box-shadow: var(--_divider-shadow);
279
- background: linear-gradient(
280
- var(--_divider-gradient-angle),
281
- var(--_divider-stop-1-color) var(--_divider-stop-1-position),
282
- var(--_divider-stop-2-color) var(--_divider-stop-2-position),
283
- var(--_divider-stop-3-color) var(--_divider-stop-3-position)
284
- );
285
- }
286
-
287
- /* Each variant class collapses its per-variant slots onto one set of
288
- internal `--_divider-*` vars; the rest of the styles only consume those,
289
- so adding a variant means adding a class and a :root block. */
290
- .variant-canvas {
291
- --_divider-padding: var(--sectiondivider-canvas-padding);
292
- --_divider-radius: var(--sectiondivider-canvas-radius);
293
- --_divider-border: var(--sectiondivider-canvas-border);
294
- --_divider-border-width: var(--sectiondivider-canvas-border-width);
295
- --_divider-shadow: var(--sectiondivider-canvas-shadow);
296
- --_divider-gradient-angle: var(--sectiondivider-canvas-gradient-angle);
297
- --_divider-stop-1-color: var(--sectiondivider-canvas-gradient-stop-1-color);
298
- --_divider-stop-1-position: var(--sectiondivider-canvas-gradient-stop-1-position);
299
- --_divider-stop-2-color: var(--sectiondivider-canvas-gradient-stop-2-color);
300
- --_divider-stop-2-position: var(--sectiondivider-canvas-gradient-stop-2-position);
301
- --_divider-stop-3-color: var(--sectiondivider-canvas-gradient-stop-3-color);
302
- --_divider-stop-3-position: var(--sectiondivider-canvas-gradient-stop-3-position);
303
- --_divider-title: var(--sectiondivider-canvas-title);
304
- --_divider-title-font-family: var(--sectiondivider-canvas-title-font-family);
305
- --_divider-title-font-size: var(--sectiondivider-canvas-title-font-size);
306
- --_divider-title-font-weight: var(--sectiondivider-canvas-title-font-weight);
307
- --_divider-title-line-height: var(--sectiondivider-canvas-title-line-height);
308
- --_divider-title-border-width: var(--sectiondivider-canvas-title-border-width);
309
- --_divider-title-stroke-color: var(--sectiondivider-canvas-title-stroke-color);
310
- --_divider-description: var(--sectiondivider-canvas-description);
311
- --_divider-description-font-family: var(--sectiondivider-canvas-description-font-family);
312
- --_divider-description-font-size: var(--sectiondivider-canvas-description-font-size);
313
- --_divider-description-font-weight: var(--sectiondivider-canvas-description-font-weight);
314
- --_divider-description-line-height: var(--sectiondivider-canvas-description-line-height);
315
- }
316
-
317
- .variant-neutral {
318
- --_divider-padding: var(--sectiondivider-neutral-padding);
319
- --_divider-radius: var(--sectiondivider-neutral-radius);
320
- --_divider-border: var(--sectiondivider-neutral-border);
321
- --_divider-border-width: var(--sectiondivider-neutral-border-width);
322
- --_divider-shadow: var(--sectiondivider-neutral-shadow);
323
- --_divider-gradient-angle: var(--sectiondivider-neutral-gradient-angle);
324
- --_divider-stop-1-color: var(--sectiondivider-neutral-gradient-stop-1-color);
325
- --_divider-stop-1-position: var(--sectiondivider-neutral-gradient-stop-1-position);
326
- --_divider-stop-2-color: var(--sectiondivider-neutral-gradient-stop-2-color);
327
- --_divider-stop-2-position: var(--sectiondivider-neutral-gradient-stop-2-position);
328
- --_divider-stop-3-color: var(--sectiondivider-neutral-gradient-stop-3-color);
329
- --_divider-stop-3-position: var(--sectiondivider-neutral-gradient-stop-3-position);
330
- --_divider-title: var(--sectiondivider-neutral-title);
331
- --_divider-title-font-family: var(--sectiondivider-neutral-title-font-family);
332
- --_divider-title-font-size: var(--sectiondivider-neutral-title-font-size);
333
- --_divider-title-font-weight: var(--sectiondivider-neutral-title-font-weight);
334
- --_divider-title-line-height: var(--sectiondivider-neutral-title-line-height);
335
- --_divider-title-border-width: var(--sectiondivider-neutral-title-border-width);
336
- --_divider-title-stroke-color: var(--sectiondivider-neutral-title-stroke-color);
337
- --_divider-description: var(--sectiondivider-neutral-description);
338
- --_divider-description-font-family: var(--sectiondivider-neutral-description-font-family);
339
- --_divider-description-font-size: var(--sectiondivider-neutral-description-font-size);
340
- --_divider-description-font-weight: var(--sectiondivider-neutral-description-font-weight);
341
- --_divider-description-line-height: var(--sectiondivider-neutral-description-line-height);
342
- }
343
-
344
- .variant-alternate {
345
- --_divider-padding: var(--sectiondivider-alternate-padding);
346
- --_divider-radius: var(--sectiondivider-alternate-radius);
347
- --_divider-border: var(--sectiondivider-alternate-border);
348
- --_divider-border-width: var(--sectiondivider-alternate-border-width);
349
- --_divider-shadow: var(--sectiondivider-alternate-shadow);
350
- --_divider-gradient-angle: var(--sectiondivider-alternate-gradient-angle);
351
- --_divider-stop-1-color: var(--sectiondivider-alternate-gradient-stop-1-color);
352
- --_divider-stop-1-position: var(--sectiondivider-alternate-gradient-stop-1-position);
353
- --_divider-stop-2-color: var(--sectiondivider-alternate-gradient-stop-2-color);
354
- --_divider-stop-2-position: var(--sectiondivider-alternate-gradient-stop-2-position);
355
- --_divider-stop-3-color: var(--sectiondivider-alternate-gradient-stop-3-color);
356
- --_divider-stop-3-position: var(--sectiondivider-alternate-gradient-stop-3-position);
357
- --_divider-title: var(--sectiondivider-alternate-title);
358
- --_divider-title-font-family: var(--sectiondivider-alternate-title-font-family);
359
- --_divider-title-font-size: var(--sectiondivider-alternate-title-font-size);
360
- --_divider-title-font-weight: var(--sectiondivider-alternate-title-font-weight);
361
- --_divider-title-line-height: var(--sectiondivider-alternate-title-line-height);
362
- --_divider-title-border-width: var(--sectiondivider-alternate-title-border-width);
363
- --_divider-title-stroke-color: var(--sectiondivider-alternate-title-stroke-color);
364
- --_divider-description: var(--sectiondivider-alternate-description);
365
- --_divider-description-font-family: var(--sectiondivider-alternate-description-font-family);
366
- --_divider-description-font-size: var(--sectiondivider-alternate-description-font-size);
367
- --_divider-description-font-weight: var(--sectiondivider-alternate-description-font-weight);
368
- --_divider-description-line-height: var(--sectiondivider-alternate-description-line-height);
369
- }
370
-
371
- .variant-primary {
372
- --_divider-padding: var(--sectiondivider-primary-padding);
373
- --_divider-radius: var(--sectiondivider-primary-radius);
374
- --_divider-border: var(--sectiondivider-primary-border);
375
- --_divider-border-width: var(--sectiondivider-primary-border-width);
376
- --_divider-shadow: var(--sectiondivider-primary-shadow);
377
- --_divider-gradient-angle: var(--sectiondivider-primary-gradient-angle);
378
- --_divider-stop-1-color: var(--sectiondivider-primary-gradient-stop-1-color);
379
- --_divider-stop-1-position: var(--sectiondivider-primary-gradient-stop-1-position);
380
- --_divider-stop-2-color: var(--sectiondivider-primary-gradient-stop-2-color);
381
- --_divider-stop-2-position: var(--sectiondivider-primary-gradient-stop-2-position);
382
- --_divider-stop-3-color: var(--sectiondivider-primary-gradient-stop-3-color);
383
- --_divider-stop-3-position: var(--sectiondivider-primary-gradient-stop-3-position);
384
- --_divider-title: var(--sectiondivider-primary-title);
385
- --_divider-title-font-family: var(--sectiondivider-primary-title-font-family);
386
- --_divider-title-font-size: var(--sectiondivider-primary-title-font-size);
387
- --_divider-title-font-weight: var(--sectiondivider-primary-title-font-weight);
388
- --_divider-title-line-height: var(--sectiondivider-primary-title-line-height);
389
- --_divider-title-border-width: var(--sectiondivider-primary-title-border-width);
390
- --_divider-title-stroke-color: var(--sectiondivider-primary-title-stroke-color);
391
- --_divider-description: var(--sectiondivider-primary-description);
392
- --_divider-description-font-family: var(--sectiondivider-primary-description-font-family);
393
- --_divider-description-font-size: var(--sectiondivider-primary-description-font-size);
394
- --_divider-description-font-weight: var(--sectiondivider-primary-description-font-weight);
395
- --_divider-description-line-height: var(--sectiondivider-primary-description-line-height);
396
- }
397
-
398
- .variant-accent {
399
- --_divider-padding: var(--sectiondivider-accent-padding);
400
- --_divider-radius: var(--sectiondivider-accent-radius);
401
- --_divider-border: var(--sectiondivider-accent-border);
402
- --_divider-border-width: var(--sectiondivider-accent-border-width);
403
- --_divider-shadow: var(--sectiondivider-accent-shadow);
404
- --_divider-gradient-angle: var(--sectiondivider-accent-gradient-angle);
405
- --_divider-stop-1-color: var(--sectiondivider-accent-gradient-stop-1-color);
406
- --_divider-stop-1-position: var(--sectiondivider-accent-gradient-stop-1-position);
407
- --_divider-stop-2-color: var(--sectiondivider-accent-gradient-stop-2-color);
408
- --_divider-stop-2-position: var(--sectiondivider-accent-gradient-stop-2-position);
409
- --_divider-stop-3-color: var(--sectiondivider-accent-gradient-stop-3-color);
410
- --_divider-stop-3-position: var(--sectiondivider-accent-gradient-stop-3-position);
411
- --_divider-title: var(--sectiondivider-accent-title);
412
- --_divider-title-font-family: var(--sectiondivider-accent-title-font-family);
413
- --_divider-title-font-size: var(--sectiondivider-accent-title-font-size);
414
- --_divider-title-font-weight: var(--sectiondivider-accent-title-font-weight);
415
- --_divider-title-line-height: var(--sectiondivider-accent-title-line-height);
416
- --_divider-title-border-width: var(--sectiondivider-accent-title-border-width);
417
- --_divider-title-stroke-color: var(--sectiondivider-accent-title-stroke-color);
418
- --_divider-description: var(--sectiondivider-accent-description);
419
- --_divider-description-font-family: var(--sectiondivider-accent-description-font-family);
420
- --_divider-description-font-size: var(--sectiondivider-accent-description-font-size);
421
- --_divider-description-font-weight: var(--sectiondivider-accent-description-font-weight);
422
- --_divider-description-line-height: var(--sectiondivider-accent-description-line-height);
423
- }
424
-
425
- .variant-special {
426
- --_divider-padding: var(--sectiondivider-special-padding);
427
- --_divider-radius: var(--sectiondivider-special-radius);
428
- --_divider-border: var(--sectiondivider-special-border);
429
- --_divider-border-width: var(--sectiondivider-special-border-width);
430
- --_divider-shadow: var(--sectiondivider-special-shadow);
431
- --_divider-gradient-angle: var(--sectiondivider-special-gradient-angle);
432
- --_divider-stop-1-color: var(--sectiondivider-special-gradient-stop-1-color);
433
- --_divider-stop-1-position: var(--sectiondivider-special-gradient-stop-1-position);
434
- --_divider-stop-2-color: var(--sectiondivider-special-gradient-stop-2-color);
435
- --_divider-stop-2-position: var(--sectiondivider-special-gradient-stop-2-position);
436
- --_divider-stop-3-color: var(--sectiondivider-special-gradient-stop-3-color);
437
- --_divider-stop-3-position: var(--sectiondivider-special-gradient-stop-3-position);
438
- --_divider-title: var(--sectiondivider-special-title);
439
- --_divider-title-font-family: var(--sectiondivider-special-title-font-family);
440
- --_divider-title-font-size: var(--sectiondivider-special-title-font-size);
441
- --_divider-title-font-weight: var(--sectiondivider-special-title-font-weight);
442
- --_divider-title-line-height: var(--sectiondivider-special-title-line-height);
443
- --_divider-title-border-width: var(--sectiondivider-special-title-border-width);
444
- --_divider-title-stroke-color: var(--sectiondivider-special-title-stroke-color);
445
- --_divider-description: var(--sectiondivider-special-description);
446
- --_divider-description-font-family: var(--sectiondivider-special-description-font-family);
447
- --_divider-description-font-size: var(--sectiondivider-special-description-font-size);
448
- --_divider-description-font-weight: var(--sectiondivider-special-description-font-weight);
449
- --_divider-description-line-height: var(--sectiondivider-special-description-line-height);
450
- }
451
-
452
- /* Title rendered as a single <text> through a feMorphology dilate + flood +
453
- composite filter. Dilating the alpha treats all glyphs as one combined
454
- shape, so neighbor-glyph overlaps (CQ, AC etc.) merge into a single
455
- outline instead of double-stacking. Filter values are pushed onto
456
- <feMorphology>/<feFlood> from JS — those attrs can't read CSS vars. */
457
- svg.divider-label {
458
- display: block;
459
- overflow: visible;
460
- color: var(--_divider-title);
461
- }
462
- svg.divider-label text {
463
- font-family: var(--_divider-title-font-family);
464
- font-size: var(--_divider-title-font-size);
465
- font-weight: var(--_divider-title-font-weight);
466
- fill: currentColor;
467
- }
468
-
469
- .divider-description {
470
- margin: var(--space-4) 0 0;
471
- font-family: var(--_divider-description-font-family);
472
- font-size: var(--_divider-description-font-size);
473
- font-weight: var(--_divider-description-font-weight);
474
- line-height: var(--_divider-description-line-height);
475
- color: var(--_divider-description);
476
- }
477
-
478
- @media (max-width: 600px) {
479
- .section-divider {
480
- padding: var(--space-12) var(--space-16);
481
- }
482
- }
483
- </style>
@@ -1,75 +0,0 @@
1
- {
2
- "updatedAt": "2026-04-17",
3
- "note": "Curated list of popular Google Fonts. Regenerate via scripts/fetch-google-fonts.ts to pull the full catalog.",
4
- "fonts": [
5
- { "family": "Inter", "category": "sans-serif", "variants": [100, 200, 300, 400, 500, 600, 700, 800, 900] },
6
- { "family": "Roboto", "category": "sans-serif", "variants": [100, 300, 400, 500, 700, 900] },
7
- { "family": "Open Sans", "category": "sans-serif", "variants": [300, 400, 500, 600, 700, 800] },
8
- { "family": "Lato", "category": "sans-serif", "variants": [100, 300, 400, 700, 900] },
9
- { "family": "Montserrat", "category": "sans-serif", "variants": [100, 200, 300, 400, 500, 600, 700, 800, 900] },
10
- { "family": "Poppins", "category": "sans-serif", "variants": [100, 200, 300, 400, 500, 600, 700, 800, 900] },
11
- { "family": "Raleway", "category": "sans-serif", "variants": [100, 200, 300, 400, 500, 600, 700, 800, 900] },
12
- { "family": "Nunito", "category": "sans-serif", "variants": [200, 300, 400, 500, 600, 700, 800, 900] },
13
- { "family": "Nunito Sans", "category": "sans-serif", "variants": [200, 300, 400, 600, 700, 800, 900] },
14
- { "family": "Work Sans", "category": "sans-serif", "variants": [100, 200, 300, 400, 500, 600, 700, 800, 900] },
15
- { "family": "Fira Sans", "category": "sans-serif", "variants": [100, 200, 300, 400, 500, 600, 700, 800, 900] },
16
- { "family": "Source Sans 3", "category": "sans-serif", "variants": [200, 300, 400, 500, 600, 700, 800, 900] },
17
- { "family": "DM Sans", "category": "sans-serif", "variants": [100, 200, 300, 400, 500, 600, 700, 800, 900] },
18
- { "family": "Manrope", "category": "sans-serif", "variants": [200, 300, 400, 500, 600, 700, 800] },
19
- { "family": "Space Grotesk", "category": "sans-serif", "variants": [300, 400, 500, 600, 700] },
20
- { "family": "Plus Jakarta Sans", "category": "sans-serif", "variants": [200, 300, 400, 500, 600, 700, 800] },
21
- { "family": "Outfit", "category": "sans-serif", "variants": [100, 200, 300, 400, 500, 600, 700, 800, 900] },
22
- { "family": "Rubik", "category": "sans-serif", "variants": [300, 400, 500, 600, 700, 800, 900] },
23
- { "family": "Mulish", "category": "sans-serif", "variants": [200, 300, 400, 500, 600, 700, 800, 900, 1000] },
24
- { "family": "Figtree", "category": "sans-serif", "variants": [300, 400, 500, 600, 700, 800, 900] },
25
- { "family": "Ubuntu", "category": "sans-serif", "variants": [300, 400, 500, 700] },
26
- { "family": "Barlow", "category": "sans-serif", "variants": [100, 200, 300, 400, 500, 600, 700, 800, 900] },
27
- { "family": "Karla", "category": "sans-serif", "variants": [200, 300, 400, 500, 600, 700, 800] },
28
- { "family": "Signika", "category": "sans-serif", "variants": [300, 400, 500, 600, 700] },
29
- { "family": "Oswald", "category": "sans-serif", "variants": [200, 300, 400, 500, 600, 700] },
30
- { "family": "PT Sans", "category": "sans-serif", "variants": [400, 700] },
31
- { "family": "Archivo", "category": "sans-serif", "variants": [100, 200, 300, 400, 500, 600, 700, 800, 900] },
32
- { "family": "Hind", "category": "sans-serif", "variants": [300, 400, 500, 600, 700] },
33
- { "family": "Noto Sans", "category": "sans-serif", "variants": [100, 200, 300, 400, 500, 600, 700, 800, 900] },
34
- { "family": "IBM Plex Sans", "category": "sans-serif", "variants": [100, 200, 300, 400, 500, 600, 700] },
35
- { "family": "Faculty Glyphic", "category": "sans-serif", "variants": [400] },
36
-
37
- { "family": "Playfair Display", "category": "serif", "variants": [400, 500, 600, 700, 800, 900] },
38
- { "family": "Merriweather", "category": "serif", "variants": [300, 400, 700, 900] },
39
- { "family": "Lora", "category": "serif", "variants": [400, 500, 600, 700] },
40
- { "family": "PT Serif", "category": "serif", "variants": [400, 700] },
41
- { "family": "Source Serif 4", "category": "serif", "variants": [200, 300, 400, 500, 600, 700, 800, 900] },
42
- { "family": "Crimson Pro", "category": "serif", "variants": [200, 300, 400, 500, 600, 700, 800, 900] },
43
- { "family": "Cormorant Garamond", "category": "serif", "variants": [300, 400, 500, 600, 700] },
44
- { "family": "Libre Baskerville", "category": "serif", "variants": [400, 700] },
45
- { "family": "EB Garamond", "category": "serif", "variants": [400, 500, 600, 700, 800] },
46
- { "family": "Domine", "category": "serif", "variants": [400, 500, 600, 700] },
47
- { "family": "Bitter", "category": "serif", "variants": [100, 200, 300, 400, 500, 600, 700, 800, 900] },
48
- { "family": "Noto Serif", "category": "serif", "variants": [100, 200, 300, 400, 500, 600, 700, 800, 900] },
49
- { "family": "Spectral", "category": "serif", "variants": [200, 300, 400, 500, 600, 700, 800] },
50
- { "family": "Cardo", "category": "serif", "variants": [400, 700] },
51
- { "family": "Fraunces", "category": "serif", "variants": [100, 200, 300, 400, 500, 600, 700, 800, 900] },
52
- { "family": "DM Serif Display", "category": "serif", "variants": [400] },
53
- { "family": "DM Serif Text", "category": "serif", "variants": [400] },
54
-
55
- { "family": "Fira Code", "category": "monospace", "variants": [300, 400, 500, 600, 700] },
56
- { "family": "JetBrains Mono", "category": "monospace", "variants": [100, 200, 300, 400, 500, 600, 700, 800] },
57
- { "family": "Source Code Pro", "category": "monospace", "variants": [200, 300, 400, 500, 600, 700, 800, 900] },
58
- { "family": "IBM Plex Mono", "category": "monospace", "variants": [100, 200, 300, 400, 500, 600, 700] },
59
- { "family": "Inconsolata", "category": "monospace", "variants": [200, 300, 400, 500, 600, 700, 800, 900] },
60
- { "family": "Roboto Mono", "category": "monospace", "variants": [100, 200, 300, 400, 500, 600, 700] },
61
- { "family": "Space Mono", "category": "monospace", "variants": [400, 700] },
62
- { "family": "DM Mono", "category": "monospace", "variants": [300, 400, 500] },
63
-
64
- { "family": "Bebas Neue", "category": "display", "variants": [400] },
65
- { "family": "Abril Fatface", "category": "display", "variants": [400] },
66
- { "family": "Archivo Black", "category": "display", "variants": [400] },
67
- { "family": "Alfa Slab One", "category": "display", "variants": [400] },
68
- { "family": "Righteous", "category": "display", "variants": [400] },
69
- { "family": "Anton", "category": "display", "variants": [400] },
70
- { "family": "Permanent Marker", "category": "handwriting", "variants": [400] },
71
- { "family": "Caveat", "category": "handwriting", "variants": [400, 500, 600, 700] },
72
- { "family": "Dancing Script", "category": "handwriting", "variants": [400, 500, 600, 700] },
73
- { "family": "Pacifico", "category": "handwriting", "variants": [400] }
74
- ]
75
- }
package/src/lib/index.ts DELETED
@@ -1,68 +0,0 @@
1
- export { default as LiveEditorOverlay } from './LiveEditorOverlay.svelte';
2
- export type { NavLink } from './navLinkTypes';
3
- export { default as ColumnsOverlay } from './ColumnsOverlay.svelte';
4
-
5
- export { columnsVisible, toggleColumns, init as initColumnsOverlay } from './columnsOverlay';
6
- export { configureEditor, storageKey } from './editorConfig';
7
- export { activeFileName } from './editorConfigStore';
8
- export { init as initRouter, route, navigate } from './router';
9
- export { init as initCssVarSync } from './cssVarSync';
10
- export { init as initEditorStore } from './editorStore';
11
-
12
- export { setCssVar, removeCssVar } from './cssVarSync';
13
-
14
- export {
15
- listThemes,
16
- loadTheme,
17
- saveTheme,
18
- deleteTheme,
19
- getActiveTheme,
20
- setActiveFile,
21
- getProductionInfo,
22
- setProductionFile,
23
- sanitizeFileName,
24
- } from './themeService';
25
- export type { ProductionInfo } from './themeService';
26
-
27
- export type {
28
- PaletteConfig,
29
- Theme,
30
- ThemeMeta,
31
- GradientStyle,
32
- GradientStop,
33
- FontSource,
34
- FontSourceKind,
35
- FontFamily,
36
- FontStack,
37
- FontStackSlot,
38
- FontStackVariable,
39
- SystemCascadePreset,
40
- GenericFamily,
41
- Preset,
42
- PresetMeta,
43
- } from './themeTypes';
44
-
45
- export {
46
- listPresets,
47
- loadPreset,
48
- savePreset,
49
- deletePreset,
50
- getActivePreset,
51
- setActivePreset,
52
- applyPreset,
53
- captureCurrentAsPreset,
54
- } from './presetService';
55
- export type { ApplyPresetResult } from './presetService';
56
-
57
- export {
58
- applyFontSources,
59
- applyFontStacks,
60
- resolveFontStackValues,
61
- SYSTEM_CASCADES,
62
- } from './fontLoader';
63
- export { migrateThemeFonts, defaultFontSources, defaultFontStacks } from './fontMigration';
64
-
65
- export { hexToOklch, oklchToHex, gamutClamp } from './oklch';
66
- export type { Oklch } from './oklch';
67
-
68
- export { initializeTheme } from './themeInit';