@motion-proto/live-tokens 0.6.1 → 0.7.1

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 (212) hide show
  1. package/README.md +14 -13
  2. package/dist-plugin/index.cjs +149 -136
  3. package/dist-plugin/index.d.cts +1 -1
  4. package/dist-plugin/index.d.ts +1 -1
  5. package/dist-plugin/index.js +147 -135
  6. package/package.json +26 -41
  7. package/src/{component-editor → editor/component-editor}/BadgeEditor.svelte +8 -82
  8. package/src/{component-editor → editor/component-editor}/CalloutEditor.svelte +4 -4
  9. package/src/{component-editor → editor/component-editor}/CardEditor.svelte +28 -76
  10. package/src/{component-editor → editor/component-editor}/CollapsibleSectionEditor.svelte +3 -3
  11. package/src/{component-editor → editor/component-editor}/CornerBadgeEditor.svelte +31 -93
  12. package/src/{component-editor → editor/component-editor}/DialogEditor.svelte +60 -57
  13. package/src/editor/component-editor/ImageEditor.svelte +30 -0
  14. package/src/{component-editor → editor/component-editor}/InlineEditActionsEditor.svelte +6 -4
  15. package/src/editor/component-editor/MenuSelectEditor.svelte +160 -0
  16. package/src/{component-editor → editor/component-editor}/NotificationEditor.svelte +64 -37
  17. package/src/{component-editor → editor/component-editor}/ProgressBarEditor.svelte +5 -4
  18. package/src/{component-editor → editor/component-editor}/RadioButtonEditor.svelte +3 -3
  19. package/src/{component-editor → editor/component-editor}/SectionDividerEditor.svelte +57 -84
  20. package/src/{component-editor → editor/component-editor}/SegmentedControlEditor.svelte +2 -2
  21. package/src/{component-editor → editor/component-editor}/StandardButtonsEditor.svelte +16 -20
  22. package/src/{component-editor → editor/component-editor}/TabBarEditor.svelte +9 -14
  23. package/src/{component-editor → editor/component-editor}/TableEditor.svelte +9 -18
  24. package/src/{component-editor → editor/component-editor}/TooltipEditor.svelte +11 -47
  25. package/src/{component-editor → editor/component-editor}/registry.ts +28 -18
  26. package/src/{component-editor → editor/component-editor}/scaffolding/AngleDial.svelte +2 -2
  27. package/src/{component-editor → editor/component-editor}/scaffolding/ComponentEditorBase.svelte +3 -51
  28. package/src/{component-editor → editor/component-editor}/scaffolding/ComponentFileManager.svelte +144 -416
  29. package/src/{component-editor → editor/component-editor}/scaffolding/ComponentFileMenu.svelte +18 -170
  30. package/src/{component-editor → editor/component-editor}/scaffolding/ComponentsTab.svelte +2 -2
  31. package/src/{component-editor → editor/component-editor}/scaffolding/CopyFromMenu.svelte +44 -4
  32. package/src/{component-editor → editor/component-editor}/scaffolding/DividerEditor.svelte +1 -1
  33. package/src/{component-editor → editor/component-editor}/scaffolding/FieldsetWrapper.svelte +1 -1
  34. package/src/{component-editor → editor/component-editor}/scaffolding/GradientCard.svelte +6 -6
  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 -11
  37. package/src/editor/component-editor/scaffolding/NonStylableConfig.svelte +38 -0
  38. package/src/{component-editor → editor/component-editor}/scaffolding/SaveAsDialog.svelte +66 -12
  39. package/src/editor/component-editor/scaffolding/ShadowBackdrop.svelte +72 -0
  40. package/src/editor/component-editor/scaffolding/ShadowBackdropControls.svelte +132 -0
  41. package/src/editor/component-editor/scaffolding/StateBlock.svelte +257 -0
  42. package/src/{component-editor → editor/component-editor}/scaffolding/TokenLayout.svelte +9 -7
  43. package/src/editor/component-editor/scaffolding/VariantGroup.svelte +644 -0
  44. package/src/{component-editor → editor/component-editor}/scaffolding/editorContext.ts +19 -9
  45. package/src/{component-editor → editor/component-editor}/scaffolding/linkedBlock.ts +2 -2
  46. package/src/{component-editor → editor/component-editor}/scaffolding/types.ts +14 -0
  47. package/src/{lib → editor/core/components}/componentConfigService.ts +2 -2
  48. package/src/{lib → editor/core/components}/componentPersist.ts +5 -5
  49. package/src/editor/core/flashStatus.ts +30 -0
  50. package/src/{lib → editor/core/fonts}/fontLoader.ts +2 -2
  51. package/src/{lib → editor/core/fonts}/fontMigration.ts +4 -4
  52. package/src/{lib → editor/core/fonts}/fontParse.ts +1 -1
  53. package/src/editor/core/manifests/manifestService.ts +116 -0
  54. package/src/{lib → editor/core/palettes}/paletteDerivation.ts +2 -2
  55. package/src/{lib → editor/core/palettes}/tokenRegistry.ts +5 -5
  56. package/src/editor/core/productionPulse.ts +37 -0
  57. package/src/{lib → editor/core/routing}/router.ts +1 -1
  58. package/src/{lib/files/versionedFileResource.ts → editor/core/storage/files/versionedFileResourceClient.ts} +8 -1
  59. package/src/{lib → editor/core/store}/editorCore.ts +24 -8
  60. package/src/{lib → editor/core/store}/editorPersistence.ts +3 -3
  61. package/src/{lib → editor/core/store}/editorRenderer.ts +2 -2
  62. package/src/{lib → editor/core/store}/editorStore.ts +17 -17
  63. package/src/{lib → editor/core/store}/editorTypes.ts +1 -1
  64. package/src/{lib → editor/core/themes}/slices/columns.ts +2 -2
  65. package/src/{lib → editor/core/themes}/slices/components.ts +2 -2
  66. package/src/{lib → editor/core/themes}/slices/fonts.ts +1 -1
  67. package/src/{lib → editor/core/themes}/slices/gradients.ts +2 -2
  68. package/src/{lib → editor/core/themes}/slices/overlays.ts +1 -1
  69. package/src/{lib → editor/core/themes}/slices/palettes.ts +1 -1
  70. package/src/{lib → editor/core/themes}/slices/shadows.ts +3 -3
  71. package/src/{lib → editor/core/themes}/themeInit.ts +6 -6
  72. package/src/{lib → editor/core/themes}/themeService.ts +6 -6
  73. package/src/{lib → editor/core/themes}/themeTypes.ts +11 -7
  74. package/src/editor/index.ts +69 -0
  75. package/src/{lib → editor/overlay}/LiveEditorOverlay.svelte +79 -125
  76. package/src/{lib → editor/overlay}/columnsOverlay.ts +2 -2
  77. package/src/{pages → editor/pages}/ComponentEditorPage.svelte +12 -12
  78. package/src/{pages → editor/pages}/Editor.svelte +4 -4
  79. package/src/{pages → editor/pages}/EditorShell.svelte +18 -36
  80. package/src/{styles → editor/styles}/ui-editor.css +41 -21
  81. package/src/{styles → editor/styles}/ui-form-controls.css +8 -8
  82. package/src/{ui → editor/ui}/BezierCurveEditor.svelte +8 -8
  83. package/src/{ui → editor/ui}/ColorEditPanel.svelte +13 -13
  84. package/src/{ui → editor/ui}/EditorViewSwitcher.svelte +8 -6
  85. package/src/editor/ui/FileLoadList.svelte +350 -0
  86. package/src/editor/ui/FilePill.svelte +80 -0
  87. package/src/{ui → editor/ui}/FontStackEditor.svelte +7 -7
  88. package/src/{ui → editor/ui}/GradientEditor.svelte +11 -11
  89. package/src/{ui → editor/ui}/GradientStopPicker.svelte +1 -1
  90. package/src/editor/ui/ManifestFileManager.svelte +371 -0
  91. package/src/{ui → editor/ui}/PaletteEditor.svelte +132 -598
  92. package/src/{ui → editor/ui}/ProjectFontsSection.svelte +102 -144
  93. package/src/{ui → editor/ui}/SurfacesTab.svelte +3 -3
  94. package/src/{ui → editor/ui}/TextTab.svelte +3 -3
  95. package/src/{ui → editor/ui}/ThemeFileManager.svelte +286 -519
  96. package/src/{ui → editor/ui}/UICopyPopover.svelte +4 -4
  97. package/src/{ui → editor/ui}/UIFontFamilySelector.svelte +6 -6
  98. package/src/{ui → editor/ui}/UIFontSizeSelector.svelte +1 -1
  99. package/src/editor/ui/UIInfoPopover.svelte +244 -0
  100. package/src/{ui → editor/ui}/UILineHeightSelector.svelte +5 -5
  101. package/src/{ui → editor/ui}/UILinkToggle.svelte +2 -2
  102. package/src/{ui → editor/ui}/UIPaddingSelector.svelte +6 -6
  103. package/src/{ui → editor/ui}/UIPaletteSelector.svelte +26 -26
  104. package/src/editor/ui/UIPillButton.svelte +138 -0
  105. package/src/{ui → editor/ui}/UIRadio.svelte +2 -2
  106. package/src/{ui → editor/ui}/UIRelinkConfirmPopover.svelte +4 -4
  107. package/src/editor/ui/UISquareButton.svelte +172 -0
  108. package/src/{ui → editor/ui}/UITokenSelector.svelte +10 -10
  109. package/src/{ui → editor/ui}/UIVariantSelector.svelte +1 -1
  110. package/src/{ui → editor/ui}/VariablesTab.svelte +31 -8
  111. package/src/{ui → editor/ui}/palette/GradientStopEditor.svelte +13 -13
  112. package/src/{ui → editor/ui}/palette/OverridesPanel.svelte +13 -13
  113. package/src/{ui → editor/ui}/palette/PaletteBase.svelte +8 -5
  114. package/src/{ui → editor/ui}/palette/paletteEditorState.ts +1 -1
  115. package/src/editor/ui/palette/paletteMath.ts +275 -0
  116. package/src/{ui → editor/ui}/sections/ColumnsSection.svelte +137 -17
  117. package/src/{ui → editor/ui}/sections/GradientsSection.svelte +7 -7
  118. package/src/{ui → editor/ui}/sections/OverlaysSection.svelte +17 -17
  119. package/src/{ui → editor/ui}/sections/ShadowsSection.svelte +22 -22
  120. package/src/{ui → editor/ui}/sections/TokenScaleTable.svelte +3 -3
  121. package/src/{components → system/components}/Badge.svelte +0 -36
  122. package/src/{components → system/components}/Card.svelte +8 -62
  123. package/src/{components → system/components}/CornerBadge.svelte +8 -24
  124. package/src/{components → system/components}/Dialog.svelte +1 -1
  125. package/src/system/components/FloatingTokenTags.css +256 -0
  126. package/src/system/components/FloatingTokenTags.svelte +592 -0
  127. package/src/{components → system/components}/InlineEditActions.svelte +6 -4
  128. package/src/system/components/MenuSelect.svelte +229 -0
  129. package/src/{components → system/components}/ProgressBar.svelte +29 -11
  130. package/src/{components → system/components}/SegmentedControl.svelte +49 -43
  131. package/src/{components → system/components}/TabBar.svelte +81 -65
  132. package/src/{components → system/components}/Table.svelte +17 -3
  133. package/src/{components → system/components}/Tooltip.svelte +6 -4
  134. package/src/system/styles/CONVENTIONS.md +178 -0
  135. package/src/{styles → system/styles}/fonts.css +6 -3
  136. package/src/{styles → system/styles}/tokens.css +149 -29
  137. package/src/component-editor/ImageEditor.svelte +0 -74
  138. package/src/component-editor/scaffolding/NonStylableConfig.svelte +0 -62
  139. package/src/component-editor/scaffolding/ShadowBackdrop.svelte +0 -37
  140. package/src/component-editor/scaffolding/ShadowBackdropControls.svelte +0 -61
  141. package/src/component-editor/scaffolding/StateBlock.svelte +0 -132
  142. package/src/component-editor/scaffolding/VariantGroup.svelte +0 -310
  143. package/src/data/google-fonts.json +0 -75
  144. package/src/lib/index.ts +0 -68
  145. package/src/lib/presetService.ts +0 -214
  146. package/src/lib/productionPulse.ts +0 -32
  147. package/src/ui/PresetFileManager.svelte +0 -1116
  148. package/src/ui/UnsavedComponentsDialog.svelte +0 -315
  149. /package/src/{styles → app}/site.css +0 -0
  150. /package/src/{component-editor → editor/component-editor}/index.ts +0 -0
  151. /package/src/{component-editor → editor/component-editor}/scaffolding/DemoHeader.svelte +0 -0
  152. /package/src/{component-editor → editor/component-editor}/scaffolding/TypeEditor.svelte +0 -0
  153. /package/src/{component-editor → editor/component-editor}/scaffolding/buildTypeGroupTokens.ts +0 -0
  154. /package/src/{component-editor → editor/component-editor}/scaffolding/componentSectionType.ts +0 -0
  155. /package/src/{component-editor → editor/component-editor}/scaffolding/componentSources.ts +0 -0
  156. /package/src/{component-editor → editor/component-editor}/scaffolding/defaultSections.ts +0 -0
  157. /package/src/{component-editor → editor/component-editor}/scaffolding/siblings.ts +0 -0
  158. /package/src/{lib → editor/core/components}/componentConfigKeys.ts +0 -0
  159. /package/src/{lib → editor/core}/cssVarSync.ts +0 -0
  160. /package/src/{lib → editor/core/palettes}/oklch.ts +0 -0
  161. /package/src/{lib → editor/core/routing}/navLinkTypes.ts +0 -0
  162. /package/src/{lib → editor/core/routing}/parentRouteStore.ts +0 -0
  163. /package/src/{lib → editor/core/storage}/storage.ts +0 -0
  164. /package/src/{lib → editor/core/store}/editorConfig.ts +0 -0
  165. /package/src/{lib → editor/core/store}/editorConfigStore.ts +0 -0
  166. /package/src/{lib → editor/core/store}/editorKeybindings.ts +0 -0
  167. /package/src/{lib → editor/core/store}/editorViewStore.ts +0 -0
  168. /package/src/{lib → editor/core/themes}/migrations/2026-04-24-component-prefix-and-suffix-renames.ts +0 -0
  169. /package/src/{lib → editor/core/themes}/migrations/2026-04-24-legacy-keys-and-bg-to-canvas.ts +0 -0
  170. /package/src/{lib → editor/core/themes}/migrations/2026-04-27-segmentedcontrol-disabled-flatten.ts +0 -0
  171. /package/src/{lib → editor/core/themes}/migrations/2026-05-08-collapsiblesection-frame-and-cleanup.ts +0 -0
  172. /package/src/{lib → editor/core/themes}/migrations/2026-05-08-collapsiblesection-variant-namespace.ts +0 -0
  173. /package/src/{lib → editor/core/themes}/migrations/2026-05-10-sectiondivider-gradient-stops.ts +0 -0
  174. /package/src/{lib → editor/core/themes}/migrations/2026-05-13-primary-to-brand.ts +0 -0
  175. /package/src/{lib → editor/core/themes}/migrations/index.ts +0 -0
  176. /package/src/{lib → editor/core/themes}/parsers/globalRootBlock.ts +0 -0
  177. /package/src/{lib → editor/core/themes}/slices/domainVars.ts +0 -0
  178. /package/src/{lib → editor/overlay}/ColumnsOverlay.svelte +0 -0
  179. /package/src/{lib → editor/overlay}/overlayState.ts +0 -0
  180. /package/src/{pages → editor/pages}/ComponentEditorPage.svelte.d.ts +0 -0
  181. /package/src/{pages → editor/pages}/Editor.svelte.d.ts +0 -0
  182. /package/src/{ui → editor/ui}/Toggle.svelte +0 -0
  183. /package/src/{ui → editor/ui}/UIDialog.svelte +0 -0
  184. /package/src/{ui → editor/ui}/UIFontWeightSelector.svelte +0 -0
  185. /package/src/{ui → editor/ui}/UIOptionItem.svelte +0 -0
  186. /package/src/{ui → editor/ui}/UIOptionList.svelte +0 -0
  187. /package/src/{ui → editor/ui}/UIRadioGroup.svelte +0 -0
  188. /package/src/{lib → editor/ui}/copyPopover.ts +0 -0
  189. /package/src/{ui → editor/ui}/curveEngine.ts +0 -0
  190. /package/src/{ui → editor/ui}/index.ts +0 -0
  191. /package/src/{ui → editor/ui}/keepInViewport.ts +0 -0
  192. /package/src/{ui → editor/ui}/palette/ScaleCurveEditor.svelte +0 -0
  193. /package/src/{lib → editor/ui}/scrollSection.ts +0 -0
  194. /package/src/{ui → editor/ui}/sections/tokenScales.ts +0 -0
  195. /package/src/{ui → editor/ui}/variantScales.ts +0 -0
  196. /package/src/{assets → system/assets}/newspaper.webp +0 -0
  197. /package/src/{assets → system/assets}/offering.webp +0 -0
  198. /package/src/{components → system/components}/Button.svelte +0 -0
  199. /package/src/{components → system/components}/Callout.svelte +0 -0
  200. /package/src/{components → system/components}/CollapsibleSection.svelte +0 -0
  201. /package/src/{components → system/components}/Image.svelte +0 -0
  202. /package/src/{components → system/components}/Notification.svelte +0 -0
  203. /package/src/{components → system/components}/RadioButton.svelte +0 -0
  204. /package/src/{components → system/components}/SectionDivider.svelte +0 -0
  205. /package/src/{components → system/components}/types.ts +0 -0
  206. /package/src/{styles → system/styles}/_padding.scss +0 -0
  207. /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-italic-latin-ext.woff2 +0 -0
  208. /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-italic-latin.woff2 +0 -0
  209. /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-roman-latin-ext.woff2 +0 -0
  210. /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-roman-latin.woff2 +0 -0
  211. /package/src/{styles → system/styles}/fonts/Manrope/Manrope-latin-ext.woff2 +0 -0
  212. /package/src/{styles → system/styles}/fonts/Manrope/Manrope-latin.woff2 +0 -0
@@ -1,8 +1,8 @@
1
- // src/vite-plugin/themeFileApi.ts
1
+ // vite-plugin/themeFileApi.ts
2
2
  import fs2 from "fs";
3
3
  import path2 from "path";
4
4
 
5
- // src/lib/parsers/globalRootBlock.ts
5
+ // src/editor/core/themes/parsers/globalRootBlock.ts
6
6
  function extractGlobalRootBody(source) {
7
7
  const re = /:global\(:root\)\s*\{([^}]*)\}/g;
8
8
  const bodies = [];
@@ -13,12 +13,12 @@ function extractGlobalRootBody(source) {
13
13
  return bodies.join("\n");
14
14
  }
15
15
 
16
- // src/lib/files/versionedFileResource.ts
16
+ // src/editor/core/storage/files/versionedFileResourceClient.ts
17
17
  function sanitizeFileName(name) {
18
18
  return name.toLowerCase().trim().replace(/\s+/g, "-").replace(/[^a-z0-9\-_]/g, "").replace(/-+/g, "-").replace(/^-|-$/g, "") || "unnamed";
19
19
  }
20
20
 
21
- // src/vite-plugin/files/versionedFileResource.ts
21
+ // vite-plugin/files/versionedFileResourceServer.ts
22
22
  import fs from "fs";
23
23
  import path from "path";
24
24
  function versionedFileResourceServer(opts) {
@@ -78,7 +78,7 @@ function versionedFileResourceServer(opts) {
78
78
  };
79
79
  }
80
80
 
81
- // src/vite-plugin/files/routeTable.ts
81
+ // vite-plugin/files/routeTable.ts
82
82
  async function dispatch(req, res, routes) {
83
83
  const url = req.url || "";
84
84
  const method = req.method || "GET";
@@ -106,15 +106,34 @@ async function dispatch(req, res, routes) {
106
106
  return false;
107
107
  }
108
108
 
109
- // src/vite-plugin/themeFileApi.ts
109
+ // vite-plugin/themeFileApi.ts
110
+ import { fileURLToPath } from "url";
111
+ var PKG_VERSION = (() => {
112
+ try {
113
+ let dir = path2.dirname(fileURLToPath(import.meta.url));
114
+ for (let i = 0; i < 4; i++) {
115
+ const p = path2.join(dir, "package.json");
116
+ if (fs2.existsSync(p)) {
117
+ const json = JSON.parse(fs2.readFileSync(p, "utf-8"));
118
+ if (json?.name === "@motion-proto/live-tokens") return json.version ?? "";
119
+ }
120
+ const up = path2.dirname(dir);
121
+ if (up === dir) break;
122
+ dir = up;
123
+ }
124
+ } catch {
125
+ }
126
+ return "";
127
+ })();
110
128
  function themeFileApi(opts) {
111
129
  const THEMES_DIR = path2.resolve(opts.themesDir);
112
130
  const CSS_PATH = path2.resolve(opts.tokensCssPath);
113
131
  const FONTS_CSS_PATH = opts.fontsCssPath ? path2.resolve(opts.fontsCssPath) : path2.join(path2.dirname(CSS_PATH), "fonts.css");
114
132
  const API_BASE = opts.apiBase ?? "/api";
115
133
  const COMPONENT_CONFIGS_DIR = opts.componentConfigsDir ? path2.resolve(opts.componentConfigsDir) : path2.resolve("component-configs");
116
- const COMPONENTS_SRC_DIR = opts.componentsSrcDir ? path2.resolve(opts.componentsSrcDir) : path2.resolve("src/components");
117
- const PRESETS_DIR = opts.presetsDir ? path2.resolve(opts.presetsDir) : path2.resolve("presets");
134
+ const COMPONENTS_SRC_DIR = opts.componentsSrcDir ? path2.resolve(opts.componentsSrcDir) : path2.resolve("src/system/components");
135
+ const MANIFESTS_DIR = opts.manifestsDir ? path2.resolve(opts.manifestsDir) : path2.resolve("manifests");
136
+ const LEGACY_PRESETS_DIR = path2.resolve("presets");
118
137
  const themesResource = versionedFileResourceServer({
119
138
  dir: THEMES_DIR
120
139
  });
@@ -127,7 +146,7 @@ function themeFileApi(opts) {
127
146
  }
128
147
  return r;
129
148
  }
130
- const presetsResource = versionedFileResourceServer({ dir: PRESETS_DIR });
149
+ const manifestsResource = versionedFileResourceServer({ dir: MANIFESTS_DIR });
131
150
  function ensureThemesDir() {
132
151
  themesResource.ensureDir();
133
152
  if (!fs2.existsSync(path2.join(THEMES_DIR, "default.json"))) {
@@ -323,25 +342,63 @@ ${newVars}
323
342
  r.ensureMeta();
324
343
  }
325
344
  }
326
- function ensurePresetsDir() {
327
- presetsResource.ensureDir();
328
- const defaultPath = path2.join(PRESETS_DIR, "default.json");
345
+ function ensureManifestsDir() {
346
+ if (!fs2.existsSync(MANIFESTS_DIR) && fs2.existsSync(LEGACY_PRESETS_DIR)) {
347
+ fs2.renameSync(LEGACY_PRESETS_DIR, MANIFESTS_DIR);
348
+ const legacyProd = path2.join(MANIFESTS_DIR, "_production.json");
349
+ if (fs2.existsSync(legacyProd)) fs2.unlinkSync(legacyProd);
350
+ }
351
+ manifestsResource.ensureDir();
352
+ const defaultPath = path2.join(MANIFESTS_DIR, "default.json");
329
353
  if (!fs2.existsSync(defaultPath)) {
330
354
  const componentConfigs = {};
331
355
  for (const comp of listComponentNames()) {
332
356
  componentConfigs[comp] = componentResource(comp).getActiveName();
333
357
  }
334
358
  const now = (/* @__PURE__ */ new Date()).toISOString();
335
- const defaultPreset = {
336
- name: "Default Preset",
359
+ const defaultManifest = {
360
+ name: "Default",
337
361
  createdAt: now,
338
362
  updatedAt: now,
339
363
  theme: themesResource.getActiveName(),
340
364
  componentConfigs
341
365
  };
342
- fs2.writeFileSync(defaultPath, JSON.stringify(defaultPreset, null, 2));
366
+ fs2.writeFileSync(defaultPath, JSON.stringify(defaultManifest, null, 2));
367
+ }
368
+ if (!fs2.existsSync(manifestsResource.activePath)) {
369
+ fs2.writeFileSync(
370
+ manifestsResource.activePath,
371
+ JSON.stringify({ activeFile: "default" })
372
+ );
373
+ } else {
374
+ const activeName = manifestsResource.getActiveName();
375
+ if (!fs2.existsSync(manifestsResource.filePath(activeName))) {
376
+ manifestsResource.setActiveName("default");
377
+ }
343
378
  }
344
- presetsResource.ensureMeta();
379
+ const stragglerProd = path2.join(MANIFESTS_DIR, "_production.json");
380
+ if (fs2.existsSync(stragglerProd)) fs2.unlinkSync(stragglerProd);
381
+ }
382
+ function patchActiveManifest(field, comp, fileName) {
383
+ const activeFile = manifestsResource.getActiveName();
384
+ if (activeFile === "default") return false;
385
+ const manifestPath = manifestsResource.filePath(activeFile);
386
+ if (!fs2.existsSync(manifestPath)) return false;
387
+ let manifest;
388
+ try {
389
+ manifest = JSON.parse(fs2.readFileSync(manifestPath, "utf-8"));
390
+ } catch {
391
+ return false;
392
+ }
393
+ if (field === "theme") {
394
+ manifest.theme = fileName;
395
+ } else if (field === "component" && comp) {
396
+ manifest.componentConfigs = manifest.componentConfigs ?? {};
397
+ manifest.componentConfigs[comp] = fileName;
398
+ }
399
+ manifest.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
400
+ fs2.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
401
+ return true;
345
402
  }
346
403
  function readComponentConfig(comp, name) {
347
404
  const filePath = componentResource(comp).filePath(name);
@@ -406,16 +463,15 @@ ${COMPONENT_OVERRIDES_END}
406
463
  const THEMES_ACTIVE_ROUTE = `${API_BASE}/themes/active`;
407
464
  const THEMES_PRODUCTION_ROUTE = `${API_BASE}/themes/production`;
408
465
  const COMPONENT_CONFIGS_ROUTE = `${API_BASE}/component-configs`;
409
- const PRESETS_ROUTE = `${API_BASE}/presets`;
410
- const PRESETS_ACTIVE_ROUTE = `${API_BASE}/presets/active`;
411
- const PRESETS_PRODUCTION_ROUTE = `${API_BASE}/presets/production`;
466
+ const MANIFESTS_ROUTE = `${API_BASE}/manifests`;
467
+ const MANIFESTS_ACTIVE_ROUTE = `${API_BASE}/manifests/active`;
412
468
  const THEME_BY_NAME_REGEX = new RegExp(`^${escapedBase}/themes/([a-z0-9\\-_]+)$`);
413
469
  const COMP_LIST_REGEX = new RegExp(`^${escapedBase}/component-configs/([a-z0-9\\-_]+)$`);
414
470
  const COMP_ACTIVE_REGEX = new RegExp(`^${escapedBase}/component-configs/([a-z0-9\\-_]+)/active$`);
415
471
  const COMP_PRODUCTION_REGEX = new RegExp(`^${escapedBase}/component-configs/([a-z0-9\\-_]+)/production$`);
416
472
  const COMP_BY_NAME_REGEX = new RegExp(`^${escapedBase}/component-configs/([a-z0-9\\-_]+)/([a-z0-9\\-_]+)$`);
417
- const PRESET_APPLY_REGEX = new RegExp(`^${escapedBase}/presets/([a-z0-9\\-_]+)/apply$`);
418
- const PRESET_BY_NAME_REGEX = new RegExp(`^${escapedBase}/presets/([a-z0-9\\-_]+)$`);
473
+ const MANIFEST_APPLY_REGEX = new RegExp(`^${escapedBase}/manifests/([a-z0-9\\-_]+)/apply$`);
474
+ const MANIFEST_BY_NAME_REGEX = new RegExp(`^${escapedBase}/manifests/([a-z0-9\\-_]+)$`);
419
475
  async function handleListThemes(_ctx) {
420
476
  const activeFile = themesResource.getActiveName();
421
477
  const files = fs2.readdirSync(THEMES_DIR).filter((f) => f.endsWith(".json") && !f.startsWith("_")).map((f) => {
@@ -474,10 +530,18 @@ ${COMPONENT_OVERRIDES_END}
474
530
  jsonResponse(res, 404, { error: "Theme not found" });
475
531
  return;
476
532
  }
533
+ if (manifestsResource.getActiveName() === "default") {
534
+ jsonResponse(res, 409, {
535
+ error: "Active manifest is protected. Save As first.",
536
+ code: "ACTIVE_IS_PROTECTED"
537
+ });
538
+ return;
539
+ }
477
540
  themesResource.setProductionName(fileName);
478
541
  syncTokensToCss(fileName);
479
542
  syncFontsToCss(fileName);
480
543
  syncComponentsToCss();
544
+ patchActiveManifest("theme", null, fileName);
481
545
  const data = JSON.parse(fs2.readFileSync(themesResource.filePath(fileName), "utf-8"));
482
546
  jsonResponse(res, 200, {
483
547
  ok: true,
@@ -524,6 +588,13 @@ ${COMPONENT_OVERRIDES_END}
524
588
  jsonResponse(res, 403, { error: "Cannot delete the default theme" });
525
589
  return;
526
590
  }
591
+ if (themesResource.getProductionName() === fileName) {
592
+ jsonResponse(res, 403, {
593
+ error: "Cannot delete the production theme. Adopt a different theme first.",
594
+ code: "PRODUCTION_THEME"
595
+ });
596
+ return;
597
+ }
527
598
  if (fs2.existsSync(filePath)) {
528
599
  fs2.unlinkSync(filePath);
529
600
  if (themesResource.getActiveName() === fileName) {
@@ -591,9 +662,17 @@ ${COMPONENT_OVERRIDES_END}
591
662
  jsonResponse(res, 404, { error: "Config not found" });
592
663
  return;
593
664
  }
665
+ if (manifestsResource.getActiveName() === "default") {
666
+ jsonResponse(res, 409, {
667
+ error: "Active manifest is protected. Save As first.",
668
+ code: "ACTIVE_IS_PROTECTED"
669
+ });
670
+ return;
671
+ }
594
672
  r.ensureDir();
595
673
  r.setProductionName(fileName);
596
674
  syncComponentsToCss();
675
+ patchActiveManifest("component", comp, fileName);
597
676
  const cfg = readComponentConfig(comp, fileName);
598
677
  jsonResponse(res, 200, {
599
678
  ok: true,
@@ -683,112 +762,46 @@ ${COMPONENT_OVERRIDES_END}
683
762
  });
684
763
  jsonResponse(res, 200, { component: comp, files, activeFile, productionFile });
685
764
  }
686
- async function handleListPresets({ res }) {
687
- const activeFile = presetsResource.getActiveName();
688
- const files = fs2.readdirSync(PRESETS_DIR).filter((f) => f.endsWith(".json") && !f.startsWith("_")).map((f) => {
689
- const filePath = path2.join(PRESETS_DIR, f);
765
+ async function handleListManifests({ res }) {
766
+ const activeFile = manifestsResource.getActiveName();
767
+ const files = fs2.readdirSync(MANIFESTS_DIR).filter((f) => f.endsWith(".json") && !f.startsWith("_")).map((f) => {
768
+ const filePath = path2.join(MANIFESTS_DIR, f);
690
769
  const data = JSON.parse(fs2.readFileSync(filePath, "utf-8"));
691
770
  const fileName = f.replace(".json", "");
692
771
  return {
693
772
  name: data.name || fileName,
694
773
  fileName,
695
774
  updatedAt: data.updatedAt || "",
696
- isActive: fileName === activeFile
775
+ isActive: fileName === activeFile,
776
+ isProtected: fileName === "default"
697
777
  };
698
778
  });
699
779
  jsonResponse(res, 200, { files, activeFile });
700
780
  }
701
- async function handleGetActivePreset({ res }) {
702
- const activeFile = presetsResource.getActiveName();
703
- const filePath = presetsResource.filePath(activeFile);
781
+ async function handleGetActiveManifest({ res }) {
782
+ const activeFile = manifestsResource.getActiveName();
783
+ const filePath = manifestsResource.filePath(activeFile);
704
784
  if (!fs2.existsSync(filePath)) {
705
- jsonResponse(res, 404, { error: "Active preset not found" });
785
+ jsonResponse(res, 404, { error: "Active manifest not found" });
706
786
  return;
707
787
  }
708
788
  const data = JSON.parse(fs2.readFileSync(filePath, "utf-8"));
709
789
  data._fileName = activeFile;
710
790
  jsonResponse(res, 200, data);
711
791
  }
712
- async function handleSetActivePreset({ req, res }) {
792
+ async function handleSetActiveManifest({ req, res }) {
713
793
  const body = JSON.parse(await readBody(req));
714
794
  const fileName = sanitizeFileName(body.name || "default");
715
- if (!fs2.existsSync(presetsResource.filePath(fileName))) {
716
- jsonResponse(res, 404, { error: "Preset not found" });
795
+ if (!fs2.existsSync(manifestsResource.filePath(fileName))) {
796
+ jsonResponse(res, 404, { error: "Manifest not found" });
717
797
  return;
718
798
  }
719
- presetsResource.setActiveName(fileName);
799
+ manifestsResource.setActiveName(fileName);
720
800
  jsonResponse(res, 200, { ok: true, activeFile: fileName });
721
801
  }
722
- async function handleGetProductionPreset({ res }) {
723
- const prodFile = presetsResource.getProductionName();
724
- const filePath = presetsResource.filePath(prodFile);
725
- if (!fs2.existsSync(filePath)) {
726
- jsonResponse(res, 200, {
727
- fileName: prodFile,
728
- name: prodFile,
729
- theme: "default",
730
- componentConfigs: {},
731
- updatedAt: ""
732
- });
733
- return;
734
- }
735
- const data = JSON.parse(fs2.readFileSync(filePath, "utf-8"));
736
- jsonResponse(res, 200, {
737
- fileName: prodFile,
738
- name: data.name || prodFile,
739
- theme: data.theme || "default",
740
- componentConfigs: data.componentConfigs || {},
741
- updatedAt: data.updatedAt || ""
742
- });
743
- }
744
- async function handleSetProductionPreset({ req, res }) {
745
- const body = JSON.parse(await readBody(req));
746
- const fileName = sanitizeFileName(body.name || "default");
747
- const presetPath = presetsResource.filePath(fileName);
748
- if (!fs2.existsSync(presetPath)) {
749
- jsonResponse(res, 404, { error: "Preset not found" });
750
- return;
751
- }
752
- const preset = JSON.parse(fs2.readFileSync(presetPath, "utf-8"));
753
- const themeName = sanitizeFileName(preset.theme || "default");
754
- if (!fs2.existsSync(themesResource.filePath(themeName))) {
755
- jsonResponse(res, 422, { error: `Preset references missing theme: ${themeName}` });
756
- return;
757
- }
758
- const knownComponents = new Set(listComponentNames());
759
- const componentConfigs = preset.componentConfigs ?? {};
760
- const apply = [];
761
- for (const [comp, configFile] of Object.entries(componentConfigs)) {
762
- if (!knownComponents.has(comp)) continue;
763
- const sanitized = sanitizeFileName(String(configFile) || "default");
764
- if (!fs2.existsSync(componentResource(comp).filePath(sanitized))) {
765
- jsonResponse(res, 422, {
766
- error: `Preset references missing config: ${comp}/${sanitized}`
767
- });
768
- return;
769
- }
770
- apply.push([comp, sanitized]);
771
- }
772
- themesResource.setProductionName(themeName);
773
- for (const [comp, configFile] of apply) {
774
- componentResource(comp).setProductionName(configFile);
775
- }
776
- presetsResource.setProductionName(fileName);
777
- syncTokensToCss(themeName);
778
- syncFontsToCss(themeName);
779
- syncComponentsToCss();
780
- jsonResponse(res, 200, {
781
- ok: true,
782
- fileName,
783
- name: preset.name || fileName,
784
- theme: themeName,
785
- componentConfigs: Object.fromEntries(apply),
786
- updatedAt: preset.updatedAt || ""
787
- });
788
- }
789
- async function handlePresetByName({ params, req, res }) {
802
+ async function handleManifestByName({ params, req, res }) {
790
803
  const [fileName] = params;
791
- const filePath = presetsResource.filePath(fileName);
804
+ const filePath = manifestsResource.filePath(fileName);
792
805
  if (req.method === "GET") {
793
806
  if (!fs2.existsSync(filePath)) {
794
807
  jsonResponse(res, 404, { error: "Not found" });
@@ -801,7 +814,7 @@ ${COMPONENT_OVERRIDES_END}
801
814
  }
802
815
  if (req.method === "PUT") {
803
816
  if (fileName === "default") {
804
- jsonResponse(res, 403, { error: "Cannot overwrite the default preset" });
817
+ jsonResponse(res, 403, { error: "Cannot overwrite the default manifest" });
805
818
  return;
806
819
  }
807
820
  const body = JSON.parse(await readBody(req));
@@ -820,35 +833,35 @@ ${COMPONENT_OVERRIDES_END}
820
833
  }
821
834
  if (req.method === "DELETE") {
822
835
  if (fileName === "default") {
823
- jsonResponse(res, 403, { error: "Cannot delete the default preset" });
836
+ jsonResponse(res, 403, { error: "Cannot delete the default manifest" });
824
837
  return;
825
838
  }
826
839
  if (fs2.existsSync(filePath)) {
827
840
  fs2.unlinkSync(filePath);
828
- if (presetsResource.getActiveName() === fileName) {
829
- presetsResource.setActiveName("default");
841
+ if (manifestsResource.getActiveName() === fileName) {
842
+ manifestsResource.setActiveName("default");
830
843
  }
831
844
  }
832
845
  jsonResponse(res, 200, { ok: true });
833
846
  return;
834
847
  }
835
848
  }
836
- async function handleApplyPreset({ params, res }) {
849
+ async function handleApplyManifest({ params, res }) {
837
850
  const [fileName] = params;
838
- const presetPath = presetsResource.filePath(fileName);
839
- if (!fs2.existsSync(presetPath)) {
840
- jsonResponse(res, 404, { error: "Preset not found" });
851
+ const manifestPath = manifestsResource.filePath(fileName);
852
+ if (!fs2.existsSync(manifestPath)) {
853
+ jsonResponse(res, 404, { error: "Manifest not found" });
841
854
  return;
842
855
  }
843
- const preset = JSON.parse(fs2.readFileSync(presetPath, "utf-8"));
844
- const themeName = sanitizeFileName(preset.theme || "default");
856
+ const manifest = JSON.parse(fs2.readFileSync(manifestPath, "utf-8"));
857
+ const themeName = sanitizeFileName(manifest.theme || "default");
845
858
  const themePath = themesResource.filePath(themeName);
846
859
  if (!fs2.existsSync(themePath)) {
847
- jsonResponse(res, 422, { error: `Preset references missing theme: ${themeName}` });
860
+ jsonResponse(res, 422, { error: `Manifest references missing theme: ${themeName}` });
848
861
  return;
849
862
  }
850
863
  const knownComponents = new Set(listComponentNames());
851
- const componentConfigs = preset.componentConfigs ?? {};
864
+ const componentConfigs = manifest.componentConfigs ?? {};
852
865
  const resolvedConfigs = {};
853
866
  const apply = [];
854
867
  for (const [comp, configFile] of Object.entries(componentConfigs)) {
@@ -858,7 +871,7 @@ ${COMPONENT_OVERRIDES_END}
858
871
  const cfgPath = r.filePath(sanitized);
859
872
  if (!fs2.existsSync(cfgPath)) {
860
873
  jsonResponse(res, 422, {
861
- error: `Preset references missing config: ${comp}/${sanitized}`
874
+ error: `Manifest references missing config: ${comp}/${sanitized}`
862
875
  });
863
876
  return;
864
877
  }
@@ -879,10 +892,10 @@ ${COMPONENT_OVERRIDES_END}
879
892
  const cfg = readComponentConfig(comp, activeName);
880
893
  if (cfg) resolvedConfigs[comp] = { ...cfg, _fileName: activeName };
881
894
  }
882
- presetsResource.setActiveName(fileName);
895
+ manifestsResource.setActiveName(fileName);
883
896
  jsonResponse(res, 200, {
884
897
  ok: true,
885
- preset: { ...preset, _fileName: fileName },
898
+ manifest: { ...manifest, _fileName: fileName },
886
899
  theme: themeData,
887
900
  componentConfigs: resolvedConfigs
888
901
  });
@@ -920,35 +933,34 @@ ${COMPONENT_OVERRIDES_END}
920
933
  { method: "GET", pattern: THEME_BY_NAME_REGEX, handler: handleThemeByName },
921
934
  { method: "PUT", pattern: THEME_BY_NAME_REGEX, handler: handleThemeByName },
922
935
  { method: "DELETE", pattern: THEME_BY_NAME_REGEX, handler: handleThemeByName },
923
- // Presets — list / active / production are exact strings, must run before regexes
924
- { method: "GET", pattern: PRESETS_ROUTE, handler: handleListPresets },
925
- { method: "GET", pattern: PRESETS_ACTIVE_ROUTE, handler: handleGetActivePreset },
926
- { method: "PUT", pattern: PRESETS_ACTIVE_ROUTE, handler: handleSetActivePreset },
927
- { method: "GET", pattern: PRESETS_PRODUCTION_ROUTE, handler: handleGetProductionPreset },
928
- { method: "PUT", pattern: PRESETS_PRODUCTION_ROUTE, handler: handleSetProductionPreset },
929
- // Presets :name/apply (more specific than :name)
930
- { method: "PUT", pattern: PRESET_APPLY_REGEX, handler: handleApplyPreset },
931
- { method: "POST", pattern: PRESET_APPLY_REGEX, handler: methodNotAllowed },
932
- { method: "GET", pattern: PRESET_APPLY_REGEX, handler: methodNotAllowed },
933
- { method: "DELETE", pattern: PRESET_APPLY_REGEX, handler: methodNotAllowed },
934
- // Presets :name CRUD (broadest preset route, runs last)
935
- { method: "GET", pattern: PRESET_BY_NAME_REGEX, handler: handlePresetByName },
936
- { method: "PUT", pattern: PRESET_BY_NAME_REGEX, handler: handlePresetByName },
937
- { method: "DELETE", pattern: PRESET_BY_NAME_REGEX, handler: handlePresetByName }
936
+ // Manifests — list / active are exact strings, must run before regexes
937
+ { method: "GET", pattern: MANIFESTS_ROUTE, handler: handleListManifests },
938
+ { method: "GET", pattern: MANIFESTS_ACTIVE_ROUTE, handler: handleGetActiveManifest },
939
+ { method: "PUT", pattern: MANIFESTS_ACTIVE_ROUTE, handler: handleSetActiveManifest },
940
+ // Manifests :name/apply (more specific than :name)
941
+ { method: "PUT", pattern: MANIFEST_APPLY_REGEX, handler: handleApplyManifest },
942
+ { method: "POST", pattern: MANIFEST_APPLY_REGEX, handler: methodNotAllowed },
943
+ { method: "GET", pattern: MANIFEST_APPLY_REGEX, handler: methodNotAllowed },
944
+ { method: "DELETE", pattern: MANIFEST_APPLY_REGEX, handler: methodNotAllowed },
945
+ // Manifests :name CRUD (broadest manifest route, runs last)
946
+ { method: "GET", pattern: MANIFEST_BY_NAME_REGEX, handler: handleManifestByName },
947
+ { method: "PUT", pattern: MANIFEST_BY_NAME_REGEX, handler: handleManifestByName },
948
+ { method: "DELETE", pattern: MANIFEST_BY_NAME_REGEX, handler: handleManifestByName }
938
949
  ];
939
950
  return {
940
951
  name: "theme-file-api",
941
952
  config() {
942
953
  return {
943
954
  define: {
944
- __PROJECT_ROOT__: JSON.stringify(process.cwd())
955
+ __PROJECT_ROOT__: JSON.stringify(process.cwd()),
956
+ __APP_VERSION__: JSON.stringify(PKG_VERSION)
945
957
  }
946
958
  };
947
959
  },
948
960
  configureServer(server) {
949
961
  ensureThemesDir();
950
962
  ensureComponentConfigsDir();
951
- ensurePresetsDir();
963
+ ensureManifestsDir();
952
964
  server.middlewares.use(async (req, res, next) => {
953
965
  const handled = await dispatch(req, res, routes);
954
966
  if (!handled) next();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@motion-proto/live-tokens",
3
- "version": "0.6.1",
3
+ "version": "0.7.1",
4
4
  "type": "module",
5
5
  "description": "Design token editor with live CSS variable editing. Svelte 5 + Vite 6/7.",
6
6
  "keywords": [
@@ -19,24 +19,9 @@
19
19
  "homepage": "https://github.com/motionproto/live-tokens",
20
20
  "bugs": "https://github.com/motionproto/live-tokens/issues",
21
21
  "files": [
22
- "src/lib",
23
- "src/ui",
24
- "src/component-editor",
25
- "src/components",
26
- "src/pages/Editor.svelte",
27
- "src/pages/Editor.svelte.d.ts",
28
- "src/pages/EditorShell.svelte",
29
- "src/pages/ComponentEditorPage.svelte",
30
- "src/pages/ComponentEditorPage.svelte.d.ts",
31
- "src/styles/ui-editor.css",
32
- "src/styles/ui-form-controls.css",
33
- "src/styles/fonts.css",
34
- "src/styles/fonts",
35
- "src/styles/_padding.scss",
36
- "src/styles/tokens.css",
37
- "src/styles/site.css",
38
- "src/data",
39
- "src/assets",
22
+ "src/editor",
23
+ "src/system",
24
+ "src/app/site.css",
40
25
  "dist-plugin",
41
26
  "!**/*.test.ts",
42
27
  "!**/*.spec.ts",
@@ -44,43 +29,43 @@
44
29
  ],
45
30
  "exports": {
46
31
  ".": {
47
- "svelte": "./src/lib/index.ts",
48
- "types": "./src/lib/index.ts",
49
- "default": "./src/lib/index.ts"
32
+ "svelte": "./src/editor/index.ts",
33
+ "types": "./src/editor/index.ts",
34
+ "default": "./src/editor/index.ts"
50
35
  },
51
36
  "./component-editor": {
52
- "svelte": "./src/component-editor/index.ts",
53
- "types": "./src/component-editor/index.ts",
54
- "default": "./src/component-editor/index.ts"
37
+ "svelte": "./src/editor/component-editor/index.ts",
38
+ "types": "./src/editor/component-editor/index.ts",
39
+ "default": "./src/editor/component-editor/index.ts"
55
40
  },
56
41
  "./ui": {
57
- "svelte": "./src/ui/index.ts",
58
- "types": "./src/ui/index.ts",
59
- "default": "./src/ui/index.ts"
42
+ "svelte": "./src/editor/ui/index.ts",
43
+ "types": "./src/editor/ui/index.ts",
44
+ "default": "./src/editor/ui/index.ts"
60
45
  },
61
46
  "./editor": {
62
- "types": "./src/pages/Editor.svelte.d.ts",
63
- "svelte": "./src/pages/Editor.svelte",
64
- "default": "./src/pages/Editor.svelte"
47
+ "types": "./src/editor/pages/Editor.svelte.d.ts",
48
+ "svelte": "./src/editor/pages/Editor.svelte",
49
+ "default": "./src/editor/pages/Editor.svelte"
65
50
  },
66
51
  "./component-editor-page": {
67
- "types": "./src/pages/ComponentEditorPage.svelte.d.ts",
68
- "svelte": "./src/pages/ComponentEditorPage.svelte",
69
- "default": "./src/pages/ComponentEditorPage.svelte"
52
+ "types": "./src/editor/pages/ComponentEditorPage.svelte.d.ts",
53
+ "svelte": "./src/editor/pages/ComponentEditorPage.svelte",
54
+ "default": "./src/editor/pages/ComponentEditorPage.svelte"
70
55
  },
71
56
  "./components/*": {
72
- "svelte": "./src/components/*",
73
- "default": "./src/components/*"
57
+ "svelte": "./src/system/components/*",
58
+ "default": "./src/system/components/*"
74
59
  },
75
60
  "./vite-plugin": {
76
61
  "types": "./dist-plugin/index.d.ts",
77
62
  "import": "./dist-plugin/index.js",
78
63
  "require": "./dist-plugin/index.cjs"
79
64
  },
80
- "./styles/ui-editor.css": "./src/styles/ui-editor.css",
81
- "./starter/tokens.css": "./src/styles/tokens.css",
82
- "./starter/site.css": "./src/styles/site.css",
83
- "./starter/fonts.css": "./src/styles/fonts.css"
65
+ "./styles/ui-editor.css": "./src/editor/styles/ui-editor.css",
66
+ "./app/tokens.css": "./src/system/styles/tokens.css",
67
+ "./app/site.css": "./src/app/site.css",
68
+ "./app/fonts.css": "./src/system/styles/fonts.css"
84
69
  },
85
70
  "scripts": {
86
71
  "dev": "vite",
@@ -89,7 +74,7 @@
89
74
  "check": "svelte-check --tsconfig ./tsconfig.json",
90
75
  "test": "vitest run",
91
76
  "test:watch": "vitest",
92
- "build:plugin": "tsup src/vite-plugin/index.ts --out-dir dist-plugin --format esm,cjs --dts --external vite --platform node --clean",
77
+ "build:plugin": "tsup",
93
78
  "build:lib": "npm run build:plugin",
94
79
  "deploy:local": "bash scripts/deploy-local.sh",
95
80
  "check:no-style-imports": "node scripts/check-no-style-imports.mjs",