@keenmate/pure-admin-core 1.3.0 → 1.4.1
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/README.md +25 -1
- package/dist/css/main.css +892 -762
- package/package.json +6 -5
- package/src/scss/_core.scss +4 -0
- package/src/scss/_fonts.scss +1 -17
- package/src/scss/_rtl-helpers.scss +161 -0
- package/src/scss/core-components/_alerts.scss +3 -3
- package/src/scss/core-components/_base.scss +4 -3
- package/src/scss/core-components/_buttons.scss +9 -9
- package/src/scss/core-components/_callouts.scss +14 -9
- package/src/scss/core-components/_cards.scss +41 -0
- package/src/scss/core-components/_checkbox-lists.scss +6 -6
- package/src/scss/core-components/_code.scss +10 -10
- package/src/scss/core-components/_command-palette.scss +5 -14
- package/src/scss/core-components/_comparison.scss +3 -3
- package/src/scss/core-components/_data-display.scss +6 -6
- package/src/scss/core-components/_detail-panel.scss +43 -26
- package/src/scss/core-components/_file-selector.scss +2 -2
- package/src/scss/core-components/_grid.scss +13 -24
- package/src/scss/core-components/_lists.scss +12 -12
- package/src/scss/core-components/_modals.scss +2 -8
- package/src/scss/core-components/_pagers.scss +1 -1
- package/src/scss/core-components/_profile.scss +11 -6
- package/src/scss/core-components/_settings-panel.scss +22 -9
- package/src/scss/core-components/_tables.scss +76 -30
- package/src/scss/core-components/_tabs.scss +27 -14
- package/src/scss/core-components/_timeline.scss +5 -5
- package/src/scss/core-components/_toasts.scss +57 -21
- package/src/scss/core-components/_tooltips.scss +11 -6
- package/src/scss/core-components/_utilities.scss +80 -31
- package/src/scss/core-components/forms/_input-groups.scss +23 -22
- package/src/scss/core-components/forms/_input-wrapper.scss +3 -3
- package/src/scss/core-components/forms/_query-editor.scss +1 -1
- package/src/scss/core-components/layout/_layout-responsive.scss +3 -4
- package/src/scss/core-components/layout/_navbar-elements.scss +17 -6
- package/src/scss/core-components/layout/_navbar.scss +11 -22
- package/src/scss/core-components/layout/_sidebar-states.scss +25 -16
- package/src/scss/core-components/layout/_sidebar.scss +22 -16
- package/src/scss/variables/_system.scss +1 -0
|
@@ -5,45 +5,24 @@
|
|
|
5
5
|
@use '../variables' as *;
|
|
6
6
|
|
|
7
7
|
// Font size classes - Apply to <html> element for proportional scaling of all rem units
|
|
8
|
+
// These use absolute px values because rem would be calculated against browser default (16px),
|
|
9
|
+
// not the framework's 10px base. Scaling the html font-size scales all rem values proportionally.
|
|
8
10
|
// Example: document.documentElement.classList.add('font-size-large');
|
|
9
|
-
html.font-size-2xs {
|
|
10
|
-
font-size: $font-size-2xs;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
html.font-size-xs {
|
|
14
|
-
font-size: $font-size-xs;
|
|
15
|
-
}
|
|
16
11
|
|
|
17
12
|
html.font-size-small {
|
|
18
|
-
font-size:
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
html.font-size-medium {
|
|
22
|
-
font-size: $font-size-md;
|
|
13
|
+
font-size: 9px; // ~14px body text (9 * 1.6 = 14.4px)
|
|
23
14
|
}
|
|
24
15
|
|
|
25
16
|
html.font-size-default {
|
|
26
|
-
font-size:
|
|
17
|
+
font-size: 10px; // 16px body text (default, same as html base)
|
|
27
18
|
}
|
|
28
19
|
|
|
29
20
|
html.font-size-large {
|
|
30
|
-
font-size:
|
|
21
|
+
font-size: 11px; // ~18px body text (11 * 1.6 = 17.6px)
|
|
31
22
|
}
|
|
32
23
|
|
|
33
24
|
html.font-size-xlarge {
|
|
34
|
-
font-size:
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
html.font-size-2xl {
|
|
38
|
-
font-size: $font-size-2xl;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
html.font-size-3xl {
|
|
42
|
-
font-size: $font-size-3xl;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
html.font-size-4xl {
|
|
46
|
-
font-size: $font-size-4xl;
|
|
25
|
+
font-size: 12px; // ~19px body text (12 * 1.6 = 19.2px)
|
|
47
26
|
}
|
|
48
27
|
|
|
49
28
|
// Font family utilities
|
|
@@ -115,6 +94,24 @@ html.font-size-4xl {
|
|
|
115
94
|
.max-h-40x { max-height: 40rem; } // 640px
|
|
116
95
|
.max-h-50x { max-height: 50rem; } // 800px
|
|
117
96
|
|
|
97
|
+
// Percentage-based height utilities - for filling available space
|
|
98
|
+
.h-full { height: 100%; }
|
|
99
|
+
.h-screen { height: 100vh; }
|
|
100
|
+
.min-h-full { min-height: 100%; }
|
|
101
|
+
.min-h-screen { min-height: 100vh; }
|
|
102
|
+
.max-h-full { max-height: 100%; }
|
|
103
|
+
.max-h-screen { max-height: 100vh; }
|
|
104
|
+
|
|
105
|
+
// Flex utilities - for filling available space in flex containers
|
|
106
|
+
.flex-1 { flex: 1 1 0%; } // Grow and shrink equally, ignore content size
|
|
107
|
+
.flex-auto { flex: 1 1 auto; } // Grow and shrink, based on content size
|
|
108
|
+
.flex-initial { flex: 0 1 auto; } // Shrink but don't grow (default)
|
|
109
|
+
.flex-none { flex: none; } // Don't grow or shrink
|
|
110
|
+
.flex-grow { flex-grow: 1; } // Grow to fill space
|
|
111
|
+
.flex-grow-0 { flex-grow: 0; } // Don't grow
|
|
112
|
+
.flex-shrink { flex-shrink: 1; } // Allow shrinking
|
|
113
|
+
.flex-shrink-0 { flex-shrink: 0; } // Don't shrink
|
|
114
|
+
|
|
118
115
|
// Overflow utilities - pair with height/max-height for scrollable content
|
|
119
116
|
.overflow-auto { overflow: auto; }
|
|
120
117
|
.overflow-y-auto { overflow-y: auto; }
|
|
@@ -139,6 +136,12 @@ html.font-size-4xl {
|
|
|
139
136
|
overflow-x: overlay;
|
|
140
137
|
}
|
|
141
138
|
|
|
139
|
+
// Scroll lock - prevents body scrolling when overlays are open
|
|
140
|
+
// Apply to <body> element via JavaScript
|
|
141
|
+
.pa-scroll-lock {
|
|
142
|
+
overflow: hidden !important;
|
|
143
|
+
}
|
|
144
|
+
|
|
142
145
|
// Cursor utilities
|
|
143
146
|
.cursor-pointer { cursor: pointer; }
|
|
144
147
|
.cursor-help { cursor: help; }
|
|
@@ -186,17 +189,26 @@ html.font-size-4xl {
|
|
|
186
189
|
color: var(--pa-text-color-2);
|
|
187
190
|
}
|
|
188
191
|
|
|
189
|
-
// Alignment modifiers
|
|
190
|
-
&--
|
|
191
|
-
text-align:
|
|
192
|
+
// Alignment modifiers (logical properties for RTL support)
|
|
193
|
+
&--start {
|
|
194
|
+
text-align: start; // RTL: flips to right
|
|
192
195
|
}
|
|
193
196
|
|
|
194
197
|
&--center {
|
|
195
198
|
text-align: center;
|
|
196
199
|
}
|
|
197
200
|
|
|
201
|
+
&--end {
|
|
202
|
+
text-align: end; // RTL: flips to left
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Legacy aliases for backward compatibility
|
|
206
|
+
&--left {
|
|
207
|
+
text-align: start;
|
|
208
|
+
}
|
|
209
|
+
|
|
198
210
|
&--right {
|
|
199
|
-
text-align:
|
|
211
|
+
text-align: end;
|
|
200
212
|
}
|
|
201
213
|
|
|
202
214
|
// Semantic variants (compound styles)
|
|
@@ -322,3 +334,40 @@ html.font-size-4xl {
|
|
|
322
334
|
.pa-border-color-#{$i} { border-color: var(--pa-color-#{$i}); }
|
|
323
335
|
}
|
|
324
336
|
|
|
337
|
+
// ========================================
|
|
338
|
+
// Logical Spacing Utilities (RTL-aware)
|
|
339
|
+
// ms = margin-inline-start, me = margin-inline-end
|
|
340
|
+
// ps = padding-inline-start, pe = padding-inline-end
|
|
341
|
+
// ========================================
|
|
342
|
+
|
|
343
|
+
// Margin inline-start (ms-*) - RTL: flips to margin-right
|
|
344
|
+
@each $name, $value in $semantic-spacers {
|
|
345
|
+
.ms-#{$name} { margin-inline-start: #{$value}; }
|
|
346
|
+
}
|
|
347
|
+
.ms-auto { margin-inline-start: auto; }
|
|
348
|
+
|
|
349
|
+
// Margin inline-end (me-*) - RTL: flips to margin-left
|
|
350
|
+
@each $name, $value in $semantic-spacers {
|
|
351
|
+
.me-#{$name} { margin-inline-end: #{$value}; }
|
|
352
|
+
}
|
|
353
|
+
.me-auto { margin-inline-end: auto; }
|
|
354
|
+
|
|
355
|
+
// Padding inline-start (ps-*) - RTL: flips to padding-right
|
|
356
|
+
@each $name, $value in $semantic-spacers {
|
|
357
|
+
.ps-#{$name} { padding-inline-start: #{$value}; }
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// Padding inline-end (pe-*) - RTL: flips to padding-left
|
|
361
|
+
@each $name, $value in $semantic-spacers {
|
|
362
|
+
.pe-#{$name} { padding-inline-end: #{$value}; }
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
// Text alignment utilities (RTL-aware)
|
|
366
|
+
.text-start { text-align: start; } // RTL: flips to right
|
|
367
|
+
.text-center { text-align: center; }
|
|
368
|
+
.text-end { text-align: end; } // RTL: flips to left
|
|
369
|
+
|
|
370
|
+
// Legacy text alignment (maps to logical properties)
|
|
371
|
+
.text-left { text-align: start; }
|
|
372
|
+
.text-right { text-align: end; }
|
|
373
|
+
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* ========================================
|
|
2
2
|
Input Groups
|
|
3
3
|
Input groups with prepend/append addons and buttons
|
|
4
|
+
RTL-aware using CSS logical properties
|
|
4
5
|
======================================== */
|
|
5
6
|
@use '../../variables' as *;
|
|
6
7
|
|
|
@@ -13,21 +14,21 @@
|
|
|
13
14
|
flex: 1;
|
|
14
15
|
|
|
15
16
|
&:first-child {
|
|
16
|
-
border-
|
|
17
|
-
border-
|
|
17
|
+
border-start-start-radius: $border-radius; // RTL: top-right in RTL
|
|
18
|
+
border-end-start-radius: $border-radius; // RTL: bottom-right in RTL
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
&:last-child {
|
|
21
|
-
border-
|
|
22
|
-
border-
|
|
22
|
+
border-start-end-radius: $border-radius; // RTL: top-left in RTL
|
|
23
|
+
border-end-end-radius: $border-radius; // RTL: bottom-left in RTL
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
&:not(:first-child) {
|
|
26
|
-
border-
|
|
27
|
+
border-inline-start: none; // RTL: flips to border-right
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
&:not(:last-child) {
|
|
30
|
-
border-
|
|
31
|
+
border-inline-end: none; // RTL: flips to border-left
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
|
|
@@ -48,11 +49,11 @@
|
|
|
48
49
|
background-color: var(--pa-input-group-prepend-bg);
|
|
49
50
|
color: var(--pa-input-group-prepend-text);
|
|
50
51
|
border-color: var(--pa-input-group-prepend-bg);
|
|
51
|
-
border-
|
|
52
|
+
border-inline-end: none; // RTL: flips to border-left
|
|
52
53
|
|
|
53
54
|
&:first-child {
|
|
54
|
-
border-
|
|
55
|
-
border-
|
|
55
|
+
border-start-start-radius: $border-radius; // RTL: top-right in RTL
|
|
56
|
+
border-end-start-radius: $border-radius; // RTL: bottom-right in RTL
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
|
|
@@ -60,43 +61,43 @@
|
|
|
60
61
|
background-color: var(--pa-input-group-append-bg);
|
|
61
62
|
color: var(--pa-input-group-append-text);
|
|
62
63
|
border-color: var(--pa-input-group-append-bg);
|
|
63
|
-
border-
|
|
64
|
+
border-inline-start: none; // RTL: flips to border-right
|
|
64
65
|
|
|
65
66
|
&:last-child {
|
|
66
|
-
border-
|
|
67
|
-
border-
|
|
67
|
+
border-start-end-radius: $border-radius; // RTL: top-left in RTL
|
|
68
|
+
border-end-end-radius: $border-radius; // RTL: bottom-left in RTL
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
|
|
71
72
|
// Adjacent prepends/appends need borders between them
|
|
72
73
|
&__prepend + &__prepend {
|
|
73
|
-
border-
|
|
74
|
+
border-inline-start: $border-width-base solid var(--pa-input-group-prepend-bg); // RTL: flips
|
|
74
75
|
}
|
|
75
76
|
|
|
76
77
|
&__append + &__append {
|
|
77
|
-
border-
|
|
78
|
+
border-inline-start: $border-width-base solid var(--pa-input-group-append-bg); // RTL: flips
|
|
78
79
|
}
|
|
79
80
|
|
|
80
81
|
// When input is focused, show focus border on adjacent prepend/append
|
|
81
82
|
&:has(.pa-input:focus) {
|
|
82
83
|
// Last prepend (one before input) gets focus border
|
|
83
84
|
.pa-input-group__prepend {
|
|
84
|
-
border-
|
|
85
|
+
border-inline-end: $border-width-base solid var(--pa-input-focus-border-color); // RTL: flips
|
|
85
86
|
}
|
|
86
87
|
|
|
87
88
|
// But prepends followed by another prepend keep normal border
|
|
88
89
|
.pa-input-group__prepend:has(+ .pa-input-group__prepend) {
|
|
89
|
-
border-
|
|
90
|
+
border-inline-end: none; // RTL: flips
|
|
90
91
|
}
|
|
91
92
|
|
|
92
93
|
// First append (one after input) gets focus border
|
|
93
94
|
.pa-input-group__append {
|
|
94
|
-
border-
|
|
95
|
+
border-inline-start: $border-width-base solid var(--pa-input-focus-border-color); // RTL: flips
|
|
95
96
|
}
|
|
96
97
|
|
|
97
98
|
// But appends following another append keep normal border
|
|
98
99
|
.pa-input-group__append + .pa-input-group__append {
|
|
99
|
-
border-
|
|
100
|
+
border-inline-start: $border-width-base solid var(--pa-border-color); // RTL: flips
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
103
|
|
|
@@ -104,13 +105,13 @@
|
|
|
104
105
|
border-radius: 0;
|
|
105
106
|
|
|
106
107
|
&:first-child {
|
|
107
|
-
border-
|
|
108
|
-
border-
|
|
108
|
+
border-start-start-radius: $border-radius; // RTL: top-right in RTL
|
|
109
|
+
border-end-start-radius: $border-radius; // RTL: bottom-right in RTL
|
|
109
110
|
}
|
|
110
111
|
|
|
111
112
|
&:last-child {
|
|
112
|
-
border-
|
|
113
|
-
border-
|
|
113
|
+
border-start-end-radius: $border-radius; // RTL: top-left in RTL
|
|
114
|
+
border-end-end-radius: $border-radius; // RTL: bottom-left in RTL
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
117
|
|
|
@@ -18,12 +18,12 @@
|
|
|
18
18
|
.pa-virtual-textbox {
|
|
19
19
|
flex: 1;
|
|
20
20
|
min-width: 0; // Allow inputs to shrink below their content size
|
|
21
|
-
padding-
|
|
21
|
+
padding-inline-end: 4rem; // RTL: flips to padding-left, make room for clear button
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
&__clear {
|
|
25
25
|
position: absolute;
|
|
26
|
-
|
|
26
|
+
inset-inline-end: $spacing-xs; // RTL: flips to left
|
|
27
27
|
top: 50%;
|
|
28
28
|
transform: translateY(-50%);
|
|
29
29
|
background: transparent;
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
.pa-search-token-remove {
|
|
75
|
-
margin-
|
|
75
|
+
margin-inline-start: $spacing-xs; // RTL: flips to margin-right
|
|
76
76
|
padding: 0 $spacing-xs;
|
|
77
77
|
border: none;
|
|
78
78
|
background: transparent;
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
width: 0;
|
|
13
13
|
opacity: 0;
|
|
14
14
|
overflow: hidden;
|
|
15
|
-
border-
|
|
15
|
+
border-inline-end: none; // RTL: flips to left
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
// Override icon-collapse mode on mobile - sidebar should be fully hidden
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
.pa-layout__sidebar {
|
|
32
32
|
position: fixed;
|
|
33
33
|
top: $header-height;
|
|
34
|
-
|
|
34
|
+
inset-inline-start: 0; // RTL: flips to right
|
|
35
35
|
bottom: 0;
|
|
36
36
|
width: $mobile-sidebar-width;
|
|
37
37
|
z-index: 1050;
|
|
@@ -58,8 +58,7 @@
|
|
|
58
58
|
content: "";
|
|
59
59
|
position: fixed;
|
|
60
60
|
top: $header-height;
|
|
61
|
-
|
|
62
|
-
right: 0;
|
|
61
|
+
inset-inline: 0; // RTL: covers full width
|
|
63
62
|
bottom: 0;
|
|
64
63
|
background-color: $mobile-backdrop-bg;
|
|
65
64
|
z-index: 1040;
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
.pa-header {
|
|
9
9
|
&__burger {
|
|
10
10
|
flex-shrink: 0;
|
|
11
|
-
margin-
|
|
11
|
+
margin-inline-start: $burger-menu-margin-left; // RTL: flips to margin-right
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
&__brand {
|
|
15
15
|
flex-shrink: 0;
|
|
16
|
-
padding-
|
|
16
|
+
padding-inline-start: $header-brand-padding-left; // RTL: flips to padding-right
|
|
17
17
|
|
|
18
18
|
h1 {
|
|
19
19
|
margin: 0;
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
display: none !important; // Force hide by default
|
|
93
93
|
position: absolute;
|
|
94
94
|
top: 100%;
|
|
95
|
-
|
|
95
|
+
inset-inline-start: 0; // RTL: flips to right: 0
|
|
96
96
|
min-width: 19.2rem;
|
|
97
97
|
background-color: var(--pa-card-bg);
|
|
98
98
|
border: $border-width-base solid var(--pa-border-color);
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
content: '';
|
|
115
115
|
position: absolute;
|
|
116
116
|
top: 0;
|
|
117
|
-
|
|
117
|
+
inset-inline-start: 100%; // RTL: flips to right: 100%
|
|
118
118
|
width: 6.4px; // Small invisible bridge
|
|
119
119
|
height: 100%;
|
|
120
120
|
z-index: 1099;
|
|
@@ -145,9 +145,9 @@
|
|
|
145
145
|
// Level 2 dropdown (nested)
|
|
146
146
|
&--level2 {
|
|
147
147
|
top: 0;
|
|
148
|
-
|
|
148
|
+
inset-inline-start: 100%; // RTL: flips to right: 100%
|
|
149
149
|
margin-top: 0;
|
|
150
|
-
margin-
|
|
150
|
+
margin-inline-start: 0; // RTL: flips to margin-right
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
153
|
|
|
@@ -207,6 +207,17 @@
|
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
+
// RTL: reverse X translation direction
|
|
211
|
+
[dir="rtl"] &.active {
|
|
212
|
+
span:nth-child(1) {
|
|
213
|
+
transform: rotate(45deg) translate(-$burger-transform-offset, $burger-transform-offset);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
span:nth-child(3) {
|
|
217
|
+
transform: rotate(-45deg) translate(-$burger-transform-offset, -$burger-transform-offset);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
210
221
|
&:hover span {
|
|
211
222
|
background-color: var(--pa-accent);
|
|
212
223
|
}
|
|
@@ -8,8 +8,7 @@
|
|
|
8
8
|
.pa-navbar {
|
|
9
9
|
position: fixed;
|
|
10
10
|
top: 0;
|
|
11
|
-
|
|
12
|
-
right: 0;
|
|
11
|
+
inset-inline: 0; // RTL: works for both LTR and RTL
|
|
13
12
|
height: $header-height;
|
|
14
13
|
background-color: var(--pa-header-bg);
|
|
15
14
|
border-bottom: $border-width-base solid var(--pa-header-border-color);
|
|
@@ -23,42 +22,32 @@
|
|
|
23
22
|
// Body class is just a marker, no width styles on body itself
|
|
24
23
|
body.pa-container-sm .pa-navbar {
|
|
25
24
|
max-width: $layout-container-sm;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
margin-left: auto;
|
|
29
|
-
margin-right: auto;
|
|
25
|
+
inset-inline: 0; // RTL: works for both LTR and RTL
|
|
26
|
+
margin-inline: auto; // RTL: centers in both directions
|
|
30
27
|
}
|
|
31
28
|
|
|
32
29
|
body.pa-container-md .pa-navbar {
|
|
33
30
|
max-width: $layout-container-md;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
margin-left: auto;
|
|
37
|
-
margin-right: auto;
|
|
31
|
+
inset-inline: 0;
|
|
32
|
+
margin-inline: auto;
|
|
38
33
|
}
|
|
39
34
|
|
|
40
35
|
body.pa-container-lg .pa-navbar {
|
|
41
36
|
max-width: $layout-container-lg;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
margin-left: auto;
|
|
45
|
-
margin-right: auto;
|
|
37
|
+
inset-inline: 0;
|
|
38
|
+
margin-inline: auto;
|
|
46
39
|
}
|
|
47
40
|
|
|
48
41
|
body.pa-container-xl .pa-navbar {
|
|
49
42
|
max-width: $layout-container-xl;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
margin-left: auto;
|
|
53
|
-
margin-right: auto;
|
|
43
|
+
inset-inline: 0;
|
|
44
|
+
margin-inline: auto;
|
|
54
45
|
}
|
|
55
46
|
|
|
56
47
|
body.pa-container-2xl .pa-navbar {
|
|
57
48
|
max-width: $layout-container-2xl;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
margin-left: auto;
|
|
61
|
-
margin-right: auto;
|
|
49
|
+
inset-inline: 0;
|
|
50
|
+
margin-inline: auto;
|
|
62
51
|
}
|
|
63
52
|
|
|
64
53
|
// Navbar inner content
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
width: 0;
|
|
11
11
|
opacity: 0;
|
|
12
12
|
overflow: hidden;
|
|
13
|
-
border-
|
|
13
|
+
border-inline-end: none; // RTL: flips to border-left
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
// Icon-collapse mode: show narrow icon-only bar when hidden
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
opacity: 1; // Override parent opacity: 0 to make icons visible
|
|
20
20
|
overflow: visible !important; // Allow flyout to show outside sidebar
|
|
21
21
|
z-index: 1050; // Higher than content area (950) for flyouts
|
|
22
|
-
border-
|
|
22
|
+
border-inline-end: $border-width-base solid $border-color; // RTL: flips to border-left
|
|
23
23
|
|
|
24
24
|
// Enable positioning for flyouts
|
|
25
25
|
.pa-sidebar__item {
|
|
@@ -64,14 +64,17 @@
|
|
|
64
64
|
width: auto;
|
|
65
65
|
overflow: visible; // Remove overflow hidden
|
|
66
66
|
position: absolute;
|
|
67
|
-
|
|
67
|
+
inset-inline-start: 100%; // RTL: flips to right: 100%
|
|
68
68
|
top: 0;
|
|
69
69
|
bottom: 0;
|
|
70
70
|
padding: $spacing-sm $spacing-base;
|
|
71
71
|
background-color: var(--pa-sidebar-bg);
|
|
72
72
|
border: $border-width-base solid var(--pa-border-color);
|
|
73
|
-
border-
|
|
74
|
-
border-
|
|
73
|
+
border-inline-start: none; // RTL: flips to border-right: none
|
|
74
|
+
border-start-start-radius: 0;
|
|
75
|
+
border-start-end-radius: $border-radius;
|
|
76
|
+
border-end-end-radius: $border-radius;
|
|
77
|
+
border-end-start-radius: 0;
|
|
75
78
|
box-shadow: $shadow-md;
|
|
76
79
|
white-space: nowrap;
|
|
77
80
|
z-index: 10; // Relative to parent
|
|
@@ -87,7 +90,7 @@
|
|
|
87
90
|
max-height: none !important;
|
|
88
91
|
overflow: visible !important;
|
|
89
92
|
position: absolute;
|
|
90
|
-
|
|
93
|
+
inset-inline-start: 100%; // RTL: flips to right: 100%
|
|
91
94
|
top: 0;
|
|
92
95
|
min-width: 12rem;
|
|
93
96
|
margin: 0;
|
|
@@ -95,8 +98,11 @@
|
|
|
95
98
|
list-style: none;
|
|
96
99
|
background-color: var(--pa-sidebar-submenu-bg);
|
|
97
100
|
border: $border-width-base solid var(--pa-border-color);
|
|
98
|
-
border-
|
|
99
|
-
border-
|
|
101
|
+
border-inline-start: none; // RTL: flips to border-right: none
|
|
102
|
+
border-start-start-radius: 0;
|
|
103
|
+
border-start-end-radius: $border-radius;
|
|
104
|
+
border-end-end-radius: $border-radius;
|
|
105
|
+
border-end-start-radius: 0;
|
|
100
106
|
box-shadow: $shadow-md;
|
|
101
107
|
z-index: 1001; // Higher than parent
|
|
102
108
|
|
|
@@ -140,8 +146,8 @@
|
|
|
140
146
|
|
|
141
147
|
.pa-sidebar__chevron {
|
|
142
148
|
display: inline;
|
|
143
|
-
margin-
|
|
144
|
-
transform: none !important; // Always point
|
|
149
|
+
margin-inline-start: auto; // RTL: flips to margin-right: auto
|
|
150
|
+
transform: none !important; // Always point end direction in flyout menus
|
|
145
151
|
}
|
|
146
152
|
|
|
147
153
|
// Nested submenu flyout (level 3)
|
|
@@ -155,7 +161,7 @@
|
|
|
155
161
|
max-height: none !important;
|
|
156
162
|
overflow: visible !important;
|
|
157
163
|
position: absolute;
|
|
158
|
-
|
|
164
|
+
inset-inline-start: 100%; // RTL: flips to right: 100%
|
|
159
165
|
top: 0;
|
|
160
166
|
min-width: 19.2rem;
|
|
161
167
|
margin: 0;
|
|
@@ -163,8 +169,11 @@
|
|
|
163
169
|
list-style: none;
|
|
164
170
|
background-color: var(--pa-sidebar-submenu-bg);
|
|
165
171
|
border: $border-width-base solid var(--pa-border-color);
|
|
166
|
-
border-
|
|
167
|
-
border-
|
|
172
|
+
border-inline-start: none; // RTL: flips to border-right: none
|
|
173
|
+
border-start-start-radius: 0;
|
|
174
|
+
border-start-end-radius: $border-radius;
|
|
175
|
+
border-end-end-radius: $border-radius;
|
|
176
|
+
border-end-start-radius: 0;
|
|
168
177
|
box-shadow: $shadow-md;
|
|
169
178
|
z-index: 1002; // Higher than parent submenu
|
|
170
179
|
|
|
@@ -174,7 +183,7 @@
|
|
|
174
183
|
}
|
|
175
184
|
|
|
176
185
|
.pa-sidebar__chevron {
|
|
177
|
-
transform: none !important; // Always point
|
|
186
|
+
transform: none !important; // Always point end direction in nested flyout menus
|
|
178
187
|
}
|
|
179
188
|
}
|
|
180
189
|
}
|
|
@@ -210,13 +219,13 @@ body:not(.sidebar-hidden) {
|
|
|
210
219
|
// Restore submenu indentation for level 2
|
|
211
220
|
.pa-sidebar__submenu > .pa-sidebar__item > .pa-sidebar__link,
|
|
212
221
|
.pa-sidebar__submenu > .pa-sidebar__item > .pa-sidebar__toggle {
|
|
213
|
-
padding-
|
|
222
|
+
padding-inline-start: $sidebar-submenu-indent; // RTL: flips to padding-right
|
|
214
223
|
}
|
|
215
224
|
|
|
216
225
|
// Restore submenu indentation for level 3
|
|
217
226
|
.pa-sidebar__submenu .pa-sidebar__submenu > .pa-sidebar__item > .pa-sidebar__link,
|
|
218
227
|
.pa-sidebar__submenu .pa-sidebar__submenu > .pa-sidebar__item > .pa-sidebar__toggle {
|
|
219
|
-
padding-
|
|
228
|
+
padding-inline-start: calc($sidebar-submenu-indent * $sidebar-submenu-indent-multiplier); // RTL: flips
|
|
220
229
|
}
|
|
221
230
|
|
|
222
231
|
// Icon maintains same position in both states
|