@keenmate/pure-admin-core 2.3.0 → 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 +7 -5
- package/dist/css/main.css +207 -181
- 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 +580 -548
- 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 +136 -135
- 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,234 +1,234 @@
|
|
|
1
|
-
/* ========================================
|
|
2
|
-
Sidebar Component
|
|
3
|
-
Sidebar navigation with nested submenus
|
|
4
|
-
======================================== */
|
|
5
|
-
@use '../../variables' as *;
|
|
6
|
-
|
|
7
|
-
// Local CSS variables for sidebar (runtime state, modified by JS for resize)
|
|
8
|
-
:root {
|
|
9
|
-
--pa-local-sidebar-width: #{$sidebar-width};
|
|
10
|
-
--pa-local-sidebar-min-width: 18rem;
|
|
11
|
-
--pa-local-sidebar-max-width: 50rem;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// Sidebar layout element - width in :where() for low specificity (utility classes can override)
|
|
15
|
-
:where(.pa-layout__sidebar) {
|
|
16
|
-
width: var(--pa-local-sidebar-width);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
.pa-layout__sidebar {
|
|
20
|
-
background-color: var(--pa-sidebar-bg);
|
|
21
|
-
border-inline-end: $border-width-base solid var(--pa-border-color); // RTL: flips to border-left
|
|
22
|
-
flex-shrink: 0;
|
|
23
|
-
position: relative;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// Resize handle on sidebar edge
|
|
27
|
-
.pa-sidebar-resize {
|
|
28
|
-
position: absolute;
|
|
29
|
-
top: 0;
|
|
30
|
-
inset-inline-end: 0; // RTL: flips to left
|
|
31
|
-
width: 6px;
|
|
32
|
-
height: 100%;
|
|
33
|
-
cursor: ew-resize;
|
|
34
|
-
z-index: 100;
|
|
35
|
-
|
|
36
|
-
// Visual indicator on hover
|
|
37
|
-
&::after {
|
|
38
|
-
content: '';
|
|
39
|
-
position: absolute;
|
|
40
|
-
top: 0;
|
|
41
|
-
inset-inline-start: 50%;
|
|
42
|
-
transform: translateX(-50%);
|
|
43
|
-
width: 2px;
|
|
44
|
-
height: 100%;
|
|
45
|
-
background-color: transparent;
|
|
46
|
-
transition: background-color $transition-fast $easing-snappy;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
&:hover::after,
|
|
50
|
-
&--active::after {
|
|
51
|
-
background-color: var(--pa-accent);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Disable text selection during resize
|
|
56
|
-
body.pa-sidebar-resizing {
|
|
57
|
-
cursor: ew-resize !important;
|
|
58
|
-
user-select: none;
|
|
59
|
-
|
|
60
|
-
* {
|
|
61
|
-
cursor: ew-resize !important;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Sticky mode - sidebar scrolls
|
|
66
|
-
body.pa-layout--sticky .pa-layout__sidebar {
|
|
67
|
-
overflow-y: auto;
|
|
68
|
-
overflow-y: overlay; // Chromium: scrollbar overlays content, doesn't reduce width
|
|
69
|
-
overflow-x: visible; // Allow tooltips to escape (right in LTR, left in RTL)
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// Sidebar component (separate BEM block)
|
|
73
|
-
.pa-sidebar {
|
|
74
|
-
&__nav {
|
|
75
|
-
padding: $spacing-base 0;
|
|
76
|
-
|
|
77
|
-
ul {
|
|
78
|
-
list-style: none;
|
|
79
|
-
margin: 0;
|
|
80
|
-
padding: 0;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
&__item {
|
|
85
|
-
// Base styles for all sidebar items (regular links and submenu toggles)
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
&__link {
|
|
89
|
-
display: flex;
|
|
90
|
-
align-items: center;
|
|
91
|
-
gap: $sidebar-item-gap;
|
|
92
|
-
padding: $sidebar-padding;
|
|
93
|
-
color: var(--pa-sidebar-text-secondary);
|
|
94
|
-
text-decoration: none;
|
|
95
|
-
font-weight: $font-weight-medium;
|
|
96
|
-
border-inline-end: $border-width-thick solid transparent; // RTL: flips to border-left
|
|
97
|
-
|
|
98
|
-
body.loaded & {
|
|
99
|
-
transition: all $transition-fast $easing-snappy;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
&:hover {
|
|
103
|
-
color: var(--pa-sidebar-text);
|
|
104
|
-
background-color: var(--pa-accent-light);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
&--active {
|
|
108
|
-
color: var(--pa-accent);
|
|
109
|
-
background-color: var(--pa-accent-hover);
|
|
110
|
-
border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
|
|
111
|
-
font-weight: $font-weight-semibold;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
&__toggle {
|
|
116
|
-
// For submenu toggle buttons (non-link items)
|
|
117
|
-
display: flex;
|
|
118
|
-
align-items: center;
|
|
119
|
-
gap: $sidebar-item-gap;
|
|
120
|
-
padding: $sidebar-padding;
|
|
121
|
-
color: var(--pa-sidebar-text-secondary);
|
|
122
|
-
background: none;
|
|
123
|
-
border: none;
|
|
124
|
-
width: 100%;
|
|
125
|
-
text-align: start; // RTL: flips to right
|
|
126
|
-
font-weight: $font-weight-medium;
|
|
127
|
-
cursor: pointer;
|
|
128
|
-
|
|
129
|
-
body.loaded & {
|
|
130
|
-
transition: all $transition-fast $easing-snappy;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
&:hover {
|
|
134
|
-
color: var(--pa-sidebar-text);
|
|
135
|
-
background-color: var(--pa-accent-light);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
&--active {
|
|
139
|
-
color: var(--pa-accent);
|
|
140
|
-
background-color: var(--pa-accent-hover);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
// Icon and label styles
|
|
145
|
-
&__icon {
|
|
146
|
-
width: $sidebar-icon-size;
|
|
147
|
-
min-width: $sidebar-icon-size;
|
|
148
|
-
height: $sidebar-icon-size;
|
|
149
|
-
display: flex;
|
|
150
|
-
align-items: center;
|
|
151
|
-
justify-content: center;
|
|
152
|
-
flex-shrink: 0;
|
|
153
|
-
font-size: $font-size-base;
|
|
154
|
-
text-align: center;
|
|
155
|
-
line-height: 1; // Prevent emoji baseline shift
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
&__label {
|
|
159
|
-
flex: 1;
|
|
160
|
-
overflow: hidden;
|
|
161
|
-
text-overflow: ellipsis;
|
|
162
|
-
white-space: nowrap;
|
|
163
|
-
|
|
164
|
-
body.loaded & {
|
|
165
|
-
transition: opacity $transition-normal $easing-snappy, width $transition-normal $easing-snappy;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
// Submenu styles - Level 2
|
|
170
|
-
&__submenu {
|
|
171
|
-
list-style: none;
|
|
172
|
-
margin: 0;
|
|
173
|
-
padding: 0;
|
|
174
|
-
display: none;
|
|
175
|
-
background-color: var(--pa-sidebar-submenu-bg);
|
|
176
|
-
|
|
177
|
-
&--open {
|
|
178
|
-
display: block;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
// Level 2 submenu links
|
|
183
|
-
&__submenu > &__item > &__link {
|
|
184
|
-
padding-inline-start: $sidebar-submenu-indent; // RTL: flips to padding-right
|
|
185
|
-
font-size: $font-size-md;
|
|
186
|
-
border-inline-end: $border-width-medium solid transparent; // RTL: flips to border-left
|
|
187
|
-
|
|
188
|
-
&:hover {
|
|
189
|
-
background-color: var(--pa-sidebar-submenu-hover-bg);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
&--active {
|
|
193
|
-
background-color: var(--pa-sidebar-submenu-active-bg);
|
|
194
|
-
border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// Level 2 submenu toggles (for third level)
|
|
199
|
-
&__submenu > &__item > &__toggle {
|
|
200
|
-
padding-inline-start: $sidebar-submenu-indent; // RTL: flips to padding-right
|
|
201
|
-
font-size: $font-size-md;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
// Level 3 submenu links
|
|
205
|
-
&__submenu &__submenu > &__item > &__link {
|
|
206
|
-
padding-inline-start: calc($sidebar-submenu-indent * $sidebar-submenu-indent-multiplier); // RTL: flips
|
|
207
|
-
font-size: $font-size-sm;
|
|
208
|
-
border-inline-end: $border-width-base solid transparent; // RTL: flips to border-left
|
|
209
|
-
|
|
210
|
-
&--active {
|
|
211
|
-
border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
// Chevron icon for toggle buttons
|
|
216
|
-
&__chevron {
|
|
217
|
-
margin-inline-start: auto; // RTL: flips to margin-right: auto
|
|
218
|
-
font-size: $font-size-xs;
|
|
219
|
-
|
|
220
|
-
body.loaded & {
|
|
221
|
-
transition: transform $transition-fast $easing-snappy;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
// Chevron points right (›) in LTR, left (‹) in RTL
|
|
225
|
-
// When open, rotates 90deg clockwise in LTR, -90deg (counter-clockwise) in RTL
|
|
226
|
-
.pa-sidebar__item--open & {
|
|
227
|
-
transform: rotate(90deg);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
[dir="rtl"] .pa-sidebar__item--open & {
|
|
231
|
-
transform: rotate(-90deg);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
1
|
+
/* ========================================
|
|
2
|
+
Sidebar Component
|
|
3
|
+
Sidebar navigation with nested submenus
|
|
4
|
+
======================================== */
|
|
5
|
+
@use '../../variables' as *;
|
|
6
|
+
|
|
7
|
+
// Local CSS variables for sidebar (runtime state, modified by JS for resize)
|
|
8
|
+
:root {
|
|
9
|
+
--pa-local-sidebar-width: #{$sidebar-width};
|
|
10
|
+
--pa-local-sidebar-min-width: 18rem;
|
|
11
|
+
--pa-local-sidebar-max-width: 50rem;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Sidebar layout element - width in :where() for low specificity (utility classes can override)
|
|
15
|
+
:where(.pa-layout__sidebar) {
|
|
16
|
+
width: var(--pa-local-sidebar-width);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.pa-layout__sidebar {
|
|
20
|
+
background-color: var(--pa-sidebar-bg);
|
|
21
|
+
border-inline-end: $border-width-base solid var(--pa-border-color); // RTL: flips to border-left
|
|
22
|
+
flex-shrink: 0;
|
|
23
|
+
position: relative;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Resize handle on sidebar edge
|
|
27
|
+
.pa-sidebar-resize {
|
|
28
|
+
position: absolute;
|
|
29
|
+
top: 0;
|
|
30
|
+
inset-inline-end: 0; // RTL: flips to left
|
|
31
|
+
width: 6px;
|
|
32
|
+
height: 100%;
|
|
33
|
+
cursor: ew-resize;
|
|
34
|
+
z-index: 100;
|
|
35
|
+
|
|
36
|
+
// Visual indicator on hover
|
|
37
|
+
&::after {
|
|
38
|
+
content: '';
|
|
39
|
+
position: absolute;
|
|
40
|
+
top: 0;
|
|
41
|
+
inset-inline-start: 50%;
|
|
42
|
+
transform: translateX(-50%);
|
|
43
|
+
width: 2px;
|
|
44
|
+
height: 100%;
|
|
45
|
+
background-color: transparent;
|
|
46
|
+
transition: background-color $transition-fast $easing-snappy;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
&:hover::after,
|
|
50
|
+
&--active::after {
|
|
51
|
+
background-color: var(--pa-accent);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Disable text selection during resize
|
|
56
|
+
body.pa-sidebar-resizing {
|
|
57
|
+
cursor: ew-resize !important;
|
|
58
|
+
user-select: none;
|
|
59
|
+
|
|
60
|
+
* {
|
|
61
|
+
cursor: ew-resize !important;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Sticky mode - sidebar scrolls
|
|
66
|
+
body.pa-layout--sticky .pa-layout__sidebar {
|
|
67
|
+
overflow-y: auto;
|
|
68
|
+
overflow-y: overlay; // Chromium: scrollbar overlays content, doesn't reduce width
|
|
69
|
+
overflow-x: visible; // Allow tooltips to escape (right in LTR, left in RTL)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Sidebar component (separate BEM block)
|
|
73
|
+
.pa-sidebar {
|
|
74
|
+
&__nav {
|
|
75
|
+
padding: $spacing-base 0;
|
|
76
|
+
|
|
77
|
+
ul {
|
|
78
|
+
list-style: none;
|
|
79
|
+
margin: 0;
|
|
80
|
+
padding: 0;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
&__item {
|
|
85
|
+
// Base styles for all sidebar items (regular links and submenu toggles)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
&__link {
|
|
89
|
+
display: flex;
|
|
90
|
+
align-items: center;
|
|
91
|
+
gap: $sidebar-item-gap;
|
|
92
|
+
padding: $sidebar-padding;
|
|
93
|
+
color: var(--pa-sidebar-text-secondary);
|
|
94
|
+
text-decoration: none;
|
|
95
|
+
font-weight: $font-weight-medium;
|
|
96
|
+
border-inline-end: $border-width-thick solid transparent; // RTL: flips to border-left
|
|
97
|
+
|
|
98
|
+
body.loaded & {
|
|
99
|
+
transition: all $transition-fast $easing-snappy;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
&:hover {
|
|
103
|
+
color: var(--pa-sidebar-text);
|
|
104
|
+
background-color: var(--pa-accent-light);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
&--active {
|
|
108
|
+
color: var(--pa-accent);
|
|
109
|
+
background-color: var(--pa-accent-hover);
|
|
110
|
+
border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
|
|
111
|
+
font-weight: $font-weight-semibold;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
&__toggle {
|
|
116
|
+
// For submenu toggle buttons (non-link items)
|
|
117
|
+
display: flex;
|
|
118
|
+
align-items: center;
|
|
119
|
+
gap: $sidebar-item-gap;
|
|
120
|
+
padding: $sidebar-padding;
|
|
121
|
+
color: var(--pa-sidebar-text-secondary);
|
|
122
|
+
background: none;
|
|
123
|
+
border: none;
|
|
124
|
+
width: 100%;
|
|
125
|
+
text-align: start; // RTL: flips to right
|
|
126
|
+
font-weight: $font-weight-medium;
|
|
127
|
+
cursor: pointer;
|
|
128
|
+
|
|
129
|
+
body.loaded & {
|
|
130
|
+
transition: all $transition-fast $easing-snappy;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
&:hover {
|
|
134
|
+
color: var(--pa-sidebar-text);
|
|
135
|
+
background-color: var(--pa-accent-light);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
&--active {
|
|
139
|
+
color: var(--pa-accent);
|
|
140
|
+
background-color: var(--pa-accent-hover);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Icon and label styles
|
|
145
|
+
&__icon {
|
|
146
|
+
width: $sidebar-icon-size;
|
|
147
|
+
min-width: $sidebar-icon-size;
|
|
148
|
+
height: $sidebar-icon-size;
|
|
149
|
+
display: flex;
|
|
150
|
+
align-items: center;
|
|
151
|
+
justify-content: center;
|
|
152
|
+
flex-shrink: 0;
|
|
153
|
+
font-size: $font-size-base;
|
|
154
|
+
text-align: center;
|
|
155
|
+
line-height: 1; // Prevent emoji baseline shift
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
&__label {
|
|
159
|
+
flex: 1;
|
|
160
|
+
overflow: hidden;
|
|
161
|
+
text-overflow: ellipsis;
|
|
162
|
+
white-space: nowrap;
|
|
163
|
+
|
|
164
|
+
body.loaded & {
|
|
165
|
+
transition: opacity $transition-normal $easing-snappy, width $transition-normal $easing-snappy;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Submenu styles - Level 2
|
|
170
|
+
&__submenu {
|
|
171
|
+
list-style: none;
|
|
172
|
+
margin: 0;
|
|
173
|
+
padding: 0;
|
|
174
|
+
display: none;
|
|
175
|
+
background-color: var(--pa-sidebar-submenu-bg);
|
|
176
|
+
|
|
177
|
+
&--open {
|
|
178
|
+
display: block;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Level 2 submenu links
|
|
183
|
+
&__submenu > &__item > &__link {
|
|
184
|
+
padding-inline-start: $sidebar-submenu-indent; // RTL: flips to padding-right
|
|
185
|
+
font-size: $font-size-md;
|
|
186
|
+
border-inline-end: $border-width-medium solid transparent; // RTL: flips to border-left
|
|
187
|
+
|
|
188
|
+
&:hover {
|
|
189
|
+
background-color: var(--pa-sidebar-submenu-hover-bg);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
&--active {
|
|
193
|
+
background-color: var(--pa-sidebar-submenu-active-bg);
|
|
194
|
+
border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// Level 2 submenu toggles (for third level)
|
|
199
|
+
&__submenu > &__item > &__toggle {
|
|
200
|
+
padding-inline-start: $sidebar-submenu-indent; // RTL: flips to padding-right
|
|
201
|
+
font-size: $font-size-md;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Level 3 submenu links
|
|
205
|
+
&__submenu &__submenu > &__item > &__link {
|
|
206
|
+
padding-inline-start: calc($sidebar-submenu-indent * $sidebar-submenu-indent-multiplier); // RTL: flips
|
|
207
|
+
font-size: $font-size-sm;
|
|
208
|
+
border-inline-end: $border-width-base solid transparent; // RTL: flips to border-left
|
|
209
|
+
|
|
210
|
+
&--active {
|
|
211
|
+
border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// Chevron icon for toggle buttons
|
|
216
|
+
&__chevron {
|
|
217
|
+
margin-inline-start: auto; // RTL: flips to margin-right: auto
|
|
218
|
+
font-size: $font-size-xs;
|
|
219
|
+
|
|
220
|
+
body.loaded & {
|
|
221
|
+
transition: transform $transition-fast $easing-snappy;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Chevron points right (›) in LTR, left (‹) in RTL
|
|
225
|
+
// When open, rotates 90deg clockwise in LTR, -90deg (counter-clockwise) in RTL
|
|
226
|
+
.pa-sidebar__item--open & {
|
|
227
|
+
transform: rotate(90deg);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
[dir="rtl"] .pa-sidebar__item--open & {
|
|
231
|
+
transform: rotate(-90deg);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
package/src/scss/main.scss
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/* Pure Admin Visual Framework - Main Entry Point */
|
|
2
|
-
|
|
3
|
-
// Utilities (spacing, etc.)
|
|
4
|
-
@use "utilities" as *;
|
|
5
|
-
|
|
6
|
-
// Core framework (includes variables and all core-components)
|
|
7
|
-
@use 'core' as *;
|
|
1
|
+
/* Pure Admin Visual Framework - Main Entry Point */
|
|
2
|
+
|
|
3
|
+
// Utilities (spacing, etc.)
|
|
4
|
+
@use "utilities" as *;
|
|
5
|
+
|
|
6
|
+
// Core framework (includes variables and all core-components)
|
|
7
|
+
@use 'core' as *;
|