@motion-proto/live-tokens 0.1.1 → 0.3.2
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 +168 -21
- package/dist-plugin/index.cjs +823 -336
- package/dist-plugin/index.d.cts +9 -7
- package/dist-plugin/index.d.ts +9 -7
- package/dist-plugin/index.js +822 -335
- package/package.json +46 -20
- package/src/assets/newspaper.webp +0 -0
- package/src/assets/offering.webp +0 -0
- package/src/component-editor/BadgeEditor.svelte +170 -0
- package/src/component-editor/CalloutEditor.svelte +103 -0
- package/src/component-editor/CardEditor.svelte +184 -0
- package/src/component-editor/CollapsibleSectionEditor.svelte +167 -0
- package/src/component-editor/CornerBadgeEditor.svelte +207 -0
- package/src/component-editor/DialogEditor.svelte +172 -0
- package/src/component-editor/ImageEditor.svelte +72 -0
- package/src/component-editor/InlineEditActionsEditor.svelte +83 -0
- package/src/component-editor/NotificationEditor.svelte +160 -0
- package/src/component-editor/ProgressBarEditor.svelte +124 -0
- package/src/component-editor/RadioButtonEditor.svelte +140 -0
- package/src/component-editor/SectionDividerEditor.svelte +263 -0
- package/src/component-editor/SegmentedControlEditor.svelte +154 -0
- package/src/component-editor/StandardButtonsEditor.svelte +178 -0
- package/src/component-editor/TabBarEditor.svelte +137 -0
- package/src/component-editor/TableEditor.svelte +128 -0
- package/src/component-editor/TooltipEditor.svelte +122 -0
- package/src/component-editor/editorTokens.test.ts +93 -0
- package/src/component-editor/groupKeySlots.test.ts +67 -0
- package/src/component-editor/groupKeySnapshot.test.ts +52 -0
- package/src/component-editor/index.ts +5 -0
- package/src/component-editor/registry.ts +246 -0
- package/src/component-editor/scaffolding/AngleDial.svelte +185 -0
- package/src/component-editor/scaffolding/ComponentEditorBase.svelte +96 -0
- package/src/component-editor/scaffolding/ComponentFileManager.svelte +682 -0
- package/src/component-editor/scaffolding/ComponentFileMenu.svelte +312 -0
- package/src/component-editor/scaffolding/ComponentsTab.svelte +69 -0
- package/src/component-editor/scaffolding/CopyFromMenu.svelte +246 -0
- package/src/component-editor/scaffolding/DemoHeader.svelte +21 -0
- package/src/component-editor/scaffolding/DividerEditor.svelte +81 -0
- package/src/component-editor/scaffolding/FieldsetWrapper.svelte +46 -0
- package/src/component-editor/scaffolding/GradientCard.svelte +291 -0
- package/src/component-editor/scaffolding/LinkageChart.svelte +297 -0
- package/src/component-editor/scaffolding/LinkedBlock.svelte +418 -0
- package/src/component-editor/scaffolding/NonStylableConfig.svelte +57 -0
- package/src/component-editor/scaffolding/SaveAsDialog.svelte +177 -0
- package/src/component-editor/scaffolding/ShadowBackdrop.svelte +25 -0
- package/src/component-editor/scaffolding/ShadowBackdropControls.svelte +56 -0
- package/src/component-editor/scaffolding/StateBlock.svelte +115 -0
- package/src/component-editor/scaffolding/TokenLayout.svelte +511 -0
- package/src/component-editor/scaffolding/TypeEditor.svelte +82 -0
- package/src/component-editor/scaffolding/VariantGroup.svelte +277 -0
- package/src/component-editor/scaffolding/buildTypeGroupTokens.ts +97 -0
- package/src/component-editor/scaffolding/componentSectionType.ts +8 -0
- package/src/component-editor/scaffolding/componentSources.ts +9 -0
- package/src/component-editor/scaffolding/defaultSections.ts +16 -0
- package/src/component-editor/scaffolding/editorContext.ts +44 -0
- package/src/component-editor/scaffolding/linkedBlock.ts +226 -0
- package/src/component-editor/scaffolding/siblings.ts +33 -0
- package/src/component-editor/scaffolding/types.ts +39 -0
- package/src/components/Badge.svelte +231 -42
- package/src/components/Button.svelte +324 -124
- package/src/components/Callout.svelte +145 -0
- package/src/components/Card.svelte +123 -25
- package/src/components/CollapsibleSection.svelte +213 -35
- package/src/components/CornerBadge.svelte +224 -0
- package/src/components/Dialog.svelte +137 -114
- package/src/components/Image.svelte +43 -0
- package/src/components/InlineEditActions.svelte +74 -14
- package/src/components/Notification.svelte +184 -163
- package/src/components/ProgressBar.svelte +216 -22
- package/src/components/RadioButton.svelte +110 -40
- package/src/components/SectionDivider.svelte +428 -74
- package/src/components/SegmentedControl.svelte +203 -0
- package/src/components/TabBar.svelte +146 -21
- package/src/components/Table.svelte +102 -0
- package/src/components/Tooltip.svelte +45 -19
- package/src/components/types.ts +51 -0
- package/src/data/google-fonts.json +75 -0
- package/src/lib/ColumnsOverlay.svelte +20 -7
- package/src/lib/LiveEditorOverlay.svelte +257 -78
- package/src/lib/columnsOverlay.ts +21 -17
- package/src/lib/componentConfig.test.ts +204 -0
- package/src/lib/componentConfigKeys.ts +19 -0
- package/src/lib/componentConfigService.ts +88 -0
- package/src/lib/copyPopover.ts +30 -0
- package/src/lib/cssVarSync.ts +59 -7
- package/src/lib/editorConfigStore.ts +0 -10
- package/src/lib/editorCore.ts +402 -0
- package/src/lib/editorKeybindings.ts +52 -0
- package/src/lib/editorPersistence.ts +106 -0
- package/src/lib/editorRenderer.ts +74 -0
- package/src/lib/editorStore.test.ts +328 -0
- package/src/lib/editorStore.ts +412 -0
- package/src/lib/editorTypes.ts +100 -0
- package/src/lib/editorViewStore.ts +55 -0
- package/src/lib/files/versionedFileResource.ts +140 -0
- package/src/lib/fontLoader.ts +130 -0
- package/src/lib/fontMigration.ts +140 -0
- package/src/lib/fontParse.ts +168 -0
- package/src/lib/index.ts +48 -30
- package/src/lib/lazyConfig.test.ts +54 -0
- package/src/lib/migrations/2026-04-24-component-prefix-and-suffix-renames.ts +64 -0
- package/src/lib/migrations/2026-04-24-legacy-keys-and-bg-to-canvas.ts +71 -0
- package/src/lib/migrations/2026-04-27-segmentedcontrol-disabled-flatten.ts +43 -0
- package/src/lib/migrations/2026-05-08-collapsiblesection-frame-and-cleanup.ts +68 -0
- package/src/lib/migrations/2026-05-08-collapsiblesection-variant-namespace.ts +35 -0
- package/src/lib/migrations/2026-05-10-sectiondivider-gradient-stops.ts +50 -0
- package/src/lib/migrations/2026-05-13-primary-to-brand.ts +90 -0
- package/src/lib/migrations/index.ts +93 -0
- package/src/lib/migrations/migrations.test.ts +341 -0
- package/src/lib/navLinkTypes.ts +1 -0
- package/src/lib/overlayState.ts +3 -0
- package/src/lib/paletteDerivation.ts +300 -0
- package/src/lib/parentRouteStore.ts +42 -0
- package/src/lib/parsers/globalRootBlock.ts +32 -0
- package/src/lib/presetService.ts +94 -0
- package/src/lib/router.ts +42 -10
- package/src/lib/scrollSection.ts +45 -0
- package/src/lib/slices/columns.ts +59 -0
- package/src/lib/slices/components.ts +362 -0
- package/src/lib/slices/domainVars.ts +15 -0
- package/src/lib/slices/fonts.ts +30 -0
- package/src/lib/slices/gradients.ts +153 -0
- package/src/lib/slices/overlays.ts +132 -0
- package/src/lib/slices/palettes.ts +26 -0
- package/src/lib/slices/shadows.ts +123 -0
- package/src/lib/storage.ts +88 -0
- package/src/lib/themeInit.ts +74 -0
- package/src/lib/themeService.ts +101 -0
- package/src/lib/themeTypes.ts +146 -0
- package/src/lib/tokenRegistry.ts +148 -0
- package/src/pages/ComponentEditorPage.svelte +384 -0
- package/src/pages/ComponentEditorPage.svelte.d.ts +2 -0
- package/src/pages/Editor.svelte +98 -0
- package/src/pages/Editor.svelte.d.ts +2 -0
- package/src/pages/EditorShell.svelte +348 -0
- package/src/styles/_padding.scss +34 -0
- package/src/styles/fonts/Fraunces/Fraunces-italic-latin-ext.woff2 +0 -0
- package/src/styles/fonts/Fraunces/Fraunces-italic-latin.woff2 +0 -0
- package/src/styles/fonts/Fraunces/Fraunces-roman-latin-ext.woff2 +0 -0
- package/src/styles/fonts/Fraunces/Fraunces-roman-latin.woff2 +0 -0
- package/src/styles/fonts/Manrope/Manrope-latin-ext.woff2 +0 -0
- package/src/styles/fonts/Manrope/Manrope-latin.woff2 +0 -0
- package/src/styles/fonts.css +22 -10
- package/src/styles/form-controls.css +14 -16
- package/src/styles/tokens.css +1322 -0
- package/src/styles/ui-editor.css +126 -0
- package/src/{showcase → ui}/BezierCurveEditor.svelte +14 -14
- package/src/{showcase → ui}/ColorEditPanel.svelte +42 -36
- package/src/ui/EditorViewSwitcher.svelte +180 -0
- package/src/ui/FontStackEditor.svelte +360 -0
- package/src/ui/GradientEditor.svelte +461 -0
- package/src/ui/GradientStopPicker.svelte +74 -0
- package/src/ui/PaletteEditor.svelte +1590 -0
- package/src/ui/PaletteEditor.test.ts +108 -0
- package/src/ui/PresetFileManager.svelte +567 -0
- package/src/ui/ProjectFontsSection.svelte +645 -0
- package/src/{showcase → ui}/SurfacesTab.svelte +39 -39
- package/src/{showcase → ui}/TextTab.svelte +27 -27
- package/src/{showcase/TokenFileManager.svelte → ui/ThemeFileManager.svelte} +196 -112
- package/src/ui/Toggle.svelte +108 -0
- package/src/ui/UICopyPopover.svelte +78 -0
- package/src/{showcase/EditorDialog.svelte → ui/UIDialog.svelte} +66 -25
- package/src/ui/UIFontFamilySelector.svelte +309 -0
- package/src/ui/UIFontSizeSelector.svelte +165 -0
- package/src/ui/UIFontWeightSelector.svelte +52 -0
- package/src/ui/UILineHeightSelector.svelte +47 -0
- package/src/ui/UILinkToggle.svelte +60 -0
- package/src/ui/UIOptionItem.svelte +74 -0
- package/src/ui/UIOptionList.svelte +27 -0
- package/src/ui/UIPaddingSelector.svelte +661 -0
- package/src/ui/UIPaletteSelector.svelte +1084 -0
- package/src/ui/UIRadio.svelte +72 -0
- package/src/ui/UIRadioGroup.svelte +59 -0
- package/src/ui/UIRelinkConfirmPopover.svelte +235 -0
- package/src/ui/UITokenSelector.svelte +509 -0
- package/src/ui/UIVariantSelector.svelte +145 -0
- package/src/ui/VariablesTab.svelte +252 -0
- package/src/ui/index.ts +31 -0
- package/src/ui/keepInViewport.ts +84 -0
- package/src/ui/palette/GradientStopEditor.svelte +482 -0
- package/src/ui/palette/OverridesPanel.svelte +526 -0
- package/src/ui/palette/PaletteBase.svelte +165 -0
- package/src/ui/palette/ScaleCurveEditor.svelte +38 -0
- package/src/ui/palette/paletteEditorState.ts +89 -0
- package/src/ui/sections/ColumnsSection.svelte +273 -0
- package/src/ui/sections/GradientsSection.svelte +147 -0
- package/src/ui/sections/OverlaysSection.svelte +670 -0
- package/src/ui/sections/ShadowsSection.svelte +1250 -0
- package/src/ui/sections/TokenScaleTable.svelte +332 -0
- package/src/ui/sections/tokenScales.ts +81 -0
- package/src/ui/variantScales.ts +108 -0
- package/src/components/DetailNav.svelte +0 -78
- package/src/components/Toggle.svelte +0 -86
- package/src/lib/tokenInit.ts +0 -29
- package/src/lib/tokenService.ts +0 -144
- package/src/lib/tokenTypes.ts +0 -45
- package/src/pages/Admin.svelte +0 -100
- package/src/pages/ShowcasePage.svelte +0 -144
- package/src/showcase/BackupBrowser.svelte +0 -617
- package/src/showcase/ComponentsTab.svelte +0 -105
- package/src/showcase/PaletteEditor.svelte +0 -2579
- package/src/showcase/PaletteSelector.svelte +0 -627
- package/src/showcase/TokenMap.svelte +0 -54
- package/src/showcase/VariablesTab.svelte +0 -2655
- package/src/showcase/VisualsTab.svelte +0 -231
- package/src/showcase/demos/BadgeDemo.svelte +0 -56
- package/src/showcase/demos/CardDemo.svelte +0 -50
- package/src/showcase/demos/ChoiceButtonsDemo.svelte +0 -192
- package/src/showcase/demos/CollapsibleSectionDemo.svelte +0 -54
- package/src/showcase/demos/DialogDemo.svelte +0 -42
- package/src/showcase/demos/InlineEditActionsDemo.svelte +0 -25
- package/src/showcase/demos/NotificationDemo.svelte +0 -147
- package/src/showcase/demos/ProgressBarDemo.svelte +0 -54
- package/src/showcase/demos/RadioButtonDemo.svelte +0 -56
- package/src/showcase/demos/SectionDividerDemo.svelte +0 -77
- package/src/showcase/demos/StandardButtonsDemo.svelte +0 -455
- package/src/showcase/demos/TabBarDemo.svelte +0 -58
- package/src/showcase/demos/TooltipDemo.svelte +0 -52
- package/src/showcase/editor.css +0 -93
- package/src/showcase/index.ts +0 -17
- package/src/styles/fonts/Domine/Domine-VariableFont_wght.ttf +0 -0
- package/src/styles/fonts/Domine/OFL.txt +0 -97
- package/src/styles/fonts/Domine/README.txt +0 -66
- /package/src/{showcase → ui}/curveEngine.ts +0 -0
package/README.md
CHANGED
|
@@ -1,40 +1,187 @@
|
|
|
1
1
|
# Live Tokens
|
|
2
2
|
|
|
3
|
-
A
|
|
3
|
+
A foundational design system for quickly styling and building Svelte 4 + Vite microsites. **Edit your tokens and components in real time** — colors, typography, spacing, per-component aliases — and see the site update as you drag the slider. Save the result as a portable configuration you can carry from project to project.
|
|
4
|
+
|
|
5
|
+
`npm install @motion-proto/live-tokens` into your app — install once, style fast. The editor is dev-only; production builds get plain CSS variables and your chosen components, nothing else.
|
|
4
6
|
|
|
5
7
|
## What you get
|
|
6
8
|
|
|
7
|
-
- **
|
|
8
|
-
- **
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
9
|
+
- **Real-time token editing.** Pick a color, drag a hue slider, retype a font size — the page repaints on every input event via CSS-variable writes. No reload, no save-and-refresh, no build step. Works across colors, typography, spacing, radii, shadows, motion, palettes, and gradients.
|
|
10
|
+
- **Real-time component editing.** Each of ~19 shipped Svelte components (Button, Card, Dialog, Badge, Callout, Table, Tooltip, Toggle, Tabs, SegmentedControl, ProgressBar, CornerBadge, SectionDivider, CollapsibleSection, and more) declares its own design-token aliases in a `:global(:root)` block. Rewire any alias from a per-component picker and see that component update everywhere it's used — live, on your real pages, not in a Storybook sandbox.
|
|
11
|
+
- **Theme editor** (`/editor` route, dev-only) — the home of real-time token editing. Save themes to disk as JSON, promote one to "production" to bake it into a static `tokens.css` for the build.
|
|
12
|
+
- **Per-component editor** (`/components` route, dev-only) — the home of real-time component-alias editing. Pick token aliases per component without writing CSS.
|
|
13
|
+
- **Live editor overlay** — pins to the top-right of every dev page. Opens the editor in a side panel or floating window so you edit *on the page you're styling*, not in a separate tab. Includes a "Page Source" button that opens the current page's `.svelte` file in VS Code.
|
|
14
|
+
- **Preset bundles** — capture a whole site configuration (active theme + every component's active config) as a single portable artifact. Drop a preset into a new project to restore the full styling in one step.
|
|
15
|
+
- **Vite plugin** — hosts the `/api/themes/*`, `/api/component-configs/*`, and `/api/presets/*` routes that persist your edits to disk as you make them.
|
|
16
|
+
|
|
17
|
+
## Quick install
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install @motion-proto/live-tokens
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Vite config
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
// vite.config.ts
|
|
27
|
+
import { defineConfig } from 'vite';
|
|
28
|
+
import { svelte } from '@sveltejs/vite-plugin-svelte';
|
|
29
|
+
import { themeFileApi } from '@motion-proto/live-tokens/vite-plugin';
|
|
30
|
+
|
|
31
|
+
export default defineConfig({
|
|
32
|
+
plugins: [
|
|
33
|
+
svelte(),
|
|
34
|
+
themeFileApi({
|
|
35
|
+
themesDir: 'themes',
|
|
36
|
+
tokensCssPath: 'src/styles/tokens.css',
|
|
37
|
+
}),
|
|
38
|
+
],
|
|
39
|
+
optimizeDeps: {
|
|
40
|
+
exclude: ['@motion-proto/live-tokens'],
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The `themeFileApi` plugin:
|
|
46
|
+
- Seeds `themes/` with a default theme on first dev-server start.
|
|
47
|
+
- Discovers components at `src/components/*.svelte` and seeds `component-configs/{comp}/default.json` from each component's `:global(:root)` block.
|
|
48
|
+
- Hosts the `/api/*` routes the editor uses to save and load themes + per-component configs.
|
|
49
|
+
- Auto-injects `__PROJECT_ROOT__` for the overlay's "Page Source" link.
|
|
50
|
+
|
|
51
|
+
### Bootstrap in `main.ts`
|
|
52
|
+
|
|
53
|
+
```ts
|
|
54
|
+
import './styles/tokens.css';
|
|
55
|
+
import {
|
|
56
|
+
configureEditor,
|
|
57
|
+
initializeTheme,
|
|
58
|
+
initCssVarSync,
|
|
59
|
+
initRouter,
|
|
60
|
+
initColumnsOverlay,
|
|
61
|
+
initEditorStore,
|
|
62
|
+
} from '@motion-proto/live-tokens';
|
|
63
|
+
import App from './App.svelte';
|
|
64
|
+
|
|
65
|
+
configureEditor({ storagePrefix: 'my-app-' });
|
|
66
|
+
|
|
67
|
+
async function boot() {
|
|
68
|
+
initCssVarSync();
|
|
69
|
+
initRouter();
|
|
70
|
+
initColumnsOverlay();
|
|
71
|
+
initEditorStore();
|
|
72
|
+
if (import.meta.env.DEV) {
|
|
73
|
+
await initializeTheme();
|
|
74
|
+
}
|
|
75
|
+
new App({ target: document.getElementById('app')! });
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
boot();
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Mount overlay + editor pages
|
|
82
|
+
|
|
83
|
+
```svelte
|
|
84
|
+
<!-- App.svelte -->
|
|
85
|
+
<script lang="ts">
|
|
86
|
+
import { LiveEditorOverlay, ColumnsOverlay } from '@motion-proto/live-tokens';
|
|
87
|
+
import Editor from '@motion-proto/live-tokens/editor';
|
|
88
|
+
import ComponentEditorPage from '@motion-proto/live-tokens/component-editor-page';
|
|
89
|
+
import { route } from './router';
|
|
90
|
+
</script>
|
|
91
|
+
|
|
92
|
+
<LiveEditorOverlay
|
|
93
|
+
navLinks={[
|
|
94
|
+
{ path: '/', label: 'Home', icon: 'fa-home' },
|
|
95
|
+
{ path: '/components', label: 'Components', icon: 'fa-puzzle-piece' },
|
|
96
|
+
]}
|
|
97
|
+
pageSources={{
|
|
98
|
+
'/': 'src/pages/Home.svelte',
|
|
99
|
+
}}
|
|
100
|
+
/>
|
|
101
|
+
<ColumnsOverlay />
|
|
102
|
+
|
|
103
|
+
{#if $route === '/editor'}
|
|
104
|
+
<Editor />
|
|
105
|
+
{:else if $route === '/components'}
|
|
106
|
+
<ComponentEditorPage />
|
|
107
|
+
{:else}
|
|
108
|
+
<!-- your routes -->
|
|
109
|
+
{/if}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
`<LiveEditorOverlay />` self-gates: it only renders in dev, never inside an iframe, and never on the editor route. No need to wrap in `{#if import.meta.env.DEV}` guards.
|
|
113
|
+
|
|
114
|
+
### Use components
|
|
115
|
+
|
|
116
|
+
```svelte
|
|
117
|
+
<script lang="ts">
|
|
118
|
+
import Button from '@motion-proto/live-tokens/components/Button.svelte';
|
|
119
|
+
import Callout from '@motion-proto/live-tokens/components/Callout.svelte';
|
|
120
|
+
</script>
|
|
121
|
+
|
|
122
|
+
<Callout variant="info">Read this.</Callout>
|
|
123
|
+
<Button variant="primary">Save</Button>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The components carry their own design-token aliases (declared inside each `.svelte` file). They'll pick up your `tokens.css` overrides automatically. Strip out the ones you don't use; nothing is forced.
|
|
127
|
+
|
|
128
|
+
### Styles
|
|
129
|
+
|
|
130
|
+
```ts
|
|
131
|
+
import '@motion-proto/live-tokens/styles/ui-editor.css';
|
|
132
|
+
import '@motion-proto/live-tokens/styles/form-controls.css';
|
|
133
|
+
import '@motion-proto/live-tokens/styles/fonts.css';
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
You'll also need your own `src/styles/tokens.css` declaring your design tokens as CSS variables on `:root`. Start from the package's default (`node_modules/@motion-proto/live-tokens/src/styles/tokens.css`) and overlay your overrides — or let the editor seed `themes/default.json` on first run and promote it.
|
|
137
|
+
|
|
138
|
+
## Greenfield? Use the starter
|
|
12
139
|
|
|
13
|
-
|
|
140
|
+
If you're starting from scratch, skip the manual wiring and clone the repo as a template — `App.svelte`, `main.ts`, the router, and a placeholder `Home.svelte` saying "put your content here" are all pre-wired.
|
|
14
141
|
|
|
15
142
|
```bash
|
|
143
|
+
npx degit motionproto/live-tokens my-app
|
|
144
|
+
cd my-app
|
|
16
145
|
npm install
|
|
17
146
|
npm run dev
|
|
18
147
|
```
|
|
19
148
|
|
|
20
|
-
Open http://localhost:5173. The
|
|
149
|
+
Open http://localhost:5173 and replace `src/pages/Home.svelte` with your content. The rest of the wiring is already done — it's the same code the npm package ships, just with the App-shell scaffolding included.
|
|
21
150
|
|
|
22
|
-
##
|
|
151
|
+
## How the editor ships changes to prod
|
|
23
152
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
- `src/components/` — the reusable components
|
|
28
|
-
- `src/showcase/` — the editor UI (tabs, palette editors, curve editor, backup browser)
|
|
29
|
-
- `src/lib/` — the overlay, router glue, token persistence, and color helpers
|
|
30
|
-
- `src/styles/variables.css` — the generated CSS variables (this is the source of truth at runtime)
|
|
31
|
-
- `tokens/` — persisted palette files; `_active.json` selects the palette loaded on dev, `_production.json` selects the palette synced to CSS
|
|
153
|
+
1. Edit in `/editor` or `/components`. Saves write to `themes/{name}.json` and `component-configs/{comp}/{name}.json`.
|
|
154
|
+
2. Promote a theme to "production." Its variables are written into `src/styles/tokens.css` and backed up under `src/styles/_backups/`.
|
|
155
|
+
3. `npm run build` bundles `tokens.css` as plain CSS. No editor code, no JSON lookups, no dev surfaces ship to prod.
|
|
32
156
|
|
|
33
|
-
##
|
|
157
|
+
## File ownership — what the plugin writes
|
|
158
|
+
|
|
159
|
+
Knowing which files the plugin touches matters when upgrading the package or working in a repo you don't want overwritten.
|
|
160
|
+
|
|
161
|
+
**On `npm install` or `npm update`: nothing outside `node_modules/`.** No install hooks. Upgrading versions never touches your `themes/`, `component-configs/`, `presets/`, or any file in `src/`.
|
|
162
|
+
|
|
163
|
+
**At dev-server startup, the plugin only fills gaps — it never overwrites authored files:**
|
|
164
|
+
|
|
165
|
+
- `themes/default.json` — written **only if missing**.
|
|
166
|
+
- `themes/_active.json` and `themes/_production.json` — written **only if missing**.
|
|
167
|
+
- `component-configs/{comp}/_active.json` and `_production.json` — same: only if missing.
|
|
168
|
+
- `component-configs/{comp}/default.json` — regenerated from the component's `:global(:root)` block **only when the `.svelte` source is newer than the existing default**. This file is a build artifact of the source; don't hand-edit it.
|
|
169
|
+
|
|
170
|
+
**At dev-time editor actions, these files get rewritten by your explicit save/promote:**
|
|
171
|
+
|
|
172
|
+
- `themes/{name}.json` — every save in the editor.
|
|
173
|
+
- `src/styles/tokens.css` — fully regenerated when you save or promote the production theme. **Treat this as a build artifact.** Hand-edits get clobbered next time the production theme is saved; promote a theme instead.
|
|
174
|
+
- `src/styles/fonts.css` — same rule: regenerated from the theme's font sources.
|
|
175
|
+
- `component-configs/{comp}/{name}.json` — every save of a per-component config.
|
|
176
|
+
|
|
177
|
+
## Maintainer notes — publishing
|
|
178
|
+
|
|
179
|
+
The package publishes to npm as `@motion-proto/live-tokens`.
|
|
34
180
|
|
|
35
|
-
1.
|
|
36
|
-
2.
|
|
37
|
-
3. `npm
|
|
181
|
+
1. Bump the version in `package.json`.
|
|
182
|
+
2. Verify tarball contents: `npm pack --dry-run`.
|
|
183
|
+
3. `npm publish`. `prepublishOnly` rebuilds `dist-plugin/`.
|
|
184
|
+
4. Tag and push: `git tag vX.Y.Z && git push origin main vX.Y.Z`.
|
|
38
185
|
|
|
39
186
|
## License
|
|
40
187
|
|