@dsrc-cm/core 0.1.0

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 (51) hide show
  1. package/dist/dsrc.css +10743 -0
  2. package/dist/dsrc.min.css +1 -0
  3. package/package.json +44 -0
  4. package/src/base/print.css +404 -0
  5. package/src/base/reset.css +106 -0
  6. package/src/components/accordion/accordion.css +216 -0
  7. package/src/components/alert/alert.css +187 -0
  8. package/src/components/badge/badge.css +178 -0
  9. package/src/components/breadcrumb/breadcrumb.css +235 -0
  10. package/src/components/button/button.css +805 -0
  11. package/src/components/callout/callout.css +95 -0
  12. package/src/components/card/card.css +551 -0
  13. package/src/components/checkbox/checkbox.css +257 -0
  14. package/src/components/consent/consent.css +297 -0
  15. package/src/components/download/download.css +66 -0
  16. package/src/components/dropdown/dropdown.css +295 -0
  17. package/src/components/highlight/highlight.css +74 -0
  18. package/src/components/input/input.css +337 -0
  19. package/src/components/label/label.css +29 -0
  20. package/src/components/link/link.css +208 -0
  21. package/src/components/logo/logo.css +86 -0
  22. package/src/components/modal/modal.css +271 -0
  23. package/src/components/notice/notice.css +211 -0
  24. package/src/components/pagination/pagination.css +132 -0
  25. package/src/components/password/password.css +195 -0
  26. package/src/components/quote/quote.css +156 -0
  27. package/src/components/radio/radio.css +270 -0
  28. package/src/components/range/range.css +362 -0
  29. package/src/components/search/search.css +129 -0
  30. package/src/components/select/select.css +130 -0
  31. package/src/components/sidemenu/sidemenu.css +268 -0
  32. package/src/components/spinner/spinner.css +73 -0
  33. package/src/components/stepper/stepper.css +140 -0
  34. package/src/components/summary/summary.css +142 -0
  35. package/src/components/tab/tab.css +184 -0
  36. package/src/components/table/table.css +556 -0
  37. package/src/components/tag/tag.css +201 -0
  38. package/src/components/tile/tile.css +389 -0
  39. package/src/components/toggle/toggle.css +229 -0
  40. package/src/components/tooltip/tooltip.css +158 -0
  41. package/src/components/translate/translate.css +356 -0
  42. package/src/components/upload/upload.css +185 -0
  43. package/src/index.css +77 -0
  44. package/src/layout/bandeau/bandeau.css +44 -0
  45. package/src/layout/entete/entete.css +130 -0
  46. package/src/layout/footer/footer.css +107 -0
  47. package/src/layout/grid/grid.css +197 -0
  48. package/src/layout/hero/hero.css +86 -0
  49. package/src/layout/main/main.css +123 -0
  50. package/src/layout/navigation/navigation.css +206 -0
  51. package/src/utilities/utilities.css +430 -0
@@ -0,0 +1,356 @@
1
+ /**
2
+ * DSRC Translate (Language Selector) Component
3
+ *
4
+ * Cameroon is officially bilingual (French/English). This component
5
+ * provides language switching for all government websites.
6
+ *
7
+ * Usage (inline):
8
+ * <nav class="dsrc-translate" role="navigation" aria-label="Choix de la langue">
9
+ * <ul class="dsrc-translate__list">
10
+ * <li>
11
+ * <a href="/fr" class="dsrc-translate__btn" aria-current="true" lang="fr" hreflang="fr">
12
+ * Francais
13
+ * </a>
14
+ * </li>
15
+ * <li class="dsrc-translate__separator" aria-hidden="true"></li>
16
+ * <li>
17
+ * <a href="/en" class="dsrc-translate__btn" lang="en" hreflang="en">
18
+ * English
19
+ * </a>
20
+ * </li>
21
+ * </ul>
22
+ * </nav>
23
+ *
24
+ * Compact variant (FR | EN):
25
+ * <nav class="dsrc-translate dsrc-translate--compact" role="navigation" aria-label="Choix de la langue">
26
+ * <ul class="dsrc-translate__list">
27
+ * <li>
28
+ * <a href="/fr" class="dsrc-translate__btn" aria-current="true" lang="fr" hreflang="fr">FR</a>
29
+ * </li>
30
+ * <li class="dsrc-translate__separator" aria-hidden="true"></li>
31
+ * <li>
32
+ * <a href="/en" class="dsrc-translate__btn" lang="en" hreflang="en">EN</a>
33
+ * </li>
34
+ * </ul>
35
+ * </nav>
36
+ *
37
+ * Dropdown variant:
38
+ * <nav class="dsrc-translate dsrc-translate--dropdown" role="navigation" aria-label="Choix de la langue">
39
+ * <button class="dsrc-translate__trigger" aria-expanded="false" aria-controls="translate-panel">
40
+ * FR
41
+ * <span class="dsrc-translate__chevron" aria-hidden="true"></span>
42
+ * </button>
43
+ * <ul class="dsrc-translate__panel" id="translate-panel" role="menu">
44
+ * <li role="none">
45
+ * <a href="/fr" class="dsrc-translate__option" role="menuitem" aria-current="true" lang="fr" hreflang="fr">
46
+ * Francais
47
+ * </a>
48
+ * </li>
49
+ * <li role="none">
50
+ * <a href="/en" class="dsrc-translate__option" role="menuitem" lang="en" hreflang="en">
51
+ * English
52
+ * </a>
53
+ * </li>
54
+ * </ul>
55
+ * </nav>
56
+ */
57
+
58
+ /* ----------------------------------------------------------------
59
+ Base container
60
+ ---------------------------------------------------------------- */
61
+
62
+ .dsrc-translate {
63
+ font-family: var(--dsrc-font-family-sans);
64
+ font-size: var(--dsrc-font-size-small);
65
+ position: relative;
66
+ }
67
+
68
+ /* ----------------------------------------------------------------
69
+ Inline language list
70
+ ---------------------------------------------------------------- */
71
+
72
+ .dsrc-translate__list {
73
+ display: flex;
74
+ align-items: center;
75
+ gap: 0;
76
+ list-style: none;
77
+ margin: 0;
78
+ padding: 0;
79
+ }
80
+
81
+ /* ----------------------------------------------------------------
82
+ Language button (link)
83
+ ---------------------------------------------------------------- */
84
+
85
+ .dsrc-translate__btn {
86
+ display: inline-flex;
87
+ align-items: center;
88
+ padding: var(--dsrc-spacing-1) var(--dsrc-spacing-2);
89
+ font-family: var(--dsrc-font-family-sans);
90
+ font-size: var(--dsrc-font-size-small);
91
+ font-weight: var(--dsrc-font-weight-medium);
92
+ color: var(--dsrc-color-gris-600);
93
+ text-decoration: none;
94
+ border-radius: var(--dsrc-radius-default);
95
+ border: var(--dsrc-border-width-default) solid transparent;
96
+ cursor: pointer;
97
+ white-space: nowrap;
98
+ transition:
99
+ color var(--dsrc-transition-duration-fast) ease,
100
+ background-color var(--dsrc-transition-duration-fast) ease,
101
+ border-color var(--dsrc-transition-duration-fast) ease;
102
+ }
103
+
104
+ .dsrc-translate__btn:hover {
105
+ color: var(--dsrc-color-noir);
106
+ background-color: var(--dsrc-color-gris-50);
107
+ }
108
+
109
+ .dsrc-translate__btn:active {
110
+ color: var(--dsrc-color-noir);
111
+ background-color: var(--dsrc-color-gris-100);
112
+ }
113
+
114
+ /* Focus ring */
115
+ .dsrc-translate__btn:focus-visible {
116
+ outline: var(--dsrc-outline-width) solid var(--dsrc-color-primaire-focus);
117
+ outline-offset: var(--dsrc-outline-offset);
118
+ }
119
+
120
+ /* Active language indicator */
121
+ .dsrc-translate__btn[aria-current="true"] {
122
+ color: var(--dsrc-color-primaire);
123
+ font-weight: var(--dsrc-font-weight-semibold);
124
+ background-color: var(--dsrc-color-primaire-clair);
125
+ border-color: var(--dsrc-color-primaire);
126
+ }
127
+
128
+ .dsrc-translate__btn[aria-current="true"]:hover {
129
+ color: var(--dsrc-color-primaire-fonce);
130
+ background-color: var(--dsrc-color-primaire-clair);
131
+ }
132
+
133
+ /* ----------------------------------------------------------------
134
+ Separator (pipe between languages)
135
+ ---------------------------------------------------------------- */
136
+
137
+ .dsrc-translate__separator {
138
+ display: flex;
139
+ align-items: center;
140
+ padding: 0 var(--dsrc-spacing-1);
141
+ color: var(--dsrc-color-gris-400);
142
+ user-select: none;
143
+ }
144
+
145
+ .dsrc-translate__separator::before {
146
+ content: '|';
147
+ }
148
+
149
+ /* ----------------------------------------------------------------
150
+ Compact variant (FR | EN)
151
+ ---------------------------------------------------------------- */
152
+
153
+ .dsrc-translate--compact .dsrc-translate__btn {
154
+ font-size: var(--dsrc-font-size-caption);
155
+ padding: var(--dsrc-spacing-1) var(--dsrc-spacing-1);
156
+ font-weight: var(--dsrc-font-weight-semibold);
157
+ letter-spacing: var(--dsrc-font-letter-spacing-wide);
158
+ text-transform: uppercase;
159
+ }
160
+
161
+ .dsrc-translate--compact .dsrc-translate__separator {
162
+ font-size: var(--dsrc-font-size-caption);
163
+ padding: 0 2px;
164
+ }
165
+
166
+ /* ----------------------------------------------------------------
167
+ Dropdown variant
168
+ ---------------------------------------------------------------- */
169
+
170
+ .dsrc-translate--dropdown {
171
+ display: inline-flex;
172
+ }
173
+
174
+ /* Hide the inline list inside dropdown variant */
175
+ .dsrc-translate--dropdown .dsrc-translate__list {
176
+ display: none;
177
+ }
178
+
179
+ /* Trigger button */
180
+ .dsrc-translate__trigger {
181
+ display: inline-flex;
182
+ align-items: center;
183
+ gap: var(--dsrc-spacing-1);
184
+ padding: var(--dsrc-spacing-1) var(--dsrc-spacing-2);
185
+ font-family: var(--dsrc-font-family-sans);
186
+ font-size: var(--dsrc-font-size-small);
187
+ font-weight: var(--dsrc-font-weight-semibold);
188
+ color: var(--dsrc-color-gris-600);
189
+ background: none;
190
+ border: var(--dsrc-border-width-default) solid var(--dsrc-color-gris-200);
191
+ border-radius: var(--dsrc-radius-default);
192
+ cursor: pointer;
193
+ white-space: nowrap;
194
+ letter-spacing: var(--dsrc-font-letter-spacing-wide);
195
+ transition:
196
+ color var(--dsrc-transition-duration-fast) ease,
197
+ background-color var(--dsrc-transition-duration-fast) ease,
198
+ border-color var(--dsrc-transition-duration-fast) ease;
199
+ }
200
+
201
+ .dsrc-translate__trigger:hover {
202
+ color: var(--dsrc-color-noir);
203
+ background-color: var(--dsrc-color-gris-50);
204
+ border-color: var(--dsrc-color-gris-400);
205
+ }
206
+
207
+ .dsrc-translate__trigger:active {
208
+ background-color: var(--dsrc-color-gris-100);
209
+ }
210
+
211
+ .dsrc-translate__trigger:focus-visible {
212
+ outline: var(--dsrc-outline-width) solid var(--dsrc-color-primaire-focus);
213
+ outline-offset: var(--dsrc-outline-offset);
214
+ }
215
+
216
+ /* Expanded state */
217
+ .dsrc-translate__trigger[aria-expanded="true"] {
218
+ color: var(--dsrc-color-noir);
219
+ border-color: var(--dsrc-color-primaire);
220
+ }
221
+
222
+ /* Chevron icon (CSS triangle) */
223
+ .dsrc-translate__chevron {
224
+ display: inline-block;
225
+ width: 8px;
226
+ height: 8px;
227
+ border-right: 1.5px solid currentColor;
228
+ border-bottom: 1.5px solid currentColor;
229
+ transform: rotate(45deg);
230
+ transition: transform var(--dsrc-transition-duration-fast) ease;
231
+ margin-top: -2px;
232
+ }
233
+
234
+ .dsrc-translate__trigger[aria-expanded="true"] .dsrc-translate__chevron {
235
+ transform: rotate(-135deg);
236
+ margin-top: 2px;
237
+ }
238
+
239
+ /* Dropdown panel */
240
+ .dsrc-translate__panel {
241
+ display: none;
242
+ position: absolute;
243
+ top: 100%;
244
+ right: 0;
245
+ margin-top: var(--dsrc-spacing-1);
246
+ min-width: 160px;
247
+ list-style: none;
248
+ padding: var(--dsrc-spacing-1) 0;
249
+ background-color: var(--dsrc-color-blanc);
250
+ border: var(--dsrc-border-width-thin) solid var(--dsrc-color-gris-200);
251
+ border-radius: var(--dsrc-radius-default);
252
+ box-shadow: var(--dsrc-shadow-md);
253
+ z-index: var(--dsrc-z-index-tooltip);
254
+ }
255
+
256
+ /* Show panel when trigger is expanded */
257
+ .dsrc-translate__trigger[aria-expanded="true"] + .dsrc-translate__panel {
258
+ display: block;
259
+ }
260
+
261
+ /* Dropdown option */
262
+ .dsrc-translate__option {
263
+ display: flex;
264
+ align-items: center;
265
+ width: 100%;
266
+ padding: var(--dsrc-spacing-2) var(--dsrc-spacing-3);
267
+ font-family: var(--dsrc-font-family-sans);
268
+ font-size: var(--dsrc-font-size-small);
269
+ font-weight: var(--dsrc-font-weight-medium);
270
+ color: var(--dsrc-color-noir);
271
+ text-decoration: none;
272
+ cursor: pointer;
273
+ transition:
274
+ background-color var(--dsrc-transition-duration-fast) ease,
275
+ color var(--dsrc-transition-duration-fast) ease;
276
+ }
277
+
278
+ .dsrc-translate__option:hover {
279
+ background-color: var(--dsrc-color-gris-50);
280
+ }
281
+
282
+ .dsrc-translate__option:active {
283
+ background-color: var(--dsrc-color-gris-100);
284
+ }
285
+
286
+ .dsrc-translate__option:focus-visible {
287
+ outline: var(--dsrc-outline-width) solid var(--dsrc-color-primaire-focus);
288
+ outline-offset: calc(-1 * var(--dsrc-outline-offset));
289
+ }
290
+
291
+ /* Active language in dropdown */
292
+ .dsrc-translate__option[aria-current="true"] {
293
+ color: var(--dsrc-color-primaire);
294
+ font-weight: var(--dsrc-font-weight-semibold);
295
+ background-color: var(--dsrc-color-primaire-clair);
296
+ }
297
+
298
+ .dsrc-translate__option[aria-current="true"]:hover {
299
+ background-color: var(--dsrc-color-primaire-clair);
300
+ color: var(--dsrc-color-primaire-fonce);
301
+ }
302
+
303
+ /* ----------------------------------------------------------------
304
+ Integration with header (.dsrc-entete__actions)
305
+ ---------------------------------------------------------------- */
306
+
307
+ .dsrc-entete__actions .dsrc-translate {
308
+ flex-shrink: 0;
309
+ }
310
+
311
+ .dsrc-entete__actions .dsrc-translate__btn {
312
+ font-size: var(--dsrc-font-size-caption);
313
+ }
314
+
315
+ .dsrc-entete__actions .dsrc-translate__separator {
316
+ font-size: var(--dsrc-font-size-caption);
317
+ }
318
+
319
+ /* ----------------------------------------------------------------
320
+ Responsive: adapt for mobile
321
+ ---------------------------------------------------------------- */
322
+
323
+ @media (max-width: 47.999em) {
324
+ /* In the header, switch to compact sizing */
325
+ .dsrc-entete__actions .dsrc-translate__btn {
326
+ padding: var(--dsrc-spacing-1) var(--dsrc-spacing-1);
327
+ }
328
+
329
+ .dsrc-entete__actions .dsrc-translate__separator {
330
+ padding: 0 2px;
331
+ }
332
+
333
+ /* Dropdown panel: full width in narrow contexts */
334
+ .dsrc-translate--dropdown .dsrc-translate__panel {
335
+ right: 0;
336
+ left: auto;
337
+ min-width: 140px;
338
+ }
339
+ }
340
+
341
+
342
+ /* ==========================================================================
343
+ REDUCED MOTION
344
+ ========================================================================== */
345
+
346
+ @media (prefers-reduced-motion: reduce) {
347
+ .dsrc-translate__btn,
348
+ .dsrc-translate__trigger,
349
+ .dsrc-translate__option {
350
+ transition: none;
351
+ }
352
+
353
+ .dsrc-translate__chevron {
354
+ transition: none;
355
+ }
356
+ }
@@ -0,0 +1,185 @@
1
+ /**
2
+ * DSRC Upload Component
3
+ *
4
+ * Usage:
5
+ * <div class="dsrc-upload">
6
+ * <label class="dsrc-upload__label" for="file">
7
+ * <span class="dsrc-upload__icon">&#x1F4CE;</span>
8
+ * <span class="dsrc-upload__text">Glissez un fichier ou cliquez</span>
9
+ * <span class="dsrc-upload__hint">PDF, JPG — 10 Mo max</span>
10
+ * </label>
11
+ * <input type="file" id="file" class="dsrc-upload__input">
12
+ * </div>
13
+ */
14
+
15
+ .dsrc-upload {
16
+ margin-bottom: var(--dsrc-spacing-4);
17
+ }
18
+
19
+ .dsrc-upload__label {
20
+ display: flex;
21
+ flex-direction: column;
22
+ align-items: center;
23
+ justify-content: center;
24
+ gap: var(--dsrc-spacing-2);
25
+ padding: var(--dsrc-spacing-6) var(--dsrc-spacing-4);
26
+ border: 2px dashed var(--dsrc-color-gris-200);
27
+ border-radius: var(--dsrc-radius-default);
28
+ background-color: var(--dsrc-color-gris-50);
29
+ cursor: pointer;
30
+ text-align: center;
31
+ transition: border-color var(--dsrc-transition-duration-fast) ease, background-color var(--dsrc-transition-duration-fast) ease;
32
+ }
33
+
34
+ .dsrc-upload__label:hover {
35
+ border-color: var(--dsrc-color-primaire);
36
+ background-color: var(--dsrc-color-primaire-clair);
37
+ }
38
+
39
+ .dsrc-upload__input {
40
+ position: absolute;
41
+ width: 1px;
42
+ height: 1px;
43
+ overflow: hidden;
44
+ clip: rect(0, 0, 0, 0);
45
+ white-space: nowrap;
46
+ border: 0;
47
+ }
48
+
49
+ .dsrc-upload__input:focus-visible + .dsrc-upload__label,
50
+ .dsrc-upload__input:focus + .dsrc-upload__label {
51
+ outline: var(--dsrc-outline-width) solid var(--dsrc-color-primaire-focus);
52
+ outline-offset: var(--dsrc-outline-offset);
53
+ }
54
+
55
+ .dsrc-upload__icon {
56
+ font-size: var(--dsrc-font-size-h2);
57
+ }
58
+
59
+ .dsrc-upload__text {
60
+ font-family: var(--dsrc-font-family-sans);
61
+ font-size: var(--dsrc-font-size-small);
62
+ font-weight: var(--dsrc-font-weight-medium);
63
+ color: var(--dsrc-color-primaire);
64
+ }
65
+
66
+ .dsrc-upload__hint {
67
+ font-family: var(--dsrc-font-family-sans);
68
+ font-size: var(--dsrc-font-size-caption);
69
+ color: var(--dsrc-color-gris-600);
70
+ }
71
+
72
+ .dsrc-upload--dragging .dsrc-upload__label {
73
+ border-color: var(--dsrc-color-primaire);
74
+ background-color: var(--dsrc-color-primaire-clair);
75
+ }
76
+
77
+ .dsrc-upload--error .dsrc-upload__label {
78
+ border-color: var(--dsrc-color-erreur-bordure);
79
+ }
80
+
81
+ .dsrc-upload--disabled .dsrc-upload__label {
82
+ opacity: 0.5;
83
+ cursor: not-allowed;
84
+ }
85
+
86
+ .dsrc-upload__files {
87
+ display: flex;
88
+ flex-direction: column;
89
+ gap: var(--dsrc-spacing-2);
90
+ margin-top: var(--dsrc-spacing-3);
91
+ }
92
+
93
+ .dsrc-upload__file {
94
+ display: flex;
95
+ align-items: center;
96
+ justify-content: space-between;
97
+ padding: var(--dsrc-spacing-2) var(--dsrc-spacing-3);
98
+ background-color: var(--dsrc-color-gris-50);
99
+ border-radius: var(--dsrc-radius-default);
100
+ font-family: var(--dsrc-font-family-sans);
101
+ font-size: var(--dsrc-font-size-caption);
102
+ }
103
+
104
+ .dsrc-upload__file-remove {
105
+ background: none;
106
+ border: none;
107
+ cursor: pointer;
108
+ color: var(--dsrc-color-erreur-texte);
109
+ font-size: var(--dsrc-font-size-small);
110
+ padding: var(--dsrc-spacing-1);
111
+ }
112
+
113
+ .dsrc-upload__file-remove:hover {
114
+ color: var(--dsrc-color-erreur-bordure);
115
+ }
116
+
117
+ .dsrc-upload__file-remove:focus-visible {
118
+ outline: var(--dsrc-outline-width) solid var(--dsrc-color-primaire-focus);
119
+ outline-offset: var(--dsrc-outline-offset);
120
+ }
121
+
122
+ .dsrc-upload__file-remove:active {
123
+ opacity: 0.8;
124
+ }
125
+
126
+
127
+ /* ============================================
128
+ * High contrast (forced-colors)
129
+ * ============================================ */
130
+
131
+ @media (forced-colors: active) {
132
+ .dsrc-upload__label {
133
+ border: 2px dashed ButtonText;
134
+ }
135
+
136
+ .dsrc-upload--dragging .dsrc-upload__label {
137
+ border-color: Highlight;
138
+ }
139
+
140
+ .dsrc-upload--error .dsrc-upload__label {
141
+ border-color: LinkText;
142
+ }
143
+
144
+ .dsrc-upload--disabled .dsrc-upload__label {
145
+ border-color: GrayText;
146
+ color: GrayText;
147
+ opacity: 1;
148
+ }
149
+
150
+ .dsrc-upload__file-remove:focus-visible {
151
+ outline: 2px solid Highlight;
152
+ }
153
+ }
154
+
155
+
156
+ /* ============================================
157
+ * Upload progress bar
158
+ *
159
+ * <div class="dsrc-upload__progress">
160
+ * <div class="dsrc-upload__progress-bar" style="width: 60%"
161
+ * role="progressbar" aria-valuenow="60"
162
+ * aria-valuemin="0" aria-valuemax="100">
163
+ * </div>
164
+ * </div>
165
+ * ============================================ */
166
+
167
+ .dsrc-upload__progress {
168
+ width: 100%;
169
+ height: 4px;
170
+ background-color: var(--dsrc-color-gris-200);
171
+ border-radius: 2px;
172
+ overflow: hidden;
173
+ margin-top: var(--dsrc-spacing-2);
174
+ }
175
+
176
+ .dsrc-upload__progress-bar {
177
+ height: 100%;
178
+ background-color: var(--dsrc-color-primaire);
179
+ border-radius: 2px;
180
+ transition: width var(--dsrc-transition-duration-normal) ease;
181
+ }
182
+
183
+ .dsrc-upload--error .dsrc-upload__progress-bar {
184
+ background-color: var(--dsrc-color-erreur-bordure);
185
+ }
package/src/index.css ADDED
@@ -0,0 +1,77 @@
1
+ /**
2
+ * DSRC - Design Systeme de la Republique du Cameroun
3
+ * @version 0.2.0
4
+ * @license MIT
5
+ *
6
+ * Paix, Travail, Patrie
7
+ */
8
+
9
+ /* Tokens */
10
+ @import '@dsrc/tokens/css';
11
+
12
+ /* Base reset */
13
+ @import './base/reset.css';
14
+
15
+ /* Print stylesheet */
16
+ @import './base/print.css';
17
+
18
+ /* Layout components */
19
+ @import './layout/grid/grid.css';
20
+ @import './layout/bandeau/bandeau.css';
21
+ @import './layout/entete/entete.css';
22
+ @import './layout/navigation/navigation.css';
23
+ @import './layout/hero/hero.css';
24
+ @import './layout/main/main.css';
25
+ @import './layout/footer/footer.css';
26
+
27
+ /* Core components */
28
+ @import './components/button/button.css';
29
+ @import './components/badge/badge.css';
30
+ @import './components/alert/alert.css';
31
+ @import './components/input/input.css';
32
+ @import './components/label/label.css';
33
+ @import './components/card/card.css';
34
+ @import './components/link/link.css';
35
+ @import './components/tile/tile.css';
36
+ @import './components/notice/notice.css';
37
+ @import './components/breadcrumb/breadcrumb.css';
38
+ @import './components/table/table.css';
39
+ @import './components/accordion/accordion.css';
40
+ @import './components/search/search.css';
41
+ @import './components/select/select.css';
42
+ @import './components/upload/upload.css';
43
+ @import './components/pagination/pagination.css';
44
+ @import './components/spinner/spinner.css';
45
+ @import './components/logo/logo.css';
46
+ @import './components/download/download.css';
47
+
48
+ /* Form components */
49
+ @import './components/checkbox/checkbox.css';
50
+ @import './components/radio/radio.css';
51
+ @import './components/toggle/toggle.css';
52
+ @import './components/password/password.css';
53
+ @import './components/range/range.css';
54
+
55
+ /* Content components */
56
+ @import './components/tag/tag.css';
57
+ @import './components/callout/callout.css';
58
+ @import './components/highlight/highlight.css';
59
+ @import './components/quote/quote.css';
60
+ @import './components/tab/tab.css';
61
+
62
+ /* Navigation components */
63
+ @import './components/stepper/stepper.css';
64
+ @import './components/sidemenu/sidemenu.css';
65
+ @import './components/summary/summary.css';
66
+
67
+ /* Overlay components */
68
+ @import './components/modal/modal.css';
69
+ @import './components/tooltip/tooltip.css';
70
+ @import './components/consent/consent.css';
71
+ @import './components/dropdown/dropdown.css';
72
+
73
+ /* Header utilities */
74
+ @import './components/translate/translate.css';
75
+
76
+ /* Utility classes (loaded last for highest cascade priority) */
77
+ @import './utilities/utilities.css';
@@ -0,0 +1,44 @@
1
+ /**
2
+ * DSRC Bandeau Component
3
+ *
4
+ * Usage:
5
+ * <div class="dsrc-bandeau">
6
+ * Republique du Cameroun - Paix, Travail, Patrie
7
+ * </div>
8
+ */
9
+
10
+ .dsrc-bandeau {
11
+ background-color: var(--dsrc-color-primaire);
12
+ color: rgba(255, 255, 255, 0.85);
13
+ font-family: var(--dsrc-font-family-sans);
14
+ font-size: var(--dsrc-font-size-micro);
15
+ text-align: center;
16
+ padding: var(--dsrc-spacing-2) var(--dsrc-spacing-5);
17
+ letter-spacing: var(--dsrc-font-letter-spacing-wide);
18
+ }
19
+
20
+ /* Tricolore variant - decorative stripe */
21
+ .dsrc-tricolore {
22
+ display: flex;
23
+ height: var(--dsrc-spacing-1);
24
+ opacity: 0.25;
25
+ border-radius: var(--dsrc-radius-small);
26
+ overflow: hidden;
27
+ max-width: var(--dsrc-layout-max-width);
28
+ margin: 0 auto var(--dsrc-spacing-6);
29
+ }
30
+
31
+ .dsrc-tricolore__vert {
32
+ flex: 1;
33
+ background-color: var(--dsrc-color-drapeau-vert);
34
+ }
35
+
36
+ .dsrc-tricolore__rouge {
37
+ flex: 1;
38
+ background-color: var(--dsrc-color-drapeau-rouge);
39
+ }
40
+
41
+ .dsrc-tricolore__jaune {
42
+ flex: 1;
43
+ background-color: var(--dsrc-color-drapeau-jaune);
44
+ }