@stack-spot/portal-layout 0.0.46 → 0.0.48

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 (99) hide show
  1. package/dist/Layout.d.ts +2 -2
  2. package/dist/Layout.js +1 -1
  3. package/dist/LayoutOverlayManager.js +6 -6
  4. package/dist/LayoutOverlayManager.js.map +1 -1
  5. package/dist/components/Dialog.d.ts +2 -2
  6. package/dist/components/Dialog.d.ts.map +1 -1
  7. package/dist/components/Dialog.js +1 -1
  8. package/dist/components/Header.d.ts +1 -1
  9. package/dist/components/Header.js +1 -1
  10. package/dist/components/OverlayContent.d.ts +1 -1
  11. package/dist/components/OverlayContent.js +20 -20
  12. package/dist/components/PortalSwitcher.d.ts +1 -1
  13. package/dist/components/PortalSwitcher.d.ts.map +1 -1
  14. package/dist/components/PortalSwitcher.js +56 -55
  15. package/dist/components/PortalSwitcher.js.map +1 -1
  16. package/dist/components/SelectionList.d.ts +1 -1
  17. package/dist/components/SelectionList.d.ts.map +1 -1
  18. package/dist/components/SelectionList.js +58 -57
  19. package/dist/components/SelectionList.js.map +1 -1
  20. package/dist/components/Toaster.d.ts +1 -1
  21. package/dist/components/Toaster.js +1 -1
  22. package/dist/components/UserMenu.d.ts +1 -1
  23. package/dist/components/UserMenu.js +41 -41
  24. package/dist/components/error/ErrorBoundary.d.ts +1 -1
  25. package/dist/components/error/ErrorBoundary.js +1 -1
  26. package/dist/components/error/ErrorFeedback.d.ts +1 -1
  27. package/dist/components/error/ErrorFeedback.js +1 -1
  28. package/dist/components/error/SilentErrorBoundary.d.ts +1 -1
  29. package/dist/components/error/SilentErrorBoundary.js +1 -1
  30. package/dist/components/menu/MenuContent.d.ts +10 -12
  31. package/dist/components/menu/MenuContent.d.ts.map +1 -1
  32. package/dist/components/menu/MenuContent.js +146 -146
  33. package/dist/components/menu/MenuContent.js.map +1 -1
  34. package/dist/components/menu/MenuSections.d.ts +1 -1
  35. package/dist/components/menu/MenuSections.js +1 -1
  36. package/dist/components/menu/MenuSections.js.map +1 -1
  37. package/dist/components/menu/PageSelector.d.ts +1 -1
  38. package/dist/components/menu/PageSelector.js +65 -65
  39. package/dist/components/menu/PageSelector.js.map +1 -1
  40. package/dist/components/menu/use-check-text-overflow.js.map +1 -1
  41. package/dist/components/types.d.ts +1 -0
  42. package/dist/components/types.d.ts.map +1 -1
  43. package/dist/layout.css +465 -464
  44. package/dist/svg/AI.d.ts +1 -1
  45. package/dist/svg/AI.js +1 -1
  46. package/dist/svg/EDP.d.ts +1 -1
  47. package/dist/svg/EDP.js +1 -1
  48. package/dist/svg/Forbidden.d.ts +1 -1
  49. package/dist/svg/Forbidden.js +1 -1
  50. package/dist/svg/HUB.d.ts +1 -1
  51. package/dist/svg/HUB.js +1 -1
  52. package/dist/svg/Logo.d.ts +1 -1
  53. package/dist/svg/Logo.js +1 -1
  54. package/dist/svg/NotFound.d.ts +1 -1
  55. package/dist/svg/NotFound.js +1 -1
  56. package/dist/svg/ServerError.d.ts +1 -1
  57. package/dist/svg/ServerError.js +1 -1
  58. package/dist/svg/Unauthenticated.d.ts +1 -1
  59. package/dist/svg/Unauthenticated.js +1 -1
  60. package/dist/toaster.js +1 -1
  61. package/dist/utils.js.map +1 -1
  62. package/package.json +1 -1
  63. package/src/Layout.tsx +103 -103
  64. package/src/LayoutOverlayManager.tsx +273 -273
  65. package/src/components/Dialog.tsx +93 -93
  66. package/src/components/Header.tsx +29 -29
  67. package/src/components/OverlayContent.tsx +58 -58
  68. package/src/components/PortalSwitcher.tsx +147 -146
  69. package/src/components/SelectionList.tsx +268 -264
  70. package/src/components/Toaster.tsx +16 -16
  71. package/src/components/UserMenu.tsx +111 -111
  72. package/src/components/error/ErrorBoundary.tsx +38 -38
  73. package/src/components/error/ErrorFeedback.tsx +114 -114
  74. package/src/components/error/ErrorManager.ts +31 -31
  75. package/src/components/error/SilentErrorBoundary.tsx +54 -54
  76. package/src/components/menu/MenuContent.tsx +293 -293
  77. package/src/components/menu/MenuSections.tsx +268 -268
  78. package/src/components/menu/PageSelector.tsx +152 -152
  79. package/src/components/menu/constants.ts +2 -2
  80. package/src/components/menu/types.ts +112 -112
  81. package/src/components/menu/use-check-text-overflow.tsx +26 -26
  82. package/src/components/menu/use-keyboard-controls.tsx +70 -70
  83. package/src/components/types.ts +15 -14
  84. package/src/dictionary.ts +25 -25
  85. package/src/elements.ts +24 -24
  86. package/src/errors.ts +11 -11
  87. package/src/index.ts +17 -17
  88. package/src/layout.css +465 -464
  89. package/src/svg/AI.tsx +37 -37
  90. package/src/svg/EDP.tsx +35 -35
  91. package/src/svg/Forbidden.tsx +22 -22
  92. package/src/svg/HUB.tsx +35 -35
  93. package/src/svg/Logo.tsx +35 -35
  94. package/src/svg/NotFound.tsx +16 -16
  95. package/src/svg/ServerError.tsx +33 -33
  96. package/src/svg/Unauthenticated.tsx +16 -16
  97. package/src/toaster.tsx +76 -76
  98. package/src/utils.ts +114 -114
  99. package/tsconfig.json +8 -8
package/dist/layout.css CHANGED
@@ -1,464 +1,465 @@
1
- /* Scrollbars */
2
-
3
- ::-webkit-scrollbar-track {
4
- background-color: transparent;
5
- }
6
-
7
- ::-webkit-scrollbar {
8
- width: 0.25rem;
9
- background-color: transparent;
10
- }
11
-
12
- ::-webkit-scrollbar-thumb {
13
- background-color: var(--light-600);
14
- }
15
-
16
- /* Layout */
17
-
18
- html {
19
- display: flex;
20
- flex-direction: column;
21
- height: 100%;
22
- }
23
-
24
- body {
25
- margin: 0;
26
- display: flex;
27
- flex-direction: column;
28
- flex: 1;
29
- background: var(--light-400);
30
- font: var(--font);
31
- color: var(--light-contrastText);
32
- }
33
-
34
- #root, #layout {
35
- display: flex;
36
- flex-direction: column;
37
- flex: 1;
38
- }
39
-
40
- #layout {
41
- --header-height: 56px;
42
- --menu-sections-width: 135px;
43
- --menu-content-width: 240px;
44
- --menu-item-height: 74px;
45
- --modal-animation-duration: 0.3s;
46
- --right-panel-animation-duration: 0.3s;
47
- --menu-animation-duration: 0.3s;
48
- --menu-overlay-width: 240px;
49
- --toastify-font-family: 'Roboto', sans-serif;
50
- }
51
-
52
- #layout:not(.menu-compact) {
53
- --menu-sections-width: 135px;
54
- --menu-item-height: 56px;
55
- }
56
-
57
- #layout.menu-compact {
58
- --menu-sections-width: 56px;
59
- --menu-item-height: 56px;
60
- }
61
-
62
- #layout.no-menu-sections {
63
- --menu-sections-width: 0px;
64
- }
65
-
66
- #header {
67
- height: var(--header-height);
68
- padding: 0 24px;
69
- align-items: center;
70
- flex-direction: row;
71
- display: flex;
72
- justify-content: space-between;
73
- position: fixed;
74
- left: 0;
75
- right: 0;
76
- top: 0;
77
- background-color: var(--light-400);
78
- }
79
-
80
- #page {
81
- position: absolute;
82
- top: var(--header-height);
83
- left: var(--menu-sections-width);
84
- right: 0;
85
- bottom: 0;
86
- overflow-y: auto;
87
- display: flex;
88
- flex-direction: column;
89
- background-color: var(--light-300);
90
- align-items: center;
91
- padding: 24px;
92
- transition: left ease-in-out var(--menu-animation-duration);
93
- }
94
-
95
- #layout.menu-content-visible #page {
96
- left: calc(var(--menu-sections-width) + var(--menu-content-width));
97
- }
98
-
99
- #layout.no-menu-sections:not(.menu-content-visible) #page {
100
- border-top-left-radius: 0;
101
- }
102
-
103
- #content {
104
- width: 100%;
105
- max-width: 1144px;
106
- display: flex;
107
- flex-direction: column;
108
- }
109
-
110
- /* Menu */
111
-
112
- #menu {
113
- position: fixed;
114
- display: flex;
115
- flex-direction: row;
116
- top: var(--header-height);
117
- bottom: 0;
118
- }
119
-
120
- #menu svg {
121
- fill: var(--light-contrastText);
122
- }
123
-
124
- #menu .item-row-group svg {
125
- fill: var(--light-700);
126
- }
127
-
128
- #menu .toggle .expand {
129
- fill: var(--primary-500);
130
- }
131
-
132
- #menu .toggle .expand,
133
- #menu .toggle .collapse {
134
- position: absolute;
135
- transition: opacity 0.3s;
136
- }
137
-
138
- #menu .toggle .expand,
139
- #layout.menu-compact .toggle .collapse {
140
- opacity: 0;
141
- }
142
-
143
- #menu .toggle .collapse,
144
- #layout.menu-compact .toggle .expand {
145
- opacity: 1;
146
- }
147
-
148
- #layout .section-label {
149
- line-height: 0.875rem;
150
- }
151
-
152
- #layout.menu-compact .section-label {
153
- display: none;
154
- }
155
-
156
- #layout:not(.menu-compact) .section-label {
157
- display: block;
158
- }
159
-
160
- #menuSections {
161
- width: var(--menu-sections-width);
162
- display: flex;
163
- flex-direction: column;
164
- padding: 0 0 10px;
165
- justify-content: space-between;
166
- background-color: var(--light-400);
167
- position: relative;
168
- border-right: 1px solid var(--light-300);
169
- border-top: 1px solid var(--light-300);
170
- }
171
-
172
- #menuSections .sections-footer {
173
- padding: 16px;
174
- }
175
-
176
- #menuSections .toggle,
177
- #menuSections > ul li a {
178
- background: transparent;
179
- border: none;
180
- outline: none;
181
- width: var(--menu-sections-width);
182
- height: var(--menu-item-height);
183
- display: flex;
184
- flex-direction: column;
185
- gap: 10px;
186
- align-items: flex-start;
187
- justify-content: center;
188
- transition: background-color 0.2s;
189
- cursor: pointer;
190
- position: relative;
191
- z-index: 2;
192
- }
193
-
194
- #menuSections > ul li a:before {
195
- content: '';
196
- position: absolute;
197
- width: 2px;
198
- height: 24px;
199
- transform: scaleY(0);
200
- transition: transform ease-in 0.2s;
201
- left: 0;
202
- }
203
-
204
- #menuSections > ul li.active a {
205
- background-color: var(--light-500);
206
- border-right: 1px solid var(--light-300);
207
- }
208
-
209
- #menuSections > ul li.active a:before {
210
- transform: scaleY(1);
211
- background-color: var(--primary-500);
212
- }
213
-
214
- #menuSections .toggle:hover,
215
- #menuSections > ul li a:hover,
216
- #menuSections .toggle:focus,
217
- #menuSections > ul li a:focus {
218
- background: var(--light-500);
219
- border-right: 1px solid var(--light-300);
220
- }
221
-
222
- #menuSections > ul li:not(.active) a:hover:before {
223
- transform: scaleY(1);
224
- background-color: var(--light-contrastText);
225
- }
226
-
227
- #menuSections .toggle i {
228
- position: relative;
229
- }
230
-
231
- #menuContentOverlay {
232
- width: var(--menu-overlay-width);
233
- position: fixed;
234
- top: calc(var(--header-height));
235
- left: calc(var(--menu-sections-width));
236
- bottom: 1px;
237
- background-color: var(--light-500);
238
- border-top: 1px solid var(--light-300);
239
- display: flex;
240
- flex-direction: column;
241
- overflow: hidden;
242
- opacity: 0;
243
- pointer-events: none;
244
- z-index: 1;
245
- transition: opacity 0.3s;
246
- }
247
-
248
- #menuContentOverlay.visible {
249
- opacity: 1;
250
- pointer-events: auto;
251
- }
252
-
253
- #menuContentOverlay > div {
254
- flex: 1;
255
- overflow: auto;
256
- }
257
-
258
- #menuContent {
259
- width: var(--menu-content-width);
260
- transition: left ease-out var(--menu-animation-duration);
261
- background-color: var(--light-400);
262
- overflow: auto;
263
- position: absolute;
264
- top: 0;
265
- bottom: 0;
266
- left: calc(var(--menu-sections-width) - var(--menu-content-width) - 2px); /* 2px from border */
267
- border-top: 1px solid var(--light-300);
268
- }
269
-
270
- #layout.menu-content-visible #menuContent {
271
- left: var(--menu-sections-width);
272
- }
273
-
274
- /* Overlays */
275
-
276
- #backdrop {
277
- position: fixed;
278
- top: 0;
279
- right: 0;
280
- bottom: 0;
281
- left: 0;
282
- background-color: var(--backdrop-color);
283
- opacity: 0;
284
- pointer-events: none;
285
- transition: opacity ease-in-out var(--modal-animation-duration);
286
- display: flex;
287
- flex-direction: column;
288
- align-items: center;
289
- justify-content: center;
290
- }
291
-
292
- #backdrop.visible {
293
- opacity: 1;
294
- pointer-events: auto;
295
- }
296
-
297
- #modal {
298
- transform: scale(0);
299
- display: flex;
300
- flex-direction: column;
301
- transition: transform ease-in-out var(--modal-animation-duration);
302
- width: calc(100% - 60px);
303
- }
304
-
305
- #modal.fit-content {
306
- width: auto;
307
- }
308
-
309
- #modal.large {
310
- max-width: 1000px;
311
- }
312
-
313
- #modal.medium {
314
- max-width: 800px;
315
- }
316
-
317
- #modal.small {
318
- max-width: 600px;
319
- }
320
-
321
- #modal.visible {
322
- transform: scale(1);
323
- }
324
-
325
- #rightPanel {
326
- position: fixed;
327
- display: flex;
328
- flex-direction: column;
329
- top: 0;
330
- bottom: 0;
331
- transition: right var(--right-panel-animation-duration);
332
- background-color: var(--light-400);
333
- right: -800px;
334
- border-top-left-radius: 1rem;
335
- border-bottom-left-radius: 1rem;
336
- }
337
-
338
- #rightPanel.small {
339
- right: -400px;
340
- width: 400px;
341
- }
342
-
343
- #rightPanel.medium {
344
- right: -600px;
345
- width: 600px;
346
- }
347
-
348
- #rightPanel.large {
349
- right: -800px;
350
- width: 800px;
351
- }
352
-
353
- #rightPanel.visible {
354
- right: 0;
355
- }
356
-
357
- #bottomPanel {
358
- position: fixed;
359
- display: flex;
360
- flex-direction: column;
361
- bottom: -420px;
362
- left: 20px;
363
- height: 400px;
364
- transition: bottom 0.3s;
365
- }
366
-
367
- #bottomPanel.visible {
368
- bottom: 20px;
369
- }
370
-
371
- #bottomDialog {
372
- position: fixed;
373
- display: flex;
374
- flex-direction: row;
375
- bottom: -80px;
376
- left: 0;
377
- right: 0;
378
- height: 80px;
379
- transition: bottom 0.3s;
380
- background-color: var(--inverse-500);
381
- color: var(--inverse-contrastText);
382
- justify-content: center;
383
- align-items: center;
384
- gap: 16px;
385
- }
386
-
387
- #bottomDialog .btn-group {
388
- display: flex;
389
- flex-direction: row;
390
- gap: 8px;
391
- }
392
-
393
- #bottomDialog.visible {
394
- bottom: 0;
395
- }
396
-
397
- /* Overlay: toaster */
398
-
399
- .main-toaster h1 {
400
- font-size: 14px;
401
- font-weight: 500;
402
- margin: 0 0 8px 0;
403
- }
404
-
405
- .main-toaster p {
406
- margin: 0;
407
- font-size: 12px;
408
- }
409
-
410
- .main-toaster .toast-body {
411
- align-items: start;
412
- }
413
-
414
- .main-toaster .Toastify__toast-icon {
415
- margin-top: 2px;
416
- width: auto;
417
- }
418
-
419
- /* Other */
420
-
421
- svg path.stackspot-text {
422
- fill: var(--light-contrastText)
423
- }
424
-
425
- a {
426
- color: var(--light-contrastText);
427
- text-decoration: none;
428
- cursor: pointer;
429
- }
430
-
431
- ul {
432
- list-style: none;
433
- margin: 0;
434
- padding: 0;
435
- }
436
-
437
- i {
438
- fill: var(--light-contrastText);
439
- }
440
-
441
- /* Accessibility */
442
- #accessibilityAnnouncer {
443
- position: fixed;
444
- width: 0;
445
- height: 0;
446
- overflow: hidden;
447
- }
448
-
449
- #menuSections .section-submenu {
450
- position: relative;
451
- }
452
-
453
- #menuSections .section-submenu-icon {
454
- opacity: 0;
455
- position: absolute;
456
- top: 27%;
457
- right: 10px;
458
- background-color: inherit;
459
- z-index: 1;
460
- }
461
-
462
- #menuSections .section-submenu-icon:focus-visible {
463
- opacity: 1;
464
- }
1
+ /* Scrollbars */
2
+
3
+ ::-webkit-scrollbar-track {
4
+ background-color: transparent;
5
+ }
6
+
7
+ ::-webkit-scrollbar {
8
+ width: 0.25rem;
9
+ height: 0.5rem;
10
+ background-color: transparent;
11
+ }
12
+
13
+ ::-webkit-scrollbar-thumb {
14
+ background-color: var(--light-600);
15
+ }
16
+
17
+ /* Layout */
18
+
19
+ html {
20
+ display: flex;
21
+ flex-direction: column;
22
+ height: 100%;
23
+ }
24
+
25
+ body {
26
+ margin: 0;
27
+ display: flex;
28
+ flex-direction: column;
29
+ flex: 1;
30
+ background: var(--light-400);
31
+ font: var(--font);
32
+ color: var(--light-contrastText);
33
+ }
34
+
35
+ #root, #layout {
36
+ display: flex;
37
+ flex-direction: column;
38
+ flex: 1;
39
+ }
40
+
41
+ #layout {
42
+ --header-height: 56px;
43
+ --menu-sections-width: 135px;
44
+ --menu-content-width: 240px;
45
+ --menu-item-height: 74px;
46
+ --modal-animation-duration: 0.3s;
47
+ --right-panel-animation-duration: 0.3s;
48
+ --menu-animation-duration: 0.3s;
49
+ --menu-overlay-width: 240px;
50
+ --toastify-font-family: 'Roboto', sans-serif;
51
+ }
52
+
53
+ #layout:not(.menu-compact) {
54
+ --menu-sections-width: 135px;
55
+ --menu-item-height: 56px;
56
+ }
57
+
58
+ #layout.menu-compact {
59
+ --menu-sections-width: 56px;
60
+ --menu-item-height: 56px;
61
+ }
62
+
63
+ #layout.no-menu-sections {
64
+ --menu-sections-width: 0px;
65
+ }
66
+
67
+ #header {
68
+ height: var(--header-height);
69
+ padding: 0 24px;
70
+ align-items: center;
71
+ flex-direction: row;
72
+ display: flex;
73
+ justify-content: space-between;
74
+ position: fixed;
75
+ left: 0;
76
+ right: 0;
77
+ top: 0;
78
+ background-color: var(--light-400);
79
+ }
80
+
81
+ #page {
82
+ position: absolute;
83
+ top: var(--header-height);
84
+ left: var(--menu-sections-width);
85
+ right: 0;
86
+ bottom: 0;
87
+ overflow-y: auto;
88
+ display: flex;
89
+ flex-direction: column;
90
+ background-color: var(--light-300);
91
+ align-items: center;
92
+ padding: 24px;
93
+ transition: left ease-in-out var(--menu-animation-duration);
94
+ }
95
+
96
+ #layout.menu-content-visible #page {
97
+ left: calc(var(--menu-sections-width) + var(--menu-content-width));
98
+ }
99
+
100
+ #layout.no-menu-sections:not(.menu-content-visible) #page {
101
+ border-top-left-radius: 0;
102
+ }
103
+
104
+ #content {
105
+ width: 100%;
106
+ max-width: 1144px;
107
+ display: flex;
108
+ flex-direction: column;
109
+ }
110
+
111
+ /* Menu */
112
+
113
+ #menu {
114
+ position: fixed;
115
+ display: flex;
116
+ flex-direction: row;
117
+ top: var(--header-height);
118
+ bottom: 0;
119
+ }
120
+
121
+ #menu svg {
122
+ fill: var(--light-contrastText);
123
+ }
124
+
125
+ #menu .item-row-group svg {
126
+ fill: var(--light-700);
127
+ }
128
+
129
+ #menu .toggle .expand {
130
+ fill: var(--primary-500);
131
+ }
132
+
133
+ #menu .toggle .expand,
134
+ #menu .toggle .collapse {
135
+ position: absolute;
136
+ transition: opacity 0.3s;
137
+ }
138
+
139
+ #menu .toggle .expand,
140
+ #layout.menu-compact .toggle .collapse {
141
+ opacity: 0;
142
+ }
143
+
144
+ #menu .toggle .collapse,
145
+ #layout.menu-compact .toggle .expand {
146
+ opacity: 1;
147
+ }
148
+
149
+ #layout .section-label {
150
+ line-height: 0.875rem;
151
+ }
152
+
153
+ #layout.menu-compact .section-label {
154
+ display: none;
155
+ }
156
+
157
+ #layout:not(.menu-compact) .section-label {
158
+ display: block;
159
+ }
160
+
161
+ #menuSections {
162
+ width: var(--menu-sections-width);
163
+ display: flex;
164
+ flex-direction: column;
165
+ padding: 0 0 10px;
166
+ justify-content: space-between;
167
+ background-color: var(--light-400);
168
+ position: relative;
169
+ border-right: 1px solid var(--light-300);
170
+ border-top: 1px solid var(--light-300);
171
+ }
172
+
173
+ #menuSections .sections-footer {
174
+ padding: 16px;
175
+ }
176
+
177
+ #menuSections .toggle,
178
+ #menuSections > ul li a {
179
+ background: transparent;
180
+ border: none;
181
+ outline: none;
182
+ width: var(--menu-sections-width);
183
+ height: var(--menu-item-height);
184
+ display: flex;
185
+ flex-direction: column;
186
+ gap: 10px;
187
+ align-items: flex-start;
188
+ justify-content: center;
189
+ transition: background-color 0.2s;
190
+ cursor: pointer;
191
+ position: relative;
192
+ z-index: 2;
193
+ }
194
+
195
+ #menuSections > ul li a:before {
196
+ content: '';
197
+ position: absolute;
198
+ width: 2px;
199
+ height: 24px;
200
+ transform: scaleY(0);
201
+ transition: transform ease-in 0.2s;
202
+ left: 0;
203
+ }
204
+
205
+ #menuSections > ul li.active a {
206
+ background-color: var(--light-500);
207
+ border-right: 1px solid var(--light-300);
208
+ }
209
+
210
+ #menuSections > ul li.active a:before {
211
+ transform: scaleY(1);
212
+ background-color: var(--primary-500);
213
+ }
214
+
215
+ #menuSections .toggle:hover,
216
+ #menuSections > ul li a:hover,
217
+ #menuSections .toggle:focus,
218
+ #menuSections > ul li a:focus {
219
+ background: var(--light-500);
220
+ border-right: 1px solid var(--light-300);
221
+ }
222
+
223
+ #menuSections > ul li:not(.active) a:hover:before {
224
+ transform: scaleY(1);
225
+ background-color: var(--light-contrastText);
226
+ }
227
+
228
+ #menuSections .toggle i {
229
+ position: relative;
230
+ }
231
+
232
+ #menuContentOverlay {
233
+ width: var(--menu-overlay-width);
234
+ position: fixed;
235
+ top: calc(var(--header-height));
236
+ left: calc(var(--menu-sections-width));
237
+ bottom: 1px;
238
+ background-color: var(--light-500);
239
+ border-top: 1px solid var(--light-300);
240
+ display: flex;
241
+ flex-direction: column;
242
+ overflow: hidden;
243
+ opacity: 0;
244
+ pointer-events: none;
245
+ z-index: 1;
246
+ transition: opacity 0.3s;
247
+ }
248
+
249
+ #menuContentOverlay.visible {
250
+ opacity: 1;
251
+ pointer-events: auto;
252
+ }
253
+
254
+ #menuContentOverlay > div {
255
+ flex: 1;
256
+ overflow: auto;
257
+ }
258
+
259
+ #menuContent {
260
+ width: var(--menu-content-width);
261
+ transition: left ease-out var(--menu-animation-duration);
262
+ background-color: var(--light-400);
263
+ overflow: auto;
264
+ position: absolute;
265
+ top: 0;
266
+ bottom: 0;
267
+ left: calc(var(--menu-sections-width) - var(--menu-content-width) - 2px); /* 2px from border */
268
+ border-top: 1px solid var(--light-300);
269
+ }
270
+
271
+ #layout.menu-content-visible #menuContent {
272
+ left: var(--menu-sections-width);
273
+ }
274
+
275
+ /* Overlays */
276
+
277
+ #backdrop {
278
+ position: fixed;
279
+ top: 0;
280
+ right: 0;
281
+ bottom: 0;
282
+ left: 0;
283
+ background-color: var(--backdrop-color);
284
+ opacity: 0;
285
+ pointer-events: none;
286
+ transition: opacity ease-in-out var(--modal-animation-duration);
287
+ display: flex;
288
+ flex-direction: column;
289
+ align-items: center;
290
+ justify-content: center;
291
+ }
292
+
293
+ #backdrop.visible {
294
+ opacity: 1;
295
+ pointer-events: auto;
296
+ }
297
+
298
+ #modal {
299
+ transform: scale(0);
300
+ display: flex;
301
+ flex-direction: column;
302
+ transition: transform ease-in-out var(--modal-animation-duration);
303
+ width: calc(100% - 60px);
304
+ }
305
+
306
+ #modal.fit-content {
307
+ width: auto;
308
+ }
309
+
310
+ #modal.large {
311
+ max-width: 1000px;
312
+ }
313
+
314
+ #modal.medium {
315
+ max-width: 800px;
316
+ }
317
+
318
+ #modal.small {
319
+ max-width: 600px;
320
+ }
321
+
322
+ #modal.visible {
323
+ transform: scale(1);
324
+ }
325
+
326
+ #rightPanel {
327
+ position: fixed;
328
+ display: flex;
329
+ flex-direction: column;
330
+ top: 0;
331
+ bottom: 0;
332
+ transition: right var(--right-panel-animation-duration);
333
+ background-color: var(--light-400);
334
+ right: -800px;
335
+ border-top-left-radius: 1rem;
336
+ border-bottom-left-radius: 1rem;
337
+ }
338
+
339
+ #rightPanel.small {
340
+ right: -400px;
341
+ width: 400px;
342
+ }
343
+
344
+ #rightPanel.medium {
345
+ right: -600px;
346
+ width: 600px;
347
+ }
348
+
349
+ #rightPanel.large {
350
+ right: -800px;
351
+ width: 800px;
352
+ }
353
+
354
+ #rightPanel.visible {
355
+ right: 0;
356
+ }
357
+
358
+ #bottomPanel {
359
+ position: fixed;
360
+ display: flex;
361
+ flex-direction: column;
362
+ bottom: -420px;
363
+ left: 20px;
364
+ height: 400px;
365
+ transition: bottom 0.3s;
366
+ }
367
+
368
+ #bottomPanel.visible {
369
+ bottom: 20px;
370
+ }
371
+
372
+ #bottomDialog {
373
+ position: fixed;
374
+ display: flex;
375
+ flex-direction: row;
376
+ bottom: -80px;
377
+ left: 0;
378
+ right: 0;
379
+ height: 80px;
380
+ transition: bottom 0.3s;
381
+ background-color: var(--inverse-500);
382
+ color: var(--inverse-contrastText);
383
+ justify-content: center;
384
+ align-items: center;
385
+ gap: 16px;
386
+ }
387
+
388
+ #bottomDialog .btn-group {
389
+ display: flex;
390
+ flex-direction: row;
391
+ gap: 8px;
392
+ }
393
+
394
+ #bottomDialog.visible {
395
+ bottom: 0;
396
+ }
397
+
398
+ /* Overlay: toaster */
399
+
400
+ .main-toaster h1 {
401
+ font-size: 14px;
402
+ font-weight: 500;
403
+ margin: 0 0 8px 0;
404
+ }
405
+
406
+ .main-toaster p {
407
+ margin: 0;
408
+ font-size: 12px;
409
+ }
410
+
411
+ .main-toaster .toast-body {
412
+ align-items: start;
413
+ }
414
+
415
+ .main-toaster .Toastify__toast-icon {
416
+ margin-top: 2px;
417
+ width: auto;
418
+ }
419
+
420
+ /* Other */
421
+
422
+ svg path.stackspot-text {
423
+ fill: var(--light-contrastText)
424
+ }
425
+
426
+ a {
427
+ color: var(--light-contrastText);
428
+ text-decoration: none;
429
+ cursor: pointer;
430
+ }
431
+
432
+ ul {
433
+ list-style: none;
434
+ margin: 0;
435
+ padding: 0;
436
+ }
437
+
438
+ i {
439
+ fill: var(--light-contrastText);
440
+ }
441
+
442
+ /* Accessibility */
443
+ #accessibilityAnnouncer {
444
+ position: fixed;
445
+ width: 0;
446
+ height: 0;
447
+ overflow: hidden;
448
+ }
449
+
450
+ #menuSections .section-submenu {
451
+ position: relative;
452
+ }
453
+
454
+ #menuSections .section-submenu-icon {
455
+ opacity: 0;
456
+ position: absolute;
457
+ top: 27%;
458
+ right: 10px;
459
+ background-color: inherit;
460
+ z-index: 1;
461
+ }
462
+
463
+ #menuSections .section-submenu-icon:focus-visible {
464
+ opacity: 1;
465
+ }