@keenmate/pure-admin-core 2.3.1 → 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 +5 -5
  2. package/dist/css/main.css +187 -178
  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 +31 -16
  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 +3 -3
  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,425 +1,425 @@
1
- /* ========================================
2
- Toast Notifications
3
- Temporary notification messages that auto-dismiss
4
- ======================================== */
5
- @use '../variables' as *;
6
-
7
- // ===== TOAST CONTAINER =====
8
-
9
- // Fixed container for toast notifications
10
- .pa-toast-container {
11
- position: fixed;
12
- z-index: $z-index-toast;
13
- pointer-events: none;
14
- display: flex;
15
- flex-direction: column;
16
- gap: $spacing-md;
17
-
18
- // Position variations - using logical properties for RTL support
19
- &--top-end {
20
- top: $spacing-lg;
21
- inset-inline-end: $spacing-lg; // RTL: flips to left
22
- }
23
-
24
- &--top-start {
25
- top: $spacing-lg;
26
- inset-inline-start: $spacing-lg; // RTL: flips to right
27
- }
28
-
29
- &--bottom-end {
30
- bottom: $spacing-lg;
31
- inset-inline-end: $spacing-lg; // RTL: flips to left
32
- }
33
-
34
- &--bottom-start {
35
- bottom: $spacing-lg;
36
- inset-inline-start: $spacing-lg; // RTL: flips to right
37
- }
38
-
39
- &--top-center {
40
- top: $spacing-lg;
41
- inset-inline-start: 50%;
42
- transform: translateX(-50%);
43
-
44
- [dir="rtl"] & {
45
- transform: translateX(50%);
46
- }
47
- }
48
-
49
- &--bottom-center {
50
- bottom: $spacing-lg;
51
- inset-inline-start: 50%;
52
- transform: translateX(-50%);
53
-
54
- [dir="rtl"] & {
55
- transform: translateX(50%);
56
- }
57
- }
58
-
59
- }
60
-
61
- // ===== TOAST ITEM =====
62
-
63
- .pa-toast {
64
- background-color: var(--pa-card-bg);
65
- border: $border-width-base solid var(--pa-border-color);
66
- border-radius: $border-radius;
67
- box-shadow: $shadow-lg;
68
- min-width: $toast-min-width;
69
- max-width: $toast-max-width;
70
- padding: $toast-padding-v $toast-padding-h;
71
- pointer-events: auto;
72
- display: flex;
73
- align-items: flex-start;
74
- gap: $spacing-md;
75
- position: relative;
76
- overflow: hidden;
77
-
78
- // Animation states
79
- opacity: 0;
80
- transform: translateX(100%);
81
- transition: opacity $transition-normal ease, transform $transition-normal ease;
82
-
83
- &.pa-toast--show {
84
- opacity: 1;
85
- transform: translateX(0);
86
- }
87
-
88
- &.pa-toast--hide {
89
- opacity: 0;
90
- transform: translateX(100%);
91
- }
92
-
93
- // Start position animations (left in LTR, right in RTL)
94
- .pa-toast-container--top-start &,
95
- .pa-toast-container--bottom-start & {
96
- transform: translateX(-100%);
97
-
98
- &.pa-toast--show {
99
- transform: translateX(0);
100
- }
101
-
102
- &.pa-toast--hide {
103
- transform: translateX(-100%);
104
- }
105
- }
106
-
107
- // RTL: reverse animation direction for start positions
108
- [dir="rtl"] .pa-toast-container--top-start &,
109
- [dir="rtl"] .pa-toast-container--bottom-start & {
110
- transform: translateX(100%);
111
-
112
- &.pa-toast--show {
113
- transform: translateX(0);
114
- }
115
-
116
- &.pa-toast--hide {
117
- transform: translateX(100%);
118
- }
119
- }
120
-
121
- // RTL: reverse animation direction for end positions
122
- [dir="rtl"] .pa-toast-container--top-end &,
123
- [dir="rtl"] .pa-toast-container--bottom-end & {
124
- transform: translateX(-100%);
125
-
126
- &.pa-toast--show {
127
- transform: translateX(0);
128
- }
129
-
130
- &.pa-toast--hide {
131
- transform: translateX(-100%);
132
- }
133
- }
134
-
135
- // Center position animations
136
- .pa-toast-container--top-center &,
137
- .pa-toast-container--bottom-center & {
138
- transform: translateY(-100%);
139
-
140
- &.pa-toast--show {
141
- transform: translateY(0);
142
- }
143
-
144
- &.pa-toast--hide {
145
- transform: translateY(-100%);
146
- }
147
- }
148
- }
149
-
150
- // Toast icon
151
- .pa-toast__icon {
152
- flex-shrink: 0;
153
- width: $toast-icon-size;
154
- height: $toast-icon-size;
155
- display: flex;
156
- align-items: center;
157
- justify-content: center;
158
- font-size: $font-size-lg;
159
- border-radius: $border-radius;
160
- }
161
-
162
- // Toast content
163
- .pa-toast__content {
164
- flex: 1;
165
- min-width: 0;
166
- }
167
-
168
- .pa-toast__title {
169
- font-weight: $font-weight-semibold;
170
- margin: 0 0 $spacing-xs 0;
171
- color: var(--pa-text-color-1);
172
- font-size: $font-size-sm;
173
- }
174
-
175
- .pa-toast__message {
176
- margin: 0;
177
- color: var(--pa-text-color-2);
178
- font-size: $font-size-sm;
179
- line-height: $line-height-base;
180
- }
181
-
182
- // Toast actions (buttons under a separator)
183
- .pa-toast__actions {
184
- margin-top: $spacing-base;
185
- padding-top: $spacing-base;
186
- border-top: $border-width-base solid var(--pa-border-color);
187
- display: flex;
188
- gap: $spacing-sm;
189
- flex-wrap: wrap;
190
- }
191
-
192
- // Toast close button
193
- .pa-toast__close {
194
- flex-shrink: 0;
195
- background: none;
196
- border: none;
197
- color: var(--pa-text-color-2);
198
- cursor: pointer;
199
- padding: 0;
200
- width: $toast-close-size;
201
- height: $toast-close-size;
202
- display: flex;
203
- align-items: center;
204
- justify-content: center;
205
- border-radius: $border-radius;
206
- font-size: $font-size-lg;
207
- line-height: 1;
208
- transition: background-color $transition-fast ease, color $transition-fast ease;
209
-
210
- &:hover {
211
- background-color: var(--pa-accent-hover);
212
- color: var(--pa-text-color-1);
213
- }
214
-
215
- &:focus {
216
- outline: $focus-outline-width solid var(--pa-accent);
217
- outline-offset: $focus-outline-offset;
218
- }
219
- }
220
-
221
- // Toast progress bar
222
- .pa-toast__progress {
223
- position: absolute;
224
- bottom: 0;
225
- inset-inline-start: 0; // RTL: flips to right
226
- height: $toast-progress-height;
227
- background-color: currentColor;
228
- opacity: 0.6;
229
- transition: width linear;
230
- }
231
-
232
- // ===== TOAST VARIANTS =====
233
-
234
- // Primary toast
235
- .pa-toast--primary {
236
- border-color: var(--pa-btn-primary-bg);
237
-
238
- .pa-toast__icon {
239
- background-color: var(--pa-btn-primary-bg-light);
240
- color: var(--pa-btn-primary-bg);
241
- }
242
-
243
- .pa-toast__progress {
244
- color: var(--pa-btn-primary-bg);
245
- }
246
- }
247
-
248
- // Success toast
249
- .pa-toast--success {
250
- border-color: var(--pa-btn-success-bg);
251
-
252
- .pa-toast__icon {
253
- background-color: var(--pa-success-bg-light);
254
- color: var(--pa-btn-success-bg);
255
- }
256
-
257
- .pa-toast__progress {
258
- color: var(--pa-btn-success-bg);
259
- }
260
- }
261
-
262
- // Danger toast
263
- .pa-toast--danger {
264
- border-color: var(--pa-btn-danger-bg);
265
-
266
- .pa-toast__icon {
267
- background-color: var(--pa-danger-bg-light);
268
- color: var(--pa-btn-danger-bg);
269
- }
270
-
271
- .pa-toast__progress {
272
- color: var(--pa-btn-danger-bg);
273
- }
274
- }
275
-
276
- // Warning toast
277
- .pa-toast--warning {
278
- border-color: var(--pa-btn-warning-bg);
279
-
280
- .pa-toast__icon {
281
- background-color: var(--pa-warning-bg-light);
282
- color: var(--pa-btn-warning-bg);
283
- }
284
-
285
- .pa-toast__progress {
286
- color: var(--pa-btn-warning-bg);
287
- }
288
- }
289
-
290
- // Info toast
291
- .pa-toast--info {
292
- border-color: var(--pa-btn-info-bg);
293
-
294
- .pa-toast__icon {
295
- background-color: var(--pa-info-bg-light);
296
- color: var(--pa-btn-info-bg);
297
- }
298
-
299
- .pa-toast__progress {
300
- color: var(--pa-btn-info-bg);
301
- }
302
- }
303
-
304
- // Theme color slot variants (color-1 through color-9)
305
- @for $i from 1 through 9 {
306
- .pa-toast--color-#{$i} {
307
- border-color: var(--pa-color-#{$i});
308
-
309
- .pa-toast__icon {
310
- background-color: color-mix(in srgb, var(--pa-color-#{$i}) 15%, transparent);
311
- color: var(--pa-color-#{$i});
312
- }
313
-
314
- .pa-toast__progress {
315
- color: var(--pa-color-#{$i});
316
- }
317
- }
318
- }
319
-
320
- // ===== FILLED TOAST VARIANTS =====
321
-
322
- // Filled toast actions: separator color + reset button colors from toast inheritance
323
- [class*="pa-toast--filled"] .pa-toast__actions {
324
- border-top-color: rgba(255, 255, 255, 0.25);
325
- }
326
-
327
- .pa-toast--filled-primary {
328
- background-color: var(--pa-btn-primary-bg);
329
- border-color: var(--pa-btn-primary-bg);
330
- color: var(--pa-btn-primary-text);
331
-
332
- .pa-toast__title,
333
- .pa-toast__message { color: inherit; }
334
- .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
335
- .pa-toast__close { color: inherit; }
336
- .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
337
- }
338
-
339
- .pa-toast--filled-success {
340
- background-color: var(--pa-btn-success-bg);
341
- border-color: var(--pa-btn-success-bg);
342
- color: var(--pa-btn-success-text);
343
-
344
- .pa-toast__title,
345
- .pa-toast__message { color: inherit; }
346
- .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
347
- .pa-toast__close { color: inherit; }
348
- .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
349
- }
350
-
351
- .pa-toast--filled-danger {
352
- background-color: var(--pa-btn-danger-bg);
353
- border-color: var(--pa-btn-danger-bg);
354
- color: var(--pa-btn-danger-text);
355
-
356
- .pa-toast__title,
357
- .pa-toast__message { color: inherit; }
358
- .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
359
- .pa-toast__close { color: inherit; }
360
- .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
361
- }
362
-
363
- .pa-toast--filled-warning {
364
- background-color: var(--pa-btn-warning-bg);
365
- border-color: var(--pa-btn-warning-bg);
366
- color: var(--pa-btn-warning-text);
367
-
368
- .pa-toast__title,
369
- .pa-toast__message { color: inherit; }
370
- .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
371
- .pa-toast__close { color: inherit; }
372
- .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
373
- }
374
-
375
- .pa-toast--filled-info {
376
- background-color: var(--pa-btn-info-bg);
377
- border-color: var(--pa-btn-info-bg);
378
- color: var(--pa-btn-info-text);
379
-
380
- .pa-toast__title,
381
- .pa-toast__message { color: inherit; }
382
- .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
383
- .pa-toast__close { color: inherit; }
384
- .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
385
- }
386
-
387
- // Filled theme color slot variants (color-1 through color-9)
388
- @for $i from 1 through 9 {
389
- .pa-toast--filled-color-#{$i} {
390
- background-color: var(--pa-color-#{$i});
391
- border-color: var(--pa-color-#{$i});
392
- color: var(--pa-color-#{$i}-text);
393
-
394
- .pa-toast__title,
395
- .pa-toast__message { color: inherit; }
396
- .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
397
- .pa-toast__close { color: inherit; }
398
- .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
399
- }
400
- }
401
-
402
- // ===== RESPONSIVE =====
403
-
404
- @media (max-width: $mobile-breakpoint) {
405
- .pa-toast-container {
406
- inset-inline: $spacing-md !important; // RTL: full width on mobile
407
- transform: none !important;
408
-
409
- &--top-end,
410
- &--top-start,
411
- &--top-center {
412
- top: $spacing-md;
413
- }
414
-
415
- &--bottom-end,
416
- &--bottom-start,
417
- &--bottom-center {
418
- bottom: $spacing-md;
419
- }
420
- }
421
-
422
- .pa-toast {
423
- max-width: 100%;
424
- }
425
- }
1
+ /* ========================================
2
+ Toast Notifications
3
+ Temporary notification messages that auto-dismiss
4
+ ======================================== */
5
+ @use '../variables' as *;
6
+
7
+ // ===== TOAST CONTAINER =====
8
+
9
+ // Fixed container for toast notifications
10
+ .pa-toast-container {
11
+ position: fixed;
12
+ z-index: $z-index-toast;
13
+ pointer-events: none;
14
+ display: flex;
15
+ flex-direction: column;
16
+ gap: $spacing-md;
17
+
18
+ // Position variations - using logical properties for RTL support
19
+ &--top-end {
20
+ top: $spacing-lg;
21
+ inset-inline-end: $spacing-lg; // RTL: flips to left
22
+ }
23
+
24
+ &--top-start {
25
+ top: $spacing-lg;
26
+ inset-inline-start: $spacing-lg; // RTL: flips to right
27
+ }
28
+
29
+ &--bottom-end {
30
+ bottom: $spacing-lg;
31
+ inset-inline-end: $spacing-lg; // RTL: flips to left
32
+ }
33
+
34
+ &--bottom-start {
35
+ bottom: $spacing-lg;
36
+ inset-inline-start: $spacing-lg; // RTL: flips to right
37
+ }
38
+
39
+ &--top-center {
40
+ top: $spacing-lg;
41
+ inset-inline-start: 50%;
42
+ transform: translateX(-50%);
43
+
44
+ [dir="rtl"] & {
45
+ transform: translateX(50%);
46
+ }
47
+ }
48
+
49
+ &--bottom-center {
50
+ bottom: $spacing-lg;
51
+ inset-inline-start: 50%;
52
+ transform: translateX(-50%);
53
+
54
+ [dir="rtl"] & {
55
+ transform: translateX(50%);
56
+ }
57
+ }
58
+
59
+ }
60
+
61
+ // ===== TOAST ITEM =====
62
+
63
+ .pa-toast {
64
+ background-color: var(--pa-card-bg);
65
+ border: $border-width-base solid var(--pa-border-color);
66
+ border-radius: var(--pa-border-radius);
67
+ box-shadow: $shadow-lg;
68
+ min-width: $toast-min-width;
69
+ max-width: $toast-max-width;
70
+ padding: $toast-padding-v $toast-padding-h;
71
+ pointer-events: auto;
72
+ display: flex;
73
+ align-items: flex-start;
74
+ gap: $spacing-md;
75
+ position: relative;
76
+ overflow: hidden;
77
+
78
+ // Animation states
79
+ opacity: 0;
80
+ transform: translateX(100%);
81
+ transition: opacity $transition-normal ease, transform $transition-normal ease;
82
+
83
+ &.pa-toast--show {
84
+ opacity: 1;
85
+ transform: translateX(0);
86
+ }
87
+
88
+ &.pa-toast--hide {
89
+ opacity: 0;
90
+ transform: translateX(100%);
91
+ }
92
+
93
+ // Start position animations (left in LTR, right in RTL)
94
+ .pa-toast-container--top-start &,
95
+ .pa-toast-container--bottom-start & {
96
+ transform: translateX(-100%);
97
+
98
+ &.pa-toast--show {
99
+ transform: translateX(0);
100
+ }
101
+
102
+ &.pa-toast--hide {
103
+ transform: translateX(-100%);
104
+ }
105
+ }
106
+
107
+ // RTL: reverse animation direction for start positions
108
+ [dir="rtl"] .pa-toast-container--top-start &,
109
+ [dir="rtl"] .pa-toast-container--bottom-start & {
110
+ transform: translateX(100%);
111
+
112
+ &.pa-toast--show {
113
+ transform: translateX(0);
114
+ }
115
+
116
+ &.pa-toast--hide {
117
+ transform: translateX(100%);
118
+ }
119
+ }
120
+
121
+ // RTL: reverse animation direction for end positions
122
+ [dir="rtl"] .pa-toast-container--top-end &,
123
+ [dir="rtl"] .pa-toast-container--bottom-end & {
124
+ transform: translateX(-100%);
125
+
126
+ &.pa-toast--show {
127
+ transform: translateX(0);
128
+ }
129
+
130
+ &.pa-toast--hide {
131
+ transform: translateX(-100%);
132
+ }
133
+ }
134
+
135
+ // Center position animations
136
+ .pa-toast-container--top-center &,
137
+ .pa-toast-container--bottom-center & {
138
+ transform: translateY(-100%);
139
+
140
+ &.pa-toast--show {
141
+ transform: translateY(0);
142
+ }
143
+
144
+ &.pa-toast--hide {
145
+ transform: translateY(-100%);
146
+ }
147
+ }
148
+ }
149
+
150
+ // Toast icon
151
+ .pa-toast__icon {
152
+ flex-shrink: 0;
153
+ width: $toast-icon-size;
154
+ height: $toast-icon-size;
155
+ display: flex;
156
+ align-items: center;
157
+ justify-content: center;
158
+ font-size: $font-size-lg;
159
+ border-radius: var(--pa-border-radius);
160
+ }
161
+
162
+ // Toast content
163
+ .pa-toast__content {
164
+ flex: 1;
165
+ min-width: 0;
166
+ }
167
+
168
+ .pa-toast__title {
169
+ font-weight: $font-weight-semibold;
170
+ margin: 0 0 $spacing-xs 0;
171
+ color: var(--pa-text-color-1);
172
+ font-size: $font-size-sm;
173
+ }
174
+
175
+ .pa-toast__message {
176
+ margin: 0;
177
+ color: var(--pa-text-color-2);
178
+ font-size: $font-size-sm;
179
+ line-height: $line-height-base;
180
+ }
181
+
182
+ // Toast actions (buttons under a separator)
183
+ .pa-toast__actions {
184
+ margin-top: $spacing-base;
185
+ padding-top: $spacing-base;
186
+ border-top: $border-width-base solid var(--pa-border-color);
187
+ display: flex;
188
+ gap: $spacing-sm;
189
+ flex-wrap: wrap;
190
+ }
191
+
192
+ // Toast close button
193
+ .pa-toast__close {
194
+ flex-shrink: 0;
195
+ background: none;
196
+ border: none;
197
+ color: var(--pa-text-color-2);
198
+ cursor: pointer;
199
+ padding: 0;
200
+ width: $toast-close-size;
201
+ height: $toast-close-size;
202
+ display: flex;
203
+ align-items: center;
204
+ justify-content: center;
205
+ border-radius: var(--pa-border-radius);
206
+ font-size: $font-size-lg;
207
+ line-height: 1;
208
+ transition: background-color $transition-fast ease, color $transition-fast ease;
209
+
210
+ &:hover {
211
+ background-color: var(--pa-accent-hover);
212
+ color: var(--pa-text-color-1);
213
+ }
214
+
215
+ &:focus {
216
+ outline: $focus-outline-width solid var(--pa-accent);
217
+ outline-offset: $focus-outline-offset;
218
+ }
219
+ }
220
+
221
+ // Toast progress bar
222
+ .pa-toast__progress {
223
+ position: absolute;
224
+ bottom: 0;
225
+ inset-inline-start: 0; // RTL: flips to right
226
+ height: $toast-progress-height;
227
+ background-color: currentColor;
228
+ opacity: 0.6;
229
+ transition: width linear;
230
+ }
231
+
232
+ // ===== TOAST VARIANTS =====
233
+
234
+ // Primary toast
235
+ .pa-toast--primary {
236
+ border-color: var(--pa-btn-primary-bg);
237
+
238
+ .pa-toast__icon {
239
+ background-color: var(--pa-btn-primary-bg-light);
240
+ color: var(--pa-btn-primary-bg);
241
+ }
242
+
243
+ .pa-toast__progress {
244
+ color: var(--pa-btn-primary-bg);
245
+ }
246
+ }
247
+
248
+ // Success toast
249
+ .pa-toast--success {
250
+ border-color: var(--pa-btn-success-bg);
251
+
252
+ .pa-toast__icon {
253
+ background-color: var(--pa-success-bg-light);
254
+ color: var(--pa-btn-success-bg);
255
+ }
256
+
257
+ .pa-toast__progress {
258
+ color: var(--pa-btn-success-bg);
259
+ }
260
+ }
261
+
262
+ // Danger toast
263
+ .pa-toast--danger {
264
+ border-color: var(--pa-btn-danger-bg);
265
+
266
+ .pa-toast__icon {
267
+ background-color: var(--pa-danger-bg-light);
268
+ color: var(--pa-btn-danger-bg);
269
+ }
270
+
271
+ .pa-toast__progress {
272
+ color: var(--pa-btn-danger-bg);
273
+ }
274
+ }
275
+
276
+ // Warning toast
277
+ .pa-toast--warning {
278
+ border-color: var(--pa-btn-warning-bg);
279
+
280
+ .pa-toast__icon {
281
+ background-color: var(--pa-warning-bg-light);
282
+ color: var(--pa-btn-warning-bg);
283
+ }
284
+
285
+ .pa-toast__progress {
286
+ color: var(--pa-btn-warning-bg);
287
+ }
288
+ }
289
+
290
+ // Info toast
291
+ .pa-toast--info {
292
+ border-color: var(--pa-btn-info-bg);
293
+
294
+ .pa-toast__icon {
295
+ background-color: var(--pa-info-bg-light);
296
+ color: var(--pa-btn-info-bg);
297
+ }
298
+
299
+ .pa-toast__progress {
300
+ color: var(--pa-btn-info-bg);
301
+ }
302
+ }
303
+
304
+ // Theme color slot variants (color-1 through color-9)
305
+ @for $i from 1 through 9 {
306
+ .pa-toast--color-#{$i} {
307
+ border-color: var(--pa-color-#{$i});
308
+
309
+ .pa-toast__icon {
310
+ background-color: color-mix(in srgb, var(--pa-color-#{$i}) 15%, transparent);
311
+ color: var(--pa-color-#{$i});
312
+ }
313
+
314
+ .pa-toast__progress {
315
+ color: var(--pa-color-#{$i});
316
+ }
317
+ }
318
+ }
319
+
320
+ // ===== FILLED TOAST VARIANTS =====
321
+
322
+ // Filled toast actions: separator color + reset button colors from toast inheritance
323
+ [class*="pa-toast--filled"] .pa-toast__actions {
324
+ border-top-color: rgba(255, 255, 255, 0.25);
325
+ }
326
+
327
+ .pa-toast--filled-primary {
328
+ background-color: var(--pa-btn-primary-bg);
329
+ border-color: var(--pa-btn-primary-bg);
330
+ color: var(--pa-btn-primary-text);
331
+
332
+ .pa-toast__title,
333
+ .pa-toast__message { color: inherit; }
334
+ .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
335
+ .pa-toast__close { color: inherit; }
336
+ .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
337
+ }
338
+
339
+ .pa-toast--filled-success {
340
+ background-color: var(--pa-btn-success-bg);
341
+ border-color: var(--pa-btn-success-bg);
342
+ color: var(--pa-btn-success-text);
343
+
344
+ .pa-toast__title,
345
+ .pa-toast__message { color: inherit; }
346
+ .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
347
+ .pa-toast__close { color: inherit; }
348
+ .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
349
+ }
350
+
351
+ .pa-toast--filled-danger {
352
+ background-color: var(--pa-btn-danger-bg);
353
+ border-color: var(--pa-btn-danger-bg);
354
+ color: var(--pa-btn-danger-text);
355
+
356
+ .pa-toast__title,
357
+ .pa-toast__message { color: inherit; }
358
+ .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
359
+ .pa-toast__close { color: inherit; }
360
+ .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
361
+ }
362
+
363
+ .pa-toast--filled-warning {
364
+ background-color: var(--pa-btn-warning-bg);
365
+ border-color: var(--pa-btn-warning-bg);
366
+ color: var(--pa-btn-warning-text);
367
+
368
+ .pa-toast__title,
369
+ .pa-toast__message { color: inherit; }
370
+ .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
371
+ .pa-toast__close { color: inherit; }
372
+ .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
373
+ }
374
+
375
+ .pa-toast--filled-info {
376
+ background-color: var(--pa-btn-info-bg);
377
+ border-color: var(--pa-btn-info-bg);
378
+ color: var(--pa-btn-info-text);
379
+
380
+ .pa-toast__title,
381
+ .pa-toast__message { color: inherit; }
382
+ .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
383
+ .pa-toast__close { color: inherit; }
384
+ .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
385
+ }
386
+
387
+ // Filled theme color slot variants (color-1 through color-9)
388
+ @for $i from 1 through 9 {
389
+ .pa-toast--filled-color-#{$i} {
390
+ background-color: var(--pa-color-#{$i});
391
+ border-color: var(--pa-color-#{$i});
392
+ color: var(--pa-color-#{$i}-text);
393
+
394
+ .pa-toast__title,
395
+ .pa-toast__message { color: inherit; }
396
+ .pa-toast__icon { background-color: rgba(255, 255, 255, 0.2); color: inherit; }
397
+ .pa-toast__close { color: inherit; }
398
+ .pa-toast__progress { color: rgba(255, 255, 255, 0.5); }
399
+ }
400
+ }
401
+
402
+ // ===== RESPONSIVE =====
403
+
404
+ @media (max-width: $mobile-breakpoint) {
405
+ .pa-toast-container {
406
+ inset-inline: $spacing-md !important; // RTL: full width on mobile
407
+ transform: none !important;
408
+
409
+ &--top-end,
410
+ &--top-start,
411
+ &--top-center {
412
+ top: $spacing-md;
413
+ }
414
+
415
+ &--bottom-end,
416
+ &--bottom-start,
417
+ &--bottom-center {
418
+ bottom: $spacing-md;
419
+ }
420
+ }
421
+
422
+ .pa-toast {
423
+ max-width: 100%;
424
+ }
425
+ }