@keenmate/pure-admin-core 2.3.0 → 2.3.2

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 (69) hide show
  1. package/README.md +7 -5
  2. package/dist/css/main.css +207 -181
  3. package/package.json +1 -1
  4. package/snippets/buttons.html +375 -365
  5. package/src/scss/_base-css-variables.scss +8 -0
  6. package/src/scss/_core.scss +121 -121
  7. package/src/scss/core-components/_alerts.scss +227 -227
  8. package/src/scss/core-components/_badges.scss +16 -16
  9. package/src/scss/core-components/_base.scss +125 -125
  10. package/src/scss/core-components/_buttons.scss +580 -548
  11. package/src/scss/core-components/_callouts.scss +152 -152
  12. package/src/scss/core-components/_cards.scss +488 -488
  13. package/src/scss/core-components/_checkbox-lists.scss +289 -289
  14. package/src/scss/core-components/_code.scss +141 -141
  15. package/src/scss/core-components/_command-palette.scss +509 -509
  16. package/src/scss/core-components/_comparison.scss +172 -172
  17. package/src/scss/core-components/_data-display.scss +9 -9
  18. package/src/scss/core-components/_data-viz.scss +9 -9
  19. package/src/scss/core-components/_detail-panel.scss +1 -1
  20. package/src/scss/core-components/_file-selector.scss +780 -780
  21. package/src/scss/core-components/_filter-card.scss +58 -58
  22. package/src/scss/core-components/_forms.scss +16 -16
  23. package/src/scss/core-components/_grid.scss +293 -293
  24. package/src/scss/core-components/_layout.scss +15 -15
  25. package/src/scss/core-components/_lists.scss +211 -211
  26. package/src/scss/core-components/_loaders.scss +277 -277
  27. package/src/scss/core-components/_logic-tree.scss +280 -280
  28. package/src/scss/core-components/_modals.scss +203 -203
  29. package/src/scss/core-components/_notifications.scss +320 -320
  30. package/src/scss/core-components/_pagers.scss +141 -141
  31. package/src/scss/core-components/_popconfirm.scss +170 -170
  32. package/src/scss/core-components/_profile.scss +405 -405
  33. package/src/scss/core-components/_scrollbars.scss +40 -40
  34. package/src/scss/core-components/_settings-panel.scss +141 -141
  35. package/src/scss/core-components/_statistics.scss +200 -201
  36. package/src/scss/core-components/_tables.scss +900 -900
  37. package/src/scss/core-components/_tabs.scss +504 -504
  38. package/src/scss/core-components/_timeline.scss +589 -589
  39. package/src/scss/core-components/_toasts.scss +425 -425
  40. package/src/scss/core-components/_tooltips.scss +605 -605
  41. package/src/scss/core-components/_utilities.scss +1 -1
  42. package/src/scss/core-components/_web-components-theme.scss +21 -21
  43. package/src/scss/core-components/badges/_badge-base.scss +121 -121
  44. package/src/scss/core-components/badges/_badge-group.scss +25 -25
  45. package/src/scss/core-components/badges/_composite-badge-variants.scss +396 -396
  46. package/src/scss/core-components/badges/_composite-badge.scss +70 -70
  47. package/src/scss/core-components/badges/_index.scss +10 -10
  48. package/src/scss/core-components/badges/_labels.scss +155 -155
  49. package/src/scss/core-components/forms/_checkboxes-radios.scss +205 -205
  50. package/src/scss/core-components/forms/_form-inputs.scss +136 -135
  51. package/src/scss/core-components/forms/_form-layout.scss +66 -66
  52. package/src/scss/core-components/forms/_form-states.scss +115 -115
  53. package/src/scss/core-components/forms/_index.scss +12 -12
  54. package/src/scss/core-components/forms/_input-groups.scss +154 -154
  55. package/src/scss/core-components/forms/_input-wrapper.scss +89 -89
  56. package/src/scss/core-components/forms/_query-editor.scss +313 -313
  57. package/src/scss/core-components/layout/_index.scss +11 -11
  58. package/src/scss/core-components/layout/_layout-container.scss +168 -168
  59. package/src/scss/core-components/layout/_layout-responsive.scss +99 -99
  60. package/src/scss/core-components/layout/_navbar-elements.scss +250 -250
  61. package/src/scss/core-components/layout/_navbar.scss +83 -83
  62. package/src/scss/core-components/layout/_sidebar-states.scss +237 -237
  63. package/src/scss/core-components/layout/_sidebar.scss +234 -234
  64. package/src/scss/main.scss +7 -7
  65. package/src/scss/utilities.scss +740 -740
  66. package/src/scss/variables/_base.scss +228 -228
  67. package/src/scss/variables/_components.scss +748 -748
  68. package/src/scss/variables/_layout.scss +65 -65
  69. 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>