@happyvertical/smrt-svelte 0.55.17 → 0.55.18
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/agents/workspace.md +10 -0
- package/dist/components/app/AppShell.svelte +6 -6
- package/dist/components/app/DockToggles.svelte +26 -10
- package/dist/components/workspace/admin-shell/ActivityToasts.svelte +5 -3
- package/dist/components/workspace/admin-shell/AdminShell.svelte +151 -65
- package/dist/components/workspace/admin-shell/PhoneBottomBar.svelte +37 -6
- package/dist/components/workspace/admin-shell/PhoneTopBar.svelte +11 -5
- package/dist/components/workspace/admin-shell/ShellIconButton.svelte +7 -6
- package/dist/components/workspace/admin-shell/ShellLayoutEditor.svelte +2 -2
- package/dist/components/workspace/admin-shell/ShellNavEditor.svelte +6 -6
- package/dist/components/workspace/admin-shell/ShellNavToggle.svelte +4 -4
- package/dist/components/workspace/admin-shell/ShellSectionMenu.svelte +9 -7
- package/dist/components/workspace/admin-shell/TenantNav.svelte +33 -9
- package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte +37 -22
- package/package.json +14 -14
package/agents/workspace.md
CHANGED
|
@@ -622,3 +622,13 @@ lives beside, not inside, `./workspace` so the AdminShell barrel stays free of
|
|
|
622
622
|
form is a plain `method="POST"`; pass `enhance` from `$app/forms` to enhance
|
|
623
623
|
it. The token is a hidden field only and is never stored, logged or shown.
|
|
624
624
|
Single-use, loopback-only enforcement stays server-side.
|
|
625
|
+
|
|
626
|
+
## Theme (premium baseline)
|
|
627
|
+
|
|
628
|
+
The shell only consumes theme tokens; CSS and tokens changed, DOM and behaviour did not.
|
|
629
|
+
|
|
630
|
+
- Surface ladder: main and phone top bar on `--smrt-surface-ground`; header, footer and top/bottom bands, corners and the left sidebar on `--smrt-surface-panel`; the dock (right edge), drawers, phone sheet and phone drawers, popovers, toasts and the shortcuts dialog on raised glass (`--smrt-glass-surface-strong`, `--smrt-elevation-3`, drawers and sheet `--smrt-elevation-4`, plus `--smrt-inset-highlight`). Edit-mode strips use `--smrt-surface-sunken`.
|
|
631
|
+
- Region edges are `--smrt-hairline`; no solid outline-variant borders remain in the shell. Edit-mode drop zones and strips use the hairline with `border-style: dashed` and state tokens for fill. The resize separator keeps its own primary affordance.
|
|
632
|
+
- Glass: the header, phone top bar, phone tab bar, dock, drawers, sheet and popovers set `backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation))` over `--smrt-glass-surface` (`-strong` for raised regions). Outside the Glass preset the tokens are opaque with blur 0. `backdrop-filter` makes the element a containing block for fixed descendants; the e2e suite covers the account menu and the floating layout toggle.
|
|
633
|
+
- State layers: rows, tabs, rail buttons, toggles and the account trigger use one `::after` veil (`background: currentColor`, opacity from `--smrt-state-hover` / `-pressed` / `-selected`); transparent icon buttons use the equivalent `color-mix`. The selected nav row keeps its container fill and start indicator under the veil. Disabled uses `--smrt-state-disabled`. Focus rings come from `--smrt-focus-ring-*`; control radius and heights from `--smrt-control-*`.
|
|
634
|
+
- E2E fixture: `ShellFixture` accepts `?theme=glass|material|studio|smrt` and `?scheme=dark` (all presets are imported) for per-preset screenshots.
|
|
@@ -1049,26 +1049,26 @@ const EDGE_OF_REGION: Record<ShellRegion, PanelEdge> = {
|
|
|
1049
1049
|
color: var(--smrt-color-primary);
|
|
1050
1050
|
}
|
|
1051
1051
|
.smrt-layout-toggle { display: inline-flex; align-items: center; gap: var(--smrt-spacing-1); }
|
|
1052
|
-
.smrt-layout-toggle--floating { position: fixed; z-index: 45; inset-block-start: max(var(--smrt-spacing-3), env(safe-area-inset-top)); inset-inline-end: max(var(--smrt-spacing-3), env(safe-area-inset-right)); border-radius: var(--smrt-radius-full); background: var(--smrt-
|
|
1052
|
+
.smrt-layout-toggle--floating { position: fixed; z-index: 45; inset-block-start: max(var(--smrt-spacing-3), env(safe-area-inset-top)); inset-inline-end: max(var(--smrt-spacing-3), env(safe-area-inset-right)); border: var(--smrt-hairline); border-radius: var(--smrt-radius-full); background: var(--smrt-surface-raised); box-shadow: var(--smrt-elevation-3), var(--smrt-inset-highlight); }
|
|
1053
1053
|
.smrt-layout-toggle--floating :global(.smrt-shell-icon-button) { border-radius: var(--smrt-radius-full); }
|
|
1054
1054
|
.smrt-layout-toggle :global(.smrt-shell-icon-button[aria-pressed='true']) { background: var(--smrt-color-primary-container); color: var(--smrt-color-on-primary-container); }
|
|
1055
1055
|
.smrt-app-shell-color-scheme { display: inline-flex; align-items: center; }
|
|
1056
1056
|
.smrt-app-shell-color-scheme :global(.smrt-color-scheme-toggle__switch) { min-block-size: var(--smrt-control-target-min); }
|
|
1057
1057
|
.smrt-app-shell-palette { display: inline-flex; min-inline-size: 0; }
|
|
1058
|
-
.smrt-app-shell-palette[data-search] :global(.smrt-command-palette-trigger) { inline-size: min(28rem, 40vw); justify-content: flex-start; border:
|
|
1058
|
+
.smrt-app-shell-palette[data-search] :global(.smrt-command-palette-trigger) { inline-size: min(28rem, 40vw); justify-content: flex-start; border: var(--smrt-hairline-strong); border-radius: var(--smrt-radius-full); background: var(--smrt-surface-control); color: var(--smrt-color-on-surface-variant); }
|
|
1059
1059
|
.smrt-app-shell-palette[data-search] :global(.smrt-command-palette-trigger__hint) { margin-inline-start: auto; }
|
|
1060
1060
|
.smrt-layout-live { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
|
|
1061
1061
|
.smrt-edit-zone__label { flex: 0 0 auto; color: var(--smrt-color-on-surface-variant); font: var(--smrt-typography-label-small-font); white-space: nowrap; }
|
|
1062
|
-
.smrt-edit-item { display: inline-flex; align-items: center; min-inline-size: 0; border:
|
|
1063
|
-
.smrt-edit-item--dragging { opacity:
|
|
1062
|
+
.smrt-edit-item { display: inline-flex; align-items: center; min-inline-size: 0; border: var(--smrt-hairline); border-radius: var(--smrt-control-radius); background: var(--smrt-surface-raised); }
|
|
1063
|
+
.smrt-edit-item--dragging { opacity: var(--smrt-state-disabled); }
|
|
1064
1064
|
@media (prefers-reduced-motion: no-preference) {
|
|
1065
1065
|
.smrt-edit-item { animation: smrt-edit-item-in var(--smrt-duration-short2) var(--smrt-easing-standard) backwards; }
|
|
1066
1066
|
}
|
|
1067
1067
|
@keyframes smrt-edit-item-in { from { opacity: 0; transform: scale(0.96); } }
|
|
1068
1068
|
.smrt-edit-item__body { display: inline-flex; align-items: center; min-inline-size: 0; pointer-events: none; }
|
|
1069
1069
|
.smrt-edit-item__grip { display: inline-grid; place-items: center; flex: 0 0 auto; inline-size: 1.5rem; block-size: 2rem; padding: 0; border: 0; border-radius: var(--smrt-radius-sm); background: transparent; color: var(--smrt-color-on-surface-variant); cursor: grab; touch-action: none; }
|
|
1070
|
-
.smrt-edit-item__grip:hover { background: var(--smrt-
|
|
1071
|
-
.smrt-edit-item__grip:focus-visible { outline:
|
|
1070
|
+
.smrt-edit-item__grip:hover { background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent); }
|
|
1071
|
+
.smrt-edit-item__grip:focus-visible { outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color); outline-offset: var(--smrt-focus-ring-offset); }
|
|
1072
1072
|
.smrt-edit-item__grip[aria-pressed='true'] { background: var(--smrt-color-primary-container); color: var(--smrt-color-on-primary-container); }
|
|
1073
1073
|
}
|
|
1074
1074
|
</style>
|
|
@@ -89,11 +89,12 @@ function press(event: MouseEvent, toggle: DockToggle): void {
|
|
|
89
89
|
.smrt-dock-toggles__button {
|
|
90
90
|
display: inline-grid;
|
|
91
91
|
place-items: center;
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
position: relative;
|
|
93
|
+
inline-size: var(--smrt-control-height-small);
|
|
94
|
+
block-size: var(--smrt-control-height-small);
|
|
94
95
|
padding: 0;
|
|
95
96
|
border: 1px solid transparent;
|
|
96
|
-
border-radius: var(--smrt-radius
|
|
97
|
+
border-radius: var(--smrt-control-radius);
|
|
97
98
|
background: transparent;
|
|
98
99
|
color: var(--smrt-color-on-surface);
|
|
99
100
|
cursor: pointer;
|
|
@@ -106,22 +107,37 @@ function press(event: MouseEvent, toggle: DockToggle): void {
|
|
|
106
107
|
}
|
|
107
108
|
}
|
|
108
109
|
|
|
109
|
-
.
|
|
110
|
-
|
|
110
|
+
/* State layer over the button; the active container fill sits under it. */
|
|
111
|
+
.smrt-dock-toggles__button::after {
|
|
112
|
+
content: '';
|
|
113
|
+
position: absolute;
|
|
114
|
+
inset: 0;
|
|
115
|
+
border-radius: inherit;
|
|
116
|
+
background: currentColor;
|
|
117
|
+
opacity: 0;
|
|
118
|
+
pointer-events: none;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.smrt-dock-toggles__button:hover::after {
|
|
122
|
+
opacity: var(--smrt-state-hover);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.smrt-dock-toggles__button:active::after {
|
|
126
|
+
opacity: var(--smrt-state-pressed);
|
|
111
127
|
}
|
|
112
128
|
|
|
113
129
|
.smrt-dock-toggles__button:focus-visible {
|
|
114
|
-
outline:
|
|
115
|
-
outline-offset:
|
|
130
|
+
outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
|
|
131
|
+
outline-offset: var(--smrt-focus-ring-offset);
|
|
116
132
|
}
|
|
117
133
|
|
|
118
134
|
.smrt-dock-toggles__button.active {
|
|
119
|
-
background: var(--smrt-color-primary-container
|
|
120
|
-
color: var(--smrt-color-on-primary-container
|
|
135
|
+
background: var(--smrt-color-primary-container);
|
|
136
|
+
color: var(--smrt-color-on-primary-container);
|
|
121
137
|
}
|
|
122
138
|
|
|
123
139
|
.smrt-dock-toggles__button[aria-disabled='true'] {
|
|
124
|
-
opacity:
|
|
140
|
+
opacity: var(--smrt-state-disabled);
|
|
125
141
|
cursor: default;
|
|
126
142
|
}
|
|
127
143
|
}
|
|
@@ -98,12 +98,14 @@ onDestroy(() => {
|
|
|
98
98
|
align-items: center;
|
|
99
99
|
justify-content: space-between;
|
|
100
100
|
gap: var(--smrt-spacing-3);
|
|
101
|
-
border:
|
|
101
|
+
border: var(--smrt-hairline);
|
|
102
102
|
border-radius: var(--smrt-radius-medium);
|
|
103
|
-
background: var(--smrt-
|
|
103
|
+
background: var(--smrt-glass-surface-strong);
|
|
104
|
+
-webkit-backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
105
|
+
backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
104
106
|
color: var(--smrt-color-on-surface);
|
|
105
107
|
padding: var(--smrt-spacing-3);
|
|
106
|
-
box-shadow: var(--smrt-elevation-
|
|
108
|
+
box-shadow: var(--smrt-elevation-3), var(--smrt-inset-highlight);
|
|
107
109
|
}
|
|
108
110
|
|
|
109
111
|
.smrt-activity-toast div {
|
|
@@ -1735,7 +1735,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1735
1735
|
block-size: 100svh;
|
|
1736
1736
|
/* Themeable: an app sets --smrt-admin-shell-background on the shell or an
|
|
1737
1737
|
ancestor (a tinted page behind cards, for instance). */
|
|
1738
|
-
background: var(--smrt-admin-shell-background, var(--smrt-
|
|
1738
|
+
background: var(--smrt-admin-shell-background, var(--smrt-surface-ground));
|
|
1739
1739
|
color: var(--smrt-color-on-surface);
|
|
1740
1740
|
/* `clip`, not `hidden`: a hidden box is still programmatically scrollable
|
|
1741
1741
|
(focus / scrollIntoView on a grid-track child shifts the whole shell
|
|
@@ -1745,8 +1745,8 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1745
1745
|
overflow: clip;
|
|
1746
1746
|
/* Themed, thin scrollbars for every scroller inside the shell. Override
|
|
1747
1747
|
--smrt-admin-shell-scrollbar-track / -thumb / -thumb-hover to retint. */
|
|
1748
|
-
scrollbar-color: var(--smrt-admin-shell-scrollbar-thumb,
|
|
1749
|
-
var(--smrt-admin-shell-scrollbar-track,
|
|
1748
|
+
scrollbar-color: var(--smrt-admin-shell-scrollbar-thumb, var(--smrt-scrollbar-thumb))
|
|
1749
|
+
var(--smrt-admin-shell-scrollbar-track, var(--smrt-scrollbar-track));
|
|
1750
1750
|
}
|
|
1751
1751
|
|
|
1752
1752
|
.smrt-admin-shell :global(*) {
|
|
@@ -1759,11 +1759,11 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1759
1759
|
}
|
|
1760
1760
|
|
|
1761
1761
|
.smrt-admin-shell :global(*)::-webkit-scrollbar-track {
|
|
1762
|
-
background: var(--smrt-admin-shell-scrollbar-track,
|
|
1762
|
+
background: var(--smrt-admin-shell-scrollbar-track, var(--smrt-scrollbar-track));
|
|
1763
1763
|
}
|
|
1764
1764
|
|
|
1765
1765
|
.smrt-admin-shell :global(*)::-webkit-scrollbar-thumb {
|
|
1766
|
-
background-color: var(--smrt-admin-shell-scrollbar-thumb,
|
|
1766
|
+
background-color: var(--smrt-admin-shell-scrollbar-thumb, var(--smrt-scrollbar-thumb));
|
|
1767
1767
|
background-clip: padding-box;
|
|
1768
1768
|
border: 2px solid transparent;
|
|
1769
1769
|
border-radius: var(--smrt-radius-full);
|
|
@@ -1780,9 +1780,9 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1780
1780
|
.smrt-admin-shell__edge {
|
|
1781
1781
|
min-width: 0;
|
|
1782
1782
|
min-height: 0;
|
|
1783
|
-
background: var(--smrt-
|
|
1783
|
+
background: var(--smrt-surface-panel);
|
|
1784
1784
|
color: var(--smrt-color-on-surface);
|
|
1785
|
-
border-color: var(--smrt-color
|
|
1785
|
+
border-color: var(--smrt-hairline-color);
|
|
1786
1786
|
}
|
|
1787
1787
|
|
|
1788
1788
|
.smrt-admin-shell__header {
|
|
@@ -1800,8 +1800,12 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1800
1800
|
to drop below it. `clip` (unlike `hidden`) allows a visible block axis. */
|
|
1801
1801
|
overflow-x: clip;
|
|
1802
1802
|
overflow-y: visible;
|
|
1803
|
-
border-block-end:
|
|
1804
|
-
|
|
1803
|
+
border-block-end: var(--smrt-hairline);
|
|
1804
|
+
/* Glass chrome: translucent with blur in the Glass preset, the opaque
|
|
1805
|
+
panel surface (blur 0) everywhere else. */
|
|
1806
|
+
background: var(--smrt-glass-surface);
|
|
1807
|
+
-webkit-backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
1808
|
+
backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
1805
1809
|
color: var(--smrt-color-on-surface);
|
|
1806
1810
|
z-index: 30;
|
|
1807
1811
|
}
|
|
@@ -1815,7 +1819,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1815
1819
|
var(--smrt-admin-shell-left-collapsed) minmax(0, 1fr)
|
|
1816
1820
|
var(--smrt-admin-shell-right-collapsed)
|
|
1817
1821
|
);
|
|
1818
|
-
border-block-end:
|
|
1822
|
+
border-block-end: var(--smrt-hairline);
|
|
1819
1823
|
z-index: 30;
|
|
1820
1824
|
}
|
|
1821
1825
|
|
|
@@ -1823,7 +1827,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1823
1827
|
position: relative;
|
|
1824
1828
|
grid-column: 1;
|
|
1825
1829
|
grid-row: 3;
|
|
1826
|
-
border-inline-end:
|
|
1830
|
+
border-inline-end: var(--smrt-hairline);
|
|
1827
1831
|
z-index: 20;
|
|
1828
1832
|
}
|
|
1829
1833
|
|
|
@@ -1831,8 +1835,13 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1831
1835
|
position: relative;
|
|
1832
1836
|
grid-column: 3;
|
|
1833
1837
|
grid-row: 3;
|
|
1834
|
-
border-inline-start:
|
|
1838
|
+
border-inline-start: var(--smrt-hairline);
|
|
1835
1839
|
z-index: 20;
|
|
1840
|
+
/* The dock is the raised glass region of the shell. */
|
|
1841
|
+
background: var(--smrt-glass-surface-strong);
|
|
1842
|
+
-webkit-backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
1843
|
+
backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
1844
|
+
box-shadow: var(--smrt-elevation-3), var(--smrt-inset-highlight);
|
|
1836
1845
|
}
|
|
1837
1846
|
|
|
1838
1847
|
.smrt-admin-shell__edge--right[data-state='expanded'] {
|
|
@@ -1851,7 +1860,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1851
1860
|
var(--smrt-admin-shell-left-collapsed) minmax(0, 1fr)
|
|
1852
1861
|
var(--smrt-admin-shell-right-collapsed)
|
|
1853
1862
|
);
|
|
1854
|
-
border-block-start:
|
|
1863
|
+
border-block-start: var(--smrt-hairline);
|
|
1855
1864
|
z-index: 30;
|
|
1856
1865
|
}
|
|
1857
1866
|
|
|
@@ -1862,7 +1871,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1862
1871
|
min-height: 0;
|
|
1863
1872
|
overflow: auto;
|
|
1864
1873
|
padding-block-start: var(--smrt-shell-floating-reserve-main);
|
|
1865
|
-
background: var(--smrt-
|
|
1874
|
+
background: var(--smrt-surface-ground);
|
|
1866
1875
|
}
|
|
1867
1876
|
|
|
1868
1877
|
.smrt-admin-shell__band {
|
|
@@ -1921,21 +1930,59 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1921
1930
|
position: relative;
|
|
1922
1931
|
display: grid;
|
|
1923
1932
|
place-items: center;
|
|
1924
|
-
width:
|
|
1925
|
-
height:
|
|
1933
|
+
width: var(--smrt-control-height-small);
|
|
1934
|
+
height: var(--smrt-control-height-small);
|
|
1926
1935
|
border: 1px solid transparent;
|
|
1927
|
-
border-radius: var(--smrt-radius
|
|
1936
|
+
border-radius: var(--smrt-control-radius);
|
|
1928
1937
|
background: transparent;
|
|
1929
1938
|
color: var(--smrt-color-on-surface-variant);
|
|
1930
1939
|
cursor: pointer;
|
|
1931
1940
|
font: inherit;
|
|
1932
1941
|
}
|
|
1933
1942
|
|
|
1934
|
-
|
|
1943
|
+
/* One state layer per control: a currentColor veil whose opacity is the
|
|
1944
|
+
theme's hover / pressed / selected token. */
|
|
1945
|
+
.smrt-admin-shell__focus-tool::after,
|
|
1946
|
+
.smrt-admin-shell__edit-indicator::after {
|
|
1947
|
+
content: '';
|
|
1948
|
+
position: absolute;
|
|
1949
|
+
inset: 0;
|
|
1950
|
+
border-radius: inherit;
|
|
1951
|
+
background: currentColor;
|
|
1952
|
+
opacity: 0;
|
|
1953
|
+
pointer-events: none;
|
|
1954
|
+
}
|
|
1955
|
+
|
|
1956
|
+
.smrt-admin-shell__focus-tool:hover::after,
|
|
1957
|
+
.smrt-admin-shell__edit-indicator:hover::after {
|
|
1958
|
+
opacity: var(--smrt-state-hover);
|
|
1959
|
+
}
|
|
1960
|
+
|
|
1961
|
+
.smrt-admin-shell__focus-tool:hover {
|
|
1962
|
+
color: var(--smrt-color-on-surface);
|
|
1963
|
+
}
|
|
1964
|
+
|
|
1935
1965
|
.smrt-admin-shell__focus-tool.active {
|
|
1936
1966
|
color: var(--smrt-color-primary);
|
|
1937
|
-
|
|
1938
|
-
|
|
1967
|
+
}
|
|
1968
|
+
|
|
1969
|
+
.smrt-admin-shell__focus-tool.active::after {
|
|
1970
|
+
opacity: var(--smrt-state-selected);
|
|
1971
|
+
}
|
|
1972
|
+
|
|
1973
|
+
.smrt-admin-shell__focus-tool:active::after,
|
|
1974
|
+
.smrt-admin-shell__edit-indicator:active::after {
|
|
1975
|
+
opacity: var(--smrt-state-pressed);
|
|
1976
|
+
}
|
|
1977
|
+
|
|
1978
|
+
.smrt-admin-shell__focus-tool:focus-visible {
|
|
1979
|
+
outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
|
|
1980
|
+
outline-offset: var(--smrt-focus-ring-offset);
|
|
1981
|
+
}
|
|
1982
|
+
|
|
1983
|
+
.smrt-admin-shell__focus-tool:disabled {
|
|
1984
|
+
opacity: var(--smrt-state-disabled);
|
|
1985
|
+
cursor: default;
|
|
1939
1986
|
}
|
|
1940
1987
|
|
|
1941
1988
|
/* Edit-mode tab for a closed railless right edge: pinned to the shell's
|
|
@@ -1949,12 +1996,14 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1949
1996
|
display: inline-flex;
|
|
1950
1997
|
align-items: center;
|
|
1951
1998
|
gap: var(--smrt-spacing-1, 0.25rem);
|
|
1999
|
+
position: relative;
|
|
1952
2000
|
padding: var(--smrt-spacing-2, 0.5rem) var(--smrt-spacing-2, 0.5rem);
|
|
1953
|
-
border:
|
|
2001
|
+
border: var(--smrt-hairline);
|
|
1954
2002
|
border-inline-end: 0;
|
|
1955
|
-
border-start-start-radius: var(--smrt-radius
|
|
1956
|
-
border-end-start-radius: var(--smrt-radius
|
|
1957
|
-
background: var(--smrt-
|
|
2003
|
+
border-start-start-radius: var(--smrt-control-radius);
|
|
2004
|
+
border-end-start-radius: var(--smrt-control-radius);
|
|
2005
|
+
background: var(--smrt-surface-raised);
|
|
2006
|
+
box-shadow: var(--smrt-elevation-2), var(--smrt-inset-highlight);
|
|
1958
2007
|
color: var(--smrt-color-on-surface-variant);
|
|
1959
2008
|
font: inherit;
|
|
1960
2009
|
font-size: var(--smrt-typography-label-small-size, 0.75rem);
|
|
@@ -1963,7 +2012,11 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1963
2012
|
|
|
1964
2013
|
.smrt-admin-shell__edit-indicator:hover {
|
|
1965
2014
|
color: var(--smrt-color-primary);
|
|
1966
|
-
|
|
2015
|
+
}
|
|
2016
|
+
|
|
2017
|
+
.smrt-admin-shell__edit-indicator:focus-visible {
|
|
2018
|
+
outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
|
|
2019
|
+
outline-offset: var(--smrt-focus-ring-offset);
|
|
1967
2020
|
}
|
|
1968
2021
|
|
|
1969
2022
|
.smrt-admin-shell__edit-indicator :global(svg) {
|
|
@@ -2005,22 +2058,29 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2005
2058
|
display: inline-grid;
|
|
2006
2059
|
place-items: center;
|
|
2007
2060
|
box-sizing: border-box;
|
|
2008
|
-
inline-size:
|
|
2009
|
-
block-size:
|
|
2061
|
+
inline-size: var(--smrt-control-height);
|
|
2062
|
+
block-size: var(--smrt-control-height);
|
|
2010
2063
|
padding: 0;
|
|
2011
2064
|
border: 0;
|
|
2012
|
-
border-radius: var(--smrt-radius
|
|
2065
|
+
border-radius: var(--smrt-control-radius);
|
|
2013
2066
|
background: transparent;
|
|
2014
2067
|
color: var(--smrt-color-on-surface-variant);
|
|
2015
2068
|
cursor: pointer;
|
|
2016
2069
|
}
|
|
2017
2070
|
.smrt-admin-shell__chrome-button:hover {
|
|
2018
|
-
background: var(--smrt-
|
|
2071
|
+
background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent);
|
|
2019
2072
|
color: var(--smrt-color-on-surface);
|
|
2020
2073
|
}
|
|
2074
|
+
.smrt-admin-shell__chrome-button:active {
|
|
2075
|
+
background: color-mix(in srgb, currentColor calc(var(--smrt-state-pressed) * 100%), transparent);
|
|
2076
|
+
}
|
|
2021
2077
|
.smrt-admin-shell__chrome-button:focus-visible {
|
|
2022
|
-
outline:
|
|
2023
|
-
outline-offset:
|
|
2078
|
+
outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
|
|
2079
|
+
outline-offset: var(--smrt-focus-ring-offset);
|
|
2080
|
+
}
|
|
2081
|
+
.smrt-admin-shell__chrome-button:disabled {
|
|
2082
|
+
opacity: var(--smrt-state-disabled);
|
|
2083
|
+
cursor: default;
|
|
2024
2084
|
}
|
|
2025
2085
|
|
|
2026
2086
|
.smrt-admin-shell__drawer-head {
|
|
@@ -2108,25 +2168,25 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2108
2168
|
.smrt-admin-shell__slot--leftSidebar-header,
|
|
2109
2169
|
.smrt-admin-shell__slot--rightSidebar-header {
|
|
2110
2170
|
padding-block-end: var(--smrt-spacing-3);
|
|
2111
|
-
border-block-end:
|
|
2171
|
+
border-block-end: var(--smrt-hairline);
|
|
2112
2172
|
}
|
|
2113
2173
|
|
|
2114
2174
|
.smrt-admin-shell__slot--leftSidebar-footer,
|
|
2115
2175
|
.smrt-admin-shell__slot--rightSidebar-footer {
|
|
2116
2176
|
padding-block-start: var(--smrt-spacing-3);
|
|
2117
|
-
border-block-start:
|
|
2177
|
+
border-block-start: var(--smrt-hairline);
|
|
2118
2178
|
}
|
|
2119
2179
|
|
|
2120
2180
|
.smrt-admin-shell__slot--rightSidebar-header {
|
|
2121
2181
|
position: sticky;
|
|
2122
2182
|
inset-block-start: 0;
|
|
2123
|
-
background: var(--smrt-
|
|
2183
|
+
background: var(--smrt-surface-raised);
|
|
2124
2184
|
}
|
|
2125
2185
|
|
|
2126
2186
|
.smrt-admin-shell__slot--rightSidebar-footer {
|
|
2127
2187
|
position: sticky;
|
|
2128
2188
|
inset-block-end: 0;
|
|
2129
|
-
background: var(--smrt-
|
|
2189
|
+
background: var(--smrt-surface-raised);
|
|
2130
2190
|
}
|
|
2131
2191
|
|
|
2132
2192
|
/* Layout editing: slots as dashed drop zones, hidden regions as strips. */
|
|
@@ -2136,14 +2196,15 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2136
2196
|
min-inline-size: 4rem;
|
|
2137
2197
|
min-block-size: 2.25rem;
|
|
2138
2198
|
padding: var(--smrt-spacing-1);
|
|
2139
|
-
border:
|
|
2140
|
-
border-
|
|
2141
|
-
|
|
2199
|
+
border: var(--smrt-hairline);
|
|
2200
|
+
border-style: dashed;
|
|
2201
|
+
border-radius: var(--smrt-control-radius);
|
|
2202
|
+
background: color-mix(in srgb, var(--smrt-color-primary) calc(var(--smrt-state-hover) * 50%), transparent);
|
|
2142
2203
|
}
|
|
2143
2204
|
.smrt-admin-shell__slot--editing[data-drop-target] {
|
|
2144
2205
|
border-style: solid;
|
|
2145
2206
|
border-color: var(--smrt-color-primary);
|
|
2146
|
-
background: color-mix(in srgb, var(--smrt-color-primary)
|
|
2207
|
+
background: color-mix(in srgb, var(--smrt-color-primary) calc(var(--smrt-state-dragged) * 100%), transparent);
|
|
2147
2208
|
}
|
|
2148
2209
|
.smrt-admin-shell__slot--editing.smrt-admin-shell__slot--header-center,
|
|
2149
2210
|
.smrt-admin-shell__slot--editing.smrt-admin-shell__slot--footer-center {
|
|
@@ -2158,8 +2219,9 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2158
2219
|
min-inline-size: 0;
|
|
2159
2220
|
min-block-size: 0;
|
|
2160
2221
|
overflow: hidden;
|
|
2161
|
-
border:
|
|
2162
|
-
|
|
2222
|
+
border: var(--smrt-hairline);
|
|
2223
|
+
border-style: dashed;
|
|
2224
|
+
background: var(--smrt-surface-sunken);
|
|
2163
2225
|
color: var(--smrt-color-on-surface-variant);
|
|
2164
2226
|
font: var(--smrt-typography-label-small-font);
|
|
2165
2227
|
z-index: 25;
|
|
@@ -2174,7 +2236,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2174
2236
|
.smrt-admin-shell__tenant-footer {
|
|
2175
2237
|
min-width: 0;
|
|
2176
2238
|
padding-block-start: var(--smrt-spacing-3);
|
|
2177
|
-
border-block-start:
|
|
2239
|
+
border-block-start: var(--smrt-hairline);
|
|
2178
2240
|
}
|
|
2179
2241
|
|
|
2180
2242
|
.smrt-admin-shell__tenant-rail-stack {
|
|
@@ -2197,14 +2259,14 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2197
2259
|
grid-row: 3;
|
|
2198
2260
|
min-width: 0;
|
|
2199
2261
|
padding-block-start: var(--smrt-spacing-2);
|
|
2200
|
-
border-block-start:
|
|
2262
|
+
border-block-start: var(--smrt-hairline);
|
|
2201
2263
|
overflow: visible;
|
|
2202
2264
|
}
|
|
2203
2265
|
|
|
2204
2266
|
.smrt-admin-shell__edge--right[data-state='expanded']
|
|
2205
2267
|
.smrt-admin-shell__rail {
|
|
2206
2268
|
grid-column: 2;
|
|
2207
|
-
border-inline-start:
|
|
2269
|
+
border-inline-start: var(--smrt-hairline);
|
|
2208
2270
|
}
|
|
2209
2271
|
|
|
2210
2272
|
.smrt-admin-shell__panel {
|
|
@@ -2234,6 +2296,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2234
2296
|
inline-size: max(2rem, var(--smrt-control-target-min, 0px));
|
|
2235
2297
|
block-size: max(2rem, var(--smrt-control-target-min, 0px));
|
|
2236
2298
|
padding: 0;
|
|
2299
|
+
border-radius: var(--smrt-control-radius);
|
|
2237
2300
|
color: var(--smrt-color-on-surface-variant);
|
|
2238
2301
|
}
|
|
2239
2302
|
.smrt-admin-shell__edge--left[data-state='collapsed'] :global(.smrt-admin-shell__edge-toggle--left) {
|
|
@@ -2249,7 +2312,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2249
2312
|
.smrt-admin-shell__edge-toggle-kbd {
|
|
2250
2313
|
padding: 0 var(--smrt-spacing-1);
|
|
2251
2314
|
border-radius: var(--smrt-radius-small);
|
|
2252
|
-
background: var(--smrt-
|
|
2315
|
+
background: var(--smrt-surface-sunken);
|
|
2253
2316
|
color: var(--smrt-color-on-surface-variant);
|
|
2254
2317
|
font-size: var(--smrt-typography-body-small-size);
|
|
2255
2318
|
}
|
|
@@ -2262,19 +2325,30 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2262
2325
|
color: var(--smrt-color-on-surface-variant);
|
|
2263
2326
|
}
|
|
2264
2327
|
|
|
2328
|
+
:global(.smrt-admin-shell__edge-toggle--left.button.ghost) {
|
|
2329
|
+
border-radius: var(--smrt-control-radius);
|
|
2330
|
+
}
|
|
2331
|
+
|
|
2265
2332
|
:global(.smrt-admin-shell__edge-toggle--left.button.ghost:hover) {
|
|
2266
|
-
background: var(--smrt-
|
|
2333
|
+
background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent);
|
|
2267
2334
|
color: var(--smrt-color-on-surface);
|
|
2268
2335
|
}
|
|
2269
2336
|
|
|
2337
|
+
:global(.smrt-admin-shell__edge-toggle--left.button.ghost:active) {
|
|
2338
|
+
background: color-mix(in srgb, currentColor calc(var(--smrt-state-pressed) * 100%), transparent);
|
|
2339
|
+
}
|
|
2340
|
+
|
|
2270
2341
|
.smrt-admin-shell__drawer {
|
|
2271
2342
|
position: absolute;
|
|
2272
2343
|
z-index: 40;
|
|
2273
2344
|
overflow: auto;
|
|
2274
2345
|
padding: var(--smrt-spacing-5);
|
|
2275
|
-
|
|
2346
|
+
border: var(--smrt-hairline);
|
|
2347
|
+
background: var(--smrt-glass-surface-strong);
|
|
2348
|
+
-webkit-backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
2349
|
+
backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
2276
2350
|
color: var(--smrt-color-on-surface);
|
|
2277
|
-
box-shadow: var(--smrt-elevation-
|
|
2351
|
+
box-shadow: var(--smrt-elevation-4), var(--smrt-inset-highlight);
|
|
2278
2352
|
}
|
|
2279
2353
|
|
|
2280
2354
|
.smrt-admin-shell__drawer--top {
|
|
@@ -2310,7 +2384,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2310
2384
|
align-items: center;
|
|
2311
2385
|
min-width: 0;
|
|
2312
2386
|
padding: 0 var(--smrt-spacing-3);
|
|
2313
|
-
background: var(--smrt-
|
|
2387
|
+
background: var(--smrt-surface-panel);
|
|
2314
2388
|
}
|
|
2315
2389
|
|
|
2316
2390
|
.smrt-admin-shell__corner--top-left,
|
|
@@ -2330,17 +2404,20 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2330
2404
|
display: grid;
|
|
2331
2405
|
place-items: center;
|
|
2332
2406
|
padding: var(--smrt-spacing-5);
|
|
2333
|
-
background: var(--smrt-
|
|
2407
|
+
background: var(--smrt-surface-overlay);
|
|
2334
2408
|
}
|
|
2335
2409
|
|
|
2336
2410
|
.smrt-admin-shell__shortcuts-panel {
|
|
2337
2411
|
inline-size: min(32rem, 100%);
|
|
2338
2412
|
max-block-size: min(36rem, 100%);
|
|
2339
2413
|
overflow: auto;
|
|
2414
|
+
border: var(--smrt-hairline);
|
|
2340
2415
|
border-radius: var(--smrt-radius-large);
|
|
2341
|
-
background: var(--smrt-
|
|
2416
|
+
background: var(--smrt-glass-surface-strong);
|
|
2417
|
+
-webkit-backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
2418
|
+
backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
2342
2419
|
padding: var(--smrt-spacing-5);
|
|
2343
|
-
box-shadow: var(--smrt-elevation-4);
|
|
2420
|
+
box-shadow: var(--smrt-elevation-4), var(--smrt-inset-highlight);
|
|
2344
2421
|
}
|
|
2345
2422
|
|
|
2346
2423
|
.smrt-admin-shell__shortcuts-panel header,
|
|
@@ -2421,7 +2498,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2421
2498
|
align-self: start;
|
|
2422
2499
|
z-index: 10;
|
|
2423
2500
|
min-inline-size: 0;
|
|
2424
|
-
background: var(--smrt-
|
|
2501
|
+
background: var(--smrt-surface-ground);
|
|
2425
2502
|
transition: transform var(--smrt-admin-shell-chrome-duration)
|
|
2426
2503
|
var(--smrt-easing-standard, ease);
|
|
2427
2504
|
}
|
|
@@ -2472,7 +2549,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2472
2549
|
margin: 0;
|
|
2473
2550
|
padding: 0;
|
|
2474
2551
|
border: 0;
|
|
2475
|
-
background: var(--smrt-
|
|
2552
|
+
background: var(--smrt-surface-overlay);
|
|
2476
2553
|
opacity: 0.36;
|
|
2477
2554
|
cursor: pointer;
|
|
2478
2555
|
}
|
|
@@ -2483,10 +2560,10 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2483
2560
|
.smrt-admin-shell__edge--right[data-presentation='overlay'][data-state='expanded'] {
|
|
2484
2561
|
grid-column: 1 / -1;
|
|
2485
2562
|
z-index: 25;
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
);
|
|
2563
|
+
background: var(--smrt-glass-surface-strong);
|
|
2564
|
+
-webkit-backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
2565
|
+
backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
2566
|
+
box-shadow: var(--smrt-elevation-4), var(--smrt-inset-highlight);
|
|
2490
2567
|
outline: none;
|
|
2491
2568
|
}
|
|
2492
2569
|
|
|
@@ -2511,7 +2588,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2511
2588
|
margin: 0;
|
|
2512
2589
|
padding: 0;
|
|
2513
2590
|
border: 0;
|
|
2514
|
-
background: var(--smrt-
|
|
2591
|
+
background: var(--smrt-surface-overlay);
|
|
2515
2592
|
opacity: 0.24;
|
|
2516
2593
|
cursor: pointer;
|
|
2517
2594
|
animation: smrt-admin-shell-scrim-in var(--smrt-admin-shell-chrome-duration)
|
|
@@ -2590,7 +2667,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2590
2667
|
inline-size: 2.5rem;
|
|
2591
2668
|
block-size: 0.25rem;
|
|
2592
2669
|
border-radius: var(--smrt-radius-full);
|
|
2593
|
-
background: var(--smrt-
|
|
2670
|
+
background: var(--smrt-hairline-strong-color);
|
|
2594
2671
|
}
|
|
2595
2672
|
|
|
2596
2673
|
/* Phone page contracts: breadcrumbs give way to the top bar, and so does
|
|
@@ -2631,7 +2708,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2631
2708
|
position: sticky;
|
|
2632
2709
|
inset-block-start: var(--smrt-admin-shell-phone-top-size);
|
|
2633
2710
|
z-index: 6;
|
|
2634
|
-
background: var(--smrt-
|
|
2711
|
+
background: var(--smrt-surface-ground);
|
|
2635
2712
|
transition: transform var(--smrt-admin-shell-chrome-duration)
|
|
2636
2713
|
var(--smrt-easing-standard, ease);
|
|
2637
2714
|
}
|
|
@@ -2654,8 +2731,10 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2654
2731
|
margin: 0;
|
|
2655
2732
|
padding: var(--smrt-spacing-2) var(--smrt-spacing-4)
|
|
2656
2733
|
calc(var(--smrt-spacing-2) + env(safe-area-inset-bottom));
|
|
2657
|
-
border-block-start:
|
|
2658
|
-
background: var(--smrt-
|
|
2734
|
+
border-block-start: var(--smrt-hairline);
|
|
2735
|
+
background: var(--smrt-glass-surface);
|
|
2736
|
+
-webkit-backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
2737
|
+
backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
2659
2738
|
}
|
|
2660
2739
|
|
|
2661
2740
|
.smrt-admin-shell[data-viewport='phone'] :global([data-form-action-bar] > *) {
|
|
@@ -2718,6 +2797,10 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2718
2797
|
var(--smrt-admin-shell-phone-bar-track)
|
|
2719
2798
|
);
|
|
2720
2799
|
inline-size: min(22rem, 86vw);
|
|
2800
|
+
background: var(--smrt-glass-surface-strong);
|
|
2801
|
+
-webkit-backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
2802
|
+
backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
2803
|
+
box-shadow: var(--smrt-elevation-4), var(--smrt-inset-highlight);
|
|
2721
2804
|
transform: translateX(-100%);
|
|
2722
2805
|
transition: transform var(--smrt-duration-short2)
|
|
2723
2806
|
var(--smrt-easing-standard);
|
|
@@ -2751,8 +2834,11 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2751
2834
|
border-inline-start: 0;
|
|
2752
2835
|
border-start-start-radius: var(--smrt-radius-lg);
|
|
2753
2836
|
border-start-end-radius: var(--smrt-radius-lg);
|
|
2754
|
-
|
|
2755
|
-
|
|
2837
|
+
border-block-start: var(--smrt-hairline);
|
|
2838
|
+
background: var(--smrt-glass-surface-strong);
|
|
2839
|
+
-webkit-backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
2840
|
+
backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
2841
|
+
box-shadow: var(--smrt-elevation-4), var(--smrt-inset-highlight);
|
|
2756
2842
|
transform: translateY(100%);
|
|
2757
2843
|
visibility: hidden;
|
|
2758
2844
|
transition:
|
|
@@ -104,8 +104,10 @@ function accessibleName(item: PhoneBottomBarEntry): string {
|
|
|
104
104
|
box-sizing: content-box;
|
|
105
105
|
block-size: 3.5rem;
|
|
106
106
|
padding: 0 var(--smrt-spacing-2) env(safe-area-inset-bottom);
|
|
107
|
-
border-block-start:
|
|
108
|
-
background: var(--smrt-
|
|
107
|
+
border-block-start: var(--smrt-hairline);
|
|
108
|
+
background: var(--smrt-glass-surface);
|
|
109
|
+
-webkit-backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
110
|
+
backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
109
111
|
}
|
|
110
112
|
|
|
111
113
|
.smrt-phone-bottom-bar__item {
|
|
@@ -117,7 +119,7 @@ function accessibleName(item: PhoneBottomBarEntry): string {
|
|
|
117
119
|
min-block-size: var(--smrt-touch-target-min);
|
|
118
120
|
padding: var(--smrt-spacing-1) 0;
|
|
119
121
|
border: 0;
|
|
120
|
-
border-radius: var(--smrt-radius
|
|
122
|
+
border-radius: var(--smrt-control-radius);
|
|
121
123
|
background: transparent;
|
|
122
124
|
color: var(--smrt-color-on-surface-variant);
|
|
123
125
|
font: inherit;
|
|
@@ -126,6 +128,35 @@ function accessibleName(item: PhoneBottomBarEntry): string {
|
|
|
126
128
|
-webkit-tap-highlight-color: transparent;
|
|
127
129
|
}
|
|
128
130
|
|
|
131
|
+
.smrt-phone-bottom-bar__item {
|
|
132
|
+
position: relative;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* State layer over the whole tab; the selected indicator pill keeps its
|
|
136
|
+
container fill. */
|
|
137
|
+
.smrt-phone-bottom-bar__item::after {
|
|
138
|
+
content: '';
|
|
139
|
+
position: absolute;
|
|
140
|
+
inset: 0;
|
|
141
|
+
border-radius: inherit;
|
|
142
|
+
background: currentColor;
|
|
143
|
+
opacity: 0;
|
|
144
|
+
pointer-events: none;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.smrt-phone-bottom-bar__item:hover::after {
|
|
148
|
+
opacity: var(--smrt-state-hover);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.smrt-phone-bottom-bar__item:active::after {
|
|
152
|
+
opacity: var(--smrt-state-pressed);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.smrt-phone-bottom-bar__item:disabled,
|
|
156
|
+
.smrt-phone-bottom-bar__item[aria-disabled='true'] {
|
|
157
|
+
opacity: var(--smrt-state-disabled);
|
|
158
|
+
}
|
|
159
|
+
|
|
129
160
|
.smrt-phone-bottom-bar__item.active {
|
|
130
161
|
color: var(--smrt-color-primary);
|
|
131
162
|
}
|
|
@@ -136,8 +167,8 @@ function accessibleName(item: PhoneBottomBarEntry): string {
|
|
|
136
167
|
}
|
|
137
168
|
|
|
138
169
|
.smrt-phone-bottom-bar__item:focus-visible {
|
|
139
|
-
outline:
|
|
140
|
-
outline-offset: -
|
|
170
|
+
outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
|
|
171
|
+
outline-offset: calc(-1 * var(--smrt-focus-ring-width));
|
|
141
172
|
}
|
|
142
173
|
|
|
143
174
|
.smrt-phone-bottom-bar__icon {
|
|
@@ -175,7 +206,7 @@ function accessibleName(item: PhoneBottomBarEntry): string {
|
|
|
175
206
|
inset-inline-end: 1rem;
|
|
176
207
|
inline-size: 0.6rem;
|
|
177
208
|
block-size: 0.6rem;
|
|
178
|
-
border:
|
|
209
|
+
border: var(--smrt-focus-ring-width) solid var(--smrt-surface-panel);
|
|
179
210
|
border-radius: var(--smrt-radius-full);
|
|
180
211
|
background: var(--smrt-color-primary);
|
|
181
212
|
}
|
|
@@ -61,8 +61,10 @@ const { t } = useI18n();
|
|
|
61
61
|
box-sizing: border-box;
|
|
62
62
|
block-size: var(--smrt-admin-shell-phone-top-size, 3.5rem);
|
|
63
63
|
padding: 0 var(--smrt-spacing-2);
|
|
64
|
-
border-block-end:
|
|
65
|
-
background: var(--smrt-
|
|
64
|
+
border-block-end: var(--smrt-hairline);
|
|
65
|
+
background: var(--smrt-glass-surface);
|
|
66
|
+
-webkit-backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
67
|
+
backdrop-filter: blur(var(--smrt-glass-blur)) saturate(var(--smrt-glass-saturation));
|
|
66
68
|
color: var(--smrt-color-on-surface);
|
|
67
69
|
}
|
|
68
70
|
|
|
@@ -78,12 +80,16 @@ const { t } = useI18n();
|
|
|
78
80
|
|
|
79
81
|
.smrt-phone-top-bar__back:hover,
|
|
80
82
|
.smrt-phone-top-bar__back:focus-visible {
|
|
81
|
-
background: var(--smrt-
|
|
83
|
+
background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.smrt-phone-top-bar__back:active {
|
|
87
|
+
background: color-mix(in srgb, currentColor calc(var(--smrt-state-pressed) * 100%), transparent);
|
|
82
88
|
}
|
|
83
89
|
|
|
84
90
|
.smrt-phone-top-bar__back:focus-visible {
|
|
85
|
-
outline:
|
|
86
|
-
outline-offset: -
|
|
91
|
+
outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
|
|
92
|
+
outline-offset: calc(-1 * var(--smrt-focus-ring-width));
|
|
87
93
|
}
|
|
88
94
|
|
|
89
95
|
.smrt-phone-top-bar__title {
|
|
@@ -63,18 +63,19 @@ let {
|
|
|
63
63
|
display: inline-grid;
|
|
64
64
|
place-items: center;
|
|
65
65
|
box-sizing: border-box;
|
|
66
|
-
inline-size: max(
|
|
67
|
-
block-size: max(
|
|
66
|
+
inline-size: max(var(--smrt-control-height-small), var(--smrt-control-target-min, 0px));
|
|
67
|
+
block-size: max(var(--smrt-control-height-small), var(--smrt-control-target-min, 0px));
|
|
68
68
|
padding: 0;
|
|
69
69
|
border: 0;
|
|
70
|
-
border-radius: var(--smrt-radius
|
|
70
|
+
border-radius: var(--smrt-control-radius);
|
|
71
71
|
background: transparent;
|
|
72
72
|
color: var(--smrt-color-on-surface-variant);
|
|
73
73
|
cursor: pointer;
|
|
74
74
|
}
|
|
75
|
-
.smrt-shell-icon-button:hover { background: var(--smrt-
|
|
75
|
+
.smrt-shell-icon-button:hover { background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent); color: var(--smrt-color-on-surface); }
|
|
76
|
+
.smrt-shell-icon-button:active { background: color-mix(in srgb, currentColor calc(var(--smrt-state-pressed) * 100%), transparent); }
|
|
76
77
|
.smrt-shell-icon-button[aria-pressed='true'] { color: var(--smrt-color-on-surface); }
|
|
77
|
-
.smrt-shell-icon-button:focus-visible { outline:
|
|
78
|
-
.smrt-shell-icon-button:disabled { opacity:
|
|
78
|
+
.smrt-shell-icon-button:focus-visible { outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color); outline-offset: var(--smrt-focus-ring-offset); }
|
|
79
|
+
.smrt-shell-icon-button:disabled { opacity: var(--smrt-state-disabled); cursor: not-allowed; }
|
|
79
80
|
}
|
|
80
81
|
</style>
|
|
@@ -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:
|
|
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:
|
|
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
|
|
500
|
-
.smrt-nav-editor :global(.smrt-sortable__item:hover) { background: var(--smrt-
|
|
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
|
|
509
|
-
.smrt-nav-editor__title:hover, .smrt-nav-editor__head[data-toolbar-open] .smrt-nav-editor__title { background: var(--smrt-
|
|
510
|
-
.smrt-nav-editor__title:focus-visible { outline:
|
|
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:
|
|
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
|
|
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-
|
|
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:
|
|
88
|
-
outline-offset:
|
|
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:
|
|
253
|
-
.smrt-section-menu__item:hover { background: var(--smrt-
|
|
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:
|
|
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:
|
|
269
|
-
.smrt-section-menu__card:hover { background: var(--smrt-
|
|
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:
|
|
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:
|
|
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; }
|
|
@@ -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:
|
|
319
|
-
outline-offset:
|
|
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
|
|
329
|
+
border-radius: var(--smrt-control-radius);
|
|
330
330
|
cursor: pointer;
|
|
331
331
|
}
|
|
332
332
|
.smrt-tenant-nav__heading:focus-visible {
|
|
333
|
-
outline:
|
|
334
|
-
outline-offset:
|
|
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
|
|
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
|
-
|
|
389
|
-
|
|
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
|
|
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 {
|
|
@@ -317,23 +317,40 @@ $effect(() => {
|
|
|
317
317
|
min-width: 0;
|
|
318
318
|
min-height: max(2.75rem, var(--smrt-control-target-min, 0px));
|
|
319
319
|
padding: var(--smrt-spacing-2);
|
|
320
|
-
|
|
321
|
-
border
|
|
322
|
-
|
|
320
|
+
position: relative;
|
|
321
|
+
border: var(--smrt-hairline);
|
|
322
|
+
border-radius: var(--smrt-control-radius);
|
|
323
|
+
background: var(--smrt-surface-control);
|
|
323
324
|
color: var(--smrt-color-on-surface);
|
|
324
325
|
font: inherit;
|
|
325
326
|
text-align: start;
|
|
326
327
|
cursor: pointer;
|
|
327
328
|
}
|
|
328
|
-
.
|
|
329
|
-
.smrt-workspace-account-menu__trigger
|
|
330
|
-
|
|
329
|
+
/* State layer: a currentColor veil over the trigger. */
|
|
330
|
+
.smrt-workspace-account-menu__trigger::after {
|
|
331
|
+
content: '';
|
|
332
|
+
position: absolute;
|
|
333
|
+
inset: 0;
|
|
334
|
+
border-radius: inherit;
|
|
335
|
+
background: currentColor;
|
|
336
|
+
opacity: 0;
|
|
337
|
+
pointer-events: none;
|
|
338
|
+
}
|
|
339
|
+
.smrt-workspace-account-menu__trigger:hover:not(:disabled)::after {
|
|
340
|
+
opacity: var(--smrt-state-hover);
|
|
341
|
+
}
|
|
342
|
+
.smrt-workspace-account-menu__trigger[aria-expanded='true']::after {
|
|
343
|
+
opacity: var(--smrt-state-selected);
|
|
344
|
+
}
|
|
345
|
+
.smrt-workspace-account-menu__trigger:active:not(:disabled)::after {
|
|
346
|
+
opacity: var(--smrt-state-pressed);
|
|
331
347
|
}
|
|
332
348
|
.smrt-workspace-account-menu__trigger:focus-visible {
|
|
333
|
-
outline: var(--smrt-
|
|
334
|
-
outline-offset: var(--smrt-
|
|
349
|
+
outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
|
|
350
|
+
outline-offset: var(--smrt-focus-ring-offset);
|
|
335
351
|
}
|
|
336
352
|
.smrt-workspace-account-menu__trigger:disabled {
|
|
353
|
+
opacity: var(--smrt-state-disabled);
|
|
337
354
|
cursor: default;
|
|
338
355
|
}
|
|
339
356
|
|
|
@@ -350,11 +367,6 @@ $effect(() => {
|
|
|
350
367
|
border-radius: var(--smrt-radius-full);
|
|
351
368
|
background: transparent;
|
|
352
369
|
}
|
|
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
370
|
.smrt-workspace-account-menu[data-compact] .smrt-workspace-account-menu__identity,
|
|
359
371
|
.smrt-workspace-account-menu[data-compact] .smrt-workspace-account-menu__indicator {
|
|
360
372
|
display: none;
|
|
@@ -369,10 +381,10 @@ $effect(() => {
|
|
|
369
381
|
overflow-y: auto;
|
|
370
382
|
margin: var(--smrt-spacing-1) 0;
|
|
371
383
|
padding: var(--smrt-spacing-1);
|
|
372
|
-
border:
|
|
384
|
+
border: var(--smrt-hairline);
|
|
373
385
|
border-radius: var(--smrt-radius-medium);
|
|
374
|
-
background: var(--smrt-
|
|
375
|
-
box-shadow: var(--smrt-elevation-
|
|
386
|
+
background: var(--smrt-surface-raised);
|
|
387
|
+
box-shadow: var(--smrt-elevation-3), var(--smrt-inset-highlight);
|
|
376
388
|
}
|
|
377
389
|
.smrt-workspace-account-menu__popover--bottom-start { inset-block-start: 100%; inset-inline-start: 0; }
|
|
378
390
|
.smrt-workspace-account-menu__popover--bottom-end { inset-block-start: 100%; inset-inline-end: 0; }
|
|
@@ -388,7 +400,7 @@ $effect(() => {
|
|
|
388
400
|
display: grid;
|
|
389
401
|
gap: var(--smrt-spacing-1);
|
|
390
402
|
padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
|
|
391
|
-
border-block-end:
|
|
403
|
+
border-block-end: var(--smrt-hairline);
|
|
392
404
|
margin-block-end: var(--smrt-spacing-1);
|
|
393
405
|
}
|
|
394
406
|
.smrt-workspace-account-menu__name {
|
|
@@ -416,7 +428,7 @@ $effect(() => {
|
|
|
416
428
|
min-block-size: max(2.75rem, var(--smrt-control-target-min, 0px));
|
|
417
429
|
padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
|
|
418
430
|
border: none;
|
|
419
|
-
border-radius: var(--smrt-radius-small);
|
|
431
|
+
border-radius: var(--smrt-control-radius-small);
|
|
420
432
|
background: none;
|
|
421
433
|
color: var(--smrt-color-on-surface);
|
|
422
434
|
font: inherit;
|
|
@@ -426,14 +438,17 @@ $effect(() => {
|
|
|
426
438
|
cursor: pointer;
|
|
427
439
|
}
|
|
428
440
|
.smrt-workspace-account-menu__item:hover:not(:disabled) {
|
|
429
|
-
background: var(--smrt-
|
|
441
|
+
background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent);
|
|
442
|
+
}
|
|
443
|
+
.smrt-workspace-account-menu__item:active:not(:disabled) {
|
|
444
|
+
background: color-mix(in srgb, currentColor calc(var(--smrt-state-pressed) * 100%), transparent);
|
|
430
445
|
}
|
|
431
446
|
.smrt-workspace-account-menu__item:focus-visible {
|
|
432
|
-
outline: var(--smrt-
|
|
433
|
-
outline-offset: calc(-1 * var(--smrt-
|
|
447
|
+
outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);
|
|
448
|
+
outline-offset: calc(-1 * var(--smrt-focus-ring-width));
|
|
434
449
|
}
|
|
435
450
|
.smrt-workspace-account-menu__item:disabled {
|
|
436
|
-
|
|
451
|
+
opacity: var(--smrt-state-disabled);
|
|
437
452
|
cursor: default;
|
|
438
453
|
}
|
|
439
454
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-svelte",
|
|
3
|
-
"version": "0.55.
|
|
3
|
+
"version": "0.55.18",
|
|
4
4
|
"smrtJsdoc": "strict",
|
|
5
5
|
"description": "Svelte 5 components for SMRT user management - auth, users, tenants, roles, permissions, groups",
|
|
6
6
|
"type": "module",
|
|
@@ -205,11 +205,11 @@
|
|
|
205
205
|
},
|
|
206
206
|
"dependencies": {
|
|
207
207
|
"@happyvertical/logger": "^0.103.4",
|
|
208
|
-
"@happyvertical/smrt-languages": "0.55.
|
|
209
|
-
"@happyvertical/smrt-mcp-apps": "0.55.
|
|
210
|
-
"@happyvertical/smrt-types": "0.55.
|
|
211
|
-
"@happyvertical/smrt-ui": "0.55.
|
|
212
|
-
"@happyvertical/smrt-web": "0.55.
|
|
208
|
+
"@happyvertical/smrt-languages": "0.55.18",
|
|
209
|
+
"@happyvertical/smrt-mcp-apps": "0.55.18",
|
|
210
|
+
"@happyvertical/smrt-types": "0.55.18",
|
|
211
|
+
"@happyvertical/smrt-ui": "0.55.18",
|
|
212
|
+
"@happyvertical/smrt-web": "0.55.18",
|
|
213
213
|
"@tanstack/db": "^0.6.14",
|
|
214
214
|
"@tanstack/svelte-db": "^0.1.91",
|
|
215
215
|
"esm-env": "^1.2.2"
|
|
@@ -244,14 +244,14 @@
|
|
|
244
244
|
}
|
|
245
245
|
},
|
|
246
246
|
"devDependencies": {
|
|
247
|
-
"@happyvertical/smrt-agents": "0.55.
|
|
248
|
-
"@happyvertical/smrt-chat": "0.55.
|
|
249
|
-
"@happyvertical/smrt-content": "0.55.
|
|
250
|
-
"@happyvertical/smrt-core": "0.55.
|
|
251
|
-
"@happyvertical/smrt-reports": "0.55.
|
|
252
|
-
"@happyvertical/smrt-scanner": "0.55.
|
|
253
|
-
"@happyvertical/smrt-tenancy": "0.55.
|
|
254
|
-
"@happyvertical/smrt-users": "0.55.
|
|
247
|
+
"@happyvertical/smrt-agents": "0.55.18",
|
|
248
|
+
"@happyvertical/smrt-chat": "0.55.18",
|
|
249
|
+
"@happyvertical/smrt-content": "0.55.18",
|
|
250
|
+
"@happyvertical/smrt-core": "0.55.18",
|
|
251
|
+
"@happyvertical/smrt-reports": "0.55.18",
|
|
252
|
+
"@happyvertical/smrt-scanner": "0.55.18",
|
|
253
|
+
"@happyvertical/smrt-tenancy": "0.55.18",
|
|
254
|
+
"@happyvertical/smrt-users": "0.55.18",
|
|
255
255
|
"@happyvertical/speech": "^0.103.4",
|
|
256
256
|
"@sveltejs/package": "^2.5.8",
|
|
257
257
|
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|