@flux-ui/application 3.0.0-next.39

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 (59) hide show
  1. package/README.md +16 -0
  2. package/dist/component/FluxApplication.vue.d.ts +28 -0
  3. package/dist/component/FluxApplicationContent.vue.d.ts +24 -0
  4. package/dist/component/FluxApplicationHero.vue.d.ts +26 -0
  5. package/dist/component/FluxApplicationMenu.vue.d.ts +29 -0
  6. package/dist/component/FluxApplicationMenuAccount.vue.d.ts +29 -0
  7. package/dist/component/FluxApplicationMenuContext.vue.d.ts +15 -0
  8. package/dist/component/FluxApplicationMenuContextStack.vue.d.ts +6 -0
  9. package/dist/component/FluxApplicationMenuPromo.vue.d.ts +22 -0
  10. package/dist/component/FluxApplicationMenuToggle.vue.d.ts +3 -0
  11. package/dist/component/FluxApplicationSection.vue.d.ts +26 -0
  12. package/dist/component/FluxApplicationSide.vue.d.ts +20 -0
  13. package/dist/component/FluxApplicationTop.vue.d.ts +29 -0
  14. package/dist/component/index.d.ts +12 -0
  15. package/dist/composable/index.d.ts +3 -0
  16. package/dist/composable/useApplicationContextMenu.d.ts +7 -0
  17. package/dist/composable/useApplicationContextRegistration.d.ts +2 -0
  18. package/dist/composable/useApplicationInjection.d.ts +2 -0
  19. package/dist/composable/useApplicationMenu.d.ts +26 -0
  20. package/dist/data/index.d.ts +29 -0
  21. package/dist/index.css +746 -0
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.js +4331 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/routing/useNamedRoutes.d.ts +14 -0
  26. package/dist/routing/useRoute.d.ts +8 -0
  27. package/dist/types.d.ts +13 -0
  28. package/package.json +71 -0
  29. package/src/component/FluxApplication.vue +144 -0
  30. package/src/component/FluxApplicationContent.vue +37 -0
  31. package/src/component/FluxApplicationHero.vue +34 -0
  32. package/src/component/FluxApplicationMenu.vue +73 -0
  33. package/src/component/FluxApplicationMenuAccount.vue +47 -0
  34. package/src/component/FluxApplicationMenuContext.vue +78 -0
  35. package/src/component/FluxApplicationMenuContextStack.vue +53 -0
  36. package/src/component/FluxApplicationMenuPromo.vue +23 -0
  37. package/src/component/FluxApplicationMenuToggle.vue +30 -0
  38. package/src/component/FluxApplicationSection.vue +40 -0
  39. package/src/component/FluxApplicationSide.vue +16 -0
  40. package/src/component/FluxApplicationTop.vue +74 -0
  41. package/src/component/index.ts +12 -0
  42. package/src/composable/index.ts +3 -0
  43. package/src/composable/useApplicationContextMenu.ts +19 -0
  44. package/src/composable/useApplicationContextRegistration.ts +25 -0
  45. package/src/composable/useApplicationInjection.ts +12 -0
  46. package/src/composable/useApplicationMenu.ts +79 -0
  47. package/src/css/component/Application.module.scss +88 -0
  48. package/src/css/component/ApplicationContent.module.scss +119 -0
  49. package/src/css/component/ApplicationHero.module.scss +17 -0
  50. package/src/css/component/ApplicationMenu.module.scss +421 -0
  51. package/src/css/component/ApplicationSection.module.scss +43 -0
  52. package/src/css/component/ApplicationSide.module.scss +21 -0
  53. package/src/css/component/ApplicationTop.module.scss +111 -0
  54. package/src/data/index.ts +38 -0
  55. package/src/index.ts +3 -0
  56. package/src/routing/useNamedRoutes.ts +34 -0
  57. package/src/routing/useRoute.ts +11 -0
  58. package/src/types.d.ts +13 -0
  59. package/tsconfig.json +7 -0
package/dist/index.css ADDED
@@ -0,0 +1,746 @@
1
+ @charset "UTF-8";:root {
2
+ --application-duration: 360ms;
3
+ --application-menu-surface: var(--gray-100);
4
+ --application-menu-surface-stroke: var(--gray-200);
5
+ --application-menu-width: 300px;
6
+ --application-menu-width-collapsed: 69px;
7
+ --application-side-width: 300px;
8
+ --application-top-height: 66px;
9
+ }
10
+
11
+ [dark] {
12
+ --application-menu-surface: color-mix(in srgb, var(--gray-25), black 25%);
13
+ --application-menu-surface-stroke: var(--gray-100);
14
+ }
15
+
16
+ .application {
17
+ position: relative;
18
+ display: flex;
19
+ transition: padding var(--application-duration) var(--swift-out);
20
+ transition-property: padding-left, padding-right;
21
+ }
22
+ .application:has(> .application-side) {
23
+ padding-right: var(--application-side-width);
24
+ }
25
+
26
+ .application-body {
27
+ position: relative;
28
+ display: flex;
29
+ min-width: 0;
30
+ min-height: 100dvh;
31
+ flex-flow: column;
32
+ flex-grow: 1;
33
+ }
34
+ .application-body:has(> .application-content-full > :is(.calendar, .table)) {
35
+ max-height: 100dvh;
36
+ }
37
+
38
+ .application-menu-backdrop {
39
+ position: fixed;
40
+ display: none;
41
+ inset: 0;
42
+ width: 100dvw;
43
+ height: 100dvh;
44
+ padding: 0;
45
+ border: 0;
46
+ background: rgb(from var(--gray-200) r g b/0.5);
47
+ backdrop-filter: blur(3px) saturate(180%);
48
+ transition: var(--application-duration) var(--swift-out);
49
+ transition-property: background, backdrop-filter, opacity;
50
+ z-index: 1900;
51
+ }
52
+
53
+ @media (min-width: 1024px) {
54
+ .application:has(> .application-menu) {
55
+ padding-left: var(--application-menu-width);
56
+ }
57
+ .application:has(> .application-menu[data-collapsed][data-collapsible]) {
58
+ padding-left: var(--application-menu-width-collapsed);
59
+ }
60
+ }
61
+ @media (max-width: 1023.98px) {
62
+ .application:has(> .application-side) {
63
+ padding-right: 0;
64
+ }
65
+ .application-menu-backdrop {
66
+ display: block;
67
+ }
68
+ .application:has(> .application-menu[data-collapsed]) .application-menu-backdrop {
69
+ pointer-events: none;
70
+ opacity: 0;
71
+ }
72
+ html[data-application-menu-open],
73
+ html[data-application-menu-open] body {
74
+ overflow: hidden;
75
+ overscroll-behavior: contain;
76
+ }
77
+ }.application-content {
78
+ position: relative;
79
+ display: flex;
80
+ container: applicationContent/inline-size;
81
+ margin-left: auto;
82
+ margin-right: auto;
83
+ padding-top: 21px;
84
+ padding-bottom: 21px;
85
+ flex-flow: column;
86
+ flex-grow: 1;
87
+ gap: 21px;
88
+ }
89
+
90
+ .application-content-default,
91
+ .application-content-dashboard {
92
+ width: min(1620px, 100% - 42px);
93
+ }
94
+
95
+ .application-content-dashboard {
96
+ gap: 45px;
97
+ }
98
+
99
+ .application-content-full {
100
+ padding-top: 0;
101
+ padding-bottom: 0;
102
+ width: calc(100% - 42px);
103
+ }
104
+
105
+ .application-content-medium {
106
+ width: min(1280px, 100% - 42px);
107
+ }
108
+
109
+ .application-content-narrow {
110
+ width: min(840px, 100% - 42px);
111
+ }
112
+
113
+ .application-content-full:has(> :is(.calendar, .table)) {
114
+ min-height: 0;
115
+ width: 100%;
116
+ contain: paint;
117
+ overflow: hidden;
118
+ }
119
+ .application-content-full > :is(.calendar, .table) {
120
+ max-height: 100%;
121
+ flex-grow: 1;
122
+ }
123
+ .application-content-full > .calendar {
124
+ border-left: 0;
125
+ border-right: 0;
126
+ border-radius: 0;
127
+ }
128
+ .application-content-full > .calendar .calendar-actions {
129
+ padding-left: 21px;
130
+ padding-right: 21px;
131
+ }
132
+ .application-content-full > .table .table-cell:first-child .table-cell-content {
133
+ padding-left: 21px;
134
+ }
135
+ .application-content-full > .table .table-cell:last-child .table-cell-content {
136
+ padding-right: 21px;
137
+ }
138
+
139
+ @media (max-width: 1023.98px) {
140
+ .application-content-default,
141
+ .application-content-medium,
142
+ .application-content-narrow {
143
+ gap: 15px;
144
+ }
145
+ .application-content-dashboard {
146
+ gap: 30px;
147
+ }
148
+ .application-content-full {
149
+ width: 100%;
150
+ }
151
+ .application-content-full > :is(.calendar, .table) {
152
+ margin-left: 0;
153
+ margin-right: 0;
154
+ height: auto;
155
+ }
156
+ .application-content-full > .calendar .calendar-actions {
157
+ padding-left: 12px;
158
+ padding-right: 12px;
159
+ }
160
+ .application-content-full > .table .table-cell:first-child .table-cell-content {
161
+ padding-left: 12px;
162
+ }
163
+ .application-content-full > .table .table-cell:last-child .table-cell-content {
164
+ padding-right: 12px;
165
+ }
166
+ }.application-hero {
167
+ display: flex;
168
+ align-items: center;
169
+ flex-flow: row;
170
+ gap: 21px;
171
+ }
172
+
173
+ .application-hero-body {
174
+ display: flex;
175
+ flex-flow: column;
176
+ flex-grow: 1;
177
+ gap: 6px;
178
+ }
179
+
180
+ .application-hero-subtitle {
181
+ color: var(--foreground-secondary);
182
+ }
183
+ .application-menu {
184
+ position: fixed;
185
+ display: flex;
186
+ top: 0;
187
+ left: 0;
188
+ height: 100dvh;
189
+ width: var(--application-menu-width);
190
+ flex-flow: column;
191
+ transition: var(--application-duration) var(--swift-out);
192
+ transition-property: translate, width;
193
+ background: var(--application-menu-surface);
194
+ border-right: 1px solid var(--application-menu-surface-stroke);
195
+ overflow: hidden;
196
+ z-index: 500;
197
+ }
198
+
199
+ .application-menu-footer,
200
+ .application-menu-header,
201
+ .application-menu-panel {
202
+ padding: 12px;
203
+ gap: 12px;
204
+ }
205
+
206
+ .application-menu-footer,
207
+ .application-menu-header {
208
+ position: relative;
209
+ background: var(--application-menu-surface);
210
+ z-index: 1;
211
+ }
212
+ .application-menu-footer::before,
213
+ .application-menu-header::before {
214
+ position: absolute;
215
+ left: 0;
216
+ right: 0;
217
+ height: 18px;
218
+ width: 100%;
219
+ content: "";
220
+ pointer-events: none;
221
+ }
222
+
223
+ .application-menu-footer {
224
+ max-height: 50vh;
225
+ padding-bottom: max(12px, env(safe-area-inset-bottom));
226
+ transition: var(--application-duration) var(--swift-out);
227
+ transition-property: max-height, opacity, padding-top, padding-bottom;
228
+ }
229
+ .application-menu-footer::before {
230
+ bottom: 100%;
231
+ background: linear-gradient(to top, var(--application-menu-surface), transparent);
232
+ transition: opacity var(--application-duration) var(--swift-out);
233
+ }
234
+ .application-menu-footer {
235
+ /**
236
+ * Collapses the footer in sync with the slider track when the
237
+ * user navigates into a context-menu panel. Animating `max-height`
238
+ * is the standard hack to transition a height-auto element; 50vh
239
+ * is far above any realistic footer height yet small enough to
240
+ * animate smoothly without the leading edge appearing to "wait".
241
+ */
242
+ }
243
+ .application-menu-footer[data-hidden] {
244
+ max-height: 0;
245
+ padding-top: 0;
246
+ padding-bottom: 0;
247
+ opacity: 0;
248
+ pointer-events: none;
249
+ overflow: hidden;
250
+ }
251
+ .application-menu-footer[data-hidden]::before {
252
+ opacity: 0;
253
+ }
254
+
255
+ .application-menu-header {
256
+ padding-top: max(12px, env(safe-area-inset-top));
257
+ border-bottom: 1px solid var(--application-menu-surface-stroke);
258
+ }
259
+ .application-menu-header::before {
260
+ top: calc(100% + 1px);
261
+ background: linear-gradient(to bottom, var(--application-menu-surface), transparent);
262
+ }
263
+
264
+ .application-menu-stage {
265
+ position: relative;
266
+ min-height: 0;
267
+ flex: 1 1 auto;
268
+ overflow: hidden;
269
+ }
270
+
271
+ .application-menu-track {
272
+ display: flex;
273
+ flex-flow: row nowrap;
274
+ height: 100%;
275
+ transform: translateX(calc(var(--view-index, 0) * -100%));
276
+ transition: transform var(--application-duration) var(--swift-out);
277
+ will-change: transform;
278
+ }
279
+
280
+ .application-menu-panel {
281
+ display: flex;
282
+ flex: 0 0 100%;
283
+ flex-flow: column;
284
+ width: 100%;
285
+ overflow-y: auto;
286
+ }
287
+
288
+ .application-menu-page-indicator {
289
+ display: flex;
290
+ flex-flow: row nowrap;
291
+ gap: 6px;
292
+ justify-content: center;
293
+ align-items: center;
294
+ padding: 9px 12px;
295
+ background: var(--application-menu-surface);
296
+ z-index: 1;
297
+ }
298
+
299
+ .application-menu-page-indicator-dot {
300
+ height: 6px;
301
+ width: 6px;
302
+ padding: 0;
303
+ cursor: pointer;
304
+ background: transparent;
305
+ border: 1.5px solid var(--application-menu-surface-stroke);
306
+ border-radius: 50%;
307
+ transition: 200ms var(--swift-out);
308
+ transition-property: background, border-color, transform;
309
+ }
310
+ @media (hover: hover) {
311
+ .application-menu-page-indicator-dot:hover {
312
+ border-color: var(--foreground-secondary);
313
+ transform: scale(1.2);
314
+ }
315
+ }
316
+ .application-menu-page-indicator-dot {
317
+ outline: 2px solid rgb(from var(--primary-600) r g b/0);
318
+ outline-offset: 0;
319
+ }
320
+ .application-menu-page-indicator-dot:focus-visible {
321
+ outline-color: var(--primary-600);
322
+ outline-offset: 0;
323
+ }
324
+
325
+ .application-menu-page-indicator-dot-active {
326
+ background: var(--foreground-prominent);
327
+ border-color: var(--foreground-prominent);
328
+ }
329
+
330
+ /**
331
+ * No visual animation on enter/leave — just hold the leaving panel in
332
+ * the DOM for the duration of the slider's translate transition so it
333
+ * stays visible while the track slides away from it. Without this the
334
+ * v-for would unmount the panel the moment matches shrinks, leaving
335
+ * the slider sliding over an empty track.
336
+ */
337
+ .application-menu-panel-enter-active,
338
+ .application-menu-panel-enter-from,
339
+ .application-menu-panel-leave-active,
340
+ .application-menu-panel-leave-to {
341
+ transition: opacity var(--application-duration) var(--swift-out);
342
+ }
343
+
344
+ .application-menu-panel-leave-active {
345
+ pointer-events: none;
346
+ }
347
+
348
+ .application-menu .divider {
349
+ margin: 3px 12px;
350
+ }
351
+
352
+ .application-menu .divider-content::before,
353
+ .application-menu .divider-content::after,
354
+ .application-menu .divider-line {
355
+ background: var(--application-menu-surface-stroke);
356
+ }
357
+
358
+ .application-menu .menu-sub-header {
359
+ --surface: var(--application-menu-surface);
360
+ }
361
+
362
+ .application-menu .menu-item {
363
+ position: relative;
364
+ }
365
+ @media (hover: hover) {
366
+ .application-menu .menu-item:hover {
367
+ background: var(--gray-200);
368
+ }
369
+ }
370
+ .application-menu .menu-item:active {
371
+ background: var(--gray-300);
372
+ }
373
+ .application-menu .menu-item::before {
374
+ position: absolute;
375
+ display: block;
376
+ content: "";
377
+ top: 50%;
378
+ right: 0;
379
+ height: 1em;
380
+ width: 3px;
381
+ background: var(--foreground-secondary);
382
+ border-radius: var(--radius);
383
+ opacity: 0;
384
+ transition: 300ms var(--swift-out);
385
+ transition-property: height, opacity;
386
+ translate: 8px -50%;
387
+ }
388
+
389
+ .application-menu .menu-item-icon {
390
+ color: var(--foreground-secondary);
391
+ }
392
+
393
+ .application-menu .menu-item-label {
394
+ transition: var(--application-duration) var(--swift-out);
395
+ transition-property: filter, opacity, translate;
396
+ white-space: nowrap;
397
+ }
398
+
399
+ .application-menu .menu-item-active {
400
+ background: var(--gray-200);
401
+ color: var(--foreground-prominent);
402
+ }
403
+ .application-menu .menu-item-active::before {
404
+ height: 1.6em;
405
+ opacity: 1;
406
+ }
407
+
408
+ .application-menu .menu-item-active .menu-item-icon {
409
+ color: var(--foreground);
410
+ }
411
+
412
+ .application-menu .menu-item-active .menu-item-label {
413
+ font-weight: 500;
414
+ }
415
+
416
+ .application-menu-account {
417
+ position: relative;
418
+ pointer-events: none;
419
+ }
420
+
421
+ .application-menu-account-switcher {
422
+ pointer-events: auto;
423
+ }
424
+
425
+ .application-menu-account .menu-item-label {
426
+ font-weight: 600;
427
+ }
428
+
429
+ .application-menu-account .avatar {
430
+ margin: -5px;
431
+ font-size: 30px;
432
+ }
433
+
434
+ .application-menu-context {
435
+ display: flex;
436
+ margin-top: -12px;
437
+ margin-left: -12px;
438
+ margin-right: -12px;
439
+ padding: 15px;
440
+ flex-flow: row nowrap;
441
+ gap: 15px;
442
+ border: 1px solid var(--application-menu-surface-stroke);
443
+ border-top: 0;
444
+ border-left: 0;
445
+ border-right: 0;
446
+ }
447
+
448
+ .application-menu-context-content {
449
+ display: flex;
450
+ align-self: center;
451
+ flex-flow: column;
452
+ }
453
+ .application-menu-context-content strong {
454
+ color: var(--foreground-prominent);
455
+ }
456
+ .application-menu-context-content span {
457
+ color: var(--foreground-secondary);
458
+ font-size: 14px;
459
+ }
460
+
461
+ .application-menu-context-pill {
462
+ position: relative;
463
+ display: flex;
464
+ flex-flow: row nowrap;
465
+ gap: 9px;
466
+ align-items: center;
467
+ margin: -3px -6px 6px;
468
+ padding: 9px 12px;
469
+ cursor: pointer;
470
+ color: var(--foreground-secondary);
471
+ background: transparent;
472
+ border: 1px solid var(--application-menu-surface-stroke);
473
+ border-radius: var(--radius);
474
+ transition: background 200ms var(--swift-out);
475
+ }
476
+ @media (hover: hover) {
477
+ .application-menu-context-pill:hover {
478
+ background: var(--gray-200);
479
+ }
480
+ }
481
+ .application-menu-context-pill:active {
482
+ background: var(--gray-300);
483
+ }
484
+ .application-menu-context-pill {
485
+ outline: 2px solid rgb(from var(--primary-600) r g b/0);
486
+ outline-offset: 0;
487
+ }
488
+ .application-menu-context-pill:focus-visible {
489
+ outline-color: var(--primary-600);
490
+ outline-offset: 0;
491
+ }
492
+
493
+ .application-menu-context-pill-content {
494
+ display: flex;
495
+ flex: 1 1 auto;
496
+ flex-flow: column;
497
+ min-width: 0;
498
+ }
499
+ .application-menu-context-pill-content strong {
500
+ font-weight: 500;
501
+ font-size: 14px;
502
+ line-height: 1.2;
503
+ white-space: nowrap;
504
+ overflow: hidden;
505
+ color: var(--foreground-prominent);
506
+ text-overflow: ellipsis;
507
+ transition: var(--application-duration) var(--swift-out);
508
+ transition-property: filter, opacity, translate;
509
+ }
510
+ .application-menu-context-pill-content span {
511
+ font-size: 12px;
512
+ line-height: 1.2;
513
+ white-space: nowrap;
514
+ overflow: hidden;
515
+ color: var(--foreground-secondary);
516
+ text-overflow: ellipsis;
517
+ transition: var(--application-duration) var(--swift-out);
518
+ transition-property: filter, opacity, translate;
519
+ }
520
+
521
+ .application-menu-promo {
522
+ display: flex;
523
+ padding: 12px;
524
+ flex-flow: row;
525
+ gap: 12px;
526
+ background: var(--gray-25);
527
+ border: 1px solid var(--application-menu-surface-stroke);
528
+ border-radius: var(--radius);
529
+ }
530
+
531
+ .application-menu-promo > .icon {
532
+ margin: 2px;
533
+ color: var(--gray-600);
534
+ font-size: 16px;
535
+ }
536
+
537
+ .application-menu-promo-content {
538
+ display: flex;
539
+ flex-flow: column;
540
+ gap: 6px;
541
+ font-size: 14px;
542
+ }
543
+
544
+ .application-menu-promo-content a {
545
+ color: var(--gray-700);
546
+ }
547
+
548
+ .application-menu-toggle.menu-item {
549
+ height: min-content;
550
+ align-self: center;
551
+ color: var(--foreground);
552
+ flex-grow: 0;
553
+ flex-shrink: 0;
554
+ }
555
+
556
+ .application-menu-toggle-icon {
557
+ height: 1em;
558
+ width: 1em;
559
+ flex-shrink: 0;
560
+ font-size: 18px;
561
+ line-height: 1;
562
+ overflow: visible;
563
+ }
564
+ .application-menu-toggle-icon path {
565
+ fill: currentColor;
566
+ }
567
+
568
+ @media (min-width: 1024px) {
569
+ .application-menu[data-collapsed][data-collapsible] {
570
+ width: var(--application-menu-width-collapsed);
571
+ }
572
+ .application-menu[data-collapsed][data-collapsible] .menu-item-label {
573
+ filter: blur(6px);
574
+ opacity: 0;
575
+ translate: -12px 0;
576
+ }
577
+ .application-menu[data-collapsed][data-collapsible] .application-menu-promo,
578
+ .application-menu[data-collapsed][data-collapsible] .application-menu-context {
579
+ opacity: 0;
580
+ pointer-events: none;
581
+ }
582
+ .application-menu[data-collapsed][data-collapsible] .application-menu-context-pill-content strong,
583
+ .application-menu[data-collapsed][data-collapsible] .application-menu-context-pill-content span {
584
+ filter: blur(6px);
585
+ opacity: 0;
586
+ translate: -12px 0;
587
+ }
588
+ }
589
+ @media (max-width: 1023.98px) {
590
+ .application-menu {
591
+ width: min(300px, 100dvw - 42px);
592
+ z-index: 2000;
593
+ }
594
+ .application-menu[data-collapsed] {
595
+ translate: -100% 0;
596
+ }
597
+ }.application-section {
598
+ display: flex;
599
+ flex-flow: column;
600
+ gap: 21px;
601
+ }
602
+
603
+ .application-section-header {
604
+ display: flex;
605
+ align-items: center;
606
+ flex-flow: row;
607
+ gap: 21px;
608
+ }
609
+ .application-section-header h2 {
610
+ flex-grow: 1;
611
+ color: var(--foreground-prominent);
612
+ }
613
+
614
+ .application-section-info {
615
+ font-size: 14px;
616
+ color: var(--foreground-secondary);
617
+ }
618
+
619
+ .application-section-content {
620
+ display: flex;
621
+ flex-flow: column;
622
+ flex-grow: 1;
623
+ gap: 21px;
624
+ }
625
+
626
+ .grid-column > .application-section {
627
+ min-height: 100%;
628
+ }
629
+
630
+ @media (max-width: 1023.98px) {
631
+ .application-section-header {
632
+ align-items: flex-start;
633
+ flex-flow: column;
634
+ gap: 0;
635
+ }
636
+ }.application-side {
637
+ position: fixed;
638
+ display: flex;
639
+ top: 0;
640
+ right: 0;
641
+ height: 100dvh;
642
+ width: var(--application-side-width);
643
+ flex-flow: column;
644
+ background: var(--surface);
645
+ border-left: 1px solid var(--surface-stroke);
646
+ overflow: hidden;
647
+ z-index: 500;
648
+ }
649
+
650
+ @media (max-width: 1279.98px) {
651
+ .application-side {
652
+ display: none;
653
+ }
654
+ }.application-top {
655
+ position: sticky;
656
+ top: 0;
657
+ background: rgb(from var(--surface) r g b/0.975);
658
+ background-clip: padding-box;
659
+ backdrop-filter: blur(3px) saturate(180%);
660
+ border-bottom: 1px solid transparent;
661
+ transition: 300ms var(--swift-out);
662
+ transition-property: border-color, box-shadow;
663
+ z-index: 400;
664
+ }
665
+
666
+ .application-top-scrolled {
667
+ border-bottom-color: var(--surface-stroke-out);
668
+ box-shadow: var(--shadow-lg);
669
+ }
670
+
671
+ .application-top-bar {
672
+ display: flex;
673
+ height: var(--application-top-height);
674
+ padding-left: 21px;
675
+ padding-right: 21px;
676
+ align-items: center;
677
+ flex-flow: row;
678
+ gap: 15px;
679
+ color: var(--foreground-prominent);
680
+ }
681
+
682
+ .application-top-bar-title {
683
+ font-size: 16px;
684
+ font-weight: 700;
685
+ line-height: 1;
686
+ overflow: hidden;
687
+ text-overflow: ellipsis;
688
+ }
689
+
690
+ .application-top-bar > .separator {
691
+ height: 18px;
692
+ }
693
+
694
+ @media (min-width: 1024px) {
695
+ .application-top-menu-toggle-hidden {
696
+ display: none;
697
+ }
698
+ }
699
+ .application-top-tabs {
700
+ position: relative;
701
+ display: flex;
702
+ margin-top: -6px;
703
+ margin-left: auto;
704
+ margin-right: auto;
705
+ flex-flow: row;
706
+ gap: 21px;
707
+ }
708
+ .application-top-tabs .tab-bar {
709
+ --tab-padding: 18px;
710
+ width: 100%;
711
+ box-shadow: unset;
712
+ }
713
+
714
+ .application-top-tabs-default,
715
+ .application-top-tabs-dashboard {
716
+ width: min(1620px, 100% - 42px);
717
+ }
718
+
719
+ .application-top-tabs-full {
720
+ width: calc(100% - 42px);
721
+ }
722
+
723
+ .application-top-tabs-medium {
724
+ width: min(1280px, 100% - 42px);
725
+ }
726
+
727
+ .application-top-tabs-narrow {
728
+ width: min(840px, 100% - 42px);
729
+ }
730
+
731
+ @media (max-width: 1023.98px) {
732
+ .application-top,
733
+ .application-top-scrolled {
734
+ padding-top: env(safe-area-inset-top);
735
+ }
736
+ .application-top-bar > .icon {
737
+ display: none;
738
+ }
739
+ .application-menu-toggle {
740
+ margin-left: -12px;
741
+ margin-right: -15px;
742
+ }
743
+ }
744
+ .application-top:has(+ .application-content-full > .table) {
745
+ border-bottom-color: var(--surface-stroke-out);
746
+ }/*$vite$:1*/