sh3-core 0.15.4 → 0.16.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/dist/BrandSlot.svelte +9 -9
- package/dist/{Shell.svelte → Sh3.svelte} +65 -65
- package/dist/Sh3.svelte.d.ts +5 -0
- package/dist/__test__/render.js +1 -1
- package/dist/actions/ActionPanel.svelte +3 -3
- package/dist/actions/CommandPalette.svelte +2 -2
- package/dist/actions/MenuBar.svelte +1 -1
- package/dist/actions/MenuBar.test.js +1 -1
- package/dist/actions/MenuButton.svelte +3 -3
- package/dist/actions/dispatcher.svelte.js +1 -1
- package/dist/actions/listActive.js +1 -1
- package/dist/actions/listeners.js +6 -6
- package/dist/actions/selection.svelte.d.ts +2 -2
- package/dist/actions/selection.svelte.js +4 -4
- package/dist/actions/selection.test.js +1 -1
- package/dist/actions/{shellActions.test.js → sh3Actions.test.js} +14 -14
- package/dist/actions/state.svelte.d.ts +3 -3
- package/dist/actions/state.svelte.js +3 -3
- package/dist/actions/syncMountedViewIds.test.js +1 -1
- package/dist/actions/types.d.ts +1 -1
- package/dist/api.d.ts +5 -5
- package/dist/api.js +7 -7
- package/dist/app/admin/ApiKeysView.svelte +9 -9
- package/dist/app/admin/AuthSettingsView.svelte +6 -6
- package/dist/app/admin/SystemView.svelte +12 -12
- package/dist/app/admin/UsersView.svelte +8 -8
- package/dist/app/store/AppUpdateAvailableModal.svelte +14 -14
- package/dist/app/store/PermissionConfirmModal.svelte +20 -20
- package/dist/app/store/StoreView.svelte +51 -51
- package/dist/app/store/UninstallAppDialog.svelte +14 -14
- package/dist/app/store/storeShard.svelte.js +1 -1
- package/dist/app/store/verbs.js +1 -1
- package/dist/apps/lifecycle.d.ts +1 -1
- package/dist/apps/lifecycle.js +4 -4
- package/dist/apps/lifecycle.test.js +5 -5
- package/dist/apps/registry.svelte.d.ts +2 -2
- package/dist/apps/registry.svelte.js +3 -3
- package/dist/apps/types.d.ts +1 -1
- package/dist/auth/GuestBanner.svelte +19 -19
- package/dist/auth/SignInWall.svelte +17 -17
- package/dist/auth/auth.svelte.d.ts +1 -1
- package/dist/auth/auth.svelte.js +1 -1
- package/dist/boot/satellitePayload.js +1 -1
- package/dist/build.d.ts +27 -0
- package/dist/build.js +59 -1
- package/dist/build.test.js +31 -0
- package/dist/color/api.d.ts +1 -1
- package/dist/color/api.js +1 -1
- package/dist/color/{shell-api.js → sh3-api.js} +3 -3
- package/dist/conflicts/ConflictModal.svelte +1 -1
- package/dist/conflicts/ConflictModal.svelte.d.ts +1 -1
- package/dist/conflicts/DetailView.svelte +19 -19
- package/dist/conflicts/PromptView.svelte +9 -9
- package/dist/conflicts/adapter-documents.js +1 -1
- package/dist/conflicts/api.d.ts +1 -1
- package/dist/conflicts/api.js +2 -2
- package/dist/conflicts/renderer-registry.js +1 -1
- package/dist/conflicts/renderers/MetaOnlyRenderer.svelte +8 -8
- package/dist/conflicts/renderers/TextDiffRenderer.svelte +15 -15
- package/dist/conflicts/renderers/index.js +1 -1
- package/dist/conflicts/resolve-primitive.js +1 -1
- package/dist/conflicts/{shell-api.js → sh3-api.js} +2 -2
- package/dist/contributions/registry.js +1 -1
- package/dist/createShell.d.ts +2 -2
- package/dist/createShell.js +6 -6
- package/dist/host-entry.d.ts +1 -1
- package/dist/host-entry.js +2 -2
- package/dist/host.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/keys/ConsentDialog.svelte +15 -15
- package/dist/keys/consent.svelte.d.ts +2 -2
- package/dist/keys/consent.svelte.js +3 -3
- package/dist/keys/revocation-bus.svelte.d.ts +3 -3
- package/dist/keys/revocation-bus.svelte.js +3 -3
- package/dist/layout/DragPreview.svelte +9 -9
- package/dist/layout/LayoutRenderer.browser.test.js +2 -2
- package/dist/layout/LayoutRenderer.svelte +4 -4
- package/dist/layout/SlotContainer.svelte +12 -12
- package/dist/layout/SlotDropZone.svelte +2 -2
- package/dist/layout/inspection.d.ts +1 -1
- package/dist/layout/inspection.js +1 -1
- package/dist/layout/store.svelte.js +3 -3
- package/dist/layout/types.d.ts +1 -1
- package/dist/layouts-shard/LayoutSaveModal.svelte +20 -20
- package/dist/layouts-shard/LayoutsSection.svelte +11 -11
- package/dist/layouts-shard/filter.test.js +3 -3
- package/dist/layouts-shard/layoutsApi.test.js +3 -3
- package/dist/layouts-shard/layoutsShard.svelte.test.js +7 -7
- package/dist/migrations/mode-id-rename.js +2 -2
- package/dist/overlays/ConfirmDialog.svelte +8 -8
- package/dist/overlays/EntityAppearanceModal.svelte +19 -19
- package/dist/overlays/FloatFrame.svelte +20 -20
- package/dist/overlays/FloatLayer.svelte +1 -1
- package/dist/overlays/ModalFrame.svelte +5 -5
- package/dist/overlays/PopupFrame.svelte +4 -4
- package/dist/overlays/ToastItem.svelte +12 -12
- package/dist/overlays/float.d.ts +2 -2
- package/dist/overlays/float.js +3 -3
- package/dist/overlays/float.test.js +6 -6
- package/dist/overlays/modal.js +1 -1
- package/dist/overlays/modal.test.js +2 -2
- package/dist/overlays/parentHost.js +2 -2
- package/dist/overlays/parentHost.test.js +5 -5
- package/dist/overlays/popup.js +2 -2
- package/dist/overlays/popup.test.js +2 -2
- package/dist/overlays/roots.js +4 -4
- package/dist/overlays/toast.js +1 -1
- package/dist/overlays/types.js +3 -3
- package/dist/primitives/Button.svelte +16 -16
- package/dist/primitives/Collapsible.svelte +11 -11
- package/dist/primitives/ResizableSplitter.svelte +10 -10
- package/dist/primitives/TabbedPanel.svelte +19 -19
- package/dist/primitives/base.css +57 -57
- package/dist/primitives/widgets/ColorSwatch.svelte +15 -15
- package/dist/primitives/widgets/ColorSwatch.svelte.test.js +4 -4
- package/dist/primitives/widgets/Field.svelte +20 -20
- package/dist/primitives/widgets/FilePicker.svelte +13 -13
- package/dist/primitives/widgets/IconPicker.svelte +14 -14
- package/dist/primitives/widgets/IconToggleGroup.svelte +14 -14
- package/dist/primitives/widgets/NumberInput.svelte +17 -17
- package/dist/primitives/widgets/PickerList.svelte +17 -17
- package/dist/primitives/widgets/RangeSlider.svelte +16 -16
- package/dist/primitives/widgets/Segmented.svelte +16 -16
- package/dist/primitives/widgets/Select.svelte +14 -14
- package/dist/primitives/widgets/Select.svelte.test.js +2 -2
- package/dist/primitives/widgets/Slider.svelte +20 -20
- package/dist/primitives/widgets/SliderGroup.svelte +2 -2
- package/dist/primitives/widgets/Textarea.svelte +13 -13
- package/dist/primitives/widgets/_select-listbox.svelte +15 -15
- package/dist/projects/session-state.svelte.js +1 -1
- package/dist/projects-shard/DeleteProjectDialog.svelte +12 -12
- package/dist/projects-shard/ProjectManage.svelte +25 -25
- package/dist/projects-shard/ProjectsSection.svelte +12 -12
- package/dist/registry/installer.d.ts +2 -2
- package/dist/registry/installer.js +2 -2
- package/dist/registry/loader.js +1 -1
- package/dist/registry/permission-descriptions.js +2 -2
- package/dist/registry/permission-descriptions.test.js +1 -1
- package/dist/runtime/runVerb-shell.test.js +2 -2
- package/dist/runtime/runVerb.js +4 -4
- package/dist/runtime/runVerb.test.js +4 -4
- package/dist/satellite/SatelliteShell.svelte +2 -2
- package/dist/{shell → sh3}/views/KeysAndPeers.svelte +7 -7
- package/dist/sh3Api/headless.d.ts +4 -0
- package/dist/{shell-shard/shellApi.js → sh3Api/headless.js} +5 -5
- package/dist/{shell-shard/shellApi.svelte.test.js → sh3Api/headless.svelte.test.js} +11 -11
- package/dist/{shellApi → sh3Api}/window.js +2 -2
- package/dist/{shellApi → sh3Api}/window.test.js +1 -1
- package/dist/{shellRuntime.svelte.d.ts → sh3Runtime.svelte.d.ts} +11 -11
- package/dist/{shellRuntime.svelte.js → sh3Runtime.svelte.js} +10 -10
- package/dist/sh3Runtime.svelte.test.d.ts +1 -0
- package/dist/{shellRuntime.svelte.test.js → sh3Runtime.svelte.test.js} +10 -10
- package/dist/sh3core-shard/AppInfoView.svelte +19 -19
- package/dist/sh3core-shard/{ShellHome.svelte → Sh3Home.svelte} +82 -82
- package/dist/sh3core-shard/Sh3Home.svelte.d.ts +3 -0
- package/dist/sh3core-shard/{ShellTitle.svelte → Sh3Title.svelte} +11 -11
- package/dist/sh3core-shard/Sh3Title.svelte.d.ts +3 -0
- package/dist/sh3core-shard/appActions.js +3 -3
- package/dist/sh3core-shard/sh3coreShard.svelte.js +7 -7
- package/dist/shards/activate.svelte.d.ts +1 -1
- package/dist/shards/activate.svelte.js +6 -6
- package/dist/shards/types.d.ts +5 -5
- package/dist/shards/types.js +2 -2
- package/dist/shell-shard/CommandLine.svelte +7 -7
- package/dist/shell-shard/InputLine.svelte +3 -3
- package/dist/shell-shard/ScrollbackView.svelte +2 -2
- package/dist/shell-shard/Terminal.svelte +5 -5
- package/dist/shell-shard/Terminal.svelte.d.ts +2 -2
- package/dist/shell-shard/dispatch-custom.test.js +2 -2
- package/dist/shell-shard/dispatch-gating.test.js +2 -2
- package/dist/shell-shard/dispatch-invoke.test.js +2 -2
- package/dist/shell-shard/dispatch-to-terminal.js +1 -1
- package/dist/shell-shard/dispatch.d.ts +2 -2
- package/dist/shell-shard/dispatch.js +2 -2
- package/dist/shell-shard/entries/PromptEntry.svelte +4 -4
- package/dist/shell-shard/entries/StatusEntry.svelte +4 -4
- package/dist/shell-shard/entries/TextEntry.svelte +3 -3
- package/dist/shell-shard/locateSlot.test.js +9 -9
- package/dist/shell-shard/manifest.js +2 -2
- package/dist/shell-shard/registry.d.ts +2 -2
- package/dist/shell-shard/rich/AppCard.svelte +1 -1
- package/dist/shell-shard/rich/AppsTable.svelte +1 -1
- package/dist/shell-shard/rich/HelpTable.svelte +1 -1
- package/dist/shell-shard/rich/HistoryList.svelte +1 -1
- package/dist/shell-shard/rich/ViewsTable.svelte +1 -1
- package/dist/shell-shard/rich/ZoneTree.svelte +2 -2
- package/dist/shell-shard/shellShard.svelte.d.ts +1 -1
- package/dist/shell-shard/shellShard.svelte.js +8 -8
- package/dist/shell-shard/terminal-dispatch.test.js +2 -2
- package/dist/shell-shard/toolbar/Toolbar.svelte +4 -4
- package/dist/shell-shard/toolbar/Toolbar.svelte.d.ts +2 -2
- package/dist/shell-shard/toolbar/slots/BusySlot.svelte +2 -2
- package/dist/shell-shard/toolbar/slots/FocusLockSlot.svelte +2 -2
- package/dist/shell-shard/toolbar/slots/ModeSlot.svelte +1 -1
- package/dist/shell-shard/toolbar/slots/TargetShardSlot.svelte +1 -1
- package/dist/shell-shard/toolbar/slots.d.ts +3 -3
- package/dist/shell-shard/verbs/apps.js +3 -3
- package/dist/shell-shard/verbs/help.js +1 -1
- package/dist/shell-shard/verbs/help.svelte.test.js +1 -1
- package/dist/shell-shard/verbs/history.js +1 -1
- package/dist/shell-shard/verbs/mode.js +2 -2
- package/dist/shell-shard/verbs/mode.test.js +2 -2
- package/dist/shell-shard/verbs/shards.js +1 -1
- package/dist/shell-shard/verbs/views.js +8 -8
- package/dist/shell-shard/verbs/zones.js +2 -2
- package/dist/state/zones.svelte.d.ts +2 -2
- package/dist/state/zones.svelte.js +4 -4
- package/dist/theme.d.ts +3 -3
- package/dist/theme.js +5 -5
- package/dist/tokens.css +68 -68
- package/dist/verbs/types.d.ts +5 -5
- package/dist/verbs/types.js +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/dist/Shell.svelte.d.ts +0 -5
- package/dist/sh3core-shard/ShellHome.svelte.d.ts +0 -3
- package/dist/sh3core-shard/ShellTitle.svelte.d.ts +0 -3
- package/dist/shell-shard/shellApi.d.ts +0 -4
- /package/dist/actions/{shellActions.test.d.ts → sh3Actions.test.d.ts} +0 -0
- /package/dist/{shell-shard/shellApi.svelte.test.d.ts → build.test.d.ts} +0 -0
- /package/dist/color/{shell-api.d.ts → sh3-api.d.ts} +0 -0
- /package/dist/conflicts/{shell-api.d.ts → sh3-api.d.ts} +0 -0
- /package/dist/{shell → sh3}/views/KeysAndPeers.svelte.d.ts +0 -0
- /package/dist/{shellApi/window.test.d.ts → sh3Api/headless.svelte.test.d.ts} +0 -0
- /package/dist/{shellApi → sh3Api}/window.d.ts +0 -0
- /package/dist/{shellRuntime.svelte.test.d.ts → sh3Api/window.test.d.ts} +0 -0
|
@@ -129,32 +129,32 @@
|
|
|
129
129
|
flex-direction: column;
|
|
130
130
|
align-items: center;
|
|
131
131
|
justify-content: center;
|
|
132
|
-
gap: var(--
|
|
133
|
-
color: var(--
|
|
132
|
+
gap: var(--sh3-pad-sm);
|
|
133
|
+
color: var(--sh3-fg-muted);
|
|
134
134
|
font-size: 12px;
|
|
135
135
|
text-align: center;
|
|
136
|
-
padding: var(--
|
|
136
|
+
padding: var(--sh3-pad-md);
|
|
137
137
|
background:
|
|
138
138
|
repeating-linear-gradient(
|
|
139
139
|
45deg,
|
|
140
|
-
var(--
|
|
141
|
-
var(--
|
|
140
|
+
var(--sh3-bg) 0 10px,
|
|
141
|
+
var(--sh3-bg-elevated) 10px 20px
|
|
142
142
|
);
|
|
143
|
-
border: 1px dashed var(--
|
|
143
|
+
border: 1px dashed var(--sh3-border-strong);
|
|
144
144
|
pointer-events: none;
|
|
145
145
|
}
|
|
146
146
|
.slot-id {
|
|
147
|
-
color: var(--
|
|
148
|
-
font-family: var(--
|
|
147
|
+
color: var(--sh3-fg);
|
|
148
|
+
font-family: var(--sh3-font-mono);
|
|
149
149
|
font-size: 13px;
|
|
150
150
|
}
|
|
151
151
|
.slot-meta code {
|
|
152
|
-
font-family: var(--
|
|
153
|
-
color: var(--
|
|
152
|
+
font-family: var(--sh3-font-mono);
|
|
153
|
+
color: var(--sh3-accent);
|
|
154
154
|
}
|
|
155
155
|
.slot-dims {
|
|
156
|
-
font-family: var(--
|
|
157
|
-
color: var(--
|
|
156
|
+
font-family: var(--sh3-font-mono);
|
|
157
|
+
color: var(--sh3-fg-subtle);
|
|
158
158
|
font-size: 11px;
|
|
159
159
|
}
|
|
160
160
|
</style>
|
|
@@ -153,9 +153,9 @@
|
|
|
153
153
|
}
|
|
154
154
|
.quad-highlight {
|
|
155
155
|
position: absolute;
|
|
156
|
-
background: var(--
|
|
156
|
+
background: var(--sh3-accent);
|
|
157
157
|
opacity: 0.18;
|
|
158
|
-
border: 1px dashed var(--
|
|
158
|
+
border: 1px dashed var(--sh3-accent);
|
|
159
159
|
pointer-events: none;
|
|
160
160
|
transition: inset 80ms ease;
|
|
161
161
|
}
|
|
@@ -69,7 +69,7 @@ export declare function popoutView(slotId: string): string | null;
|
|
|
69
69
|
export declare function dockFloat(floatId: string): boolean;
|
|
70
70
|
/**
|
|
71
71
|
* Dock a view into the currently-rendered layout without caring which
|
|
72
|
-
* root it is. Used by the Ctrl+`
|
|
72
|
+
* root it is. Used by the Ctrl+` sh3 hotkey and other "just put it
|
|
73
73
|
* somewhere sensible" callers. Policy:
|
|
74
74
|
*
|
|
75
75
|
* 1. If a tab with the same `viewId` already exists, focus it and
|
|
@@ -274,7 +274,7 @@ function findFirstSlotPath(node, path = []) {
|
|
|
274
274
|
}
|
|
275
275
|
/**
|
|
276
276
|
* Dock a view into the currently-rendered layout without caring which
|
|
277
|
-
* root it is. Used by the Ctrl+`
|
|
277
|
+
* root it is. Used by the Ctrl+` sh3 hotkey and other "just put it
|
|
278
278
|
* somewhere sensible" callers. Policy:
|
|
279
279
|
*
|
|
280
280
|
* 1. If a tab with the same `viewId` already exists, focus it and
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Layout manager — owns both the framework-constant
|
|
2
|
+
* Layout manager — owns both the framework-constant sh3 home layout
|
|
3
3
|
* and the currently-active app's persisted layout, and swaps between
|
|
4
4
|
* them without tearing down the held tree.
|
|
5
5
|
*
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* entirely (there is no "held home while rendering app" state).
|
|
25
25
|
*
|
|
26
26
|
* Orphan cleanup:
|
|
27
|
-
* The pre-phase-8
|
|
27
|
+
* The pre-phase-8 sh3 wrote to `sh3:workspace:__shell__`. Phase 8
|
|
28
28
|
* switches to per-app keys; the old entry would otherwise sit as dead
|
|
29
29
|
* data. On first load after upgrade, the manager clears that orphan
|
|
30
30
|
* unconditionally (clearing a non-existent entry is a no-op).
|
|
@@ -35,7 +35,7 @@ import { normalizeInitialLayout } from './presets';
|
|
|
35
35
|
import { collectTreeSlotRefs } from './tree-walk';
|
|
36
36
|
import { bindPresetBlob, unbindPresetBlob } from '../overlays/presets';
|
|
37
37
|
import { getRegisteredApp } from '../apps/registry.svelte';
|
|
38
|
-
// ---------- orphan cleanup of pre-phase-8
|
|
38
|
+
// ---------- orphan cleanup of pre-phase-8 sh3 layout key ----------------
|
|
39
39
|
// Legacy pre-phase-8 orphan cleanup. The literal '__shell__' here is
|
|
40
40
|
// intentional — it clears data written under the old reserved id before
|
|
41
41
|
// this shard was restructured. Do not replace with '__sh3core__'.
|
package/dist/layout/types.d.ts
CHANGED
|
@@ -190,7 +190,7 @@ export type TreeRootRef = {
|
|
|
190
190
|
export declare const LAYOUT_SCHEMA_VERSION = 4;
|
|
191
191
|
/**
|
|
192
192
|
* The wire shape of a persisted layout in the workspace state zone.
|
|
193
|
-
* One blob per
|
|
193
|
+
* One blob per sh3 (or per program, once per-program layouts exist);
|
|
194
194
|
* the version field gates compatibility.
|
|
195
195
|
*/
|
|
196
196
|
export interface PersistedLayout {
|
|
@@ -100,46 +100,46 @@
|
|
|
100
100
|
.layout-save {
|
|
101
101
|
padding: 16px 20px;
|
|
102
102
|
max-width: 460px;
|
|
103
|
-
color: var(--
|
|
104
|
-
background: var(--
|
|
103
|
+
color: var(--sh3-fg);
|
|
104
|
+
background: var(--sh3-bg);
|
|
105
105
|
font: inherit;
|
|
106
106
|
}
|
|
107
107
|
h2 { margin: 0 0 12px; font-size: 16px; }
|
|
108
108
|
.row { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; font-size: 13px; }
|
|
109
|
-
.row span { color: var(--
|
|
109
|
+
.row span { color: var(--sh3-fg-muted); }
|
|
110
110
|
.name-input {
|
|
111
|
-
background: var(--
|
|
112
|
-
color: var(--
|
|
113
|
-
border: 1px solid var(--
|
|
114
|
-
border-radius: var(--
|
|
111
|
+
background: var(--sh3-bg-elevated);
|
|
112
|
+
color: var(--sh3-fg);
|
|
113
|
+
border: 1px solid var(--sh3-border);
|
|
114
|
+
border-radius: var(--sh3-radius-sm, 3px);
|
|
115
115
|
padding: 6px 8px; font: inherit; font-size: 13px;
|
|
116
116
|
}
|
|
117
117
|
.preview { margin: 4px 0 12px; }
|
|
118
|
-
.preview-label { font-size: 12px; color: var(--
|
|
118
|
+
.preview-label { font-size: 12px; color: var(--sh3-fg-muted); margin-bottom: 4px; }
|
|
119
119
|
.preview-list {
|
|
120
120
|
list-style: none; padding: 0; margin: 0;
|
|
121
121
|
font-size: 12px; max-height: 160px; overflow: auto;
|
|
122
|
-
border: 1px solid var(--
|
|
123
|
-
border-radius: var(--
|
|
124
|
-
background: var(--
|
|
122
|
+
border: 1px solid var(--sh3-border);
|
|
123
|
+
border-radius: var(--sh3-radius-sm, 3px);
|
|
124
|
+
background: var(--sh3-bg-elevated);
|
|
125
125
|
}
|
|
126
|
-
.preview-list li { padding: 4px 8px; border-bottom: 1px solid var(--
|
|
126
|
+
.preview-list li { padding: 4px 8px; border-bottom: 1px solid var(--sh3-border); }
|
|
127
127
|
.preview-list li:last-child { border-bottom: 0; }
|
|
128
|
-
.muted { color: var(--
|
|
128
|
+
.muted { color: var(--sh3-fg-muted); }
|
|
129
129
|
.error {
|
|
130
|
-
color: var(--
|
|
130
|
+
color: var(--sh3-fg-muted);
|
|
131
131
|
font-style: italic;
|
|
132
132
|
margin: 4px 0 12px;
|
|
133
133
|
}
|
|
134
134
|
.actions { display: flex; gap: 8px; margin-top: 8px; }
|
|
135
135
|
.actions button {
|
|
136
|
-
background: var(--
|
|
137
|
-
color: var(--
|
|
138
|
-
border: 1px solid var(--
|
|
139
|
-
border-radius: var(--
|
|
136
|
+
background: var(--sh3-bg-elevated);
|
|
137
|
+
color: var(--sh3-fg);
|
|
138
|
+
border: 1px solid var(--sh3-border);
|
|
139
|
+
border-radius: var(--sh3-radius-sm, 3px);
|
|
140
140
|
padding: 6px 14px; font: inherit; cursor: pointer;
|
|
141
141
|
}
|
|
142
|
-
.actions button.primary { background: var(--
|
|
143
|
-
.actions button:hover { border-color: var(--
|
|
142
|
+
.actions button.primary { background: var(--sh3-accent); color: #fff; border-color: var(--sh3-accent); }
|
|
143
|
+
.actions button:hover { border-color: var(--sh3-accent); }
|
|
144
144
|
.actions button:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
145
145
|
</style>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
/*
|
|
3
|
-
* Saved-layouts section for
|
|
3
|
+
* Saved-layouts section for Sh3Home. Renders one card per SavedLayout.
|
|
4
4
|
* Click → restoreToFloat. Right-click sets a typed selection so card
|
|
5
5
|
* actions (Customize, Delete) can recover the layoutId.
|
|
6
6
|
*/
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import { restoreToFloat } from './layoutsApi';
|
|
10
10
|
import { listStandaloneViews } from '../shards/activate.svelte';
|
|
11
11
|
import { toastManager } from '../overlays/toast';
|
|
12
|
-
import {
|
|
12
|
+
import { sh3 } from '../sh3Runtime.svelte';
|
|
13
13
|
import { makeSelectionApi } from '../actions/selection.svelte';
|
|
14
14
|
import iconsUrl from '../assets/icons.svg';
|
|
15
15
|
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
function openCardContextMenu(event: MouseEvent, layoutId: string): void {
|
|
33
33
|
event.preventDefault();
|
|
34
34
|
selection.set({ type: 'saved-layout', ref: { layoutId } });
|
|
35
|
-
|
|
35
|
+
sh3.actions.openContextMenu({
|
|
36
36
|
x: event.clientX,
|
|
37
37
|
y: event.clientY,
|
|
38
38
|
scope: { element: 'saved-layout' },
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
font-weight: 600;
|
|
79
79
|
text-transform: uppercase;
|
|
80
80
|
letter-spacing: 0.06em;
|
|
81
|
-
color: var(--
|
|
81
|
+
color: var(--sh3-fg-subtle);
|
|
82
82
|
margin: 0 0 12px;
|
|
83
83
|
}
|
|
84
84
|
.saved-layouts-grid {
|
|
@@ -104,24 +104,24 @@
|
|
|
104
104
|
display: flex;
|
|
105
105
|
align-items: center;
|
|
106
106
|
justify-content: center;
|
|
107
|
-
background: var(--saved-layout-color, var(--
|
|
108
|
-
border: 1px dashed var(--
|
|
109
|
-
border-radius: var(--
|
|
107
|
+
background: var(--saved-layout-color, var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated)));
|
|
108
|
+
border: 1px dashed var(--sh3-border);
|
|
109
|
+
border-radius: var(--sh3-radius-md);
|
|
110
110
|
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.15);
|
|
111
111
|
transition: transform 120ms ease, border-color 120ms ease, box-shadow 120ms ease, background 120ms ease;
|
|
112
112
|
}
|
|
113
113
|
.saved-layout-card:hover .saved-layout-card-square {
|
|
114
|
-
border-color: var(--
|
|
114
|
+
border-color: var(--sh3-accent);
|
|
115
115
|
transform: translateY(-1px);
|
|
116
116
|
box-shadow:
|
|
117
117
|
0 6px 14px rgba(0, 0, 0, 0.3),
|
|
118
|
-
0 0 0 1px color-mix(in srgb, var(--
|
|
119
|
-
0 4px 12px color-mix(in srgb, var(--
|
|
118
|
+
0 0 0 1px color-mix(in srgb, var(--sh3-accent) 35%, transparent),
|
|
119
|
+
0 4px 12px color-mix(in srgb, var(--sh3-accent) 18%, transparent);
|
|
120
120
|
}
|
|
121
121
|
.saved-layout-card-icon {
|
|
122
122
|
width: 28px;
|
|
123
123
|
height: 28px;
|
|
124
|
-
color: var(--
|
|
124
|
+
color: var(--sh3-fg);
|
|
125
125
|
}
|
|
126
126
|
.saved-layout-card-label {
|
|
127
127
|
font-weight: 600;
|
|
@@ -20,7 +20,7 @@ describe('filterToStandalone', () => {
|
|
|
20
20
|
type: 'tabs',
|
|
21
21
|
activeTab: 0,
|
|
22
22
|
tabs: [
|
|
23
|
-
{ slotId: 'a', viewId: 'shell:terminal', label: '
|
|
23
|
+
{ slotId: 'a', viewId: 'shell:terminal', label: 'Sh3' },
|
|
24
24
|
{ slotId: 'b', viewId: 'app-only:view', label: 'App' },
|
|
25
25
|
{ slotId: 'c', viewId: 'graphlive:hierarchy', label: 'Graph' },
|
|
26
26
|
],
|
|
@@ -30,7 +30,7 @@ describe('filterToStandalone', () => {
|
|
|
30
30
|
type: 'tabs',
|
|
31
31
|
activeTab: 0,
|
|
32
32
|
tabs: [
|
|
33
|
-
{ slotId: 'a', viewId: 'shell:terminal', label: '
|
|
33
|
+
{ slotId: 'a', viewId: 'shell:terminal', label: 'Sh3' },
|
|
34
34
|
{ slotId: 'c', viewId: 'graphlive:hierarchy', label: 'Graph' },
|
|
35
35
|
],
|
|
36
36
|
});
|
|
@@ -40,7 +40,7 @@ describe('filterToStandalone', () => {
|
|
|
40
40
|
type: 'tabs',
|
|
41
41
|
activeTab: 1,
|
|
42
42
|
tabs: [
|
|
43
|
-
{ slotId: 'a', viewId: 'shell:terminal', label: '
|
|
43
|
+
{ slotId: 'a', viewId: 'shell:terminal', label: 'Sh3' },
|
|
44
44
|
{ slotId: 'b', viewId: 'app-only:view', label: 'App' },
|
|
45
45
|
],
|
|
46
46
|
};
|
|
@@ -20,7 +20,7 @@ describe('captureFromFloat', () => {
|
|
|
20
20
|
const content = {
|
|
21
21
|
type: 'tabs',
|
|
22
22
|
activeTab: 0,
|
|
23
|
-
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: '
|
|
23
|
+
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
|
|
24
24
|
};
|
|
25
25
|
const id = floatManager.openWithContent({ content, size: { w: 700, h: 500 } });
|
|
26
26
|
const out = captureFromFloat(id, isStandalone);
|
|
@@ -32,7 +32,7 @@ describe('captureFromFloat', () => {
|
|
|
32
32
|
out.content.tabs[0].label = 'MUTATED';
|
|
33
33
|
const live = floatManager.list().find((f) => f.id === id);
|
|
34
34
|
if (live.content.type === 'tabs') {
|
|
35
|
-
expect(live.content.tabs[0].label).toBe('
|
|
35
|
+
expect(live.content.tabs[0].label).toBe('Sh3');
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
});
|
|
@@ -60,7 +60,7 @@ describe('restoreToFloat', () => {
|
|
|
60
60
|
const layout = mk({
|
|
61
61
|
type: 'tabs',
|
|
62
62
|
activeTab: 0,
|
|
63
|
-
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: '
|
|
63
|
+
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
|
|
64
64
|
});
|
|
65
65
|
const id = restoreToFloat(layout, isStandalone, toast);
|
|
66
66
|
expect(id).not.toBe('');
|
|
@@ -13,7 +13,7 @@ const stubShard = {
|
|
|
13
13
|
id: 'stub',
|
|
14
14
|
label: 'Stub',
|
|
15
15
|
version: '0.0.0',
|
|
16
|
-
views: [{ id: 'shell:terminal', label: '
|
|
16
|
+
views: [{ id: 'shell:terminal', label: 'Sh3', standalone: true }],
|
|
17
17
|
},
|
|
18
18
|
activate(ctx) {
|
|
19
19
|
ctx.registerView('shell:terminal', {
|
|
@@ -45,7 +45,7 @@ describe('layoutsShard — sh3.layout.save', () => {
|
|
|
45
45
|
content: {
|
|
46
46
|
type: 'tabs',
|
|
47
47
|
activeTab: 0,
|
|
48
|
-
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: '
|
|
48
|
+
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
|
|
49
49
|
},
|
|
50
50
|
size: { w: 800, h: 600 },
|
|
51
51
|
});
|
|
@@ -86,7 +86,7 @@ describe('layoutsShard — sh3.layout.open palette submenu', () => {
|
|
|
86
86
|
content: {
|
|
87
87
|
type: 'tabs',
|
|
88
88
|
activeTab: 0,
|
|
89
|
-
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: '
|
|
89
|
+
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
|
|
90
90
|
},
|
|
91
91
|
size: { w: 600, h: 400 },
|
|
92
92
|
});
|
|
@@ -101,7 +101,7 @@ describe('layoutsShard — sh3.layout.open palette submenu', () => {
|
|
|
101
101
|
content: {
|
|
102
102
|
type: 'tabs',
|
|
103
103
|
activeTab: 0,
|
|
104
|
-
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: '
|
|
104
|
+
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
|
|
105
105
|
},
|
|
106
106
|
size: { w: 720, h: 480 },
|
|
107
107
|
});
|
|
@@ -140,7 +140,7 @@ describe('layoutsShard — sh3.layout.customize', () => {
|
|
|
140
140
|
content: {
|
|
141
141
|
type: 'tabs',
|
|
142
142
|
activeTab: 0,
|
|
143
|
-
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: '
|
|
143
|
+
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
|
|
144
144
|
},
|
|
145
145
|
size: { w: 600, h: 400 },
|
|
146
146
|
});
|
|
@@ -160,7 +160,7 @@ describe('layoutsShard — sh3.layout.customize', () => {
|
|
|
160
160
|
content: {
|
|
161
161
|
type: 'tabs',
|
|
162
162
|
activeTab: 0,
|
|
163
|
-
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: '
|
|
163
|
+
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
|
|
164
164
|
},
|
|
165
165
|
size: { w: 600, h: 400 },
|
|
166
166
|
});
|
|
@@ -196,7 +196,7 @@ describe('layoutsShard — sh3.layout.delete', () => {
|
|
|
196
196
|
content: {
|
|
197
197
|
type: 'tabs',
|
|
198
198
|
activeTab: 0,
|
|
199
|
-
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: '
|
|
199
|
+
tabs: [{ slotId: 's', viewId: 'shell:terminal', label: 'Sh3' }],
|
|
200
200
|
},
|
|
201
201
|
size: { w: 600, h: 400 },
|
|
202
202
|
});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* One-shot migration: rewrites persisted
|
|
2
|
+
* One-shot migration: rewrites persisted sh3-mode preferences from the
|
|
3
3
|
* pre-rename ids (`dev`, `user`) to the new ids (`bash`, `sh3`). Idempotent —
|
|
4
4
|
* gated by a localStorage flag, safe to call on every boot.
|
|
5
5
|
*
|
|
6
|
-
* Persistence shape: localStorage keys of the form `sh3.
|
|
6
|
+
* Persistence shape: localStorage keys of the form `sh3.sh3.lastMode.<userId>`
|
|
7
7
|
* (see packages/sh3-core/src/shell-shard/modes/prefs.ts).
|
|
8
8
|
*/
|
|
9
9
|
const FLAG_KEY = 'sh3:migrations:mode-id-rename:done';
|
|
@@ -101,11 +101,11 @@
|
|
|
101
101
|
.confirm-dialog-title {
|
|
102
102
|
font-size: 16px;
|
|
103
103
|
font-weight: 600;
|
|
104
|
-
color: var(--
|
|
104
|
+
color: var(--sh3-fg);
|
|
105
105
|
}
|
|
106
106
|
.confirm-dialog-body {
|
|
107
107
|
font-size: 13px;
|
|
108
|
-
color: var(--
|
|
108
|
+
color: var(--sh3-fg-muted, var(--sh3-fg));
|
|
109
109
|
line-height: 1.5;
|
|
110
110
|
}
|
|
111
111
|
.confirm-dialog-actions {
|
|
@@ -117,10 +117,10 @@
|
|
|
117
117
|
.confirm-dialog-btn {
|
|
118
118
|
font-size: 13px;
|
|
119
119
|
padding: 6px 14px;
|
|
120
|
-
border-radius: var(--
|
|
121
|
-
border: 1px solid var(--
|
|
120
|
+
border-radius: var(--sh3-radius-sm, 4px);
|
|
121
|
+
border: 1px solid var(--sh3-border-strong);
|
|
122
122
|
background: transparent;
|
|
123
|
-
color: var(--
|
|
123
|
+
color: var(--sh3-fg);
|
|
124
124
|
cursor: pointer;
|
|
125
125
|
}
|
|
126
126
|
.confirm-dialog-btn:disabled {
|
|
@@ -128,11 +128,11 @@
|
|
|
128
128
|
cursor: not-allowed;
|
|
129
129
|
}
|
|
130
130
|
.confirm-dialog-btn-default {
|
|
131
|
-
background: var(--
|
|
131
|
+
background: var(--sh3-bg-elevated);
|
|
132
132
|
}
|
|
133
133
|
.confirm-dialog-btn-danger {
|
|
134
134
|
background: transparent;
|
|
135
|
-
color: var(--
|
|
136
|
-
border-color: var(--
|
|
135
|
+
color: var(--sh3-error, #d32f2f);
|
|
136
|
+
border-color: var(--sh3-error, #d32f2f);
|
|
137
137
|
}
|
|
138
138
|
</style>
|
|
@@ -112,19 +112,19 @@
|
|
|
112
112
|
.app-appearance {
|
|
113
113
|
padding: 16px 20px;
|
|
114
114
|
max-width: 460px;
|
|
115
|
-
color: var(--
|
|
116
|
-
background: var(--
|
|
115
|
+
color: var(--sh3-fg);
|
|
116
|
+
background: var(--sh3-bg);
|
|
117
117
|
font: inherit;
|
|
118
118
|
}
|
|
119
119
|
h2 { margin: 0 0 12px; font-size: 16px; }
|
|
120
120
|
.row { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; font-size: 13px; }
|
|
121
|
-
.row span { color: var(--
|
|
121
|
+
.row span { color: var(--sh3-fg-muted); }
|
|
122
122
|
.row span em { font-style: italic; opacity: 0.7; }
|
|
123
123
|
.name-input {
|
|
124
|
-
background: var(--
|
|
125
|
-
color: var(--
|
|
126
|
-
border: 1px solid var(--
|
|
127
|
-
border-radius: var(--
|
|
124
|
+
background: var(--sh3-bg-elevated);
|
|
125
|
+
color: var(--sh3-fg);
|
|
126
|
+
border: 1px solid var(--sh3-border);
|
|
127
|
+
border-radius: var(--sh3-radius-sm, 3px);
|
|
128
128
|
padding: 6px 8px; font: inherit; font-size: 13px;
|
|
129
129
|
}
|
|
130
130
|
.link {
|
|
@@ -132,14 +132,14 @@
|
|
|
132
132
|
background: transparent;
|
|
133
133
|
border: none;
|
|
134
134
|
padding: 0;
|
|
135
|
-
color: var(--
|
|
135
|
+
color: var(--sh3-accent);
|
|
136
136
|
font: inherit;
|
|
137
137
|
font-size: 13px;
|
|
138
138
|
cursor: pointer;
|
|
139
139
|
text-decoration: underline;
|
|
140
140
|
}
|
|
141
141
|
.link--align-right { align-self: flex-end; margin-top: 4px; }
|
|
142
|
-
.link:hover { color: var(--
|
|
142
|
+
.link:hover { color: var(--sh3-fg); }
|
|
143
143
|
.preview { display: flex; justify-content: center; margin-bottom: 16px; }
|
|
144
144
|
.preview-card {
|
|
145
145
|
display: flex; flex-direction: column;
|
|
@@ -149,13 +149,13 @@
|
|
|
149
149
|
.preview-card-square {
|
|
150
150
|
width: 64px; height: 64px;
|
|
151
151
|
display: flex; align-items: center; justify-content: center;
|
|
152
|
-
background: var(--
|
|
153
|
-
border: 1px solid var(--
|
|
154
|
-
border-radius: var(--
|
|
152
|
+
background: var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));
|
|
153
|
+
border: 1px solid var(--sh3-border);
|
|
154
|
+
border-radius: var(--sh3-radius-md);
|
|
155
155
|
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.15);
|
|
156
156
|
}
|
|
157
157
|
.preview-card--tinted .preview-card-square { background: var(--card-color); }
|
|
158
|
-
.preview-card-icon { width: 28px; height: 28px; color: var(--
|
|
158
|
+
.preview-card-icon { width: 28px; height: 28px; color: var(--sh3-fg); }
|
|
159
159
|
.preview-card-label {
|
|
160
160
|
font-weight: 600; font-size: 11px; line-height: 1.2;
|
|
161
161
|
text-align: center; word-break: break-word;
|
|
@@ -167,13 +167,13 @@
|
|
|
167
167
|
}
|
|
168
168
|
.actions { display: flex; gap: 8px; margin-top: 16px; }
|
|
169
169
|
.actions button {
|
|
170
|
-
background: var(--
|
|
171
|
-
color: var(--
|
|
172
|
-
border: 1px solid var(--
|
|
173
|
-
border-radius: var(--
|
|
170
|
+
background: var(--sh3-bg-elevated);
|
|
171
|
+
color: var(--sh3-fg);
|
|
172
|
+
border: 1px solid var(--sh3-border);
|
|
173
|
+
border-radius: var(--sh3-radius-sm, 3px);
|
|
174
174
|
padding: 6px 14px; font: inherit; cursor: pointer;
|
|
175
175
|
}
|
|
176
|
-
.actions button.primary { background: var(--
|
|
177
|
-
.actions button:hover { border-color: var(--
|
|
176
|
+
.actions button.primary { background: var(--sh3-accent); color: #fff; border-color: var(--sh3-accent); }
|
|
177
|
+
.actions button:hover { border-color: var(--sh3-accent); }
|
|
178
178
|
.actions button:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
179
179
|
</style>
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
import { registerDismissableFrame, unregisterDismissableFrame } from './floatDismiss';
|
|
32
32
|
import { computeMinSize } from '../layout/floats';
|
|
33
33
|
import type { FloatEntry } from '../layout/types';
|
|
34
|
-
import {
|
|
34
|
+
import { sh3 } from '../sh3Runtime.svelte';
|
|
35
35
|
import { makeSelectionApi } from '../actions/selection.svelte';
|
|
36
|
-
import { spawnSatellite } from '../
|
|
36
|
+
import { spawnSatellite } from '../sh3Api/window';
|
|
37
37
|
import { walkShardsForContent } from '../satellite/walkShards';
|
|
38
38
|
|
|
39
39
|
const isTauri =
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
function openHeaderContextMenu(e: MouseEvent): void {
|
|
45
45
|
e.preventDefault();
|
|
46
46
|
floatHeaderSelection.set({ type: 'float-header', ref: { floatId: entry.id } });
|
|
47
|
-
|
|
47
|
+
sh3.actions.openContextMenu({
|
|
48
48
|
x: e.clientX,
|
|
49
49
|
y: e.clientY,
|
|
50
50
|
scope: { element: 'float-header' },
|
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
});
|
|
197
197
|
floatManager.close(entry.id);
|
|
198
198
|
} catch (err) {
|
|
199
|
-
|
|
199
|
+
sh3.toast.notify(
|
|
200
200
|
`Pop-out failed: ${(err as Error).message}`,
|
|
201
201
|
{ level: 'error', duration: 5000 },
|
|
202
202
|
);
|
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
209
209
|
<div
|
|
210
210
|
class="sh3-float-frame"
|
|
211
|
-
data-
|
|
211
|
+
data-sh3-overlay-host="float"
|
|
212
212
|
bind:this={frameEl}
|
|
213
213
|
style:left="{entry.position.x}px"
|
|
214
214
|
style:top="{entry.position.y}px"
|
|
@@ -272,10 +272,10 @@
|
|
|
272
272
|
position: absolute;
|
|
273
273
|
display: flex;
|
|
274
274
|
flex-direction: column;
|
|
275
|
-
background: var(--
|
|
276
|
-
color: var(--
|
|
277
|
-
border: 1px solid var(--
|
|
278
|
-
border-radius: var(--
|
|
275
|
+
background: var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));
|
|
276
|
+
color: var(--sh3-fg);
|
|
277
|
+
border: 1px solid var(--sh3-border-strong);
|
|
278
|
+
border-radius: var(--sh3-radius);
|
|
279
279
|
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
280
280
|
pointer-events: auto;
|
|
281
281
|
}
|
|
@@ -284,17 +284,17 @@
|
|
|
284
284
|
align-items: center;
|
|
285
285
|
justify-content: space-between;
|
|
286
286
|
padding: 4px 8px;
|
|
287
|
-
background: var(--
|
|
287
|
+
background: var(--sh3-grad-bg-sunken, var(--sh3-bg-sunken));
|
|
288
288
|
cursor: move;
|
|
289
289
|
user-select: none;
|
|
290
|
-
border-bottom: 1px solid var(--
|
|
291
|
-
border-top-left-radius: var(--
|
|
292
|
-
border-top-right-radius: var(--
|
|
290
|
+
border-bottom: 1px solid var(--sh3-border-strong);
|
|
291
|
+
border-top-left-radius: var(--sh3-radius);
|
|
292
|
+
border-top-right-radius: var(--sh3-radius);
|
|
293
293
|
flex-shrink: 0;
|
|
294
294
|
}
|
|
295
295
|
.sh3-float-title {
|
|
296
296
|
font-size: 12px;
|
|
297
|
-
color: var(--
|
|
297
|
+
color: var(--sh3-fg);
|
|
298
298
|
overflow: hidden;
|
|
299
299
|
text-overflow: ellipsis;
|
|
300
300
|
white-space: nowrap;
|
|
@@ -310,7 +310,7 @@
|
|
|
310
310
|
.sh3-float-close {
|
|
311
311
|
background: transparent;
|
|
312
312
|
border: none;
|
|
313
|
-
color: var(--
|
|
313
|
+
color: var(--sh3-fg);
|
|
314
314
|
line-height: 1;
|
|
315
315
|
cursor: pointer;
|
|
316
316
|
padding: 0 4px;
|
|
@@ -342,14 +342,14 @@
|
|
|
342
342
|
135deg,
|
|
343
343
|
transparent 0,
|
|
344
344
|
transparent 6px,
|
|
345
|
-
var(--
|
|
346
|
-
var(--
|
|
345
|
+
var(--sh3-border-strong) 6px,
|
|
346
|
+
var(--sh3-border-strong) 7px,
|
|
347
347
|
transparent 7px,
|
|
348
348
|
transparent 10px,
|
|
349
|
-
var(--
|
|
350
|
-
var(--
|
|
349
|
+
var(--sh3-border-strong) 10px,
|
|
350
|
+
var(--sh3-border-strong) 11px,
|
|
351
351
|
transparent 11px
|
|
352
352
|
);
|
|
353
|
-
border-bottom-right-radius: var(--
|
|
353
|
+
border-bottom-right-radius: var(--sh3-radius);
|
|
354
354
|
}
|
|
355
355
|
</style>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
Layer 1 overlay root — iterates the active LayoutTree's floats and
|
|
3
3
|
renders a FloatFrame for each. Mounted into the layer-1 DOM root by
|
|
4
|
-
|
|
4
|
+
Sh3.svelte. Reactivity flows from the workspace-zone proxy through
|
|
5
5
|
layoutStore.floats into this component, so mutations (open, close,
|
|
6
6
|
position changes, reorder) re-render automatically.
|
|
7
7
|
-->
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Responsibilities:
|
|
7
7
|
* - Span the full layer as a transparent centering container so every
|
|
8
|
-
* modal box renders in the middle of the
|
|
8
|
+
* modal box renders in the middle of the sh3.
|
|
9
9
|
* - Catch pointer events on the area around the box so clicks outside
|
|
10
10
|
* the top modal do not fall through to modals beneath or to the
|
|
11
11
|
* underlying layout.
|
|
@@ -81,10 +81,10 @@
|
|
|
81
81
|
pointer-events: auto;
|
|
82
82
|
}
|
|
83
83
|
.modal-box {
|
|
84
|
-
background: var(--
|
|
85
|
-
color: var(--
|
|
86
|
-
border: 1px solid var(--
|
|
87
|
-
border-radius: var(--
|
|
84
|
+
background: var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));
|
|
85
|
+
color: var(--sh3-fg);
|
|
86
|
+
border: 1px solid var(--sh3-border-strong);
|
|
87
|
+
border-radius: var(--sh3-radius);
|
|
88
88
|
min-width: 320px;
|
|
89
89
|
max-width: min(640px, 90vw);
|
|
90
90
|
max-height: 90vh;
|
|
@@ -73,10 +73,10 @@
|
|
|
73
73
|
<style>
|
|
74
74
|
.popup-frame {
|
|
75
75
|
position: absolute;
|
|
76
|
-
background: var(--
|
|
77
|
-
color: var(--
|
|
78
|
-
border: 1px solid var(--
|
|
79
|
-
border-radius: var(--
|
|
76
|
+
background: var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));
|
|
77
|
+
color: var(--sh3-fg);
|
|
78
|
+
border: 1px solid var(--sh3-border-strong);
|
|
79
|
+
border-radius: var(--sh3-radius-sm);
|
|
80
80
|
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
81
81
|
min-width: 120px;
|
|
82
82
|
outline: none;
|