sdga-ui 1.0.6 → 1.0.7

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 (71) hide show
  1. package/README.md +4 -4
  2. package/css/dga-ui.css +4146 -1040
  3. package/css/dga-ui.css.map +1 -1
  4. package/demo-angular/package-lock.json +41 -41
  5. package/demo-angular/package.json +8 -8
  6. package/demo-angular/public/404.html +35 -0
  7. package/demo-angular/public/i18n/ar.json +47 -0
  8. package/demo-angular/public/i18n/en.json +47 -0
  9. package/demo-angular/src/app/app.routes.ts +12 -4
  10. package/demo-angular/src/app/app.ts +8 -2
  11. package/demo-angular/src/app/views/alerts/alerts.component.html +10 -10
  12. package/demo-angular/src/app/views/alerts/alerts.component.ts +10 -10
  13. package/demo-angular/src/app/views/buttons/buttons.component.html +23 -23
  14. package/demo-angular/src/app/views/buttons/buttons.component.ts +14 -14
  15. package/demo-angular/src/app/views/cards/cards.component.html +6 -6
  16. package/demo-angular/src/app/views/cards/cards.component.ts +10 -10
  17. package/demo-angular/src/app/views/contexts/contexts.component.html +204 -0
  18. package/demo-angular/src/app/views/contexts/contexts.component.ts +10 -0
  19. package/demo-angular/src/app/views/footer/footer.html +282 -0
  20. package/demo-angular/src/app/views/footer/footer.scss +0 -0
  21. package/demo-angular/src/app/views/footer/footer.spec.ts +23 -0
  22. package/demo-angular/src/app/views/footer/footer.ts +142 -0
  23. package/demo-angular/src/app/views/header/header.html +1 -0
  24. package/demo-angular/src/app/views/header/header.scss +0 -0
  25. package/demo-angular/src/app/views/header/header.spec.ts +23 -0
  26. package/demo-angular/src/app/views/header/header.ts +11 -0
  27. package/demo-angular/src/app/views/home/home.component.html +0 -5
  28. package/demo-angular/src/app/views/links/links.component.html +2 -2
  29. package/demo-angular/src/app/views/toasts/toasts.component.html +7 -7
  30. package/demo-angular/src/app/views/toasts/toasts.component.ts +7 -7
  31. package/demo-angular/src/index.html +15 -1
  32. package/package.json +2 -2
  33. package/sdga-ui/README.md +45 -0
  34. package/sdga-ui/content/docs/components/alerts.mdx +475 -0
  35. package/sdga-ui/content/docs/index.mdx +239 -0
  36. package/sdga-ui/next.config.mjs +10 -0
  37. package/sdga-ui/package-lock.json +5851 -0
  38. package/sdga-ui/package.json +32 -0
  39. package/sdga-ui/postcss.config.mjs +5 -0
  40. package/sdga-ui/source.config.ts +27 -0
  41. package/sdga-ui/src/app/(home)/layout.tsx +6 -0
  42. package/sdga-ui/src/app/(home)/page.tsx +202 -0
  43. package/sdga-ui/src/app/api/search/route.ts +7 -0
  44. package/sdga-ui/src/app/docs/[[...slug]]/page.tsx +54 -0
  45. package/sdga-ui/src/app/docs/layout.tsx +11 -0
  46. package/sdga-ui/src/app/global.css +3 -0
  47. package/sdga-ui/src/app/layout.tsx +25 -0
  48. package/sdga-ui/src/app/llms-full.txt/route.ts +10 -0
  49. package/sdga-ui/src/app/og/docs/[...slug]/route.tsx +34 -0
  50. package/sdga-ui/src/app/sdga-scoped.css +7 -0
  51. package/sdga-ui/src/components/sdga-preview.tsx +105 -0
  52. package/sdga-ui/src/lib/layout.shared.tsx +9 -0
  53. package/sdga-ui/src/lib/source.ts +27 -0
  54. package/sdga-ui/src/mdx-components.tsx +9 -0
  55. package/sdga-ui/tsconfig.json +46 -0
  56. package/theme/_variables.scss +7 -5
  57. package/theme/components/_buttons.scss +105 -0
  58. package/theme/config/_base.scss +10 -0
  59. package/theme/config/_contexts.scss +471 -0
  60. package/theme/customizations/_alerts.scss +100 -112
  61. package/theme/customizations/_badges.scss +15 -0
  62. package/theme/customizations/_buttons.scss +288 -146
  63. package/theme/customizations/_cards.scss +52 -0
  64. package/theme/customizations/_contexts.scss +432 -0
  65. package/theme/customizations/_footer.scss +83 -0
  66. package/theme/customizations/_links.scss +55 -39
  67. package/theme/customizations/_toasts.scss +79 -100
  68. package/theme/dga-ui.scss +2 -0
  69. package/demo-angular/src/app/views/bootstrap/bootstrap.component.html +0 -14
  70. package/demo-angular/src/app/views/bootstrap/bootstrap.component.scss +0 -91
  71. package/demo-angular/src/app/views/bootstrap/bootstrap.component.ts +0 -23
@@ -182,6 +182,111 @@ $btn-outline-danger-disabled-color: $danger-400;
182
182
  $btn-outline-danger-disabled-bg: transparent;
183
183
  $btn-outline-danger-disabled-border-color: $danger-400;
184
184
 
185
+ // Success Button Variant
186
+ $btn-success-color: $white;
187
+ $btn-success-bg: $success-600;
188
+ $btn-success-border-color: $success-600;
189
+ $btn-success-hover-color: $white;
190
+ $btn-success-hover-bg: $success-700;
191
+ $btn-success-hover-border-color: $success-700;
192
+ $btn-success-active-color: $white;
193
+ $btn-success-active-bg: $success-800;
194
+ $btn-success-active-border-color: $success-800;
195
+ $btn-success-focus-color: $white;
196
+ $btn-success-focus-bg: $success-600;
197
+ $btn-success-focus-border-color: $black;
198
+ $btn-success-focus-shadow-rgb: null;
199
+ $btn-success-disabled-color: $white;
200
+ $btn-success-disabled-bg: $success-200;
201
+ $btn-success-disabled-border-color: $success-200;
202
+
203
+ // Success Outline Button Variant
204
+ $btn-outline-success-color: $success-600;
205
+ $btn-outline-success-border-color: $success-600;
206
+ $btn-outline-success-hover-color: $white;
207
+ $btn-outline-success-hover-bg: $success-600;
208
+ $btn-outline-success-hover-border-color: $success-600;
209
+ $btn-outline-success-active-color: $white;
210
+ $btn-outline-success-active-bg: $success-700;
211
+ $btn-outline-success-active-border-color: $success-700;
212
+ $btn-outline-success-focus-color: $success-700;
213
+ $btn-outline-success-focus-bg: transparent;
214
+ $btn-outline-success-focus-border-color: $black;
215
+ $btn-outline-success-focus-shadow-rgb: null;
216
+ $btn-outline-success-disabled-color: $success-400;
217
+ $btn-outline-success-disabled-bg: transparent;
218
+ $btn-outline-success-disabled-border-color: $success-400;
219
+
220
+ // Warning Button Variant
221
+ $btn-warning-color: $white;
222
+ $btn-warning-bg: $warning-600;
223
+ $btn-warning-border-color: $warning-600;
224
+ $btn-warning-hover-color: $white;
225
+ $btn-warning-hover-bg: $warning-700;
226
+ $btn-warning-hover-border-color: $warning-700;
227
+ $btn-warning-active-color: $white;
228
+ $btn-warning-active-bg: $warning-800;
229
+ $btn-warning-active-border-color: $warning-800;
230
+ $btn-warning-focus-color: $white;
231
+ $btn-warning-focus-bg: $warning-600;
232
+ $btn-warning-focus-border-color: $black;
233
+ $btn-warning-focus-shadow-rgb: null;
234
+ $btn-warning-disabled-color: $white;
235
+ $btn-warning-disabled-bg: $warning-200;
236
+ $btn-warning-disabled-border-color: $warning-200;
237
+
238
+ // Warning Outline Button Variant
239
+ $btn-outline-warning-color: $warning-600;
240
+ $btn-outline-warning-border-color: $warning-600;
241
+ $btn-outline-warning-hover-color: $white;
242
+ $btn-outline-warning-hover-bg: $warning-600;
243
+ $btn-outline-warning-hover-border-color: $warning-600;
244
+ $btn-outline-warning-active-color: $white;
245
+ $btn-outline-warning-active-bg: $warning-700;
246
+ $btn-outline-warning-active-border-color: $warning-700;
247
+ $btn-outline-warning-focus-color: $warning-700;
248
+ $btn-outline-warning-focus-bg: transparent;
249
+ $btn-outline-warning-focus-border-color: $black;
250
+ $btn-outline-warning-focus-shadow-rgb: null;
251
+ $btn-outline-warning-disabled-color: $warning-400;
252
+ $btn-outline-warning-disabled-bg: transparent;
253
+ $btn-outline-warning-disabled-border-color: $warning-400;
254
+
255
+ // Info Button Variant
256
+ $btn-info-color: $white;
257
+ $btn-info-bg: $info-600;
258
+ $btn-info-border-color: $info-600;
259
+ $btn-info-hover-color: $white;
260
+ $btn-info-hover-bg: $info-700;
261
+ $btn-info-hover-border-color: $info-700;
262
+ $btn-info-active-color: $white;
263
+ $btn-info-active-bg: $info-800;
264
+ $btn-info-active-border-color: $info-800;
265
+ $btn-info-focus-color: $white;
266
+ $btn-info-focus-bg: $info-600;
267
+ $btn-info-focus-border-color: $black;
268
+ $btn-info-focus-shadow-rgb: null;
269
+ $btn-info-disabled-color: $white;
270
+ $btn-info-disabled-bg: $info-200;
271
+ $btn-info-disabled-border-color: $info-200;
272
+
273
+ // Info Outline Button Variant
274
+ $btn-outline-info-color: $info-600;
275
+ $btn-outline-info-border-color: $info-600;
276
+ $btn-outline-info-hover-color: $white;
277
+ $btn-outline-info-hover-bg: $info-600;
278
+ $btn-outline-info-hover-border-color: $info-600;
279
+ $btn-outline-info-active-color: $white;
280
+ $btn-outline-info-active-bg: $info-700;
281
+ $btn-outline-info-active-border-color: $info-700;
282
+ $btn-outline-info-focus-color: $info-700;
283
+ $btn-outline-info-focus-bg: transparent;
284
+ $btn-outline-info-focus-border-color: $black;
285
+ $btn-outline-info-focus-shadow-rgb: null;
286
+ $btn-outline-info-disabled-color: $info-400;
287
+ $btn-outline-info-disabled-bg: transparent;
288
+ $btn-outline-info-disabled-border-color: $info-400;
289
+
185
290
  // Neutral Button Variant
186
291
  $btn-neutral-color: $white;
187
292
  $btn-neutral-bg: $neutral-950;
@@ -17,6 +17,16 @@ $body-bg: $white;
17
17
  $body-color: $black;
18
18
  $body-text-align: start;
19
19
 
20
+ // ============================================
21
+ // LINKS
22
+ // ============================================
23
+
24
+ $link-color: $primary;
25
+ $link-decoration: none;
26
+ $link-hover-color: color.scale($link-color, $lightness: -30%);
27
+ $link-hover-decoration: underline;
28
+
29
+
20
30
  // ============================================
21
31
  // COMPONENTS BASE
22
32
  // ============================================
@@ -0,0 +1,471 @@
1
+ // Context-Aware Theming System
2
+ // Components automatically adapt colors based on parent background context
3
+ // Following Bootstrap 5.3 recommended practices with CSS custom properties
4
+
5
+ // ============================================
6
+ // CONTEXT DEFINITIONS
7
+ // ============================================
8
+
9
+ // Define context background colors and their corresponding adaptive colors
10
+ $contexts: (
11
+ "on-primary": (
12
+ bg: $primary-900,
13
+ text: $white,
14
+ text-muted: rgba($white, 0.8),
15
+ border: rgba($white, 0.2),
16
+
17
+ // Button adaptations
18
+ btn-primary-bg: $white,
19
+ btn-primary-color: $primary-600,
20
+ btn-primary-hover-bg: $gray-100,
21
+ btn-primary-hover-color: $primary-700,
22
+ btn-primary-active-bg: $gray-200,
23
+ btn-primary-active-color: $primary-800,
24
+
25
+ btn-secondary-bg: transparent,
26
+ btn-secondary-color: $white,
27
+ btn-secondary-border: rgba($white, 0.4),
28
+ btn-secondary-hover-bg: rgba($white, 0.1),
29
+ btn-secondary-active-bg: rgba($white, 0.2),
30
+ btn-secondary-active-color: $white,
31
+
32
+ btn-outline-bg: transparent,
33
+ btn-outline-color: $white,
34
+ btn-outline-border: rgba($white, 0.6),
35
+ btn-outline-hover-bg: $white,
36
+ btn-outline-hover-color: $primary-600,
37
+ btn-outline-active-bg: $gray-100,
38
+ btn-outline-active-color: $primary-700,
39
+
40
+ // Link adaptations
41
+ link-color: $white,
42
+ link-hover: rgba($white, 0.8),
43
+ link-active: rgba($white, 0.6),
44
+
45
+ // Form adaptations
46
+ input-bg: rgba($white, 0.1),
47
+ input-border: rgba($white, 0.3),
48
+ input-color: $white,
49
+ input-placeholder: rgba($white, 0.6)
50
+ ),
51
+
52
+ "on-dark": (
53
+ bg: $gray-900,
54
+ text: $white,
55
+ text-muted: $gray-400,
56
+ border: $gray-700,
57
+
58
+ btn-primary-bg: $primary-600,
59
+ btn-primary-color: $white,
60
+ btn-primary-hover-bg: $primary-500,
61
+ btn-primary-hover-color: $white,
62
+ btn-primary-active-bg: $primary-700,
63
+ btn-primary-active-color: $white,
64
+
65
+ btn-secondary-bg: $gray-800,
66
+ btn-secondary-color: $white,
67
+ btn-secondary-border: $gray-700,
68
+ btn-secondary-hover-bg: $gray-700,
69
+ btn-secondary-active-bg: $gray-900,
70
+ btn-secondary-active-color: $white,
71
+
72
+ btn-outline-bg: transparent,
73
+ btn-outline-color: $white,
74
+ btn-outline-border: $gray-600,
75
+ btn-outline-hover-bg: $gray-800,
76
+ btn-outline-hover-color: $white,
77
+ btn-outline-active-bg: $gray-900,
78
+ btn-outline-active-color: $white,
79
+
80
+ link-color: $primary-400,
81
+ link-hover: $primary-300,
82
+ link-active: $primary-500,
83
+
84
+ input-bg: $gray-800,
85
+ input-border: $gray-700,
86
+ input-color: $white,
87
+ input-placeholder: $gray-500
88
+ ),
89
+
90
+ "on-danger": (
91
+ bg: $danger-600,
92
+ text: $white,
93
+ text-muted: rgba($white, 0.8),
94
+ border: rgba($white, 0.2),
95
+
96
+ btn-primary-bg: $white,
97
+ btn-primary-color: $danger-600,
98
+ btn-primary-hover-bg: $gray-100,
99
+ btn-primary-hover-color: $danger-700,
100
+ btn-primary-active-bg: $gray-200,
101
+ btn-primary-active-color: $danger-800,
102
+
103
+ btn-secondary-bg: transparent,
104
+ btn-secondary-color: $white,
105
+ btn-secondary-border: rgba($white, 0.4),
106
+ btn-secondary-hover-bg: rgba($white, 0.1),
107
+ btn-secondary-active-bg: rgba($white, 0.2),
108
+ btn-secondary-active-color: $white,
109
+
110
+ btn-outline-bg: transparent,
111
+ btn-outline-color: $white,
112
+ btn-outline-border: rgba($white, 0.6),
113
+ btn-outline-hover-bg: $white,
114
+ btn-outline-hover-color: $danger-600,
115
+ btn-outline-active-bg: $gray-100,
116
+ btn-outline-active-color: $danger-700,
117
+
118
+ link-color: $white,
119
+ link-hover: rgba($white, 0.8),
120
+ link-active: rgba($white, 0.6),
121
+
122
+ input-bg: rgba($white, 0.1),
123
+ input-border: rgba($white, 0.3),
124
+ input-color: $white,
125
+ input-placeholder: rgba($white, 0.6)
126
+ ),
127
+
128
+ "on-success": (
129
+ bg: $success-600,
130
+ text: $white,
131
+ text-muted: rgba($white, 0.8),
132
+ border: rgba($white, 0.2),
133
+
134
+ btn-primary-bg: $white,
135
+ btn-primary-color: $success-600,
136
+ btn-primary-hover-bg: $gray-100,
137
+ btn-primary-hover-color: $success-700,
138
+ btn-primary-active-bg: $gray-200,
139
+ btn-primary-active-color: $success-800,
140
+
141
+ btn-secondary-bg: transparent,
142
+ btn-secondary-color: $white,
143
+ btn-secondary-border: rgba($white, 0.4),
144
+ btn-secondary-hover-bg: rgba($white, 0.1),
145
+ btn-secondary-active-bg: rgba($white, 0.2),
146
+ btn-secondary-active-color: $white,
147
+
148
+ btn-outline-bg: transparent,
149
+ btn-outline-color: $white,
150
+ btn-outline-border: rgba($white, 0.6),
151
+ btn-outline-hover-bg: $white,
152
+ btn-outline-hover-color: $success-600,
153
+ btn-outline-active-bg: $gray-100,
154
+ btn-outline-active-color: $success-700,
155
+
156
+ link-color: $white,
157
+ link-hover: rgba($white, 0.8),
158
+ link-active: rgba($white, 0.6),
159
+
160
+ input-bg: rgba($white, 0.1),
161
+ input-border: rgba($white, 0.3),
162
+ input-color: $white,
163
+ input-placeholder: rgba($white, 0.6)
164
+ ),
165
+
166
+ "on-warning": (
167
+ bg: $warning-600,
168
+ text: $gray-900,
169
+ text-muted: $gray-700,
170
+ border: rgba($gray-900, 0.2),
171
+
172
+ btn-primary-bg: $gray-900,
173
+ btn-primary-color: $warning-600,
174
+ btn-primary-hover-bg: $gray-800,
175
+ btn-primary-hover-color: $warning-500,
176
+ btn-primary-active-bg: $black,
177
+ btn-primary-active-color: $warning-400,
178
+
179
+ btn-secondary-bg: transparent,
180
+ btn-secondary-color: $gray-900,
181
+ btn-secondary-border: rgba($gray-900, 0.3),
182
+ btn-secondary-hover-bg: rgba($gray-900, 0.1),
183
+ btn-secondary-active-bg: rgba($gray-900, 0.2),
184
+ btn-secondary-active-color: $black,
185
+
186
+ btn-outline-bg: transparent,
187
+ btn-outline-color: $gray-900,
188
+ btn-outline-border: rgba($gray-900, 0.4),
189
+ btn-outline-hover-bg: $gray-900,
190
+ btn-outline-hover-color: $warning-600,
191
+ btn-outline-active-bg: $black,
192
+ btn-outline-active-color: $warning-500,
193
+
194
+ link-color: $gray-900,
195
+ link-hover: $gray-800,
196
+ link-active: $black,
197
+
198
+ input-bg: rgba($white, 0.3),
199
+ input-border: rgba($gray-900, 0.2),
200
+ input-color: $gray-900,
201
+ input-placeholder: $gray-700
202
+ ),
203
+
204
+ "on-light": (
205
+ bg: $gray-50,
206
+ text: $gray-900,
207
+ text-muted: $gray-600,
208
+ border: $gray-200,
209
+
210
+ btn-primary-bg: $primary-600,
211
+ btn-primary-color: $white,
212
+ btn-primary-hover-bg: $primary-700,
213
+ btn-primary-hover-color: $white,
214
+ btn-primary-active-bg: $primary-800,
215
+ btn-primary-active-color: $white,
216
+
217
+ btn-secondary-bg: $white,
218
+ btn-secondary-color: $secondary-700,
219
+ btn-secondary-border: $secondary-300,
220
+ btn-secondary-hover-bg: $secondary-100,
221
+ btn-secondary-active-bg: $secondary-200,
222
+ btn-secondary-active-color: $secondary-800,
223
+
224
+ btn-outline-bg: transparent,
225
+ btn-outline-color: $gray-600,
226
+ btn-outline-border: $gray-600,
227
+ btn-outline-hover-bg: $gray-600,
228
+ btn-outline-hover-color: $white,
229
+ btn-outline-active-bg: $gray-700,
230
+ btn-outline-active-color: $white,
231
+
232
+ link-color: $gray-600,
233
+ link-hover: $gray-700,
234
+ link-active: $gray-800,
235
+
236
+ input-bg: $white,
237
+ input-border: $gray-300,
238
+ input-color: $gray-900,
239
+ input-placeholder: $gray-500
240
+ ),
241
+
242
+ "on-neutral": (
243
+ bg: $neutral-900,
244
+ text: $white,
245
+ text-muted: $gray-400,
246
+ border: $gray-700,
247
+
248
+ btn-primary-bg: $primary-600,
249
+ btn-primary-color: $white,
250
+ btn-primary-hover-bg: $primary-500,
251
+ btn-primary-hover-color: $white,
252
+ btn-primary-active-bg: $primary-700,
253
+ btn-primary-active-color: $white,
254
+
255
+ btn-secondary-bg: $gray-800,
256
+ btn-secondary-color: $white,
257
+ btn-secondary-border: $gray-700,
258
+ btn-secondary-hover-bg: $gray-700,
259
+ btn-secondary-active-bg: $gray-900,
260
+ btn-secondary-active-color: $white,
261
+
262
+ btn-outline-bg: transparent,
263
+ btn-outline-color: $white,
264
+ btn-outline-border: $gray-600,
265
+ btn-outline-hover-bg: $gray-800,
266
+ btn-outline-hover-color: $white,
267
+ btn-outline-active-bg: $gray-900,
268
+ btn-outline-active-color: $white,
269
+
270
+ link-color: $neutral-400,
271
+ link-hover: $neutral-300,
272
+ link-active: $neutral-500,
273
+
274
+ input-bg: $gray-800,
275
+ input-border: $gray-700,
276
+ input-color: $white,
277
+ input-placeholder: $gray-500
278
+ ),
279
+
280
+ "on-info": (
281
+ bg: $info-600,
282
+ text: $white,
283
+ text-muted: rgba($white, 0.8),
284
+ border: rgba($white, 0.2),
285
+
286
+ btn-primary-bg: $white,
287
+ btn-primary-color: $info-600,
288
+ btn-primary-hover-bg: $gray-100,
289
+ btn-primary-hover-color: $info-700,
290
+ btn-primary-active-bg: $gray-200,
291
+ btn-primary-active-color: $info-800,
292
+
293
+ btn-secondary-bg: transparent,
294
+ btn-secondary-color: $white,
295
+ btn-secondary-border: rgba($white, 0.4),
296
+ btn-secondary-hover-bg: rgba($white, 0.1),
297
+ btn-secondary-active-bg: rgba($white, 0.2),
298
+ btn-secondary-active-color: $white,
299
+
300
+ btn-outline-bg: transparent,
301
+ btn-outline-color: $white,
302
+ btn-outline-border: rgba($white, 0.6),
303
+ btn-outline-hover-bg: $white,
304
+ btn-outline-hover-color: $info-600,
305
+ btn-outline-active-bg: $gray-100,
306
+ btn-outline-active-color: $info-700,
307
+
308
+ link-color: $white,
309
+ link-hover: rgba($white, 0.8),
310
+ link-active: rgba($white, 0.6),
311
+
312
+ input-bg: rgba($white, 0.1),
313
+ input-border: rgba($white, 0.3),
314
+ input-color: $white,
315
+ input-placeholder: rgba($white, 0.6)
316
+ ),
317
+
318
+ "on-lavender": (
319
+ bg: $lavender-600,
320
+ text: $white,
321
+ text-muted: rgba($white, 0.8),
322
+ border: rgba($white, 0.2),
323
+
324
+ btn-primary-bg: $white,
325
+ btn-primary-color: $lavender-600,
326
+ btn-primary-hover-bg: $gray-100,
327
+ btn-primary-hover-color: $lavender-700,
328
+ btn-primary-active-bg: $gray-200,
329
+ btn-primary-active-color: $lavender-800,
330
+
331
+ btn-secondary-bg: transparent,
332
+ btn-secondary-color: $white,
333
+ btn-secondary-border: rgba($white, 0.4),
334
+ btn-secondary-hover-bg: rgba($white, 0.1),
335
+ btn-secondary-active-bg: rgba($white, 0.2),
336
+ btn-secondary-active-color: $white,
337
+
338
+ btn-outline-bg: transparent,
339
+ btn-outline-color: $white,
340
+ btn-outline-border: rgba($white, 0.6),
341
+ btn-outline-hover-bg: $white,
342
+ btn-outline-hover-color: $lavender-600,
343
+ btn-outline-active-bg: $gray-100,
344
+ btn-outline-active-color: $lavender-700,
345
+
346
+ link-color: $white,
347
+ link-hover: rgba($white, 0.8),
348
+ link-active: rgba($white, 0.6),
349
+
350
+ input-bg: rgba($white, 0.1),
351
+ input-border: rgba($white, 0.3),
352
+ input-color: $white,
353
+ input-placeholder: rgba($white, 0.6)
354
+ ),
355
+
356
+ "on-secondary": (
357
+ bg: $secondary-200,
358
+ text: $gray-900,
359
+ text-muted: $gray-600,
360
+ border: $gray-300,
361
+
362
+ btn-primary-bg: $primary-600,
363
+ btn-primary-color: $white,
364
+ btn-primary-hover-bg: $primary-700,
365
+ btn-primary-hover-color: $white,
366
+ btn-primary-active-bg: $primary-800,
367
+ btn-primary-active-color: $white,
368
+
369
+ btn-secondary-bg: $white,
370
+ btn-secondary-color: $gray-700,
371
+ btn-secondary-border: $gray-300,
372
+ btn-secondary-hover-bg: $gray-100,
373
+ btn-secondary-active-bg: $gray-200,
374
+ btn-secondary-active-color: $gray-800,
375
+
376
+ btn-outline-bg: transparent,
377
+ btn-outline-color: $gray-900,
378
+ btn-outline-border: $gray-400,
379
+ btn-outline-hover-bg: $gray-900,
380
+ btn-outline-hover-color: $white,
381
+ btn-outline-active-bg: $black,
382
+ btn-outline-active-color: $white,
383
+
384
+ link-color: $primary-600,
385
+ link-hover: $primary-700,
386
+ link-active: $primary-800,
387
+
388
+ input-bg: $white,
389
+ input-border: $gray-300,
390
+ input-color: $gray-900,
391
+ input-placeholder: $gray-500
392
+ )
393
+ );
394
+
395
+ // ============================================
396
+ // GENERATE CONTEXT CLASSES
397
+ // ============================================
398
+
399
+ @each $context-name, $context-colors in $contexts {
400
+ .#{$context-name} {
401
+ background-color: map-get($context-colors, bg);
402
+ color: map-get($context-colors, text);
403
+
404
+ // CSS Custom Properties for dynamic theming
405
+ --#{$prefix}body-color: #{map-get($context-colors, text)};
406
+ --#{$prefix}body-color-rgb: #{to-rgb(map-get($context-colors, text))};
407
+ --#{$prefix}secondary-color: #{map-get($context-colors, text-muted)};
408
+ --#{$prefix}border-color: #{map-get($context-colors, border)};
409
+
410
+ // Button context overrides
411
+ .btn-primary {
412
+ --#{$prefix}btn-bg: #{map-get($context-colors, btn-primary-bg)};
413
+ --#{$prefix}btn-color: #{map-get($context-colors, btn-primary-color)};
414
+ --#{$prefix}btn-border-color: #{map-get($context-colors, btn-primary-bg)};
415
+ --#{$prefix}btn-hover-bg: #{map-get($context-colors, btn-primary-hover-bg)};
416
+ --#{$prefix}btn-hover-color: #{map-get($context-colors, btn-primary-hover-color)};
417
+ --#{$prefix}btn-hover-border-color: #{map-get($context-colors, btn-primary-hover-bg)};
418
+ --#{$prefix}btn-active-bg: #{map-get($context-colors, btn-primary-hover-bg)};
419
+ --#{$prefix}btn-active-color: #{map-get($context-colors, btn-primary-hover-color)};
420
+ }
421
+
422
+ .btn-secondary {
423
+ --#{$prefix}btn-bg: #{map-get($context-colors, btn-secondary-bg)};
424
+ --#{$prefix}btn-color: #{map-get($context-colors, btn-secondary-color)};
425
+ --#{$prefix}btn-border-color: #{map-get($context-colors, btn-secondary-border)};
426
+ --#{$prefix}btn-hover-bg: #{map-get($context-colors, btn-secondary-hover-bg)};
427
+ --#{$prefix}btn-hover-color: #{map-get($context-colors, btn-secondary-color)};
428
+ }
429
+
430
+ .btn-outline-primary,
431
+ .btn-outline-secondary,
432
+ .btn-outline-neutral {
433
+ --#{$prefix}btn-bg: #{map-get($context-colors, btn-outline-bg)};
434
+ --#{$prefix}btn-color: #{map-get($context-colors, btn-outline-color)};
435
+ --#{$prefix}btn-border-color: #{map-get($context-colors, btn-outline-border)};
436
+ --#{$prefix}btn-hover-bg: #{map-get($context-colors, btn-outline-hover-bg)};
437
+ --#{$prefix}btn-hover-color: #{map-get($context-colors, btn-outline-hover-color)};
438
+ --#{$prefix}btn-hover-border-color: #{map-get($context-colors, btn-outline-hover-bg)};
439
+ }
440
+
441
+ // Link context overrides
442
+ a:not(.btn) {
443
+ color: map-get($context-colors, link-color);
444
+
445
+ &:hover {
446
+ color: map-get($context-colors, link-hover);
447
+ }
448
+ }
449
+
450
+ // Form context overrides
451
+ .form-control,
452
+ .form-select {
453
+ background-color: map-get($context-colors, input-bg);
454
+ border-color: map-get($context-colors, input-border);
455
+ color: map-get($context-colors, input-color);
456
+
457
+ &::placeholder {
458
+ color: map-get($context-colors, input-placeholder);
459
+ }
460
+
461
+ &:focus {
462
+ border-color: map-get($context-colors, link-color);
463
+ }
464
+ }
465
+
466
+ // Text utilities
467
+ .text-muted {
468
+ color: map-get($context-colors, text-muted) !important;
469
+ }
470
+ }
471
+ }