@keenmate/pure-admin-core 1.2.0 → 1.4.0
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 +40 -1
- package/dist/css/main.css +1367 -515
- package/package.json +1 -1
- package/src/scss/_base-css-variables.scss +1 -0
- package/src/scss/_core.scss +7 -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/_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 +347 -0
- package/src/scss/core-components/_detail-panel.scss +38 -26
- package/src/scss/core-components/_file-selector.scss +2 -2
- package/src/scss/core-components/_grid.scss +13 -20
- 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 +295 -22
- 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 +56 -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/_components.scss +27 -0
|
@@ -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
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
.pa-layout__sidebar {
|
|
20
20
|
background-color: var(--pa-sidebar-bg);
|
|
21
|
-
border-
|
|
21
|
+
border-inline-end: $border-width-base solid var(--pa-border-color); // RTL: flips to border-left
|
|
22
22
|
flex-shrink: 0;
|
|
23
23
|
position: relative;
|
|
24
24
|
}
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
.pa-sidebar-resize {
|
|
28
28
|
position: absolute;
|
|
29
29
|
top: 0;
|
|
30
|
-
|
|
30
|
+
inset-inline-end: 0; // RTL: flips to left
|
|
31
31
|
width: 6px;
|
|
32
32
|
height: 100%;
|
|
33
33
|
cursor: ew-resize;
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
content: '';
|
|
39
39
|
position: absolute;
|
|
40
40
|
top: 0;
|
|
41
|
-
|
|
41
|
+
inset-inline-start: 50%;
|
|
42
42
|
transform: translateX(-50%);
|
|
43
43
|
width: 2px;
|
|
44
44
|
height: 100%;
|
|
@@ -66,7 +66,7 @@ body.pa-sidebar-resizing {
|
|
|
66
66
|
body.pa-layout--sticky .pa-layout__sidebar {
|
|
67
67
|
overflow-y: auto;
|
|
68
68
|
overflow-y: overlay; // Chromium: scrollbar overlays content, doesn't reduce width
|
|
69
|
-
overflow-x: visible; // Allow tooltips to escape right
|
|
69
|
+
overflow-x: visible; // Allow tooltips to escape (right in LTR, left in RTL)
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
// Sidebar component (separate BEM block)
|
|
@@ -93,7 +93,7 @@ body.pa-layout--sticky .pa-layout__sidebar {
|
|
|
93
93
|
color: var(--pa-sidebar-text-secondary);
|
|
94
94
|
text-decoration: none;
|
|
95
95
|
font-weight: $font-weight-medium;
|
|
96
|
-
border-
|
|
96
|
+
border-inline-end: $border-width-thick solid transparent; // RTL: flips to border-left
|
|
97
97
|
|
|
98
98
|
body.loaded & {
|
|
99
99
|
transition: all $transition-fast $easing-snappy;
|
|
@@ -107,8 +107,8 @@ body.pa-layout--sticky .pa-layout__sidebar {
|
|
|
107
107
|
&--active {
|
|
108
108
|
color: var(--pa-sidebar-text);
|
|
109
109
|
background-color: var(--pa-accent-hover);
|
|
110
|
-
border-
|
|
111
|
-
font-weight: $font-weight-semibold;
|
|
110
|
+
border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
|
|
111
|
+
font-weight: $font-weight-semibold;
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
|
|
@@ -122,7 +122,7 @@ body.pa-layout--sticky .pa-layout__sidebar {
|
|
|
122
122
|
background: none;
|
|
123
123
|
border: none;
|
|
124
124
|
width: 100%;
|
|
125
|
-
text-align:
|
|
125
|
+
text-align: start; // RTL: flips to right
|
|
126
126
|
font-weight: $font-weight-medium;
|
|
127
127
|
cursor: pointer;
|
|
128
128
|
|
|
@@ -181,9 +181,9 @@ body.pa-layout--sticky .pa-layout__sidebar {
|
|
|
181
181
|
|
|
182
182
|
// Level 2 submenu links
|
|
183
183
|
&__submenu > &__item > &__link {
|
|
184
|
-
padding-
|
|
184
|
+
padding-inline-start: $sidebar-submenu-indent; // RTL: flips to padding-right
|
|
185
185
|
font-size: $font-size-md;
|
|
186
|
-
border-
|
|
186
|
+
border-inline-end: $border-width-medium solid transparent; // RTL: flips to border-left
|
|
187
187
|
|
|
188
188
|
&:hover {
|
|
189
189
|
background-color: var(--pa-sidebar-submenu-hover-bg);
|
|
@@ -191,38 +191,44 @@ body.pa-layout--sticky .pa-layout__sidebar {
|
|
|
191
191
|
|
|
192
192
|
&--active {
|
|
193
193
|
background-color: var(--pa-sidebar-submenu-active-bg);
|
|
194
|
-
border-
|
|
194
|
+
border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
|
|
198
198
|
// Level 2 submenu toggles (for third level)
|
|
199
199
|
&__submenu > &__item > &__toggle {
|
|
200
|
-
padding-
|
|
200
|
+
padding-inline-start: $sidebar-submenu-indent; // RTL: flips to padding-right
|
|
201
201
|
font-size: $font-size-md;
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
// Level 3 submenu links
|
|
205
205
|
&__submenu &__submenu > &__item > &__link {
|
|
206
|
-
padding-
|
|
206
|
+
padding-inline-start: calc($sidebar-submenu-indent * $sidebar-submenu-indent-multiplier); // RTL: flips
|
|
207
207
|
font-size: $font-size-sm;
|
|
208
|
-
border-
|
|
208
|
+
border-inline-end: $border-width-base solid transparent; // RTL: flips to border-left
|
|
209
209
|
|
|
210
210
|
&--active {
|
|
211
|
-
border-
|
|
211
|
+
border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
// Chevron icon for toggle buttons
|
|
216
216
|
&__chevron {
|
|
217
|
-
margin-
|
|
217
|
+
margin-inline-start: auto; // RTL: flips to margin-right: auto
|
|
218
218
|
font-size: $font-size-xs;
|
|
219
219
|
|
|
220
220
|
body.loaded & {
|
|
221
221
|
transition: transform $transition-fast $easing-snappy;
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
+
// Chevron points right (›) in LTR, left (‹) in RTL
|
|
225
|
+
// When open, rotates 90deg clockwise in LTR, -90deg (counter-clockwise) in RTL
|
|
224
226
|
.pa-sidebar__item--open & {
|
|
225
227
|
transform: rotate(90deg);
|
|
226
228
|
}
|
|
229
|
+
|
|
230
|
+
[dir="rtl"] .pa-sidebar__item--open & {
|
|
231
|
+
transform: rotate(-90deg);
|
|
232
|
+
}
|
|
227
233
|
}
|
|
228
234
|
}
|
|
@@ -555,3 +555,30 @@ $timeline-feed-time-width: 50px !default;
|
|
|
555
555
|
$timeline-feed-time-font-size: $font-size-xs !default;
|
|
556
556
|
$timeline-feed-time-padding-top: 6px !default;
|
|
557
557
|
$timeline-feed-scroll-container-max-height: 400px !default;
|
|
558
|
+
|
|
559
|
+
// ============================================================================
|
|
560
|
+
// DATA DISPLAY (READ-ONLY FIELDS)
|
|
561
|
+
// ============================================================================
|
|
562
|
+
$field-label-font-size: $font-size-xs !default;
|
|
563
|
+
$field-label-font-weight: $font-weight-semibold !default;
|
|
564
|
+
$field-label-opacity: 0.55 !default;
|
|
565
|
+
$field-value-font-size: $font-size-sm !default;
|
|
566
|
+
$field-gap: $spacing-xs !default;
|
|
567
|
+
$field-horizontal-label-width: 14rem !default;
|
|
568
|
+
$fields-gap: $spacing-base !default;
|
|
569
|
+
$fields-relaxed-gap: $spacing-lg !default;
|
|
570
|
+
$fields-bordered-padding: $spacing-sm !default;
|
|
571
|
+
$fields-bordered-border-color: $border-color !default;
|
|
572
|
+
$fields-striped-bg: $table-stripe !default;
|
|
573
|
+
$fields-cols-gap: $spacing-base !default;
|
|
574
|
+
$fields-border-left: 3px solid $accent-color !default;
|
|
575
|
+
$fields-padding-left: $spacing-base !default;
|
|
576
|
+
$fields-filled-bg: rgba(128, 128, 128, 0.06) !default;
|
|
577
|
+
$fields-filled-padding: $spacing-base !default;
|
|
578
|
+
|
|
579
|
+
// Field group (labeled section of fields)
|
|
580
|
+
$field-group-gap: $spacing-sm !default;
|
|
581
|
+
$field-group-title-font-size: $font-size-sm !default;
|
|
582
|
+
$field-group-title-font-weight: $font-weight-semibold !default;
|
|
583
|
+
$field-group-title-border-color: $border-color !default;
|
|
584
|
+
$field-group-spacing: $spacing-lg !default;
|