@stack-spot/portal-layout 0.0.54 → 0.0.56

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