@keenmate/pure-admin-core 1.0.0-rc01

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 (167) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +172 -0
  3. package/dist/css/main.css +11542 -0
  4. package/dist/fonts/Delivery/Delivery_W_Bd.woff2 +0 -0
  5. package/dist/fonts/Delivery/Delivery_W_BdIt.woff2 +0 -0
  6. package/dist/fonts/Delivery/Delivery_W_CdBlk.woff2 +0 -0
  7. package/dist/fonts/Delivery/Delivery_W_CdLt.woff2 +0 -0
  8. package/dist/fonts/Delivery/Delivery_W_It.woff2 +0 -0
  9. package/dist/fonts/Delivery/Delivery_W_Lt.woff2 +0 -0
  10. package/dist/fonts/Delivery/Delivery_W_LtIt.woff2 +0 -0
  11. package/dist/fonts/Delivery/Delivery_W_Rg.woff2 +0 -0
  12. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2 +0 -0
  13. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2.1 +0 -0
  14. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2.2 +0 -0
  15. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2 +0 -0
  16. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2.1 +0 -0
  17. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2.2 +0 -0
  18. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8bH-o.woff2 +0 -0
  19. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8bH-o.woff2.1 +0 -0
  20. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2 +0 -0
  21. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2.1 +0 -0
  22. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2.2 +0 -0
  23. package/dist/fonts/google/6aez4K2oVqwIvtE2H68T.woff2 +0 -0
  24. package/dist/fonts/google/6aez4K2oVqwIvtU2Hw.woff2 +0 -0
  25. package/dist/fonts/google/6aez4K2oVqwIvtY2H68T.woff2 +0 -0
  26. package/dist/fonts/google/6aez4K2oVqwIvtg2H68T.woff2 +0 -0
  27. package/dist/fonts/google/6aez4K2oVqwIvto2H68T.woff2 +0 -0
  28. package/dist/fonts/google/6aez4K2oVqwIvts2H68T.woff2 +0 -0
  29. package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nejog.woff2 +0 -0
  30. package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nijogp5.woff2 +0 -0
  31. package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nmjogp5.woff2 +0 -0
  32. package/dist/fonts/google/PN_xRfK9oXHga0XdZ8g_vT0.woff2 +0 -0
  33. package/dist/fonts/google/PN_xRfK9oXHga0XdZsg_.woff2 +0 -0
  34. package/dist/fonts/google/PN_xRfK9oXHga0XdaMg_vT0.woff2 +0 -0
  35. package/dist/fonts/google/TK3tWkYFABsmjsphPho.woff2 +0 -0
  36. package/dist/fonts/google/TK3tWkYFABsmjspuPho7vA.woff2 +0 -0
  37. package/dist/fonts/google/TK3tWkYFABsmjspvPho7vA.woff2 +0 -0
  38. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjTYJwQj.woff2 +0 -0
  39. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjXYJwQj.woff2 +0 -0
  40. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6Vj_YJwQj.woff2 +0 -0
  41. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjbYJwQj.woff2 +0 -0
  42. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjvYJw.woff2 +0 -0
  43. package/dist/fonts/google/fonts-tracklist.txt +48 -0
  44. package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbBjM4.woff2 +0 -0
  45. package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbOjM7sfA.woff2 +0 -0
  46. package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbPjM7sfA.woff2 +0 -0
  47. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfLtrftV.woff2 +0 -0
  48. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfXtrftV.woff2 +0 -0
  49. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfbtrQ.woff2 +0 -0
  50. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfjtrftV.woff2 +0 -0
  51. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfntrftV.woff2 +0 -0
  52. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfrtrftV.woff2 +0 -0
  53. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfvtrftV.woff2 +0 -0
  54. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_B-bnBeA.woff2 +0 -0
  55. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_C-bk.woff2 +0 -0
  56. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_G-bnBeA.woff2 +0 -0
  57. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_M-bnBeA.woff2 +0 -0
  58. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_N-bnBeA.woff2 +0 -0
  59. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_P-bnBeA.woff2 +0 -0
  60. package/package.json +60 -0
  61. package/snippets/alerts.html +281 -0
  62. package/snippets/badges.html +212 -0
  63. package/snippets/buttons.html +287 -0
  64. package/snippets/cards.html +393 -0
  65. package/snippets/checkbox-lists.html +490 -0
  66. package/snippets/code.html +225 -0
  67. package/snippets/command-palette.html +210 -0
  68. package/snippets/comparison.html +428 -0
  69. package/snippets/customization.html +142 -0
  70. package/snippets/forms.html +477 -0
  71. package/snippets/grid.html +338 -0
  72. package/snippets/layout.html +598 -0
  73. package/snippets/lists.html +232 -0
  74. package/snippets/loaders.html +183 -0
  75. package/snippets/manifest.json +388 -0
  76. package/snippets/modal-dialogs.html +411 -0
  77. package/snippets/modals.html +310 -0
  78. package/snippets/popconfirm.html +253 -0
  79. package/snippets/profile.html +264 -0
  80. package/snippets/tables.html +317 -0
  81. package/snippets/tabs.html +930 -0
  82. package/snippets/timeline.html +364 -0
  83. package/snippets/toasts.html +154 -0
  84. package/snippets/tooltips.html +411 -0
  85. package/snippets/typography.html +101 -0
  86. package/snippets/utilities.html +595 -0
  87. package/snippets/virtual-scroll.html +322 -0
  88. package/snippets/web-daterangepicker.html +634 -0
  89. package/snippets/web-multiselect.html +362 -0
  90. package/src/scss/.claude/settings.local.json +11 -0
  91. package/src/scss/_base-css-variables.scss +348 -0
  92. package/src/scss/_core.scss +99 -0
  93. package/src/scss/_fonts.scss +67 -0
  94. package/src/scss/_purecss-grid-responsive.scss +138 -0
  95. package/src/scss/_purecss-grid.scss +58 -0
  96. package/src/scss/_variables.scss +14 -0
  97. package/src/scss/core-components/_alerts.scss +212 -0
  98. package/src/scss/core-components/_badges.scss +16 -0
  99. package/src/scss/core-components/_base.scss +124 -0
  100. package/src/scss/core-components/_buttons.scss +473 -0
  101. package/src/scss/core-components/_cards.scss +285 -0
  102. package/src/scss/core-components/_checkbox-lists.scss +289 -0
  103. package/src/scss/core-components/_code.scss +141 -0
  104. package/src/scss/core-components/_command-palette.scss +518 -0
  105. package/src/scss/core-components/_comparison.scss +172 -0
  106. package/src/scss/core-components/_file-selector.scss +780 -0
  107. package/src/scss/core-components/_forms.scss +16 -0
  108. package/src/scss/core-components/_grid.scss +264 -0
  109. package/src/scss/core-components/_layout.scss +15 -0
  110. package/src/scss/core-components/_lists.scss +211 -0
  111. package/src/scss/core-components/_loaders.scss +277 -0
  112. package/src/scss/core-components/_logic-tree.scss +280 -0
  113. package/src/scss/core-components/_modals.scss +209 -0
  114. package/src/scss/core-components/_notifications.scss +253 -0
  115. package/src/scss/core-components/_pagers.scss +141 -0
  116. package/src/scss/core-components/_popconfirm.scss +170 -0
  117. package/src/scss/core-components/_profile.scss +281 -0
  118. package/src/scss/core-components/_settings-panel.scss +128 -0
  119. package/src/scss/core-components/_statistics.scss +200 -0
  120. package/src/scss/core-components/_tables.scss +555 -0
  121. package/src/scss/core-components/_tabs.scss +438 -0
  122. package/src/scss/core-components/_timeline.scss +589 -0
  123. package/src/scss/core-components/_toasts.scss +281 -0
  124. package/src/scss/core-components/_tooltips.scss +503 -0
  125. package/src/scss/core-components/_utilities.scss +241 -0
  126. package/src/scss/core-components/_web-components-theme.scss +294 -0
  127. package/src/scss/core-components/badges/_badge-base.scss +131 -0
  128. package/src/scss/core-components/badges/_badge-group.scss +25 -0
  129. package/src/scss/core-components/badges/_composite-badge-variants.scss +396 -0
  130. package/src/scss/core-components/badges/_composite-badge.scss +70 -0
  131. package/src/scss/core-components/badges/_index.scss +10 -0
  132. package/src/scss/core-components/badges/_labels.scss +155 -0
  133. package/src/scss/core-components/forms/_checkboxes-radios.scss +205 -0
  134. package/src/scss/core-components/forms/_form-inputs.scss +100 -0
  135. package/src/scss/core-components/forms/_form-layout.scss +66 -0
  136. package/src/scss/core-components/forms/_form-states.scss +89 -0
  137. package/src/scss/core-components/forms/_index.scss +12 -0
  138. package/src/scss/core-components/forms/_input-groups.scss +149 -0
  139. package/src/scss/core-components/forms/_input-wrapper.scss +89 -0
  140. package/src/scss/core-components/forms/_query-editor.scss +313 -0
  141. package/src/scss/core-components/layout/_index.scss +11 -0
  142. package/src/scss/core-components/layout/_layout-container.scss +105 -0
  143. package/src/scss/core-components/layout/_layout-responsive.scss +100 -0
  144. package/src/scss/core-components/layout/_navbar-elements.scss +238 -0
  145. package/src/scss/core-components/layout/_navbar.scss +71 -0
  146. package/src/scss/core-components/layout/_sidebar-states.scss +228 -0
  147. package/src/scss/core-components/layout/_sidebar.scss +177 -0
  148. package/src/scss/main.scss +7 -0
  149. package/src/scss/themes/_dark-base.scss +207 -0
  150. package/src/scss/themes/audi-light.scss +311 -0
  151. package/src/scss/themes/audi.scss +288 -0
  152. package/src/scss/themes/corporate.scss +203 -0
  153. package/src/scss/themes/dark-blue.scss +152 -0
  154. package/src/scss/themes/dark-green.scss +156 -0
  155. package/src/scss/themes/dark-red.scss +160 -0
  156. package/src/scss/themes/dark.scss +145 -0
  157. package/src/scss/themes/express.scss +281 -0
  158. package/src/scss/themes/minimal.scss +121 -0
  159. package/src/scss/utilities.scss +481 -0
  160. package/src/scss/variables/_base.scss +81 -0
  161. package/src/scss/variables/_colors.scss +148 -0
  162. package/src/scss/variables/_components.scss +509 -0
  163. package/src/scss/variables/_index.scss +13 -0
  164. package/src/scss/variables/_layout.scss +65 -0
  165. package/src/scss/variables/_spacing.scss +66 -0
  166. package/src/scss/variables/_system.scss +80 -0
  167. package/src/scss/variables/_typography.scss +37 -0
@@ -0,0 +1,473 @@
1
+ /* ========================================
2
+ Button Components
3
+ Buttons, button groups, sizes, colors, states, and icon buttons
4
+ ======================================== */
5
+ @use '../variables' as *;
6
+
7
+ // Buttons
8
+ .pa-btn {
9
+ display: inline-block;
10
+ padding: $btn-padding-v $btn-padding-h;
11
+ border: $btn-border-width solid transparent;
12
+ border-radius: $border-radius;
13
+ font-size: $font-size-sm;
14
+ font-weight: $font-weight-medium;
15
+ text-align: center;
16
+ text-decoration: none;
17
+ cursor: pointer;
18
+ transition: all $transition-fast $easing-snappy;
19
+ background: none;
20
+ color: var(--pa-text-primary);
21
+
22
+ &:hover {
23
+ transform: translateY($btn-hover-lift);
24
+ }
25
+
26
+ &--primary {
27
+ background-color: var(--pa-accent);
28
+ border-color: var(--pa-accent);
29
+ color: var(--pa-btn-primary-text);
30
+
31
+ &:hover {
32
+ background-color: var(--pa-accent);
33
+ filter: brightness($btn-hover-brightness);
34
+ }
35
+ }
36
+
37
+ &--secondary {
38
+ background-color: transparent;
39
+ border-color: var(--pa-border-color);
40
+ color: var(--pa-text-primary);
41
+
42
+ &:hover {
43
+ background-color: var(--pa-primary-bg);
44
+ border-color: var(--pa-accent);
45
+ }
46
+ }
47
+
48
+ &--xs {
49
+ padding: $btn-padding-xs-v $btn-padding-xs-h;
50
+ font-size: $font-size-xs;
51
+ min-height: 2.8rem; // Enforce consistent height
52
+ }
53
+
54
+ &--sm {
55
+ padding: $btn-padding-sm-v $btn-padding-sm-h;
56
+ font-size: $font-size-sm;
57
+ min-height: 3.2rem; // Enforce consistent height (~32px)
58
+ }
59
+
60
+ &--lg {
61
+ padding: $btn-padding-lg-v $btn-padding-lg-h;
62
+ font-size: $font-size-base;
63
+ min-height: 4rem; // Enforce consistent height
64
+ }
65
+
66
+ &--xl {
67
+ padding: $btn-padding-xl-v $btn-padding-xl-h;
68
+ font-size: $font-size-lg;
69
+ min-height: 4.4rem; // Enforce consistent height
70
+ }
71
+
72
+ // Button variants (colors)
73
+ &--success {
74
+ background-color: var(--pa-btn-success-bg);
75
+ border-color: var(--pa-btn-success-bg);
76
+ color: var(--pa-btn-success-text);
77
+
78
+ &:hover {
79
+ background-color: var(--pa-btn-success-bg-hover);
80
+ border-color: var(--pa-btn-success-bg-hover);
81
+ }
82
+ }
83
+
84
+ &--warning {
85
+ background-color: var(--pa-btn-warning-bg);
86
+ border-color: var(--pa-btn-warning-bg);
87
+ color: var(--pa-btn-warning-text);
88
+
89
+ &:hover {
90
+ background-color: var(--pa-btn-warning-bg-hover);
91
+ border-color: var(--pa-btn-warning-bg-hover);
92
+ }
93
+ }
94
+
95
+ &--danger {
96
+ background-color: var(--pa-btn-danger-bg);
97
+ border-color: var(--pa-btn-danger-bg);
98
+ color: var(--pa-btn-danger-text);
99
+
100
+ &:hover {
101
+ background-color: var(--pa-btn-danger-bg-hover);
102
+ border-color: var(--pa-btn-danger-bg-hover);
103
+ }
104
+ }
105
+
106
+ &--info {
107
+ background-color: var(--pa-btn-info-bg);
108
+ border-color: var(--pa-btn-info-bg);
109
+ color: var(--pa-btn-info-text);
110
+
111
+ &:hover {
112
+ background-color: var(--pa-btn-info-bg-hover);
113
+ border-color: var(--pa-btn-info-bg-hover);
114
+ }
115
+ }
116
+
117
+ &--light {
118
+ background-color: var(--pa-btn-light-bg);
119
+ border-color: var(--pa-btn-light-bg);
120
+ color: var(--pa-btn-light-text);
121
+
122
+ &:hover {
123
+ background-color: var(--pa-btn-light-bg-hover);
124
+ border-color: var(--pa-btn-light-bg-hover);
125
+ }
126
+ }
127
+
128
+ &--dark {
129
+ background-color: var(--pa-btn-dark-bg);
130
+ border-color: var(--pa-btn-dark-bg);
131
+ color: var(--pa-btn-dark-text);
132
+
133
+ &:hover {
134
+ background-color: var(--pa-btn-dark-bg-hover);
135
+ border-color: var(--pa-btn-dark-bg-hover);
136
+ }
137
+ }
138
+
139
+ // Outline variants
140
+ &--outline-primary {
141
+ background-color: transparent;
142
+ border-color: var(--pa-accent);
143
+ color: var(--pa-accent);
144
+
145
+ &:hover {
146
+ background-color: var(--pa-accent);
147
+ color: var(--pa-btn-primary-text);
148
+ }
149
+ }
150
+
151
+ &--outline-secondary {
152
+ background-color: transparent;
153
+ border-color: var(--pa-btn-secondary-bg);
154
+ color: var(--pa-btn-secondary-bg);
155
+
156
+ &:hover {
157
+ background-color: var(--pa-btn-secondary-bg);
158
+ color: var(--pa-btn-secondary-text);
159
+ }
160
+ }
161
+
162
+ &--outline-success {
163
+ background-color: transparent;
164
+ border-color: var(--pa-btn-success-bg);
165
+ color: var(--pa-btn-success-bg);
166
+
167
+ &:hover {
168
+ background-color: var(--pa-btn-success-bg);
169
+ color: var(--pa-btn-success-text);
170
+ }
171
+ }
172
+
173
+ &--outline-warning {
174
+ background-color: transparent;
175
+ border-color: var(--pa-btn-warning-bg);
176
+ color: var(--pa-btn-warning-bg);
177
+
178
+ &:hover {
179
+ background-color: var(--pa-btn-warning-bg);
180
+ color: var(--pa-btn-warning-text);
181
+ }
182
+ }
183
+
184
+ &--outline-danger {
185
+ background-color: transparent;
186
+ border-color: var(--pa-btn-danger-bg);
187
+ color: var(--pa-btn-danger-bg);
188
+
189
+ &:hover {
190
+ background-color: var(--pa-btn-danger-bg);
191
+ color: var(--pa-btn-danger-text);
192
+ }
193
+ }
194
+
195
+ &--outline-info {
196
+ background-color: transparent;
197
+ border-color: var(--pa-btn-info-bg);
198
+ color: var(--pa-btn-info-bg);
199
+
200
+ &:hover {
201
+ background-color: var(--pa-btn-info-bg);
202
+ color: var(--pa-btn-info-text);
203
+ }
204
+ }
205
+
206
+ // Button states
207
+ &:disabled {
208
+ opacity: $btn-disabled-opacity;
209
+ cursor: not-allowed;
210
+ transform: none !important;
211
+ }
212
+
213
+ &--loading {
214
+ position: relative;
215
+ pointer-events: none;
216
+
217
+ .pa-btn__spinner {
218
+ position: absolute;
219
+ top: 0;
220
+ left: 0;
221
+ right: 0;
222
+ bottom: 0;
223
+ margin: auto;
224
+ width: $spinner-size;
225
+ height: $spinner-size;
226
+ border: $spinner-border-width solid transparent;
227
+ border-top: $spinner-border-width solid currentColor;
228
+ border-radius: 50%;
229
+ animation: pa-spin $animation-spin-duration linear infinite;
230
+ }
231
+ }
232
+
233
+ // Ripple effect
234
+ &--ripple {
235
+ position: relative;
236
+ overflow: hidden;
237
+
238
+ &::before {
239
+ content: '';
240
+ position: absolute;
241
+ top: 50%;
242
+ left: 50%;
243
+ width: 0;
244
+ height: 0;
245
+ border-radius: 50%;
246
+ background: $ripple-color;
247
+ transform: translate(-50%, -50%);
248
+ transition: width $ripple-transition-duration ease, height $ripple-transition-duration ease;
249
+ pointer-events: none;
250
+ }
251
+
252
+ &.pa-btn--ripple-active::before {
253
+ width: $ripple-size;
254
+ height: $ripple-size;
255
+ }
256
+ }
257
+
258
+ // Block button
259
+ &--block {
260
+ width: 100%;
261
+ display: block;
262
+ }
263
+
264
+ // Icon buttons
265
+ &--icon-only {
266
+ width: $btn-icon-only-size;
267
+ height: $btn-icon-only-size;
268
+ padding: 0;
269
+ display: flex;
270
+ align-items: center;
271
+ justify-content: center;
272
+
273
+ // Size-specific icon-only dimensions
274
+ &.pa-btn--xs {
275
+ width: $btn-icon-only-size-xs;
276
+ height: $btn-icon-only-size-xs;
277
+ }
278
+
279
+ &.pa-btn--sm {
280
+ width: $btn-icon-only-size-sm;
281
+ height: $btn-icon-only-size-sm;
282
+ }
283
+
284
+ &.pa-btn--lg {
285
+ width: $btn-icon-only-size-lg;
286
+ height: $btn-icon-only-size-lg;
287
+ }
288
+
289
+ &.pa-btn--xl {
290
+ width: $btn-icon-only-size-xl;
291
+ height: $btn-icon-only-size-xl;
292
+ }
293
+ }
294
+
295
+ &__icon {
296
+ margin-right: $btn-icon-margin;
297
+
298
+ &:last-child {
299
+ margin-right: 0;
300
+ margin-left: $btn-icon-margin;
301
+ }
302
+ }
303
+
304
+ // Buttons with icons align left like sidebar menu items
305
+ &:has(.pa-btn__icon) {
306
+ text-align: left;
307
+ display: inline-flex;
308
+ align-items: center;
309
+ gap: $spacing-sm;
310
+
311
+ .pa-btn__icon {
312
+ width: $sidebar-icon-size;
313
+ min-width: $sidebar-icon-size;
314
+ // No fixed height - let button padding control height
315
+ display: flex;
316
+ align-items: center;
317
+ justify-content: center;
318
+ flex-shrink: 0;
319
+ margin: 0;
320
+
321
+ &:last-child {
322
+ margin: 0;
323
+ }
324
+ }
325
+ }
326
+
327
+ // Fixed width buttons - multipliers of 1rem
328
+ &--w-1x {
329
+ min-width: $spinner-size;
330
+ }
331
+
332
+ &--w-2x {
333
+ min-width: $btn-width-2x;
334
+ }
335
+
336
+ &--w-3x {
337
+ min-width: $btn-width-3x;
338
+ }
339
+
340
+ &--w-4x {
341
+ min-width: $btn-width-4x;
342
+ }
343
+
344
+ &--w-5x {
345
+ min-width: $btn-width-5x;
346
+ }
347
+
348
+ &--w-6x {
349
+ min-width: $btn-width-6x;
350
+ }
351
+
352
+ &--w-7x {
353
+ min-width: $btn-width-7x;
354
+ }
355
+
356
+ &--w-8x {
357
+ min-width: $btn-width-8x;
358
+ }
359
+
360
+ &--w-9x {
361
+ min-width: $btn-width-9x;
362
+ }
363
+
364
+ &--w-10x {
365
+ min-width: $btn-width-10x;
366
+ }
367
+
368
+ // Content alignment modifiers (position content within button)
369
+ // Button always keeps its horizontal padding (0.75rem on both sides)
370
+ // These classes control content position and remove icon padding on aligned sides
371
+
372
+ &--align-left {
373
+ justify-content: flex-start;
374
+
375
+ .pa-btn__icon {
376
+ padding-left: 0;
377
+ }
378
+ }
379
+
380
+ &--align-right {
381
+ justify-content: flex-end;
382
+
383
+ .pa-btn__icon {
384
+ padding-right: 0;
385
+ }
386
+ }
387
+
388
+ &--align-center {
389
+ justify-content: center;
390
+ }
391
+
392
+ &--align-justify {
393
+ justify-content: space-between;
394
+
395
+ .pa-btn__icon:first-child {
396
+ padding-left: 0;
397
+ }
398
+
399
+ // Remove padding from last element (text or icon)
400
+ > *:last-child {
401
+ padding-right: 0;
402
+ }
403
+ }
404
+ }
405
+
406
+ // Button Groups
407
+ .pa-btn-group {
408
+ display: inline-flex;
409
+ gap: $btn-group-gap;
410
+ flex-wrap: wrap;
411
+ align-items: center;
412
+
413
+ // === Gap Size Variants ===
414
+ &--compact {
415
+ gap: $btn-group-gap-compact;
416
+ }
417
+
418
+ &--loose {
419
+ gap: $btn-group-gap-loose;
420
+ }
421
+
422
+ // === Direction Variants ===
423
+ &--vertical {
424
+ flex-direction: column;
425
+ align-items: flex-start;
426
+ }
427
+
428
+ // === Vertical Alignment Variants ===
429
+ &--vertical#{&}--center {
430
+ align-items: center;
431
+ }
432
+
433
+ &--vertical#{&}--end {
434
+ align-items: flex-end;
435
+ }
436
+
437
+ &--vertical#{&}--stretch {
438
+ align-items: stretch;
439
+
440
+ .pa-btn {
441
+ width: 100%;
442
+ }
443
+ }
444
+
445
+ // === Responsive Direction Modifiers ===
446
+ @each $bp, $min-width in $grid-breakpoints {
447
+ &--#{$bp}-vertical {
448
+ @media (min-width: $min-width) {
449
+ flex-direction: column;
450
+ align-items: flex-start;
451
+ }
452
+ }
453
+
454
+ &--#{$bp}-horizontal {
455
+ @media (min-width: $min-width) {
456
+ flex-direction: row;
457
+ align-items: center;
458
+ }
459
+ }
460
+ }
461
+
462
+ // === No Wrap Variant ===
463
+ &--nowrap {
464
+ flex-wrap: nowrap;
465
+ }
466
+
467
+ // Ensure tooltips on buttons appear above siblings
468
+ .pa-btn.pa-tooltip:hover {
469
+ position: relative;
470
+ z-index: $z-index-modal;
471
+ }
472
+ }
473
+