@motion-proto/live-tokens 0.6.2 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -13
- package/dist-plugin/index.cjs +854 -226
- package/dist-plugin/index.d.cts +2 -1
- package/dist-plugin/index.d.ts +2 -1
- package/dist-plugin/index.js +852 -225
- package/package.json +26 -40
- package/src/{styles → app}/site.css +1 -1
- 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 +37 -30
- 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 +67 -38
- package/src/{component-editor → editor/component-editor}/ProgressBarEditor.svelte +5 -4
- package/src/{component-editor → editor/component-editor}/RadioButtonEditor.svelte +3 -3
- package/src/editor/component-editor/SectionDividerEditor.svelte +565 -0
- package/src/{component-editor → editor/component-editor}/SegmentedControlEditor.svelte +2 -2
- package/src/{component-editor → editor/component-editor}/StandardButtonsEditor.svelte +29 -21
- 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/editor/component-editor/editors.d.ts +10 -0
- package/src/{component-editor → editor/component-editor}/registry.ts +28 -18
- package/src/{component-editor → editor/component-editor}/scaffolding/AngleDial.svelte +54 -15
- package/src/{component-editor → editor/component-editor}/scaffolding/ComponentEditorBase.svelte +3 -51
- package/src/{component-editor → editor/component-editor}/scaffolding/ComponentFileManager.svelte +151 -424
- 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/FieldsetWrapper.svelte +1 -1
- package/src/{component-editor → editor/component-editor}/scaffolding/LinkageChart.svelte +6 -6
- package/src/{component-editor → editor/component-editor}/scaffolding/LinkedBlock.svelte +6 -12
- package/src/editor/component-editor/scaffolding/NonStylableConfig.svelte +38 -0
- package/src/editor/component-editor/scaffolding/RadialShapePad.svelte +483 -0
- package/src/{component-editor → editor/component-editor}/scaffolding/SaveAsDialog.svelte +66 -12
- package/src/editor/component-editor/scaffolding/ShadowBackdrop.svelte +85 -0
- package/src/editor/component-editor/scaffolding/ShadowBackdropControls.svelte +132 -0
- package/src/editor/component-editor/scaffolding/StateBlock.svelte +345 -0
- package/src/{component-editor → editor/component-editor}/scaffolding/TokenLayout.svelte +17 -12
- package/src/{component-editor → editor/component-editor}/scaffolding/TypeEditor.svelte +13 -1
- package/src/editor/component-editor/scaffolding/VariantGroup.svelte +858 -0
- package/src/{component-editor → editor/component-editor}/scaffolding/buildTypeGroupTokens.ts +1 -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 +25 -0
- package/src/{lib → editor/core/components}/componentConfigKeys.ts +8 -0
- package/src/{lib → editor/core/components}/componentConfigService.ts +3 -3
- package/src/{lib → editor/core/components}/componentPersist.ts +11 -9
- 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 +171 -0
- package/src/editor/core/palettes/familySwap.ts +99 -0
- package/src/{lib → editor/core/palettes}/paletteDerivation.ts +71 -2
- package/src/{lib → editor/core/palettes}/tokenRegistry.ts +9 -6
- 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 +222 -28
- package/src/{lib → editor/core/store}/editorTypes.ts +56 -13
- package/src/editor/core/store/gradientSource.ts +192 -0
- package/src/editor/core/themes/migrations/2026-05-19-collapsiblesection-drop-frame-surface.ts +28 -0
- package/src/editor/core/themes/migrations/2026-05-19-sectiondivider-rich-gradient.ts +35 -0
- package/src/editor/core/themes/migrations/2026-05-20-sectiondivider-slim-variants.ts +82 -0
- package/src/editor/core/themes/migrations/2026-05-21-sectiondivider-spacing-to-padding.ts +24 -0
- package/src/editor/core/themes/migrations/2026-05-22-sectiondivider-intrinsics-to-css.ts +81 -0
- package/src/{lib → editor/core/themes}/migrations/index.ts +10 -0
- package/src/{lib → editor/core/themes}/slices/columns.ts +2 -2
- package/src/{lib → editor/core/themes}/slices/components.ts +20 -6
- package/src/{lib → editor/core/themes}/slices/fonts.ts +1 -1
- package/src/{lib → editor/core/themes}/slices/gradients.ts +89 -14
- 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 +8 -8
- package/src/{lib → editor/core/themes}/themeService.ts +6 -6
- package/src/{lib → editor/core/themes}/themeTypes.ts +67 -8
- package/src/editor/index.ts +69 -0
- package/src/{lib → editor/overlay}/ColumnsOverlay.svelte +0 -1
- package/src/{lib → editor/overlay}/LiveEditorOverlay.svelte +80 -129
- 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 +43 -22
- package/src/{styles → editor/styles}/ui-form-controls.css +23 -24
- package/src/{ui → editor/ui}/BezierCurveEditor.svelte +119 -68
- package/src/{ui → editor/ui}/ColorEditPanel.svelte +13 -13
- package/src/{ui → editor/ui}/EditorViewSwitcher.svelte +7 -6
- package/src/editor/ui/FileLoadList.svelte +367 -0
- package/src/editor/ui/FilePill.svelte +80 -0
- package/src/editor/ui/FontStackEditor.svelte +499 -0
- package/src/editor/ui/GradientEditor.svelte +690 -0
- package/src/{ui → editor/ui}/GradientStopPicker.svelte +12 -4
- package/src/editor/ui/ManifestFileManager.svelte +438 -0
- package/src/{ui → editor/ui}/PaletteEditor.svelte +180 -673
- package/src/editor/ui/ProjectFontsSection.svelte +638 -0
- package/src/{ui → editor/ui}/SurfacesTab.svelte +3 -3
- package/src/{ui → editor/ui}/TextTab.svelte +3 -3
- package/src/editor/ui/ThemeFileManager.svelte +783 -0
- package/src/{ui → editor/ui}/UICopyPopover.svelte +4 -4
- package/src/{ui → editor/ui}/UIFontFamilySelector.svelte +6 -7
- package/src/{ui → editor/ui}/UIFontSizeSelector.svelte +4 -1
- package/src/editor/ui/UIInfoPopover.svelte +243 -0
- package/src/editor/ui/UILetterSpacingSelector.svelte +65 -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 +57 -30
- package/src/editor/ui/UIPillButton.svelte +168 -0
- package/src/{ui → editor/ui}/UIRadio.svelte +2 -2
- package/src/{ui → editor/ui}/UIRelinkConfirmPopover.svelte +4 -4
- package/src/editor/ui/UISegmentedControl.svelte +114 -0
- package/src/editor/ui/UISquareButton.svelte +172 -0
- package/src/{ui → editor/ui}/UITokenSelector.svelte +14 -11
- package/src/{ui → editor/ui}/UIVariantSelector.svelte +1 -1
- package/src/{ui → editor/ui}/VariablesTab.svelte +46 -17
- package/src/{ui → editor/ui}/palette/GradientStopEditor.svelte +13 -13
- package/src/{ui → editor/ui}/palette/OverridesPanel.svelte +24 -47
- package/src/{ui → editor/ui}/palette/PaletteBase.svelte +11 -8
- 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 -18
- package/src/{ui → editor/ui}/sections/GradientsSection.svelte +8 -8
- package/src/{ui → editor/ui}/sections/OverlaysSection.svelte +18 -18
- package/src/{ui → editor/ui}/sections/ShadowsSection.svelte +23 -23
- package/src/{ui → editor/ui}/sections/TokenScaleTable.svelte +3 -3
- package/src/{components → system/components}/Badge.svelte +0 -36
- package/src/{components → system/components}/Button.svelte +2 -2
- package/src/{components → system/components}/Card.svelte +34 -60
- package/src/{components → system/components}/CollapsibleSection.svelte +25 -2
- package/src/{components → system/components}/CornerBadge.svelte +8 -24
- package/src/{components → system/components}/Dialog.svelte +1 -1
- package/src/system/components/FloatingTokenTags.css +275 -0
- package/src/system/components/FloatingTokenTags.svelte +543 -0
- package/src/{components → system/components}/InlineEditActions.svelte +6 -4
- package/src/system/components/MenuSelect.svelte +229 -0
- package/src/{components → system/components}/Notification.svelte +8 -1
- package/src/{components → system/components}/ProgressBar.svelte +29 -11
- package/src/system/components/SectionDivider.svelte +560 -0
- 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/system/styles/fonts.css +20 -0
- package/src/system/styles/tokens.css +601 -0
- package/src/system/styles/tokens.generated.css +544 -0
- package/src/component-editor/ImageEditor.svelte +0 -74
- package/src/component-editor/SectionDividerEditor.svelte +0 -265
- package/src/component-editor/scaffolding/DividerEditor.svelte +0 -94
- package/src/component-editor/scaffolding/GradientCard.svelte +0 -296
- 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/components/SectionDivider.svelte +0 -483
- 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/styles/fonts.css +0 -30
- package/src/styles/tokens.css +0 -1324
- package/src/ui/FontStackEditor.svelte +0 -361
- package/src/ui/GradientEditor.svelte +0 -470
- package/src/ui/PresetFileManager.svelte +0 -1116
- package/src/ui/ProjectFontsSection.svelte +0 -645
- package/src/ui/ThemeFileManager.svelte +0 -1020
- package/src/ui/UnsavedComponentsDialog.svelte +0 -315
- /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/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}/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}/parsers/globalRootBlock.ts +0 -0
- /package/src/{lib → editor/core/themes}/slices/domainVars.ts +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}/Callout.svelte +0 -0
- /package/src/{components → system/components}/Image.svelte +0 -0
- /package/src/{components → system/components}/RadioButton.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
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { selectedComponent } from '../lib/editorViewStore';
|
|
3
|
-
import { componentRegistryEntries } from '../component-editor/registry';
|
|
4
|
-
import { saveActiveComponentConfig } from '../lib/componentPersist';
|
|
5
|
-
import UIDialog from './UIDialog.svelte';
|
|
6
|
-
|
|
7
|
-
interface Props {
|
|
8
|
-
show?: boolean;
|
|
9
|
-
/** Component IDs that have unsaved edits. */
|
|
10
|
-
dirtyComponents?: string[];
|
|
11
|
-
/** Called when the user chooses to capture the preset anyway (after handling, or skipping, unsaved components). */
|
|
12
|
-
onproceed?: () => void;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
let { show = $bindable(false), dirtyComponents = [], onproceed }: Props = $props();
|
|
16
|
-
|
|
17
|
-
// Map id → registry entry (label, icon). Components not in the registry get
|
|
18
|
-
// a fallback so the dialog never renders an empty row. Typed as a plain
|
|
19
|
-
// string-keyed record so a stray dirty id (one we don't recognise) doesn't
|
|
20
|
-
// trip the typed `ComponentId` key.
|
|
21
|
-
const entryById: Record<string, { id: string; label: string; icon: string }> =
|
|
22
|
-
Object.fromEntries(
|
|
23
|
-
componentRegistryEntries.map((e) => [e.id, { id: e.id, label: e.label, icon: e.icon }]),
|
|
24
|
-
);
|
|
25
|
-
|
|
26
|
-
type RowStatus = 'idle' | 'saving' | 'saved' | 'default' | 'error';
|
|
27
|
-
let rowStatus: Record<string, RowStatus> = $state({});
|
|
28
|
-
let savingAll = $state(false);
|
|
29
|
-
/** Snapshot the dirty list at open-time so rows don't vanish as the user
|
|
30
|
-
* saves them one-by-one (componentDirty updates instantly on save). */
|
|
31
|
-
let rowIds: string[] = $state([]);
|
|
32
|
-
|
|
33
|
-
function entryFor(id: string): { id: string; label: string; icon: string } {
|
|
34
|
-
return entryById[id] ?? { id, label: id, icon: 'fas fa-cube' };
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async function saveOne(id: string): Promise<RowStatus> {
|
|
38
|
-
rowStatus[id] = 'saving';
|
|
39
|
-
const result = await saveActiveComponentConfig(id);
|
|
40
|
-
if (result.ok) {
|
|
41
|
-
rowStatus[id] = 'saved';
|
|
42
|
-
return 'saved';
|
|
43
|
-
}
|
|
44
|
-
rowStatus[id] = result.reason === 'default' ? 'default' : 'error';
|
|
45
|
-
return rowStatus[id];
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
async function handleSaveAll() {
|
|
49
|
-
savingAll = true;
|
|
50
|
-
for (const id of rowIds) {
|
|
51
|
-
// Skip rows the user already resolved this session.
|
|
52
|
-
if (rowStatus[id] === 'saved') continue;
|
|
53
|
-
await saveOne(id);
|
|
54
|
-
}
|
|
55
|
-
savingAll = false;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function jumpTo(id: string) {
|
|
59
|
-
selectedComponent.set(id);
|
|
60
|
-
show = false;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function handleProceed() {
|
|
64
|
-
show = false;
|
|
65
|
-
onproceed?.();
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Snapshot the dirty list and reset row status whenever the dialog re-opens.
|
|
69
|
-
// Snapshotting keeps rows stable while the user saves them one-by-one (the
|
|
70
|
-
// underlying componentDirty store drops ids as soon as save completes).
|
|
71
|
-
$effect(() => {
|
|
72
|
-
if (show) {
|
|
73
|
-
rowIds = [...dirtyComponents];
|
|
74
|
-
rowStatus = {};
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
let allSaved = $derived(
|
|
79
|
-
rowIds.length > 0 && rowIds.every((id) => rowStatus[id] === 'saved'),
|
|
80
|
-
);
|
|
81
|
-
</script>
|
|
82
|
-
|
|
83
|
-
<UIDialog
|
|
84
|
-
bind:show
|
|
85
|
-
title="Unsaved component changes"
|
|
86
|
-
cancelLabel="Cancel"
|
|
87
|
-
width="440px"
|
|
88
|
-
>
|
|
89
|
-
<div class="ucd-body">
|
|
90
|
-
<p class="ucd-lede">
|
|
91
|
-
{rowIds.length}
|
|
92
|
-
{rowIds.length === 1 ? 'component has' : 'components have'}
|
|
93
|
-
unsaved edits. Presets capture the files on disk, so these edits won't be
|
|
94
|
-
included until they're saved.
|
|
95
|
-
</p>
|
|
96
|
-
|
|
97
|
-
<ul class="ucd-list">
|
|
98
|
-
{#each rowIds as id}
|
|
99
|
-
{@const entry = entryFor(id)}
|
|
100
|
-
{@const status = rowStatus[id] ?? 'idle'}
|
|
101
|
-
<li class="ucd-row" class:saved={status === 'saved'}>
|
|
102
|
-
<span class="ucd-dot" class:saved={status === 'saved'} aria-hidden="true"></span>
|
|
103
|
-
<button
|
|
104
|
-
type="button"
|
|
105
|
-
class="ucd-name"
|
|
106
|
-
onclick={() => jumpTo(id)}
|
|
107
|
-
title="Open {entry.label} editor"
|
|
108
|
-
>
|
|
109
|
-
<i class={entry.icon}></i>
|
|
110
|
-
<span>{entry.label}</span>
|
|
111
|
-
</button>
|
|
112
|
-
<span class="ucd-status" class:saved={status === 'saved'} class:default={status === 'default'} class:error={status === 'error'}>
|
|
113
|
-
{#if status === 'saving'}Saving…
|
|
114
|
-
{:else if status === 'saved'}Saved
|
|
115
|
-
{:else if status === 'default'}On default — rename first
|
|
116
|
-
{:else if status === 'error'}Error
|
|
117
|
-
{/if}
|
|
118
|
-
</span>
|
|
119
|
-
<button
|
|
120
|
-
type="button"
|
|
121
|
-
class="ucd-row-btn"
|
|
122
|
-
onclick={() => saveOne(id)}
|
|
123
|
-
disabled={status === 'saving' || status === 'saved' || savingAll}
|
|
124
|
-
title="Save this component"
|
|
125
|
-
>
|
|
126
|
-
<i class="fas fa-save"></i>
|
|
127
|
-
</button>
|
|
128
|
-
</li>
|
|
129
|
-
{/each}
|
|
130
|
-
</ul>
|
|
131
|
-
|
|
132
|
-
<div class="ucd-actions">
|
|
133
|
-
<button
|
|
134
|
-
type="button"
|
|
135
|
-
class="ucd-btn primary"
|
|
136
|
-
onclick={handleSaveAll}
|
|
137
|
-
disabled={savingAll || allSaved}
|
|
138
|
-
>
|
|
139
|
-
{savingAll ? 'Saving…' : allSaved ? 'All saved' : 'Save all'}
|
|
140
|
-
</button>
|
|
141
|
-
<button
|
|
142
|
-
type="button"
|
|
143
|
-
class="ucd-btn"
|
|
144
|
-
onclick={handleProceed}
|
|
145
|
-
title="Save the preset using the files currently on disk"
|
|
146
|
-
>
|
|
147
|
-
Continue without saving
|
|
148
|
-
</button>
|
|
149
|
-
</div>
|
|
150
|
-
</div>
|
|
151
|
-
</UIDialog>
|
|
152
|
-
|
|
153
|
-
<style>
|
|
154
|
-
.ucd-body {
|
|
155
|
-
display: flex;
|
|
156
|
-
flex-direction: column;
|
|
157
|
-
gap: var(--ui-space-12);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
.ucd-lede {
|
|
161
|
-
margin: 0;
|
|
162
|
-
font-size: var(--ui-font-size-sm);
|
|
163
|
-
line-height: 1.5;
|
|
164
|
-
color: var(--ui-text-secondary);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
.ucd-list {
|
|
168
|
-
list-style: none;
|
|
169
|
-
margin: 0;
|
|
170
|
-
padding: 0;
|
|
171
|
-
display: flex;
|
|
172
|
-
flex-direction: column;
|
|
173
|
-
gap: var(--ui-space-2);
|
|
174
|
-
max-height: 240px;
|
|
175
|
-
overflow-y: auto;
|
|
176
|
-
border: 1px solid var(--ui-border-faint);
|
|
177
|
-
border-radius: var(--ui-radius-md);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
.ucd-row {
|
|
181
|
-
display: grid;
|
|
182
|
-
grid-template-columns: 14px 1fr auto auto;
|
|
183
|
-
align-items: center;
|
|
184
|
-
gap: var(--ui-space-8);
|
|
185
|
-
padding: var(--ui-space-6) var(--ui-space-10);
|
|
186
|
-
border-bottom: 1px solid var(--ui-border-faint);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
.ucd-row:last-child {
|
|
190
|
-
border-bottom: none;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
.ucd-dot {
|
|
194
|
-
width: 8px;
|
|
195
|
-
height: 8px;
|
|
196
|
-
border-radius: 50%;
|
|
197
|
-
background: var(--ui-highlight);
|
|
198
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, var(--ui-highlight) 22%, transparent);
|
|
199
|
-
justify-self: center;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
.ucd-dot.saved {
|
|
203
|
-
background: var(--ui-text-success, #5aa85e);
|
|
204
|
-
box-shadow: none;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
.ucd-name {
|
|
208
|
-
display: inline-flex;
|
|
209
|
-
align-items: center;
|
|
210
|
-
gap: var(--ui-space-6);
|
|
211
|
-
padding: var(--ui-space-2) var(--ui-space-4);
|
|
212
|
-
background: none;
|
|
213
|
-
border: none;
|
|
214
|
-
color: var(--ui-text-primary);
|
|
215
|
-
font-size: var(--ui-font-size-md);
|
|
216
|
-
text-align: left;
|
|
217
|
-
cursor: pointer;
|
|
218
|
-
border-radius: var(--ui-radius-sm);
|
|
219
|
-
min-width: 0;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
.ucd-name i {
|
|
223
|
-
width: 1rem;
|
|
224
|
-
text-align: center;
|
|
225
|
-
color: var(--ui-text-tertiary);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
.ucd-name:hover {
|
|
229
|
-
background: var(--ui-hover);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
.ucd-status {
|
|
233
|
-
font-size: var(--ui-font-size-xs);
|
|
234
|
-
color: var(--ui-text-tertiary);
|
|
235
|
-
white-space: nowrap;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
.ucd-status.saved {
|
|
239
|
-
color: var(--ui-text-success, #5aa85e);
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
.ucd-status.default {
|
|
243
|
-
color: var(--ui-highlight);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
.ucd-status.error {
|
|
247
|
-
color: var(--ui-text-muted);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
.ucd-row-btn {
|
|
251
|
-
display: inline-flex;
|
|
252
|
-
align-items: center;
|
|
253
|
-
justify-content: center;
|
|
254
|
-
width: 28px;
|
|
255
|
-
height: 28px;
|
|
256
|
-
padding: 0;
|
|
257
|
-
background: var(--ui-surface-low);
|
|
258
|
-
border: 1px solid var(--ui-border-subtle);
|
|
259
|
-
border-radius: var(--ui-radius-sm);
|
|
260
|
-
color: var(--ui-text-secondary);
|
|
261
|
-
cursor: pointer;
|
|
262
|
-
transition: all var(--ui-transition-fast);
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
.ucd-row-btn:hover:not(:disabled) {
|
|
266
|
-
background: var(--ui-surface);
|
|
267
|
-
color: var(--ui-text-primary);
|
|
268
|
-
border-color: var(--ui-border-default);
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
.ucd-row-btn:disabled {
|
|
272
|
-
opacity: 0.4;
|
|
273
|
-
cursor: not-allowed;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
.ucd-actions {
|
|
277
|
-
display: flex;
|
|
278
|
-
flex-wrap: wrap;
|
|
279
|
-
justify-content: flex-end;
|
|
280
|
-
gap: var(--ui-space-8);
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
.ucd-btn {
|
|
284
|
-
padding: var(--ui-space-6) var(--ui-space-12);
|
|
285
|
-
background: var(--ui-surface-low);
|
|
286
|
-
border: 1px solid var(--ui-border-subtle);
|
|
287
|
-
border-radius: var(--ui-radius-md);
|
|
288
|
-
color: var(--ui-text-secondary);
|
|
289
|
-
font-size: var(--ui-font-size-md);
|
|
290
|
-
cursor: pointer;
|
|
291
|
-
transition: all var(--ui-transition-fast);
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
.ucd-btn:hover:not(:disabled) {
|
|
295
|
-
background: var(--ui-surface);
|
|
296
|
-
color: var(--ui-text-primary);
|
|
297
|
-
border-color: var(--ui-border-default);
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
.ucd-btn:disabled {
|
|
301
|
-
opacity: 0.45;
|
|
302
|
-
cursor: not-allowed;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
.ucd-btn.primary {
|
|
306
|
-
background: var(--ui-surface-high);
|
|
307
|
-
border-color: var(--ui-border-medium);
|
|
308
|
-
color: var(--ui-text-primary);
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
.ucd-btn.primary:hover:not(:disabled) {
|
|
312
|
-
background: var(--ui-surface-higher);
|
|
313
|
-
border-color: var(--ui-border-strong);
|
|
314
|
-
}
|
|
315
|
-
</style>
|
|
File without changes
|
|
File without changes
|
/package/src/{component-editor → editor/component-editor}/scaffolding/componentSectionType.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/{lib → editor/core/themes}/migrations/2026-04-24-component-prefix-and-suffix-renames.ts
RENAMED
|
File without changes
|
/package/src/{lib → editor/core/themes}/migrations/2026-04-24-legacy-keys-and-bg-to-canvas.ts
RENAMED
|
File without changes
|
/package/src/{lib → editor/core/themes}/migrations/2026-04-27-segmentedcontrol-disabled-flatten.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/{lib → editor/core/themes}/migrations/2026-05-10-sectiondivider-gradient-stops.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|