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.
Files changed (228) hide show
  1. package/dist/BrandSlot.svelte +9 -9
  2. package/dist/{Shell.svelte → Sh3.svelte} +65 -65
  3. package/dist/Sh3.svelte.d.ts +5 -0
  4. package/dist/__test__/render.js +1 -1
  5. package/dist/actions/ActionPanel.svelte +3 -3
  6. package/dist/actions/CommandPalette.svelte +2 -2
  7. package/dist/actions/MenuBar.svelte +1 -1
  8. package/dist/actions/MenuBar.test.js +1 -1
  9. package/dist/actions/MenuButton.svelte +3 -3
  10. package/dist/actions/dispatcher.svelte.js +1 -1
  11. package/dist/actions/listActive.js +1 -1
  12. package/dist/actions/listeners.js +6 -6
  13. package/dist/actions/selection.svelte.d.ts +2 -2
  14. package/dist/actions/selection.svelte.js +4 -4
  15. package/dist/actions/selection.test.js +1 -1
  16. package/dist/actions/{shellActions.test.js → sh3Actions.test.js} +14 -14
  17. package/dist/actions/state.svelte.d.ts +3 -3
  18. package/dist/actions/state.svelte.js +3 -3
  19. package/dist/actions/syncMountedViewIds.test.js +1 -1
  20. package/dist/actions/types.d.ts +1 -1
  21. package/dist/api.d.ts +5 -5
  22. package/dist/api.js +7 -7
  23. package/dist/app/admin/ApiKeysView.svelte +9 -9
  24. package/dist/app/admin/AuthSettingsView.svelte +6 -6
  25. package/dist/app/admin/SystemView.svelte +12 -12
  26. package/dist/app/admin/UsersView.svelte +8 -8
  27. package/dist/app/store/AppUpdateAvailableModal.svelte +14 -14
  28. package/dist/app/store/PermissionConfirmModal.svelte +20 -20
  29. package/dist/app/store/StoreView.svelte +51 -51
  30. package/dist/app/store/UninstallAppDialog.svelte +14 -14
  31. package/dist/app/store/storeShard.svelte.js +1 -1
  32. package/dist/app/store/verbs.js +1 -1
  33. package/dist/apps/lifecycle.d.ts +1 -1
  34. package/dist/apps/lifecycle.js +4 -4
  35. package/dist/apps/lifecycle.test.js +5 -5
  36. package/dist/apps/registry.svelte.d.ts +2 -2
  37. package/dist/apps/registry.svelte.js +3 -3
  38. package/dist/apps/types.d.ts +1 -1
  39. package/dist/auth/GuestBanner.svelte +19 -19
  40. package/dist/auth/SignInWall.svelte +17 -17
  41. package/dist/auth/auth.svelte.d.ts +1 -1
  42. package/dist/auth/auth.svelte.js +1 -1
  43. package/dist/boot/satellitePayload.js +1 -1
  44. package/dist/build.d.ts +27 -0
  45. package/dist/build.js +59 -1
  46. package/dist/build.test.js +31 -0
  47. package/dist/color/api.d.ts +1 -1
  48. package/dist/color/api.js +1 -1
  49. package/dist/color/{shell-api.js → sh3-api.js} +3 -3
  50. package/dist/conflicts/ConflictModal.svelte +1 -1
  51. package/dist/conflicts/ConflictModal.svelte.d.ts +1 -1
  52. package/dist/conflicts/DetailView.svelte +19 -19
  53. package/dist/conflicts/PromptView.svelte +9 -9
  54. package/dist/conflicts/adapter-documents.js +1 -1
  55. package/dist/conflicts/api.d.ts +1 -1
  56. package/dist/conflicts/api.js +2 -2
  57. package/dist/conflicts/renderer-registry.js +1 -1
  58. package/dist/conflicts/renderers/MetaOnlyRenderer.svelte +8 -8
  59. package/dist/conflicts/renderers/TextDiffRenderer.svelte +15 -15
  60. package/dist/conflicts/renderers/index.js +1 -1
  61. package/dist/conflicts/resolve-primitive.js +1 -1
  62. package/dist/conflicts/{shell-api.js → sh3-api.js} +2 -2
  63. package/dist/contributions/registry.js +1 -1
  64. package/dist/createShell.d.ts +2 -2
  65. package/dist/createShell.js +6 -6
  66. package/dist/host-entry.d.ts +1 -1
  67. package/dist/host-entry.js +2 -2
  68. package/dist/host.js +2 -2
  69. package/dist/index.d.ts +1 -1
  70. package/dist/index.js +2 -2
  71. package/dist/keys/ConsentDialog.svelte +15 -15
  72. package/dist/keys/consent.svelte.d.ts +2 -2
  73. package/dist/keys/consent.svelte.js +3 -3
  74. package/dist/keys/revocation-bus.svelte.d.ts +3 -3
  75. package/dist/keys/revocation-bus.svelte.js +3 -3
  76. package/dist/layout/DragPreview.svelte +9 -9
  77. package/dist/layout/LayoutRenderer.browser.test.js +2 -2
  78. package/dist/layout/LayoutRenderer.svelte +4 -4
  79. package/dist/layout/SlotContainer.svelte +12 -12
  80. package/dist/layout/SlotDropZone.svelte +2 -2
  81. package/dist/layout/inspection.d.ts +1 -1
  82. package/dist/layout/inspection.js +1 -1
  83. package/dist/layout/store.svelte.js +3 -3
  84. package/dist/layout/types.d.ts +1 -1
  85. package/dist/layouts-shard/LayoutSaveModal.svelte +20 -20
  86. package/dist/layouts-shard/LayoutsSection.svelte +11 -11
  87. package/dist/layouts-shard/filter.test.js +3 -3
  88. package/dist/layouts-shard/layoutsApi.test.js +3 -3
  89. package/dist/layouts-shard/layoutsShard.svelte.test.js +7 -7
  90. package/dist/migrations/mode-id-rename.js +2 -2
  91. package/dist/overlays/ConfirmDialog.svelte +8 -8
  92. package/dist/overlays/EntityAppearanceModal.svelte +19 -19
  93. package/dist/overlays/FloatFrame.svelte +20 -20
  94. package/dist/overlays/FloatLayer.svelte +1 -1
  95. package/dist/overlays/ModalFrame.svelte +5 -5
  96. package/dist/overlays/PopupFrame.svelte +4 -4
  97. package/dist/overlays/ToastItem.svelte +12 -12
  98. package/dist/overlays/float.d.ts +2 -2
  99. package/dist/overlays/float.js +3 -3
  100. package/dist/overlays/float.test.js +6 -6
  101. package/dist/overlays/modal.js +1 -1
  102. package/dist/overlays/modal.test.js +2 -2
  103. package/dist/overlays/parentHost.js +2 -2
  104. package/dist/overlays/parentHost.test.js +5 -5
  105. package/dist/overlays/popup.js +2 -2
  106. package/dist/overlays/popup.test.js +2 -2
  107. package/dist/overlays/roots.js +4 -4
  108. package/dist/overlays/toast.js +1 -1
  109. package/dist/overlays/types.js +3 -3
  110. package/dist/primitives/Button.svelte +16 -16
  111. package/dist/primitives/Collapsible.svelte +11 -11
  112. package/dist/primitives/ResizableSplitter.svelte +10 -10
  113. package/dist/primitives/TabbedPanel.svelte +19 -19
  114. package/dist/primitives/base.css +57 -57
  115. package/dist/primitives/widgets/ColorSwatch.svelte +15 -15
  116. package/dist/primitives/widgets/ColorSwatch.svelte.test.js +4 -4
  117. package/dist/primitives/widgets/Field.svelte +20 -20
  118. package/dist/primitives/widgets/FilePicker.svelte +13 -13
  119. package/dist/primitives/widgets/IconPicker.svelte +14 -14
  120. package/dist/primitives/widgets/IconToggleGroup.svelte +14 -14
  121. package/dist/primitives/widgets/NumberInput.svelte +17 -17
  122. package/dist/primitives/widgets/PickerList.svelte +17 -17
  123. package/dist/primitives/widgets/RangeSlider.svelte +16 -16
  124. package/dist/primitives/widgets/Segmented.svelte +16 -16
  125. package/dist/primitives/widgets/Select.svelte +14 -14
  126. package/dist/primitives/widgets/Select.svelte.test.js +2 -2
  127. package/dist/primitives/widgets/Slider.svelte +20 -20
  128. package/dist/primitives/widgets/SliderGroup.svelte +2 -2
  129. package/dist/primitives/widgets/Textarea.svelte +13 -13
  130. package/dist/primitives/widgets/_select-listbox.svelte +15 -15
  131. package/dist/projects/session-state.svelte.js +1 -1
  132. package/dist/projects-shard/DeleteProjectDialog.svelte +12 -12
  133. package/dist/projects-shard/ProjectManage.svelte +25 -25
  134. package/dist/projects-shard/ProjectsSection.svelte +12 -12
  135. package/dist/registry/installer.d.ts +2 -2
  136. package/dist/registry/installer.js +2 -2
  137. package/dist/registry/loader.js +1 -1
  138. package/dist/registry/permission-descriptions.js +2 -2
  139. package/dist/registry/permission-descriptions.test.js +1 -1
  140. package/dist/runtime/runVerb-shell.test.js +2 -2
  141. package/dist/runtime/runVerb.js +4 -4
  142. package/dist/runtime/runVerb.test.js +4 -4
  143. package/dist/satellite/SatelliteShell.svelte +2 -2
  144. package/dist/{shell → sh3}/views/KeysAndPeers.svelte +7 -7
  145. package/dist/sh3Api/headless.d.ts +4 -0
  146. package/dist/{shell-shard/shellApi.js → sh3Api/headless.js} +5 -5
  147. package/dist/{shell-shard/shellApi.svelte.test.js → sh3Api/headless.svelte.test.js} +11 -11
  148. package/dist/{shellApi → sh3Api}/window.js +2 -2
  149. package/dist/{shellApi → sh3Api}/window.test.js +1 -1
  150. package/dist/{shellRuntime.svelte.d.ts → sh3Runtime.svelte.d.ts} +11 -11
  151. package/dist/{shellRuntime.svelte.js → sh3Runtime.svelte.js} +10 -10
  152. package/dist/sh3Runtime.svelte.test.d.ts +1 -0
  153. package/dist/{shellRuntime.svelte.test.js → sh3Runtime.svelte.test.js} +10 -10
  154. package/dist/sh3core-shard/AppInfoView.svelte +19 -19
  155. package/dist/sh3core-shard/{ShellHome.svelte → Sh3Home.svelte} +82 -82
  156. package/dist/sh3core-shard/Sh3Home.svelte.d.ts +3 -0
  157. package/dist/sh3core-shard/{ShellTitle.svelte → Sh3Title.svelte} +11 -11
  158. package/dist/sh3core-shard/Sh3Title.svelte.d.ts +3 -0
  159. package/dist/sh3core-shard/appActions.js +3 -3
  160. package/dist/sh3core-shard/sh3coreShard.svelte.js +7 -7
  161. package/dist/shards/activate.svelte.d.ts +1 -1
  162. package/dist/shards/activate.svelte.js +6 -6
  163. package/dist/shards/types.d.ts +5 -5
  164. package/dist/shards/types.js +2 -2
  165. package/dist/shell-shard/CommandLine.svelte +7 -7
  166. package/dist/shell-shard/InputLine.svelte +3 -3
  167. package/dist/shell-shard/ScrollbackView.svelte +2 -2
  168. package/dist/shell-shard/Terminal.svelte +5 -5
  169. package/dist/shell-shard/Terminal.svelte.d.ts +2 -2
  170. package/dist/shell-shard/dispatch-custom.test.js +2 -2
  171. package/dist/shell-shard/dispatch-gating.test.js +2 -2
  172. package/dist/shell-shard/dispatch-invoke.test.js +2 -2
  173. package/dist/shell-shard/dispatch-to-terminal.js +1 -1
  174. package/dist/shell-shard/dispatch.d.ts +2 -2
  175. package/dist/shell-shard/dispatch.js +2 -2
  176. package/dist/shell-shard/entries/PromptEntry.svelte +4 -4
  177. package/dist/shell-shard/entries/StatusEntry.svelte +4 -4
  178. package/dist/shell-shard/entries/TextEntry.svelte +3 -3
  179. package/dist/shell-shard/locateSlot.test.js +9 -9
  180. package/dist/shell-shard/manifest.js +2 -2
  181. package/dist/shell-shard/registry.d.ts +2 -2
  182. package/dist/shell-shard/rich/AppCard.svelte +1 -1
  183. package/dist/shell-shard/rich/AppsTable.svelte +1 -1
  184. package/dist/shell-shard/rich/HelpTable.svelte +1 -1
  185. package/dist/shell-shard/rich/HistoryList.svelte +1 -1
  186. package/dist/shell-shard/rich/ViewsTable.svelte +1 -1
  187. package/dist/shell-shard/rich/ZoneTree.svelte +2 -2
  188. package/dist/shell-shard/shellShard.svelte.d.ts +1 -1
  189. package/dist/shell-shard/shellShard.svelte.js +8 -8
  190. package/dist/shell-shard/terminal-dispatch.test.js +2 -2
  191. package/dist/shell-shard/toolbar/Toolbar.svelte +4 -4
  192. package/dist/shell-shard/toolbar/Toolbar.svelte.d.ts +2 -2
  193. package/dist/shell-shard/toolbar/slots/BusySlot.svelte +2 -2
  194. package/dist/shell-shard/toolbar/slots/FocusLockSlot.svelte +2 -2
  195. package/dist/shell-shard/toolbar/slots/ModeSlot.svelte +1 -1
  196. package/dist/shell-shard/toolbar/slots/TargetShardSlot.svelte +1 -1
  197. package/dist/shell-shard/toolbar/slots.d.ts +3 -3
  198. package/dist/shell-shard/verbs/apps.js +3 -3
  199. package/dist/shell-shard/verbs/help.js +1 -1
  200. package/dist/shell-shard/verbs/help.svelte.test.js +1 -1
  201. package/dist/shell-shard/verbs/history.js +1 -1
  202. package/dist/shell-shard/verbs/mode.js +2 -2
  203. package/dist/shell-shard/verbs/mode.test.js +2 -2
  204. package/dist/shell-shard/verbs/shards.js +1 -1
  205. package/dist/shell-shard/verbs/views.js +8 -8
  206. package/dist/shell-shard/verbs/zones.js +2 -2
  207. package/dist/state/zones.svelte.d.ts +2 -2
  208. package/dist/state/zones.svelte.js +4 -4
  209. package/dist/theme.d.ts +3 -3
  210. package/dist/theme.js +5 -5
  211. package/dist/tokens.css +68 -68
  212. package/dist/verbs/types.d.ts +5 -5
  213. package/dist/verbs/types.js +1 -1
  214. package/dist/version.d.ts +1 -1
  215. package/dist/version.js +1 -1
  216. package/package.json +1 -1
  217. package/dist/Shell.svelte.d.ts +0 -5
  218. package/dist/sh3core-shard/ShellHome.svelte.d.ts +0 -3
  219. package/dist/sh3core-shard/ShellTitle.svelte.d.ts +0 -3
  220. package/dist/shell-shard/shellApi.d.ts +0 -4
  221. /package/dist/actions/{shellActions.test.d.ts → sh3Actions.test.d.ts} +0 -0
  222. /package/dist/{shell-shard/shellApi.svelte.test.d.ts → build.test.d.ts} +0 -0
  223. /package/dist/color/{shell-api.d.ts → sh3-api.d.ts} +0 -0
  224. /package/dist/conflicts/{shell-api.d.ts → sh3-api.d.ts} +0 -0
  225. /package/dist/{shell → sh3}/views/KeysAndPeers.svelte.d.ts +0 -0
  226. /package/dist/{shellApi/window.test.d.ts → sh3Api/headless.svelte.test.d.ts} +0 -0
  227. /package/dist/{shellApi → sh3Api}/window.d.ts +0 -0
  228. /package/dist/{shellRuntime.svelte.test.d.ts → sh3Api/window.test.d.ts} +0 -0
@@ -88,18 +88,18 @@
88
88
  display: flex;
89
89
  flex-direction: column;
90
90
  gap: 6px;
91
- border: 1px solid var(--shell-border);
92
- border-radius: var(--shell-radius-sm, 3px);
91
+ border: 1px solid var(--sh3-border);
92
+ border-radius: var(--sh3-radius-sm, 3px);
93
93
  padding: 6px;
94
- background: var(--shell-bg-elevated);
94
+ background: var(--sh3-bg-elevated);
95
95
  }
96
96
  .sh3-picker__search {
97
97
  width: 100%;
98
98
  padding: 4px 6px;
99
- border: 1px solid var(--shell-border);
100
- border-radius: var(--shell-radius-sm, 3px);
101
- background: var(--shell-bg);
102
- color: var(--shell-fg);
99
+ border: 1px solid var(--sh3-border);
100
+ border-radius: var(--sh3-radius-sm, 3px);
101
+ background: var(--sh3-bg);
102
+ color: var(--sh3-fg);
103
103
  font: inherit;
104
104
  font-size: 12px;
105
105
  }
@@ -115,26 +115,26 @@
115
115
  gap: 8px;
116
116
  padding: 4px 6px;
117
117
  cursor: pointer;
118
- border-radius: var(--shell-radius-sm, 3px);
118
+ border-radius: var(--sh3-radius-sm, 3px);
119
119
  }
120
- .sh3-picker__row:hover { background: var(--shell-bg); }
120
+ .sh3-picker__row:hover { background: var(--sh3-bg); }
121
121
  .sh3-picker__row-text { display: flex; flex-direction: column; gap: 0; }
122
122
  .sh3-picker__row-label { font-size: 13px; }
123
- .sh3-picker__row-sub { font-size: 11px; color: var(--shell-fg-muted); }
123
+ .sh3-picker__row-sub { font-size: 11px; color: var(--sh3-fg-muted); }
124
124
  .sh3-picker__status {
125
125
  margin: 0;
126
126
  padding: 8px 6px;
127
- color: var(--shell-fg-muted);
127
+ color: var(--sh3-fg-muted);
128
128
  font-size: 12px;
129
129
  }
130
- .sh3-picker__status--error { color: var(--shell-error, #c33); }
130
+ .sh3-picker__status--error { color: var(--sh3-error, #c33); }
131
131
  .sh3-picker__retry {
132
132
  align-self: flex-start;
133
133
  margin: 0 6px 8px;
134
- background: var(--shell-bg);
135
- color: var(--shell-fg);
136
- border: 1px solid var(--shell-border);
137
- border-radius: var(--shell-radius-sm, 3px);
134
+ background: var(--sh3-bg);
135
+ color: var(--sh3-fg);
136
+ border: 1px solid var(--sh3-border);
137
+ border-radius: var(--sh3-radius-sm, 3px);
138
138
  padding: 2px 8px;
139
139
  font: inherit;
140
140
  font-size: 12px;
@@ -143,7 +143,7 @@
143
143
  .sh3-picker__footer {
144
144
  margin: 0;
145
145
  font-size: 11px;
146
- color: var(--shell-fg-muted);
146
+ color: var(--sh3-fg-muted);
147
147
  text-align: right;
148
148
  }
149
149
  .sh3-picker--disabled .sh3-picker__row { cursor: not-allowed; opacity: 0.6; }
@@ -66,16 +66,16 @@
66
66
  top: 50%; left: 0; right: 0;
67
67
  height: 4px;
68
68
  transform: translateY(-50%);
69
- background: var(--shell-track-bg);
70
- border: 1px solid var(--shell-track-border);
71
- border-radius: var(--shell-widget-radius-pill);
69
+ background: var(--sh3-track-bg);
70
+ border: 1px solid var(--sh3-track-border);
71
+ border-radius: var(--sh3-widget-radius-pill);
72
72
  }
73
73
  .sh3-range__fill {
74
74
  position: absolute;
75
75
  top: 0; bottom: 0;
76
76
  left: var(--lo);
77
77
  width: calc(var(--hi) - var(--lo));
78
- background: var(--shell-track-fill);
78
+ background: var(--sh3-track-fill);
79
79
  border-radius: inherit;
80
80
  }
81
81
  .sh3-range__native {
@@ -95,9 +95,9 @@
95
95
  -webkit-appearance: none;
96
96
  width: var(--thumb-size); height: var(--thumb-size);
97
97
  border-radius: 50%;
98
- background: var(--shell-thumb-bg);
99
- border: 2px solid var(--shell-thumb-border);
100
- box-shadow: var(--shell-thumb-shadow);
98
+ background: var(--sh3-thumb-bg);
99
+ border: 2px solid var(--sh3-thumb-border);
100
+ box-shadow: var(--sh3-thumb-shadow);
101
101
  pointer-events: auto;
102
102
  cursor: pointer;
103
103
  opacity: 1;
@@ -105,31 +105,31 @@
105
105
  .sh3-range__native::-moz-range-thumb {
106
106
  width: var(--thumb-size); height: var(--thumb-size);
107
107
  border-radius: 50%;
108
- background: var(--shell-thumb-bg);
109
- border: 2px solid var(--shell-thumb-border);
110
- box-shadow: var(--shell-thumb-shadow);
108
+ background: var(--sh3-thumb-bg);
109
+ border: 2px solid var(--sh3-thumb-border);
110
+ box-shadow: var(--sh3-thumb-shadow);
111
111
  pointer-events: auto;
112
112
  cursor: pointer;
113
113
  opacity: 1;
114
114
  }
115
115
  .sh3-range__native:disabled::-webkit-slider-thumb {
116
- background: var(--shell-fg-subtle);
117
- border-color: var(--shell-border-strong);
116
+ background: var(--sh3-fg-subtle);
117
+ border-color: var(--sh3-border-strong);
118
118
  cursor: not-allowed;
119
119
  opacity: 1;
120
120
  }
121
121
  .sh3-range__native:disabled::-moz-range-thumb {
122
- background: var(--shell-fg-subtle);
123
- border-color: var(--shell-border-strong);
122
+ background: var(--sh3-fg-subtle);
123
+ border-color: var(--sh3-border-strong);
124
124
  cursor: not-allowed;
125
125
  opacity: 1;
126
126
  }
127
127
  .sh3-range:has(.sh3-range__native:disabled) .sh3-range__fill {
128
- background: var(--shell-border-strong);
128
+ background: var(--sh3-border-strong);
129
129
  }
130
130
  .sh3-range__native::-webkit-slider-runnable-track,
131
131
  .sh3-range__native::-moz-range-track {
132
132
  background: transparent;
133
133
  }
134
- .sh3-range--invalid .sh3-range__track { border-color: var(--shell-error); }
134
+ .sh3-range--invalid .sh3-range__track { border-color: var(--sh3-error); }
135
135
  </style>
@@ -52,41 +52,41 @@
52
52
  <style>
53
53
  .sh3-seg {
54
54
  display: inline-flex;
55
- background: var(--shell-bg-sunken);
56
- border: 1px solid var(--shell-border);
57
- border-radius: var(--shell-widget-radius-pill);
55
+ background: var(--sh3-bg-sunken);
56
+ border: 1px solid var(--sh3-border);
57
+ border-radius: var(--sh3-widget-radius-pill);
58
58
  padding: 2px;
59
- height: var(--shell-field-height-md);
59
+ height: var(--sh3-field-height-md);
60
60
  gap: 0;
61
61
  }
62
- .sh3-seg--sm { height: var(--shell-field-height-sm); }
62
+ .sh3-seg--sm { height: var(--sh3-field-height-sm); }
63
63
  .sh3-seg button {
64
64
  background: transparent;
65
- color: var(--shell-fg-muted);
65
+ color: var(--sh3-fg-muted);
66
66
  border: none;
67
- padding: 0 var(--shell-field-pad-x);
68
- border-radius: var(--shell-widget-radius-pill);
67
+ padding: 0 var(--sh3-field-pad-x);
68
+ border-radius: var(--sh3-widget-radius-pill);
69
69
  font-size: 0.8125rem;
70
70
  cursor: pointer;
71
- transition: background var(--shell-motion-fast) var(--shell-ease-standard),
72
- color var(--shell-motion-fast) var(--shell-ease-standard);
71
+ transition: background var(--sh3-motion-fast) var(--sh3-ease-standard),
72
+ color var(--sh3-motion-fast) var(--sh3-ease-standard);
73
73
  }
74
74
  .sh3-seg button:hover:not(:disabled):not(.sh3-seg__btn--active) {
75
- color: var(--shell-fg);
75
+ color: var(--sh3-fg);
76
76
  filter: none;
77
77
  }
78
78
  /* Selector includes `.sh3-seg button` so specificity (0,2,1) beats the
79
79
  base `.sh3-seg button` rule (0,1,1) — otherwise `background: transparent`
80
- and `color: var(--shell-fg-muted)` would shadow the accent fill. */
80
+ and `color: var(--sh3-fg-muted)` would shadow the accent fill. */
81
81
  .sh3-seg button.sh3-seg__btn--active {
82
- background: var(--shell-accent);
83
- color: var(--shell-fg-on-accent);
82
+ background: var(--sh3-accent);
83
+ color: var(--sh3-fg-on-accent);
84
84
  font-weight: 600;
85
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), inset 0 0 0 1px color-mix(in srgb, var(--shell-fg-on-accent) 25%, transparent);
85
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), inset 0 0 0 1px color-mix(in srgb, var(--sh3-fg-on-accent) 25%, transparent);
86
86
  }
87
87
  .sh3-seg button:disabled { opacity: 0.5; cursor: not-allowed; }
88
88
  .sh3-seg button:focus-visible {
89
89
  outline: none;
90
- box-shadow: var(--shell-focus-ring);
90
+ box-shadow: var(--sh3-focus-ring);
91
91
  }
92
92
  </style>
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { tick } from 'svelte';
3
3
  import type { CommitOnlyEvents } from './_contract';
4
- import { shell } from '../../shellRuntime.svelte';
4
+ import { sh3 } from '../../sh3Runtime.svelte';
5
5
  import Listbox from './_select-listbox.svelte';
6
6
  import { type SelectOption, resolveValueLabel, toggleMulti } from './Select';
7
7
 
@@ -40,7 +40,7 @@
40
40
  async function open() {
41
41
  if (disabled || isOpen || !trigger) return;
42
42
  isOpen = true;
43
- const popupHandle = shell.popup.show(
43
+ const popupHandle = sh3.popup.show(
44
44
  Listbox,
45
45
  { anchor: trigger },
46
46
  {
@@ -136,27 +136,27 @@
136
136
 
137
137
  <style>
138
138
  .sh3-select { display: inline-flex; flex-direction: column; gap: 4px; font-size: 0.8125rem; position: relative; }
139
- .sh3-select__label { color: var(--shell-fg-muted); font-size: 0.75rem; }
139
+ .sh3-select__label { color: var(--sh3-fg-muted); font-size: 0.75rem; }
140
140
  .sh3-select__btn {
141
141
  display: inline-flex; align-items: center; gap: 8px;
142
- height: var(--shell-field-height-md);
142
+ height: var(--sh3-field-height-md);
143
143
  min-width: 140px;
144
- padding: 0 var(--shell-field-pad-x);
145
- background: var(--shell-input-bg);
146
- color: var(--shell-fg);
147
- border: 1px solid var(--shell-border);
148
- border-radius: var(--shell-widget-radius);
144
+ padding: 0 var(--sh3-field-pad-x);
145
+ background: var(--sh3-input-bg);
146
+ color: var(--sh3-fg);
147
+ border: 1px solid var(--sh3-border);
148
+ border-radius: var(--sh3-widget-radius);
149
149
  cursor: pointer;
150
150
  font: inherit;
151
151
  text-align: left;
152
152
  }
153
- .sh3-select--sm .sh3-select__btn { height: var(--shell-field-height-sm); }
154
- .sh3-select__btn:focus-visible { outline: none; box-shadow: var(--shell-focus-ring); border-color: var(--shell-input-border-focus); }
153
+ .sh3-select--sm .sh3-select__btn { height: var(--sh3-field-height-sm); }
154
+ .sh3-select__btn:focus-visible { outline: none; box-shadow: var(--sh3-focus-ring); border-color: var(--sh3-input-border-focus); }
155
155
  .sh3-select__btn:disabled { opacity: 0.55; cursor: not-allowed; }
156
- .sh3-select--invalid .sh3-select__btn { border-color: var(--shell-error); }
156
+ .sh3-select--invalid .sh3-select__btn { border-color: var(--sh3-error); }
157
157
  .sh3-select__display { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
158
- .sh3-select__display--placeholder { color: var(--shell-fg-muted); }
159
- .sh3-select__chevron { color: var(--shell-fg-muted); }
158
+ .sh3-select__display--placeholder { color: var(--sh3-fg-muted); }
159
+ .sh3-select__chevron { color: var(--sh3-fg-muted); }
160
160
  .sh3-select__native {
161
161
  position: absolute;
162
162
  width: 1px; height: 1px;
@@ -1,8 +1,8 @@
1
1
  import { describe, it, expect, vi } from 'vitest';
2
2
  import { render, fireEvent } from '@testing-library/svelte';
3
3
  import Select from './Select.svelte';
4
- vi.mock('../../shellRuntime.svelte', () => ({
5
- shell: { popup: { show: () => ({ close: () => { } }) } },
4
+ vi.mock('../../sh3Runtime.svelte', () => ({
5
+ sh3: { popup: { show: () => ({ close: () => { } }) } },
6
6
  }));
7
7
  describe('Select event contract', () => {
8
8
  const options = [
@@ -71,9 +71,9 @@
71
71
 
72
72
  .sh3-slider__track {
73
73
  position: absolute;
74
- background: var(--shell-track-bg);
75
- border: 1px solid var(--shell-track-border);
76
- border-radius: var(--shell-widget-radius-pill);
74
+ background: var(--sh3-track-bg);
75
+ border: 1px solid var(--sh3-track-border);
76
+ border-radius: var(--sh3-widget-radius-pill);
77
77
  pointer-events: none;
78
78
  }
79
79
  .sh3-slider--horizontal .sh3-slider__track {
@@ -89,7 +89,7 @@
89
89
 
90
90
  .sh3-slider__fill {
91
91
  position: absolute;
92
- background: var(--shell-track-fill);
92
+ background: var(--sh3-track-fill);
93
93
  border-radius: inherit;
94
94
  }
95
95
  .sh3-slider--horizontal .sh3-slider__fill {
@@ -103,7 +103,7 @@
103
103
 
104
104
  .sh3-slider__tick {
105
105
  position: absolute;
106
- background: var(--shell-tick-bg);
106
+ background: var(--sh3-tick-bg);
107
107
  }
108
108
  .sh3-slider--horizontal .sh3-slider__tick {
109
109
  width: 1px; height: 8px; top: 50%;
@@ -139,12 +139,12 @@
139
139
  cursor: not-allowed;
140
140
  opacity: 1;
141
141
  }
142
- .sh3-slider--invalid .sh3-slider__track { border-color: var(--shell-error); }
142
+ .sh3-slider--invalid .sh3-slider__track { border-color: var(--sh3-error); }
143
143
 
144
144
  /* Disabled state: shift the fill + thumb to muted/border tokens
145
145
  instead of using opacity, so the thumb stays opaque (no see-through). */
146
146
  .sh3-slider:has(.sh3-slider__native:disabled) .sh3-slider__fill {
147
- background: var(--shell-border-strong);
147
+ background: var(--sh3-border-strong);
148
148
  }
149
149
 
150
150
  .sh3-slider__native::-webkit-slider-thumb {
@@ -152,9 +152,9 @@
152
152
  width: var(--thumb-size);
153
153
  height: var(--thumb-size);
154
154
  border-radius: 50%;
155
- background: var(--shell-thumb-bg);
156
- border: 2px solid var(--shell-thumb-border);
157
- box-shadow: var(--shell-thumb-shadow);
155
+ background: var(--sh3-thumb-bg);
156
+ border: 2px solid var(--sh3-thumb-border);
157
+ box-shadow: var(--sh3-thumb-shadow);
158
158
  cursor: pointer;
159
159
  opacity: 1;
160
160
  }
@@ -162,21 +162,21 @@
162
162
  width: var(--thumb-size);
163
163
  height: var(--thumb-size);
164
164
  border-radius: 50%;
165
- background: var(--shell-thumb-bg);
166
- border: 2px solid var(--shell-thumb-border);
167
- box-shadow: var(--shell-thumb-shadow);
165
+ background: var(--sh3-thumb-bg);
166
+ border: 2px solid var(--sh3-thumb-border);
167
+ box-shadow: var(--sh3-thumb-shadow);
168
168
  cursor: pointer;
169
169
  opacity: 1;
170
170
  }
171
171
  .sh3-slider__native:disabled::-webkit-slider-thumb {
172
- background: var(--shell-fg-subtle);
173
- border-color: var(--shell-border-strong);
172
+ background: var(--sh3-fg-subtle);
173
+ border-color: var(--sh3-border-strong);
174
174
  cursor: not-allowed;
175
175
  opacity: 1;
176
176
  }
177
177
  .sh3-slider__native:disabled::-moz-range-thumb {
178
- background: var(--shell-fg-subtle);
179
- border-color: var(--shell-border-strong);
178
+ background: var(--sh3-fg-subtle);
179
+ border-color: var(--sh3-border-strong);
180
180
  cursor: not-allowed;
181
181
  opacity: 1;
182
182
  }
@@ -185,16 +185,16 @@
185
185
  background: transparent;
186
186
  }
187
187
  .sh3-slider__native:focus-visible::-webkit-slider-thumb {
188
- box-shadow: var(--shell-focus-ring), var(--shell-thumb-shadow);
188
+ box-shadow: var(--sh3-focus-ring), var(--sh3-thumb-shadow);
189
189
  }
190
190
  .sh3-slider__native:focus-visible::-moz-range-thumb {
191
- box-shadow: var(--shell-focus-ring), var(--shell-thumb-shadow);
191
+ box-shadow: var(--sh3-focus-ring), var(--sh3-thumb-shadow);
192
192
  }
193
193
 
194
194
  .sh3-slider__value {
195
195
  position: absolute;
196
196
  font-size: 0.75rem;
197
- color: var(--shell-fg-muted);
197
+ color: var(--sh3-fg-muted);
198
198
  pointer-events: none;
199
199
  transform: translate(-50%, 0);
200
200
  }
@@ -47,7 +47,7 @@
47
47
  </div>
48
48
 
49
49
  <style>
50
- .sh3-sg { display: inline-flex; gap: var(--shell-pad-md); }
50
+ .sh3-sg { display: inline-flex; gap: var(--sh3-pad-md); }
51
51
  .sh3-sg--vertical { flex-direction: row; align-items: end; }
52
52
  .sh3-sg--horizontal { flex-direction: column; }
53
53
  .sh3-sg__channel {
@@ -56,7 +56,7 @@
56
56
  .sh3-sg--vertical .sh3-sg__channel { flex-direction: column-reverse; align-items: center; }
57
57
  .sh3-sg__label {
58
58
  font-size: 0.75rem;
59
- color: var(--shell-fg-muted);
59
+ color: var(--sh3-fg-muted);
60
60
  min-width: 60px;
61
61
  }
62
62
  .sh3-sg--vertical .sh3-sg__label { min-width: 0; text-align: center; }
@@ -55,33 +55,33 @@
55
55
  display: inline-flex;
56
56
  flex-direction: column;
57
57
  gap: 4px;
58
- font-family: var(--shell-font-ui);
58
+ font-family: var(--sh3-font-ui);
59
59
  font-size: 0.8125rem;
60
60
  }
61
61
  .sh3-textarea__label {
62
- color: var(--shell-fg-muted);
62
+ color: var(--sh3-fg-muted);
63
63
  font-size: 0.75rem;
64
64
  }
65
65
  .sh3-textarea__input {
66
- background: var(--shell-input-bg);
67
- color: var(--shell-fg);
68
- border: 1px solid var(--shell-border);
69
- border-radius: var(--shell-widget-radius);
70
- padding: var(--shell-pad-sm) var(--shell-field-pad-x);
66
+ background: var(--sh3-input-bg);
67
+ color: var(--sh3-fg);
68
+ border: 1px solid var(--sh3-border);
69
+ border-radius: var(--sh3-widget-radius);
70
+ padding: var(--sh3-pad-sm) var(--sh3-field-pad-x);
71
71
  font: inherit;
72
72
  outline: none;
73
- transition: border-color var(--shell-motion-fast) var(--shell-ease-standard);
73
+ transition: border-color var(--sh3-motion-fast) var(--sh3-ease-standard);
74
74
  }
75
75
  .sh3-textarea__input:focus {
76
- border-color: var(--shell-input-border-focus);
77
- box-shadow: var(--shell-focus-ring);
76
+ border-color: var(--sh3-input-border-focus);
77
+ box-shadow: var(--sh3-focus-ring);
78
78
  }
79
79
  .sh3-textarea--invalid .sh3-textarea__input {
80
- border-color: var(--shell-error);
80
+ border-color: var(--sh3-error);
81
81
  }
82
82
  .sh3-textarea__helper {
83
- color: var(--shell-fg-muted);
83
+ color: var(--sh3-fg-muted);
84
84
  font-size: 0.75rem;
85
85
  }
86
- .sh3-textarea__helper--error { color: var(--shell-error); }
86
+ .sh3-textarea__helper--error { color: var(--sh3-error); }
87
87
  </style>
@@ -166,13 +166,13 @@
166
166
 
167
167
  <style>
168
168
  .sh3-listbox {
169
- background: var(--shell-bg-elevated);
170
- border: 1px solid var(--shell-border);
171
- border-radius: var(--shell-widget-radius);
172
- box-shadow: var(--shell-shadow-sm);
169
+ background: var(--sh3-bg-elevated);
170
+ border: 1px solid var(--sh3-border);
171
+ border-radius: var(--sh3-widget-radius);
172
+ box-shadow: var(--sh3-shadow-sm);
173
173
  min-width: 180px;
174
174
  max-width: 320px;
175
- color: var(--shell-fg);
175
+ color: var(--sh3-fg);
176
176
  font-size: 0.8125rem;
177
177
  overflow: hidden;
178
178
  }
@@ -180,10 +180,10 @@
180
180
  width: 100%;
181
181
  height: 26px;
182
182
  padding: 0 8px;
183
- background: var(--shell-input-bg);
183
+ background: var(--sh3-input-bg);
184
184
  border: none;
185
- border-bottom: 1px solid var(--shell-border);
186
- color: var(--shell-fg);
185
+ border-bottom: 1px solid var(--sh3-border);
186
+ color: var(--sh3-fg);
187
187
  font: inherit;
188
188
  outline: none;
189
189
  }
@@ -197,11 +197,11 @@
197
197
  padding: 4px 10px;
198
198
  cursor: pointer;
199
199
  }
200
- .sh3-listbox__opt--active { background: var(--shell-bg); }
201
- .sh3-listbox__opt--selected { color: var(--shell-accent); }
202
- .sh3-listbox__opt--active.sh3-listbox__opt--selected { background: var(--shell-accent); color: var(--shell-fg-on-accent); }
200
+ .sh3-listbox__opt--active { background: var(--sh3-bg); }
201
+ .sh3-listbox__opt--selected { color: var(--sh3-accent); }
202
+ .sh3-listbox__opt--active.sh3-listbox__opt--selected { background: var(--sh3-accent); color: var(--sh3-fg-on-accent); }
203
203
  .sh3-listbox__list > div[aria-disabled="true"] {
204
- color: var(--shell-fg-subtle);
204
+ color: var(--sh3-fg-subtle);
205
205
  cursor: not-allowed;
206
206
  }
207
207
  .sh3-listbox__check {
@@ -214,15 +214,15 @@
214
214
  display: block;
215
215
  width: 100%;
216
216
  height: 100%;
217
- background: var(--shell-accent);
217
+ background: var(--sh3-accent);
218
218
  clip-path: polygon(14% 44%, 0 60%, 40% 100%, 100% 20%, 85% 8%, 38% 70%);
219
219
  }
220
220
  .sh3-listbox__opt--active.sh3-listbox__opt--selected .sh3-listbox__check--on::before {
221
- background: var(--shell-fg-on-accent);
221
+ background: var(--sh3-fg-on-accent);
222
222
  }
223
223
  .sh3-listbox__empty {
224
224
  padding: 6px 10px;
225
- color: var(--shell-fg-muted);
225
+ color: var(--sh3-fg-muted);
226
226
  font-style: italic;
227
227
  }
228
228
  </style>
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * `null` means the user is in their personal scope. Otherwise it carries
5
5
  * the active project's id. Read at app launch by `launchApp` to bind
6
- * `ctx.scopeId`, and read by ShellHome / BrandSlot for UX rendering.
6
+ * `ctx.scopeId`, and read by Sh3Home / BrandSlot for UX rendering.
7
7
  *
8
8
  * Setting the slot through `setActiveProjectId` is the only supported
9
9
  * mutation path: it clears the breadcrumb pointer (so resuming an app
@@ -97,11 +97,11 @@
97
97
  .delete-project-dialog__title {
98
98
  font-size: 16px;
99
99
  font-weight: 600;
100
- color: var(--shell-fg);
100
+ color: var(--sh3-fg);
101
101
  }
102
102
  .delete-project-dialog__body {
103
103
  font-size: 13px;
104
- color: var(--shell-fg-muted, var(--shell-fg));
104
+ color: var(--sh3-fg-muted, var(--sh3-fg));
105
105
  line-height: 1.5;
106
106
  }
107
107
  .delete-project-dialog__opt {
@@ -109,18 +109,18 @@
109
109
  align-items: flex-start;
110
110
  gap: 8px;
111
111
  font-size: 13px;
112
- color: var(--shell-fg);
112
+ color: var(--sh3-fg);
113
113
  cursor: pointer;
114
114
  }
115
115
  .delete-project-dialog__opt input { margin-top: 3px; }
116
116
  .delete-project-dialog__path {
117
117
  display: block;
118
- font-family: var(--shell-font-mono, monospace);
118
+ font-family: var(--sh3-font-mono, monospace);
119
119
  font-size: 11px;
120
- color: var(--shell-fg-muted);
121
- background: var(--shell-bg-elevated);
120
+ color: var(--sh3-fg-muted);
121
+ background: var(--sh3-bg-elevated);
122
122
  padding: 2px 6px;
123
- border-radius: var(--shell-radius-sm, 3px);
123
+ border-radius: var(--sh3-radius-sm, 3px);
124
124
  margin-top: 2px;
125
125
  word-break: break-all;
126
126
  }
@@ -133,10 +133,10 @@
133
133
  .delete-project-dialog__btn {
134
134
  font-size: 13px;
135
135
  padding: 6px 14px;
136
- border-radius: var(--shell-radius-sm, 4px);
137
- border: 1px solid var(--shell-border-strong);
136
+ border-radius: var(--sh3-radius-sm, 4px);
137
+ border: 1px solid var(--sh3-border-strong);
138
138
  background: transparent;
139
- color: var(--shell-fg);
139
+ color: var(--sh3-fg);
140
140
  cursor: pointer;
141
141
  }
142
142
  .delete-project-dialog__btn:disabled {
@@ -144,7 +144,7 @@
144
144
  cursor: not-allowed;
145
145
  }
146
146
  .delete-project-dialog__btn--danger {
147
- color: var(--shell-error, #d32f2f);
148
- border-color: var(--shell-error, #d32f2f);
147
+ color: var(--sh3-error, #d32f2f);
148
+ border-color: var(--sh3-error, #d32f2f);
149
149
  }
150
150
  </style>