@keenmate/pure-admin-core 2.9.0-rc03 → 2.9.0-rc04

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.
Files changed (35) hide show
  1. package/README.md +53 -8
  2. package/dist/css/main.css +540 -2
  3. package/package.json +3 -1
  4. package/snippets/buttons.html +51 -0
  5. package/snippets/cards.html +34 -4
  6. package/snippets/comparison.html +26 -22
  7. package/snippets/manifest.json +180 -115
  8. package/snippets/range-group.html +125 -0
  9. package/snippets/splitter.html +44 -38
  10. package/snippets/statistics.html +31 -0
  11. package/src/js/btn-split-auto-absorb.js +327 -0
  12. package/src/js/command-palette.js +472 -0
  13. package/src/js/file-selector.js +1275 -0
  14. package/src/js/internal/logging.js +121 -0
  15. package/src/js/logic-tree-renderer.js +303 -0
  16. package/src/js/modal-dialogs.js +460 -0
  17. package/src/js/overflow.js +371 -0
  18. package/src/js/pa-stat-fit.js +184 -0
  19. package/src/js/range-group.js +663 -0
  20. package/src/js/search-autocomplete-v2.js +907 -0
  21. package/src/js/search-autocomplete.js +434 -0
  22. package/src/js/settings-panel.js +245 -0
  23. package/src/js/split-button.js +141 -0
  24. package/src/js/splitter.js +1323 -0
  25. package/src/js/toast-service.js +302 -0
  26. package/src/js/tooltips-popovers.js +275 -0
  27. package/src/js/virtual-scroll.js +143 -0
  28. package/src/js/virtual-textbox.js +803 -0
  29. package/src/scss/_core.scss +7 -0
  30. package/src/scss/core-components/_buttons.scss +44 -0
  31. package/src/scss/core-components/_cards.scss +57 -0
  32. package/src/scss/core-components/_overflow.scss +50 -0
  33. package/src/scss/core-components/_range-group.scss +474 -0
  34. package/src/scss/core-components/_statistics.scss +163 -0
  35. package/src/scss/variables/_components.scss +34 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keenmate/pure-admin-core",
3
- "version": "2.9.0-rc03",
3
+ "version": "2.9.0-rc04",
4
4
  "description": "Lightweight, data-focused HTML/CSS admin framework built with PureCSS foundation and comprehensive component system",
5
5
  "style": "dist/css/main.css",
6
6
  "exports": {
@@ -9,11 +9,13 @@
9
9
  "./css/*": "./dist/css/*",
10
10
  "./scss": "./src/scss/main.scss",
11
11
  "./scss/*": "./src/scss/*",
12
+ "./js/*": "./src/js/*",
12
13
  "./snippets/*": "./snippets/*"
13
14
  },
14
15
  "files": [
15
16
  "dist/",
16
17
  "src/scss/",
18
+ "src/js/",
17
19
  "schemas/",
18
20
  "scripts/pack-theme.js",
19
21
  "snippets/",
@@ -283,6 +283,57 @@
283
283
  </div>
284
284
 
285
285
 
286
+ <!-- Auto-Absorb Split Button (sibling buttons collapse into menu on resize) -->
287
+ <!-- The .pa-btn-toolbar wrapper provides the constrained-width flex row;
288
+ btn-split-auto-absorb.js moves overflowing siblings into the menu.
289
+ Standalone form (any flex context): -->
290
+ <div class="pa-btn-toolbar">
291
+ <button class="pa-btn pa-btn--primary">Save</button>
292
+ <button class="pa-btn pa-btn--primary">Format</button>
293
+ <button class="pa-btn pa-btn--primary">Refresh</button>
294
+ <button class="pa-btn pa-btn--primary" data-pa-absorb-priority="10">Publish</button>
295
+ <div class="pa-btn-split pa-btn-split--auto-absorb">
296
+ <button class="pa-btn pa-btn--primary">Run</button>
297
+ <button class="pa-btn pa-btn--primary pa-btn-split__toggle" onclick="toggleSplitMenu(event)">
298
+ <i class="fas fa-chevron-down text-2xs pa-btn-split__chevron"></i>
299
+ </button>
300
+ <div class="pa-btn-split__menu">
301
+ <div class="pa-btn-split__menu-inner">
302
+ <button class="pa-btn-split__item">Run with options&hellip;</button>
303
+ </div>
304
+ </div>
305
+ </div>
306
+ </div>
307
+
308
+ <!-- In a card header, nest the toolbar inside .pa-card__actions (the canonical
309
+ header actions slot) — same as a plain button row or a .pa-btn-group. The
310
+ framework makes that actions wrapper shrinkable so overflow detection still
311
+ works, and the header title yields before the toolbar collapses. -->
312
+ <div class="pa-card">
313
+ <div class="pa-card__header">
314
+ <h3>Team Members</h3>
315
+ <div class="pa-card__actions">
316
+ <div class="pa-btn-toolbar">
317
+ <button class="pa-btn pa-btn--secondary">Search</button>
318
+ <button class="pa-btn pa-btn--secondary">Filter</button>
319
+ <div class="pa-btn-split pa-btn-split--auto-absorb">
320
+ <button class="pa-btn pa-btn--primary">Add user</button>
321
+ <button class="pa-btn pa-btn--primary pa-btn-split__toggle" onclick="toggleSplitMenu(event)">
322
+ <i class="fas fa-chevron-down text-2xs pa-btn-split__chevron"></i>
323
+ </button>
324
+ <div class="pa-btn-split__menu">
325
+ <div class="pa-btn-split__menu-inner">
326
+ <button class="pa-btn-split__item">Add user with role&hellip;</button>
327
+ </div>
328
+ </div>
329
+ </div>
330
+ </div>
331
+ </div>
332
+ </div>
333
+ <div class="pa-card__body">Card content.</div>
334
+ </div>
335
+
336
+
286
337
  <!-- BUTTONS WITH ICONS -->
287
338
 
288
339
  <!-- Button with Icon (Text Icon) -->
@@ -152,11 +152,15 @@
152
152
  </div>
153
153
 
154
154
 
155
- <!-- CARD WITH ACTIONS IN HEADER -->
155
+ <!-- CARD WITH ACTIONS IN HEADER
156
+ .pa-card__actions is THE canonical wrapper for header controls: it is a
157
+ documented card sub-element, carries its own gap + vertical centering, and
158
+ the header flex rules pin it to flex-shrink: 0 so it never gets squeezed.
159
+ Reach for this by default. -->
156
160
  <div class="pa-card">
157
161
  <div class="pa-card__header">
158
162
  <h3>Card with Actions</h3>
159
- <div class="pa-btn-group">
163
+ <div class="pa-card__actions">
160
164
  <button class="pa-btn pa-btn--sm pa-btn--secondary">Cancel</button>
161
165
  <button class="pa-btn pa-btn--sm pa-btn--success">Save</button>
162
166
  </div>
@@ -164,6 +168,26 @@
164
168
  <div class="pa-card__body">Card content.</div>
165
169
  </div>
166
170
 
171
+ <!-- …want the SEGMENTED (joined-corner) button look? Nest .pa-btn-group
172
+ INSIDE .pa-card__actions. Don't use .pa-btn-group as the direct header
173
+ child — it's a general-purpose button-cluster component, not the card's
174
+ actions slot; putting it straight in the header only "works" because the
175
+ header happens to also pin .pa-btn-group to flex-shrink: 0, and it drags
176
+ the attached-button styling in whether you want it or not. -->
177
+ <div class="pa-card">
178
+ <div class="pa-card__header">
179
+ <h3>Card with Segmented Actions</h3>
180
+ <div class="pa-card__actions">
181
+ <div class="pa-btn-group">
182
+ <button class="pa-btn pa-btn--sm pa-btn--secondary">Day</button>
183
+ <button class="pa-btn pa-btn--sm pa-btn--secondary">Week</button>
184
+ <button class="pa-btn pa-btn--sm pa-btn--secondary">Month</button>
185
+ </div>
186
+ </div>
187
+ </div>
188
+ <div class="pa-card__body">Card content.</div>
189
+ </div>
190
+
167
191
 
168
192
  <!-- CARD WITH FOOTER ACTIONS -->
169
193
  <div class="pa-card">
@@ -480,8 +504,14 @@ SUB-ELEMENTS:
480
504
  reset so they inherit the header layout cleanly.
481
505
  - .pa-card__body flex: 1; standard padding.
482
506
  - .pa-card__footer Border-top + footer background; flex row.
483
- - .pa-card__actions Button/control container (gap + align-center).
484
- flex-shrink: 0 inside header.
507
+ - .pa-card__actions THE canonical header actions slot. Button/
508
+ control container (gap + align-center);
509
+ flex-shrink: 0 inside header. Use this for any
510
+ set of header controls. For the segmented
511
+ (joined-corner) look, nest a .pa-btn-group
512
+ INSIDE it — don't put .pa-btn-group straight in
513
+ the header (it's a generic button cluster, not
514
+ the actions slot).
485
515
  - .pa-card__meta Muted secondary text (dates, byline, etc.).
486
516
 
487
517
  TITLE SUB-COMPONENT:
@@ -22,18 +22,20 @@
22
22
  ================================ -->
23
23
 
24
24
  <div class="pa-card">
25
- <div class="pa-card__header d-flex justify-content-between align-items-center">
25
+ <div class="pa-card__header">
26
26
  <h3>Version Detail</h3>
27
- <div class="pa-btn-group">
28
- <button class="pa-btn pa-btn--sm pa-btn--primary">
29
- <i class="fa-solid fa-table-list"></i> View in form
30
- </button>
31
- <button class="pa-btn pa-btn--sm pa-btn--secondary">
32
- <i class="fa-solid fa-table"></i> View in table
33
- </button>
34
- <button class="pa-btn pa-btn--sm pa-btn--secondary pa-btn--icon-only">
35
- <i class="fa-solid fa-location-dot"></i>
36
- </button>
27
+ <div class="pa-card__actions">
28
+ <div class="pa-btn-group">
29
+ <button class="pa-btn pa-btn--sm pa-btn--primary">
30
+ <i class="fa-solid fa-table-list"></i> View in form
31
+ </button>
32
+ <button class="pa-btn pa-btn--sm pa-btn--secondary">
33
+ <i class="fa-solid fa-table"></i> View in table
34
+ </button>
35
+ <button class="pa-btn pa-btn--sm pa-btn--secondary pa-btn--icon-only">
36
+ <i class="fa-solid fa-location-dot"></i>
37
+ </button>
38
+ </div>
37
39
  </div>
38
40
  </div>
39
41
  <div class="pa-card__body pa-card__body--no-padding">
@@ -136,18 +138,20 @@
136
138
  ================================ -->
137
139
 
138
140
  <div class="pa-card">
139
- <div class="pa-card__header d-flex justify-content-between align-items-center">
141
+ <div class="pa-card__header">
140
142
  <h3>Merge Comparison</h3>
141
- <div class="pa-btn-group">
142
- <button class="pa-btn pa-btn--sm pa-btn--success">
143
- <i class="fa-solid fa-code-merge"></i> Accept A
144
- </button>
145
- <button class="pa-btn pa-btn--sm pa-btn--info">
146
- <i class="fa-solid fa-code-merge"></i> Accept B
147
- </button>
148
- <button class="pa-btn pa-btn--sm pa-btn--secondary">
149
- <i class="fa-solid fa-xmark"></i> Reject Both
150
- </button>
143
+ <div class="pa-card__actions">
144
+ <div class="pa-btn-group">
145
+ <button class="pa-btn pa-btn--sm pa-btn--success">
146
+ <i class="fa-solid fa-code-merge"></i> Accept A
147
+ </button>
148
+ <button class="pa-btn pa-btn--sm pa-btn--info">
149
+ <i class="fa-solid fa-code-merge"></i> Accept B
150
+ </button>
151
+ <button class="pa-btn pa-btn--sm pa-btn--secondary">
152
+ <i class="fa-solid fa-xmark"></i> Reject Both
153
+ </button>
154
+ </div>
151
155
  </div>
152
156
  </div>
153
157
  <div class="pa-card__body pa-card__body--no-padding">