@keenmate/pure-admin-core 2.3.1 → 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.
Files changed (70) hide show
  1. package/README.md +30 -9
  2. package/dist/css/main.css +205 -190
  3. package/package.json +1 -1
  4. package/snippets/buttons.html +375 -365
  5. package/snippets/command-palette.html +15 -13
  6. package/src/scss/_base-css-variables.scss +10 -0
  7. package/src/scss/_core.scss +121 -121
  8. package/src/scss/core-components/_alerts.scss +227 -227
  9. package/src/scss/core-components/_badges.scss +16 -16
  10. package/src/scss/core-components/_base.scss +125 -125
  11. package/src/scss/core-components/_buttons.scss +31 -16
  12. package/src/scss/core-components/_callouts.scss +152 -152
  13. package/src/scss/core-components/_cards.scss +488 -488
  14. package/src/scss/core-components/_checkbox-lists.scss +289 -289
  15. package/src/scss/core-components/_code.scss +141 -141
  16. package/src/scss/core-components/_command-palette.scss +518 -509
  17. package/src/scss/core-components/_comparison.scss +172 -172
  18. package/src/scss/core-components/_data-display.scss +9 -9
  19. package/src/scss/core-components/_data-viz.scss +9 -9
  20. package/src/scss/core-components/_detail-panel.scss +1 -1
  21. package/src/scss/core-components/_file-selector.scss +780 -780
  22. package/src/scss/core-components/_filter-card.scss +58 -58
  23. package/src/scss/core-components/_forms.scss +16 -16
  24. package/src/scss/core-components/_grid.scss +293 -293
  25. package/src/scss/core-components/_layout.scss +15 -15
  26. package/src/scss/core-components/_lists.scss +211 -211
  27. package/src/scss/core-components/_loaders.scss +277 -277
  28. package/src/scss/core-components/_logic-tree.scss +280 -280
  29. package/src/scss/core-components/_modals.scss +203 -203
  30. package/src/scss/core-components/_notifications.scss +320 -320
  31. package/src/scss/core-components/_pagers.scss +141 -141
  32. package/src/scss/core-components/_popconfirm.scss +170 -170
  33. package/src/scss/core-components/_profile.scss +405 -405
  34. package/src/scss/core-components/_scrollbars.scss +40 -40
  35. package/src/scss/core-components/_settings-panel.scss +141 -141
  36. package/src/scss/core-components/_statistics.scss +200 -201
  37. package/src/scss/core-components/_tables.scss +900 -900
  38. package/src/scss/core-components/_tabs.scss +504 -504
  39. package/src/scss/core-components/_timeline.scss +589 -589
  40. package/src/scss/core-components/_toasts.scss +425 -425
  41. package/src/scss/core-components/_tooltips.scss +605 -605
  42. package/src/scss/core-components/_utilities.scss +1 -1
  43. package/src/scss/core-components/_web-components-theme.scss +21 -21
  44. package/src/scss/core-components/badges/_badge-base.scss +121 -121
  45. package/src/scss/core-components/badges/_badge-group.scss +25 -25
  46. package/src/scss/core-components/badges/_composite-badge-variants.scss +396 -396
  47. package/src/scss/core-components/badges/_composite-badge.scss +70 -70
  48. package/src/scss/core-components/badges/_index.scss +10 -10
  49. package/src/scss/core-components/badges/_labels.scss +155 -155
  50. package/src/scss/core-components/forms/_checkboxes-radios.scss +205 -205
  51. package/src/scss/core-components/forms/_form-inputs.scss +3 -3
  52. package/src/scss/core-components/forms/_form-layout.scss +66 -66
  53. package/src/scss/core-components/forms/_form-states.scss +115 -115
  54. package/src/scss/core-components/forms/_index.scss +12 -12
  55. package/src/scss/core-components/forms/_input-groups.scss +154 -154
  56. package/src/scss/core-components/forms/_input-wrapper.scss +89 -89
  57. package/src/scss/core-components/forms/_query-editor.scss +313 -313
  58. package/src/scss/core-components/layout/_index.scss +11 -11
  59. package/src/scss/core-components/layout/_layout-container.scss +168 -168
  60. package/src/scss/core-components/layout/_layout-responsive.scss +99 -99
  61. package/src/scss/core-components/layout/_navbar-elements.scss +250 -250
  62. package/src/scss/core-components/layout/_navbar.scss +83 -83
  63. package/src/scss/core-components/layout/_sidebar-states.scss +237 -237
  64. package/src/scss/core-components/layout/_sidebar.scss +234 -234
  65. package/src/scss/main.scss +7 -7
  66. package/src/scss/utilities.scss +740 -740
  67. package/src/scss/variables/_base.scss +228 -228
  68. package/src/scss/variables/_components.scss +748 -748
  69. package/src/scss/variables/_layout.scss +65 -65
  70. package/src/scss/variables/_typography.scss +37 -37
@@ -1,365 +1,375 @@
1
- <!-- ================================
2
- BUTTON SNIPPETS
3
- Pure Admin Visual Framework
4
- ================================ -->
5
-
6
- <!-- BASIC BUTTONS - Variants -->
7
-
8
- <!-- Primary Button -->
9
- <button class="pa-btn pa-btn--primary">Primary</button>
10
-
11
- <!-- Secondary Button -->
12
- <button class="pa-btn pa-btn--secondary">Secondary</button>
13
-
14
- <!-- Success Button -->
15
- <button class="pa-btn pa-btn--success">Success</button>
16
-
17
- <!-- Warning Button -->
18
- <button class="pa-btn pa-btn--warning">Warning</button>
19
-
20
- <!-- Danger Button -->
21
- <button class="pa-btn pa-btn--danger">Danger</button>
22
-
23
- <!-- Info Button -->
24
- <button class="pa-btn pa-btn--info">Info</button>
25
-
26
- <!-- Light Button -->
27
- <button class="pa-btn pa-btn--light">Light</button>
28
-
29
- <!-- Dark Button -->
30
- <button class="pa-btn pa-btn--dark">Dark</button>
31
-
32
-
33
- <!-- BUTTON SIZES -->
34
-
35
- <!-- Extra Small Button -->
36
- <button class="pa-btn pa-btn--primary pa-btn--xs">Extra Small</button>
37
-
38
- <!-- Small Button -->
39
- <button class="pa-btn pa-btn--primary pa-btn--sm">Small</button>
40
-
41
- <!-- Default Button -->
42
- <button class="pa-btn pa-btn--primary">Default</button>
43
-
44
- <!-- Large Button -->
45
- <button class="pa-btn pa-btn--primary pa-btn--lg">Large</button>
46
-
47
- <!-- Extra Large Button -->
48
- <button class="pa-btn pa-btn--primary pa-btn--xl">Extra Large</button>
49
-
50
-
51
- <!-- OUTLINE BUTTONS -->
52
-
53
- <!-- Outline Primary -->
54
- <button class="pa-btn pa-btn--outline-primary">Primary</button>
55
-
56
- <!-- Outline Secondary -->
57
- <button class="pa-btn pa-btn--outline-secondary">Secondary</button>
58
-
59
- <!-- Outline Success -->
60
- <button class="pa-btn pa-btn--outline-success">Success</button>
61
-
62
- <!-- Outline Warning -->
63
- <button class="pa-btn pa-btn--outline-warning">Warning</button>
64
-
65
- <!-- Outline Danger -->
66
- <button class="pa-btn pa-btn--outline-danger">Danger</button>
67
-
68
- <!-- Outline Info -->
69
- <button class="pa-btn pa-btn--outline-info">Info</button>
70
-
71
-
72
- <!-- BUTTON STATES -->
73
-
74
- <!-- Normal Button -->
75
- <button class="pa-btn pa-btn--primary">Normal</button>
76
-
77
- <!-- Disabled Button -->
78
- <button class="pa-btn pa-btn--primary" disabled>Disabled</button>
79
-
80
- <!-- Loading Button -->
81
- <button class="pa-btn pa-btn--primary pa-btn--loading">
82
- <span class="pa-btn__spinner"></span>
83
- Loading...
84
- </button>
85
-
86
-
87
- <!-- BLOCK BUTTONS -->
88
-
89
- <!-- Block Level Button -->
90
- <button class="pa-btn pa-btn--primary pa-btn--block">Block Level Button</button>
91
-
92
-
93
- <!-- BUTTON GROUPS -->
94
-
95
- <!-- Horizontal Button Group (default) -->
96
- <div class="pa-btn-group">
97
- <button class="pa-btn pa-btn--secondary">Left</button>
98
- <button class="pa-btn pa-btn--secondary">Middle</button>
99
- <button class="pa-btn pa-btn--secondary">Right</button>
100
- </div>
101
-
102
- <!-- Vertical Button Group -->
103
- <div class="pa-btn-group pa-btn-group--vertical">
104
- <button class="pa-btn pa-btn--secondary">Top</button>
105
- <button class="pa-btn pa-btn--secondary">Middle</button>
106
- <button class="pa-btn pa-btn--secondary">Bottom</button>
107
- </div>
108
-
109
-
110
- <!-- BUTTON GROUP GAP VARIANTS -->
111
- <!-- Use gap-* utility classes to adjust spacing -->
112
-
113
- <!-- Compact Gap (2px) -->
114
- <div class="pa-btn-group gap-2">
115
- <button class="pa-btn pa-btn--primary">A</button>
116
- <button class="pa-btn pa-btn--primary">B</button>
117
- <button class="pa-btn pa-btn--primary">C</button>
118
- </div>
119
-
120
- <!-- Default Gap (3px) -->
121
- <div class="pa-btn-group">
122
- <button class="pa-btn pa-btn--primary">A</button>
123
- <button class="pa-btn pa-btn--primary">B</button>
124
- <button class="pa-btn pa-btn--primary">C</button>
125
- </div>
126
-
127
- <!-- Loose Gap (8px) -->
128
- <div class="pa-btn-group gap-8">
129
- <button class="pa-btn pa-btn--primary">A</button>
130
- <button class="pa-btn pa-btn--primary">B</button>
131
- <button class="pa-btn pa-btn--primary">C</button>
132
- </div>
133
-
134
-
135
- <!-- BUTTON GROUP VERTICAL ALIGNMENT -->
136
-
137
- <!-- Vertical Left (default) -->
138
- <div class="pa-btn-group pa-btn-group--vertical">
139
- <button class="pa-btn pa-btn--secondary">Short</button>
140
- <button class="pa-btn pa-btn--secondary">Medium Button</button>
141
- <button class="pa-btn pa-btn--secondary">Longer Button Text</button>
142
- </div>
143
-
144
- <!-- Vertical Center -->
145
- <div class="pa-btn-group pa-btn-group--vertical pa-btn-group--center">
146
- <button class="pa-btn pa-btn--secondary">Short</button>
147
- <button class="pa-btn pa-btn--secondary">Medium Button</button>
148
- <button class="pa-btn pa-btn--secondary">Longer Button Text</button>
149
- </div>
150
-
151
- <!-- Vertical End (right) -->
152
- <div class="pa-btn-group pa-btn-group--vertical pa-btn-group--end">
153
- <button class="pa-btn pa-btn--secondary">Short</button>
154
- <button class="pa-btn pa-btn--secondary">Medium Button</button>
155
- <button class="pa-btn pa-btn--secondary">Longer Button Text</button>
156
- </div>
157
-
158
- <!-- Vertical Stretch (full-width) -->
159
- <div class="pa-btn-group pa-btn-group--vertical pa-btn-group--stretch">
160
- <button class="pa-btn pa-btn--primary">Save</button>
161
- <button class="pa-btn pa-btn--secondary">Cancel</button>
162
- <button class="pa-btn pa-btn--danger">Delete</button>
163
- </div>
164
-
165
-
166
- <!-- BUTTON GROUP RESPONSIVE DIRECTION -->
167
-
168
- <!-- Horizontal on mobile, Vertical on md+ -->
169
- <div class="pa-btn-group pa-btn-group--md-vertical">
170
- <button class="pa-btn pa-btn--primary">Save</button>
171
- <button class="pa-btn pa-btn--secondary">Cancel</button>
172
- </div>
173
-
174
- <!-- Vertical on mobile/tablet, Horizontal on lg+ -->
175
- <div class="pa-btn-group pa-btn-group--vertical pa-btn-group--lg-horizontal">
176
- <button class="pa-btn pa-btn--primary">Save</button>
177
- <button class="pa-btn pa-btn--secondary">Cancel</button>
178
- </div>
179
-
180
-
181
- <!-- BUTTON GROUP NO-WRAP -->
182
-
183
- <!-- Prevent wrapping (single line, may overflow) -->
184
- <div class="pa-btn-group pa-btn-group--nowrap">
185
- <button class="pa-btn pa-btn--primary">One</button>
186
- <button class="pa-btn pa-btn--primary">Two</button>
187
- <button class="pa-btn pa-btn--primary">Three</button>
188
- <button class="pa-btn pa-btn--primary">Four</button>
189
- <button class="pa-btn pa-btn--primary">Five</button>
190
- </div>
191
-
192
-
193
- <!-- SPLIT BUTTONS -->
194
-
195
- <!-- Basic Split Button (chevron rotates on open) -->
196
- <div class="pa-btn-split">
197
- <button class="pa-btn pa-btn--primary">Save</button>
198
- <button class="pa-btn pa-btn--primary pa-btn-split__toggle" onclick="toggleSplitMenu(event)">
199
- <i class="fas fa-chevron-down text-2xs pa-btn-split__chevron"></i>
200
- </button>
201
- <div class="pa-btn-split__menu">
202
- <button class="pa-btn-split__item">Save as Draft</button>
203
- <button class="pa-btn-split__item">Save &amp; Close</button>
204
- </div>
205
- </div>
206
-
207
- <!-- Split Button with Danger Item -->
208
- <div class="pa-btn-split">
209
- <button class="pa-btn pa-btn--primary">Export</button>
210
- <button class="pa-btn pa-btn--primary pa-btn-split__toggle" onclick="toggleSplitMenu(event)">
211
- <i class="fas fa-chevron-down text-2xs pa-btn-split__chevron"></i>
212
- </button>
213
- <div class="pa-btn-split__menu">
214
- <button class="pa-btn-split__item">Export as CSV</button>
215
- <button class="pa-btn-split__item">Export as PDF</button>
216
- <button class="pa-btn-split__item pa-btn-split__item--danger">Delete All</button>
217
- </div>
218
- </div>
219
-
220
- <!-- Split Button - Upward Placement -->
221
- <div class="pa-btn-split" data-placement="top-end">
222
- <button class="pa-btn pa-btn--primary">Upload</button>
223
- <button class="pa-btn pa-btn--primary pa-btn-split__toggle" onclick="toggleSplitMenu(event)">
224
- <i class="fas fa-chevron-up text-2xs pa-btn-split__chevron"></i>
225
- </button>
226
- <div class="pa-btn-split__menu">
227
- <button class="pa-btn-split__item">Upload File</button>
228
- <button class="pa-btn-split__item">Upload Folder</button>
229
- </div>
230
- </div>
231
-
232
- <!-- Split Button - Custom Icon (no rotation) -->
233
- <div class="pa-btn-split">
234
- <button class="pa-btn pa-btn--secondary">Share</button>
235
- <button class="pa-btn pa-btn--secondary pa-btn-split__toggle" onclick="toggleSplitMenu(event)">
236
- <i class="fas fa-ellipsis-vertical"></i>
237
- </button>
238
- <div class="pa-btn-split__menu">
239
- <button class="pa-btn-split__item">Share via Email</button>
240
- <button class="pa-btn-split__item">Share via Link</button>
241
- </div>
242
- </div>
243
-
244
- <!-- Split Button - Caret Icon (rotates) -->
245
- <div class="pa-btn-split">
246
- <button class="pa-btn pa-btn--danger">Delete</button>
247
- <button class="pa-btn pa-btn--danger pa-btn-split__toggle" onclick="toggleSplitMenu(event)">
248
- <i class="fas fa-caret-down pa-btn-split__chevron"></i>
249
- </button>
250
- <div class="pa-btn-split__menu">
251
- <button class="pa-btn-split__item pa-btn-split__item--danger">Delete Permanently</button>
252
- <button class="pa-btn-split__item">Move to Trash</button>
253
- </div>
254
- </div>
255
-
256
-
257
- <!-- BUTTONS WITH ICONS -->
258
-
259
- <!-- Button with Icon (Text Icon) -->
260
- <button class="pa-btn pa-btn--primary">
261
- <span class="pa-btn__icon">→</span>
262
- Next
263
- </button>
264
-
265
- <!-- Button with Icon (Font Awesome) -->
266
- <button class="pa-btn pa-btn--primary">
267
- <span class="pa-btn__icon"><i class="fa-solid fa-floppy-disk"></i></span>
268
- Save
269
- </button>
270
-
271
-
272
- <!-- ICON-ONLY BUTTONS -->
273
-
274
- <!-- Icon Only - Default Size -->
275
- <button class="pa-btn pa-btn--primary pa-btn--icon-only" title="Save">
276
- <i class="fa-solid fa-floppy-disk"></i>
277
- </button>
278
-
279
- <!-- Icon Only - XS (for tables) -->
280
- <button class="pa-btn pa-btn--primary pa-btn--icon-only pa-btn--xs" title="View">
281
- 👁️
282
- </button>
283
-
284
- <!-- Icon Only - SM -->
285
- <button class="pa-btn pa-btn--primary pa-btn--icon-only pa-btn--sm" title="Edit">
286
- <i class="fa-solid fa-pen"></i>
287
- </button>
288
-
289
- <!-- Icon Only - LG -->
290
- <button class="pa-btn pa-btn--primary pa-btn--icon-only pa-btn--lg" title="Delete">
291
- <i class="fa-solid fa-trash"></i>
292
- </button>
293
-
294
- <!-- Icon Only - XL -->
295
- <button class="pa-btn pa-btn--primary pa-btn--icon-only pa-btn--xl" title="Info">
296
- <i class="fa-solid fa-circle-info"></i>
297
- </button>
298
-
299
-
300
- <!-- FIXED WIDTH BUTTONS -->
301
- <!-- Use minwr-* utilities for min-width in rem -->
302
-
303
- <!-- Fixed Width 6rem -->
304
- <button class="pa-btn pa-btn--primary minwr-6">
305
- <span class="pa-btn__icon">✓</span>
306
- OK
307
- </button>
308
-
309
- <!-- Fixed Width 8rem -->
310
- <button class="pa-btn pa-btn--success minwr-8">
311
- <span class="pa-btn__icon">→</span>
312
- Continue
313
- </button>
314
-
315
- <!-- Fixed Width with Truncation -->
316
- <!-- Use minwr-* + maxwr-* to constrain width, text-truncate on inner span for ellipsis -->
317
- <button class="pa-btn pa-btn--primary minwr-10 maxwr-10">
318
- <span class="pa-btn__icon">✓</span>
319
- <span class="text-truncate">Save All Changes</span>
320
- </button>
321
-
322
- <button class="pa-btn pa-btn--secondary minwr-10 maxwr-10">
323
- <span class="pa-btn__icon">×</span>
324
- <span class="text-truncate">Cancel and Go Back</span>
325
- </button>
326
-
327
-
328
- <!-- BUTTON ALIGNMENT -->
329
-
330
- <!-- Start Aligned (icon flush to inline-start) -->
331
- <button class="pa-btn pa-btn--primary minwr-8 pa-btn--align-start">
332
- <span class="pa-btn__icon">✓</span>
333
- Save
334
- </button>
335
-
336
- <!-- End Aligned (icon flush to inline-end) -->
337
- <button class="pa-btn pa-btn--primary minwr-8 pa-btn--align-end">
338
- Save
339
- <span class="pa-btn__icon">✓</span>
340
- </button>
341
-
342
- <!-- Center Aligned -->
343
- <button class="pa-btn pa-btn--primary minwr-8 pa-btn--align-center">
344
- <span class="pa-btn__icon">✓</span>
345
- Save
346
- </button>
347
-
348
- <!-- Justified (space-between) -->
349
- <button class="pa-btn pa-btn--primary minwr-8 pa-btn--align-justify">
350
- <span class="pa-btn__icon">✓</span>
351
- Save
352
- </button>
353
-
354
-
355
- <!-- INTERACTIVE BUTTONS -->
356
-
357
- <!-- Ripple Effect Button -->
358
- <button class="pa-btn pa-btn--primary pa-btn--ripple" data-ripple>
359
- Primary Ripple
360
- </button>
361
-
362
- <!-- Button with Loading Demo -->
363
- <button class="pa-btn pa-btn--primary pa-btn--ripple" data-loading-demo data-ripple>
364
- Save Changes
365
- </button>
1
+ <!-- ================================
2
+ BUTTON SNIPPETS
3
+ Pure Admin Visual Framework
4
+ ================================ -->
5
+
6
+ <!-- BASIC BUTTONS - Variants -->
7
+
8
+ <!-- Primary Button -->
9
+ <button class="pa-btn pa-btn--primary">Primary</button>
10
+
11
+ <!-- Secondary Button -->
12
+ <button class="pa-btn pa-btn--secondary">Secondary</button>
13
+
14
+ <!-- Success Button -->
15
+ <button class="pa-btn pa-btn--success">Success</button>
16
+
17
+ <!-- Warning Button -->
18
+ <button class="pa-btn pa-btn--warning">Warning</button>
19
+
20
+ <!-- Danger Button -->
21
+ <button class="pa-btn pa-btn--danger">Danger</button>
22
+
23
+ <!-- Info Button -->
24
+ <button class="pa-btn pa-btn--info">Info</button>
25
+
26
+ <!-- Light Button -->
27
+ <button class="pa-btn pa-btn--light">Light</button>
28
+
29
+ <!-- Dark Button -->
30
+ <button class="pa-btn pa-btn--dark">Dark</button>
31
+
32
+
33
+ <!-- BUTTON SIZES -->
34
+
35
+ <!-- Extra Small Button -->
36
+ <button class="pa-btn pa-btn--primary pa-btn--xs">Extra Small</button>
37
+
38
+ <!-- Small Button -->
39
+ <button class="pa-btn pa-btn--primary pa-btn--sm">Small</button>
40
+
41
+ <!-- Default Button -->
42
+ <button class="pa-btn pa-btn--primary">Default</button>
43
+
44
+ <!-- Large Button -->
45
+ <button class="pa-btn pa-btn--primary pa-btn--lg">Large</button>
46
+
47
+ <!-- Extra Large Button -->
48
+ <button class="pa-btn pa-btn--primary pa-btn--xl">Extra Large</button>
49
+
50
+
51
+ <!-- OUTLINE BUTTONS -->
52
+
53
+ <!-- Outline Primary -->
54
+ <button class="pa-btn pa-btn--outline-primary">Primary</button>
55
+
56
+ <!-- Outline Secondary -->
57
+ <button class="pa-btn pa-btn--outline-secondary">Secondary</button>
58
+
59
+ <!-- Outline Success -->
60
+ <button class="pa-btn pa-btn--outline-success">Success</button>
61
+
62
+ <!-- Outline Warning -->
63
+ <button class="pa-btn pa-btn--outline-warning">Warning</button>
64
+
65
+ <!-- Outline Danger -->
66
+ <button class="pa-btn pa-btn--outline-danger">Danger</button>
67
+
68
+ <!-- Outline Info -->
69
+ <button class="pa-btn pa-btn--outline-info">Info</button>
70
+
71
+
72
+ <!-- BUTTON STATES -->
73
+
74
+ <!-- Normal Button -->
75
+ <button class="pa-btn pa-btn--primary">Normal</button>
76
+
77
+ <!-- Disabled Button -->
78
+ <button class="pa-btn pa-btn--primary" disabled>Disabled</button>
79
+
80
+ <!-- Loading Button -->
81
+ <button class="pa-btn pa-btn--primary pa-btn--loading">
82
+ <span class="pa-btn__spinner"></span>
83
+ Loading...
84
+ </button>
85
+
86
+
87
+ <!-- BLOCK BUTTONS -->
88
+
89
+ <!-- Block Level Button -->
90
+ <button class="pa-btn pa-btn--primary pa-btn--block">Block Level Button</button>
91
+
92
+
93
+ <!-- BUTTON GROUPS -->
94
+
95
+ <!-- Horizontal Button Group (default) -->
96
+ <div class="pa-btn-group">
97
+ <button class="pa-btn pa-btn--secondary">Left</button>
98
+ <button class="pa-btn pa-btn--secondary">Middle</button>
99
+ <button class="pa-btn pa-btn--secondary">Right</button>
100
+ </div>
101
+
102
+ <!-- Vertical Button Group -->
103
+ <div class="pa-btn-group pa-btn-group--vertical">
104
+ <button class="pa-btn pa-btn--secondary">Top</button>
105
+ <button class="pa-btn pa-btn--secondary">Middle</button>
106
+ <button class="pa-btn pa-btn--secondary">Bottom</button>
107
+ </div>
108
+
109
+
110
+ <!-- BUTTON GROUP GAP VARIANTS -->
111
+ <!-- Use gap-* utility classes to adjust spacing -->
112
+
113
+ <!-- Compact Gap (2px) -->
114
+ <div class="pa-btn-group gap-2">
115
+ <button class="pa-btn pa-btn--primary">A</button>
116
+ <button class="pa-btn pa-btn--primary">B</button>
117
+ <button class="pa-btn pa-btn--primary">C</button>
118
+ </div>
119
+
120
+ <!-- Default Gap (3px) -->
121
+ <div class="pa-btn-group">
122
+ <button class="pa-btn pa-btn--primary">A</button>
123
+ <button class="pa-btn pa-btn--primary">B</button>
124
+ <button class="pa-btn pa-btn--primary">C</button>
125
+ </div>
126
+
127
+ <!-- Loose Gap (8px) -->
128
+ <div class="pa-btn-group gap-8">
129
+ <button class="pa-btn pa-btn--primary">A</button>
130
+ <button class="pa-btn pa-btn--primary">B</button>
131
+ <button class="pa-btn pa-btn--primary">C</button>
132
+ </div>
133
+
134
+
135
+ <!-- BUTTON GROUP VERTICAL ALIGNMENT -->
136
+
137
+ <!-- Vertical Left (default) -->
138
+ <div class="pa-btn-group pa-btn-group--vertical">
139
+ <button class="pa-btn pa-btn--secondary">Short</button>
140
+ <button class="pa-btn pa-btn--secondary">Medium Button</button>
141
+ <button class="pa-btn pa-btn--secondary">Longer Button Text</button>
142
+ </div>
143
+
144
+ <!-- Vertical Center -->
145
+ <div class="pa-btn-group pa-btn-group--vertical pa-btn-group--center">
146
+ <button class="pa-btn pa-btn--secondary">Short</button>
147
+ <button class="pa-btn pa-btn--secondary">Medium Button</button>
148
+ <button class="pa-btn pa-btn--secondary">Longer Button Text</button>
149
+ </div>
150
+
151
+ <!-- Vertical End (right) -->
152
+ <div class="pa-btn-group pa-btn-group--vertical pa-btn-group--end">
153
+ <button class="pa-btn pa-btn--secondary">Short</button>
154
+ <button class="pa-btn pa-btn--secondary">Medium Button</button>
155
+ <button class="pa-btn pa-btn--secondary">Longer Button Text</button>
156
+ </div>
157
+
158
+ <!-- Vertical Stretch (full-width) -->
159
+ <div class="pa-btn-group pa-btn-group--vertical pa-btn-group--stretch">
160
+ <button class="pa-btn pa-btn--primary">Save</button>
161
+ <button class="pa-btn pa-btn--secondary">Cancel</button>
162
+ <button class="pa-btn pa-btn--danger">Delete</button>
163
+ </div>
164
+
165
+
166
+ <!-- BUTTON GROUP RESPONSIVE DIRECTION -->
167
+
168
+ <!-- Horizontal on mobile, Vertical on md+ -->
169
+ <div class="pa-btn-group pa-btn-group--md-vertical">
170
+ <button class="pa-btn pa-btn--primary">Save</button>
171
+ <button class="pa-btn pa-btn--secondary">Cancel</button>
172
+ </div>
173
+
174
+ <!-- Vertical on mobile/tablet, Horizontal on lg+ -->
175
+ <div class="pa-btn-group pa-btn-group--vertical pa-btn-group--lg-horizontal">
176
+ <button class="pa-btn pa-btn--primary">Save</button>
177
+ <button class="pa-btn pa-btn--secondary">Cancel</button>
178
+ </div>
179
+
180
+
181
+ <!-- BUTTON GROUP NO-WRAP -->
182
+
183
+ <!-- Prevent wrapping (single line, may overflow) -->
184
+ <div class="pa-btn-group pa-btn-group--nowrap">
185
+ <button class="pa-btn pa-btn--primary">One</button>
186
+ <button class="pa-btn pa-btn--primary">Two</button>
187
+ <button class="pa-btn pa-btn--primary">Three</button>
188
+ <button class="pa-btn pa-btn--primary">Four</button>
189
+ <button class="pa-btn pa-btn--primary">Five</button>
190
+ </div>
191
+
192
+
193
+ <!-- SPLIT BUTTONS -->
194
+
195
+ <!-- Basic Split Button (chevron rotates on open) -->
196
+ <div class="pa-btn-split">
197
+ <button class="pa-btn pa-btn--primary">Save</button>
198
+ <button class="pa-btn pa-btn--primary pa-btn-split__toggle" onclick="toggleSplitMenu(event)">
199
+ <i class="fas fa-chevron-down text-2xs pa-btn-split__chevron"></i>
200
+ </button>
201
+ <div class="pa-btn-split__menu">
202
+ <div class="pa-btn-split__menu-inner">
203
+ <button class="pa-btn-split__item">Save as Draft</button>
204
+ <button class="pa-btn-split__item">Save &amp; Close</button>
205
+ </div>
206
+ </div>
207
+ </div>
208
+
209
+ <!-- Split Button with Danger Item -->
210
+ <div class="pa-btn-split">
211
+ <button class="pa-btn pa-btn--primary">Export</button>
212
+ <button class="pa-btn pa-btn--primary pa-btn-split__toggle" onclick="toggleSplitMenu(event)">
213
+ <i class="fas fa-chevron-down text-2xs pa-btn-split__chevron"></i>
214
+ </button>
215
+ <div class="pa-btn-split__menu">
216
+ <div class="pa-btn-split__menu-inner">
217
+ <button class="pa-btn-split__item">Export as CSV</button>
218
+ <button class="pa-btn-split__item">Export as PDF</button>
219
+ <button class="pa-btn-split__item pa-btn-split__item--danger">Delete All</button>
220
+ </div>
221
+ </div>
222
+ </div>
223
+
224
+ <!-- Split Button - Upward Placement -->
225
+ <div class="pa-btn-split" data-placement="top-end">
226
+ <button class="pa-btn pa-btn--primary">Upload</button>
227
+ <button class="pa-btn pa-btn--primary pa-btn-split__toggle" onclick="toggleSplitMenu(event)">
228
+ <i class="fas fa-chevron-up text-2xs pa-btn-split__chevron"></i>
229
+ </button>
230
+ <div class="pa-btn-split__menu">
231
+ <div class="pa-btn-split__menu-inner">
232
+ <button class="pa-btn-split__item">Upload File</button>
233
+ <button class="pa-btn-split__item">Upload Folder</button>
234
+ </div>
235
+ </div>
236
+ </div>
237
+
238
+ <!-- Split Button - Custom Icon (no rotation) -->
239
+ <div class="pa-btn-split">
240
+ <button class="pa-btn pa-btn--secondary">Share</button>
241
+ <button class="pa-btn pa-btn--secondary pa-btn-split__toggle" onclick="toggleSplitMenu(event)">
242
+ <i class="fas fa-ellipsis-vertical"></i>
243
+ </button>
244
+ <div class="pa-btn-split__menu">
245
+ <div class="pa-btn-split__menu-inner">
246
+ <button class="pa-btn-split__item">Share via Email</button>
247
+ <button class="pa-btn-split__item">Share via Link</button>
248
+ </div>
249
+ </div>
250
+ </div>
251
+
252
+ <!-- Split Button - Caret Icon (rotates) -->
253
+ <div class="pa-btn-split">
254
+ <button class="pa-btn pa-btn--danger">Delete</button>
255
+ <button class="pa-btn pa-btn--danger pa-btn-split__toggle" onclick="toggleSplitMenu(event)">
256
+ <i class="fas fa-caret-down pa-btn-split__chevron"></i>
257
+ </button>
258
+ <div class="pa-btn-split__menu">
259
+ <div class="pa-btn-split__menu-inner">
260
+ <button class="pa-btn-split__item pa-btn-split__item--danger">Delete Permanently</button>
261
+ <button class="pa-btn-split__item">Move to Trash</button>
262
+ </div>
263
+ </div>
264
+ </div>
265
+
266
+
267
+ <!-- BUTTONS WITH ICONS -->
268
+
269
+ <!-- Button with Icon (Text Icon) -->
270
+ <button class="pa-btn pa-btn--primary">
271
+ <span class="pa-btn__icon">→</span>
272
+ Next
273
+ </button>
274
+
275
+ <!-- Button with Icon (Font Awesome) -->
276
+ <button class="pa-btn pa-btn--primary">
277
+ <span class="pa-btn__icon"><i class="fa-solid fa-floppy-disk"></i></span>
278
+ Save
279
+ </button>
280
+
281
+
282
+ <!-- ICON-ONLY BUTTONS -->
283
+
284
+ <!-- Icon Only - Default Size -->
285
+ <button class="pa-btn pa-btn--primary pa-btn--icon-only" title="Save">
286
+ <i class="fa-solid fa-floppy-disk"></i>
287
+ </button>
288
+
289
+ <!-- Icon Only - XS (for tables) -->
290
+ <button class="pa-btn pa-btn--primary pa-btn--icon-only pa-btn--xs" title="View">
291
+ 👁️
292
+ </button>
293
+
294
+ <!-- Icon Only - SM -->
295
+ <button class="pa-btn pa-btn--primary pa-btn--icon-only pa-btn--sm" title="Edit">
296
+ <i class="fa-solid fa-pen"></i>
297
+ </button>
298
+
299
+ <!-- Icon Only - LG -->
300
+ <button class="pa-btn pa-btn--primary pa-btn--icon-only pa-btn--lg" title="Delete">
301
+ <i class="fa-solid fa-trash"></i>
302
+ </button>
303
+
304
+ <!-- Icon Only - XL -->
305
+ <button class="pa-btn pa-btn--primary pa-btn--icon-only pa-btn--xl" title="Info">
306
+ <i class="fa-solid fa-circle-info"></i>
307
+ </button>
308
+
309
+
310
+ <!-- FIXED WIDTH BUTTONS -->
311
+ <!-- Use minwr-* utilities for min-width in rem -->
312
+
313
+ <!-- Fixed Width 6rem -->
314
+ <button class="pa-btn pa-btn--primary minwr-6">
315
+ <span class="pa-btn__icon">✓</span>
316
+ OK
317
+ </button>
318
+
319
+ <!-- Fixed Width 8rem -->
320
+ <button class="pa-btn pa-btn--success minwr-8">
321
+ <span class="pa-btn__icon">→</span>
322
+ Continue
323
+ </button>
324
+
325
+ <!-- Fixed Width with Truncation -->
326
+ <!-- Use minwr-* + maxwr-* to constrain width, text-truncate on inner span for ellipsis -->
327
+ <button class="pa-btn pa-btn--primary minwr-10 maxwr-10">
328
+ <span class="pa-btn__icon">✓</span>
329
+ <span class="text-truncate">Save All Changes</span>
330
+ </button>
331
+
332
+ <button class="pa-btn pa-btn--secondary minwr-10 maxwr-10">
333
+ <span class="pa-btn__icon">×</span>
334
+ <span class="text-truncate">Cancel and Go Back</span>
335
+ </button>
336
+
337
+
338
+ <!-- BUTTON ALIGNMENT -->
339
+
340
+ <!-- Start Aligned (icon flush to inline-start) -->
341
+ <button class="pa-btn pa-btn--primary minwr-8 pa-btn--align-start">
342
+ <span class="pa-btn__icon">✓</span>
343
+ Save
344
+ </button>
345
+
346
+ <!-- End Aligned (icon flush to inline-end) -->
347
+ <button class="pa-btn pa-btn--primary minwr-8 pa-btn--align-end">
348
+ Save
349
+ <span class="pa-btn__icon">✓</span>
350
+ </button>
351
+
352
+ <!-- Center Aligned -->
353
+ <button class="pa-btn pa-btn--primary minwr-8 pa-btn--align-center">
354
+ <span class="pa-btn__icon">✓</span>
355
+ Save
356
+ </button>
357
+
358
+ <!-- Justified (space-between) -->
359
+ <button class="pa-btn pa-btn--primary minwr-8 pa-btn--align-justify">
360
+ <span class="pa-btn__icon">✓</span>
361
+ Save
362
+ </button>
363
+
364
+
365
+ <!-- INTERACTIVE BUTTONS -->
366
+
367
+ <!-- Ripple Effect Button -->
368
+ <button class="pa-btn pa-btn--primary pa-btn--ripple" data-ripple>
369
+ Primary Ripple
370
+ </button>
371
+
372
+ <!-- Button with Loading Demo -->
373
+ <button class="pa-btn pa-btn--primary pa-btn--ripple" data-loading-demo data-ripple>
374
+ Save Changes
375
+ </button>