@motion-proto/live-tokens 0.6.2 → 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.
- package/README.md +14 -13
- package/dist-plugin/index.cjs +147 -136
- package/dist-plugin/index.d.cts +1 -1
- package/dist-plugin/index.d.ts +1 -1
- package/dist-plugin/index.js +145 -135
- package/package.json +25 -40
- package/src/{component-editor → editor/component-editor}/BadgeEditor.svelte +8 -82
- package/src/{component-editor → editor/component-editor}/CalloutEditor.svelte +4 -4
- package/src/{component-editor → editor/component-editor}/CardEditor.svelte +28 -76
- package/src/{component-editor → editor/component-editor}/CollapsibleSectionEditor.svelte +3 -3
- package/src/{component-editor → editor/component-editor}/CornerBadgeEditor.svelte +31 -93
- package/src/{component-editor → editor/component-editor}/DialogEditor.svelte +60 -57
- package/src/editor/component-editor/ImageEditor.svelte +30 -0
- package/src/{component-editor → editor/component-editor}/InlineEditActionsEditor.svelte +6 -4
- package/src/editor/component-editor/MenuSelectEditor.svelte +160 -0
- package/src/{component-editor → editor/component-editor}/NotificationEditor.svelte +64 -37
- package/src/{component-editor → editor/component-editor}/ProgressBarEditor.svelte +5 -4
- package/src/{component-editor → editor/component-editor}/RadioButtonEditor.svelte +3 -3
- package/src/{component-editor → editor/component-editor}/SectionDividerEditor.svelte +57 -84
- package/src/{component-editor → editor/component-editor}/SegmentedControlEditor.svelte +2 -2
- package/src/{component-editor → editor/component-editor}/StandardButtonsEditor.svelte +16 -20
- package/src/{component-editor → editor/component-editor}/TabBarEditor.svelte +9 -14
- package/src/{component-editor → editor/component-editor}/TableEditor.svelte +9 -18
- package/src/{component-editor → editor/component-editor}/TooltipEditor.svelte +11 -47
- package/src/{component-editor → editor/component-editor}/registry.ts +28 -18
- package/src/{component-editor → editor/component-editor}/scaffolding/AngleDial.svelte +2 -2
- package/src/{component-editor → editor/component-editor}/scaffolding/ComponentEditorBase.svelte +3 -51
- package/src/{component-editor → editor/component-editor}/scaffolding/ComponentFileManager.svelte +144 -416
- package/src/{component-editor → editor/component-editor}/scaffolding/ComponentFileMenu.svelte +18 -170
- package/src/{component-editor → editor/component-editor}/scaffolding/ComponentsTab.svelte +2 -2
- package/src/{component-editor → editor/component-editor}/scaffolding/CopyFromMenu.svelte +44 -4
- package/src/{component-editor → editor/component-editor}/scaffolding/DividerEditor.svelte +1 -1
- package/src/{component-editor → editor/component-editor}/scaffolding/FieldsetWrapper.svelte +1 -1
- package/src/{component-editor → editor/component-editor}/scaffolding/GradientCard.svelte +6 -6
- package/src/{component-editor → editor/component-editor}/scaffolding/LinkageChart.svelte +6 -6
- package/src/{component-editor → editor/component-editor}/scaffolding/LinkedBlock.svelte +6 -11
- package/src/editor/component-editor/scaffolding/NonStylableConfig.svelte +38 -0
- package/src/{component-editor → editor/component-editor}/scaffolding/SaveAsDialog.svelte +66 -12
- package/src/editor/component-editor/scaffolding/ShadowBackdrop.svelte +72 -0
- package/src/editor/component-editor/scaffolding/ShadowBackdropControls.svelte +132 -0
- package/src/editor/component-editor/scaffolding/StateBlock.svelte +257 -0
- package/src/{component-editor → editor/component-editor}/scaffolding/TokenLayout.svelte +9 -7
- package/src/editor/component-editor/scaffolding/VariantGroup.svelte +644 -0
- package/src/{component-editor → editor/component-editor}/scaffolding/editorContext.ts +19 -9
- package/src/{component-editor → editor/component-editor}/scaffolding/linkedBlock.ts +2 -2
- package/src/{component-editor → editor/component-editor}/scaffolding/types.ts +14 -0
- package/src/{lib → editor/core/components}/componentConfigService.ts +2 -2
- package/src/{lib → editor/core/components}/componentPersist.ts +5 -5
- package/src/editor/core/flashStatus.ts +30 -0
- package/src/{lib → editor/core/fonts}/fontLoader.ts +2 -2
- package/src/{lib → editor/core/fonts}/fontMigration.ts +4 -4
- package/src/{lib → editor/core/fonts}/fontParse.ts +1 -1
- package/src/editor/core/manifests/manifestService.ts +116 -0
- package/src/{lib → editor/core/palettes}/paletteDerivation.ts +2 -2
- package/src/{lib → editor/core/palettes}/tokenRegistry.ts +5 -5
- package/src/editor/core/productionPulse.ts +37 -0
- package/src/{lib → editor/core/routing}/router.ts +1 -1
- package/src/{lib/files/versionedFileResource.ts → editor/core/storage/files/versionedFileResourceClient.ts} +8 -1
- package/src/{lib → editor/core/store}/editorCore.ts +24 -8
- package/src/{lib → editor/core/store}/editorPersistence.ts +3 -3
- package/src/{lib → editor/core/store}/editorRenderer.ts +2 -2
- package/src/{lib → editor/core/store}/editorStore.ts +17 -17
- package/src/{lib → editor/core/store}/editorTypes.ts +1 -1
- package/src/{lib → editor/core/themes}/slices/columns.ts +2 -2
- package/src/{lib → editor/core/themes}/slices/components.ts +2 -2
- package/src/{lib → editor/core/themes}/slices/fonts.ts +1 -1
- package/src/{lib → editor/core/themes}/slices/gradients.ts +2 -2
- package/src/{lib → editor/core/themes}/slices/overlays.ts +1 -1
- package/src/{lib → editor/core/themes}/slices/palettes.ts +1 -1
- package/src/{lib → editor/core/themes}/slices/shadows.ts +3 -3
- package/src/{lib → editor/core/themes}/themeInit.ts +6 -6
- package/src/{lib → editor/core/themes}/themeService.ts +6 -6
- package/src/{lib → editor/core/themes}/themeTypes.ts +11 -7
- package/src/editor/index.ts +69 -0
- package/src/{lib → editor/overlay}/LiveEditorOverlay.svelte +79 -125
- package/src/{lib → editor/overlay}/columnsOverlay.ts +2 -2
- package/src/{pages → editor/pages}/ComponentEditorPage.svelte +12 -12
- package/src/{pages → editor/pages}/Editor.svelte +4 -4
- package/src/{pages → editor/pages}/EditorShell.svelte +18 -36
- package/src/{styles → editor/styles}/ui-editor.css +41 -21
- package/src/{styles → editor/styles}/ui-form-controls.css +8 -8
- package/src/{ui → editor/ui}/BezierCurveEditor.svelte +8 -8
- package/src/{ui → editor/ui}/ColorEditPanel.svelte +13 -13
- package/src/{ui → editor/ui}/EditorViewSwitcher.svelte +8 -6
- package/src/editor/ui/FileLoadList.svelte +350 -0
- package/src/editor/ui/FilePill.svelte +80 -0
- package/src/{ui → editor/ui}/FontStackEditor.svelte +7 -7
- package/src/{ui → editor/ui}/GradientEditor.svelte +11 -11
- package/src/{ui → editor/ui}/GradientStopPicker.svelte +1 -1
- package/src/editor/ui/ManifestFileManager.svelte +371 -0
- package/src/{ui → editor/ui}/PaletteEditor.svelte +132 -598
- package/src/{ui → editor/ui}/ProjectFontsSection.svelte +102 -144
- package/src/{ui → editor/ui}/SurfacesTab.svelte +3 -3
- package/src/{ui → editor/ui}/TextTab.svelte +3 -3
- package/src/{ui → editor/ui}/ThemeFileManager.svelte +286 -519
- package/src/{ui → editor/ui}/UICopyPopover.svelte +4 -4
- package/src/{ui → editor/ui}/UIFontFamilySelector.svelte +6 -6
- package/src/{ui → editor/ui}/UIFontSizeSelector.svelte +1 -1
- package/src/editor/ui/UIInfoPopover.svelte +244 -0
- package/src/{ui → editor/ui}/UILineHeightSelector.svelte +5 -5
- package/src/{ui → editor/ui}/UILinkToggle.svelte +2 -2
- package/src/{ui → editor/ui}/UIPaddingSelector.svelte +6 -6
- package/src/{ui → editor/ui}/UIPaletteSelector.svelte +26 -26
- package/src/editor/ui/UIPillButton.svelte +138 -0
- package/src/{ui → editor/ui}/UIRadio.svelte +2 -2
- package/src/{ui → editor/ui}/UIRelinkConfirmPopover.svelte +4 -4
- package/src/editor/ui/UISquareButton.svelte +172 -0
- package/src/{ui → editor/ui}/UITokenSelector.svelte +10 -10
- package/src/{ui → editor/ui}/UIVariantSelector.svelte +1 -1
- package/src/{ui → editor/ui}/VariablesTab.svelte +31 -8
- package/src/{ui → editor/ui}/palette/GradientStopEditor.svelte +13 -13
- package/src/{ui → editor/ui}/palette/OverridesPanel.svelte +13 -13
- package/src/{ui → editor/ui}/palette/PaletteBase.svelte +8 -5
- package/src/{ui → editor/ui}/palette/paletteEditorState.ts +1 -1
- package/src/editor/ui/palette/paletteMath.ts +275 -0
- package/src/{ui → editor/ui}/sections/ColumnsSection.svelte +137 -17
- package/src/{ui → editor/ui}/sections/GradientsSection.svelte +7 -7
- package/src/{ui → editor/ui}/sections/OverlaysSection.svelte +17 -17
- package/src/{ui → editor/ui}/sections/ShadowsSection.svelte +22 -22
- package/src/{ui → editor/ui}/sections/TokenScaleTable.svelte +3 -3
- package/src/{components → system/components}/Badge.svelte +0 -36
- package/src/{components → system/components}/Card.svelte +8 -62
- package/src/{components → system/components}/CornerBadge.svelte +8 -24
- package/src/{components → system/components}/Dialog.svelte +1 -1
- package/src/system/components/FloatingTokenTags.css +256 -0
- package/src/system/components/FloatingTokenTags.svelte +592 -0
- package/src/{components → system/components}/InlineEditActions.svelte +6 -4
- package/src/system/components/MenuSelect.svelte +229 -0
- package/src/{components → system/components}/ProgressBar.svelte +29 -11
- package/src/{components → system/components}/SegmentedControl.svelte +49 -43
- package/src/{components → system/components}/TabBar.svelte +81 -65
- package/src/{components → system/components}/Table.svelte +17 -3
- package/src/{components → system/components}/Tooltip.svelte +6 -4
- package/src/system/styles/CONVENTIONS.md +178 -0
- package/src/{styles → system/styles}/fonts.css +6 -3
- package/src/{styles → system/styles}/tokens.css +149 -29
- package/src/component-editor/ImageEditor.svelte +0 -74
- package/src/component-editor/scaffolding/NonStylableConfig.svelte +0 -62
- package/src/component-editor/scaffolding/ShadowBackdrop.svelte +0 -37
- package/src/component-editor/scaffolding/ShadowBackdropControls.svelte +0 -61
- package/src/component-editor/scaffolding/StateBlock.svelte +0 -132
- package/src/component-editor/scaffolding/VariantGroup.svelte +0 -310
- package/src/data/google-fonts.json +0 -75
- package/src/lib/index.ts +0 -68
- package/src/lib/presetService.ts +0 -214
- package/src/lib/productionPulse.ts +0 -32
- package/src/ui/PresetFileManager.svelte +0 -1116
- package/src/ui/UnsavedComponentsDialog.svelte +0 -315
- /package/src/{styles → app}/site.css +0 -0
- /package/src/{component-editor → editor/component-editor}/index.ts +0 -0
- /package/src/{component-editor → editor/component-editor}/scaffolding/DemoHeader.svelte +0 -0
- /package/src/{component-editor → editor/component-editor}/scaffolding/TypeEditor.svelte +0 -0
- /package/src/{component-editor → editor/component-editor}/scaffolding/buildTypeGroupTokens.ts +0 -0
- /package/src/{component-editor → editor/component-editor}/scaffolding/componentSectionType.ts +0 -0
- /package/src/{component-editor → editor/component-editor}/scaffolding/componentSources.ts +0 -0
- /package/src/{component-editor → editor/component-editor}/scaffolding/defaultSections.ts +0 -0
- /package/src/{component-editor → editor/component-editor}/scaffolding/siblings.ts +0 -0
- /package/src/{lib → editor/core/components}/componentConfigKeys.ts +0 -0
- /package/src/{lib → editor/core}/cssVarSync.ts +0 -0
- /package/src/{lib → editor/core/palettes}/oklch.ts +0 -0
- /package/src/{lib → editor/core/routing}/navLinkTypes.ts +0 -0
- /package/src/{lib → editor/core/routing}/parentRouteStore.ts +0 -0
- /package/src/{lib → editor/core/storage}/storage.ts +0 -0
- /package/src/{lib → editor/core/store}/editorConfig.ts +0 -0
- /package/src/{lib → editor/core/store}/editorConfigStore.ts +0 -0
- /package/src/{lib → editor/core/store}/editorKeybindings.ts +0 -0
- /package/src/{lib → editor/core/store}/editorViewStore.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/2026-04-24-component-prefix-and-suffix-renames.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/2026-04-24-legacy-keys-and-bg-to-canvas.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/2026-04-27-segmentedcontrol-disabled-flatten.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/2026-05-08-collapsiblesection-frame-and-cleanup.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/2026-05-08-collapsiblesection-variant-namespace.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/2026-05-10-sectiondivider-gradient-stops.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/2026-05-13-primary-to-brand.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/index.ts +0 -0
- /package/src/{lib → editor/core/themes}/parsers/globalRootBlock.ts +0 -0
- /package/src/{lib → editor/core/themes}/slices/domainVars.ts +0 -0
- /package/src/{lib → editor/overlay}/ColumnsOverlay.svelte +0 -0
- /package/src/{lib → editor/overlay}/overlayState.ts +0 -0
- /package/src/{pages → editor/pages}/ComponentEditorPage.svelte.d.ts +0 -0
- /package/src/{pages → editor/pages}/Editor.svelte.d.ts +0 -0
- /package/src/{ui → editor/ui}/Toggle.svelte +0 -0
- /package/src/{ui → editor/ui}/UIDialog.svelte +0 -0
- /package/src/{ui → editor/ui}/UIFontWeightSelector.svelte +0 -0
- /package/src/{ui → editor/ui}/UIOptionItem.svelte +0 -0
- /package/src/{ui → editor/ui}/UIOptionList.svelte +0 -0
- /package/src/{ui → editor/ui}/UIRadioGroup.svelte +0 -0
- /package/src/{lib → editor/ui}/copyPopover.ts +0 -0
- /package/src/{ui → editor/ui}/curveEngine.ts +0 -0
- /package/src/{ui → editor/ui}/index.ts +0 -0
- /package/src/{ui → editor/ui}/keepInViewport.ts +0 -0
- /package/src/{ui → editor/ui}/palette/ScaleCurveEditor.svelte +0 -0
- /package/src/{lib → editor/ui}/scrollSection.ts +0 -0
- /package/src/{ui → editor/ui}/sections/tokenScales.ts +0 -0
- /package/src/{ui → editor/ui}/variantScales.ts +0 -0
- /package/src/{assets → system/assets}/newspaper.webp +0 -0
- /package/src/{assets → system/assets}/offering.webp +0 -0
- /package/src/{components → system/components}/Button.svelte +0 -0
- /package/src/{components → system/components}/Callout.svelte +0 -0
- /package/src/{components → system/components}/CollapsibleSection.svelte +0 -0
- /package/src/{components → system/components}/Image.svelte +0 -0
- /package/src/{components → system/components}/Notification.svelte +0 -0
- /package/src/{components → system/components}/RadioButton.svelte +0 -0
- /package/src/{components → system/components}/SectionDivider.svelte +0 -0
- /package/src/{components → system/components}/types.ts +0 -0
- /package/src/{styles → system/styles}/_padding.scss +0 -0
- /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-italic-latin-ext.woff2 +0 -0
- /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-italic-latin.woff2 +0 -0
- /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-roman-latin-ext.woff2 +0 -0
- /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-roman-latin.woff2 +0 -0
- /package/src/{styles → system/styles}/fonts/Manrope/Manrope-latin-ext.woff2 +0 -0
- /package/src/{styles → system/styles}/fonts/Manrope/Manrope-latin.woff2 +0 -0
package/dist-plugin/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
//
|
|
1
|
+
// vite-plugin/themeFileApi.ts
|
|
2
2
|
import fs2 from "fs";
|
|
3
3
|
import path2 from "path";
|
|
4
4
|
|
|
5
|
-
// src/
|
|
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/
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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,16 +106,34 @@ async function dispatch(req, res, routes) {
|
|
|
106
106
|
return false;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
//
|
|
110
|
-
|
|
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
|
+
})();
|
|
111
128
|
function themeFileApi(opts) {
|
|
112
129
|
const THEMES_DIR = path2.resolve(opts.themesDir);
|
|
113
130
|
const CSS_PATH = path2.resolve(opts.tokensCssPath);
|
|
114
131
|
const FONTS_CSS_PATH = opts.fontsCssPath ? path2.resolve(opts.fontsCssPath) : path2.join(path2.dirname(CSS_PATH), "fonts.css");
|
|
115
132
|
const API_BASE = opts.apiBase ?? "/api";
|
|
116
133
|
const COMPONENT_CONFIGS_DIR = opts.componentConfigsDir ? path2.resolve(opts.componentConfigsDir) : path2.resolve("component-configs");
|
|
117
|
-
const COMPONENTS_SRC_DIR = opts.componentsSrcDir ? path2.resolve(opts.componentsSrcDir) : path2.resolve("src/components");
|
|
118
|
-
const
|
|
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");
|
|
119
137
|
const themesResource = versionedFileResourceServer({
|
|
120
138
|
dir: THEMES_DIR
|
|
121
139
|
});
|
|
@@ -128,7 +146,7 @@ function themeFileApi(opts) {
|
|
|
128
146
|
}
|
|
129
147
|
return r;
|
|
130
148
|
}
|
|
131
|
-
const
|
|
149
|
+
const manifestsResource = versionedFileResourceServer({ dir: MANIFESTS_DIR });
|
|
132
150
|
function ensureThemesDir() {
|
|
133
151
|
themesResource.ensureDir();
|
|
134
152
|
if (!fs2.existsSync(path2.join(THEMES_DIR, "default.json"))) {
|
|
@@ -324,25 +342,63 @@ ${newVars}
|
|
|
324
342
|
r.ensureMeta();
|
|
325
343
|
}
|
|
326
344
|
}
|
|
327
|
-
function
|
|
328
|
-
|
|
329
|
-
|
|
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");
|
|
330
353
|
if (!fs2.existsSync(defaultPath)) {
|
|
331
354
|
const componentConfigs = {};
|
|
332
355
|
for (const comp of listComponentNames()) {
|
|
333
356
|
componentConfigs[comp] = componentResource(comp).getActiveName();
|
|
334
357
|
}
|
|
335
358
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
336
|
-
const
|
|
337
|
-
name: "Default
|
|
359
|
+
const defaultManifest = {
|
|
360
|
+
name: "Default",
|
|
338
361
|
createdAt: now,
|
|
339
362
|
updatedAt: now,
|
|
340
363
|
theme: themesResource.getActiveName(),
|
|
341
364
|
componentConfigs
|
|
342
365
|
};
|
|
343
|
-
fs2.writeFileSync(defaultPath, JSON.stringify(
|
|
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
|
+
}
|
|
344
378
|
}
|
|
345
|
-
|
|
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;
|
|
346
402
|
}
|
|
347
403
|
function readComponentConfig(comp, name) {
|
|
348
404
|
const filePath = componentResource(comp).filePath(name);
|
|
@@ -407,16 +463,15 @@ ${COMPONENT_OVERRIDES_END}
|
|
|
407
463
|
const THEMES_ACTIVE_ROUTE = `${API_BASE}/themes/active`;
|
|
408
464
|
const THEMES_PRODUCTION_ROUTE = `${API_BASE}/themes/production`;
|
|
409
465
|
const COMPONENT_CONFIGS_ROUTE = `${API_BASE}/component-configs`;
|
|
410
|
-
const
|
|
411
|
-
const
|
|
412
|
-
const PRESETS_PRODUCTION_ROUTE = `${API_BASE}/presets/production`;
|
|
466
|
+
const MANIFESTS_ROUTE = `${API_BASE}/manifests`;
|
|
467
|
+
const MANIFESTS_ACTIVE_ROUTE = `${API_BASE}/manifests/active`;
|
|
413
468
|
const THEME_BY_NAME_REGEX = new RegExp(`^${escapedBase}/themes/([a-z0-9\\-_]+)$`);
|
|
414
469
|
const COMP_LIST_REGEX = new RegExp(`^${escapedBase}/component-configs/([a-z0-9\\-_]+)$`);
|
|
415
470
|
const COMP_ACTIVE_REGEX = new RegExp(`^${escapedBase}/component-configs/([a-z0-9\\-_]+)/active$`);
|
|
416
471
|
const COMP_PRODUCTION_REGEX = new RegExp(`^${escapedBase}/component-configs/([a-z0-9\\-_]+)/production$`);
|
|
417
472
|
const COMP_BY_NAME_REGEX = new RegExp(`^${escapedBase}/component-configs/([a-z0-9\\-_]+)/([a-z0-9\\-_]+)$`);
|
|
418
|
-
const
|
|
419
|
-
const
|
|
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\\-_]+)$`);
|
|
420
475
|
async function handleListThemes(_ctx) {
|
|
421
476
|
const activeFile = themesResource.getActiveName();
|
|
422
477
|
const files = fs2.readdirSync(THEMES_DIR).filter((f) => f.endsWith(".json") && !f.startsWith("_")).map((f) => {
|
|
@@ -475,10 +530,18 @@ ${COMPONENT_OVERRIDES_END}
|
|
|
475
530
|
jsonResponse(res, 404, { error: "Theme not found" });
|
|
476
531
|
return;
|
|
477
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
|
+
}
|
|
478
540
|
themesResource.setProductionName(fileName);
|
|
479
541
|
syncTokensToCss(fileName);
|
|
480
542
|
syncFontsToCss(fileName);
|
|
481
543
|
syncComponentsToCss();
|
|
544
|
+
patchActiveManifest("theme", null, fileName);
|
|
482
545
|
const data = JSON.parse(fs2.readFileSync(themesResource.filePath(fileName), "utf-8"));
|
|
483
546
|
jsonResponse(res, 200, {
|
|
484
547
|
ok: true,
|
|
@@ -525,6 +588,13 @@ ${COMPONENT_OVERRIDES_END}
|
|
|
525
588
|
jsonResponse(res, 403, { error: "Cannot delete the default theme" });
|
|
526
589
|
return;
|
|
527
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
|
+
}
|
|
528
598
|
if (fs2.existsSync(filePath)) {
|
|
529
599
|
fs2.unlinkSync(filePath);
|
|
530
600
|
if (themesResource.getActiveName() === fileName) {
|
|
@@ -592,9 +662,17 @@ ${COMPONENT_OVERRIDES_END}
|
|
|
592
662
|
jsonResponse(res, 404, { error: "Config not found" });
|
|
593
663
|
return;
|
|
594
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
|
+
}
|
|
595
672
|
r.ensureDir();
|
|
596
673
|
r.setProductionName(fileName);
|
|
597
674
|
syncComponentsToCss();
|
|
675
|
+
patchActiveManifest("component", comp, fileName);
|
|
598
676
|
const cfg = readComponentConfig(comp, fileName);
|
|
599
677
|
jsonResponse(res, 200, {
|
|
600
678
|
ok: true,
|
|
@@ -684,112 +762,46 @@ ${COMPONENT_OVERRIDES_END}
|
|
|
684
762
|
});
|
|
685
763
|
jsonResponse(res, 200, { component: comp, files, activeFile, productionFile });
|
|
686
764
|
}
|
|
687
|
-
async function
|
|
688
|
-
const activeFile =
|
|
689
|
-
const files = fs2.readdirSync(
|
|
690
|
-
const filePath = path2.join(
|
|
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);
|
|
691
769
|
const data = JSON.parse(fs2.readFileSync(filePath, "utf-8"));
|
|
692
770
|
const fileName = f.replace(".json", "");
|
|
693
771
|
return {
|
|
694
772
|
name: data.name || fileName,
|
|
695
773
|
fileName,
|
|
696
774
|
updatedAt: data.updatedAt || "",
|
|
697
|
-
isActive: fileName === activeFile
|
|
775
|
+
isActive: fileName === activeFile,
|
|
776
|
+
isProtected: fileName === "default"
|
|
698
777
|
};
|
|
699
778
|
});
|
|
700
779
|
jsonResponse(res, 200, { files, activeFile });
|
|
701
780
|
}
|
|
702
|
-
async function
|
|
703
|
-
const activeFile =
|
|
704
|
-
const filePath =
|
|
781
|
+
async function handleGetActiveManifest({ res }) {
|
|
782
|
+
const activeFile = manifestsResource.getActiveName();
|
|
783
|
+
const filePath = manifestsResource.filePath(activeFile);
|
|
705
784
|
if (!fs2.existsSync(filePath)) {
|
|
706
|
-
jsonResponse(res, 404, { error: "Active
|
|
785
|
+
jsonResponse(res, 404, { error: "Active manifest not found" });
|
|
707
786
|
return;
|
|
708
787
|
}
|
|
709
788
|
const data = JSON.parse(fs2.readFileSync(filePath, "utf-8"));
|
|
710
789
|
data._fileName = activeFile;
|
|
711
790
|
jsonResponse(res, 200, data);
|
|
712
791
|
}
|
|
713
|
-
async function
|
|
792
|
+
async function handleSetActiveManifest({ req, res }) {
|
|
714
793
|
const body = JSON.parse(await readBody(req));
|
|
715
794
|
const fileName = sanitizeFileName(body.name || "default");
|
|
716
|
-
if (!fs2.existsSync(
|
|
717
|
-
jsonResponse(res, 404, { error: "
|
|
795
|
+
if (!fs2.existsSync(manifestsResource.filePath(fileName))) {
|
|
796
|
+
jsonResponse(res, 404, { error: "Manifest not found" });
|
|
718
797
|
return;
|
|
719
798
|
}
|
|
720
|
-
|
|
799
|
+
manifestsResource.setActiveName(fileName);
|
|
721
800
|
jsonResponse(res, 200, { ok: true, activeFile: fileName });
|
|
722
801
|
}
|
|
723
|
-
async function
|
|
724
|
-
const prodFile = presetsResource.getProductionName();
|
|
725
|
-
const filePath = presetsResource.filePath(prodFile);
|
|
726
|
-
if (!fs2.existsSync(filePath)) {
|
|
727
|
-
jsonResponse(res, 200, {
|
|
728
|
-
fileName: prodFile,
|
|
729
|
-
name: prodFile,
|
|
730
|
-
theme: "default",
|
|
731
|
-
componentConfigs: {},
|
|
732
|
-
updatedAt: ""
|
|
733
|
-
});
|
|
734
|
-
return;
|
|
735
|
-
}
|
|
736
|
-
const data = JSON.parse(fs2.readFileSync(filePath, "utf-8"));
|
|
737
|
-
jsonResponse(res, 200, {
|
|
738
|
-
fileName: prodFile,
|
|
739
|
-
name: data.name || prodFile,
|
|
740
|
-
theme: data.theme || "default",
|
|
741
|
-
componentConfigs: data.componentConfigs || {},
|
|
742
|
-
updatedAt: data.updatedAt || ""
|
|
743
|
-
});
|
|
744
|
-
}
|
|
745
|
-
async function handleSetProductionPreset({ req, res }) {
|
|
746
|
-
const body = JSON.parse(await readBody(req));
|
|
747
|
-
const fileName = sanitizeFileName(body.name || "default");
|
|
748
|
-
const presetPath = presetsResource.filePath(fileName);
|
|
749
|
-
if (!fs2.existsSync(presetPath)) {
|
|
750
|
-
jsonResponse(res, 404, { error: "Preset not found" });
|
|
751
|
-
return;
|
|
752
|
-
}
|
|
753
|
-
const preset = JSON.parse(fs2.readFileSync(presetPath, "utf-8"));
|
|
754
|
-
const themeName = sanitizeFileName(preset.theme || "default");
|
|
755
|
-
if (!fs2.existsSync(themesResource.filePath(themeName))) {
|
|
756
|
-
jsonResponse(res, 422, { error: `Preset references missing theme: ${themeName}` });
|
|
757
|
-
return;
|
|
758
|
-
}
|
|
759
|
-
const knownComponents = new Set(listComponentNames());
|
|
760
|
-
const componentConfigs = preset.componentConfigs ?? {};
|
|
761
|
-
const apply = [];
|
|
762
|
-
for (const [comp, configFile] of Object.entries(componentConfigs)) {
|
|
763
|
-
if (!knownComponents.has(comp)) continue;
|
|
764
|
-
const sanitized = sanitizeFileName(String(configFile) || "default");
|
|
765
|
-
if (!fs2.existsSync(componentResource(comp).filePath(sanitized))) {
|
|
766
|
-
jsonResponse(res, 422, {
|
|
767
|
-
error: `Preset references missing config: ${comp}/${sanitized}`
|
|
768
|
-
});
|
|
769
|
-
return;
|
|
770
|
-
}
|
|
771
|
-
apply.push([comp, sanitized]);
|
|
772
|
-
}
|
|
773
|
-
themesResource.setProductionName(themeName);
|
|
774
|
-
for (const [comp, configFile] of apply) {
|
|
775
|
-
componentResource(comp).setProductionName(configFile);
|
|
776
|
-
}
|
|
777
|
-
presetsResource.setProductionName(fileName);
|
|
778
|
-
syncTokensToCss(themeName);
|
|
779
|
-
syncFontsToCss(themeName);
|
|
780
|
-
syncComponentsToCss();
|
|
781
|
-
jsonResponse(res, 200, {
|
|
782
|
-
ok: true,
|
|
783
|
-
fileName,
|
|
784
|
-
name: preset.name || fileName,
|
|
785
|
-
theme: themeName,
|
|
786
|
-
componentConfigs: Object.fromEntries(apply),
|
|
787
|
-
updatedAt: preset.updatedAt || ""
|
|
788
|
-
});
|
|
789
|
-
}
|
|
790
|
-
async function handlePresetByName({ params, req, res }) {
|
|
802
|
+
async function handleManifestByName({ params, req, res }) {
|
|
791
803
|
const [fileName] = params;
|
|
792
|
-
const filePath =
|
|
804
|
+
const filePath = manifestsResource.filePath(fileName);
|
|
793
805
|
if (req.method === "GET") {
|
|
794
806
|
if (!fs2.existsSync(filePath)) {
|
|
795
807
|
jsonResponse(res, 404, { error: "Not found" });
|
|
@@ -802,7 +814,7 @@ ${COMPONENT_OVERRIDES_END}
|
|
|
802
814
|
}
|
|
803
815
|
if (req.method === "PUT") {
|
|
804
816
|
if (fileName === "default") {
|
|
805
|
-
jsonResponse(res, 403, { error: "Cannot overwrite the default
|
|
817
|
+
jsonResponse(res, 403, { error: "Cannot overwrite the default manifest" });
|
|
806
818
|
return;
|
|
807
819
|
}
|
|
808
820
|
const body = JSON.parse(await readBody(req));
|
|
@@ -821,35 +833,35 @@ ${COMPONENT_OVERRIDES_END}
|
|
|
821
833
|
}
|
|
822
834
|
if (req.method === "DELETE") {
|
|
823
835
|
if (fileName === "default") {
|
|
824
|
-
jsonResponse(res, 403, { error: "Cannot delete the default
|
|
836
|
+
jsonResponse(res, 403, { error: "Cannot delete the default manifest" });
|
|
825
837
|
return;
|
|
826
838
|
}
|
|
827
839
|
if (fs2.existsSync(filePath)) {
|
|
828
840
|
fs2.unlinkSync(filePath);
|
|
829
|
-
if (
|
|
830
|
-
|
|
841
|
+
if (manifestsResource.getActiveName() === fileName) {
|
|
842
|
+
manifestsResource.setActiveName("default");
|
|
831
843
|
}
|
|
832
844
|
}
|
|
833
845
|
jsonResponse(res, 200, { ok: true });
|
|
834
846
|
return;
|
|
835
847
|
}
|
|
836
848
|
}
|
|
837
|
-
async function
|
|
849
|
+
async function handleApplyManifest({ params, res }) {
|
|
838
850
|
const [fileName] = params;
|
|
839
|
-
const
|
|
840
|
-
if (!fs2.existsSync(
|
|
841
|
-
jsonResponse(res, 404, { error: "
|
|
851
|
+
const manifestPath = manifestsResource.filePath(fileName);
|
|
852
|
+
if (!fs2.existsSync(manifestPath)) {
|
|
853
|
+
jsonResponse(res, 404, { error: "Manifest not found" });
|
|
842
854
|
return;
|
|
843
855
|
}
|
|
844
|
-
const
|
|
845
|
-
const themeName = sanitizeFileName(
|
|
856
|
+
const manifest = JSON.parse(fs2.readFileSync(manifestPath, "utf-8"));
|
|
857
|
+
const themeName = sanitizeFileName(manifest.theme || "default");
|
|
846
858
|
const themePath = themesResource.filePath(themeName);
|
|
847
859
|
if (!fs2.existsSync(themePath)) {
|
|
848
|
-
jsonResponse(res, 422, { error: `
|
|
860
|
+
jsonResponse(res, 422, { error: `Manifest references missing theme: ${themeName}` });
|
|
849
861
|
return;
|
|
850
862
|
}
|
|
851
863
|
const knownComponents = new Set(listComponentNames());
|
|
852
|
-
const componentConfigs =
|
|
864
|
+
const componentConfigs = manifest.componentConfigs ?? {};
|
|
853
865
|
const resolvedConfigs = {};
|
|
854
866
|
const apply = [];
|
|
855
867
|
for (const [comp, configFile] of Object.entries(componentConfigs)) {
|
|
@@ -859,7 +871,7 @@ ${COMPONENT_OVERRIDES_END}
|
|
|
859
871
|
const cfgPath = r.filePath(sanitized);
|
|
860
872
|
if (!fs2.existsSync(cfgPath)) {
|
|
861
873
|
jsonResponse(res, 422, {
|
|
862
|
-
error: `
|
|
874
|
+
error: `Manifest references missing config: ${comp}/${sanitized}`
|
|
863
875
|
});
|
|
864
876
|
return;
|
|
865
877
|
}
|
|
@@ -880,10 +892,10 @@ ${COMPONENT_OVERRIDES_END}
|
|
|
880
892
|
const cfg = readComponentConfig(comp, activeName);
|
|
881
893
|
if (cfg) resolvedConfigs[comp] = { ...cfg, _fileName: activeName };
|
|
882
894
|
}
|
|
883
|
-
|
|
895
|
+
manifestsResource.setActiveName(fileName);
|
|
884
896
|
jsonResponse(res, 200, {
|
|
885
897
|
ok: true,
|
|
886
|
-
|
|
898
|
+
manifest: { ...manifest, _fileName: fileName },
|
|
887
899
|
theme: themeData,
|
|
888
900
|
componentConfigs: resolvedConfigs
|
|
889
901
|
});
|
|
@@ -921,21 +933,19 @@ ${COMPONENT_OVERRIDES_END}
|
|
|
921
933
|
{ method: "GET", pattern: THEME_BY_NAME_REGEX, handler: handleThemeByName },
|
|
922
934
|
{ method: "PUT", pattern: THEME_BY_NAME_REGEX, handler: handleThemeByName },
|
|
923
935
|
{ method: "DELETE", pattern: THEME_BY_NAME_REGEX, handler: handleThemeByName },
|
|
924
|
-
//
|
|
925
|
-
{ method: "GET", pattern:
|
|
926
|
-
{ method: "GET", pattern:
|
|
927
|
-
{ method: "PUT", pattern:
|
|
928
|
-
|
|
929
|
-
{ method: "PUT", pattern:
|
|
930
|
-
|
|
931
|
-
{ method: "
|
|
932
|
-
{ method: "
|
|
933
|
-
|
|
934
|
-
{ method: "
|
|
935
|
-
|
|
936
|
-
{ method: "
|
|
937
|
-
{ method: "PUT", pattern: PRESET_BY_NAME_REGEX, handler: handlePresetByName },
|
|
938
|
-
{ 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 }
|
|
939
949
|
];
|
|
940
950
|
return {
|
|
941
951
|
name: "theme-file-api",
|
|
@@ -950,7 +960,7 @@ ${COMPONENT_OVERRIDES_END}
|
|
|
950
960
|
configureServer(server) {
|
|
951
961
|
ensureThemesDir();
|
|
952
962
|
ensureComponentConfigsDir();
|
|
953
|
-
|
|
963
|
+
ensureManifestsDir();
|
|
954
964
|
server.middlewares.use(async (req, res, next) => {
|
|
955
965
|
const handled = await dispatch(req, res, routes);
|
|
956
966
|
if (!handled) next();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@motion-proto/live-tokens",
|
|
3
|
-
"version": "0.
|
|
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/
|
|
23
|
-
"src/
|
|
24
|
-
"src/
|
|
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/
|
|
48
|
-
"types": "./src/
|
|
49
|
-
"default": "./src/
|
|
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
|
-
"./
|
|
82
|
-
"./
|
|
83
|
-
"./
|
|
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",
|