@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,229 @@
1
+ /**
2
+ * DSRC Toggle (Switch) Component
3
+ *
4
+ * On/off switch styled from a native checkbox for full accessibility.
5
+ * The circle slides via translateX on :checked.
6
+ *
7
+ * Variants:
8
+ * --label-left ...... Label on left, switch on right
9
+ * --border-bottom ... Bottom border separator
10
+ *
11
+ * Usage:
12
+ * <div class="dsrc-toggle">
13
+ * <input type="checkbox" id="t1" class="dsrc-toggle__input">
14
+ * <label for="t1" class="dsrc-toggle__label"
15
+ * data-checked="Activé" data-unchecked="Désactivé">
16
+ * Notifications
17
+ * </label>
18
+ * </div>
19
+ */
20
+
21
+
22
+ /* ============================================
23
+ * 1. Base toggle
24
+ * ============================================ */
25
+
26
+ .dsrc-toggle {
27
+ position: relative;
28
+ display: flex;
29
+ flex-wrap: wrap;
30
+ align-items: center;
31
+ padding: var(--dsrc-spacing-3) 0;
32
+ }
33
+
34
+ .dsrc-toggle__input {
35
+ position: absolute;
36
+ opacity: 0;
37
+ width: 40px;
38
+ height: 24px;
39
+ margin: 0;
40
+ cursor: pointer;
41
+ z-index: 1;
42
+ }
43
+
44
+ .dsrc-toggle__label {
45
+ display: flex;
46
+ align-items: center;
47
+ gap: var(--dsrc-spacing-3);
48
+ padding-left: 56px;
49
+ font-family: var(--dsrc-font-family-sans);
50
+ font-size: var(--dsrc-font-size-body);
51
+ line-height: 1.5;
52
+ color: var(--dsrc-color-noir);
53
+ cursor: pointer;
54
+ position: relative;
55
+ }
56
+
57
+
58
+ /* ============================================
59
+ * 2. Switch track (label::before)
60
+ * ============================================ */
61
+
62
+ .dsrc-toggle__label::before {
63
+ content: '';
64
+ position: absolute;
65
+ top: 50%;
66
+ left: 0;
67
+ transform: translateY(-50%);
68
+ width: 40px;
69
+ height: 24px;
70
+ border-radius: 12px;
71
+ background-color: var(--dsrc-color-gris-400);
72
+ transition: background-color 0.2s;
73
+ }
74
+
75
+
76
+ /* ============================================
77
+ * 3. Switch thumb (label::after)
78
+ * ============================================ */
79
+
80
+ .dsrc-toggle__label::after {
81
+ content: '';
82
+ position: absolute;
83
+ top: 50%;
84
+ left: 2px;
85
+ transform: translateY(-50%);
86
+ width: 20px;
87
+ height: 20px;
88
+ border-radius: 50%;
89
+ background-color: var(--dsrc-color-blanc);
90
+ box-shadow: var(--dsrc-shadow-sm);
91
+ transition: transform 0.2s, left 0.2s;
92
+ }
93
+
94
+
95
+ /* ============================================
96
+ * 4. Status text
97
+ * ============================================ */
98
+
99
+ .dsrc-toggle__label .dsrc-toggle__status {
100
+ font-size: var(--dsrc-font-size-caption);
101
+ color: var(--dsrc-color-gris-600);
102
+ }
103
+
104
+
105
+ /* ============================================
106
+ * 5. Checked state
107
+ * ============================================ */
108
+
109
+ .dsrc-toggle__input:checked + .dsrc-toggle__label::before {
110
+ background-color: var(--dsrc-color-primaire);
111
+ }
112
+
113
+ .dsrc-toggle__input:checked + .dsrc-toggle__label::after {
114
+ left: 18px;
115
+ }
116
+
117
+
118
+ /* ============================================
119
+ * 6. Focus & hover
120
+ * ============================================ */
121
+
122
+ .dsrc-toggle__input:focus-visible + .dsrc-toggle__label::before {
123
+ outline: 2px solid var(--dsrc-color-primaire);
124
+ outline-offset: 2px;
125
+ }
126
+
127
+ .dsrc-toggle__input:not(:disabled):hover + .dsrc-toggle__label::before {
128
+ background-color: var(--dsrc-color-gris-600);
129
+ }
130
+
131
+ .dsrc-toggle__input:not(:disabled):checked:hover + .dsrc-toggle__label::before {
132
+ background-color: var(--dsrc-color-primaire-hover);
133
+ }
134
+
135
+
136
+ /* ============================================
137
+ * 7. Disabled
138
+ * ============================================ */
139
+
140
+ .dsrc-toggle__input:disabled + .dsrc-toggle__label {
141
+ color: var(--dsrc-color-gris-400);
142
+ cursor: not-allowed;
143
+ }
144
+
145
+ .dsrc-toggle__input:disabled + .dsrc-toggle__label::before {
146
+ background-color: var(--dsrc-color-gris-200);
147
+ }
148
+
149
+ .dsrc-toggle__input:disabled + .dsrc-toggle__label::after {
150
+ background-color: var(--dsrc-color-gris-100);
151
+ box-shadow: none;
152
+ }
153
+
154
+
155
+ /* ============================================
156
+ * 8. Variant: label-left (switch on right)
157
+ * ============================================ */
158
+
159
+ .dsrc-toggle--label-left .dsrc-toggle__label {
160
+ padding-left: 0;
161
+ padding-right: 56px;
162
+ }
163
+
164
+ .dsrc-toggle--label-left .dsrc-toggle__label::before {
165
+ left: auto;
166
+ right: 0;
167
+ }
168
+
169
+ .dsrc-toggle--label-left .dsrc-toggle__label::after {
170
+ left: auto;
171
+ right: 18px;
172
+ }
173
+
174
+ .dsrc-toggle--label-left .dsrc-toggle__input:checked + .dsrc-toggle__label::after {
175
+ right: 2px;
176
+ }
177
+
178
+
179
+ /* ============================================
180
+ * 9. Variant: border-bottom
181
+ * ============================================ */
182
+
183
+ .dsrc-toggle--border-bottom {
184
+ border-bottom: 1px solid var(--dsrc-color-gris-200);
185
+ }
186
+
187
+
188
+ /* ============================================
189
+ * 10. High contrast (forced-colors)
190
+ * ============================================ */
191
+
192
+ @media (forced-colors: active) {
193
+ .dsrc-toggle__input {
194
+ opacity: 1;
195
+ }
196
+
197
+ .dsrc-toggle__label::before,
198
+ .dsrc-toggle__label::after {
199
+ display: none;
200
+ }
201
+ }
202
+
203
+
204
+ /* ============================================
205
+ * 11. Reduced motion
206
+ * ============================================ */
207
+
208
+ @media (prefers-reduced-motion: reduce) {
209
+ .dsrc-toggle__label::before,
210
+ .dsrc-toggle__label::after {
211
+ transition: none;
212
+ }
213
+ }
214
+
215
+
216
+ /* ============================================
217
+ * 12. Print
218
+ * ============================================ */
219
+
220
+ @media print {
221
+ .dsrc-toggle__input {
222
+ opacity: 1;
223
+ }
224
+
225
+ .dsrc-toggle__label::before,
226
+ .dsrc-toggle__label::after {
227
+ display: none;
228
+ }
229
+ }
@@ -0,0 +1,158 @@
1
+ /**
2
+ * DSRC Tooltip Component
3
+ *
4
+ * Lightweight popup positioned near a trigger element.
5
+ * Position controlled via [data-placement] attribute.
6
+ *
7
+ * Usage:
8
+ * <span class="dsrc-tooltip dsrc-tooltip--shown"
9
+ * data-placement="top"
10
+ * role="tooltip" id="tip1">
11
+ * Texte d'aide contextuelle
12
+ * </span>
13
+ */
14
+
15
+
16
+ /* ============================================
17
+ * 1. Base tooltip
18
+ * ============================================ */
19
+
20
+ .dsrc-tooltip {
21
+ --arrow-x: 0;
22
+ display: none;
23
+ position: absolute;
24
+ z-index: var(--dsrc-z-index-tooltip, 1100);
25
+ max-width: 280px;
26
+ padding: var(--dsrc-spacing-2) var(--dsrc-spacing-3);
27
+ font-family: var(--dsrc-font-family-sans);
28
+ font-size: var(--dsrc-font-size-caption);
29
+ line-height: 1.5;
30
+ color: var(--dsrc-color-blanc);
31
+ background-color: var(--dsrc-color-noir);
32
+ border-radius: var(--dsrc-radius-small);
33
+ white-space: normal;
34
+ text-align: left;
35
+ opacity: 0;
36
+ visibility: hidden;
37
+ transition: opacity 0.15s, visibility 0.15s;
38
+ }
39
+
40
+
41
+ /* ============================================
42
+ * 2. Shown state
43
+ * ============================================ */
44
+
45
+ .dsrc-tooltip--shown {
46
+ display: block;
47
+ opacity: 1;
48
+ visibility: visible;
49
+ }
50
+
51
+
52
+ /* ============================================
53
+ * 3. Arrow
54
+ * ============================================ */
55
+
56
+ .dsrc-tooltip::after {
57
+ content: '';
58
+ position: absolute;
59
+ width: 8px;
60
+ height: 8px;
61
+ background-color: var(--dsrc-color-noir);
62
+ transform: rotate(45deg);
63
+ }
64
+
65
+
66
+ /* ============================================
67
+ * 4. Placement: top (default)
68
+ * ============================================ */
69
+
70
+ .dsrc-tooltip[data-placement="top"] {
71
+ margin-bottom: var(--dsrc-spacing-2);
72
+ }
73
+
74
+ .dsrc-tooltip[data-placement="top"]::after {
75
+ bottom: -4px;
76
+ left: calc(50% + var(--arrow-x) - 4px);
77
+ }
78
+
79
+
80
+ /* ============================================
81
+ * 5. Placement: bottom
82
+ * ============================================ */
83
+
84
+ .dsrc-tooltip[data-placement="bottom"] {
85
+ margin-top: var(--dsrc-spacing-2);
86
+ }
87
+
88
+ .dsrc-tooltip[data-placement="bottom"]::after {
89
+ top: -4px;
90
+ left: calc(50% + var(--arrow-x) - 4px);
91
+ }
92
+
93
+
94
+ /* ============================================
95
+ * 6. Placement: left
96
+ * ============================================ */
97
+
98
+ .dsrc-tooltip[data-placement="left"] {
99
+ margin-right: var(--dsrc-spacing-2);
100
+ }
101
+
102
+ .dsrc-tooltip[data-placement="left"]::after {
103
+ right: -4px;
104
+ top: calc(50% - 4px);
105
+ }
106
+
107
+
108
+ /* ============================================
109
+ * 7. Placement: right
110
+ * ============================================ */
111
+
112
+ .dsrc-tooltip[data-placement="right"] {
113
+ margin-left: var(--dsrc-spacing-2);
114
+ }
115
+
116
+ .dsrc-tooltip[data-placement="right"]::after {
117
+ left: -4px;
118
+ top: calc(50% - 4px);
119
+ }
120
+
121
+
122
+ /* ============================================
123
+ * 8. High contrast (forced-colors)
124
+ * ============================================ */
125
+
126
+ @media (forced-colors: active) {
127
+ .dsrc-tooltip {
128
+ outline: 1px solid ButtonText;
129
+ background-color: Canvas;
130
+ color: CanvasText;
131
+ }
132
+
133
+ .dsrc-tooltip::after {
134
+ display: none;
135
+ }
136
+ }
137
+
138
+
139
+ /* ============================================
140
+ * 9. Reduced motion
141
+ * ============================================ */
142
+
143
+ @media (prefers-reduced-motion: reduce) {
144
+ .dsrc-tooltip {
145
+ transition: none;
146
+ }
147
+ }
148
+
149
+
150
+ /* ============================================
151
+ * 10. Print
152
+ * ============================================ */
153
+
154
+ @media print {
155
+ .dsrc-tooltip {
156
+ display: none;
157
+ }
158
+ }