@motion-proto/live-tokens 0.6.2 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -13
- package/dist-plugin/index.cjs +147 -136
- package/dist-plugin/index.d.cts +1 -1
- package/dist-plugin/index.d.ts +1 -1
- package/dist-plugin/index.js +145 -135
- package/package.json +25 -40
- package/src/{component-editor → editor/component-editor}/BadgeEditor.svelte +8 -82
- package/src/{component-editor → editor/component-editor}/CalloutEditor.svelte +4 -4
- package/src/{component-editor → editor/component-editor}/CardEditor.svelte +28 -76
- package/src/{component-editor → editor/component-editor}/CollapsibleSectionEditor.svelte +3 -3
- package/src/{component-editor → editor/component-editor}/CornerBadgeEditor.svelte +31 -93
- package/src/{component-editor → editor/component-editor}/DialogEditor.svelte +60 -57
- package/src/editor/component-editor/ImageEditor.svelte +30 -0
- package/src/{component-editor → editor/component-editor}/InlineEditActionsEditor.svelte +6 -4
- package/src/editor/component-editor/MenuSelectEditor.svelte +160 -0
- package/src/{component-editor → editor/component-editor}/NotificationEditor.svelte +64 -37
- package/src/{component-editor → editor/component-editor}/ProgressBarEditor.svelte +5 -4
- package/src/{component-editor → editor/component-editor}/RadioButtonEditor.svelte +3 -3
- package/src/{component-editor → editor/component-editor}/SectionDividerEditor.svelte +57 -84
- package/src/{component-editor → editor/component-editor}/SegmentedControlEditor.svelte +2 -2
- package/src/{component-editor → editor/component-editor}/StandardButtonsEditor.svelte +16 -20
- package/src/{component-editor → editor/component-editor}/TabBarEditor.svelte +9 -14
- package/src/{component-editor → editor/component-editor}/TableEditor.svelte +9 -18
- package/src/{component-editor → editor/component-editor}/TooltipEditor.svelte +11 -47
- package/src/{component-editor → editor/component-editor}/registry.ts +28 -18
- package/src/{component-editor → editor/component-editor}/scaffolding/AngleDial.svelte +2 -2
- package/src/{component-editor → editor/component-editor}/scaffolding/ComponentEditorBase.svelte +3 -51
- package/src/{component-editor → editor/component-editor}/scaffolding/ComponentFileManager.svelte +144 -416
- package/src/{component-editor → editor/component-editor}/scaffolding/ComponentFileMenu.svelte +18 -170
- package/src/{component-editor → editor/component-editor}/scaffolding/ComponentsTab.svelte +2 -2
- package/src/{component-editor → editor/component-editor}/scaffolding/CopyFromMenu.svelte +44 -4
- package/src/{component-editor → editor/component-editor}/scaffolding/DividerEditor.svelte +1 -1
- package/src/{component-editor → editor/component-editor}/scaffolding/FieldsetWrapper.svelte +1 -1
- package/src/{component-editor → editor/component-editor}/scaffolding/GradientCard.svelte +6 -6
- package/src/{component-editor → editor/component-editor}/scaffolding/LinkageChart.svelte +6 -6
- package/src/{component-editor → editor/component-editor}/scaffolding/LinkedBlock.svelte +6 -11
- package/src/editor/component-editor/scaffolding/NonStylableConfig.svelte +38 -0
- package/src/{component-editor → editor/component-editor}/scaffolding/SaveAsDialog.svelte +66 -12
- package/src/editor/component-editor/scaffolding/ShadowBackdrop.svelte +72 -0
- package/src/editor/component-editor/scaffolding/ShadowBackdropControls.svelte +132 -0
- package/src/editor/component-editor/scaffolding/StateBlock.svelte +257 -0
- package/src/{component-editor → editor/component-editor}/scaffolding/TokenLayout.svelte +9 -7
- package/src/editor/component-editor/scaffolding/VariantGroup.svelte +644 -0
- package/src/{component-editor → editor/component-editor}/scaffolding/editorContext.ts +19 -9
- package/src/{component-editor → editor/component-editor}/scaffolding/linkedBlock.ts +2 -2
- package/src/{component-editor → editor/component-editor}/scaffolding/types.ts +14 -0
- package/src/{lib → editor/core/components}/componentConfigService.ts +2 -2
- package/src/{lib → editor/core/components}/componentPersist.ts +5 -5
- package/src/editor/core/flashStatus.ts +30 -0
- package/src/{lib → editor/core/fonts}/fontLoader.ts +2 -2
- package/src/{lib → editor/core/fonts}/fontMigration.ts +4 -4
- package/src/{lib → editor/core/fonts}/fontParse.ts +1 -1
- package/src/editor/core/manifests/manifestService.ts +116 -0
- package/src/{lib → editor/core/palettes}/paletteDerivation.ts +2 -2
- package/src/{lib → editor/core/palettes}/tokenRegistry.ts +5 -5
- package/src/editor/core/productionPulse.ts +37 -0
- package/src/{lib → editor/core/routing}/router.ts +1 -1
- package/src/{lib/files/versionedFileResource.ts → editor/core/storage/files/versionedFileResourceClient.ts} +8 -1
- package/src/{lib → editor/core/store}/editorCore.ts +24 -8
- package/src/{lib → editor/core/store}/editorPersistence.ts +3 -3
- package/src/{lib → editor/core/store}/editorRenderer.ts +2 -2
- package/src/{lib → editor/core/store}/editorStore.ts +17 -17
- package/src/{lib → editor/core/store}/editorTypes.ts +1 -1
- package/src/{lib → editor/core/themes}/slices/columns.ts +2 -2
- package/src/{lib → editor/core/themes}/slices/components.ts +2 -2
- package/src/{lib → editor/core/themes}/slices/fonts.ts +1 -1
- package/src/{lib → editor/core/themes}/slices/gradients.ts +2 -2
- package/src/{lib → editor/core/themes}/slices/overlays.ts +1 -1
- package/src/{lib → editor/core/themes}/slices/palettes.ts +1 -1
- package/src/{lib → editor/core/themes}/slices/shadows.ts +3 -3
- package/src/{lib → editor/core/themes}/themeInit.ts +6 -6
- package/src/{lib → editor/core/themes}/themeService.ts +6 -6
- package/src/{lib → editor/core/themes}/themeTypes.ts +11 -7
- package/src/editor/index.ts +69 -0
- package/src/{lib → editor/overlay}/LiveEditorOverlay.svelte +79 -125
- package/src/{lib → editor/overlay}/columnsOverlay.ts +2 -2
- package/src/{pages → editor/pages}/ComponentEditorPage.svelte +12 -12
- package/src/{pages → editor/pages}/Editor.svelte +4 -4
- package/src/{pages → editor/pages}/EditorShell.svelte +18 -36
- package/src/{styles → editor/styles}/ui-editor.css +41 -21
- package/src/{styles → editor/styles}/ui-form-controls.css +8 -8
- package/src/{ui → editor/ui}/BezierCurveEditor.svelte +8 -8
- package/src/{ui → editor/ui}/ColorEditPanel.svelte +13 -13
- package/src/{ui → editor/ui}/EditorViewSwitcher.svelte +8 -6
- package/src/editor/ui/FileLoadList.svelte +350 -0
- package/src/editor/ui/FilePill.svelte +80 -0
- package/src/{ui → editor/ui}/FontStackEditor.svelte +7 -7
- package/src/{ui → editor/ui}/GradientEditor.svelte +11 -11
- package/src/{ui → editor/ui}/GradientStopPicker.svelte +1 -1
- package/src/editor/ui/ManifestFileManager.svelte +371 -0
- package/src/{ui → editor/ui}/PaletteEditor.svelte +132 -598
- package/src/{ui → editor/ui}/ProjectFontsSection.svelte +102 -144
- package/src/{ui → editor/ui}/SurfacesTab.svelte +3 -3
- package/src/{ui → editor/ui}/TextTab.svelte +3 -3
- package/src/{ui → editor/ui}/ThemeFileManager.svelte +286 -519
- package/src/{ui → editor/ui}/UICopyPopover.svelte +4 -4
- package/src/{ui → editor/ui}/UIFontFamilySelector.svelte +6 -6
- package/src/{ui → editor/ui}/UIFontSizeSelector.svelte +1 -1
- package/src/editor/ui/UIInfoPopover.svelte +244 -0
- package/src/{ui → editor/ui}/UILineHeightSelector.svelte +5 -5
- package/src/{ui → editor/ui}/UILinkToggle.svelte +2 -2
- package/src/{ui → editor/ui}/UIPaddingSelector.svelte +6 -6
- package/src/{ui → editor/ui}/UIPaletteSelector.svelte +26 -26
- package/src/editor/ui/UIPillButton.svelte +138 -0
- package/src/{ui → editor/ui}/UIRadio.svelte +2 -2
- package/src/{ui → editor/ui}/UIRelinkConfirmPopover.svelte +4 -4
- package/src/editor/ui/UISquareButton.svelte +172 -0
- package/src/{ui → editor/ui}/UITokenSelector.svelte +10 -10
- package/src/{ui → editor/ui}/UIVariantSelector.svelte +1 -1
- package/src/{ui → editor/ui}/VariablesTab.svelte +31 -8
- package/src/{ui → editor/ui}/palette/GradientStopEditor.svelte +13 -13
- package/src/{ui → editor/ui}/palette/OverridesPanel.svelte +13 -13
- package/src/{ui → editor/ui}/palette/PaletteBase.svelte +8 -5
- package/src/{ui → editor/ui}/palette/paletteEditorState.ts +1 -1
- package/src/editor/ui/palette/paletteMath.ts +275 -0
- package/src/{ui → editor/ui}/sections/ColumnsSection.svelte +137 -17
- package/src/{ui → editor/ui}/sections/GradientsSection.svelte +7 -7
- package/src/{ui → editor/ui}/sections/OverlaysSection.svelte +17 -17
- package/src/{ui → editor/ui}/sections/ShadowsSection.svelte +22 -22
- package/src/{ui → editor/ui}/sections/TokenScaleTable.svelte +3 -3
- package/src/{components → system/components}/Badge.svelte +0 -36
- package/src/{components → system/components}/Card.svelte +8 -62
- package/src/{components → system/components}/CornerBadge.svelte +8 -24
- package/src/{components → system/components}/Dialog.svelte +1 -1
- package/src/system/components/FloatingTokenTags.css +256 -0
- package/src/system/components/FloatingTokenTags.svelte +592 -0
- package/src/{components → system/components}/InlineEditActions.svelte +6 -4
- package/src/system/components/MenuSelect.svelte +229 -0
- package/src/{components → system/components}/ProgressBar.svelte +29 -11
- package/src/{components → system/components}/SegmentedControl.svelte +49 -43
- package/src/{components → system/components}/TabBar.svelte +81 -65
- package/src/{components → system/components}/Table.svelte +17 -3
- package/src/{components → system/components}/Tooltip.svelte +6 -4
- package/src/system/styles/CONVENTIONS.md +178 -0
- package/src/{styles → system/styles}/fonts.css +6 -3
- package/src/{styles → system/styles}/tokens.css +149 -29
- package/src/component-editor/ImageEditor.svelte +0 -74
- package/src/component-editor/scaffolding/NonStylableConfig.svelte +0 -62
- package/src/component-editor/scaffolding/ShadowBackdrop.svelte +0 -37
- package/src/component-editor/scaffolding/ShadowBackdropControls.svelte +0 -61
- package/src/component-editor/scaffolding/StateBlock.svelte +0 -132
- package/src/component-editor/scaffolding/VariantGroup.svelte +0 -310
- package/src/data/google-fonts.json +0 -75
- package/src/lib/index.ts +0 -68
- package/src/lib/presetService.ts +0 -214
- package/src/lib/productionPulse.ts +0 -32
- package/src/ui/PresetFileManager.svelte +0 -1116
- package/src/ui/UnsavedComponentsDialog.svelte +0 -315
- /package/src/{styles → app}/site.css +0 -0
- /package/src/{component-editor → editor/component-editor}/index.ts +0 -0
- /package/src/{component-editor → editor/component-editor}/scaffolding/DemoHeader.svelte +0 -0
- /package/src/{component-editor → editor/component-editor}/scaffolding/TypeEditor.svelte +0 -0
- /package/src/{component-editor → editor/component-editor}/scaffolding/buildTypeGroupTokens.ts +0 -0
- /package/src/{component-editor → editor/component-editor}/scaffolding/componentSectionType.ts +0 -0
- /package/src/{component-editor → editor/component-editor}/scaffolding/componentSources.ts +0 -0
- /package/src/{component-editor → editor/component-editor}/scaffolding/defaultSections.ts +0 -0
- /package/src/{component-editor → editor/component-editor}/scaffolding/siblings.ts +0 -0
- /package/src/{lib → editor/core/components}/componentConfigKeys.ts +0 -0
- /package/src/{lib → editor/core}/cssVarSync.ts +0 -0
- /package/src/{lib → editor/core/palettes}/oklch.ts +0 -0
- /package/src/{lib → editor/core/routing}/navLinkTypes.ts +0 -0
- /package/src/{lib → editor/core/routing}/parentRouteStore.ts +0 -0
- /package/src/{lib → editor/core/storage}/storage.ts +0 -0
- /package/src/{lib → editor/core/store}/editorConfig.ts +0 -0
- /package/src/{lib → editor/core/store}/editorConfigStore.ts +0 -0
- /package/src/{lib → editor/core/store}/editorKeybindings.ts +0 -0
- /package/src/{lib → editor/core/store}/editorViewStore.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/2026-04-24-component-prefix-and-suffix-renames.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/2026-04-24-legacy-keys-and-bg-to-canvas.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/2026-04-27-segmentedcontrol-disabled-flatten.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/2026-05-08-collapsiblesection-frame-and-cleanup.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/2026-05-08-collapsiblesection-variant-namespace.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/2026-05-10-sectiondivider-gradient-stops.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/2026-05-13-primary-to-brand.ts +0 -0
- /package/src/{lib → editor/core/themes}/migrations/index.ts +0 -0
- /package/src/{lib → editor/core/themes}/parsers/globalRootBlock.ts +0 -0
- /package/src/{lib → editor/core/themes}/slices/domainVars.ts +0 -0
- /package/src/{lib → editor/overlay}/ColumnsOverlay.svelte +0 -0
- /package/src/{lib → editor/overlay}/overlayState.ts +0 -0
- /package/src/{pages → editor/pages}/ComponentEditorPage.svelte.d.ts +0 -0
- /package/src/{pages → editor/pages}/Editor.svelte.d.ts +0 -0
- /package/src/{ui → editor/ui}/Toggle.svelte +0 -0
- /package/src/{ui → editor/ui}/UIDialog.svelte +0 -0
- /package/src/{ui → editor/ui}/UIFontWeightSelector.svelte +0 -0
- /package/src/{ui → editor/ui}/UIOptionItem.svelte +0 -0
- /package/src/{ui → editor/ui}/UIOptionList.svelte +0 -0
- /package/src/{ui → editor/ui}/UIRadioGroup.svelte +0 -0
- /package/src/{lib → editor/ui}/copyPopover.ts +0 -0
- /package/src/{ui → editor/ui}/curveEngine.ts +0 -0
- /package/src/{ui → editor/ui}/index.ts +0 -0
- /package/src/{ui → editor/ui}/keepInViewport.ts +0 -0
- /package/src/{ui → editor/ui}/palette/ScaleCurveEditor.svelte +0 -0
- /package/src/{lib → editor/ui}/scrollSection.ts +0 -0
- /package/src/{ui → editor/ui}/sections/tokenScales.ts +0 -0
- /package/src/{ui → editor/ui}/variantScales.ts +0 -0
- /package/src/{assets → system/assets}/newspaper.webp +0 -0
- /package/src/{assets → system/assets}/offering.webp +0 -0
- /package/src/{components → system/components}/Button.svelte +0 -0
- /package/src/{components → system/components}/Callout.svelte +0 -0
- /package/src/{components → system/components}/CollapsibleSection.svelte +0 -0
- /package/src/{components → system/components}/Image.svelte +0 -0
- /package/src/{components → system/components}/Notification.svelte +0 -0
- /package/src/{components → system/components}/RadioButton.svelte +0 -0
- /package/src/{components → system/components}/SectionDivider.svelte +0 -0
- /package/src/{components → system/components}/types.ts +0 -0
- /package/src/{styles → system/styles}/_padding.scss +0 -0
- /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-italic-latin-ext.woff2 +0 -0
- /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-italic-latin.woff2 +0 -0
- /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-roman-latin-ext.woff2 +0 -0
- /package/src/{styles → system/styles}/fonts/Fraunces/Fraunces-roman-latin.woff2 +0 -0
- /package/src/{styles → system/styles}/fonts/Manrope/Manrope-latin-ext.woff2 +0 -0
- /package/src/{styles → system/styles}/fonts/Manrope/Manrope-latin.woff2 +0 -0
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* direction, kind switch) lives in <GradientEditor>; this section is a
|
|
8
8
|
* thin grid that toggles which gradient is being edited.
|
|
9
9
|
*/
|
|
10
|
-
import { editorState } from '../../
|
|
10
|
+
import { editorState } from '../../core/store/editorStore';
|
|
11
11
|
import GradientEditor from '../GradientEditor.svelte';
|
|
12
12
|
|
|
13
13
|
interface Props {
|
|
@@ -60,12 +60,12 @@
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
.section-title {
|
|
63
|
-
font-size: var(--ui-font-size-
|
|
63
|
+
font-size: var(--ui-font-size-2xl);
|
|
64
64
|
font-weight: var(--ui-font-weight-semibold);
|
|
65
65
|
color: var(--ui-text-primary);
|
|
66
66
|
margin: 0;
|
|
67
67
|
padding-bottom: var(--ui-space-8);
|
|
68
|
-
border-bottom:
|
|
68
|
+
border-bottom: 2px solid var(--ui-border-high);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
.editor-intro {
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
flex-direction: column;
|
|
104
104
|
gap: var(--ui-space-8);
|
|
105
105
|
padding: var(--ui-space-12);
|
|
106
|
-
border: 1px solid var(--ui-border-
|
|
106
|
+
border: 1px solid var(--ui-border-low);
|
|
107
107
|
border-radius: var(--ui-radius-lg);
|
|
108
108
|
background: var(--ui-surface-lowest);
|
|
109
109
|
min-width: 0;
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
.gradient-edit-btn {
|
|
125
125
|
padding: var(--ui-space-2) var(--ui-space-10);
|
|
126
126
|
background: var(--ui-surface-low);
|
|
127
|
-
border: 1px solid var(--ui-border-
|
|
127
|
+
border: 1px solid var(--ui-border-low);
|
|
128
128
|
border-radius: var(--ui-radius-sm);
|
|
129
129
|
color: var(--ui-text-secondary);
|
|
130
130
|
font-size: var(--ui-font-size-xs);
|
|
@@ -134,13 +134,13 @@
|
|
|
134
134
|
|
|
135
135
|
.gradient-edit-btn:hover {
|
|
136
136
|
color: var(--ui-text-primary);
|
|
137
|
-
border-color: var(--ui-border
|
|
137
|
+
border-color: var(--ui-border);
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
.gradient-editor-host {
|
|
141
141
|
margin-top: var(--ui-space-8);
|
|
142
142
|
padding-top: var(--ui-space-12);
|
|
143
|
-
border-top: 1px dashed var(--ui-border-
|
|
143
|
+
border-top: 1px dashed var(--ui-border-low);
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
.gradient-box {
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* rgba values out to :root, so this component only orchestrates mutations
|
|
7
7
|
* and reads derived display state.
|
|
8
8
|
*/
|
|
9
|
-
import { editorState, mutate, beginSliderGesture } from '../../
|
|
10
|
-
import type { OverlayToken, OverlayChannelGlobals, EditorState } from '../../
|
|
9
|
+
import { editorState, mutate, beginSliderGesture } from '../../core/store/editorStore';
|
|
10
|
+
import type { OverlayToken, OverlayChannelGlobals, EditorState } from '../../core/store/editorTypes';
|
|
11
11
|
|
|
12
12
|
interface Props {
|
|
13
13
|
copiedVar?: string | null;
|
|
@@ -341,16 +341,16 @@
|
|
|
341
341
|
}
|
|
342
342
|
|
|
343
343
|
.section-title {
|
|
344
|
-
font-size: var(--ui-font-size-
|
|
344
|
+
font-size: var(--ui-font-size-2xl);
|
|
345
345
|
font-weight: var(--ui-font-weight-semibold);
|
|
346
346
|
color: var(--ui-text-primary);
|
|
347
347
|
margin: 0;
|
|
348
348
|
padding-bottom: var(--ui-space-8);
|
|
349
|
-
border-bottom:
|
|
349
|
+
border-bottom: 2px solid var(--ui-border-high);
|
|
350
350
|
}
|
|
351
351
|
|
|
352
352
|
.group-title {
|
|
353
|
-
font-size: var(--ui-font-size-
|
|
353
|
+
font-size: var(--ui-font-size-lg);
|
|
354
354
|
font-weight: var(--ui-font-weight-semibold);
|
|
355
355
|
color: var(--ui-text-secondary);
|
|
356
356
|
margin: 0;
|
|
@@ -404,7 +404,7 @@
|
|
|
404
404
|
border-radius: var(--ui-radius-md);
|
|
405
405
|
position: relative;
|
|
406
406
|
overflow: hidden;
|
|
407
|
-
border: 1px solid var(--ui-border-
|
|
407
|
+
border: 1px solid var(--ui-border-low);
|
|
408
408
|
background-image:
|
|
409
409
|
linear-gradient(45deg, #ccc 25%, transparent 25%),
|
|
410
410
|
linear-gradient(-45deg, #ccc 25%, transparent 25%),
|
|
@@ -442,7 +442,7 @@
|
|
|
442
442
|
gap: var(--ui-space-8);
|
|
443
443
|
padding: var(--ui-space-12);
|
|
444
444
|
background: var(--ui-surface-lowest);
|
|
445
|
-
border: 1px solid var(--ui-border-
|
|
445
|
+
border: 1px solid var(--ui-border-low);
|
|
446
446
|
border-radius: var(--ui-radius-md);
|
|
447
447
|
margin-top: var(--ui-space-8);
|
|
448
448
|
}
|
|
@@ -517,7 +517,7 @@
|
|
|
517
517
|
text-align: right;
|
|
518
518
|
flex-shrink: 0;
|
|
519
519
|
background: var(--ui-surface-lowest);
|
|
520
|
-
border: 1px solid var(--ui-border-
|
|
520
|
+
border: 1px solid var(--ui-border-low);
|
|
521
521
|
border-radius: var(--ui-radius-sm);
|
|
522
522
|
padding: var(--ui-space-2) var(--ui-space-4);
|
|
523
523
|
-moz-appearance: textfield;
|
|
@@ -532,7 +532,7 @@
|
|
|
532
532
|
|
|
533
533
|
.shadow-slider-input:focus {
|
|
534
534
|
outline: none;
|
|
535
|
-
border-color: var(--ui-border-
|
|
535
|
+
border-color: var(--ui-border-high);
|
|
536
536
|
}
|
|
537
537
|
|
|
538
538
|
.shadow-slider-unit {
|
|
@@ -564,7 +564,7 @@
|
|
|
564
564
|
gap: var(--ui-space-8);
|
|
565
565
|
padding: var(--ui-space-12);
|
|
566
566
|
background: var(--ui-surface-lowest);
|
|
567
|
-
border: 1px solid var(--ui-border-
|
|
567
|
+
border: 1px solid var(--ui-border-low);
|
|
568
568
|
border-radius: var(--ui-radius-md);
|
|
569
569
|
width: 100%;
|
|
570
570
|
min-width: 14rem;
|
|
@@ -576,7 +576,7 @@
|
|
|
576
576
|
gap: var(--ui-space-4);
|
|
577
577
|
margin-top: var(--ui-space-4);
|
|
578
578
|
padding-top: var(--ui-space-8);
|
|
579
|
-
border-top: 1px solid var(--ui-border-
|
|
579
|
+
border-top: 1px solid var(--ui-border-low);
|
|
580
580
|
}
|
|
581
581
|
|
|
582
582
|
.shadow-css-output code {
|
|
@@ -592,7 +592,7 @@
|
|
|
592
592
|
color: var(--ui-text-muted);
|
|
593
593
|
cursor: pointer;
|
|
594
594
|
padding: var(--ui-space-2) var(--ui-space-6);
|
|
595
|
-
border: 1px solid var(--ui-border-
|
|
595
|
+
border: 1px solid var(--ui-border-low);
|
|
596
596
|
border-radius: var(--ui-radius-sm);
|
|
597
597
|
text-align: center;
|
|
598
598
|
transition: color var(--ui-transition-fast), border-color var(--ui-transition-fast);
|
|
@@ -600,7 +600,7 @@
|
|
|
600
600
|
|
|
601
601
|
.shadow-copy-btn:hover {
|
|
602
602
|
color: var(--ui-text-primary);
|
|
603
|
-
border-color: var(--ui-border-
|
|
603
|
+
border-color: var(--ui-border-high);
|
|
604
604
|
}
|
|
605
605
|
|
|
606
606
|
.slider-track {
|
|
@@ -609,7 +609,7 @@
|
|
|
609
609
|
position: relative;
|
|
610
610
|
height: 12px;
|
|
611
611
|
border-radius: var(--ui-radius-sm);
|
|
612
|
-
border: 1px solid var(--ui-border-
|
|
612
|
+
border: 1px solid var(--ui-border-low);
|
|
613
613
|
}
|
|
614
614
|
|
|
615
615
|
.slider-track input[type="range"] {
|
|
@@ -631,7 +631,7 @@
|
|
|
631
631
|
height: 14px;
|
|
632
632
|
border-radius: 2px;
|
|
633
633
|
background: white;
|
|
634
|
-
border: 1px solid var(--ui-border-
|
|
634
|
+
border: 1px solid var(--ui-border-low);
|
|
635
635
|
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
|
|
636
636
|
cursor: pointer;
|
|
637
637
|
}
|
|
@@ -641,7 +641,7 @@
|
|
|
641
641
|
height: 14px;
|
|
642
642
|
border-radius: 2px;
|
|
643
643
|
background: white;
|
|
644
|
-
border: 1px solid var(--ui-border-
|
|
644
|
+
border: 1px solid var(--ui-border-low);
|
|
645
645
|
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
|
|
646
646
|
cursor: pointer;
|
|
647
647
|
}
|
|
@@ -661,7 +661,7 @@
|
|
|
661
661
|
width: 2rem;
|
|
662
662
|
flex-shrink: 0;
|
|
663
663
|
border-radius: var(--ui-radius-sm);
|
|
664
|
-
border: 1px solid var(--ui-border-
|
|
664
|
+
border: 1px solid var(--ui-border-low);
|
|
665
665
|
}
|
|
666
666
|
|
|
667
667
|
.global-color-sliders {
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
seedShadowsFromDom, shadowTokenCss, computeShadowXY,
|
|
19
19
|
SCALE_SHADOW_VARIABLES, defaultShadowOverride,
|
|
20
20
|
type Scope,
|
|
21
|
-
} from '../../
|
|
22
|
-
import type { ShadowToken, ShadowOverrideFlags, EditorState } from '../../
|
|
21
|
+
} from '../../core/store/editorStore';
|
|
22
|
+
import type { ShadowToken, ShadowOverrideFlags, EditorState } from '../../core/store/editorTypes';
|
|
23
23
|
|
|
24
24
|
interface Props {
|
|
25
25
|
copiedVar?: string | null;
|
|
@@ -803,12 +803,12 @@
|
|
|
803
803
|
}
|
|
804
804
|
|
|
805
805
|
.section-title {
|
|
806
|
-
font-size: var(--ui-font-size-
|
|
806
|
+
font-size: var(--ui-font-size-2xl);
|
|
807
807
|
font-weight: var(--ui-font-weight-semibold);
|
|
808
808
|
color: var(--ui-text-primary);
|
|
809
809
|
margin: 0;
|
|
810
810
|
padding-bottom: var(--ui-space-8);
|
|
811
|
-
border-bottom:
|
|
811
|
+
border-bottom: 2px solid var(--ui-border-high);
|
|
812
812
|
}
|
|
813
813
|
|
|
814
814
|
.token-info {
|
|
@@ -890,7 +890,7 @@
|
|
|
890
890
|
color: var(--ui-text-muted);
|
|
891
891
|
cursor: pointer;
|
|
892
892
|
padding: var(--ui-space-4) var(--ui-space-8);
|
|
893
|
-
border: 1px solid var(--ui-border-
|
|
893
|
+
border: 1px solid var(--ui-border-low);
|
|
894
894
|
border-radius: var(--ui-radius-sm);
|
|
895
895
|
text-align: center;
|
|
896
896
|
transition: color var(--ui-transition-fast), border-color var(--ui-transition-fast);
|
|
@@ -898,7 +898,7 @@
|
|
|
898
898
|
|
|
899
899
|
.reset-btn:hover {
|
|
900
900
|
color: var(--ui-text-primary);
|
|
901
|
-
border-color: var(--ui-border-
|
|
901
|
+
border-color: var(--ui-border-high);
|
|
902
902
|
}
|
|
903
903
|
|
|
904
904
|
.shadow-box {
|
|
@@ -945,7 +945,7 @@
|
|
|
945
945
|
text-align: right;
|
|
946
946
|
flex-shrink: 0;
|
|
947
947
|
background: var(--ui-surface-lowest);
|
|
948
|
-
border: 1px solid var(--ui-border-
|
|
948
|
+
border: 1px solid var(--ui-border-low);
|
|
949
949
|
border-radius: var(--ui-radius-sm);
|
|
950
950
|
padding: var(--ui-space-2) var(--ui-space-4);
|
|
951
951
|
-moz-appearance: textfield;
|
|
@@ -960,7 +960,7 @@
|
|
|
960
960
|
|
|
961
961
|
.shadow-slider-input:focus {
|
|
962
962
|
outline: none;
|
|
963
|
-
border-color: var(--ui-border-
|
|
963
|
+
border-color: var(--ui-border-high);
|
|
964
964
|
}
|
|
965
965
|
|
|
966
966
|
.shadow-slider-unit {
|
|
@@ -980,7 +980,7 @@
|
|
|
980
980
|
|
|
981
981
|
.dial-ring {
|
|
982
982
|
fill: none;
|
|
983
|
-
stroke: var(--ui-border-
|
|
983
|
+
stroke: var(--ui-border-low);
|
|
984
984
|
stroke-width: 1.5;
|
|
985
985
|
}
|
|
986
986
|
|
|
@@ -996,7 +996,7 @@
|
|
|
996
996
|
}
|
|
997
997
|
|
|
998
998
|
.angle-dial:hover .dial-ring {
|
|
999
|
-
stroke: var(--ui-border-
|
|
999
|
+
stroke: var(--ui-border-high);
|
|
1000
1000
|
}
|
|
1001
1001
|
|
|
1002
1002
|
.angle-dial:hover .dial-handle {
|
|
@@ -1009,7 +1009,7 @@
|
|
|
1009
1009
|
gap: var(--ui-space-4);
|
|
1010
1010
|
margin-top: var(--ui-space-4);
|
|
1011
1011
|
padding-top: var(--ui-space-8);
|
|
1012
|
-
border-top: 1px solid var(--ui-border-
|
|
1012
|
+
border-top: 1px solid var(--ui-border-low);
|
|
1013
1013
|
}
|
|
1014
1014
|
|
|
1015
1015
|
.shadow-css-output code {
|
|
@@ -1025,7 +1025,7 @@
|
|
|
1025
1025
|
color: var(--ui-text-muted);
|
|
1026
1026
|
cursor: pointer;
|
|
1027
1027
|
padding: var(--ui-space-2) var(--ui-space-6);
|
|
1028
|
-
border: 1px solid var(--ui-border-
|
|
1028
|
+
border: 1px solid var(--ui-border-low);
|
|
1029
1029
|
border-radius: var(--ui-radius-sm);
|
|
1030
1030
|
text-align: center;
|
|
1031
1031
|
transition: color var(--ui-transition-fast), border-color var(--ui-transition-fast);
|
|
@@ -1033,7 +1033,7 @@
|
|
|
1033
1033
|
|
|
1034
1034
|
.shadow-copy-btn:hover {
|
|
1035
1035
|
color: var(--ui-text-primary);
|
|
1036
|
-
border-color: var(--ui-border-
|
|
1036
|
+
border-color: var(--ui-border-high);
|
|
1037
1037
|
}
|
|
1038
1038
|
|
|
1039
1039
|
/* Global shadow editor */
|
|
@@ -1046,7 +1046,7 @@
|
|
|
1046
1046
|
gap: var(--ui-space-6);
|
|
1047
1047
|
padding: var(--ui-space-12);
|
|
1048
1048
|
background: var(--ui-surface-lowest);
|
|
1049
|
-
border: 1px solid var(--ui-border-
|
|
1049
|
+
border: 1px solid var(--ui-border-low);
|
|
1050
1050
|
border-radius: var(--ui-radius-md);
|
|
1051
1051
|
width: 18rem;
|
|
1052
1052
|
}
|
|
@@ -1103,7 +1103,7 @@
|
|
|
1103
1103
|
position: relative;
|
|
1104
1104
|
height: 12px;
|
|
1105
1105
|
border-radius: var(--ui-radius-sm);
|
|
1106
|
-
border: 1px solid var(--ui-border-
|
|
1106
|
+
border: 1px solid var(--ui-border-low);
|
|
1107
1107
|
}
|
|
1108
1108
|
|
|
1109
1109
|
.slider-track input[type="range"] {
|
|
@@ -1125,7 +1125,7 @@
|
|
|
1125
1125
|
height: 14px;
|
|
1126
1126
|
border-radius: 2px;
|
|
1127
1127
|
background: white;
|
|
1128
|
-
border: 1px solid var(--ui-border-
|
|
1128
|
+
border: 1px solid var(--ui-border-low);
|
|
1129
1129
|
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
|
|
1130
1130
|
cursor: pointer;
|
|
1131
1131
|
}
|
|
@@ -1135,7 +1135,7 @@
|
|
|
1135
1135
|
height: 14px;
|
|
1136
1136
|
border-radius: 2px;
|
|
1137
1137
|
background: white;
|
|
1138
|
-
border: 1px solid var(--ui-border-
|
|
1138
|
+
border: 1px solid var(--ui-border-low);
|
|
1139
1139
|
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
|
|
1140
1140
|
cursor: pointer;
|
|
1141
1141
|
}
|
|
@@ -1155,7 +1155,7 @@
|
|
|
1155
1155
|
width: 2rem;
|
|
1156
1156
|
flex-shrink: 0;
|
|
1157
1157
|
border-radius: var(--ui-radius-sm);
|
|
1158
|
-
border: 1px solid var(--ui-border-
|
|
1158
|
+
border: 1px solid var(--ui-border-low);
|
|
1159
1159
|
}
|
|
1160
1160
|
|
|
1161
1161
|
.global-color-sliders {
|
|
@@ -1172,7 +1172,7 @@
|
|
|
1172
1172
|
color: var(--ui-text-muted);
|
|
1173
1173
|
cursor: pointer;
|
|
1174
1174
|
padding: var(--ui-space-4) var(--ui-space-8);
|
|
1175
|
-
border: 1px solid var(--ui-border-
|
|
1175
|
+
border: 1px solid var(--ui-border-low);
|
|
1176
1176
|
border-radius: var(--ui-radius-md);
|
|
1177
1177
|
background: var(--ui-surface-low);
|
|
1178
1178
|
transition: color var(--ui-transition-fast), border-color var(--ui-transition-fast);
|
|
@@ -1180,7 +1180,7 @@
|
|
|
1180
1180
|
|
|
1181
1181
|
.bg-picker-btn:hover {
|
|
1182
1182
|
color: var(--ui-text-primary);
|
|
1183
|
-
border-color: var(--ui-border-
|
|
1183
|
+
border-color: var(--ui-border-high);
|
|
1184
1184
|
}
|
|
1185
1185
|
|
|
1186
1186
|
.bg-picker-menu {
|
|
@@ -1192,7 +1192,7 @@
|
|
|
1192
1192
|
max-height: 24rem;
|
|
1193
1193
|
overflow-y: auto;
|
|
1194
1194
|
background: var(--ui-surface-low);
|
|
1195
|
-
border: 1px solid var(--ui-border-
|
|
1195
|
+
border: 1px solid var(--ui-border-low);
|
|
1196
1196
|
border-radius: var(--ui-radius-md);
|
|
1197
1197
|
padding: var(--ui-space-4);
|
|
1198
1198
|
display: flex;
|
|
@@ -1250,7 +1250,7 @@
|
|
|
1250
1250
|
width: 1rem;
|
|
1251
1251
|
height: 1rem;
|
|
1252
1252
|
border-radius: var(--ui-radius-sm);
|
|
1253
|
-
border: 1px solid var(--ui-border-
|
|
1253
|
+
border: 1px solid var(--ui-border-low);
|
|
1254
1254
|
flex-shrink: 0;
|
|
1255
1255
|
}
|
|
1256
1256
|
</style>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* Values are read live via getComputedStyle (passed in by the parent through
|
|
13
13
|
* `tokens`), so tokens.css remains the single source of truth.
|
|
14
14
|
*/
|
|
15
|
-
import { editorState } from '../../
|
|
15
|
+
import { editorState } from '../../core/store/editorStore';
|
|
16
16
|
|
|
17
17
|
interface TokenItem {
|
|
18
18
|
variable: string;
|
|
@@ -263,7 +263,7 @@
|
|
|
263
263
|
width: 3.5rem;
|
|
264
264
|
height: 3.5rem;
|
|
265
265
|
background: none;
|
|
266
|
-
border: 2px solid var(--ui-border-
|
|
266
|
+
border: 2px solid var(--ui-border-high);
|
|
267
267
|
}
|
|
268
268
|
|
|
269
269
|
/* Font sizes / icon sizes */
|
|
@@ -339,7 +339,7 @@
|
|
|
339
339
|
align-items: baseline;
|
|
340
340
|
gap: var(--ui-space-12);
|
|
341
341
|
padding: var(--ui-space-4) 0;
|
|
342
|
-
border-bottom: 1px solid var(--ui-border-
|
|
342
|
+
border-bottom: 1px solid var(--ui-border-low);
|
|
343
343
|
}
|
|
344
344
|
|
|
345
345
|
.token-row:last-child {
|
|
@@ -21,14 +21,6 @@
|
|
|
21
21
|
variant?: BadgeVariant;
|
|
22
22
|
size?: 'default' | 'small';
|
|
23
23
|
icon?: string | undefined;
|
|
24
|
-
/** When true, badge is absolutely positioned. Requires the parent to be position: relative. */
|
|
25
|
-
floating?: boolean;
|
|
26
|
-
/** Corner of the positioned parent to attach to when floating. */
|
|
27
|
-
anchor?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
28
|
-
/** CSS length to offset from the anchor edges. Defaults to --space-12 (or --space-8 when size='small'). */
|
|
29
|
-
offset?: string | undefined;
|
|
30
|
-
/** When true, badge sits flush in the anchor corner: zero offset and squared corners. */
|
|
31
|
-
flush?: boolean;
|
|
32
24
|
/** Custom icon content. Falls back to `icon` prop's font-icon class. Renamed from `slot="icon"` in 0.5.0. */
|
|
33
25
|
iconSlot?: Snippet;
|
|
34
26
|
children?: Snippet;
|
|
@@ -38,10 +30,6 @@
|
|
|
38
30
|
variant = 'info',
|
|
39
31
|
size = 'default',
|
|
40
32
|
icon = undefined,
|
|
41
|
-
floating = false,
|
|
42
|
-
anchor = 'bottom-right',
|
|
43
|
-
offset = undefined,
|
|
44
|
-
flush = false,
|
|
45
33
|
iconSlot,
|
|
46
34
|
children,
|
|
47
35
|
}: Props = $props();
|
|
@@ -50,10 +38,6 @@
|
|
|
50
38
|
<span
|
|
51
39
|
class="badge badge-{variant}"
|
|
52
40
|
class:badge-small={size === 'small'}
|
|
53
|
-
class:badge-floating={floating}
|
|
54
|
-
class:badge-flush={flush}
|
|
55
|
-
data-anchor={floating ? anchor : undefined}
|
|
56
|
-
style={floating && offset && !flush ? `--badge-offset: ${offset};` : undefined}
|
|
57
41
|
>
|
|
58
42
|
{#if icon}
|
|
59
43
|
<span class="icon"><i class={icon}></i></span>
|
|
@@ -228,7 +212,6 @@
|
|
|
228
212
|
}
|
|
229
213
|
|
|
230
214
|
.badge {
|
|
231
|
-
--badge-offset: var(--space-12);
|
|
232
215
|
display: inline-flex;
|
|
233
216
|
align-items: center;
|
|
234
217
|
gap: var(--space-6);
|
|
@@ -249,22 +232,9 @@
|
|
|
249
232
|
}
|
|
250
233
|
|
|
251
234
|
.badge-small {
|
|
252
|
-
--badge-offset: var(--space-8);
|
|
253
235
|
gap: var(--space-4);
|
|
254
236
|
}
|
|
255
237
|
|
|
256
|
-
.badge-floating {
|
|
257
|
-
position: absolute;
|
|
258
|
-
/* Floating badges are decorative overlays over other content — let clicks
|
|
259
|
-
pass through to whatever owns the underlying surface (links, buttons). */
|
|
260
|
-
pointer-events: none;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
.badge-floating[data-anchor='top-left'] { top: var(--badge-offset); left: var(--badge-offset); }
|
|
264
|
-
.badge-floating[data-anchor='top-right'] { top: var(--badge-offset); right: var(--badge-offset); }
|
|
265
|
-
.badge-floating[data-anchor='bottom-left'] { bottom: var(--badge-offset); left: var(--badge-offset); }
|
|
266
|
-
.badge-floating[data-anchor='bottom-right'] { bottom: var(--badge-offset); right: var(--badge-offset); }
|
|
267
|
-
|
|
268
238
|
@each $v in $variants {
|
|
269
239
|
.badge-#{$v} {
|
|
270
240
|
--badge-icon-size: var(--badge-#{$v}-icon-size);
|
|
@@ -281,10 +251,4 @@
|
|
|
281
251
|
box-shadow: var(--badge-#{$v}-shadow);
|
|
282
252
|
}
|
|
283
253
|
}
|
|
284
|
-
|
|
285
|
-
/* Flush wins over per-variant radius via source order — declared after @each. */
|
|
286
|
-
.badge-flush {
|
|
287
|
-
--badge-offset: 0;
|
|
288
|
-
border-radius: 0;
|
|
289
|
-
}
|
|
290
254
|
</style>
|
|
@@ -39,9 +39,10 @@
|
|
|
39
39
|
</div>
|
|
40
40
|
</div>
|
|
41
41
|
|
|
42
|
-
<style>
|
|
42
|
+
<style lang="scss">
|
|
43
|
+
@use '../styles/padding' as *;
|
|
44
|
+
|
|
43
45
|
:global(:root) {
|
|
44
|
-
/* Default */
|
|
45
46
|
--card-default-surface: var(--surface-neutral-high);
|
|
46
47
|
--card-default-border: var(--border-neutral);
|
|
47
48
|
--card-default-border-width: var(--border-width-1);
|
|
@@ -66,30 +67,8 @@
|
|
|
66
67
|
--card-default-body-font-weight: var(--font-weight-normal);
|
|
67
68
|
--card-default-body-line-height: var(--line-height-md);
|
|
68
69
|
|
|
69
|
-
/* Hover */
|
|
70
|
-
--card-hover-surface: var(--surface-neutral-high);
|
|
71
70
|
--card-hover-border: var(--border-neutral-strong);
|
|
72
|
-
--card-hover-border-width: var(--border-width-1);
|
|
73
|
-
--card-hover-radius: var(--radius-lg);
|
|
74
|
-
--card-hover-header-padding: var(--space-16);
|
|
75
|
-
--card-hover-body-padding: var(--space-16);
|
|
76
71
|
--card-hover-shadow: var(--shadow-md);
|
|
77
|
-
--card-hover-blur: var(--blur-none);
|
|
78
|
-
--card-hover-header-surface: var(--color-transparent);
|
|
79
|
-
|
|
80
|
-
--card-hover-title: var(--text-primary);
|
|
81
|
-
--card-hover-title-font-family: var(--font-sans);
|
|
82
|
-
--card-hover-title-font-size: var(--font-size-lg);
|
|
83
|
-
--card-hover-title-font-weight: var(--font-weight-normal);
|
|
84
|
-
--card-hover-title-line-height: var(--line-height-sm);
|
|
85
|
-
|
|
86
|
-
--card-hover-icon-size: var(--icon-size-lg);
|
|
87
|
-
|
|
88
|
-
--card-hover-body: var(--text-secondary);
|
|
89
|
-
--card-hover-body-font-family: var(--font-sans);
|
|
90
|
-
--card-hover-body-font-size: var(--font-size-md);
|
|
91
|
-
--card-hover-body-font-weight: var(--font-weight-normal);
|
|
92
|
-
--card-hover-body-line-height: var(--line-height-md);
|
|
93
72
|
}
|
|
94
73
|
|
|
95
74
|
.card {
|
|
@@ -98,35 +77,27 @@
|
|
|
98
77
|
border-radius: var(--card-default-radius);
|
|
99
78
|
box-shadow: var(--card-default-shadow);
|
|
100
79
|
backdrop-filter: blur(var(--card-default-blur));
|
|
101
|
-
transition:
|
|
80
|
+
transition: border-color var(--duration-150), box-shadow var(--duration-150);
|
|
102
81
|
display: flex;
|
|
103
82
|
flex-direction: column;
|
|
104
83
|
overflow: hidden;
|
|
84
|
+
letter-spacing: normal;
|
|
105
85
|
}
|
|
106
86
|
|
|
107
87
|
.card:not(.no-hover):hover,
|
|
108
88
|
.card.force-hover {
|
|
109
|
-
|
|
110
|
-
border: var(--card-hover-border-width) solid var(--card-hover-border);
|
|
111
|
-
border-radius: var(--card-hover-radius);
|
|
89
|
+
border-color: var(--card-hover-border);
|
|
112
90
|
box-shadow: var(--card-hover-shadow);
|
|
113
|
-
backdrop-filter: blur(var(--card-hover-blur));
|
|
114
91
|
}
|
|
115
92
|
|
|
116
93
|
.card-header {
|
|
117
94
|
display: flex;
|
|
118
95
|
align-items: center;
|
|
119
96
|
gap: var(--space-8);
|
|
120
|
-
padding
|
|
97
|
+
@include themed-padding(--card-default-header-padding);
|
|
121
98
|
background: var(--card-default-header-surface);
|
|
122
99
|
}
|
|
123
100
|
|
|
124
|
-
.card:not(.no-hover):hover .card-header,
|
|
125
|
-
.card.force-hover .card-header {
|
|
126
|
-
padding: var(--card-hover-header-padding);
|
|
127
|
-
background: var(--card-hover-header-surface);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
101
|
.card.compact .card-header,
|
|
131
102
|
.card.compact .card-body {
|
|
132
103
|
padding: var(--space-8) var(--space-12);
|
|
@@ -137,12 +108,6 @@
|
|
|
137
108
|
color: var(--card-color, var(--card-default-title));
|
|
138
109
|
}
|
|
139
110
|
|
|
140
|
-
.card:not(.no-hover):hover .card-icon,
|
|
141
|
-
.card.force-hover .card-icon {
|
|
142
|
-
font-size: var(--card-hover-icon-size);
|
|
143
|
-
color: var(--card-color, var(--card-hover-title));
|
|
144
|
-
}
|
|
145
|
-
|
|
146
111
|
.card.compact .card-icon {
|
|
147
112
|
font-size: var(--icon-size-md);
|
|
148
113
|
}
|
|
@@ -155,15 +120,6 @@
|
|
|
155
120
|
line-height: var(--card-default-title-line-height);
|
|
156
121
|
}
|
|
157
122
|
|
|
158
|
-
.card:not(.no-hover):hover .card-title,
|
|
159
|
-
.card.force-hover .card-title {
|
|
160
|
-
color: var(--card-hover-title);
|
|
161
|
-
font-family: var(--card-hover-title-font-family);
|
|
162
|
-
font-size: var(--card-hover-title-font-size);
|
|
163
|
-
font-weight: var(--card-hover-title-font-weight);
|
|
164
|
-
line-height: var(--card-hover-title-line-height);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
123
|
.card.compact .card-title {
|
|
168
124
|
font-size: var(--font-size-md);
|
|
169
125
|
}
|
|
@@ -174,17 +130,7 @@
|
|
|
174
130
|
font-size: var(--card-default-body-font-size);
|
|
175
131
|
font-weight: var(--card-default-body-font-weight);
|
|
176
132
|
line-height: var(--card-default-body-line-height);
|
|
177
|
-
padding
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
.card:not(.no-hover):hover .card-body,
|
|
181
|
-
.card.force-hover .card-body {
|
|
182
|
-
color: var(--card-hover-body);
|
|
183
|
-
font-family: var(--card-hover-body-font-family);
|
|
184
|
-
font-size: var(--card-hover-body-font-size);
|
|
185
|
-
font-weight: var(--card-hover-body-font-weight);
|
|
186
|
-
line-height: var(--card-hover-body-line-height);
|
|
187
|
-
padding: var(--card-hover-body-padding);
|
|
133
|
+
@include themed-padding(--card-default-body-padding);
|
|
188
134
|
}
|
|
189
135
|
|
|
190
136
|
.card.compact .card-body {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
anchor?: CornerAnchor;
|
|
12
12
|
size?: 'default' | 'small';
|
|
13
13
|
icon?: string | undefined;
|
|
14
|
-
/** Custom icon content
|
|
14
|
+
/** Custom icon content; falls back to `icon` prop's font-icon class. */
|
|
15
15
|
iconSlot?: Snippet;
|
|
16
16
|
children?: Snippet;
|
|
17
17
|
}
|
|
@@ -37,23 +37,10 @@
|
|
|
37
37
|
|
|
38
38
|
$variants: primary, accent, neutral, alternate, canvas, special, success, warning, danger, info;
|
|
39
39
|
|
|
40
|
-
//
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
// the rendered DOM would be identical. Same pattern as Badge.svelte / Notification.svelte.
|
|
45
|
-
//
|
|
46
|
-
// Role-based radii: each variable follows the badge's geometry regardless of anchor.
|
|
47
|
-
// - outer: the corner flush with the parent's anchored corner
|
|
48
|
-
// - inner: the diagonally opposite corner (deepest into the parent)
|
|
49
|
-
// - h-axis: the on-axis corner along the horizontal edge shared with `outer`
|
|
50
|
-
// - v-axis: the on-axis corner along the vertical edge shared with `outer`
|
|
51
|
-
//
|
|
52
|
-
// Padding + font props are corner-badge-specific (not inherited from the
|
|
53
|
-
// sibling Badge variant), so corner-badge instances can carry their own
|
|
54
|
-
// typography and sizing without dragging the inline Badge along. They default
|
|
55
|
-
// to the same underlying global tokens Badge uses, so an unconfigured corner
|
|
56
|
-
// badge still matches its inline badge counterpart visually.
|
|
40
|
+
// Flat per-variant blocks (no @each) so extractGlobalRootBody can parse them verbatim.
|
|
41
|
+
// Role-based radii follow badge geometry regardless of anchor:
|
|
42
|
+
// outer = flush corner, inner = diagonal, h-axis/v-axis = edges shared with outer.
|
|
43
|
+
// Padding + font are corner-badge-specific; defaults match Badge so unconfigured looks identical.
|
|
57
44
|
:global(:root) {
|
|
58
45
|
/* Primary */
|
|
59
46
|
--corner-badge-primary-margin: var(--space-0);
|
|
@@ -182,11 +169,8 @@
|
|
|
182
169
|
pointer-events: none;
|
|
183
170
|
}
|
|
184
171
|
|
|
185
|
-
//
|
|
186
|
-
//
|
|
187
|
-
// Padding + font props are forwarded directly onto the inner Badge so the
|
|
188
|
-
// corner-badge tokens fully replace Badge's per-variant declarations
|
|
189
|
-
// (otherwise Badge's own `.badge-#{$v}` rule wins by source order).
|
|
172
|
+
// Pull public tokens into private vars so anchor mappings below stay generic (avoids 4×10 rules).
|
|
173
|
+
// Padding + font forwarded onto inner Badge to override Badge's own `.badge-#{$v}` rule.
|
|
190
174
|
@each $v in $variants {
|
|
191
175
|
.corner-badge-#{$v} {
|
|
192
176
|
--_margin: var(--corner-badge-#{$v}-margin);
|
|
@@ -210,7 +194,7 @@
|
|
|
210
194
|
.corner-badge-top-right { top: var(--_margin); right: var(--_margin); }
|
|
211
195
|
.corner-badge-top-left { top: var(--_margin); left: var(--_margin); }
|
|
212
196
|
|
|
213
|
-
/*
|
|
197
|
+
/* Logical roles to physical corners, per anchor. */
|
|
214
198
|
.corner-badge-bottom-right :global(.badge) {
|
|
215
199
|
border-top-left-radius: var(--_inner-radius);
|
|
216
200
|
border-top-right-radius: var(--_v-axis-radius);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { createEventDispatcher, tick } from 'svelte';
|
|
3
3
|
import type { Snippet } from 'svelte';
|
|
4
4
|
import Button from './Button.svelte';
|
|
5
|
-
import { editorState } from '
|
|
5
|
+
import { editorState } from '../../editor/core/store/editorStore';
|
|
6
6
|
import type { ButtonVariant, DialogButtonSpec } from './types';
|
|
7
7
|
|
|
8
8
|
const BUTTON_VARIANTS: readonly ButtonVariant[] = ['primary', 'secondary', 'outline', 'success', 'danger', 'warning'];
|