@keenmate/pure-admin-core 2.6.0 → 2.7.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 +17 -8
- package/dist/css/main.css +345 -257
- package/package.json +1 -1
- package/src/scss/_base-css-variables.scss +37 -19
- package/src/scss/core-components/_alerts.scss +2 -2
- package/src/scss/core-components/_base.scss +19 -2
- package/src/scss/core-components/_buttons.scss +12 -8
- package/src/scss/core-components/_callouts.scss +1 -1
- package/src/scss/core-components/_cards.scss +4 -4
- package/src/scss/core-components/_checkbox-lists.scss +2 -2
- package/src/scss/core-components/_comparison.scss +7 -4
- package/src/scss/core-components/_data-display.scss +24 -15
- package/src/scss/core-components/_data-viz.scss +139 -131
- package/src/scss/core-components/_file-selector.scss +34 -34
- package/src/scss/core-components/_lists.scss +4 -4
- package/src/scss/core-components/_logic-tree.scss +2 -2
- package/src/scss/core-components/_modals.scss +69 -0
- package/src/scss/core-components/_notifications.scss +17 -17
- package/src/scss/core-components/_popconfirm.scss +1 -1
- package/src/scss/core-components/_statistics.scss +25 -19
- package/src/scss/core-components/_tabs.scss +12 -12
- package/src/scss/core-components/_timeline.scss +30 -30
- package/src/scss/core-components/badges/_composite-badge-variants.scss +7 -7
- package/src/scss/core-components/badges/_composite-badge.scss +1 -1
- package/src/scss/core-components/badges/_labels.scss +6 -6
- package/src/scss/core-components/forms/_input-wrapper.scss +1 -1
- package/src/scss/core-components/forms/_query-editor.scss +10 -10
- package/src/scss/core-components/layout/_sidebar-states.scss +1 -0
- package/src/scss/core-components/layout/_sidebar.scss +1 -0
- package/src/scss/variables/_colors.scss +1 -0
- package/src/scss/variables/_components.scss +3 -2
package/package.json
CHANGED
|
@@ -275,7 +275,17 @@
|
|
|
275
275
|
// Accent colors
|
|
276
276
|
--pa-accent: #{$accent-color};
|
|
277
277
|
--pa-accent-hover: #{$accent-hover};
|
|
278
|
-
--pa-accent
|
|
278
|
+
// -light derives from --pa-accent at runtime so theme overrides cascade.
|
|
279
|
+
// SCSS-only consumers still get $accent-light from variables/_base.scss via the !default chain.
|
|
280
|
+
--pa-accent-light: color-mix(in srgb, var(--pa-accent) 5%, transparent);
|
|
281
|
+
|
|
282
|
+
// Links — derive from accent so theme overrides cascade automatically.
|
|
283
|
+
// Hover mixes 25% toward currentColor (inherited text colour at the use site),
|
|
284
|
+
// so it auto-darkens on light themes and auto-lightens on dark themes
|
|
285
|
+
// without per-mode declarations.
|
|
286
|
+
--pa-link-color: var(--pa-accent);
|
|
287
|
+
--pa-link-color-hover: color-mix(in srgb, var(--pa-link-color), currentColor 50%);
|
|
288
|
+
--pa-link-color-visited: var(--pa-link-color);
|
|
279
289
|
|
|
280
290
|
// Border
|
|
281
291
|
--pa-border-color: #{$border-color};
|
|
@@ -369,6 +379,7 @@
|
|
|
369
379
|
--pa-sidebar-submenu-bg: #{$sidebar-submenu-bg};
|
|
370
380
|
--pa-sidebar-submenu-hover-bg: #{$sidebar-submenu-hover-bg};
|
|
371
381
|
--pa-sidebar-submenu-active-bg: #{$sidebar-submenu-active-bg};
|
|
382
|
+
--pa-sidebar-submenu-active-text: #{$sidebar-submenu-active-text};
|
|
372
383
|
|
|
373
384
|
// Footer
|
|
374
385
|
--pa-footer-bg: #{$footer-bg};
|
|
@@ -381,14 +392,19 @@
|
|
|
381
392
|
// Primary (uses accent color)
|
|
382
393
|
--pa-btn-primary-bg: #{$btn-primary-bg};
|
|
383
394
|
--pa-btn-primary-bg-hover: #{$btn-primary-bg-hover};
|
|
384
|
-
--pa-btn-primary-bg
|
|
395
|
+
// -light derives from --pa-btn-primary-bg at runtime so theme overrides cascade.
|
|
396
|
+
--pa-btn-primary-bg-light: color-mix(in srgb, var(--pa-btn-primary-bg) 5%, transparent);
|
|
385
397
|
--pa-btn-primary-text: #{$btn-primary-text};
|
|
386
398
|
|
|
387
399
|
// Secondary
|
|
388
400
|
--pa-btn-secondary-bg: #{$btn-secondary-bg};
|
|
389
401
|
--pa-btn-secondary-bg-hover: #{$btn-secondary-bg-hover};
|
|
390
402
|
--pa-btn-secondary-text: #{$btn-secondary-text};
|
|
391
|
-
--pa-btn-secondary-
|
|
403
|
+
// Outline-variant border + text colour. Defaults to --pa-btn-secondary-bg
|
|
404
|
+
// so the resting outline matches the colour the hover fill animates to.
|
|
405
|
+
// Was previously $btn-secondary-text (#ffffff) which rendered invisible on
|
|
406
|
+
// any light theme — pre-existing bug, not a 2.7.0 regression.
|
|
407
|
+
--pa-btn-secondary-outline-color: var(--pa-btn-secondary-bg);
|
|
392
408
|
|
|
393
409
|
// Success — bg references role colour for runtime cascade
|
|
394
410
|
--pa-btn-success-bg: var(--pa-success);
|
|
@@ -424,39 +440,41 @@
|
|
|
424
440
|
// CONTEXTUAL/SEMANTIC COLORS
|
|
425
441
|
// =========================================================================
|
|
426
442
|
|
|
427
|
-
// Success — bg references role colour for runtime cascade
|
|
443
|
+
// Success — bg references role colour for runtime cascade.
|
|
444
|
+
// -light/-subtle/-border derive from --pa-success at runtime so theme overrides cascade.
|
|
445
|
+
// -hover stays compile-time (color.adjust-derived darker shade, not opacity-based).
|
|
428
446
|
--pa-success-bg: var(--pa-success);
|
|
429
447
|
--pa-success-bg-hover: #{$success-bg-hover};
|
|
430
|
-
--pa-success-bg-light:
|
|
431
|
-
--pa-success-bg-subtle:
|
|
432
|
-
--pa-success-border:
|
|
448
|
+
--pa-success-bg-light: color-mix(in srgb, var(--pa-success) 10%, transparent);
|
|
449
|
+
--pa-success-bg-subtle: color-mix(in srgb, var(--pa-success) 8%, transparent);
|
|
450
|
+
--pa-success-border: color-mix(in srgb, var(--pa-success) 20%, transparent);
|
|
433
451
|
--pa-success-text: #{$success-text};
|
|
434
452
|
--pa-success-text-light: #{$success-text-light};
|
|
435
453
|
|
|
436
|
-
// Danger — bg references role colour for runtime cascade
|
|
454
|
+
// Danger — bg references role colour for runtime cascade.
|
|
437
455
|
--pa-danger-bg: var(--pa-danger);
|
|
438
456
|
--pa-danger-bg-hover: #{$danger-bg-hover};
|
|
439
|
-
--pa-danger-bg-light:
|
|
440
|
-
--pa-danger-bg-subtle:
|
|
441
|
-
--pa-danger-border:
|
|
457
|
+
--pa-danger-bg-light: color-mix(in srgb, var(--pa-danger) 10%, transparent);
|
|
458
|
+
--pa-danger-bg-subtle: color-mix(in srgb, var(--pa-danger) 8%, transparent);
|
|
459
|
+
--pa-danger-border: color-mix(in srgb, var(--pa-danger) 20%, transparent);
|
|
442
460
|
--pa-danger-text: #{$danger-text};
|
|
443
461
|
--pa-danger-text-light: #{$danger-text-light};
|
|
444
462
|
|
|
445
|
-
// Warning — bg references role colour for runtime cascade
|
|
463
|
+
// Warning — bg references role colour for runtime cascade.
|
|
446
464
|
--pa-warning-bg: var(--pa-warning);
|
|
447
465
|
--pa-warning-bg-hover: #{$warning-bg-hover};
|
|
448
|
-
--pa-warning-bg-light:
|
|
449
|
-
--pa-warning-bg-subtle:
|
|
450
|
-
--pa-warning-border:
|
|
466
|
+
--pa-warning-bg-light: color-mix(in srgb, var(--pa-warning) 10%, transparent);
|
|
467
|
+
--pa-warning-bg-subtle: color-mix(in srgb, var(--pa-warning) 8%, transparent);
|
|
468
|
+
--pa-warning-border: color-mix(in srgb, var(--pa-warning) 20%, transparent);
|
|
451
469
|
--pa-warning-text: #{$warning-text};
|
|
452
470
|
--pa-warning-text-light: #{$warning-text-light};
|
|
453
471
|
|
|
454
|
-
// Info — bg references role colour for runtime cascade
|
|
472
|
+
// Info — bg references role colour for runtime cascade.
|
|
455
473
|
--pa-info-bg: var(--pa-info);
|
|
456
474
|
--pa-info-bg-hover: #{$info-bg-hover};
|
|
457
|
-
--pa-info-bg-light:
|
|
458
|
-
--pa-info-bg-subtle:
|
|
459
|
-
--pa-info-border:
|
|
475
|
+
--pa-info-bg-light: color-mix(in srgb, var(--pa-info) 10%, transparent);
|
|
476
|
+
--pa-info-bg-subtle: color-mix(in srgb, var(--pa-info) 8%, transparent);
|
|
477
|
+
--pa-info-border: color-mix(in srgb, var(--pa-info) 20%, transparent);
|
|
460
478
|
--pa-info-text: #{$info-text};
|
|
461
479
|
--pa-info-text-light: #{$info-text-light};
|
|
462
480
|
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
// Basic alert variants - using theme colors with subtle backgrounds
|
|
33
33
|
&--primary {
|
|
34
34
|
color: var(--pa-accent);
|
|
35
|
-
background-color:
|
|
36
|
-
border-color:
|
|
35
|
+
background-color: color-mix(in srgb, var(--pa-accent) #{$opacity-subtle * 100%}, transparent);
|
|
36
|
+
border-color: color-mix(in srgb, var(--pa-accent) #{$opacity-border * 100%}, transparent);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
&--secondary {
|
|
@@ -27,6 +27,23 @@ p {
|
|
|
27
27
|
padding: 0;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
// Links — global default. Wrapped in :where() so specificity is 0,
|
|
31
|
+
// letting component scopes (alerts, navbar, sidebar) override with even a
|
|
32
|
+
// single class without fighting the pseudo-class specificity raise that
|
|
33
|
+
// `a:hover` / `a:visited` would otherwise add (0,1,1 vs a class's 0,1,0).
|
|
34
|
+
:where(a) {
|
|
35
|
+
color: var(--pa-link-color);
|
|
36
|
+
text-decoration: underline;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:where(a:hover) {
|
|
40
|
+
color: var(--pa-link-color-hover);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
:where(a:visited) {
|
|
44
|
+
color: var(--pa-link-color-visited);
|
|
45
|
+
}
|
|
46
|
+
|
|
30
47
|
// Lists - styled lists (default browser styling)
|
|
31
48
|
ul, ol {
|
|
32
49
|
margin: $list-margin-top 0 $list-margin-bottom 0;
|
|
@@ -101,8 +118,8 @@ body {
|
|
|
101
118
|
right: 0;
|
|
102
119
|
bottom: 0;
|
|
103
120
|
background:
|
|
104
|
-
radial-gradient(circle at $bg-pattern-circle-1-x $bg-pattern-circle-1-y,
|
|
105
|
-
radial-gradient(circle at $bg-pattern-circle-2-x $bg-pattern-circle-2-y,
|
|
121
|
+
radial-gradient(circle at $bg-pattern-circle-1-x $bg-pattern-circle-1-y, color-mix(in srgb, var(--pa-accent) #{$bg-pattern-opacity * 100%}, transparent) $bg-pattern-gradient-start, transparent $bg-pattern-gradient-stop),
|
|
122
|
+
radial-gradient(circle at $bg-pattern-circle-2-x $bg-pattern-circle-2-y, color-mix(in srgb, var(--pa-accent) #{$bg-pattern-opacity * 100%}, transparent) $bg-pattern-gradient-start, transparent $bg-pattern-gradient-stop);
|
|
106
123
|
pointer-events: none;
|
|
107
124
|
z-index: -1;
|
|
108
125
|
}
|
|
@@ -461,16 +461,20 @@
|
|
|
461
461
|
.pa-btn-split {
|
|
462
462
|
position: relative;
|
|
463
463
|
display: inline-flex;
|
|
464
|
-
border-radius: var(--pa-border-radius);
|
|
465
|
-
overflow: hidden;
|
|
466
464
|
|
|
467
|
-
//
|
|
468
|
-
.pa-btn
|
|
469
|
-
|
|
465
|
+
// Flatten the inner edges between the two trigger buttons; outer corners
|
|
466
|
+
// stay rounded from each .pa-btn's own border-radius. Avoids relying on
|
|
467
|
+
// overflow:hidden + container border-radius, which gets bypassed by hover
|
|
468
|
+
// background paint in some browsers/themes.
|
|
469
|
+
> .pa-btn:first-child {
|
|
470
|
+
border-start-end-radius: 0;
|
|
471
|
+
border-end-end-radius: 0;
|
|
472
|
+
border-inline-end: none;
|
|
473
|
+
}
|
|
470
474
|
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
475
|
+
> .pa-btn-split__toggle {
|
|
476
|
+
border-start-start-radius: 0;
|
|
477
|
+
border-end-start-radius: 0;
|
|
474
478
|
}
|
|
475
479
|
|
|
476
480
|
// Toggle button (chevron) - fixed square width
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
// Callout variants
|
|
27
27
|
&--primary {
|
|
28
28
|
border-inline-start-color: var(--pa-accent);
|
|
29
|
-
background-color:
|
|
29
|
+
background-color: color-mix(in srgb, var(--pa-accent) #{$opacity-subtle * 100%}, transparent);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
&--secondary {
|
|
@@ -344,12 +344,12 @@
|
|
|
344
344
|
// Live-data state — persistent tinted background reflecting latest change
|
|
345
345
|
// JS swaps the class on each data update; color stays until next update
|
|
346
346
|
&--live-up {
|
|
347
|
-
background-color:
|
|
347
|
+
background-color: color-mix(in srgb, var(--pa-positive) 10%, transparent);
|
|
348
348
|
transition: background-color 0.3s ease;
|
|
349
349
|
}
|
|
350
350
|
|
|
351
351
|
&--live-down {
|
|
352
|
-
background-color:
|
|
352
|
+
background-color: color-mix(in srgb, var(--pa-negative) 10%, transparent);
|
|
353
353
|
transition: background-color 0.3s ease;
|
|
354
354
|
}
|
|
355
355
|
|
|
@@ -398,7 +398,7 @@
|
|
|
398
398
|
|
|
399
399
|
&:hover {
|
|
400
400
|
color: var(--pa-text-color-1);
|
|
401
|
-
background-color:
|
|
401
|
+
background-color: color-mix(in srgb, var(--pa-accent) #{$card-tab-hover-opacity * 100%}, transparent);
|
|
402
402
|
}
|
|
403
403
|
|
|
404
404
|
&--active {
|
|
@@ -434,7 +434,7 @@
|
|
|
434
434
|
transition: all $transition-fast $easing-snappy;
|
|
435
435
|
|
|
436
436
|
&:hover {
|
|
437
|
-
background-color:
|
|
437
|
+
background-color: color-mix(in srgb, var(--pa-accent) #{$card-tab-hover-opacity * 100%}, transparent);
|
|
438
438
|
color: var(--pa-text-color-1);
|
|
439
439
|
}
|
|
440
440
|
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
cursor: not-allowed;
|
|
159
159
|
|
|
160
160
|
&:hover {
|
|
161
|
-
background-color:
|
|
161
|
+
background-color: color-mix(in srgb, var(--pa-warning) 5%, transparent);
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
.pa-checkbox-list__checkbox {
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
|
|
173
173
|
// Add lock icon before text
|
|
174
174
|
.pa-checkbox-list__text {
|
|
175
|
-
color:
|
|
175
|
+
color: var(--pa-warning);
|
|
176
176
|
|
|
177
177
|
&::before {
|
|
178
178
|
content: '🔒 ';
|
|
@@ -67,7 +67,10 @@
|
|
|
67
67
|
|
|
68
68
|
// Changed value highlighting (pink/salmon background)
|
|
69
69
|
&__changed {
|
|
70
|
-
|
|
70
|
+
// Diff-specific accent (pink, distinct from role colours so it doesn't
|
|
71
|
+
// collide with status chips in the same row). All three intensities
|
|
72
|
+
// derive from $comparison-accent-pink so a theme override cascades.
|
|
73
|
+
background-color: color-mix(in srgb, $comparison-accent-pink 15%, transparent);
|
|
71
74
|
position: relative;
|
|
72
75
|
|
|
73
76
|
&::before {
|
|
@@ -82,7 +85,7 @@
|
|
|
82
85
|
|
|
83
86
|
// Solid background variant (no left border accent)
|
|
84
87
|
&--solid {
|
|
85
|
-
background-color:
|
|
88
|
+
background-color: color-mix(in srgb, $comparison-accent-pink 25%, transparent) !important;
|
|
86
89
|
|
|
87
90
|
&::before {
|
|
88
91
|
content: none; // Remove left border accent
|
|
@@ -92,7 +95,7 @@
|
|
|
92
95
|
|
|
93
96
|
// Conflict highlighting (orange background for 3-column merge conflicts)
|
|
94
97
|
&__conflict {
|
|
95
|
-
background-color:
|
|
98
|
+
background-color: color-mix(in srgb, $comparison-accent-orange 15%, transparent);
|
|
96
99
|
|
|
97
100
|
&::before {
|
|
98
101
|
background-color: $comparison-accent-orange;
|
|
@@ -100,7 +103,7 @@
|
|
|
100
103
|
|
|
101
104
|
// Solid background variant (no left border accent)
|
|
102
105
|
&--solid {
|
|
103
|
-
background-color:
|
|
106
|
+
background-color: color-mix(in srgb, $comparison-accent-orange 25%, transparent) !important;
|
|
104
107
|
|
|
105
108
|
&::before {
|
|
106
109
|
content: none; // Remove left border accent
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
.pa-field__value::after {
|
|
140
140
|
content: 'Copied!' !important;
|
|
141
141
|
opacity: 1 !important;
|
|
142
|
-
color: var(--pa-
|
|
142
|
+
color: var(--pa-success);
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
}
|
|
@@ -452,19 +452,28 @@
|
|
|
452
452
|
border-radius: var(--pa-border-radius);
|
|
453
453
|
font-size: $fields-chips-value-font-size;
|
|
454
454
|
|
|
455
|
+
// Status chips use role colours. The framework reliably defines all
|
|
456
|
+
// four --pa-{role} and --pa-{role}-bg-light tokens, so no fallback
|
|
457
|
+
// needed. (Previous --pa-success-color refs were broken — they didn't
|
|
458
|
+
// exist, so chips silently used the hardcoded RGB fallbacks below.)
|
|
455
459
|
&--success {
|
|
456
|
-
background: var(--pa-success-bg-light
|
|
457
|
-
color: var(--pa-success
|
|
460
|
+
background: var(--pa-success-bg-light);
|
|
461
|
+
color: var(--pa-success);
|
|
458
462
|
}
|
|
459
463
|
|
|
460
464
|
&--warning {
|
|
461
|
-
background: var(--pa-warning-bg-light
|
|
462
|
-
color: var(--pa-warning
|
|
465
|
+
background: var(--pa-warning-bg-light);
|
|
466
|
+
color: var(--pa-warning);
|
|
463
467
|
}
|
|
464
468
|
|
|
465
469
|
&--danger {
|
|
466
|
-
background: var(--pa-danger-bg-light
|
|
467
|
-
color: var(--pa-danger
|
|
470
|
+
background: var(--pa-danger-bg-light);
|
|
471
|
+
color: var(--pa-danger);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
&--info {
|
|
475
|
+
background: var(--pa-info-bg-light);
|
|
476
|
+
color: var(--pa-info);
|
|
468
477
|
}
|
|
469
478
|
}
|
|
470
479
|
}
|
|
@@ -681,7 +690,7 @@
|
|
|
681
690
|
&__value--copied::after {
|
|
682
691
|
content: 'Copied!' !important;
|
|
683
692
|
opacity: 1 !important;
|
|
684
|
-
color: var(--pa-
|
|
693
|
+
color: var(--pa-success);
|
|
685
694
|
}
|
|
686
695
|
}
|
|
687
696
|
|
|
@@ -1010,7 +1019,7 @@
|
|
|
1010
1019
|
&__row--copied &__value::after {
|
|
1011
1020
|
content: 'Copied!' !important;
|
|
1012
1021
|
opacity: 1 !important;
|
|
1013
|
-
color: var(--pa-
|
|
1022
|
+
color: var(--pa-success);
|
|
1014
1023
|
}
|
|
1015
1024
|
}
|
|
1016
1025
|
|
|
@@ -1027,12 +1036,12 @@
|
|
|
1027
1036
|
&__item {
|
|
1028
1037
|
padding: $accent-grid-item-padding-v $accent-grid-item-padding-h;
|
|
1029
1038
|
padding-inline-start: $accent-grid-item-padding-start;
|
|
1030
|
-
border-inline-start: $accent-grid-border-width solid var(--pa-accent
|
|
1039
|
+
border-inline-start: $accent-grid-border-width solid var(--pa-accent);
|
|
1031
1040
|
|
|
1032
|
-
&--success { border-inline-start-color: var(--pa-success
|
|
1033
|
-
&--warning { border-inline-start-color: var(--pa-warning
|
|
1034
|
-
&--danger { border-inline-start-color: var(--pa-danger
|
|
1035
|
-
&--info { border-inline-start-color: var(--pa-info
|
|
1041
|
+
&--success { border-inline-start-color: var(--pa-success); }
|
|
1042
|
+
&--warning { border-inline-start-color: var(--pa-warning); }
|
|
1043
|
+
&--danger { border-inline-start-color: var(--pa-danger); }
|
|
1044
|
+
&--info { border-inline-start-color: var(--pa-info); }
|
|
1036
1045
|
}
|
|
1037
1046
|
|
|
1038
1047
|
&__label {
|
|
@@ -1107,6 +1116,6 @@
|
|
|
1107
1116
|
&__item--copied &__value::after {
|
|
1108
1117
|
content: 'Copied!' !important;
|
|
1109
1118
|
opacity: 1 !important;
|
|
1110
|
-
color: var(--pa-
|
|
1119
|
+
color: var(--pa-success);
|
|
1111
1120
|
}
|
|
1112
1121
|
}
|