@keenmate/pure-admin-core 2.3.2 → 2.3.3
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
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Lightweight, data-focused CSS/SCSS admin framework with Corporate theme as default.
|
|
4
4
|
|
|
5
|
+
## What's New in 2.3.3
|
|
6
|
+
|
|
7
|
+
- **Command palette rewrite** — Multi-step command wizards (`/deploy`, `/assign`, `/go`, `/theme`), context search (`:p`, `:u`, `:o`), global search, inline/tokens display modes matching keen-pure-admin
|
|
8
|
+
- **Dark theme fixes** — Command palette loading overlay, key badges, and item badges all use CSS variables instead of SCSS defaults stuck on light mode
|
|
9
|
+
|
|
5
10
|
## What's New in 2.3.2
|
|
6
11
|
|
|
7
12
|
- **Themeable border-radius via CSS variables** — All components now use `var(--pa-border-radius)`. Themes override in `:root` (same pattern as colors). Fixes long-standing issue where `@use` module isolation prevented theme control of border-radius
|
|
@@ -9,12 +14,6 @@ Lightweight, data-focused CSS/SCSS admin framework with Corporate theme as defau
|
|
|
9
14
|
- **Split button dropdown rework** — Two-container pattern (`__menu` + `__menu-inner`) matching web-multiselect. New `__item-row` element for rows with action buttons. Container handles `overflow: hidden` + `border-radius`
|
|
10
15
|
- **Removed hover lift** — `translateY(-1px)` removed from buttons and stat cards for consistency
|
|
11
16
|
|
|
12
|
-
## What's New in 2.3.0
|
|
13
|
-
|
|
14
|
-
- **Toast action buttons** — New `pa-toast__actions` element for action buttons inside toasts, separated by a border-top. Toast service supports `actions: [{ label, variant, onClick }]` with auto-dismiss on click
|
|
15
|
-
- **Toast service improvements** — `filled`, `progressColor`, and `maxWidth` options. Container width ratchets up to the widest toast shown, preventing layout jitter when toasts dismiss
|
|
16
|
-
- **Toast progress bar** — More visible: 5px height, 0.6 opacity (was 3px / 0.3)
|
|
17
|
-
|
|
18
17
|
## Installation
|
|
19
18
|
|
|
20
19
|
```bash
|
|
@@ -338,6 +337,28 @@ Works with both `pa-table` and `web-grid` component. First/last columns automati
|
|
|
338
337
|
- `.pa-modal__container--sm/md/lg/xl/xxl` - Sizes
|
|
339
338
|
- `.pa-modal--primary/success/danger/warning` - Themed headers
|
|
340
339
|
|
|
340
|
+
### Command Palette
|
|
341
|
+
- `.pa-command-palette` - Base container (add `--active` to show)
|
|
342
|
+
- `.pa-command-palette__backdrop` - Overlay backdrop
|
|
343
|
+
- `.pa-command-palette__container` - Modal dialog
|
|
344
|
+
- `.pa-command-palette__search` - Search area (input + tokens + context)
|
|
345
|
+
- `.pa-command-palette__tokens` - Token badges container (for token display mode)
|
|
346
|
+
- `.pa-command-palette__input-wrapper` - Wraps input + context label (positioning anchor)
|
|
347
|
+
- `.pa-command-palette__input` - Search input
|
|
348
|
+
- `.pa-command-palette__context` - Context label (e.g., "Assign to User", "Searching in Products")
|
|
349
|
+
- `.pa-command-palette__results` - Scrollable results area
|
|
350
|
+
- `.pa-command-palette__item` - Result row (`--active` for keyboard-highlighted)
|
|
351
|
+
- `.pa-command-palette__item-icon` - Item icon
|
|
352
|
+
- `.pa-command-palette__item-content` - Title + subtitle wrapper
|
|
353
|
+
- `.pa-command-palette__item-title` - Item title (supports `<mark>` for search highlights)
|
|
354
|
+
- `.pa-command-palette__item-meta` - Subtitle/metadata
|
|
355
|
+
- `.pa-command-palette__preview` - Command step preview text
|
|
356
|
+
- `.pa-command-palette__footer` - Keyboard hints bar
|
|
357
|
+
- `.pa-command-palette__key` - Keyboard shortcut badge
|
|
358
|
+
- `.pa-command-palette__token-prompt` - Step prompt text between token badges
|
|
359
|
+
- **Modes:** `/` commands, `:` context search, plain text global search
|
|
360
|
+
- **Display styles:** Inline (everything in input) or Tokens (selections as badges)
|
|
361
|
+
|
|
341
362
|
### Toasts
|
|
342
363
|
- `.pa-toast` - Base toast
|
|
343
364
|
- `.pa-toast--primary/success/danger/warning/info` - Variants
|
package/dist/css/main.css
CHANGED
|
@@ -13824,6 +13824,11 @@ code {
|
|
|
13824
13824
|
flex-wrap: wrap;
|
|
13825
13825
|
gap: 0.4rem;
|
|
13826
13826
|
align-items: center;
|
|
13827
|
+
margin-bottom: 0.8rem;
|
|
13828
|
+
}
|
|
13829
|
+
.pa-command-palette__tokens:empty {
|
|
13830
|
+
display: none;
|
|
13831
|
+
margin-bottom: 0;
|
|
13827
13832
|
}
|
|
13828
13833
|
.pa-command-palette__tokens .pa-badge {
|
|
13829
13834
|
display: inline-flex;
|
|
@@ -13845,6 +13850,14 @@ code {
|
|
|
13845
13850
|
.pa-command-palette__tokens .pa-badge__remove:hover {
|
|
13846
13851
|
opacity: 1;
|
|
13847
13852
|
}
|
|
13853
|
+
.pa-command-palette__token-prompt {
|
|
13854
|
+
font-size: 1.2rem;
|
|
13855
|
+
color: var(--pa-text-color-2);
|
|
13856
|
+
font-style: italic;
|
|
13857
|
+
}
|
|
13858
|
+
.pa-command-palette__input-wrapper {
|
|
13859
|
+
position: relative;
|
|
13860
|
+
}
|
|
13848
13861
|
.pa-command-palette__input {
|
|
13849
13862
|
width: 100%;
|
|
13850
13863
|
height: 3.8rem;
|
|
@@ -13867,7 +13880,7 @@ code {
|
|
|
13867
13880
|
}
|
|
13868
13881
|
.pa-command-palette__context {
|
|
13869
13882
|
position: absolute;
|
|
13870
|
-
inset-inline-end:
|
|
13883
|
+
inset-inline-end: 0.8rem;
|
|
13871
13884
|
top: 50%;
|
|
13872
13885
|
transform: translateY(-50%);
|
|
13873
13886
|
font-size: 1.2rem;
|
|
@@ -13892,7 +13905,7 @@ code {
|
|
|
13892
13905
|
content: "";
|
|
13893
13906
|
position: absolute;
|
|
13894
13907
|
inset: 0;
|
|
13895
|
-
background-color:
|
|
13908
|
+
background-color: color-mix(in srgb, var(--pa-modal-content-bg) 70%, transparent);
|
|
13896
13909
|
pointer-events: none;
|
|
13897
13910
|
z-index: 1;
|
|
13898
13911
|
}
|
|
@@ -13970,14 +13983,6 @@ code {
|
|
|
13970
13983
|
overflow: hidden;
|
|
13971
13984
|
text-overflow: ellipsis;
|
|
13972
13985
|
}
|
|
13973
|
-
.pa-command-palette__item-badge {
|
|
13974
|
-
flex-shrink: 0;
|
|
13975
|
-
font-size: 1.2rem;
|
|
13976
|
-
padding: 2px 0.4rem;
|
|
13977
|
-
background-color: #e9ecef;
|
|
13978
|
-
color: var(--pa-text-color-2);
|
|
13979
|
-
border-radius: var(--pa-border-radius-sm);
|
|
13980
|
-
}
|
|
13981
13986
|
.pa-command-palette__footer {
|
|
13982
13987
|
border-top: 1px solid var(--pa-border-color);
|
|
13983
13988
|
padding: 0.8rem 0.8rem;
|
|
@@ -13993,7 +13998,8 @@ code {
|
|
|
13993
13998
|
}
|
|
13994
13999
|
.pa-command-palette__key {
|
|
13995
14000
|
padding: 2px 0.4rem;
|
|
13996
|
-
background-color:
|
|
14001
|
+
background-color: var(--pa-command-palette-key-bg);
|
|
14002
|
+
color: var(--pa-command-palette-key-text);
|
|
13997
14003
|
border: 1px solid var(--pa-border-color);
|
|
13998
14004
|
border-radius: var(--pa-border-radius-sm);
|
|
13999
14005
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
@@ -14117,7 +14123,7 @@ code {
|
|
|
14117
14123
|
font-size: 1rem;
|
|
14118
14124
|
font-weight: 500;
|
|
14119
14125
|
color: var(--pa-text-color-2);
|
|
14120
|
-
background-color:
|
|
14126
|
+
background-color: var(--pa-subtle-bg);
|
|
14121
14127
|
border: 1px solid var(--pa-border-color);
|
|
14122
14128
|
border-radius: var(--pa-border-radius-sm);
|
|
14123
14129
|
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
|
@@ -14190,7 +14196,7 @@ code {
|
|
|
14190
14196
|
font-size: 1rem;
|
|
14191
14197
|
font-weight: 500;
|
|
14192
14198
|
color: var(--pa-text-color-1);
|
|
14193
|
-
background-color:
|
|
14199
|
+
background-color: var(--pa-subtle-bg);
|
|
14194
14200
|
border: 1px solid var(--pa-border-color);
|
|
14195
14201
|
border-radius: var(--pa-border-radius-sm);
|
|
14196
14202
|
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
package/package.json
CHANGED
|
@@ -20,16 +20,18 @@
|
|
|
20
20
|
<div class="pa-command-palette__container">
|
|
21
21
|
<!-- Search input -->
|
|
22
22
|
<div class="pa-command-palette__search">
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
23
|
+
<div class="pa-command-palette__tokens" id="commandPaletteTokens"></div>
|
|
24
|
+
<div class="pa-command-palette__input-wrapper">
|
|
25
|
+
<input
|
|
26
|
+
type="text"
|
|
27
|
+
class="pa-command-palette__input"
|
|
28
|
+
id="commandPaletteInput"
|
|
29
|
+
placeholder="Type / for commands, : to search, or just start typing..."
|
|
30
|
+
autocomplete="off"
|
|
31
|
+
spellcheck="false"
|
|
32
|
+
>
|
|
33
|
+
<div class="pa-command-palette__context" id="commandPaletteContext"></div>
|
|
34
|
+
</div>
|
|
33
35
|
</div>
|
|
34
36
|
|
|
35
37
|
<!-- Results container -->
|
|
@@ -79,7 +81,7 @@
|
|
|
79
81
|
<div class="pa-command-palette__item-title">MacBook Pro 16"</div>
|
|
80
82
|
<div class="pa-command-palette__item-meta">SKU: MBP-16-001 • $2,499.00</div>
|
|
81
83
|
</div>
|
|
82
|
-
<
|
|
84
|
+
<span class="pa-badge">In Stock</span>
|
|
83
85
|
</div>
|
|
84
86
|
|
|
85
87
|
<!-- Active result item -->
|
|
@@ -89,7 +91,7 @@
|
|
|
89
91
|
<div class="pa-command-palette__item-title">iPhone 15 Pro</div>
|
|
90
92
|
<div class="pa-command-palette__item-meta">SKU: IP15P-256 • $999.00</div>
|
|
91
93
|
</div>
|
|
92
|
-
<
|
|
94
|
+
<span class="pa-badge">New</span>
|
|
93
95
|
</div>
|
|
94
96
|
|
|
95
97
|
<!-- Result with highlighted search match -->
|
|
@@ -99,7 +101,7 @@
|
|
|
99
101
|
<div class="pa-command-palette__item-title">Air<mark>Pods</mark> Pro</div>
|
|
100
102
|
<div class="pa-command-palette__item-meta">SKU: APP-GEN2 • $249.00</div>
|
|
101
103
|
</div>
|
|
102
|
-
<
|
|
104
|
+
<span class="pa-badge">Popular</span>
|
|
103
105
|
</div>
|
|
104
106
|
|
|
105
107
|
<!-- Pagination indicator (shown when multiple pages) -->
|
|
@@ -459,6 +459,8 @@
|
|
|
459
459
|
--pa-command-palette-item-active-bg: #{$command-palette-item-active-bg};
|
|
460
460
|
--pa-command-palette-highlight-bg: #{$command-palette-highlight-bg};
|
|
461
461
|
--pa-command-palette-highlight-text: #{$command-palette-highlight-text};
|
|
462
|
+
--pa-command-palette-key-bg: #{$subtle-bg};
|
|
463
|
+
--pa-command-palette-key-text: #{$text-color-1};
|
|
462
464
|
|
|
463
465
|
// =========================================================================
|
|
464
466
|
// MULTISELECT COLORS
|
|
@@ -51,6 +51,12 @@
|
|
|
51
51
|
flex-wrap: wrap;
|
|
52
52
|
gap: $spacing-xs;
|
|
53
53
|
align-items: center;
|
|
54
|
+
margin-bottom: $spacing-sm;
|
|
55
|
+
|
|
56
|
+
&:empty {
|
|
57
|
+
display: none;
|
|
58
|
+
margin-bottom: 0;
|
|
59
|
+
}
|
|
54
60
|
|
|
55
61
|
.pa-badge {
|
|
56
62
|
display: inline-flex;
|
|
@@ -77,6 +83,16 @@
|
|
|
77
83
|
}
|
|
78
84
|
}
|
|
79
85
|
|
|
86
|
+
&__token-prompt {
|
|
87
|
+
font-size: $font-size-xs;
|
|
88
|
+
color: var(--pa-text-color-2);
|
|
89
|
+
font-style: italic;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
&__input-wrapper {
|
|
93
|
+
position: relative;
|
|
94
|
+
}
|
|
95
|
+
|
|
80
96
|
&__input {
|
|
81
97
|
width: 100%;
|
|
82
98
|
height: $command-palette-input-height;
|
|
@@ -100,10 +116,10 @@
|
|
|
100
116
|
}
|
|
101
117
|
}
|
|
102
118
|
|
|
103
|
-
// Context label (e.g., "Searching in Products")
|
|
119
|
+
// Context label (e.g., "Searching in Products") — positioned relative to input-wrapper
|
|
104
120
|
&__context {
|
|
105
121
|
position: absolute;
|
|
106
|
-
inset-inline-end:
|
|
122
|
+
inset-inline-end: $command-palette-input-padding-h; // RTL: flips to left
|
|
107
123
|
top: 50%;
|
|
108
124
|
transform: translateY(-50%);
|
|
109
125
|
font-size: $font-size-xs;
|
|
@@ -133,7 +149,7 @@
|
|
|
133
149
|
content: '';
|
|
134
150
|
position: absolute;
|
|
135
151
|
inset: 0; // RTL: full overlay works in both directions
|
|
136
|
-
background-color:
|
|
152
|
+
background-color: color-mix(in srgb, var(--pa-modal-content-bg) 70%, transparent);
|
|
137
153
|
pointer-events: none;
|
|
138
154
|
z-index: 1;
|
|
139
155
|
}
|
|
@@ -231,14 +247,6 @@
|
|
|
231
247
|
}
|
|
232
248
|
|
|
233
249
|
// Item badge (e.g., category, status)
|
|
234
|
-
&__item-badge {
|
|
235
|
-
flex-shrink: 0;
|
|
236
|
-
font-size: $font-size-xs;
|
|
237
|
-
padding: 2px $spacing-xs;
|
|
238
|
-
background-color: $secondary-light-bg;
|
|
239
|
-
color: var(--pa-text-color-2);
|
|
240
|
-
border-radius: var(--pa-border-radius-sm);
|
|
241
|
-
}
|
|
242
250
|
|
|
243
251
|
// Footer with keyboard hints
|
|
244
252
|
&__footer {
|
|
@@ -258,7 +266,8 @@
|
|
|
258
266
|
|
|
259
267
|
&__key {
|
|
260
268
|
padding: 2px $spacing-xs;
|
|
261
|
-
background-color:
|
|
269
|
+
background-color: var(--pa-command-palette-key-bg);
|
|
270
|
+
color: var(--pa-command-palette-key-text);
|
|
262
271
|
border: $border-width-base solid var(--pa-border-color);
|
|
263
272
|
border-radius: var(--pa-border-radius-sm);
|
|
264
273
|
font-family: $body-font-family;
|
|
@@ -405,7 +414,7 @@
|
|
|
405
414
|
font-size: $font-size-2xs;
|
|
406
415
|
font-weight: $font-weight-medium;
|
|
407
416
|
color: var(--pa-text-color-2);
|
|
408
|
-
background-color:
|
|
417
|
+
background-color: var(--pa-subtle-bg);
|
|
409
418
|
border: $border-width-base solid var(--pa-border-color);
|
|
410
419
|
border-radius: var(--pa-border-radius-sm);
|
|
411
420
|
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
|
@@ -486,7 +495,7 @@
|
|
|
486
495
|
font-size: $font-size-2xs;
|
|
487
496
|
font-weight: $font-weight-medium;
|
|
488
497
|
color: var(--pa-text-color-1);
|
|
489
|
-
background-color:
|
|
498
|
+
background-color: var(--pa-subtle-bg);
|
|
490
499
|
border: $border-width-base solid var(--pa-border-color);
|
|
491
500
|
border-radius: var(--pa-border-radius-sm);
|
|
492
501
|
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|