@happyvertical/smrt-svelte 0.55.17 → 0.55.19

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 (79) hide show
  1. package/agents/cookbook-shell.md +26 -2
  2. package/agents/overview-surfaces.md +13 -3
  3. package/agents/workspace.md +56 -0
  4. package/dist/components/app/AppShell.svelte +35 -13
  5. package/dist/components/app/AppShell.svelte.d.ts +13 -5
  6. package/dist/components/app/AppShell.svelte.d.ts.map +1 -1
  7. package/dist/components/app/DockToggles.svelte +115 -57
  8. package/dist/components/app/DockToggles.svelte.d.ts +1 -1
  9. package/dist/components/app/DockToggles.svelte.d.ts.map +1 -1
  10. package/dist/components/app/PhoneTabBar.svelte +37 -12
  11. package/dist/components/app/PhoneTabBar.svelte.d.ts +1 -1
  12. package/dist/components/app/PhoneTabBar.svelte.d.ts.map +1 -1
  13. package/dist/components/app/ShellSettingsPage.svelte +2 -2
  14. package/dist/components/app/ShellSettingsPage.svelte.d.ts +2 -2
  15. package/dist/components/app/ShellSettingsPage.svelte.d.ts.map +1 -1
  16. package/dist/components/app/dock-toggle.d.ts +45 -0
  17. package/dist/components/app/dock-toggle.d.ts.map +1 -1
  18. package/dist/components/app/dock-toggle.js +26 -1
  19. package/dist/components/app/index.d.ts +1 -0
  20. package/dist/components/app/index.d.ts.map +1 -1
  21. package/dist/components/app/shell-user.d.ts +14 -0
  22. package/dist/components/app/shell-user.d.ts.map +1 -0
  23. package/dist/components/app/shell-user.js +1 -0
  24. package/dist/components/cookbook/CookbookSectionOverview.svelte +22 -3
  25. package/dist/components/cookbook/CookbookSectionOverview.svelte.d.ts +11 -2
  26. package/dist/components/cookbook/CookbookSectionOverview.svelte.d.ts.map +1 -1
  27. package/dist/components/cookbook/CookbookSectionPage.svelte +27 -9
  28. package/dist/components/cookbook/CookbookSectionPage.svelte.d.ts.map +1 -1
  29. package/dist/components/cookbook/index.d.ts +3 -1
  30. package/dist/components/cookbook/index.d.ts.map +1 -1
  31. package/dist/components/cookbook/index.js +2 -1
  32. package/dist/components/cookbook/registry.d.ts +18 -4
  33. package/dist/components/cookbook/registry.d.ts.map +1 -1
  34. package/dist/components/cookbook/registry.js +40 -2
  35. package/dist/components/cookbook/types.d.ts +39 -4
  36. package/dist/components/cookbook/types.d.ts.map +1 -1
  37. package/dist/components/overview/OverviewGrid.svelte +1 -0
  38. package/dist/components/overview/index.d.ts +1 -1
  39. package/dist/components/overview/index.d.ts.map +1 -1
  40. package/dist/components/overview/types.d.ts +6 -0
  41. package/dist/components/overview/types.d.ts.map +1 -1
  42. package/dist/components/overview/widgets/ChartWidget.svelte +158 -18
  43. package/dist/components/overview/widgets/ChartWidget.svelte.d.ts.map +1 -1
  44. package/dist/components/overview/widgets/ShortcutsWidget.svelte +32 -3
  45. package/dist/components/overview/widgets/ShortcutsWidget.svelte.d.ts.map +1 -1
  46. package/dist/components/overview/widgets/core.d.ts +9 -1
  47. package/dist/components/overview/widgets/core.d.ts.map +1 -1
  48. package/dist/components/overview/widgets/core.js +20 -1
  49. package/dist/components/overview/widgets/data.d.ts +16 -6
  50. package/dist/components/overview/widgets/data.d.ts.map +1 -1
  51. package/dist/components/workspace/admin-shell/ActivityToasts.svelte +5 -3
  52. package/dist/components/workspace/admin-shell/AdminShell.svelte +164 -65
  53. package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts.map +1 -1
  54. package/dist/components/workspace/admin-shell/PhoneBottomBar.svelte +37 -6
  55. package/dist/components/workspace/admin-shell/PhoneTopBar.svelte +11 -5
  56. package/dist/components/workspace/admin-shell/ShellIconButton.svelte +7 -6
  57. package/dist/components/workspace/admin-shell/ShellLayoutEditor.svelte +2 -2
  58. package/dist/components/workspace/admin-shell/ShellNavEditor.svelte +6 -6
  59. package/dist/components/workspace/admin-shell/ShellNavToggle.svelte +4 -4
  60. package/dist/components/workspace/admin-shell/ShellSectionMenu.svelte +9 -7
  61. package/dist/components/workspace/admin-shell/ShellSettingsPanel.svelte +52 -7
  62. package/dist/components/workspace/admin-shell/ShellSettingsPanel.svelte.d.ts +6 -2
  63. package/dist/components/workspace/admin-shell/ShellSettingsPanel.svelte.d.ts.map +1 -1
  64. package/dist/components/workspace/admin-shell/TenantNav.svelte +33 -9
  65. package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte +91 -27
  66. package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte.d.ts +7 -2
  67. package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte.d.ts.map +1 -1
  68. package/dist/components/workspace/admin-shell/mobile-shell.d.ts +1 -1
  69. package/dist/components/workspace/admin-shell/mobile-shell.d.ts.map +1 -1
  70. package/dist/components/workspace/admin-shell/state.svelte.d.ts +9 -0
  71. package/dist/components/workspace/admin-shell/state.svelte.d.ts.map +1 -1
  72. package/dist/components/workspace/admin-shell/state.svelte.js +14 -0
  73. package/dist/i18n/strings.overview.d.ts +5 -0
  74. package/dist/i18n/strings.overview.d.ts.map +1 -1
  75. package/dist/i18n/strings.overview.js +5 -0
  76. package/dist/i18n/strings.workspace.d.ts +2 -0
  77. package/dist/i18n/strings.workspace.d.ts.map +1 -1
  78. package/dist/i18n/strings.workspace.js +3 -0
  79. package/package.json +16 -16
@@ -253,7 +253,7 @@ function oncontainermove(move: SortableContainerMove<NavContainer>): void {
253
253
  .smrt-shell-layout-editor h2, .smrt-shell-layout-editor h3, .smrt-shell-layout-editor p { margin: 0; }
254
254
  .smrt-shell-layout-editor p, .smrt-shell-layout-editor__muted { color: var(--smrt-color-on-surface-variant); }
255
255
  .smrt-shell-layout-editor h3 { font: var(--smrt-typography-title-small-font); margin-block-end: var(--smrt-spacing-2); }
256
- .smrt-shell-layout-editor__panels { display: grid; gap: var(--smrt-spacing-2); margin: 0; padding: var(--smrt-spacing-3); border: 1px solid var(--smrt-color-outline-variant); border-radius: var(--smrt-radius-md); }
256
+ .smrt-shell-layout-editor__panels { display: grid; gap: var(--smrt-spacing-2); margin: 0; padding: var(--smrt-spacing-3); border: var(--smrt-hairline); border-radius: var(--smrt-radius-md); }
257
257
  .smrt-shell-layout-editor__panels legend { padding-inline: var(--smrt-spacing-1); font: var(--smrt-typography-title-small-font); }
258
258
  .smrt-shell-layout-editor__row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--smrt-spacing-4); }
259
259
  .smrt-shell-layout-editor__body { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: var(--smrt-spacing-4); align-items: start; }
@@ -261,7 +261,7 @@ function oncontainermove(move: SortableContainerMove<NavContainer>): void {
261
261
  .smrt-shell-layout-editor__nav-head h3 { margin-block-end: 0; }
262
262
  :global(.smrt-shell-layout-editor__name) { flex: 1 1 8rem; min-inline-size: 0; }
263
263
  .smrt-shell-layout-editor__label { flex: 1 1 auto; min-inline-size: 0; }
264
- .smrt-shell-layout-editor__preview-frame { padding: var(--smrt-spacing-3); border: 1px dashed var(--smrt-color-outline-variant); border-radius: var(--smrt-radius-md); background: var(--smrt-color-surface-container-low, var(--smrt-color-surface)); }
264
+ .smrt-shell-layout-editor__preview-frame { padding: var(--smrt-spacing-3); border: var(--smrt-hairline); border-style: dashed; border-radius: var(--smrt-radius-md); background: var(--smrt-surface-sunken); }
265
265
  /* Label on its own line (never broken mid-word); the select and Reset share the next line. */
266
266
  @media (max-width: 48rem) {
267
267
  .smrt-shell-layout-editor header { flex-direction: column; }
@@ -496,8 +496,8 @@ function oncontainermove(move: SortableContainerMove<NavContainer>): void {
496
496
  .smrt-nav-editor :global(.smrt-sortable) { gap: var(--smrt-spacing-1); }
497
497
  .smrt-nav-editor :global(.smrt-sortable__containers) { gap: var(--smrt-spacing-1); }
498
498
  .smrt-nav-editor :global(.smrt-sortable__container) { padding: 0; border: 0; background: transparent; gap: var(--smrt-spacing-1); }
499
- .smrt-nav-editor :global(.smrt-sortable__item) { padding: 0; border: 0; border-radius: var(--smrt-radius-medium); background: transparent; }
500
- .smrt-nav-editor :global(.smrt-sortable__item:hover) { background: var(--smrt-color-surface-container-high); }
499
+ .smrt-nav-editor :global(.smrt-sortable__item) { padding: 0; border: 0; border-radius: var(--smrt-control-radius); background: transparent; }
500
+ .smrt-nav-editor :global(.smrt-sortable__item:hover) { background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent); }
501
501
  .smrt-nav-editor :global(.smrt-sortable__items) { padding-inline-start: var(--smrt-spacing-3); min-block-size: 0; }
502
502
  .smrt-nav-editor :global(.smrt-sortable__header) { min-block-size: 0; }
503
503
  .smrt-nav-editor :global(.smrt-sortable__empty) { padding-block: 0; }
@@ -505,13 +505,13 @@ function oncontainermove(move: SortableContainerMove<NavContainer>): void {
505
505
 
506
506
  .smrt-nav-editor__top { color: var(--smrt-color-on-surface-variant); font: var(--smrt-typography-label-small-font); text-transform: uppercase; letter-spacing: 0.04em; }
507
507
  .smrt-nav-editor__head { position: relative; flex: 1 1 auto; display: flex; align-items: center; gap: var(--smrt-spacing-1); min-inline-size: 0; }
508
- .smrt-nav-editor__title { flex: 1 1 auto; min-inline-size: 0; padding: var(--smrt-spacing-2) var(--smrt-spacing-3); border: 0; border-radius: var(--smrt-radius-medium); background: transparent; color: var(--smrt-color-on-surface-variant); font-size: var(--smrt-typography-label-large-size); font-weight: var(--smrt-typography-weight-semibold); text-align: start; cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
509
- .smrt-nav-editor__title:hover, .smrt-nav-editor__head[data-toolbar-open] .smrt-nav-editor__title { background: var(--smrt-color-surface-container-high); }
510
- .smrt-nav-editor__title:focus-visible { outline: 2px solid var(--smrt-color-primary); outline-offset: 2px; }
508
+ .smrt-nav-editor__title { flex: 1 1 auto; min-inline-size: 0; padding: var(--smrt-spacing-2) var(--smrt-spacing-3); border: 0; border-radius: var(--smrt-control-radius); background: transparent; color: var(--smrt-color-on-surface-variant); font-size: var(--smrt-typography-label-large-size); font-weight: var(--smrt-typography-weight-semibold); text-align: start; cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
509
+ .smrt-nav-editor__title:hover, .smrt-nav-editor__head[data-toolbar-open] .smrt-nav-editor__title { background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent); }
510
+ .smrt-nav-editor__title:focus-visible { outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color); outline-offset: var(--smrt-focus-ring-offset); }
511
511
  .smrt-nav-editor__title--off { font-style: italic; font-weight: var(--smrt-typography-weight-normal, normal); }
512
512
  .smrt-nav-editor__title--hidden { opacity: 0.55; }
513
513
  .smrt-nav-editor__overlay { display: inline-flex; align-items: center; flex: 0 0 auto; }
514
- .smrt-nav-editor__toolbar { position: absolute; inset-block-start: 100%; inset-inline: 0; z-index: 40; display: flex; flex-wrap: wrap; align-items: center; gap: var(--smrt-spacing-1); padding: var(--smrt-spacing-2); border: 1px solid var(--smrt-color-outline-variant); border-radius: var(--smrt-radius-medium); background: var(--smrt-color-surface-container-high); box-shadow: var(--smrt-elevation-2, 0 4px 12px rgb(0 0 0 / 0.2)); }
514
+ .smrt-nav-editor__toolbar { position: absolute; inset-block-start: 100%; inset-inline: 0; z-index: 40; display: flex; flex-wrap: wrap; align-items: center; gap: var(--smrt-spacing-1); padding: var(--smrt-spacing-2); border: var(--smrt-hairline); border-radius: var(--smrt-radius-medium); background: var(--smrt-glass-surface-strong); -webkit-backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation)); backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation)); box-shadow: var(--smrt-elevation-3), var(--smrt-inset-highlight); }
515
515
  :global(.smrt-nav-editor__name) { flex: 1 1 100%; min-inline-size: 0; }
516
516
  .smrt-nav-editor__row { flex: 1 1 auto; min-inline-size: 0; display: flex; align-items: center; gap: var(--smrt-spacing-2); box-sizing: border-box; min-block-size: var(--smrt-control-target-min); padding: var(--smrt-spacing-2) var(--smrt-spacing-1); color: var(--smrt-color-on-surface); }
517
517
  @media (max-width: 48rem) {
@@ -72,20 +72,20 @@ const name = $derived(label ?? t(M['ui.shell_nav_toggle.navigation']));
72
72
  inline-size: 2.75rem;
73
73
  block-size: 2.75rem;
74
74
  border: 0;
75
- border-radius: var(--smrt-radius-md);
75
+ border-radius: var(--smrt-control-radius);
76
76
  background: transparent;
77
77
  color: var(--smrt-color-on-surface-variant);
78
78
  cursor: pointer;
79
79
  }
80
80
 
81
81
  .smrt-shell-nav-toggle:hover {
82
- background: var(--smrt-color-surface-container-high);
82
+ background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent);
83
83
  color: var(--smrt-color-on-surface);
84
84
  }
85
85
 
86
86
  .smrt-shell-nav-toggle:focus-visible {
87
- outline: 2px solid var(--smrt-color-primary);
88
- outline-offset: 2px;
87
+ outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
88
+ outline-offset: var(--smrt-focus-ring-offset);
89
89
  }
90
90
  }
91
91
  </style>
@@ -249,13 +249,14 @@ function onmove(move: SortableItemMove<SortableItem>): void {
249
249
  @layer smrt.theme {
250
250
  .smrt-section-menu { min-inline-size: 0; }
251
251
  .smrt-section-menu__list { display: grid; gap: var(--smrt-spacing-1); margin: 0; padding: 0; list-style: none; }
252
- .smrt-section-menu__item { position: relative; display: flex; align-items: center; gap: var(--smrt-spacing-3); min-inline-size: 0; padding: var(--smrt-spacing-2) var(--smrt-spacing-3); border: 1px solid var(--smrt-color-outline-variant); border-radius: var(--smrt-radius-medium); background: var(--smrt-color-surface); color: var(--smrt-color-on-surface); }
253
- .smrt-section-menu__item:hover { background: var(--smrt-color-surface-container-high); }
252
+ .smrt-section-menu__item { position: relative; display: flex; align-items: center; gap: var(--smrt-spacing-3); min-inline-size: 0; padding: var(--smrt-spacing-2) var(--smrt-spacing-3); border: var(--smrt-hairline); border-radius: var(--smrt-control-radius); background: var(--smrt-surface-panel); color: var(--smrt-color-on-surface); }
253
+ .smrt-section-menu__item:hover { background: color-mix(in srgb, var(--smrt-surface-panel), currentColor calc(var(--smrt-state-hover) * 100%)); }
254
+ .smrt-section-menu__item:active { background: color-mix(in srgb, var(--smrt-surface-panel), currentColor calc(var(--smrt-state-pressed) * 100%)); }
254
255
  .smrt-section-menu__link { flex: 1 1 auto; display: flex; align-items: center; gap: var(--smrt-spacing-3); min-inline-size: 0; min-block-size: var(--smrt-control-target-min, 2rem); color: inherit; text-decoration: none; }
255
256
  /* The whole row follows the link; actions sit above the stretched target. */
256
257
  .smrt-section-menu__link::after { content: ''; position: absolute; inset: 0; border-radius: inherit; }
257
258
  .smrt-section-menu__link:focus-visible { outline: none; }
258
- .smrt-section-menu__link:focus-visible::after { outline: 2px solid var(--smrt-color-primary); outline-offset: 2px; }
259
+ .smrt-section-menu__link:focus-visible::after { outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color); outline-offset: var(--smrt-focus-ring-offset); }
259
260
  .smrt-section-menu__label { min-inline-size: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: var(--smrt-typography-weight-medium, 500); }
260
261
  .smrt-section-menu__meta { flex: 0 0 auto; color: var(--smrt-color-on-surface-variant); font-size: var(--smrt-typography-label-large-size); }
261
262
  .smrt-section-menu__actions { position: relative; z-index: 1; flex: 0 0 auto; display: inline-flex; align-items: center; gap: var(--smrt-spacing-1); }
@@ -265,12 +266,13 @@ function onmove(move: SortableItemMove<SortableItem>): void {
265
266
  .smrt-section-menu__card-icon :global(.smrt-shell-section-icon) { inline-size: 28px; block-size: 28px; }
266
267
  /* Cards: a responsive grid; the whole card is one stretched link. */
267
268
  .smrt-section-menu__cards, .smrt-section-menu--cards :global(.smrt-sortable__items) { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(16rem, 100%), 1fr)); gap: var(--smrt-spacing-3); margin: 0; padding: 0; list-style: none; }
268
- .smrt-section-menu__card { position: relative; display: flex; flex-direction: column; gap: var(--smrt-spacing-3); min-inline-size: 0; padding: var(--smrt-spacing-4); border: 1px solid var(--smrt-color-outline-variant); border-radius: var(--smrt-radius-large, var(--smrt-radius-medium)); background: var(--smrt-color-surface); color: var(--smrt-color-on-surface); transition: background-color 120ms, border-color 120ms, transform 120ms; }
269
- .smrt-section-menu__card:hover { background: var(--smrt-color-surface-container-high); border-color: var(--smrt-color-outline); transform: translateY(-2px); }
269
+ .smrt-section-menu__card { position: relative; display: flex; flex-direction: column; gap: var(--smrt-spacing-3); min-inline-size: 0; padding: var(--smrt-spacing-4); border: var(--smrt-hairline); border-radius: var(--smrt-radius-large, var(--smrt-radius-medium)); background: var(--smrt-surface-panel); color: var(--smrt-color-on-surface); transition: background-color var(--smrt-duration-short2), border-color var(--smrt-duration-short2), transform var(--smrt-duration-short2); }
270
+ .smrt-section-menu__card:hover { background: color-mix(in srgb, var(--smrt-surface-panel), currentColor calc(var(--smrt-state-hover) * 100%)); border-color: var(--smrt-hairline-strong-color); }
271
+ .smrt-section-menu__card:active { background: color-mix(in srgb, var(--smrt-surface-panel), currentColor calc(var(--smrt-state-pressed) * 100%)); }
270
272
  .smrt-section-menu__card-link { flex: 1 1 auto; display: flex; flex-direction: column; gap: var(--smrt-spacing-2); color: inherit; text-decoration: none; }
271
273
  .smrt-section-menu__card-link::after { content: ''; position: absolute; inset: 0; border-radius: inherit; }
272
274
  .smrt-section-menu__card-link:focus-visible { outline: none; }
273
- .smrt-section-menu__card-link:focus-visible::after { outline: 2px solid var(--smrt-color-primary); outline-offset: 2px; }
275
+ .smrt-section-menu__card-link:focus-visible::after { outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color); outline-offset: var(--smrt-focus-ring-offset); }
274
276
  .smrt-section-menu__card-heading { display: flex; align-items: center; gap: var(--smrt-spacing-2); min-inline-size: 0; }
275
277
  .smrt-section-menu__card-icon { display: inline-grid; place-items: center; flex: 0 0 28px; inline-size: 28px; block-size: 28px; color: var(--smrt-color-primary); }
276
278
  .smrt-section-menu__card-title { font-size: var(--smrt-typography-title-medium-size, 1rem); font-weight: var(--smrt-typography-weight-medium, 500); overflow-wrap: anywhere; }
@@ -285,7 +287,7 @@ function onmove(move: SortableItemMove<SortableItem>): void {
285
287
  .smrt-section-menu :global(.smrt-sortable__container) { padding: 0; border: 0; background: transparent; gap: var(--smrt-spacing-1); }
286
288
  .smrt-section-menu :global(.smrt-sortable__header) { display: none; }
287
289
  .smrt-section-menu :global(.smrt-sortable__items) { gap: var(--smrt-spacing-1); }
288
- .smrt-section-menu :global(.smrt-sortable__item) { border: 1px solid var(--smrt-color-outline-variant); border-radius: var(--smrt-radius-medium); background: var(--smrt-color-surface); }
290
+ .smrt-section-menu :global(.smrt-sortable__item) { border: var(--smrt-hairline); border-radius: var(--smrt-control-radius); background: var(--smrt-surface-panel); }
289
291
  .smrt-section-menu :global(.smrt-sortable__handle) { inline-size: 1.5rem; block-size: 2rem; }
290
292
  .smrt-section-menu__row { flex: 1 1 auto; min-inline-size: 0; display: flex; align-items: center; gap: var(--smrt-spacing-3); padding: var(--smrt-spacing-2) var(--smrt-spacing-1); }
291
293
  .smrt-section-menu__row--muted { opacity: 0.55; }
@@ -22,8 +22,12 @@ interface Props {
22
22
  account?: boolean;
23
23
  /** Where the sign-out control goes; the control is hidden when neither this nor `onSignOut` is given. */
24
24
  signOutHref?: string;
25
- /** Called by the sign-out control instead of following `signOutHref`. */
26
- onSignOut?: () => void;
25
+ /**
26
+ * Called by the sign-out control instead of following `signOutHref`. May
27
+ * return a promise: the control is busy and disabled while it is pending;
28
+ * a rejection shows an inline error and leaves the section as it was.
29
+ */
30
+ onSignOut?: () => unknown;
27
31
  }
28
32
 
29
33
  const {
@@ -52,18 +56,49 @@ const REGION_OF_EDGE: Record<PanelEdge, ShellRegion> = {
52
56
  const regionLabel = (edge: PanelEdge) =>
53
57
  t(SHELL_REGION_MESSAGES[REGION_OF_EDGE[edge]]);
54
58
 
55
- /** The areas this shell offers; hidden ones stay listed when a layout can restore them. */
59
+ /**
60
+ * The areas this shell offers. A region the user hid stays listed so Show can
61
+ * restore it; a region that is shown but not rendered (nothing to put in it, or
62
+ * not presented at this width) is left out because its row would do nothing.
63
+ */
56
64
  const rows = $derived(
57
65
  layout
58
66
  ? layout.panels
59
- .filter((panel) => panel.available)
67
+ .filter(
68
+ (panel) =>
69
+ panel.available &&
70
+ (!panel.visible || shell.regionsRendered[panel.edge]),
71
+ )
60
72
  .map((panel) => ({ edge: panel.edge, visible: panel.visible }))
61
73
  : edges
62
- .filter((edge) => shell.panels[edge] !== 'hidden')
74
+ .filter(
75
+ (edge) =>
76
+ shell.panels[edge] !== 'hidden' && shell.regionsRendered[edge],
77
+ )
63
78
  .map((edge) => ({ edge, visible: true })),
64
79
  );
65
- const visibleCount = $derived(rows.filter((row) => row.visible).length);
80
+ /** Counts every shown region, rendered or not, so the last real one can't be hidden. */
81
+ const visibleCount = $derived(
82
+ layout
83
+ ? layout.panels.filter((panel) => panel.available && panel.visible).length
84
+ : rows.length,
85
+ );
66
86
  const shortcutRows = $derived(rows.filter((row) => row.visible));
87
+ let signingOut = $state(false);
88
+ let signOutFailed = $state(false);
89
+
90
+ async function runSignOut() {
91
+ if (signingOut || !onSignOut) return;
92
+ signingOut = true;
93
+ signOutFailed = false;
94
+ try {
95
+ await onSignOut();
96
+ } catch {
97
+ signOutFailed = true;
98
+ } finally {
99
+ signingOut = false;
100
+ }
101
+ }
67
102
  const canSignOut = $derived(Boolean(signOutHref || onSignOut));
68
103
  const hotkeysEnabled = $derived(shell.settings.hotkeysEnabled !== false);
69
104
 
@@ -118,9 +153,19 @@ function conflictFor(edge: PanelEdge): string | null {
118
153
  {/if}
119
154
  {#if canSignOut}
120
155
  {#if onSignOut}
121
- <Button variant="secondary" size="sm" onclick={onSignOut}>
156
+ <Button
157
+ variant="secondary"
158
+ size="sm"
159
+ loading={signingOut}
160
+ onclick={runSignOut}
161
+ >
122
162
  {t(M['ui.shell_settings.sign_out'])}
123
163
  </Button>
164
+ {#if signOutFailed}
165
+ <p role="alert" data-smrt-part="error">
166
+ {t(M['ui.shell_settings.sign_out_failed'])}
167
+ </p>
168
+ {/if}
124
169
  {:else}
125
170
  <Button variant="secondary" size="sm" href={signOutHref}>
126
171
  {t(M['ui.shell_settings.sign_out'])}
@@ -5,8 +5,12 @@ interface Props {
5
5
  account?: boolean;
6
6
  /** Where the sign-out control goes; the control is hidden when neither this nor `onSignOut` is given. */
7
7
  signOutHref?: string;
8
- /** Called by the sign-out control instead of following `signOutHref`. */
9
- onSignOut?: () => void;
8
+ /**
9
+ * Called by the sign-out control instead of following `signOutHref`. May
10
+ * return a promise: the control is busy and disabled while it is pending;
11
+ * a rejection shows an inline error and leaves the section as it was.
12
+ */
13
+ onSignOut?: () => unknown;
10
14
  }
11
15
  declare const ShellSettingsPanel: import("svelte").Component<Props, {}, "">;
12
16
  type ShellSettingsPanel = ReturnType<typeof ShellSettingsPanel>;
@@ -1 +1 @@
1
- {"version":3,"file":"ShellSettingsPanel.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/ShellSettingsPanel.svelte.ts"],"names":[],"mappings":"AAoBA,UAAU,KAAK;IACb,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yGAAyG;IACzG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AA+MD,QAAA,MAAM,kBAAkB,2CAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"ShellSettingsPanel.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/ShellSettingsPanel.svelte.ts"],"names":[],"mappings":"AAoBA,UAAU,KAAK;IACb,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yGAAyG;IACzG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;CAC3B;AAmPD,QAAA,MAAM,kBAAkB,2CAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
@@ -315,8 +315,8 @@ function fallbackIcon(label: string): string {
315
315
  color: var(--smrt-color-on-surface-variant);
316
316
  }
317
317
  .smrt-tenant-nav a.smrt-tenant-nav__action:focus-visible {
318
- outline: 2px solid var(--smrt-color-primary);
319
- outline-offset: 2px;
318
+ outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
319
+ outline-offset: var(--smrt-focus-ring-offset);
320
320
  }
321
321
 
322
322
  .smrt-tenant-nav__heading {
@@ -326,12 +326,12 @@ function fallbackIcon(label: string): string {
326
326
  color: var(--smrt-color-on-surface-variant);
327
327
  font-size: var(--smrt-typography-label-large-size);
328
328
  font-weight: var(--smrt-typography-weight-semibold);
329
- border-radius: var(--smrt-radius-medium);
329
+ border-radius: var(--smrt-control-radius);
330
330
  cursor: pointer;
331
331
  }
332
332
  .smrt-tenant-nav__heading:focus-visible {
333
- outline: 2px solid var(--smrt-color-primary);
334
- outline-offset: 2px;
333
+ outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
334
+ outline-offset: var(--smrt-focus-ring-offset);
335
335
  }
336
336
  .smrt-tenant-nav__group-items { margin-block-start: var(--smrt-spacing-1); }
337
337
  .smrt-tenant-nav__subnav {
@@ -367,7 +367,7 @@ function fallbackIcon(label: string): string {
367
367
  gap: var(--smrt-spacing-2);
368
368
  min-inline-size: 0;
369
369
  padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
370
- border-radius: var(--smrt-radius-medium);
370
+ border-radius: var(--smrt-control-radius);
371
371
  color: var(--smrt-color-on-surface);
372
372
  text-decoration: none;
373
373
  }
@@ -385,8 +385,32 @@ function fallbackIcon(label: string): string {
385
385
  padding: 0;
386
386
  }
387
387
 
388
- .smrt-tenant-nav a:hover {
389
- background: var(--smrt-color-surface-container-high);
388
+ /* One state layer for every row: a currentColor veil driven by the
389
+ theme's hover / pressed tokens. The selected container fill and the
390
+ start indicator below sit under it, so hover still reads on a selected
391
+ row. */
392
+ .smrt-tenant-nav a::after,
393
+ .smrt-tenant-nav__heading::after {
394
+ content: '';
395
+ position: absolute;
396
+ inset: 0;
397
+ border-radius: inherit;
398
+ background: currentColor;
399
+ opacity: 0;
400
+ pointer-events: none;
401
+ }
402
+ .smrt-tenant-nav__heading { position: relative; }
403
+ .smrt-tenant-nav a:hover::after,
404
+ .smrt-tenant-nav__heading:hover::after {
405
+ opacity: var(--smrt-state-hover);
406
+ }
407
+ .smrt-tenant-nav a:active::after,
408
+ .smrt-tenant-nav__heading:active::after {
409
+ opacity: var(--smrt-state-pressed);
410
+ }
411
+ .smrt-tenant-nav a[aria-disabled='true'] {
412
+ opacity: var(--smrt-state-disabled);
413
+ pointer-events: none;
390
414
  }
391
415
  /* Selected: container fill plus a start indicator bar, not just weight. */
392
416
  .smrt-tenant-nav a[aria-current='page'],
@@ -453,7 +477,7 @@ function fallbackIcon(label: string): string {
453
477
  position: absolute;
454
478
  inset-block-start: 0.125rem;
455
479
  inset-inline-end: 0.125rem;
456
- box-shadow: 0 0 0 2px var(--smrt-color-surface);
480
+ box-shadow: 0 0 0 var(--smrt-focus-ring-width) var(--smrt-surface-panel);
457
481
  }
458
482
 
459
483
  .smrt-tenant-nav__sr-only {
@@ -48,8 +48,13 @@ export interface Props {
48
48
  signOutHref?: string;
49
49
  /** Called when the user selects a different tenant. */
50
50
  onTenantSelect?: (tenantId: string) => void;
51
- /** Called when the user clicks sign out. */
52
- onSignOut?: () => void;
51
+ /**
52
+ * Called when the user clicks sign out. May return a promise: the item shows
53
+ * a busy state (`aria-busy`, disabled against double submit) while it is
54
+ * pending, the menu closes on success, and stays open with an inline error
55
+ * when it rejects.
56
+ */
57
+ onSignOut?: () => unknown;
53
58
  }
54
59
 
55
60
  let {
@@ -133,6 +138,8 @@ const entries = $derived.by(() => {
133
138
  });
134
139
 
135
140
  let open = $state(false);
141
+ let signingOut = $state(false);
142
+ let signOutFailed = $state(false);
136
143
  let wrapEl = $state<HTMLElement | null>(null);
137
144
  let triggerEl = $state<HTMLButtonElement | null>(null);
138
145
  let itemEls = $state<Array<HTMLElement | null>>([]);
@@ -152,10 +159,39 @@ function closeMenu(refocus = true) {
152
159
  if (refocus) triggerEl?.focus();
153
160
  }
154
161
 
162
+ async function runSignOut() {
163
+ if (signingOut || !onSignOut) return;
164
+ signingOut = true;
165
+ signOutFailed = false;
166
+ try {
167
+ // A synchronous callback closes the menu in the same turn.
168
+ const pending = onSignOut();
169
+ // Any return value is accepted (a plain `() => void` callback may return
170
+ // something); only a thenable is awaited.
171
+ if (
172
+ typeof pending === 'object' &&
173
+ pending !== null &&
174
+ typeof (pending as PromiseLike<unknown>).then === 'function'
175
+ ) {
176
+ await pending;
177
+ }
178
+ } catch {
179
+ signOutFailed = true;
180
+ signingOut = false;
181
+ return;
182
+ }
183
+ signingOut = false;
184
+ closeMenu();
185
+ }
186
+
155
187
  function select(entry: Entry) {
156
188
  if (entry.disabled) return;
157
- if (entry.id === SIGN_OUT_ID) onSignOut?.();
158
- else if (entry.id.startsWith(TENANT_PREFIX)) {
189
+ if (entry.id === SIGN_OUT_ID && onSignOut) {
190
+ // The callback owns the menu: it closes on success only.
191
+ void runSignOut();
192
+ return;
193
+ }
194
+ if (entry.id.startsWith(TENANT_PREFIX)) {
159
195
  onTenantSelect?.(entry.id.slice(TENANT_PREFIX.length));
160
196
  }
161
197
  // A link navigates on its own: leave focus to the destination.
@@ -278,12 +314,18 @@ $effect(() => {
278
314
  type="button"
279
315
  role="menuitem"
280
316
  class="smrt-workspace-account-menu__item"
281
- disabled={entry.disabled}
317
+ disabled={entry.disabled || (entry.id === SIGN_OUT_ID && signingOut)}
318
+ aria-busy={entry.id === SIGN_OUT_ID && signingOut ? 'true' : undefined}
282
319
  tabindex="-1"
283
320
  onclick={() => select(entry)}
284
321
  >{entry.label}</button>
285
322
  {/if}
286
323
  {/each}
324
+ {#if signOutFailed}
325
+ <p class="smrt-workspace-account-menu__error" role="alert" data-smrt-part="error">
326
+ {t(M['ui.shell_settings.sign_out_failed'])}
327
+ </p>
328
+ {/if}
287
329
  </div>
288
330
  </div>
289
331
  {/if}
@@ -317,23 +359,40 @@ $effect(() => {
317
359
  min-width: 0;
318
360
  min-height: max(2.75rem, var(--smrt-control-target-min, 0px));
319
361
  padding: var(--smrt-spacing-2);
320
- border: 1px solid var(--smrt-color-outline);
321
- border-radius: var(--smrt-radius-large);
322
- background: var(--smrt-color-surface);
362
+ position: relative;
363
+ border: var(--smrt-hairline);
364
+ border-radius: var(--smrt-control-radius);
365
+ background: var(--smrt-surface-control);
323
366
  color: var(--smrt-color-on-surface);
324
367
  font: inherit;
325
368
  text-align: start;
326
369
  cursor: pointer;
327
370
  }
328
- .smrt-workspace-account-menu__trigger:hover:not(:disabled),
329
- .smrt-workspace-account-menu__trigger[aria-expanded='true'] {
330
- background: var(--smrt-color-surface-container-high);
371
+ /* State layer: a currentColor veil over the trigger. */
372
+ .smrt-workspace-account-menu__trigger::after {
373
+ content: '';
374
+ position: absolute;
375
+ inset: 0;
376
+ border-radius: inherit;
377
+ background: currentColor;
378
+ opacity: 0;
379
+ pointer-events: none;
380
+ }
381
+ .smrt-workspace-account-menu__trigger:hover:not(:disabled)::after {
382
+ opacity: var(--smrt-state-hover);
383
+ }
384
+ .smrt-workspace-account-menu__trigger[aria-expanded='true']::after {
385
+ opacity: var(--smrt-state-selected);
386
+ }
387
+ .smrt-workspace-account-menu__trigger:active:not(:disabled)::after {
388
+ opacity: var(--smrt-state-pressed);
331
389
  }
332
390
  .smrt-workspace-account-menu__trigger:focus-visible {
333
- outline: var(--smrt-spacing-0_5) solid var(--smrt-color-primary);
334
- outline-offset: var(--smrt-spacing-0_5);
391
+ outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
392
+ outline-offset: var(--smrt-focus-ring-offset);
335
393
  }
336
394
  .smrt-workspace-account-menu__trigger:disabled {
395
+ opacity: var(--smrt-state-disabled);
337
396
  cursor: default;
338
397
  }
339
398
 
@@ -350,11 +409,6 @@ $effect(() => {
350
409
  border-radius: var(--smrt-radius-full);
351
410
  background: transparent;
352
411
  }
353
- .smrt-workspace-account-menu[data-compact] .smrt-workspace-account-menu__trigger:hover:not(:disabled),
354
- .smrt-workspace-account-menu[data-compact] .smrt-workspace-account-menu__trigger[aria-expanded='true'] {
355
- background: var(--smrt-color-surface-container-high);
356
- }
357
-
358
412
  .smrt-workspace-account-menu[data-compact] .smrt-workspace-account-menu__identity,
359
413
  .smrt-workspace-account-menu[data-compact] .smrt-workspace-account-menu__indicator {
360
414
  display: none;
@@ -369,10 +423,10 @@ $effect(() => {
369
423
  overflow-y: auto;
370
424
  margin: var(--smrt-spacing-1) 0;
371
425
  padding: var(--smrt-spacing-1);
372
- border: 1px solid var(--smrt-color-outline-variant);
426
+ border: var(--smrt-hairline);
373
427
  border-radius: var(--smrt-radius-medium);
374
- background: var(--smrt-color-surface-container);
375
- box-shadow: var(--smrt-elevation-2);
428
+ background: var(--smrt-surface-raised);
429
+ box-shadow: var(--smrt-elevation-3), var(--smrt-inset-highlight);
376
430
  }
377
431
  .smrt-workspace-account-menu__popover--bottom-start { inset-block-start: 100%; inset-inline-start: 0; }
378
432
  .smrt-workspace-account-menu__popover--bottom-end { inset-block-start: 100%; inset-inline-end: 0; }
@@ -388,7 +442,7 @@ $effect(() => {
388
442
  display: grid;
389
443
  gap: var(--smrt-spacing-1);
390
444
  padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
391
- border-block-end: 1px solid var(--smrt-color-outline-variant);
445
+ border-block-end: var(--smrt-hairline);
392
446
  margin-block-end: var(--smrt-spacing-1);
393
447
  }
394
448
  .smrt-workspace-account-menu__name {
@@ -416,7 +470,7 @@ $effect(() => {
416
470
  min-block-size: max(2.75rem, var(--smrt-control-target-min, 0px));
417
471
  padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
418
472
  border: none;
419
- border-radius: var(--smrt-radius-small);
473
+ border-radius: var(--smrt-control-radius-small);
420
474
  background: none;
421
475
  color: var(--smrt-color-on-surface);
422
476
  font: inherit;
@@ -426,17 +480,27 @@ $effect(() => {
426
480
  cursor: pointer;
427
481
  }
428
482
  .smrt-workspace-account-menu__item:hover:not(:disabled) {
429
- background: var(--smrt-color-surface-container-high);
483
+ background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent);
484
+ }
485
+ .smrt-workspace-account-menu__item:active:not(:disabled) {
486
+ background: color-mix(in srgb, currentColor calc(var(--smrt-state-pressed) * 100%), transparent);
430
487
  }
431
488
  .smrt-workspace-account-menu__item:focus-visible {
432
- outline: var(--smrt-spacing-0_5) solid var(--smrt-color-primary);
433
- outline-offset: calc(-1 * var(--smrt-spacing-0_5));
489
+ outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
490
+ outline-offset: calc(-1 * var(--smrt-focus-ring-width));
434
491
  }
435
492
  .smrt-workspace-account-menu__item:disabled {
436
- color: var(--smrt-color-on-surface-variant);
493
+ opacity: var(--smrt-state-disabled);
437
494
  cursor: default;
438
495
  }
439
496
 
497
+ .smrt-workspace-account-menu__error {
498
+ margin: 0;
499
+ padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
500
+ color: var(--smrt-color-error);
501
+ font-size: var(--smrt-typography-label-small-size);
502
+ }
503
+
440
504
  .smrt-workspace-account-menu__identity {
441
505
  display: grid;
442
506
  gap: var(--smrt-spacing-1);
@@ -38,8 +38,13 @@ export interface Props {
38
38
  signOutHref?: string;
39
39
  /** Called when the user selects a different tenant. */
40
40
  onTenantSelect?: (tenantId: string) => void;
41
- /** Called when the user clicks sign out. */
42
- onSignOut?: () => void;
41
+ /**
42
+ * Called when the user clicks sign out. May return a promise: the item shows
43
+ * a busy state (`aria-busy`, disabled against double submit) while it is
44
+ * pending, the menu closes on success, and stays open with an inline error
45
+ * when it rejects.
46
+ */
47
+ onSignOut?: () => unknown;
43
48
  }
44
49
  declare const WorkspaceAccountMenu: import("svelte").Component<Props, {}, "">;
45
50
  type WorkspaceAccountMenu = ReturnType<typeof WorkspaceAccountMenu>;
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceAccountMenu.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/WorkspaceAccountMenu.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAKhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGzD,MAAM,WAAW,KAAK;IACpB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;IAClC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,OAAO,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACnC,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,iBAAiB,GAAG,YAAY,CAAC;IAC7C,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AA8ND,QAAA,MAAM,oBAAoB,2CAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"WorkspaceAccountMenu.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/WorkspaceAccountMenu.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAKhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGzD,MAAM,WAAW,KAAK;IACpB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;IAClC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,OAAO,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACnC,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,iBAAiB,GAAG,YAAY,CAAC;IAC7C,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;CAC3B;AAkQD,QAAA,MAAM,oBAAoB,2CAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
@@ -176,7 +176,7 @@ export interface PhoneBottomBarItem {
176
176
  label: string;
177
177
  icon: ShellIcon;
178
178
  href?: string;
179
- onclick?: () => void;
179
+ onclick?: (event: MouseEvent) => void;
180
180
  active?: boolean;
181
181
  /** Count badge (hidden at 0). */
182
182
  badge?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"mobile-shell.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/mobile-shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mobile-shell.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/mobile-shell.ts"],"names":[],"mappings":"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"}
@@ -66,6 +66,15 @@ export declare class ShellState {
66
66
  * Settings UI shows the shortcuts section only while it is true.
67
67
  */
68
68
  hotkeysAvailable: boolean;
69
+ /**
70
+ * Whether each edge's region is actually rendered right now (a header,
71
+ * footer or sidebar with nothing to show is skipped, and a phone may hide an
72
+ * edge). Read-only for consumers: `AdminShell` keeps it current from the same
73
+ * logic that collapses empty bands and edges. Not the same as the user's
74
+ * visibility choice (`panels[edge] !== 'hidden'`). Defaults to `true` until
75
+ * an `AdminShell` reports.
76
+ */
77
+ regionsRendered: Record<PanelEdge, boolean>;
69
78
  private activityListeners;
70
79
  constructor(options?: ShellStateOptions);
71
80
  hydrate(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"state.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/state.svelte.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/state.svelte.ts"],"names":[],"mappings":"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"}