@dfosco/storyboard 0.7.1 → 0.9.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/dist/storyboard-ui.css +1 -1
- package/dist/storyboard-ui.js +14128 -10953
- package/dist/storyboard-ui.js.map +1 -1
- package/dist/tailwind.css +1 -1
- package/dist/tiny-canvas.css +1 -1
- package/package.json +138 -128
- package/scaffold/AGENTS.md +9 -7
- package/scaffold/README.md +18 -0
- package/scaffold/deploy.yml +21 -0
- package/scaffold/gitignore +8 -14
- package/scaffold/preview.yml +40 -0
- package/scaffold/{manifest.json → scaffold.config.json} +73 -3
- package/scaffold/scripts/aggregate-artifacts.mjs +257 -0
- package/scaffold/skills/canvas/SKILL.md +1 -1
- package/scaffold/skills/migrate-0.5.0/SKILL.md +1 -1
- package/scaffold/skills/ship/SKILL.md +2 -2
- package/scaffold/skills/worktree/SKILL.md +1 -1
- package/scaffold/src/_prototype.jsx +17 -0
- package/scaffold/src/_story.jsx +13 -0
- package/scaffold/src/library/README.md +34 -0
- package/scaffold/src/library/_app.jsx +41 -0
- package/scaffold/src/library/_app.module.css +2 -0
- package/scaffold/src/library/create.jsx +10 -0
- package/scaffold/src/library/index.jsx +14 -0
- package/scaffold/src/library/mount.jsx +51 -0
- package/scaffold/src/library/prototypes-entry.jsx +57 -0
- package/scaffold/src/library/routes.jsx +205 -0
- package/scaffold/src/library/viewfinder.jsx +13 -0
- package/scaffold/src/library/workspace.jsx +17 -0
- package/scripts/aggregate-artifacts.mjs +257 -0
- package/src/canvas/style.css +16 -16
- package/src/core/artifact/operations.js +54 -15
- package/src/core/artifact/schemas/canvas.schema.json +7 -1
- package/src/core/autosync/server.test.js +1 -1
- package/src/core/canvas/hot-pool.js +21 -33
- package/src/core/canvas/materializer.js +39 -13
- package/src/core/canvas/selectedWidgets.js +1 -1
- package/src/core/canvas/server.js +376 -100
- package/src/core/canvas/server.test.js +472 -2
- package/src/core/canvas/terminal-server.js +144 -57
- package/src/core/canvas/undoRedo.js +174 -0
- package/src/core/canvas/undoRedo.test.js +250 -0
- package/src/core/cli/artifact.js +2 -0
- package/src/core/cli/buildManifest.js +34 -0
- package/src/core/cli/canvasRedo.js +44 -0
- package/src/core/cli/canvasUndo.js +40 -0
- package/src/core/cli/create.js +151 -23
- package/src/core/cli/dev.js +23 -35
- package/src/core/cli/index.js +21 -0
- package/src/core/cli/schemas.js +8 -4
- package/src/core/cli/serverUrl.js +24 -0
- package/src/core/cli/setup.js +14 -25
- package/src/core/cli/terminal-welcome.js +12 -6
- package/src/core/cli/updateVersion.js +42 -2
- package/src/core/cli/workleaf.js +140 -0
- package/src/core/comments/api.js +1 -1
- package/src/core/comments/queries.js +3 -0
- package/src/core/comments/ui/CommentWindow.jsx +3 -2
- package/src/core/comments/ui/comment-layout.css +14 -14
- package/src/core/data/artifactIndex.js +235 -0
- package/src/core/data/artifactIndex.test.js +203 -0
- package/src/core/data/artifactManifest.js +290 -0
- package/src/core/data/artifactManifest.test.js +207 -0
- package/src/core/data/viewfinder.js +47 -7
- package/src/core/index.js +24 -1
- package/src/core/inspector/highlighter.js +1 -1
- package/src/core/inspector/mouseMode.js +2 -2
- package/src/core/lib/components/ui/avatar/avatar-fallback.jsx +2 -2
- package/src/core/lib/components/ui/avatar/avatar-image.jsx +2 -2
- package/src/core/lib/components/ui/avatar/avatar.jsx +2 -2
- package/src/core/lib/components/ui/checkbox/checkbox.jsx +12 -9
- package/src/core/lib/components/ui/dialog/dialog-content.jsx +45 -31
- package/src/core/lib/components/ui/dialog/dialog-trigger.jsx +9 -5
- package/src/core/lib/components/ui/dialog/dialog.jsx +12 -3
- package/src/core/lib/components/ui/dialog/dialog.module.css +118 -0
- package/src/core/lib/components/ui/dialog/index.js +4 -34
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.jsx +3 -3
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.jsx +19 -9
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-content.jsx +8 -8
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.jsx +2 -2
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-group.jsx +2 -2
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-item.jsx +15 -4
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-portal.jsx +2 -2
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.jsx +2 -2
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.jsx +14 -7
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-separator.jsx +2 -2
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.jsx +8 -4
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.jsx +4 -4
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-sub.jsx +2 -2
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-trigger.jsx +8 -2
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu.jsx +2 -2
- package/src/core/lib/components/ui/label/label.jsx +1 -2
- package/src/core/lib/components/ui/panel/panel-close.jsx +7 -4
- package/src/core/lib/components/ui/panel/panel-content.jsx +7 -9
- package/src/core/lib/components/ui/panel/panel-title.jsx +3 -3
- package/src/core/lib/components/ui/panel/panel.jsx +11 -2
- package/src/core/lib/components/ui/separator/separator.jsx +6 -4
- package/src/core/lib/components/ui/tooltip/tooltip-content.jsx +7 -6
- package/src/core/lib/components/ui/tooltip/tooltip-trigger.jsx +13 -6
- package/src/core/lib/components/ui/tooltip/tooltip.jsx +5 -5
- package/src/core/modes/modes.css +4 -4
- package/src/core/mountStoryboardCore.js +287 -83
- package/src/core/mountStoryboardCore.test.js +198 -0
- package/src/core/rename-watcher/config.json +1 -1
- package/src/core/rename-watcher/watcher.js +330 -37
- package/src/core/rename-watcher/watcher.test.js +253 -0
- package/src/core/scaffold/fragments.js +287 -0
- package/src/core/scaffold/fragments.test.js +401 -0
- package/src/core/scaffold/index.js +291 -0
- package/src/core/scaffold/migrateLegacyGitignore.js +157 -0
- package/src/core/scaffold/scaffold-integration.test.js +247 -0
- package/src/core/scaffold.js +4 -97
- package/src/core/stores/canvasInteractionStore.js +120 -0
- package/src/core/stores/canvasInteractionStore.test.js +126 -0
- package/src/core/stores/configSchema.js +64 -8
- package/src/core/stores/configSchema.test.js +3 -0
- package/src/core/stores/customerModeConfig.js +24 -3
- package/src/core/stores/customerModeConfig.test.js +46 -0
- package/src/core/stores/presentationStore.js +118 -0
- package/src/core/stores/presentationStore.test.js +114 -0
- package/src/core/stores/recentArtifacts.js +49 -2
- package/src/core/stores/recentArtifacts.test.js +59 -6
- package/src/core/stores/themeBootstrap.js +264 -0
- package/src/core/stores/themeBootstrap.test.js +211 -0
- package/src/core/stores/themeStore.test.js +154 -0
- package/src/core/stores/themeStore.ts +235 -220
- package/src/core/stores/uiConfig.js +10 -2
- package/src/core/styles/generateThemesCss.js +63 -0
- package/src/core/styles/tailwind.css +150 -94
- package/src/core/styles/workspace-chrome.css +13 -0
- package/src/core/tools/handlers/paletteTheme.js +11 -8
- package/src/core/ui/ActionMenuButton.jsx +2 -1
- package/src/core/ui/AutosyncMenuButton.css +7 -7
- package/src/core/ui/BranchSelect.module.css +5 -5
- package/src/core/ui/CanvasCreateMenu.jsx +1 -19
- package/src/core/ui/ChromeSlot.jsx +92 -0
- package/src/core/ui/ChromeSlot.test.jsx +140 -0
- package/src/core/ui/CoreUIBar.css +5 -5
- package/src/core/ui/CoreUIBar.jsx +170 -142
- package/src/core/ui/InspectorPanel.css +5 -5
- package/src/core/ui/InspectorPanel.jsx +9 -9
- package/src/core/ui/PwaInstallBanner.css +5 -5
- package/src/core/ui/PwaInstallBanner.jsx +5 -5
- package/src/core/ui/ThemeMenuButton.jsx +45 -30
- package/src/core/ui/core-ui-colors.css +28 -66
- package/src/core/ui/sidepanel.css +12 -12
- package/src/core/vite/server-plugin.js +13 -0
- package/src/core/workleaf/cleanup.js +102 -0
- package/src/core/workleaf/create.js +199 -0
- package/src/core/workleaf/delete.js +101 -0
- package/src/core/workleaf/list.js +57 -0
- package/src/core/workleaf/merge.js +238 -0
- package/src/core/workleaf/paths.js +146 -0
- package/src/core/workleaf/paths.test.js +230 -0
- package/src/core/workshop/features/createCanvas/CreateCanvasForm.jsx +130 -34
- package/src/core/workshop/features/createFlow/server.js +5 -1
- package/src/core/workshop/features/createPrototype/server.js +5 -1
- package/src/core/workshop/features/templateIndex.js +28 -1
- package/src/core/worktree/port.js +48 -5
- package/src/core/worktree/port.test.js +42 -0
- package/src/internals/ArtifactForm/ArtifactForm.jsx +173 -112
- package/src/internals/ArtifactForm/ArtifactForm.module.css +51 -69
- package/src/internals/ArtifactForm/artifactSchemas.js +40 -5
- package/src/internals/AuthModal/AuthModal.module.css +34 -34
- package/src/internals/BaseUiForm/BaseUiForm.jsx +293 -0
- package/src/internals/BaseUiForm/BaseUiForm.module.css +542 -0
- package/src/internals/BranchBar/BranchBar.module.css +4 -4
- package/src/internals/BranchesDropdown/BranchesDropdown.jsx +69 -0
- package/src/internals/BranchesDropdown/BranchesDropdown.module.css +84 -0
- package/src/internals/CommandPalette/CommandPalette.jsx +41 -29
- package/src/internals/CommandPalette/CreateArtifactForm.jsx +150 -0
- package/src/internals/CommandPalette/CreateDialog.jsx +20 -110
- package/src/internals/CommandPalette/WidgetArtifactDialog.css +16 -16
- package/src/internals/CommandPalette/WidgetArtifactDialog.jsx +1 -1
- package/src/internals/CommandPalette/command-palette.css +14 -14
- package/src/internals/CommandPalette/createHelpers.js +30 -0
- package/src/internals/CreatePage/CreatePage.jsx +57 -0
- package/src/internals/CreatePage/CreatePage.module.css +34 -0
- package/src/internals/Dialog.jsx +51 -0
- package/src/internals/FlowError.module.css +5 -5
- package/src/internals/PrototypeErrorBoundary.module.css +15 -15
- package/src/internals/SimpleWorkspace/SimpleWorkspace.jsx +534 -0
- package/src/internals/SimpleWorkspace/SimpleWorkspace.module.css +323 -0
- package/src/internals/Tooltip.jsx +39 -0
- package/src/internals/Viewfinder.jsx +229 -64
- package/src/internals/Viewfinder.module.css +253 -182
- package/src/internals/canvas/CanvasControls.module.css +11 -11
- package/src/internals/canvas/CanvasPage.bridge.test.jsx +11 -37
- package/src/internals/canvas/CanvasPage.jsx +358 -217
- package/src/internals/canvas/CanvasPage.module.css +20 -19
- package/src/internals/canvas/CanvasPage.multiselect.test.jsx +39 -26
- package/src/internals/canvas/CanvasToolbar.module.css +11 -11
- package/src/internals/canvas/ConnectorLayer.jsx +39 -2
- package/src/internals/canvas/ConnectorLayer.module.css +10 -10
- package/src/internals/canvas/PageSelector.jsx +15 -1
- package/src/internals/canvas/PageSelector.module.css +41 -27
- package/src/internals/canvas/canvasApi.js +40 -5
- package/src/internals/canvas/canvasTheme.js +22 -111
- package/src/internals/canvas/isolation/createIsolationMiddleware.js +68 -0
- package/src/internals/canvas/isolation/mountIsolationApp.jsx +88 -0
- package/src/internals/canvas/isolation/prototypeRoutes.jsx +140 -0
- package/src/internals/canvas/isolation/prototypesEntry.jsx +28 -0
- package/src/internals/canvas/isolation/storiesEntry.jsx +20 -0
- package/src/internals/canvas/isolation/storyRoutes.jsx +55 -0
- package/src/internals/canvas/useUndoRedo.js +75 -60
- package/src/internals/canvas/useUndoRedo.test.js +46 -178
- package/src/internals/canvas/widgets/CodePenEmbed.jsx +16 -36
- package/src/internals/canvas/widgets/CodePenEmbed.module.css +12 -12
- package/src/internals/canvas/widgets/CropOverlay.module.css +23 -23
- package/src/internals/canvas/widgets/ExpandedPane.module.css +8 -8
- package/src/internals/canvas/widgets/ExpandedPaneTopBar.jsx +1 -1
- package/src/internals/canvas/widgets/FigmaEmbed.jsx +15 -36
- package/src/internals/canvas/widgets/FigmaEmbed.module.css +15 -15
- package/src/internals/canvas/widgets/FrozenTerminalOverlay.jsx +30 -21
- package/src/internals/canvas/widgets/FrozenTerminalOverlay.module.css +5 -5
- package/src/internals/canvas/widgets/ImageWidget.jsx +7 -2
- package/src/internals/canvas/widgets/ImageWidget.module.css +3 -3
- package/src/internals/canvas/widgets/LinkPreview.module.css +79 -80
- package/src/internals/canvas/widgets/MarkdownBlock.module.css +31 -31
- package/src/internals/canvas/widgets/PromptWidget.jsx +2 -16
- package/src/internals/canvas/widgets/PromptWidget.module.css +33 -33
- package/src/internals/canvas/widgets/PrototypeEmbed.jsx +92 -17
- package/src/internals/canvas/widgets/PrototypeEmbed.module.css +58 -56
- package/src/internals/canvas/widgets/PrototypeEmbed.test.jsx +118 -4
- package/src/internals/canvas/widgets/ResizeHandle.module.css +4 -4
- package/src/internals/canvas/widgets/StorySetWidget.jsx +53 -25
- package/src/internals/canvas/widgets/StoryWidget.jsx +71 -56
- package/src/internals/canvas/widgets/StoryWidget.module.css +22 -20
- package/src/internals/canvas/widgets/TerminalReadWidget.jsx +13 -15
- package/src/internals/canvas/widgets/TerminalReadWidget.module.css +4 -4
- package/src/internals/canvas/widgets/TerminalWidget.jsx +56 -45
- package/src/internals/canvas/widgets/TerminalWidget.module.css +10 -10
- package/src/internals/canvas/widgets/TilesWidget.module.css +17 -17
- package/src/internals/canvas/widgets/WidgetChrome.jsx +1 -1
- package/src/internals/canvas/widgets/WidgetChrome.module.css +76 -61
- package/src/internals/canvas/widgets/WidgetWrapper.module.css +2 -2
- package/src/internals/canvas/widgets/embedOverlay.module.css +14 -4
- package/src/internals/canvas/widgets/embedTheme.js +12 -104
- package/src/internals/canvas/widgets/expandUtils.js +19 -19
- package/src/internals/canvas/widgets/normalizeLegacyEmbedSrc.js +74 -0
- package/src/internals/canvas/widgets/widgetConfig.js +5 -5
- package/src/internals/context.jsx +22 -1
- package/src/internals/context.test.jsx +47 -0
- package/src/internals/hooks/useArtifactIndex.js +31 -0
- package/src/internals/hooks/useArtifactIndex.test.js +45 -0
- package/src/internals/hooks/usePrototypeReloadGuard.js +14 -8
- package/src/internals/index.js +6 -0
- package/src/internals/loadConsumerWrapper.js +60 -0
- package/src/internals/story/ComponentSetPage.jsx +75 -34
- package/src/internals/story/ComponentSetPage.module.css +14 -14
- package/src/internals/story/StoryPage.jsx +16 -25
- package/src/internals/story/StoryPage.module.css +2 -2
- package/src/internals/vite/data-plugin.js +317 -149
- package/src/internals/vite/data-plugin.test.js +11 -11
- package/{scaffold/storyboard.config.json → storyboard.config.json} +25 -0
- package/terminal.config.json +1 -1
- package/src/core/lib/components/ui/card/card-action.jsx +0 -11
- package/src/core/lib/components/ui/card/card-content.jsx +0 -11
- package/src/core/lib/components/ui/card/card-description.jsx +0 -11
- package/src/core/lib/components/ui/card/card-footer.jsx +0 -11
- package/src/core/lib/components/ui/card/card-header.jsx +0 -19
- package/src/core/lib/components/ui/card/card-title.jsx +0 -11
- package/src/core/lib/components/ui/card/card.jsx +0 -17
- package/src/core/lib/components/ui/card/index.js +0 -25
- package/src/core/lib/components/ui/collapsible/collapsible-content.jsx +0 -7
- package/src/core/lib/components/ui/collapsible/collapsible-trigger.jsx +0 -7
- package/src/core/lib/components/ui/collapsible/collapsible.jsx +0 -7
- package/src/core/lib/components/ui/collapsible/index.js +0 -13
- package/src/core/lib/components/ui/dialog/dialog-close.jsx +0 -7
- package/src/core/lib/components/ui/dialog/dialog-description.jsx +0 -15
- package/src/core/lib/components/ui/dialog/dialog-footer.jsx +0 -23
- package/src/core/lib/components/ui/dialog/dialog-header.jsx +0 -11
- package/src/core/lib/components/ui/dialog/dialog-overlay.jsx +0 -15
- package/src/core/lib/components/ui/dialog/dialog-portal.jsx +0 -4
- package/src/core/lib/components/ui/dialog/dialog-title.jsx +0 -15
- package/src/core/lib/components/ui/popover/index.js +0 -28
- package/src/core/lib/components/ui/popover/popover-close.jsx +0 -7
- package/src/core/lib/components/ui/popover/popover-content.jsx +0 -22
- package/src/core/lib/components/ui/popover/popover-description.jsx +0 -11
- package/src/core/lib/components/ui/popover/popover-header.jsx +0 -11
- package/src/core/lib/components/ui/popover/popover-portal.jsx +0 -4
- package/src/core/lib/components/ui/popover/popover-title.jsx +0 -11
- package/src/core/lib/components/ui/popover/popover-trigger.jsx +0 -8
- package/src/core/lib/components/ui/popover/popover.jsx +0 -4
- package/src/core/lib/components/ui/select/index.js +0 -37
- package/src/core/lib/components/ui/select/select-content.jsx +0 -30
- package/src/core/lib/components/ui/select/select-group-heading.jsx +0 -17
- package/src/core/lib/components/ui/select/select-group.jsx +0 -15
- package/src/core/lib/components/ui/select/select-item.jsx +0 -26
- package/src/core/lib/components/ui/select/select-label.jsx +0 -11
- package/src/core/lib/components/ui/select/select-portal.jsx +0 -4
- package/src/core/lib/components/ui/select/select-scroll-down-button.jsx +0 -18
- package/src/core/lib/components/ui/select/select-scroll-up-button.jsx +0 -18
- package/src/core/lib/components/ui/select/select-separator.jsx +0 -15
- package/src/core/lib/components/ui/select/select-trigger.jsx +0 -25
- package/src/core/lib/components/ui/select/select.jsx +0 -4
- package/src/core/lib/components/ui/sheet/index.js +0 -34
- package/src/core/lib/components/ui/sheet/sheet-close.jsx +0 -7
- package/src/core/lib/components/ui/sheet/sheet-content.jsx +0 -35
- package/src/core/lib/components/ui/sheet/sheet-description.jsx +0 -15
- package/src/core/lib/components/ui/sheet/sheet-footer.jsx +0 -11
- package/src/core/lib/components/ui/sheet/sheet-header.jsx +0 -11
- package/src/core/lib/components/ui/sheet/sheet-overlay.jsx +0 -15
- package/src/core/lib/components/ui/sheet/sheet-portal.jsx +0 -4
- package/src/core/lib/components/ui/sheet/sheet-title.jsx +0 -15
- package/src/core/lib/components/ui/sheet/sheet-trigger.jsx +0 -7
- package/src/core/lib/components/ui/sheet/sheet.jsx +0 -4
- package/src/core/lib/components/ui/toggle/index.js +0 -8
- package/src/core/lib/components/ui/toggle/toggle.jsx +0 -36
- package/src/core/lib/components/ui/toggle-group/index.js +0 -10
- package/src/core/lib/components/ui/toggle-group/toggle-group-item.jsx +0 -29
- package/src/core/lib/components/ui/toggle-group/toggle-group.jsx +0 -43
- package/src/internals/canvas/StoryErrorBoundary.jsx +0 -47
- package/src/internals/canvas/WebGLContextPool.jsx +0 -291
- package/src/internals/canvas/WebGLContextPool.test.jsx +0 -165
- package/src/internals/canvas/componentIsolate.jsx +0 -144
- package/src/internals/canvas/componentSetIsolate.jsx +0 -300
- package/src/internals/canvas/widgets/ComponentSetWidget.module.css +0 -89
- package/src/internals/canvas/widgets/InlineStoryRenderer.jsx +0 -129
- package/src/internals/canvas/widgets/InlineStoryRenderer.test.jsx +0 -68
- package/src/internals/canvas/widgets/StorySetWidget.module.css +0 -89
- package/src/primer/ThemeSync.jsx +0 -73
- package/src/primer/index.js +0 -1
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
width: 12px;
|
|
34
34
|
height: 12px;
|
|
35
35
|
background: #ffffff;
|
|
36
|
-
border: 2px solid var(--
|
|
36
|
+
border: 2px solid var(--color-foreground-accent, #0969da);
|
|
37
37
|
border-radius: 2px;
|
|
38
38
|
z-index: 12;
|
|
39
39
|
}
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
justify-content: center;
|
|
56
56
|
gap: 6px;
|
|
57
57
|
padding: 4px 8px;
|
|
58
|
-
background: var(--
|
|
59
|
-
border: 1.6px solid var(--
|
|
58
|
+
background: var(--color-background, #ffffff);
|
|
59
|
+
border: 1.6px solid var(--color-border-muted, #d0d7de);
|
|
60
60
|
border-radius: 20px;
|
|
61
61
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
62
62
|
white-space: nowrap;
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
:global([data-sb-canvas-theme^='dark']) .cropBar {
|
|
67
|
-
background: var(--
|
|
68
|
-
border-color: var(--
|
|
67
|
+
background: var(--color-background-muted, #161b22);
|
|
68
|
+
border-color: var(--color-border-muted, #373e47);
|
|
69
69
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
|
|
70
70
|
}
|
|
71
71
|
|
|
@@ -79,76 +79,76 @@
|
|
|
79
79
|
border-radius: 6px;
|
|
80
80
|
font-size: 12px;
|
|
81
81
|
font-weight: 500;
|
|
82
|
-
color: var(--
|
|
82
|
+
color: var(--color-foreground, #1f2328);
|
|
83
83
|
transition: background 100ms;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
:global([data-sb-canvas-theme^='dark']) .cropBarBtn {
|
|
87
|
-
color: var(--
|
|
87
|
+
color: var(--color-foreground, #e6edf3);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
.cropBarBtn:hover {
|
|
91
|
-
background: var(--
|
|
91
|
+
background: var(--color-background-neutral-muted, #eaeef2);
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
:global([data-sb-canvas-theme^='dark']) .cropBarBtn:hover {
|
|
95
|
-
background: var(--
|
|
95
|
+
background: var(--color-background-neutral-muted, #272c33);
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
.cropBarBtnSave {
|
|
99
|
-
background: var(--
|
|
100
|
-
color: var(--
|
|
99
|
+
background: var(--color-background-success-emphasis, #1a7f37);
|
|
100
|
+
color: var(--color-foreground-on-emphasis, #ffffff);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
.cropBarBtnSave:hover {
|
|
104
|
-
background: var(--
|
|
104
|
+
background: var(--color-background-success-emphasis, #2da44e);
|
|
105
105
|
filter: brightness(1.1);
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
:global([data-sb-canvas-theme^='dark']) .cropBarBtnSave {
|
|
109
|
-
background: var(--
|
|
110
|
-
color: var(--
|
|
109
|
+
background: var(--color-background-success-emphasis, #238636);
|
|
110
|
+
color: var(--color-foreground-on-emphasis, #ffffff);
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
:global([data-sb-canvas-theme^='dark']) .cropBarBtnSave:hover {
|
|
114
|
-
background: var(--
|
|
114
|
+
background: var(--color-background-success-emphasis, #2ea043);
|
|
115
115
|
filter: brightness(1.1);
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
.cropBarBtnCancel {
|
|
119
|
-
color: var(--
|
|
119
|
+
color: var(--color-foreground-muted, #656d76);
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
:global([data-sb-canvas-theme^='dark']) .cropBarBtnCancel {
|
|
123
|
-
color: var(--
|
|
123
|
+
color: var(--color-foreground-muted, #8b949e);
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
.cropBarBtnCancel:hover {
|
|
127
|
-
color: var(--
|
|
127
|
+
color: var(--color-foreground, #1f2328);
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
:global([data-sb-canvas-theme^='dark']) .cropBarBtnCancel:hover {
|
|
131
|
-
color: var(--
|
|
131
|
+
color: var(--color-foreground, #e6edf3);
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
.dimensions {
|
|
135
135
|
font-size: 11px;
|
|
136
136
|
font-weight: 500;
|
|
137
|
-
color: var(--
|
|
137
|
+
color: var(--color-foreground-muted, #656d76);
|
|
138
138
|
padding: 0 4px;
|
|
139
139
|
font-variant-numeric: tabular-nums;
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
:global([data-sb-canvas-theme^='dark']) .dimensions {
|
|
143
|
-
color: var(--
|
|
143
|
+
color: var(--color-foreground-muted, #8b949e);
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
.separator {
|
|
147
147
|
width: 1px;
|
|
148
148
|
height: 16px;
|
|
149
|
-
background: var(--
|
|
149
|
+
background: var(--color-border-muted, #d0d7de);
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
:global([data-sb-canvas-theme^='dark']) .separator {
|
|
153
|
-
background: var(--
|
|
153
|
+
background: var(--color-border-muted, #373e47);
|
|
154
154
|
}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
position: relative;
|
|
27
27
|
border-radius: 12px;
|
|
28
28
|
overflow: hidden;
|
|
29
|
-
background: var(--
|
|
29
|
+
background: var(--color-background, #ffffff);
|
|
30
30
|
box-shadow: 0 24px 64px rgba(0, 0, 0, 0.4);
|
|
31
31
|
display: flex;
|
|
32
32
|
flex-direction: column;
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
display: flex;
|
|
59
59
|
flex-direction: column;
|
|
60
60
|
overflow: hidden;
|
|
61
|
-
background: var(--
|
|
61
|
+
background: var(--color-background, #ffffff);
|
|
62
62
|
animation: expandedPaneScaleIn 0.2s ease;
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
|
|
166
166
|
.divider:hover,
|
|
167
167
|
.divider:active {
|
|
168
|
-
background: var(--
|
|
168
|
+
background: var(--color-background-accent-muted, rgba(9, 105, 218, 0.15));
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
.divider::after {
|
|
@@ -175,13 +175,13 @@
|
|
|
175
175
|
bottom: 0;
|
|
176
176
|
left: 50%;
|
|
177
177
|
width: 1px;
|
|
178
|
-
background: var(--
|
|
178
|
+
background: var(--color-border-muted, #d8dee4);
|
|
179
179
|
transform: translateX(-50%);
|
|
180
180
|
}
|
|
181
181
|
|
|
182
182
|
.divider:hover::after,
|
|
183
183
|
.divider:active::after {
|
|
184
|
-
background: var(--
|
|
184
|
+
background: var(--color-foreground-accent, #0969da);
|
|
185
185
|
width: 2px;
|
|
186
186
|
}
|
|
187
187
|
|
|
@@ -200,7 +200,7 @@
|
|
|
200
200
|
|
|
201
201
|
.rowDivider:hover,
|
|
202
202
|
.rowDivider:active {
|
|
203
|
-
background: var(--
|
|
203
|
+
background: var(--color-background-accent-muted, rgba(9, 105, 218, 0.15));
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
.rowDivider::after {
|
|
@@ -210,12 +210,12 @@
|
|
|
210
210
|
right: 0;
|
|
211
211
|
top: 50%;
|
|
212
212
|
height: 1px;
|
|
213
|
-
background: var(--
|
|
213
|
+
background: var(--color-border-muted, #d8dee4);
|
|
214
214
|
transform: translateY(-50%);
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
.rowDivider:hover::after,
|
|
218
218
|
.rowDivider:active::after {
|
|
219
|
-
background: var(--
|
|
219
|
+
background: var(--color-foreground-accent, #0969da);
|
|
220
220
|
height: 2px;
|
|
221
221
|
}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* Combined with `getState` for toggle resolution and `onAction` for dispatch.
|
|
14
14
|
*/
|
|
15
15
|
import { ScreenNormalIcon } from '@primer/octicons-react'
|
|
16
|
-
import
|
|
16
|
+
import Tooltip from '../../Tooltip.jsx'
|
|
17
17
|
import { ICON_REGISTRY } from './widgetIcons.jsx'
|
|
18
18
|
import { getWidgetMeta } from './widgetConfig.js'
|
|
19
19
|
import Icon from '../../Icon.jsx'
|
|
@@ -57,7 +57,6 @@ export default forwardRef(function FigmaEmbed({ id: widgetId, props, onUpdate, r
|
|
|
57
57
|
const height = readProp(props, 'height', figmaEmbedSchema)
|
|
58
58
|
|
|
59
59
|
const [interactive, setInteractive] = useState(false)
|
|
60
|
-
const [showIframe, setShowIframe] = useState(true)
|
|
61
60
|
const [expandMode, setExpandMode] = useExpandOverride('figma', widgetId)
|
|
62
61
|
const expanded = expandMode !== null
|
|
63
62
|
|
|
@@ -65,8 +64,6 @@ export default forwardRef(function FigmaEmbed({ id: widgetId, props, onUpdate, r
|
|
|
65
64
|
const embedRef = useRef(null)
|
|
66
65
|
const inlineContainerRef = useRef(null)
|
|
67
66
|
const modalContainerRef = useRef(null)
|
|
68
|
-
const teardownTimerRef = useRef(null)
|
|
69
|
-
const exitSessionRef = useRef(0)
|
|
70
67
|
|
|
71
68
|
// Validate URL at render time — only embed known Figma URLs
|
|
72
69
|
const isValid = useMemo(() => isFigmaUrl(url), [url])
|
|
@@ -77,14 +74,11 @@ export default forwardRef(function FigmaEmbed({ id: widgetId, props, onUpdate, r
|
|
|
77
74
|
|
|
78
75
|
useIframeDevLogs({
|
|
79
76
|
widget: 'FigmaEmbed',
|
|
80
|
-
loaded:
|
|
77
|
+
loaded: Boolean(embedUrl),
|
|
81
78
|
src: embedUrl,
|
|
82
79
|
})
|
|
83
80
|
|
|
84
81
|
const enterInteractive = useCallback(() => {
|
|
85
|
-
exitSessionRef.current++
|
|
86
|
-
clearTimeout(teardownTimerRef.current)
|
|
87
|
-
setShowIframe(true)
|
|
88
82
|
setInteractive(true)
|
|
89
83
|
}, [])
|
|
90
84
|
|
|
@@ -93,21 +87,12 @@ export default forwardRef(function FigmaEmbed({ id: widgetId, props, onUpdate, r
|
|
|
93
87
|
function handlePointerDown(e) {
|
|
94
88
|
if (embedRef.current && !embedRef.current.contains(e.target)) {
|
|
95
89
|
setInteractive(false)
|
|
96
|
-
// Keep iframe alive for 5 min — Figma is slow to reload
|
|
97
|
-
const session = ++exitSessionRef.current
|
|
98
|
-
clearTimeout(teardownTimerRef.current)
|
|
99
|
-
teardownTimerRef.current = setTimeout(() => {
|
|
100
|
-
if (exitSessionRef.current !== session) return
|
|
101
|
-
setShowIframe(false)
|
|
102
|
-
}, 5 * 60 * 1000)
|
|
103
90
|
}
|
|
104
91
|
}
|
|
105
92
|
document.addEventListener('pointerdown', handlePointerDown)
|
|
106
93
|
return () => document.removeEventListener('pointerdown', handlePointerDown)
|
|
107
94
|
}, [interactive, expanded])
|
|
108
95
|
|
|
109
|
-
useEffect(() => () => clearTimeout(teardownTimerRef.current), [])
|
|
110
|
-
|
|
111
96
|
// Reparent iframe DOM node between inline container and modal.
|
|
112
97
|
// Uses moveBefore() (Chrome 133+) which preserves the iframe's
|
|
113
98
|
// browsing context — no reload. Falls back to appendChild.
|
|
@@ -147,10 +132,8 @@ export default forwardRef(function FigmaEmbed({ id: widgetId, props, onUpdate, r
|
|
|
147
132
|
if (actionId === 'open-external') {
|
|
148
133
|
if (url) window.open(url, '_blank', 'noopener')
|
|
149
134
|
} else if (actionId === 'expand' || actionId === 'expand-single') {
|
|
150
|
-
setShowIframe(true)
|
|
151
135
|
setExpandMode('single')
|
|
152
136
|
} else if (actionId === 'split-screen') {
|
|
153
|
-
setShowIframe(true)
|
|
154
137
|
setExpandMode('split')
|
|
155
138
|
}
|
|
156
139
|
},
|
|
@@ -166,24 +149,20 @@ export default forwardRef(function FigmaEmbed({ id: widgetId, props, onUpdate, r
|
|
|
166
149
|
</div>
|
|
167
150
|
{embedUrl ? (
|
|
168
151
|
<>
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
</div>
|
|
184
|
-
) : (
|
|
185
|
-
<div className={styles.iframeContainer} />
|
|
186
|
-
)}
|
|
152
|
+
<div
|
|
153
|
+
ref={inlineContainerRef}
|
|
154
|
+
className={styles.iframeContainer}
|
|
155
|
+
style={expanded ? { visibility: 'hidden' } : undefined}
|
|
156
|
+
>
|
|
157
|
+
<iframe
|
|
158
|
+
ref={iframeRef}
|
|
159
|
+
src={embedUrl}
|
|
160
|
+
className={styles.iframe}
|
|
161
|
+
title={`Figma ${typeLabel}: ${title}`}
|
|
162
|
+
allowFullScreen
|
|
163
|
+
onLoad={(e) => e.target.blur()}
|
|
164
|
+
/>
|
|
165
|
+
</div>
|
|
187
166
|
{!interactive && !expanded && (
|
|
188
167
|
<div
|
|
189
168
|
className={overlayStyles.interactOverlay}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
.embed {
|
|
2
2
|
position: relative;
|
|
3
3
|
overflow: hidden;
|
|
4
|
-
background: var(--
|
|
5
|
-
border: 3px solid var(--
|
|
4
|
+
background: var(--color-background, #ffffff);
|
|
5
|
+
border: 3px solid var(--color-border, #d0d7de);
|
|
6
6
|
border-radius: 12px;
|
|
7
7
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
|
|
8
8
|
}
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
padding: 6px 10px;
|
|
15
15
|
font-size: 12px;
|
|
16
16
|
font-weight: 500;
|
|
17
|
-
color: var(--
|
|
18
|
-
background: var(--
|
|
19
|
-
border-bottom: 1px solid var(--
|
|
17
|
+
color: var(--color-foreground-muted, #656d76);
|
|
18
|
+
background: var(--color-background-muted, #f6f8fa);
|
|
19
|
+
border-bottom: 1px solid var(--color-border-muted, #d8dee4);
|
|
20
20
|
white-space: nowrap;
|
|
21
21
|
overflow: hidden;
|
|
22
22
|
text-overflow: ellipsis;
|
|
@@ -57,12 +57,12 @@
|
|
|
57
57
|
background: linear-gradient(
|
|
58
58
|
135deg,
|
|
59
59
|
transparent 40%,
|
|
60
|
-
var(--
|
|
61
|
-
var(--
|
|
60
|
+
var(--color-border-muted, rgba(0, 0, 0, 0.15)) 40%,
|
|
61
|
+
var(--color-border-muted, rgba(0, 0, 0, 0.15)) 50%,
|
|
62
62
|
transparent 50%,
|
|
63
63
|
transparent 65%,
|
|
64
|
-
var(--
|
|
65
|
-
var(--
|
|
64
|
+
var(--color-border-muted, rgba(0, 0, 0, 0.15)) 65%,
|
|
65
|
+
var(--color-border-muted, rgba(0, 0, 0, 0.15)) 75%,
|
|
66
66
|
transparent 75%
|
|
67
67
|
);
|
|
68
68
|
opacity: 0;
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
position: relative;
|
|
99
99
|
border-radius: 12px;
|
|
100
100
|
overflow: hidden;
|
|
101
|
-
background: var(--
|
|
101
|
+
background: var(--color-background, #ffffff);
|
|
102
102
|
box-shadow: 0 24px 64px rgba(0, 0, 0, 0.4);
|
|
103
103
|
animation: expandScaleIn 0.2s ease;
|
|
104
104
|
}
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
height: 100%;
|
|
148
148
|
position: relative;
|
|
149
149
|
overflow: hidden;
|
|
150
|
-
background: var(--
|
|
150
|
+
background: var(--color-background, #ffffff);
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
.expandSplitBody {
|
|
@@ -170,7 +170,7 @@
|
|
|
170
170
|
min-width: 0;
|
|
171
171
|
height: 100%;
|
|
172
172
|
overflow: hidden;
|
|
173
|
-
border-right: 1px solid var(--
|
|
173
|
+
border-right: 1px solid var(--color-border-muted, #d8dee4);
|
|
174
174
|
}
|
|
175
175
|
|
|
176
176
|
.expandSplitRight {
|
|
@@ -184,7 +184,7 @@
|
|
|
184
184
|
width: 100%;
|
|
185
185
|
height: 100%;
|
|
186
186
|
overflow: auto;
|
|
187
|
-
background: var(--
|
|
187
|
+
background: var(--color-background, #ffffff);
|
|
188
188
|
}
|
|
189
189
|
|
|
190
190
|
.expandSecondaryIframe {
|
|
@@ -211,12 +211,12 @@
|
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
.emptyIcon {
|
|
214
|
-
color: var(--
|
|
214
|
+
color: var(--color-foreground-muted, #656d76);
|
|
215
215
|
opacity: 0.5;
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
.emptyLabel {
|
|
219
|
-
color: var(--
|
|
219
|
+
color: var(--color-foreground-muted, #656d76);
|
|
220
220
|
font-size: 13px;
|
|
221
221
|
font-style: italic;
|
|
222
222
|
}
|
|
@@ -48,32 +48,41 @@ export default function FrozenTerminalOverlay({ widgetId, onActivate }) {
|
|
|
48
48
|
|
|
49
49
|
async function fetchSnapshot() {
|
|
50
50
|
const baseUrl = getBaseUrl()
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (!res.ok) continue
|
|
51
|
+
// Try the dev-server REST endpoint first, then fall back to the static
|
|
52
|
+
// consolidated index (production builds / no server).
|
|
53
|
+
const restUrl = `${baseUrl}_storyboard/canvas/terminal-snapshot/${widgetId}`
|
|
54
|
+
const indexUrl = `${baseUrl}_storyboard/terminal-snapshots/agents.snapshot.json`
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
const res = await fetch(restUrl)
|
|
58
|
+
if (res.ok) {
|
|
60
59
|
const data = await res.json()
|
|
61
60
|
if (cancelled) return
|
|
62
61
|
const text = data.paneContent || data.content || data.output || ''
|
|
63
|
-
if (
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
} else {
|
|
70
|
-
setPlainText(stripAnsi(text))
|
|
62
|
+
if (text) {
|
|
63
|
+
const converter = await getConverter()
|
|
64
|
+
if (cancelled) return
|
|
65
|
+
if (converter) setHtml(converter.toHtml(text))
|
|
66
|
+
else setPlainText(stripAnsi(text))
|
|
67
|
+
return
|
|
71
68
|
}
|
|
72
|
-
return
|
|
73
|
-
} catch {
|
|
74
|
-
continue
|
|
75
69
|
}
|
|
76
|
-
}
|
|
70
|
+
} catch { /* fall through to static index */ }
|
|
71
|
+
|
|
72
|
+
try {
|
|
73
|
+
const res = await fetch(indexUrl)
|
|
74
|
+
if (!res.ok) return
|
|
75
|
+
const data = await res.json()
|
|
76
|
+
if (cancelled) return
|
|
77
|
+
const entry = data?.agents?.[widgetId]
|
|
78
|
+
if (!entry) return
|
|
79
|
+
const text = entry.paneContent || entry.content || entry.output || ''
|
|
80
|
+
if (!text) return
|
|
81
|
+
const converter = await getConverter()
|
|
82
|
+
if (cancelled) return
|
|
83
|
+
if (converter) setHtml(converter.toHtml(text))
|
|
84
|
+
else setPlainText(stripAnsi(text))
|
|
85
|
+
} catch { /* empty */ }
|
|
77
86
|
}
|
|
78
87
|
|
|
79
88
|
fetchSnapshot()
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
position: absolute;
|
|
13
13
|
inset: 0;
|
|
14
14
|
overflow: hidden;
|
|
15
|
-
padding:
|
|
15
|
+
padding: 16px;
|
|
16
16
|
font-family: 'Ghostty', 'SF Mono', 'Menlo', 'Monaco', 'Courier New', monospace;
|
|
17
17
|
font-size: 12px;
|
|
18
18
|
line-height: 1.4;
|
|
@@ -46,10 +46,10 @@
|
|
|
46
46
|
|
|
47
47
|
/* Matches interactHint from embedOverlay — solid pill button, always visible */
|
|
48
48
|
.actionButton {
|
|
49
|
-
color: var(--
|
|
50
|
-
background-color: var(--
|
|
51
|
-
padding:
|
|
52
|
-
border-radius:
|
|
49
|
+
color: var(--color-foreground-on-inverse, #fff);
|
|
50
|
+
background-color: var(--color-background-inverse, #21262d);
|
|
51
|
+
padding: 12px 16px;
|
|
52
|
+
border-radius: 6px;
|
|
53
53
|
font-size: 14px;
|
|
54
54
|
font-weight: 600;
|
|
55
55
|
pointer-events: none;
|
|
@@ -137,7 +137,10 @@ const ImageWidget = forwardRef(function ImageWidget({ id, props, onUpdate, resiz
|
|
|
137
137
|
const blobUrl = URL.createObjectURL(blob)
|
|
138
138
|
const a = document.createElement('a')
|
|
139
139
|
a.href = blobUrl
|
|
140
|
-
|
|
140
|
+
// Strip optional drafts/ directory prefix and leading ~ from the
|
|
141
|
+
// downloaded filename — the user wants the bare basename.
|
|
142
|
+
const baseName = src.includes('/') ? src.slice(src.lastIndexOf('/') + 1) : src
|
|
143
|
+
a.download = baseName.replace(/^~/, '')
|
|
141
144
|
document.body.appendChild(a)
|
|
142
145
|
a.click()
|
|
143
146
|
document.body.removeChild(a)
|
|
@@ -156,7 +159,9 @@ const ImageWidget = forwardRef(function ImageWidget({ id, props, onUpdate, resiz
|
|
|
156
159
|
.catch((err) => console.error('[canvas] Failed to copy image:', err))
|
|
157
160
|
} else if (actionId === 'copy-file-path') {
|
|
158
161
|
if (!src) return
|
|
159
|
-
|
|
162
|
+
// `src` may include an optional `drafts/` prefix; in both cases the
|
|
163
|
+
// file lives under assets/canvas/images/.
|
|
164
|
+
navigator.clipboard.writeText(`assets/canvas/images/${src}`).catch(() => {})
|
|
160
165
|
}
|
|
161
166
|
}
|
|
162
167
|
}), [src, onUpdate])
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
font-weight: 600;
|
|
56
56
|
line-height: 1.4;
|
|
57
57
|
letter-spacing: 0.02em;
|
|
58
|
-
color: var(--
|
|
59
|
-
background: var(--
|
|
58
|
+
color: var(--color-foreground-on-emphasis, #fff);
|
|
59
|
+
background: var(--color-background-neutral-emphasis, rgba(0, 0, 0, 0.55));
|
|
60
60
|
pointer-events: none;
|
|
61
61
|
}
|
|
62
62
|
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
align-items: center;
|
|
70
70
|
justify-content: center;
|
|
71
71
|
overflow: auto;
|
|
72
|
-
background: var(--
|
|
72
|
+
background: var(--color-background-inset, #f6f8fa);
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
.expandedImage {
|