sdga-ui 1.0.6 → 1.0.8

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 (73) hide show
  1. package/README.md +4 -4
  2. package/css/dga-ui.css +571 -220
  3. package/css/dga-ui.css.map +1 -1
  4. package/demo-angular/angular.json +3 -0
  5. package/demo-angular/package-lock.json +41 -41
  6. package/demo-angular/package.json +8 -8
  7. package/demo-angular/public/404.html +35 -0
  8. package/demo-angular/public/i18n/ar.json +47 -0
  9. package/demo-angular/public/i18n/en.json +47 -0
  10. package/demo-angular/src/app/app.html +1 -1
  11. package/demo-angular/src/app/app.routes.ts +8 -4
  12. package/demo-angular/src/app/app.ts +11 -2
  13. package/demo-angular/src/app/shared/code-example/code-example.component.html +1 -1
  14. package/demo-angular/src/app/shared/code-example/code-example.component.ts +12 -1
  15. package/demo-angular/src/app/views/alerts/alerts.component.html +10 -10
  16. package/demo-angular/src/app/views/alerts/alerts.component.ts +10 -10
  17. package/demo-angular/src/app/views/buttons/buttons.component.html +118 -47
  18. package/demo-angular/src/app/views/buttons/buttons.component.scss +0 -3
  19. package/demo-angular/src/app/views/buttons/buttons.component.ts +91 -21
  20. package/demo-angular/src/app/views/cards/cards.component.html +6 -6
  21. package/demo-angular/src/app/views/cards/cards.component.ts +10 -10
  22. package/demo-angular/src/app/views/footer/footer.html +270 -0
  23. package/demo-angular/src/app/views/footer/footer.ts +276 -0
  24. package/demo-angular/src/app/views/header/header.html +1 -0
  25. package/demo-angular/src/app/views/header/header.scss +0 -0
  26. package/demo-angular/src/app/views/header/header.spec.ts +23 -0
  27. package/demo-angular/src/app/views/header/header.ts +11 -0
  28. package/demo-angular/src/app/views/home/home.component.html +0 -5
  29. package/demo-angular/src/app/views/links/links.component.html +2 -2
  30. package/demo-angular/src/app/views/links/links.component.ts +1 -1
  31. package/demo-angular/src/app/views/toasts/toasts.component.html +7 -7
  32. package/demo-angular/src/app/views/toasts/toasts.component.ts +7 -7
  33. package/demo-angular/src/index.html +15 -1
  34. package/demo-angular/tsconfig.app.json +2 -1
  35. package/package.json +2 -2
  36. package/sdga-ui/README.md +45 -0
  37. package/sdga-ui/content/docs/components/alerts.mdx +475 -0
  38. package/sdga-ui/content/docs/index.mdx +239 -0
  39. package/sdga-ui/next.config.mjs +10 -0
  40. package/sdga-ui/package-lock.json +5851 -0
  41. package/sdga-ui/package.json +32 -0
  42. package/sdga-ui/postcss.config.mjs +5 -0
  43. package/sdga-ui/source.config.ts +27 -0
  44. package/sdga-ui/src/app/(home)/layout.tsx +6 -0
  45. package/sdga-ui/src/app/(home)/page.tsx +202 -0
  46. package/sdga-ui/src/app/api/search/route.ts +7 -0
  47. package/sdga-ui/src/app/docs/[[...slug]]/page.tsx +54 -0
  48. package/sdga-ui/src/app/docs/layout.tsx +11 -0
  49. package/sdga-ui/src/app/global.css +3 -0
  50. package/sdga-ui/src/app/layout.tsx +25 -0
  51. package/sdga-ui/src/app/llms-full.txt/route.ts +10 -0
  52. package/sdga-ui/src/app/og/docs/[...slug]/route.tsx +34 -0
  53. package/sdga-ui/src/app/sdga-scoped.css +7 -0
  54. package/sdga-ui/src/components/sdga-preview.tsx +105 -0
  55. package/sdga-ui/src/lib/layout.shared.tsx +9 -0
  56. package/sdga-ui/src/lib/source.ts +27 -0
  57. package/sdga-ui/src/mdx-components.tsx +9 -0
  58. package/sdga-ui/tsconfig.json +46 -0
  59. package/theme/_variables.scss +6 -5
  60. package/theme/components/_buttons.scss +1 -197
  61. package/theme/config/_base.scss +11 -1
  62. package/theme/customizations/_alerts.scss +115 -126
  63. package/theme/customizations/_badges.scss +15 -0
  64. package/theme/customizations/_buttons.scss +349 -146
  65. package/theme/customizations/_cards.scss +52 -0
  66. package/theme/customizations/_footer.scss +160 -0
  67. package/theme/customizations/_global.scss +20 -2
  68. package/theme/customizations/_links.scss +62 -45
  69. package/theme/customizations/_toasts.scss +92 -114
  70. package/theme/dga-ui.scss +2 -1
  71. package/demo-angular/src/app/views/bootstrap/bootstrap.component.html +0 -14
  72. package/demo-angular/src/app/views/bootstrap/bootstrap.component.scss +0 -91
  73. package/demo-angular/src/app/views/bootstrap/bootstrap.component.ts +0 -23
@@ -1,160 +1,363 @@
1
1
  // Button Customizations - SDGA Custom Enhancements
2
+ // Following Bootstrap 5.3 recommended practices
2
3
 
3
4
  @use 'sass:color';
4
5
 
5
6
  // ============================================
6
- // BUTTON VARIANTS - Primary
7
+ // BUTTON VARIANTS - Using Sass map and @each loop
7
8
  // ============================================
8
9
 
9
- .btn-primary {
10
- --#{$prefix}btn-color: #{$btn-primary-color};
11
- --#{$prefix}btn-bg: #{$btn-primary-bg};
12
- --#{$prefix}btn-border-color: #{$btn-primary-border-color};
13
- --#{$prefix}btn-hover-color: #{$btn-primary-hover-color};
14
- --#{$prefix}btn-hover-bg: #{$btn-primary-hover-bg};
15
- --#{$prefix}btn-hover-border-color: #{$btn-primary-hover-border-color};
16
- --#{$prefix}btn-focus-shadow-rgb: #{$btn-primary-focus-shadow-rgb};
17
- --#{$prefix}btn-active-color: #{$btn-primary-active-color};
18
- --#{$prefix}btn-active-bg: #{$btn-primary-active-bg};
19
- --#{$prefix}btn-active-border-color: #{$btn-primary-active-border-color};
20
- --#{$prefix}btn-disabled-color: #{$btn-primary-disabled-color};
21
- --#{$prefix}btn-disabled-bg: #{$btn-primary-disabled-bg};
22
- --#{$prefix}btn-disabled-border-color: #{$btn-primary-disabled-border-color};
23
- }
24
-
25
- .btn-outline-primary {
26
- --#{$prefix}btn-color: #{$btn-outline-primary-color};
27
- --#{$prefix}btn-border-color: #{$btn-outline-primary-border-color};
28
- --#{$prefix}btn-hover-color: #{$btn-outline-primary-hover-color};
29
- --#{$prefix}btn-hover-bg: #{$btn-outline-primary-hover-bg};
30
- --#{$prefix}btn-hover-border-color: #{$btn-outline-primary-hover-border-color};
31
- --#{$prefix}btn-focus-shadow-rgb: #{$btn-outline-primary-focus-shadow-rgb};
32
- --#{$prefix}btn-active-color: #{$btn-outline-primary-active-color};
33
- --#{$prefix}btn-active-bg: #{$btn-outline-primary-active-bg};
34
- --#{$prefix}btn-active-border-color: #{$btn-outline-primary-active-border-color};
35
- --#{$prefix}btn-disabled-color: #{$btn-outline-primary-disabled-color};
36
- --#{$prefix}btn-disabled-bg: #{$btn-outline-primary-disabled-bg};
37
- --#{$prefix}btn-disabled-border-color: #{$btn-outline-primary-disabled-border-color};
38
- }
39
-
40
- // ============================================
41
- // BUTTON VARIANTS - Secondary
42
- // ============================================
10
+ // Define button variants with their CSS custom properties
11
+ $button-variants: (
12
+ "neutral": (
13
+ color: $white,
14
+ bg: $neutral-950,
15
+ border-color: $neutral-950,
16
+ hover-color: $white,
17
+ hover-bg: $neutral-800,
18
+ hover-border-color: $neutral-800,
19
+ active-color: $white,
20
+ active-bg: $neutral-600,
21
+ active-border-color: $neutral-600,
22
+ disabled-color: $neutral-400,
23
+ disabled-bg: $neutral-200,
24
+ disabled-border-color: $neutral-200
25
+ ),
26
+ "primary": (
27
+ color: $white,
28
+ bg: $primary-600,
29
+ border-color: $primary-600,
30
+ hover-color: $white,
31
+ hover-bg: $primary-700,
32
+ hover-border-color: $primary-700,
33
+ active-color: $white,
34
+ active-bg: $primary-800,
35
+ active-border-color: $primary-800,
36
+ disabled-color: $white,
37
+ disabled-bg: $primary-200,
38
+ disabled-border-color: $primary-200
39
+ ),
40
+ "secondary": (
41
+ color: $black,
42
+ bg: $secondary-100,
43
+ border-color: $secondary-100,
44
+ hover-color: $black,
45
+ hover-bg: $secondary-200,
46
+ hover-border-color: $secondary-200,
47
+ active-color: $black,
48
+ active-bg: $secondary-200,
49
+ active-border-color: $secondary-200,
50
+ disabled-color: $secondary-400,
51
+ disabled-bg: $secondary-200,
52
+ disabled-border-color: $secondary-200
53
+ ),
54
+ "outline-secondary": (
55
+ color: $black,
56
+ border-color: $secondary-300,
57
+ hover-color: $black,
58
+ hover-bg: $secondary-100,
59
+ hover-border-color: $secondary-200,
60
+ active-color: $black,
61
+ active-bg: $secondary-200,
62
+ active-border-color: $secondary-300,
63
+ disabled-color: $secondary-400,
64
+ disabled-bg: transparent,
65
+ disabled-border-color: $secondary-400
66
+ ),
67
+ "subtle": (
68
+ color: $black,
69
+ bg: transparent,
70
+ border-color: transparent,
71
+ hover-color: $black,
72
+ hover-bg: transparent,
73
+ hover-border-color: transparent,
74
+ active-color: $black,
75
+ active-bg: transparent,
76
+ active-border-color: transparent,
77
+ disabled-color: $neutral-400,
78
+ disabled-bg: transparent,
79
+ disabled-border-color: transparent
80
+ ),
81
+ "transparent": (
82
+ color: $black,
83
+ bg: transparent,
84
+ border-color: transparent,
85
+ hover-color: $primary-700,
86
+ hover-bg: transparent,
87
+ hover-border-color: transparent,
88
+ active-color: $primary-900,
89
+ active-bg: transparent,
90
+ active-border-color: transparent,
91
+ disabled-color: $neutral-400,
92
+ disabled-bg: transparent,
93
+ disabled-border-color: transparent
94
+ ),
95
+ "destructive-primary": (
96
+ color: $white,
97
+ bg: $error-600,
98
+ border-color: transparent,
99
+ hover-color: $white,
100
+ hover-bg: $error-700,
101
+ hover-border-color: transparent,
102
+ active-color: $white,
103
+ active-bg: $error-900,
104
+ active-border-color: transparent,
105
+ disabled-color: $neutral-400,
106
+ disabled-bg: transparent,
107
+ disabled-border-color: transparent
108
+ ),
109
+ "destructive-secondary": (
110
+ color: $error-700,
111
+ bg: $error-50,
112
+ border-color: transparent,
113
+ hover-color: $error-700,
114
+ hover-bg: $error-100,
115
+ hover-border-color: transparent,
116
+ active-color: $error-700,
117
+ active-bg: $error-200,
118
+ active-border-color: transparent,
119
+ disabled-color: $neutral-400,
120
+ disabled-bg: transparent,
121
+ disabled-border-color: transparent
122
+ ),
123
+ "destructive-outline-secondary": (
124
+ color: $error-700,
125
+ bg: transparent,
126
+ border-color: $error-200,
127
+ hover-color: $error-700,
128
+ hover-bg: $error-100,
129
+ hover-border-color: $error-100,
130
+ active-color: $error-700,
131
+ active-bg: $error-200,
132
+ active-border-color: transparent,
133
+ disabled-color: $neutral-400,
134
+ disabled-bg: transparent,
135
+ disabled-border-color: transparent
136
+ ),
137
+ "destructive-subtle": (
138
+ color: $error-700,
139
+ bg: transparent,
140
+ border-color: transparent,
141
+ hover-color: $error-700,
142
+ hover-bg: $error-100,
143
+ hover-border-color: transparent,
144
+ active-color: $error-700,
145
+ active-bg: $error-200,
146
+ active-border-color: transparent,
147
+ disabled-color: $neutral-400,
148
+ disabled-bg: transparent,
149
+ disabled-border-color: transparent
150
+ ),
151
+ "destructive-transparent": (
152
+ color: $error-600,
153
+ bg: transparent,
154
+ border-color: transparent,
155
+ hover-color: $error-700,
156
+ hover-bg: transparent,
157
+ hover-border-color: transparent,
158
+ active-color: $error-900,
159
+ active-bg: transparent,
160
+ active-border-color: transparent,
161
+ disabled-color: $neutral-400,
162
+ disabled-bg: transparent,
163
+ disabled-border-color: transparent
164
+ )
165
+ );
43
166
 
44
- .btn-secondary {
45
- --#{$prefix}btn-color: #{$btn-secondary-color};
46
- --#{$prefix}btn-bg: #{$btn-secondary-bg};
47
- --#{$prefix}btn-border-color: #{$btn-secondary-border-color};
48
- --#{$prefix}btn-hover-color: #{$btn-secondary-hover-color};
49
- --#{$prefix}btn-hover-bg: #{$btn-secondary-hover-bg};
50
- --#{$prefix}btn-hover-border-color: #{$btn-secondary-hover-border-color};
51
- --#{$prefix}btn-focus-shadow-rgb: #{$btn-secondary-focus-shadow-rgb};
52
- --#{$prefix}btn-active-color: #{$btn-secondary-active-color};
53
- --#{$prefix}btn-active-bg: #{$btn-secondary-active-bg};
54
- --#{$prefix}btn-active-border-color: #{$btn-secondary-active-border-color};
55
- --#{$prefix}btn-disabled-color: #{$btn-secondary-disabled-color};
56
- --#{$prefix}btn-disabled-bg: #{$btn-secondary-disabled-bg};
57
- --#{$prefix}btn-disabled-border-color: #{$btn-secondary-disabled-border-color};
58
- }
59
-
60
- .btn-outline-secondary {
61
- --#{$prefix}btn-color: #{$btn-outline-secondary-color};
62
- --#{$prefix}btn-border-color: #{$btn-outline-secondary-border-color};
63
- --#{$prefix}btn-hover-color: #{$btn-outline-secondary-hover-color};
64
- --#{$prefix}btn-hover-bg: #{$btn-outline-secondary-hover-bg};
65
- --#{$prefix}btn-hover-border-color: #{$btn-outline-secondary-hover-border-color};
66
- --#{$prefix}btn-focus-shadow-rgb: #{$btn-outline-secondary-focus-shadow-rgb};
67
- --#{$prefix}btn-active-color: #{$btn-outline-secondary-active-color};
68
- --#{$prefix}btn-active-bg: #{$btn-outline-secondary-active-bg};
69
- --#{$prefix}btn-active-border-color: #{$btn-outline-secondary-active-border-color};
70
- --#{$prefix}btn-disabled-color: #{$btn-outline-secondary-disabled-color};
71
- --#{$prefix}btn-disabled-bg: #{$btn-outline-secondary-disabled-bg};
72
- --#{$prefix}btn-disabled-border-color: #{$btn-outline-secondary-disabled-border-color};
73
- }
74
-
75
- // ============================================
76
- // BUTTON VARIANTS - Danger/Destructive
77
- // ============================================
78
-
79
- .btn-danger {
80
- --#{$prefix}btn-color: #{$btn-danger-color};
81
- --#{$prefix}btn-bg: #{$btn-danger-bg};
82
- --#{$prefix}btn-border-color: #{$btn-danger-border-color};
83
- --#{$prefix}btn-hover-color: #{$btn-danger-hover-color};
84
- --#{$prefix}btn-hover-bg: #{$btn-danger-hover-bg};
85
- --#{$prefix}btn-hover-border-color: #{$btn-danger-hover-border-color};
86
- --#{$prefix}btn-focus-shadow-rgb: #{$btn-danger-focus-shadow-rgb};
87
- --#{$prefix}btn-active-color: #{$btn-danger-active-color};
88
- --#{$prefix}btn-active-bg: #{$btn-danger-active-bg};
89
- --#{$prefix}btn-active-border-color: #{$btn-danger-active-border-color};
90
- --#{$prefix}btn-disabled-color: #{$btn-danger-disabled-color};
91
- --#{$prefix}btn-disabled-bg: #{$btn-danger-disabled-bg};
92
- --#{$prefix}btn-disabled-border-color: #{$btn-danger-disabled-border-color};
93
- }
94
-
95
- .btn-outline-danger {
96
- --#{$prefix}btn-color: #{$btn-outline-danger-color};
97
- --#{$prefix}btn-border-color: #{$btn-outline-danger-border-color};
98
- --#{$prefix}btn-hover-color: #{$btn-outline-danger-hover-color};
99
- --#{$prefix}btn-hover-bg: #{$btn-outline-danger-hover-bg};
100
- --#{$prefix}btn-hover-border-color: #{$btn-outline-danger-hover-border-color};
101
- --#{$prefix}btn-focus-shadow-rgb: #{$btn-outline-danger-focus-shadow-rgb};
102
- --#{$prefix}btn-active-color: #{$btn-outline-danger-active-color};
103
- --#{$prefix}btn-active-bg: #{$btn-outline-danger-active-bg};
104
- --#{$prefix}btn-active-border-color: #{$btn-outline-danger-active-border-color};
105
- --#{$prefix}btn-disabled-color: #{$btn-outline-danger-disabled-color};
106
- --#{$prefix}btn-disabled-bg: #{$btn-outline-danger-disabled-bg};
107
- --#{$prefix}btn-disabled-border-color: #{$btn-outline-danger-disabled-border-color};
108
- }
109
-
110
- // ============================================
111
- // BUTTON VARIANTS - Neutral
112
- // ============================================
113
-
114
- .btn-neutral {
115
- --#{$prefix}btn-color: #{$btn-neutral-color};
116
- --#{$prefix}btn-bg: #{$btn-neutral-bg};
117
- --#{$prefix}btn-border-color: #{$btn-neutral-border-color};
118
- --#{$prefix}btn-hover-color: #{$btn-neutral-hover-color};
119
- --#{$prefix}btn-hover-bg: #{$btn-neutral-hover-bg};
120
- --#{$prefix}btn-hover-border-color: #{$btn-neutral-hover-border-color};
121
- --#{$prefix}btn-focus-shadow-rgb: #{$btn-neutral-focus-shadow-rgb};
122
- --#{$prefix}btn-active-color: #{$btn-neutral-active-color};
123
- --#{$prefix}btn-active-bg: #{$btn-neutral-active-bg};
124
- --#{$prefix}btn-active-border-color: #{$btn-neutral-active-border-color};
125
- --#{$prefix}btn-disabled-color: #{$btn-neutral-disabled-color};
126
- --#{$prefix}btn-disabled-bg: #{$btn-neutral-disabled-bg};
127
- --#{$prefix}btn-disabled-border-color: #{$btn-neutral-disabled-border-color};
128
- }
167
+ $on-primary-button-variants: (
168
+ "neutral": (
169
+ color: $black,
170
+ bg: $white,
171
+ border-color: transparent,
172
+ hover-color: $black,
173
+ hover-bg: rgba($white, 0.8),
174
+ hover-border-color: transparent,
175
+ active-color: $black,
176
+ active-bg: rgba($white, 0.6),
177
+ active-border-color: transparent,
178
+ disabled-color: rgba($white, 0.4),
179
+ disabled-bg: rgba($white, 0.2),
180
+ disabled-border-color: transparent
181
+ ),
182
+ "primary": (
183
+ color: $black,
184
+ bg: $white,
185
+ border-color: transparent,
186
+ hover-color: $black,
187
+ hover-bg: rgba($white, 0.8),
188
+ hover-border-color: transparent,
189
+ active-color: $black,
190
+ active-bg: rgba($white, 0.6),
191
+ active-border-color: transparent,
192
+ disabled-color: rgba($white, 0.4),
193
+ disabled-bg: rgba($white, 0.2),
194
+ disabled-border-color: transparent
195
+ ),
196
+ "secondary": (
197
+ color: $white,
198
+ bg: rgba($white, 0.2),
199
+ border-color: transparent,
200
+ hover-color: $white,
201
+ hover-bg: rgba($white, 0.2),
202
+ hover-border-color: transparent,
203
+ active-color: $white,
204
+ active-bg: rgba($white, 0.4),
205
+ active-border-color: transparent,
206
+ disabled-color: rgba($white, 0.4),
207
+ disabled-bg: rgba($white, 0.2),
208
+ disabled-border-color: transparent
209
+ ),
210
+ "outline-secondary": (
211
+ color: $white,
212
+ bg: transparent,
213
+ border-color: rgba($white, 0.4),
214
+ hover-color: $white,
215
+ hover-bg: rgba($white, 0.2),
216
+ hover-border-color: rgba($white, 0.4),
217
+ active-color: $white,
218
+ active-bg: rgba($white, 0.4),
219
+ active-border-color: rgba($white, 0.4),
220
+ disabled-color: rgba($white, 0.4),
221
+ disabled-bg: transparent,
222
+ disabled-border-color: rgba($white, 0.4)
223
+ ),
224
+ "subtle": (
225
+ color: $white,
226
+ bg: transparent,
227
+ border-color: transparent,
228
+ hover-color: $white,
229
+ hover-bg: rgba($white, 0.2),
230
+ hover-border-color: transparent,
231
+ active-color: $white,
232
+ active-bg: rgba($white, 0.4),
233
+ active-border-color: transparent,
234
+ disabled-color: rgba($white, 0.4),
235
+ disabled-bg: transparent,
236
+ disabled-border-color: transparent
237
+ ),
238
+ "transparent": (
239
+ color: $white,
240
+ bg: transparent,
241
+ border-color: transparent,
242
+ hover-color: $primary-400,
243
+ hover-bg: transparent,
244
+ hover-border-color: transparent,
245
+ active-color: $primary-300,
246
+ active-bg: transparent,
247
+ active-border-color: transparent,
248
+ disabled-color: rgba($white, 0.4),
249
+ disabled-bg: transparent,
250
+ disabled-border-color: transparent
251
+ ),
252
+ "destructive-primary": (
253
+ color: $white,
254
+ bg: $error-600,
255
+ border-color: transparent,
256
+ hover-color: $white,
257
+ hover-bg: $error-700,
258
+ hover-border-color: transparent,
259
+ active-color: $white,
260
+ active-bg: $error-900,
261
+ active-border-color: transparent,
262
+ disabled-color: rgba($white, 0.4),
263
+ disabled-bg: rgba($error-600, 0.2),
264
+ disabled-border-color: transparent
265
+ ),
266
+ "destructive-secondary": (
267
+ color: $error-700,
268
+ bg: $error-50,
269
+ border-color: transparent,
270
+ hover-color: $error-700,
271
+ hover-bg: $error-100,
272
+ hover-border-color: transparent,
273
+ active-color: $error-700,
274
+ active-bg: $error-200,
275
+ active-border-color: transparent,
276
+ disabled-color: rgba($error-700, 0.4),
277
+ disabled-bg: rgba($error-50, 0.2),
278
+ disabled-border-color: transparent
279
+ ),
280
+ "destructive-outline-secondary": (
281
+ color: $error-200,
282
+ bg: transparent,
283
+ border-color: $error-200,
284
+ hover-color: $error-700,
285
+ hover-bg: $error-100,
286
+ hover-border-color: $error-200,
287
+ active-color: $error-700,
288
+ active-bg: $error-200,
289
+ active-border-color: $error-200,
290
+ disabled-color: rgba($error-700, 0.4),
291
+ disabled-bg: transparent,
292
+ disabled-border-color: rgba($error-200, 0.4)
293
+ ),
294
+ "destructive-subtle": (
295
+ color: $error-200,
296
+ bg: transparent,
297
+ border-color: transparent,
298
+ hover-color: $error-700,
299
+ hover-bg: $error-100,
300
+ hover-border-color: transparent,
301
+ active-color: $error-700,
302
+ active-bg: $error-200,
303
+ active-border-color: transparent,
304
+ disabled-color: rgba($error-200, 0.4),
305
+ disabled-bg: transparent,
306
+ disabled-border-color: transparent
307
+ ),
308
+ "destructive-transparent": (
309
+ color: $error-200,
310
+ bg: transparent,
311
+ border-color: transparent,
312
+ hover-color: $error-300,
313
+ hover-bg: transparent,
314
+ hover-border-color: transparent,
315
+ active-color: $error-400,
316
+ active-bg: transparent,
317
+ active-border-color: transparent,
318
+ disabled-color: rgba($error-200, 0.4),
319
+ disabled-bg: transparent,
320
+ disabled-border-color: transparent
321
+ )
322
+ );
129
323
 
130
- .btn-outline-neutral {
131
- --#{$prefix}btn-color: #{$btn-outline-neutral-color};
132
- --#{$prefix}btn-border-color: #{$btn-outline-neutral-border-color};
133
- --#{$prefix}btn-hover-color: #{$btn-outline-neutral-hover-color};
134
- --#{$prefix}btn-hover-bg: #{$btn-outline-neutral-hover-bg};
135
- --#{$prefix}btn-hover-border-color: #{$btn-outline-neutral-hover-border-color};
136
- --#{$prefix}btn-focus-shadow-rgb: #{$btn-outline-neutral-focus-shadow-rgb};
137
- --#{$prefix}btn-active-color: #{$btn-outline-neutral-active-color};
138
- --#{$prefix}btn-active-bg: #{$btn-outline-neutral-active-bg};
139
- --#{$prefix}btn-active-border-color: #{$btn-outline-neutral-active-border-color};
140
- --#{$prefix}btn-disabled-color: #{$btn-outline-neutral-disabled-color};
141
- --#{$prefix}btn-disabled-bg: #{$btn-outline-neutral-disabled-bg};
142
- --#{$prefix}btn-disabled-border-color: #{$btn-outline-neutral-disabled-border-color};
324
+ // Generate button variant classes
325
+ @each $name, $props in $button-variants {
326
+ .btn-#{$name} {
327
+ --#{$prefix}btn-color: #{map-get($props, color)};
328
+ --#{$prefix}btn-bg: #{map-get($props, bg)};
329
+ --#{$prefix}btn-border-color: #{map-get($props, border-color)};
330
+ --#{$prefix}btn-hover-color: #{map-get($props, hover-color)};
331
+ --#{$prefix}btn-hover-bg: #{map-get($props, hover-bg)};
332
+ --#{$prefix}btn-hover-border-color: #{map-get($props, hover-border-color)};
333
+ --#{$prefix}btn-focus-shadow-rgb: #{map-get($props, focus-shadow-rgb)};
334
+ --#{$prefix}btn-active-color: #{map-get($props, active-color)};
335
+ --#{$prefix}btn-active-bg: #{map-get($props, active-bg)};
336
+ --#{$prefix}btn-active-border-color: #{map-get($props, active-border-color)};
337
+ --#{$prefix}btn-disabled-color: #{map-get($props, disabled-color)};
338
+ --#{$prefix}btn-disabled-bg: #{map-get($props, disabled-bg)};
339
+ --#{$prefix}btn-disabled-border-color: #{map-get($props, disabled-border-color)};
340
+ };
143
341
  }
144
342
 
145
- .btn-subtle {
146
- --#{$prefix}btn-color: #{$btn-subtle-color};
147
- --#{$prefix}btn-border-color: #{$btn-subtle-border-color};
148
- --#{$prefix}btn-hover-color: #{$btn-subtle-hover-color};
149
- --#{$prefix}btn-hover-bg: #{$btn-subtle-hover-bg};
150
- --#{$prefix}btn-hover-border-color: #{$btn-subtle-hover-border-color};
151
- --#{$prefix}btn-focus-shadow-rgb: #{$btn-subtle-focus-shadow-rgb};
152
- --#{$prefix}btn-active-color: #{$btn-subtle-active-color};
153
- --#{$prefix}btn-active-bg: #{$btn-subtle-active-bg};
154
- --#{$prefix}btn-active-border-color: #{$btn-subtle-active-border-color};
155
- --#{$prefix}btn-disabled-color: #{$btn-subtle-disabled-color};
156
- --#{$prefix}btn-disabled-bg: #{$btn-subtle-disabled-bg};
157
- --#{$prefix}btn-disabled-border-color: #{$btn-subtle-disabled-border-color};
343
+ .on-primary {
344
+ @each $name, $props in $on-primary-button-variants {
345
+ .btn-#{$name} {
346
+ --#{$prefix}btn-color: #{map-get($props, color)};
347
+ --#{$prefix}btn-bg: #{map-get($props, bg)};
348
+ --#{$prefix}btn-border-color: #{map-get($props, border-color)};
349
+ --#{$prefix}btn-hover-color: #{map-get($props, hover-color)};
350
+ --#{$prefix}btn-hover-bg: #{map-get($props, hover-bg)};
351
+ --#{$prefix}btn-hover-border-color: #{map-get($props, hover-border-color)};
352
+ --#{$prefix}btn-focus-shadow-rgb: #{map-get($props, focus-shadow-rgb)};
353
+ --#{$prefix}btn-active-color: #{map-get($props, active-color)};
354
+ --#{$prefix}btn-active-bg: #{map-get($props, active-bg)};
355
+ --#{$prefix}btn-active-border-color: #{map-get($props, active-border-color)};
356
+ --#{$prefix}btn-disabled-color: #{map-get($props, disabled-color)};
357
+ --#{$prefix}btn-disabled-bg: #{map-get($props, disabled-bg)};
358
+ --#{$prefix}btn-disabled-border-color: #{map-get($props, disabled-border-color)};
359
+ }
360
+ };
158
361
  }
159
362
 
160
363
  // ============================================
@@ -1,4 +1,45 @@
1
1
  // Card Customizations - SDGA Custom Enhancements
2
+ // Following Bootstrap 5.3 recommended practices
3
+
4
+ // ============================================
5
+ // CARD ICON VARIANTS - Using Sass map and @each loop
6
+ // ============================================
7
+
8
+ // Define card icon color variants
9
+ $card-icon-variants: (
10
+ "success": (
11
+ icon-bg: $success-50,
12
+ icon-color: $success-700
13
+ ),
14
+ "primary": (
15
+ icon-bg: $primary-50,
16
+ icon-color: $primary-700
17
+ ),
18
+ "danger": (
19
+ icon-bg: $danger-50,
20
+ icon-color: $danger-700
21
+ ),
22
+ "warning": (
23
+ icon-bg: $warning-50,
24
+ icon-color: $warning-700
25
+ ),
26
+ "info": (
27
+ icon-bg: $info-50,
28
+ icon-color: $info-700
29
+ ),
30
+ "secondary": (
31
+ icon-bg: $secondary-50,
32
+ icon-color: $secondary-700
33
+ ),
34
+ "neutral": (
35
+ icon-bg: $neutral-50,
36
+ icon-color: $neutral-700
37
+ )
38
+ );
39
+
40
+ // ============================================
41
+ // CARD BASE STYLES
42
+ // ============================================
2
43
 
3
44
  .card {
4
45
  transition: transform 0.3s ease;
@@ -71,6 +112,17 @@
71
112
  justify-content: center;
72
113
  color: $success-700;
73
114
  z-index: 1;
115
+
116
+ // Generate card icon variant classes
117
+ @each $name, $colors in $card-icon-variants {
118
+ &.card-title-icon-#{$name} {
119
+ color: map-get($colors, icon-color);
120
+
121
+ &::after {
122
+ background-color: map-get($colors, icon-bg);
123
+ }
124
+ }
125
+ }
74
126
  }
75
127
 
76
128
  .card-title-checked {