@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.
- package/README.md +14 -13
- package/dist-plugin/index.cjs +149 -136
- package/dist-plugin/index.d.cts +1 -1
- package/dist-plugin/index.d.ts +1 -1
- package/dist-plugin/index.js +147 -135
- package/package.json +26 -41
- 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,15 +106,34 @@ async function dispatch(req, res, routes) {
|
|
|
106
106
|
return false;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
//
|
|
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
|
|
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
|
|
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
|
|
327
|
-
|
|
328
|
-
|
|
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
|
|
336
|
-
name: "Default
|
|
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(
|
|
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
|
-
|
|
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
|
|
410
|
-
const
|
|
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
|
|
418
|
-
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\\-_]+)$`);
|
|
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
|
|
687
|
-
const activeFile =
|
|
688
|
-
const files = fs2.readdirSync(
|
|
689
|
-
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);
|
|
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
|
|
702
|
-
const activeFile =
|
|
703
|
-
const filePath =
|
|
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
|
|
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
|
|
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(
|
|
716
|
-
jsonResponse(res, 404, { error: "
|
|
795
|
+
if (!fs2.existsSync(manifestsResource.filePath(fileName))) {
|
|
796
|
+
jsonResponse(res, 404, { error: "Manifest not found" });
|
|
717
797
|
return;
|
|
718
798
|
}
|
|
719
|
-
|
|
799
|
+
manifestsResource.setActiveName(fileName);
|
|
720
800
|
jsonResponse(res, 200, { ok: true, activeFile: fileName });
|
|
721
801
|
}
|
|
722
|
-
async function
|
|
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 =
|
|
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
|
|
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
|
|
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 (
|
|
829
|
-
|
|
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
|
|
849
|
+
async function handleApplyManifest({ params, res }) {
|
|
837
850
|
const [fileName] = params;
|
|
838
|
-
const
|
|
839
|
-
if (!fs2.existsSync(
|
|
840
|
-
jsonResponse(res, 404, { error: "
|
|
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
|
|
844
|
-
const themeName = sanitizeFileName(
|
|
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: `
|
|
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 =
|
|
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: `
|
|
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
|
-
|
|
895
|
+
manifestsResource.setActiveName(fileName);
|
|
883
896
|
jsonResponse(res, 200, {
|
|
884
897
|
ok: true,
|
|
885
|
-
|
|
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
|
-
//
|
|
924
|
-
{ method: "GET", pattern:
|
|
925
|
-
{ method: "GET", pattern:
|
|
926
|
-
{ method: "PUT", pattern:
|
|
927
|
-
|
|
928
|
-
{ method: "PUT", pattern:
|
|
929
|
-
|
|
930
|
-
{ method: "
|
|
931
|
-
{ method: "
|
|
932
|
-
|
|
933
|
-
{ method: "
|
|
934
|
-
|
|
935
|
-
{ method: "
|
|
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
|
-
|
|
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.
|
|
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",
|
|
@@ -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
|
|
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",
|