@keenmate/pure-admin-core 2.3.1 → 2.3.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/README.md +5 -5
- package/dist/css/main.css +187 -178
- package/package.json +1 -1
- package/snippets/buttons.html +375 -365
- package/src/scss/_base-css-variables.scss +8 -0
- package/src/scss/_core.scss +121 -121
- package/src/scss/core-components/_alerts.scss +227 -227
- package/src/scss/core-components/_badges.scss +16 -16
- package/src/scss/core-components/_base.scss +125 -125
- package/src/scss/core-components/_buttons.scss +31 -16
- package/src/scss/core-components/_callouts.scss +152 -152
- package/src/scss/core-components/_cards.scss +488 -488
- package/src/scss/core-components/_checkbox-lists.scss +289 -289
- package/src/scss/core-components/_code.scss +141 -141
- package/src/scss/core-components/_command-palette.scss +509 -509
- package/src/scss/core-components/_comparison.scss +172 -172
- package/src/scss/core-components/_data-display.scss +9 -9
- package/src/scss/core-components/_data-viz.scss +9 -9
- package/src/scss/core-components/_detail-panel.scss +1 -1
- package/src/scss/core-components/_file-selector.scss +780 -780
- package/src/scss/core-components/_filter-card.scss +58 -58
- package/src/scss/core-components/_forms.scss +16 -16
- package/src/scss/core-components/_grid.scss +293 -293
- package/src/scss/core-components/_layout.scss +15 -15
- package/src/scss/core-components/_lists.scss +211 -211
- package/src/scss/core-components/_loaders.scss +277 -277
- package/src/scss/core-components/_logic-tree.scss +280 -280
- package/src/scss/core-components/_modals.scss +203 -203
- package/src/scss/core-components/_notifications.scss +320 -320
- package/src/scss/core-components/_pagers.scss +141 -141
- package/src/scss/core-components/_popconfirm.scss +170 -170
- package/src/scss/core-components/_profile.scss +405 -405
- package/src/scss/core-components/_scrollbars.scss +40 -40
- package/src/scss/core-components/_settings-panel.scss +141 -141
- package/src/scss/core-components/_statistics.scss +200 -201
- package/src/scss/core-components/_tables.scss +900 -900
- package/src/scss/core-components/_tabs.scss +504 -504
- package/src/scss/core-components/_timeline.scss +589 -589
- package/src/scss/core-components/_toasts.scss +425 -425
- package/src/scss/core-components/_tooltips.scss +605 -605
- package/src/scss/core-components/_utilities.scss +1 -1
- package/src/scss/core-components/_web-components-theme.scss +21 -21
- package/src/scss/core-components/badges/_badge-base.scss +121 -121
- package/src/scss/core-components/badges/_badge-group.scss +25 -25
- package/src/scss/core-components/badges/_composite-badge-variants.scss +396 -396
- package/src/scss/core-components/badges/_composite-badge.scss +70 -70
- package/src/scss/core-components/badges/_index.scss +10 -10
- package/src/scss/core-components/badges/_labels.scss +155 -155
- package/src/scss/core-components/forms/_checkboxes-radios.scss +205 -205
- package/src/scss/core-components/forms/_form-inputs.scss +3 -3
- package/src/scss/core-components/forms/_form-layout.scss +66 -66
- package/src/scss/core-components/forms/_form-states.scss +115 -115
- package/src/scss/core-components/forms/_index.scss +12 -12
- package/src/scss/core-components/forms/_input-groups.scss +154 -154
- package/src/scss/core-components/forms/_input-wrapper.scss +89 -89
- package/src/scss/core-components/forms/_query-editor.scss +313 -313
- package/src/scss/core-components/layout/_index.scss +11 -11
- package/src/scss/core-components/layout/_layout-container.scss +168 -168
- package/src/scss/core-components/layout/_layout-responsive.scss +99 -99
- package/src/scss/core-components/layout/_navbar-elements.scss +250 -250
- package/src/scss/core-components/layout/_navbar.scss +83 -83
- package/src/scss/core-components/layout/_sidebar-states.scss +237 -237
- package/src/scss/core-components/layout/_sidebar.scss +234 -234
- package/src/scss/main.scss +7 -7
- package/src/scss/utilities.scss +740 -740
- package/src/scss/variables/_base.scss +228 -228
- package/src/scss/variables/_components.scss +748 -748
- package/src/scss/variables/_layout.scss +65 -65
- package/src/scss/variables/_typography.scss +37 -37
|
@@ -1,250 +1,250 @@
|
|
|
1
|
-
/* ========================================
|
|
2
|
-
Navbar/Header Elements
|
|
3
|
-
Burger menu, brand, navigation, title, profile button, theme switcher
|
|
4
|
-
======================================== */
|
|
5
|
-
@use '../../variables' as *;
|
|
6
|
-
|
|
7
|
-
// Navbar elements (using pa-header__ prefix for backward compatibility with existing partials)
|
|
8
|
-
.pa-header {
|
|
9
|
-
&__burger {
|
|
10
|
-
flex-shrink: 0;
|
|
11
|
-
margin-inline-start: $burger-menu-margin-left; // RTL: flips to margin-right
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
&__brand {
|
|
15
|
-
flex-shrink: 0;
|
|
16
|
-
padding-inline-start: $header-brand-padding-left; // RTL: flips to padding-right
|
|
17
|
-
|
|
18
|
-
h1 {
|
|
19
|
-
margin: 0;
|
|
20
|
-
font-size: $font-size-lg;
|
|
21
|
-
font-weight: $font-weight-semibold;
|
|
22
|
-
color: var(--pa-header-text);
|
|
23
|
-
white-space: nowrap;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
&__nav {
|
|
28
|
-
flex-shrink: 0;
|
|
29
|
-
|
|
30
|
-
// Only style the direct child ul (main navigation)
|
|
31
|
-
> ul {
|
|
32
|
-
list-style: none;
|
|
33
|
-
margin: 0;
|
|
34
|
-
padding: 0;
|
|
35
|
-
display: flex;
|
|
36
|
-
gap: $spacing-md;
|
|
37
|
-
|
|
38
|
-
> li {
|
|
39
|
-
margin: 0; // Disable base margins from _base.scss
|
|
40
|
-
position: relative; // For dropdown positioning
|
|
41
|
-
display: flex;
|
|
42
|
-
align-items: center;
|
|
43
|
-
|
|
44
|
-
> a {
|
|
45
|
-
text-decoration: none;
|
|
46
|
-
color: var(--pa-header-text-secondary);
|
|
47
|
-
font-weight: $font-weight-medium;
|
|
48
|
-
padding: $spacing-xs $spacing-sm;
|
|
49
|
-
border-radius:
|
|
50
|
-
transition: all $transition-fast $easing-snappy;
|
|
51
|
-
font-size: $font-size-sm;
|
|
52
|
-
display: flex;
|
|
53
|
-
align-items: center;
|
|
54
|
-
|
|
55
|
-
&:hover {
|
|
56
|
-
color: var(--pa-accent);
|
|
57
|
-
background-color: var(--pa-accent-hover);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Note: margin auto no longer needed with pa-header__start/center/end structure
|
|
64
|
-
&--start {
|
|
65
|
-
// Elements in start section
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
&--end {
|
|
69
|
-
// Elements in end section
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// Dropdown navigation items
|
|
74
|
-
&__nav-item {
|
|
75
|
-
&--has-dropdown {
|
|
76
|
-
position: static; // Position dropdown relative to header, not this item
|
|
77
|
-
|
|
78
|
-
&:hover > .pa-header__dropdown {
|
|
79
|
-
display: block !important; // Override the !important hide
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
&__nav-link {
|
|
85
|
-
display: flex;
|
|
86
|
-
align-items: center;
|
|
87
|
-
gap: $spacing-xs;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Dropdown menus
|
|
91
|
-
&__dropdown {
|
|
92
|
-
display: none !important; // Force hide by default
|
|
93
|
-
position: absolute;
|
|
94
|
-
top: 100%;
|
|
95
|
-
inset-inline-start: 0; // RTL: flips to right: 0
|
|
96
|
-
min-width: 19.2rem;
|
|
97
|
-
background-color: var(--pa-card-bg);
|
|
98
|
-
border: $border-width-base solid var(--pa-border-color);
|
|
99
|
-
border-radius:
|
|
100
|
-
box-shadow: $shadow-lg;
|
|
101
|
-
z-index: 1100;
|
|
102
|
-
padding: $spacing-xs 0;
|
|
103
|
-
margin-top: 0;
|
|
104
|
-
list-style: none;
|
|
105
|
-
flex-direction: column; // Override any flex from parent
|
|
106
|
-
|
|
107
|
-
li {
|
|
108
|
-
margin: 0; // Disable base margins from _base.scss
|
|
109
|
-
display: block;
|
|
110
|
-
position: relative;
|
|
111
|
-
|
|
112
|
-
// Create invisible bridge for nested dropdowns (horizontal)
|
|
113
|
-
&.pa-header__nav-item--has-dropdown::after {
|
|
114
|
-
content: '';
|
|
115
|
-
position: absolute;
|
|
116
|
-
top: 0;
|
|
117
|
-
inset-inline-start: 100%; // RTL: flips to right: 100%
|
|
118
|
-
width: 6.4px; // Small invisible bridge
|
|
119
|
-
height: 100%;
|
|
120
|
-
z-index: 1099;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Show nested dropdown on hover
|
|
124
|
-
&:hover > .pa-header__dropdown {
|
|
125
|
-
display: block !important;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
a {
|
|
129
|
-
display: block;
|
|
130
|
-
padding: $spacing-sm $spacing-base;
|
|
131
|
-
color: var(--pa-text-color-1);
|
|
132
|
-
border-radius: 0;
|
|
133
|
-
white-space: nowrap;
|
|
134
|
-
text-decoration: none;
|
|
135
|
-
font-weight: $font-weight-medium;
|
|
136
|
-
font-size: $font-size-sm;
|
|
137
|
-
|
|
138
|
-
&:hover {
|
|
139
|
-
background-color: var(--pa-accent-light);
|
|
140
|
-
color: var(--pa-accent);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// Level 2 dropdown (nested)
|
|
146
|
-
&--level2 {
|
|
147
|
-
top: 0;
|
|
148
|
-
inset-inline-start: 100%; // RTL: flips to right: 100%
|
|
149
|
-
margin-top: 0;
|
|
150
|
-
margin-inline-start: 0; // RTL: flips to margin-right
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
&__title {
|
|
155
|
-
flex: 1;
|
|
156
|
-
min-width: 0; // Enable ellipsis
|
|
157
|
-
text-align: center;
|
|
158
|
-
|
|
159
|
-
h2 {
|
|
160
|
-
margin: 0;
|
|
161
|
-
font-size: $font-size-lg;
|
|
162
|
-
font-weight: $font-weight-semibold;
|
|
163
|
-
color: var(--pa-header-text);
|
|
164
|
-
white-space: nowrap;
|
|
165
|
-
overflow: hidden;
|
|
166
|
-
text-overflow: ellipsis;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
&__profile-btn {
|
|
171
|
-
flex-shrink: 0;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
// Burger menu button
|
|
176
|
-
.burger-menu {
|
|
177
|
-
display: flex;
|
|
178
|
-
flex-direction: column;
|
|
179
|
-
justify-content: space-around;
|
|
180
|
-
width: $burger-width;
|
|
181
|
-
height: $burger-height;
|
|
182
|
-
background: transparent;
|
|
183
|
-
border: none;
|
|
184
|
-
cursor: pointer;
|
|
185
|
-
padding: 0;
|
|
186
|
-
|
|
187
|
-
span {
|
|
188
|
-
width: 100%;
|
|
189
|
-
height: $burger-bar-height;
|
|
190
|
-
background-color: var(--pa-header-text);
|
|
191
|
-
border-radius:
|
|
192
|
-
transition: all $transition-normal $easing-snappy;
|
|
193
|
-
transform-origin: center;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
&.active {
|
|
197
|
-
span:nth-child(1) {
|
|
198
|
-
transform: rotate(45deg) translate($burger-transform-offset, $burger-transform-offset);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
span:nth-child(2) {
|
|
202
|
-
opacity: 0;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
span:nth-child(3) {
|
|
206
|
-
transform: rotate(-45deg) translate($burger-transform-offset, -$burger-transform-offset);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
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
|
-
|
|
221
|
-
&:hover span {
|
|
222
|
-
background-color: var(--pa-accent);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
// Theme switcher styling
|
|
227
|
-
.theme-switcher {
|
|
228
|
-
display: flex;
|
|
229
|
-
align-items: center;
|
|
230
|
-
gap: $spacing-sm;
|
|
231
|
-
|
|
232
|
-
label {
|
|
233
|
-
color: var(--pa-header-text-secondary);
|
|
234
|
-
font-size: $font-size-sm;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
select {
|
|
238
|
-
padding: $spacing-xs $spacing-sm;
|
|
239
|
-
border: $border-width-base solid var(--pa-border-color);
|
|
240
|
-
border-radius:
|
|
241
|
-
background-color: var(--pa-header-bg);
|
|
242
|
-
color: var(--pa-header-text);
|
|
243
|
-
font-size: $font-size-sm;
|
|
244
|
-
|
|
245
|
-
&:focus {
|
|
246
|
-
outline: none;
|
|
247
|
-
border-color: var(--pa-accent);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
}
|
|
1
|
+
/* ========================================
|
|
2
|
+
Navbar/Header Elements
|
|
3
|
+
Burger menu, brand, navigation, title, profile button, theme switcher
|
|
4
|
+
======================================== */
|
|
5
|
+
@use '../../variables' as *;
|
|
6
|
+
|
|
7
|
+
// Navbar elements (using pa-header__ prefix for backward compatibility with existing partials)
|
|
8
|
+
.pa-header {
|
|
9
|
+
&__burger {
|
|
10
|
+
flex-shrink: 0;
|
|
11
|
+
margin-inline-start: $burger-menu-margin-left; // RTL: flips to margin-right
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
&__brand {
|
|
15
|
+
flex-shrink: 0;
|
|
16
|
+
padding-inline-start: $header-brand-padding-left; // RTL: flips to padding-right
|
|
17
|
+
|
|
18
|
+
h1 {
|
|
19
|
+
margin: 0;
|
|
20
|
+
font-size: $font-size-lg;
|
|
21
|
+
font-weight: $font-weight-semibold;
|
|
22
|
+
color: var(--pa-header-text);
|
|
23
|
+
white-space: nowrap;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
&__nav {
|
|
28
|
+
flex-shrink: 0;
|
|
29
|
+
|
|
30
|
+
// Only style the direct child ul (main navigation)
|
|
31
|
+
> ul {
|
|
32
|
+
list-style: none;
|
|
33
|
+
margin: 0;
|
|
34
|
+
padding: 0;
|
|
35
|
+
display: flex;
|
|
36
|
+
gap: $spacing-md;
|
|
37
|
+
|
|
38
|
+
> li {
|
|
39
|
+
margin: 0; // Disable base margins from _base.scss
|
|
40
|
+
position: relative; // For dropdown positioning
|
|
41
|
+
display: flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
|
|
44
|
+
> a {
|
|
45
|
+
text-decoration: none;
|
|
46
|
+
color: var(--pa-header-text-secondary);
|
|
47
|
+
font-weight: $font-weight-medium;
|
|
48
|
+
padding: $spacing-xs $spacing-sm;
|
|
49
|
+
border-radius: var(--pa-border-radius);
|
|
50
|
+
transition: all $transition-fast $easing-snappy;
|
|
51
|
+
font-size: $font-size-sm;
|
|
52
|
+
display: flex;
|
|
53
|
+
align-items: center;
|
|
54
|
+
|
|
55
|
+
&:hover {
|
|
56
|
+
color: var(--pa-accent);
|
|
57
|
+
background-color: var(--pa-accent-hover);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Note: margin auto no longer needed with pa-header__start/center/end structure
|
|
64
|
+
&--start {
|
|
65
|
+
// Elements in start section
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&--end {
|
|
69
|
+
// Elements in end section
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Dropdown navigation items
|
|
74
|
+
&__nav-item {
|
|
75
|
+
&--has-dropdown {
|
|
76
|
+
position: static; // Position dropdown relative to header, not this item
|
|
77
|
+
|
|
78
|
+
&:hover > .pa-header__dropdown {
|
|
79
|
+
display: block !important; // Override the !important hide
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
&__nav-link {
|
|
85
|
+
display: flex;
|
|
86
|
+
align-items: center;
|
|
87
|
+
gap: $spacing-xs;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Dropdown menus
|
|
91
|
+
&__dropdown {
|
|
92
|
+
display: none !important; // Force hide by default
|
|
93
|
+
position: absolute;
|
|
94
|
+
top: 100%;
|
|
95
|
+
inset-inline-start: 0; // RTL: flips to right: 0
|
|
96
|
+
min-width: 19.2rem;
|
|
97
|
+
background-color: var(--pa-card-bg);
|
|
98
|
+
border: $border-width-base solid var(--pa-border-color);
|
|
99
|
+
border-radius: var(--pa-border-radius);
|
|
100
|
+
box-shadow: $shadow-lg;
|
|
101
|
+
z-index: 1100;
|
|
102
|
+
padding: $spacing-xs 0;
|
|
103
|
+
margin-top: 0;
|
|
104
|
+
list-style: none;
|
|
105
|
+
flex-direction: column; // Override any flex from parent
|
|
106
|
+
|
|
107
|
+
li {
|
|
108
|
+
margin: 0; // Disable base margins from _base.scss
|
|
109
|
+
display: block;
|
|
110
|
+
position: relative;
|
|
111
|
+
|
|
112
|
+
// Create invisible bridge for nested dropdowns (horizontal)
|
|
113
|
+
&.pa-header__nav-item--has-dropdown::after {
|
|
114
|
+
content: '';
|
|
115
|
+
position: absolute;
|
|
116
|
+
top: 0;
|
|
117
|
+
inset-inline-start: 100%; // RTL: flips to right: 100%
|
|
118
|
+
width: 6.4px; // Small invisible bridge
|
|
119
|
+
height: 100%;
|
|
120
|
+
z-index: 1099;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Show nested dropdown on hover
|
|
124
|
+
&:hover > .pa-header__dropdown {
|
|
125
|
+
display: block !important;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
a {
|
|
129
|
+
display: block;
|
|
130
|
+
padding: $spacing-sm $spacing-base;
|
|
131
|
+
color: var(--pa-text-color-1);
|
|
132
|
+
border-radius: 0;
|
|
133
|
+
white-space: nowrap;
|
|
134
|
+
text-decoration: none;
|
|
135
|
+
font-weight: $font-weight-medium;
|
|
136
|
+
font-size: $font-size-sm;
|
|
137
|
+
|
|
138
|
+
&:hover {
|
|
139
|
+
background-color: var(--pa-accent-light);
|
|
140
|
+
color: var(--pa-accent);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Level 2 dropdown (nested)
|
|
146
|
+
&--level2 {
|
|
147
|
+
top: 0;
|
|
148
|
+
inset-inline-start: 100%; // RTL: flips to right: 100%
|
|
149
|
+
margin-top: 0;
|
|
150
|
+
margin-inline-start: 0; // RTL: flips to margin-right
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
&__title {
|
|
155
|
+
flex: 1;
|
|
156
|
+
min-width: 0; // Enable ellipsis
|
|
157
|
+
text-align: center;
|
|
158
|
+
|
|
159
|
+
h2 {
|
|
160
|
+
margin: 0;
|
|
161
|
+
font-size: $font-size-lg;
|
|
162
|
+
font-weight: $font-weight-semibold;
|
|
163
|
+
color: var(--pa-header-text);
|
|
164
|
+
white-space: nowrap;
|
|
165
|
+
overflow: hidden;
|
|
166
|
+
text-overflow: ellipsis;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
&__profile-btn {
|
|
171
|
+
flex-shrink: 0;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// Burger menu button
|
|
176
|
+
.burger-menu {
|
|
177
|
+
display: flex;
|
|
178
|
+
flex-direction: column;
|
|
179
|
+
justify-content: space-around;
|
|
180
|
+
width: $burger-width;
|
|
181
|
+
height: $burger-height;
|
|
182
|
+
background: transparent;
|
|
183
|
+
border: none;
|
|
184
|
+
cursor: pointer;
|
|
185
|
+
padding: 0;
|
|
186
|
+
|
|
187
|
+
span {
|
|
188
|
+
width: 100%;
|
|
189
|
+
height: $burger-bar-height;
|
|
190
|
+
background-color: var(--pa-header-text);
|
|
191
|
+
border-radius: var(--pa-border-radius);
|
|
192
|
+
transition: all $transition-normal $easing-snappy;
|
|
193
|
+
transform-origin: center;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
&.active {
|
|
197
|
+
span:nth-child(1) {
|
|
198
|
+
transform: rotate(45deg) translate($burger-transform-offset, $burger-transform-offset);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
span:nth-child(2) {
|
|
202
|
+
opacity: 0;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
span:nth-child(3) {
|
|
206
|
+
transform: rotate(-45deg) translate($burger-transform-offset, -$burger-transform-offset);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
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
|
+
|
|
221
|
+
&:hover span {
|
|
222
|
+
background-color: var(--pa-accent);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Theme switcher styling
|
|
227
|
+
.theme-switcher {
|
|
228
|
+
display: flex;
|
|
229
|
+
align-items: center;
|
|
230
|
+
gap: $spacing-sm;
|
|
231
|
+
|
|
232
|
+
label {
|
|
233
|
+
color: var(--pa-header-text-secondary);
|
|
234
|
+
font-size: $font-size-sm;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
select {
|
|
238
|
+
padding: $spacing-xs $spacing-sm;
|
|
239
|
+
border: $border-width-base solid var(--pa-border-color);
|
|
240
|
+
border-radius: var(--pa-border-radius);
|
|
241
|
+
background-color: var(--pa-header-bg);
|
|
242
|
+
color: var(--pa-header-text);
|
|
243
|
+
font-size: $font-size-sm;
|
|
244
|
+
|
|
245
|
+
&:focus {
|
|
246
|
+
outline: none;
|
|
247
|
+
border-color: var(--pa-accent);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
/* ========================================
|
|
2
|
-
Navbar Component
|
|
3
|
-
Fixed navbar and constrained container widths
|
|
4
|
-
======================================== */
|
|
5
|
-
@use '../../variables' as *;
|
|
6
|
-
|
|
7
|
-
// Navbar - Fixed at top, full width by default
|
|
8
|
-
.pa-navbar {
|
|
9
|
-
position: fixed;
|
|
10
|
-
top: 0;
|
|
11
|
-
inset-inline: 0; // RTL: works for both LTR and RTL
|
|
12
|
-
height: $header-height;
|
|
13
|
-
background-color: var(--pa-header-bg);
|
|
14
|
-
border-bottom: $border-width-base solid var(--pa-header-border-color);
|
|
15
|
-
z-index: $z-index-header; // 2000
|
|
16
|
-
display: flex;
|
|
17
|
-
align-items: center;
|
|
18
|
-
justify-content: center; // Center for constrained mode
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// Constrained navbar - limit navbar width to match container
|
|
22
|
-
// Body class is just a marker, no width styles on body itself
|
|
23
|
-
body.pa-container-sm .pa-navbar {
|
|
24
|
-
max-width: $layout-container-sm;
|
|
25
|
-
inset-inline: 0; // RTL: works for both LTR and RTL
|
|
26
|
-
margin-inline: auto; // RTL: centers in both directions
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
body.pa-container-md .pa-navbar {
|
|
30
|
-
max-width: $layout-container-md;
|
|
31
|
-
inset-inline: 0;
|
|
32
|
-
margin-inline: auto;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
body.pa-container-lg .pa-navbar {
|
|
36
|
-
max-width: $layout-container-lg;
|
|
37
|
-
inset-inline: 0;
|
|
38
|
-
margin-inline: auto;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
body.pa-container-xl .pa-navbar {
|
|
42
|
-
max-width: $layout-container-xl;
|
|
43
|
-
inset-inline: 0;
|
|
44
|
-
margin-inline: auto;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
body.pa-container-2xl .pa-navbar {
|
|
48
|
-
max-width: $layout-container-2xl;
|
|
49
|
-
inset-inline: 0;
|
|
50
|
-
margin-inline: auto;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// Navbar inner content
|
|
54
|
-
.pa-navbar__inner {
|
|
55
|
-
width: 100%;
|
|
56
|
-
padding: 0 $spacing-base;
|
|
57
|
-
display: flex;
|
|
58
|
-
align-items: center;
|
|
59
|
-
gap: $spacing-base;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// Header sections - Start/Center/End layout
|
|
63
|
-
.pa-header__start {
|
|
64
|
-
display: flex;
|
|
65
|
-
align-items: center;
|
|
66
|
-
gap: $spacing-base;
|
|
67
|
-
flex-shrink: 0;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
.pa-header__center {
|
|
71
|
-
flex: 1;
|
|
72
|
-
min-width: 0; // Allow shrinking for ellipsis
|
|
73
|
-
display: flex;
|
|
74
|
-
align-items: center;
|
|
75
|
-
justify-content: center;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
.pa-header__end {
|
|
79
|
-
display: flex;
|
|
80
|
-
align-items: center;
|
|
81
|
-
gap: $spacing-base;
|
|
82
|
-
flex-shrink: 0;
|
|
83
|
-
}
|
|
1
|
+
/* ========================================
|
|
2
|
+
Navbar Component
|
|
3
|
+
Fixed navbar and constrained container widths
|
|
4
|
+
======================================== */
|
|
5
|
+
@use '../../variables' as *;
|
|
6
|
+
|
|
7
|
+
// Navbar - Fixed at top, full width by default
|
|
8
|
+
.pa-navbar {
|
|
9
|
+
position: fixed;
|
|
10
|
+
top: 0;
|
|
11
|
+
inset-inline: 0; // RTL: works for both LTR and RTL
|
|
12
|
+
height: $header-height;
|
|
13
|
+
background-color: var(--pa-header-bg);
|
|
14
|
+
border-bottom: $border-width-base solid var(--pa-header-border-color);
|
|
15
|
+
z-index: $z-index-header; // 2000
|
|
16
|
+
display: flex;
|
|
17
|
+
align-items: center;
|
|
18
|
+
justify-content: center; // Center for constrained mode
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Constrained navbar - limit navbar width to match container
|
|
22
|
+
// Body class is just a marker, no width styles on body itself
|
|
23
|
+
body.pa-container-sm .pa-navbar {
|
|
24
|
+
max-width: $layout-container-sm;
|
|
25
|
+
inset-inline: 0; // RTL: works for both LTR and RTL
|
|
26
|
+
margin-inline: auto; // RTL: centers in both directions
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
body.pa-container-md .pa-navbar {
|
|
30
|
+
max-width: $layout-container-md;
|
|
31
|
+
inset-inline: 0;
|
|
32
|
+
margin-inline: auto;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
body.pa-container-lg .pa-navbar {
|
|
36
|
+
max-width: $layout-container-lg;
|
|
37
|
+
inset-inline: 0;
|
|
38
|
+
margin-inline: auto;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
body.pa-container-xl .pa-navbar {
|
|
42
|
+
max-width: $layout-container-xl;
|
|
43
|
+
inset-inline: 0;
|
|
44
|
+
margin-inline: auto;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
body.pa-container-2xl .pa-navbar {
|
|
48
|
+
max-width: $layout-container-2xl;
|
|
49
|
+
inset-inline: 0;
|
|
50
|
+
margin-inline: auto;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Navbar inner content
|
|
54
|
+
.pa-navbar__inner {
|
|
55
|
+
width: 100%;
|
|
56
|
+
padding: 0 $spacing-base;
|
|
57
|
+
display: flex;
|
|
58
|
+
align-items: center;
|
|
59
|
+
gap: $spacing-base;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Header sections - Start/Center/End layout
|
|
63
|
+
.pa-header__start {
|
|
64
|
+
display: flex;
|
|
65
|
+
align-items: center;
|
|
66
|
+
gap: $spacing-base;
|
|
67
|
+
flex-shrink: 0;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.pa-header__center {
|
|
71
|
+
flex: 1;
|
|
72
|
+
min-width: 0; // Allow shrinking for ellipsis
|
|
73
|
+
display: flex;
|
|
74
|
+
align-items: center;
|
|
75
|
+
justify-content: center;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.pa-header__end {
|
|
79
|
+
display: flex;
|
|
80
|
+
align-items: center;
|
|
81
|
+
gap: $spacing-base;
|
|
82
|
+
flex-shrink: 0;
|
|
83
|
+
}
|