qdadm 1.1.1 → 1.1.2
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/package.json
CHANGED
|
@@ -569,51 +569,8 @@ const showBreadcrumb = computed<boolean>(() => {
|
|
|
569
569
|
z-index: 10;
|
|
570
570
|
}
|
|
571
571
|
|
|
572
|
-
/* Nav items
|
|
573
|
-
.nav-item
|
|
574
|
-
display: flex;
|
|
575
|
-
align-items: center;
|
|
576
|
-
gap: 0.5rem;
|
|
577
|
-
padding: var(--fad-nav-item-padding-y) var(--fad-nav-item-padding-x);
|
|
578
|
-
padding-left: 1rem;
|
|
579
|
-
color: var(--p-surface-300, #cbd5e1);
|
|
580
|
-
text-decoration: none;
|
|
581
|
-
font-size: var(--fad-font-size-sm);
|
|
582
|
-
font-weight: var(--fad-font-weight-normal);
|
|
583
|
-
border-radius: 0;
|
|
584
|
-
transition: background var(--fad-transition-fast), color var(--fad-transition-fast);
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
.nav-item span {
|
|
588
|
-
white-space: nowrap;
|
|
589
|
-
}
|
|
590
|
-
|
|
591
|
-
.nav-item:hover {
|
|
592
|
-
background: var(--p-surface-700, #334155);
|
|
593
|
-
color: var(--p-surface-0, white);
|
|
594
|
-
}
|
|
595
|
-
|
|
596
|
-
.nav-item-active {
|
|
597
|
-
background: var(--p-surface-700, #334155);
|
|
598
|
-
color: var(--p-primary-300, #93c5fd);
|
|
599
|
-
border-left: 2px solid var(--p-primary-400, #60a5fa);
|
|
600
|
-
padding-left: calc(1rem - 2px);
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
.nav-item-active:hover {
|
|
604
|
-
background: var(--p-surface-600, #475569);
|
|
605
|
-
}
|
|
606
|
-
|
|
607
|
-
.nav-item i {
|
|
608
|
-
font-size: var(--fad-nav-icon-size);
|
|
609
|
-
width: 1.125rem;
|
|
610
|
-
text-align: center;
|
|
611
|
-
opacity: 0.8;
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
.nav-item-active i {
|
|
615
|
-
opacity: 1;
|
|
616
|
-
}
|
|
572
|
+
/* Nav items are styled in _sidebar.scss (global styles)
|
|
573
|
+
See .sidebar-nav .nav-item for base styles */
|
|
617
574
|
|
|
618
575
|
/* -----------------------------------------------------------------------------
|
|
619
576
|
Main Content
|
|
@@ -866,25 +823,8 @@ const showBreadcrumb = computed<boolean>(() => {
|
|
|
866
823
|
opacity: 1 !important;
|
|
867
824
|
}
|
|
868
825
|
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
gap: 0;
|
|
872
|
-
border-left: none !important;
|
|
873
|
-
justify-content: center;
|
|
874
|
-
}
|
|
875
|
-
|
|
876
|
-
.sidebar--collapsed .nav-item-active {
|
|
877
|
-
border-left: none !important;
|
|
878
|
-
padding: 0.5rem 0;
|
|
879
|
-
}
|
|
880
|
-
|
|
881
|
-
.sidebar--collapsed .nav-item span {
|
|
882
|
-
display: none;
|
|
883
|
-
}
|
|
884
|
-
|
|
885
|
-
.sidebar--collapsed .nav-item i {
|
|
886
|
-
width: auto;
|
|
887
|
-
}
|
|
826
|
+
/* Nav item collapsed styles are in _sidebar.scss (global styles)
|
|
827
|
+
See .sidebar--collapsed .sidebar-nav .nav-item */
|
|
888
828
|
|
|
889
829
|
/* Powered-by collapsed: smaller height */
|
|
890
830
|
.sidebar--collapsed #powered-by {
|
|
@@ -995,23 +935,7 @@ const showBreadcrumb = computed<boolean>(() => {
|
|
|
995
935
|
pointer-events: auto;
|
|
996
936
|
}
|
|
997
937
|
|
|
998
|
-
|
|
999
|
-
justify-content: flex-start;
|
|
1000
|
-
padding: var(--fad-nav-item-padding-y) var(--fad-nav-item-padding-x);
|
|
1001
|
-
padding-left: 1rem;
|
|
1002
|
-
gap: 0.5rem;
|
|
1003
|
-
}
|
|
1004
|
-
|
|
1005
|
-
.sidebar.sidebar--collapsed .nav-item span {
|
|
1006
|
-
display: inline;
|
|
1007
|
-
opacity: 1;
|
|
1008
|
-
width: auto;
|
|
1009
|
-
}
|
|
1010
|
-
|
|
1011
|
-
.sidebar.sidebar--collapsed .nav-item i {
|
|
1012
|
-
font-size: var(--fad-nav-icon-size);
|
|
1013
|
-
width: 1.125rem;
|
|
1014
|
-
}
|
|
938
|
+
/* Nav item mobile collapsed styles are in _sidebar.scss (global styles) */
|
|
1015
939
|
|
|
1016
940
|
.sidebar.sidebar--collapsed #powered-by,
|
|
1017
941
|
.sidebar.sidebar--collapsed #user-zone {
|
|
@@ -95,7 +95,8 @@ watch(() => route?.path, () => {
|
|
|
95
95
|
</script>
|
|
96
96
|
|
|
97
97
|
<template>
|
|
98
|
-
|
|
98
|
+
<!-- Use sidebar-nav class to inherit global nav-item styles from _sidebar.scss -->
|
|
99
|
+
<nav class="sidebar-nav">
|
|
99
100
|
<div v-for="section in navSections" :key="section.title || section.label" class="nav-section">
|
|
100
101
|
<div
|
|
101
102
|
class="nav-section-title"
|
|
@@ -126,7 +127,10 @@ watch(() => route?.path, () => {
|
|
|
126
127
|
</template>
|
|
127
128
|
|
|
128
129
|
<style scoped>
|
|
129
|
-
|
|
130
|
+
/* DefaultMenu uses sidebar-nav class to inherit global nav-item styles from _sidebar.scss
|
|
131
|
+
Only component-specific styles remain here */
|
|
132
|
+
|
|
133
|
+
.sidebar-nav {
|
|
130
134
|
flex: 1;
|
|
131
135
|
overflow-y: auto;
|
|
132
136
|
padding: 1rem 0;
|
|
@@ -175,30 +179,6 @@ watch(() => route?.path, () => {
|
|
|
175
179
|
opacity: 0;
|
|
176
180
|
}
|
|
177
181
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
align-items: center;
|
|
181
|
-
gap: 0.75rem;
|
|
182
|
-
padding: 0.625rem 1.5rem;
|
|
183
|
-
font-size: 0.9375rem;
|
|
184
|
-
color: var(--p-surface-300, #cbd5e1);
|
|
185
|
-
text-decoration: none;
|
|
186
|
-
transition: all 0.15s;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
.nav-item:hover {
|
|
190
|
-
background: var(--p-surface-700, #334155);
|
|
191
|
-
color: var(--p-surface-0, white);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
.nav-item-active {
|
|
195
|
-
background: var(--p-primary-600, #2563eb);
|
|
196
|
-
color: var(--p-surface-0, white);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
.nav-item i {
|
|
200
|
-
font-size: 1rem;
|
|
201
|
-
width: 1.25rem;
|
|
202
|
-
text-align: center;
|
|
203
|
-
}
|
|
182
|
+
/* Nav item styles are in _sidebar.scss (global styles)
|
|
183
|
+
See .sidebar-nav .nav-item for base styles */
|
|
204
184
|
</style>
|
package/src/styles/_sidebar.scss
CHANGED
|
@@ -252,3 +252,129 @@ $sidebar-box-content-duration: 0.1s;
|
|
|
252
252
|
opacity: 0;
|
|
253
253
|
transition: opacity 0s;
|
|
254
254
|
}
|
|
255
|
+
|
|
256
|
+
/* =============================================================================
|
|
257
|
+
Nav Item - Sidebar navigation items
|
|
258
|
+
|
|
259
|
+
Same behavior as SidebarBox:
|
|
260
|
+
- Icon stays at fixed left position (never moves horizontally)
|
|
261
|
+
- On close: text disappears immediately
|
|
262
|
+
- On open: text appears with delayed fade after sidebar is fully open
|
|
263
|
+
============================================================================= */
|
|
264
|
+
|
|
265
|
+
// Nav item icon width
|
|
266
|
+
$nav-item-icon-width: 1.125rem;
|
|
267
|
+
|
|
268
|
+
// Nav item content left = icon-left + icon-width + gap
|
|
269
|
+
// Icon is centered in collapsed sidebar: (collapsed-width - icon-width) / 2
|
|
270
|
+
// Content starts after icon: icon-left + icon-width + gap = (collapsed-width + icon-width) / 2 + gap
|
|
271
|
+
$nav-item-content-left: calc((var(--fad-sidebar-width-collapsed) + #{$nav-item-icon-width}) / 2 + 0.375rem);
|
|
272
|
+
|
|
273
|
+
.sidebar-nav .nav-item {
|
|
274
|
+
position: relative;
|
|
275
|
+
display: flex;
|
|
276
|
+
align-items: center;
|
|
277
|
+
padding: var(--fad-nav-item-padding-y) var(--fad-nav-item-padding-x);
|
|
278
|
+
padding-left: $nav-item-content-left;
|
|
279
|
+
color: var(--p-surface-300, #cbd5e1);
|
|
280
|
+
text-decoration: none;
|
|
281
|
+
font-size: var(--fad-font-size-sm);
|
|
282
|
+
font-weight: var(--fad-font-weight-normal);
|
|
283
|
+
border-radius: 0;
|
|
284
|
+
transition: background var(--fad-transition-fast), color var(--fad-transition-fast), padding var(--fad-transition-slow);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// Icon: FIXED position at left, centered in collapsed sidebar width
|
|
288
|
+
// Position = (collapsed-width - icon-width) / 2 so icon is centered when collapsed
|
|
289
|
+
.sidebar-nav .nav-item i {
|
|
290
|
+
position: absolute;
|
|
291
|
+
left: calc((var(--fad-sidebar-width-collapsed) - #{$nav-item-icon-width}) / 2);
|
|
292
|
+
top: 50%;
|
|
293
|
+
transform: translateY(-50%);
|
|
294
|
+
font-size: var(--fad-nav-icon-size);
|
|
295
|
+
width: $nav-item-icon-width;
|
|
296
|
+
text-align: center;
|
|
297
|
+
opacity: 0.8;
|
|
298
|
+
// No horizontal transition - icon never moves
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// Text: delayed fade-in when sidebar opens
|
|
302
|
+
.sidebar-nav .nav-item span {
|
|
303
|
+
white-space: nowrap;
|
|
304
|
+
opacity: 1;
|
|
305
|
+
transition: opacity $sidebar-box-content-duration ease $sidebar-box-content-delay;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.sidebar-nav .nav-item:hover {
|
|
309
|
+
background: var(--p-surface-700, #334155);
|
|
310
|
+
color: var(--p-surface-0, white);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.sidebar-nav .nav-item-active {
|
|
314
|
+
background: var(--p-surface-700, #334155);
|
|
315
|
+
color: var(--p-primary-300, #93c5fd);
|
|
316
|
+
border-left: 2px solid var(--p-primary-400, #60a5fa);
|
|
317
|
+
padding-left: calc(#{$nav-item-content-left} - 2px);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.sidebar-nav .nav-item-active:hover {
|
|
321
|
+
background: var(--p-surface-600, #475569);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
.sidebar-nav .nav-item-active i {
|
|
325
|
+
opacity: 1;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/* =============================================================================
|
|
329
|
+
Nav Item - Collapsed state
|
|
330
|
+
============================================================================= */
|
|
331
|
+
|
|
332
|
+
.sidebar--collapsed .sidebar-nav .nav-item {
|
|
333
|
+
padding: 0.5rem 0;
|
|
334
|
+
padding-left: $nav-item-content-left; // Keep same padding - icon position doesn't change
|
|
335
|
+
border-left: none !important;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
.sidebar--collapsed .sidebar-nav .nav-item-active {
|
|
339
|
+
border-left: none !important;
|
|
340
|
+
padding-left: $nav-item-content-left;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
// Text: disappears IMMEDIATELY when closing (no transition)
|
|
344
|
+
.sidebar--collapsed .sidebar-nav .nav-item span {
|
|
345
|
+
opacity: 0;
|
|
346
|
+
visibility: hidden;
|
|
347
|
+
transition: opacity 0s, visibility 0s; // Instant hide
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
// Icon: stays at EXACT SAME left position - no movement at all
|
|
351
|
+
// (inherits left: $sidebar-box-icon-left, no change needed)
|
|
352
|
+
|
|
353
|
+
/* =============================================================================
|
|
354
|
+
Nav Item - Mobile responsive
|
|
355
|
+
On mobile, sidebar becomes fullscreen and collapsed state is ignored
|
|
356
|
+
============================================================================= */
|
|
357
|
+
|
|
358
|
+
@media (max-width: 767px) {
|
|
359
|
+
.sidebar.sidebar--collapsed .sidebar-nav .nav-item {
|
|
360
|
+
justify-content: flex-start;
|
|
361
|
+
padding: var(--fad-nav-item-padding-y) var(--fad-nav-item-padding-x);
|
|
362
|
+
padding-left: $nav-item-content-left; // Keep same padding for absolute icon
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.sidebar.sidebar--collapsed .sidebar-nav .nav-item span {
|
|
366
|
+
display: inline;
|
|
367
|
+
opacity: 1;
|
|
368
|
+
visibility: visible;
|
|
369
|
+
width: auto;
|
|
370
|
+
transition: opacity $sidebar-box-content-duration ease $sidebar-box-content-delay; // Restore delayed fade-in
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
.sidebar.sidebar--collapsed .sidebar-nav .nav-item i {
|
|
374
|
+
// Keep absolute positioning on mobile too - same centered position
|
|
375
|
+
position: absolute;
|
|
376
|
+
left: calc((var(--fad-sidebar-width-collapsed) - #{$nav-item-icon-width}) / 2);
|
|
377
|
+
font-size: var(--fad-nav-icon-size);
|
|
378
|
+
width: $nav-item-icon-width;
|
|
379
|
+
}
|
|
380
|
+
}
|