@undrr/undrr-mangrove 1.3.1 → 1.3.3
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.
- package/README.md +4 -4
- package/components/BarChart.js +1 -1
- package/components/Fetcher.js +1 -1
- package/components/Gallery.js +2 -2
- package/components/IconCard.js +2 -2
- package/components/IconCard.js.LICENSE.txt +1 -1
- package/components/MapComponent.js +2 -2
- package/components/MegaMenu.js +2 -2
- package/components/Pager.js +1 -1
- package/components/QuoteHighlight.js +2 -2
- package/components/ScrollContainer.js +2 -2
- package/components/ShareButtons.js +2 -2
- package/components/StatsCard.js +2 -2
- package/components/SyndicationSearchWidget.js +2 -2
- package/components/hydrate.js +5 -0
- package/css/style-gutenberg.css +11 -2
- package/css/style-gutenberg.css.map +1 -1
- package/css/style-irp.css +30 -71
- package/css/style-irp.css.map +1 -1
- package/css/style-mcr.css +30 -71
- package/css/style-mcr.css.map +1 -1
- package/css/style-preventionweb.css +30 -71
- package/css/style-preventionweb.css.map +1 -1
- package/css/style.css +30 -71
- package/css/style.css.map +1 -1
- package/error-pages/401.html +1 -1
- package/error-pages/403.html +1 -1
- package/error-pages/404.html +1 -1
- package/error-pages/429.html +1 -1
- package/error-pages/500.html +1 -1
- package/error-pages/502.html +1 -1
- package/error-pages/503.html +1 -1
- package/error-pages/504.html +1 -1
- package/error-pages/5xx.html +1 -1
- package/error-pages/challenge.html +1 -1
- package/error-pages/managed-challenge.html +1 -1
- package/js/show-more.js +15 -9
- package/js/tabs.js +0 -7
- package/package.json +1 -1
- package/scss/Atom/Tag/tag.scss +115 -0
- package/scss/Components/Boilerplate/boilerplate.scss +15 -0
- package/scss/Components/Cards/Card/card.scss +88 -23
- package/scss/Components/Cards/StatsCard/stats-card.scss +1 -1
- package/scss/Components/Footer/footer.scss +20 -3
- package/scss/Components/Forms/Checkbox/checkbox.scss +2 -22
- package/scss/Components/Forms/FormGroup/form-group.scss +24 -0
- package/scss/Components/Forms/InputFields/input-fields.scss +7 -177
- package/scss/Components/Forms/Radio/radio.scss +2 -13
- package/scss/Components/Forms/Select/select.scss +6 -15
- package/scss/Components/Forms/TextInput/text-input.scss +13 -0
- package/scss/Components/Forms/Textarea/textarea.scss +2 -0
- package/scss/Components/Forms/_form-base.scss +324 -0
- package/scss/Components/Forms/_form-legacy.scss +153 -0
- package/scss/Components/Hero/hero.scss +1 -1
- package/scss/Components/HighlightBox/highlight-box.scss +0 -9
- package/scss/Components/MegaMenu/megamenu.scss +75 -1
- package/scss/Components/PageHeader/page-header.scss +1 -1
- package/scss/Components/SyndicationSearchWidget/SyndicationSearchWidget.scss +49 -1
- package/scss/Utilities/EmbedContainer/embed-container.scss +58 -0
- package/scss/Utilities/ShowMore/ShowMore.scss +8 -17
- package/scss/assets/scss/_components.scss +7 -10
- package/scss/assets/scss/_mixins.scss +4 -68
- package/scss/assets/scss/_utility.scss +87 -0
- package/scss/assets/scss/_variables-irp.scss +12 -3
- package/scss/assets/scss/_variables-mcr.scss +12 -3
- package/scss/assets/scss/_variables-preventionweb.scss +10 -2
- package/scss/assets/scss/_variables.scss +37 -10
- package/scss/Atom/Navigation/LanguageSwitcherRow/language-switcher-row.scss +0 -12
- package/scss/Atom/Navigation/ProgressBarNavigation/progress-bar-navigation.scss +0 -70
- package/scss/Atom/Navigation/SidebarFirstLevel/sidebar-first-level.scss +0 -26
- package/scss/Components/Accordion/accordion.scss +0 -119
- package/scss/Components/Forms/Dropdowns/CustomSelect/custom-select.scss +0 -110
- package/scss/Components/Forms/Dropdowns/Multiselect/multi-select.scss +0 -228
- package/scss/Components/LanguageSwitcher/language-switcher.scss +0 -162
- package/scss/Components/Sidebar/sidebar.scss +0 -236
- package/scss/Molecules/SidebarData/sidebar-data.scss +0 -44
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
// Shared BEM-scoped form styles for Mangrove form components.
|
|
2
|
+
// All form components import this partial for consistent base styling.
|
|
3
|
+
|
|
4
|
+
// -----------------------------------------------------------------------------
|
|
5
|
+
// Field wrapper
|
|
6
|
+
// -----------------------------------------------------------------------------
|
|
7
|
+
.mg-form-field {
|
|
8
|
+
display: block;
|
|
9
|
+
margin-bottom: $mg-spacing-100;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// -----------------------------------------------------------------------------
|
|
13
|
+
// Label
|
|
14
|
+
// -----------------------------------------------------------------------------
|
|
15
|
+
.mg-form-label {
|
|
16
|
+
display: block;
|
|
17
|
+
font-size: $mg-font-size-300;
|
|
18
|
+
|
|
19
|
+
&--disabled {
|
|
20
|
+
color: $mg-color-neutral-400;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
&--required::after {
|
|
24
|
+
color: $mg-color-red-900;
|
|
25
|
+
content: " *";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// -----------------------------------------------------------------------------
|
|
30
|
+
// Text input
|
|
31
|
+
// -----------------------------------------------------------------------------
|
|
32
|
+
%mg-form-input-base {
|
|
33
|
+
@extend %background-white;
|
|
34
|
+
|
|
35
|
+
appearance: none;
|
|
36
|
+
border: 2px solid $mg-color-black;
|
|
37
|
+
border-radius: $mg-radius-form-input;
|
|
38
|
+
box-sizing: border-box;
|
|
39
|
+
display: block;
|
|
40
|
+
font-family: $mg-font-family;
|
|
41
|
+
font-size: $mg-font-size-300;
|
|
42
|
+
height: 46px;
|
|
43
|
+
margin-top: $mg-spacing-25;
|
|
44
|
+
padding: 0.625rem;
|
|
45
|
+
width: 100%;
|
|
46
|
+
|
|
47
|
+
&::placeholder {
|
|
48
|
+
color: $mg-color-neutral-500;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&:focus-visible {
|
|
52
|
+
box-shadow: 0 0 4px $mg-color-form-focus;
|
|
53
|
+
outline: 0;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.mg-form-input {
|
|
58
|
+
@extend %mg-form-input-base;
|
|
59
|
+
|
|
60
|
+
&--disabled {
|
|
61
|
+
background-color: $mg-color-white;
|
|
62
|
+
border-color: $mg-color-neutral-400;
|
|
63
|
+
color: $mg-color-neutral-400;
|
|
64
|
+
|
|
65
|
+
&::placeholder {
|
|
66
|
+
color: $mg-color-neutral-400;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
&--error {
|
|
71
|
+
border-color: $mg-color-red-900;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// -----------------------------------------------------------------------------
|
|
76
|
+
// Textarea
|
|
77
|
+
// -----------------------------------------------------------------------------
|
|
78
|
+
.mg-form-textarea {
|
|
79
|
+
@extend %mg-form-input-base;
|
|
80
|
+
|
|
81
|
+
height: auto;
|
|
82
|
+
max-width: 100%;
|
|
83
|
+
resize: vertical;
|
|
84
|
+
|
|
85
|
+
&--disabled {
|
|
86
|
+
background-color: $mg-color-white;
|
|
87
|
+
border-color: $mg-color-neutral-400;
|
|
88
|
+
color: $mg-color-neutral-400;
|
|
89
|
+
|
|
90
|
+
&::placeholder {
|
|
91
|
+
color: $mg-color-neutral-400;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
&--error {
|
|
96
|
+
border-color: $mg-color-red-900;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// -----------------------------------------------------------------------------
|
|
101
|
+
// Select
|
|
102
|
+
// -----------------------------------------------------------------------------
|
|
103
|
+
.mg-form-select {
|
|
104
|
+
@extend %background-white;
|
|
105
|
+
|
|
106
|
+
appearance: none;
|
|
107
|
+
border: 2px solid $mg-color-black;
|
|
108
|
+
border-radius: $mg-radius-form-input;
|
|
109
|
+
box-sizing: border-box;
|
|
110
|
+
cursor: pointer;
|
|
111
|
+
display: block;
|
|
112
|
+
font-family: $mg-font-family;
|
|
113
|
+
font-size: $mg-font-size-300;
|
|
114
|
+
height: 46px;
|
|
115
|
+
margin-top: $mg-spacing-25;
|
|
116
|
+
padding: 0.625rem;
|
|
117
|
+
padding-right: $mg-spacing-200;
|
|
118
|
+
width: 100%;
|
|
119
|
+
|
|
120
|
+
// Custom dropdown arrow
|
|
121
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%231a1a1a' d='M1.41 0L6 4.58 10.59 0 12 1.41l-6 6-6-6z'/%3E%3C/svg%3E");
|
|
122
|
+
background-position: right 0.625rem center;
|
|
123
|
+
background-repeat: no-repeat;
|
|
124
|
+
|
|
125
|
+
&:focus-visible {
|
|
126
|
+
box-shadow: 0 0 4px $mg-color-form-focus;
|
|
127
|
+
outline: 0;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
&--disabled {
|
|
131
|
+
background-color: $mg-color-white;
|
|
132
|
+
border-color: $mg-color-neutral-400;
|
|
133
|
+
color: $mg-color-neutral-400;
|
|
134
|
+
cursor: default;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
&--error {
|
|
138
|
+
border-color: $mg-color-red-900;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// -----------------------------------------------------------------------------
|
|
143
|
+
// Checkbox / Radio shared (check group)
|
|
144
|
+
// -----------------------------------------------------------------------------
|
|
145
|
+
.mg-form-check {
|
|
146
|
+
align-items: center;
|
|
147
|
+
display: flex;
|
|
148
|
+
position: relative;
|
|
149
|
+
|
|
150
|
+
// Base input (shared between checkbox and radio)
|
|
151
|
+
&__input {
|
|
152
|
+
appearance: none;
|
|
153
|
+
border: 2px solid $mg-color-form-check;
|
|
154
|
+
cursor: pointer;
|
|
155
|
+
height: 16px;
|
|
156
|
+
margin: 0;
|
|
157
|
+
width: 16px;
|
|
158
|
+
|
|
159
|
+
&:hover {
|
|
160
|
+
border-color: $mg-color-form-check--hover;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
&:focus-visible {
|
|
164
|
+
box-shadow: 0 0 4px $mg-color-form-focus;
|
|
165
|
+
outline: 0;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
&--checkbox {
|
|
169
|
+
border-radius: 0;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
&--radio {
|
|
173
|
+
background-color: transparent;
|
|
174
|
+
border-radius: 100%;
|
|
175
|
+
box-shadow: inset 0 0 0 $mg-color-white;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
&--disabled {
|
|
179
|
+
border-color: $mg-color-neutral-400;
|
|
180
|
+
cursor: default;
|
|
181
|
+
|
|
182
|
+
&:hover {
|
|
183
|
+
border-color: $mg-color-neutral-400;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
&--error {
|
|
188
|
+
border-color: $mg-color-red-900;
|
|
189
|
+
|
|
190
|
+
&:hover {
|
|
191
|
+
border-color: $mg-color-red-900;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Label next to checkbox/radio
|
|
197
|
+
&__label {
|
|
198
|
+
cursor: pointer;
|
|
199
|
+
font-size: $mg-font-size-300;
|
|
200
|
+
padding: 0 7px;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Checked states (must be outside BEM nesting for specificity)
|
|
205
|
+
.mg-form-check__input--checkbox:checked {
|
|
206
|
+
background-color: $mg-color-form-check--checked;
|
|
207
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' d='M3.5 8l3 3 6-6'/%3E%3C/svg%3E");
|
|
208
|
+
border-color: $mg-color-form-check--checked;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.mg-form-check__input--radio:checked {
|
|
212
|
+
background-color: $mg-color-form-check--checked;
|
|
213
|
+
box-shadow: inset 0 0 0 3px $mg-color-white;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// -----------------------------------------------------------------------------
|
|
217
|
+
// Help text
|
|
218
|
+
// -----------------------------------------------------------------------------
|
|
219
|
+
.mg-form-help {
|
|
220
|
+
color: $mg-color-neutral-500;
|
|
221
|
+
font-size: $mg-font-size-200;
|
|
222
|
+
margin-bottom: 0;
|
|
223
|
+
margin-top: $mg-spacing-25;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// -----------------------------------------------------------------------------
|
|
227
|
+
// Error text
|
|
228
|
+
// -----------------------------------------------------------------------------
|
|
229
|
+
.mg-form-error {
|
|
230
|
+
color: $mg-color-red-900;
|
|
231
|
+
font-size: $mg-font-size-300;
|
|
232
|
+
margin-bottom: 0;
|
|
233
|
+
margin-top: $mg-spacing-25;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// -----------------------------------------------------------------------------
|
|
237
|
+
// Form error summary
|
|
238
|
+
// -----------------------------------------------------------------------------
|
|
239
|
+
.mg-form-error-summary {
|
|
240
|
+
background-color: $mg-color-red-50;
|
|
241
|
+
border-left: 4px solid $mg-color-red-900;
|
|
242
|
+
margin-bottom: $mg-spacing-200;
|
|
243
|
+
padding: $mg-spacing-150;
|
|
244
|
+
|
|
245
|
+
&:focus {
|
|
246
|
+
outline: 3px solid $mg-color-blue-800;
|
|
247
|
+
outline-offset: 0;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
&__title {
|
|
251
|
+
color: $mg-color-red-900;
|
|
252
|
+
font-size: $mg-font-size-300;
|
|
253
|
+
font-weight: 700;
|
|
254
|
+
margin-bottom: $mg-spacing-75;
|
|
255
|
+
margin-top: 0;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
&__list {
|
|
259
|
+
margin: 0;
|
|
260
|
+
padding-left: $mg-spacing-100;
|
|
261
|
+
|
|
262
|
+
li {
|
|
263
|
+
margin-bottom: $mg-spacing-50;
|
|
264
|
+
|
|
265
|
+
&:last-child {
|
|
266
|
+
margin-bottom: 0;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
a {
|
|
271
|
+
color: $mg-color-red-900;
|
|
272
|
+
font-weight: 600;
|
|
273
|
+
text-decoration: underline;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// -----------------------------------------------------------------------------
|
|
279
|
+
// Screen-reader-only utility
|
|
280
|
+
// -----------------------------------------------------------------------------
|
|
281
|
+
.mg-u-sr-only {
|
|
282
|
+
border: 0;
|
|
283
|
+
clip-path: inset(50%);
|
|
284
|
+
height: 1px;
|
|
285
|
+
margin: -1px;
|
|
286
|
+
overflow: hidden;
|
|
287
|
+
padding: 0;
|
|
288
|
+
position: absolute;
|
|
289
|
+
white-space: nowrap;
|
|
290
|
+
width: 1px;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// -----------------------------------------------------------------------------
|
|
294
|
+
// RTL overrides
|
|
295
|
+
// -----------------------------------------------------------------------------
|
|
296
|
+
[dir="rtl"] {
|
|
297
|
+
.mg-form-select {
|
|
298
|
+
background-position: left 0.625rem center;
|
|
299
|
+
padding-left: $mg-spacing-200;
|
|
300
|
+
padding-right: 0.625rem;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.mg-form-input[type="date"]::-webkit-calendar-picker-indicator {
|
|
304
|
+
left: inherit;
|
|
305
|
+
position: absolute;
|
|
306
|
+
right: 27px;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.mg-form-input[type="date"]::-webkit-date-and-time-value {
|
|
310
|
+
margin-right: 0;
|
|
311
|
+
text-align: right;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// -----------------------------------------------------------------------------
|
|
316
|
+
// Arabic font override
|
|
317
|
+
// -----------------------------------------------------------------------------
|
|
318
|
+
:lang(ar) {
|
|
319
|
+
.mg-form-input,
|
|
320
|
+
.mg-form-textarea,
|
|
321
|
+
.mg-form-select {
|
|
322
|
+
font-family: $mg-font-family-arabic-body;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
// DEPRECATED — February 2026
|
|
2
|
+
// These bare element selectors are provided for backward compatibility only.
|
|
3
|
+
// Migrate to BEM classes (.mg-form-input, .mg-form-label, etc.) from _form-base.scss.
|
|
4
|
+
// Scheduled for removal: August 2026.
|
|
5
|
+
@warn "_form-legacy.scss is deprecated. Migrate to BEM classes from _form-base.scss. Removal: August 2026.";
|
|
6
|
+
|
|
7
|
+
label {
|
|
8
|
+
@extend %paragraph-font-300;
|
|
9
|
+
|
|
10
|
+
display: block;
|
|
11
|
+
|
|
12
|
+
&.error {
|
|
13
|
+
@extend %paragraph-font-300;
|
|
14
|
+
|
|
15
|
+
color: $mg-color-black;
|
|
16
|
+
margin-top: 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
&.disabled {
|
|
20
|
+
color: $mg-color-neutral-400;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.help {
|
|
25
|
+
color: $mg-color-neutral-500;
|
|
26
|
+
display: block;
|
|
27
|
+
font-size: $mg-font-size-200;
|
|
28
|
+
margin-bottom: 0;
|
|
29
|
+
margin-top: $mg-spacing-25;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.error {
|
|
33
|
+
color: $mg-color-red-900;
|
|
34
|
+
font-size: $mg-font-size-300;
|
|
35
|
+
margin-bottom: 0;
|
|
36
|
+
margin-top: $mg-spacing-25;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
input[type="text"],
|
|
40
|
+
input[type="number"],
|
|
41
|
+
input[type="email"],
|
|
42
|
+
input[type="password"],
|
|
43
|
+
input[type="search"],
|
|
44
|
+
input[type="tel"],
|
|
45
|
+
input[type="date"],
|
|
46
|
+
textarea {
|
|
47
|
+
@extend %background-white;
|
|
48
|
+
|
|
49
|
+
appearance: none;
|
|
50
|
+
border: 2px solid $mg-color-black;
|
|
51
|
+
border-radius: 0;
|
|
52
|
+
box-sizing: border-box;
|
|
53
|
+
display: block;
|
|
54
|
+
font-family: $mg-font-family;
|
|
55
|
+
font-size: $mg-font-size-300;
|
|
56
|
+
height: 46px;
|
|
57
|
+
margin-top: $mg-spacing-25;
|
|
58
|
+
padding: 0.625rem;
|
|
59
|
+
width: 100%;
|
|
60
|
+
|
|
61
|
+
&::placeholder {
|
|
62
|
+
color: $mg-color-neutral-500;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
&:focus {
|
|
66
|
+
box-shadow: 0 0 4px $mg-color-blue-800;
|
|
67
|
+
outline: 0;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
input[type="date"],
|
|
71
|
+
input[type="search"] {
|
|
72
|
+
position: relative;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
&.disabled {
|
|
76
|
+
background-color: $mg-color-white;
|
|
77
|
+
border: 2px solid $mg-color-neutral-400;
|
|
78
|
+
color: $mg-color-neutral-400;
|
|
79
|
+
|
|
80
|
+
&::placeholder {
|
|
81
|
+
color: $mg-color-neutral-400;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&.error {
|
|
86
|
+
border: 2px solid $mg-color-red-900;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
input[type="date"] {
|
|
91
|
+
background-color: $mg-color-white;
|
|
92
|
+
color: $mg-color-neutral-500;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.help {
|
|
96
|
+
&.disabled {
|
|
97
|
+
color: $mg-color-neutral-400;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
textarea {
|
|
102
|
+
height: auto;
|
|
103
|
+
max-width: 100%;
|
|
104
|
+
resize: vertical;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
input[type="date"]::-webkit-calendar-picker-indicator {
|
|
108
|
+
appearance: none;
|
|
109
|
+
left: 3px;
|
|
110
|
+
opacity: 0;
|
|
111
|
+
position: absolute;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
[dir="rtl"] {
|
|
115
|
+
input[type="text"],
|
|
116
|
+
input[type="number"],
|
|
117
|
+
input[type="email"],
|
|
118
|
+
input[type="password"],
|
|
119
|
+
input[type="search"],
|
|
120
|
+
input[type="tel"],
|
|
121
|
+
input[type="date"],
|
|
122
|
+
textarea {
|
|
123
|
+
@media (hover: none) and (pointer: coarse) {
|
|
124
|
+
input[type="date"] {
|
|
125
|
+
padding-right: $mg-spacing-100;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
input[type="date"]::-webkit-calendar-picker-indicator {
|
|
131
|
+
left: inherit;
|
|
132
|
+
position: absolute;
|
|
133
|
+
right: 27px;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
input::-webkit-date-and-time-value {
|
|
137
|
+
margin-right: 0;
|
|
138
|
+
text-align: right;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
:lang(ar) {
|
|
143
|
+
input[type="text"],
|
|
144
|
+
input[type="number"],
|
|
145
|
+
input[type="email"],
|
|
146
|
+
input[type="password"],
|
|
147
|
+
input[type="search"],
|
|
148
|
+
input[type="tel"],
|
|
149
|
+
input[type="date"],
|
|
150
|
+
textarea {
|
|
151
|
+
font-family: $mg-font-family-arabic-body;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -12,16 +12,7 @@
|
|
|
12
12
|
width: 100%;
|
|
13
13
|
border: 1px solid rgb(0 0 0 / 0.3);
|
|
14
14
|
|
|
15
|
-
// Responsive embed for iframes inside highlight-box
|
|
16
|
-
&:has(iframe) {
|
|
17
|
-
position: relative;
|
|
18
|
-
max-width: 100%;
|
|
19
|
-
aspect-ratio: 16 / 9;
|
|
20
|
-
height: 100%;
|
|
21
|
-
}
|
|
22
15
|
iframe {
|
|
23
|
-
width: 100%;
|
|
24
|
-
height: 100%;
|
|
25
16
|
border: 0;
|
|
26
17
|
display: block;
|
|
27
18
|
max-width: 100%;
|
|
@@ -24,6 +24,71 @@
|
|
|
24
24
|
overflow-x: hidden; // primarily for mobile
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
// --- Branded variant (with inline logo) ---
|
|
28
|
+
&--branded {
|
|
29
|
+
align-items: center;
|
|
30
|
+
|
|
31
|
+
@media screen and (max-width: $mg-breakpoint-tablet) {
|
|
32
|
+
padding-left: 0; // logo replaces the left padding
|
|
33
|
+
overflow-x: hidden;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Hamburger becomes a discrete button (not full-width overlay)
|
|
37
|
+
.mg-mega-topbar-mobile__icon-button {
|
|
38
|
+
position: relative;
|
|
39
|
+
width: auto;
|
|
40
|
+
margin-inline-start: auto;
|
|
41
|
+
background: $mg-color-white;
|
|
42
|
+
flex-shrink: 0;
|
|
43
|
+
box-shadow: -3px 0 6px -2px rgb(0 0 0 / 0.15);
|
|
44
|
+
|
|
45
|
+
&:has(.mg-icon-angle-circled-left) {
|
|
46
|
+
background: $mg-color-white;
|
|
47
|
+
box-shadow: -3px 0 6px -2px rgb(0 0 0 / 0.15);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Logo link
|
|
53
|
+
&__logo {
|
|
54
|
+
flex-shrink: 1;
|
|
55
|
+
min-width: 0; // allow shrinking below intrinsic size
|
|
56
|
+
display: flex;
|
|
57
|
+
align-items: center;
|
|
58
|
+
padding: $mg-spacing-100 $mg-spacing-150;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Logo image
|
|
62
|
+
&__logo-img {
|
|
63
|
+
display: block;
|
|
64
|
+
height: 3rem;
|
|
65
|
+
max-width: 100%;
|
|
66
|
+
width: auto;
|
|
67
|
+
|
|
68
|
+
@media screen and (min-width: $mg-breakpoint-tablet) {
|
|
69
|
+
height: 3.5rem;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Inner nav list inside branded variant
|
|
74
|
+
&__nav {
|
|
75
|
+
display: flex;
|
|
76
|
+
align-items: flex-start;
|
|
77
|
+
flex: 1;
|
|
78
|
+
padding: 0;
|
|
79
|
+
margin: 0;
|
|
80
|
+
list-style: none;
|
|
81
|
+
|
|
82
|
+
// Hide items on mobile (same as default topbar behavior)
|
|
83
|
+
@media screen and (max-width: $mg-breakpoint-tablet) {
|
|
84
|
+
// Items are there but non-interactive on mobile (hamburger opens sidebar)
|
|
85
|
+
pointer-events: none;
|
|
86
|
+
overflow: hidden;
|
|
87
|
+
flex: 1;
|
|
88
|
+
min-width: 0;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
27
92
|
// Hide desktop menu items on mobile/tablet, show on desktop
|
|
28
93
|
&__item {
|
|
29
94
|
pointer-events: none; // on mobile we only advertise the buttons, but not clickable
|
|
@@ -338,7 +403,7 @@
|
|
|
338
403
|
li {
|
|
339
404
|
animation: mg-mega-item-slide-in 250ms ease-out both;
|
|
340
405
|
|
|
341
|
-
@for $i from 1 through
|
|
406
|
+
@for $i from 1 through 25 {
|
|
342
407
|
&:nth-child(#{$i}) {
|
|
343
408
|
animation-delay: #{($i - 1) * 30}ms;
|
|
344
409
|
}
|
|
@@ -651,6 +716,15 @@
|
|
|
651
716
|
}
|
|
652
717
|
}
|
|
653
718
|
|
|
719
|
+
// RTL: Flip hamburger shadow direction in branded variant
|
|
720
|
+
[dir="rtl"] .mg-mega-topbar--branded .mg-mega-topbar-mobile__icon-button {
|
|
721
|
+
box-shadow: 3px 0 6px -2px rgb(0 0 0 / 0.15);
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
[dir="rtl"] .mg-mega-topbar--branded .mg-mega-topbar-mobile__icon-button:has(.mg-icon-angle-circled-left) {
|
|
725
|
+
box-shadow: 3px 0 6px -2px rgb(0 0 0 / 0.15);
|
|
726
|
+
}
|
|
727
|
+
|
|
654
728
|
// Arabic
|
|
655
729
|
:lang(ar) {
|
|
656
730
|
.mg-mega-menu__item-link {
|
|
@@ -689,10 +689,22 @@ $search-input-padding-x: $mg-spacing-250;
|
|
|
689
689
|
// Result teaser HTML overrides
|
|
690
690
|
// ========================================
|
|
691
691
|
|
|
692
|
+
// Type badge and site name badges injected before the title in teaser results
|
|
693
|
+
.mg-search__result-badges {
|
|
694
|
+
display: inline-flex;
|
|
695
|
+
flex-wrap: wrap;
|
|
696
|
+
align-items: center;
|
|
697
|
+
gap: $mg-spacing-50;
|
|
698
|
+
margin-bottom: $mg-spacing-25;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
// Content type badge — uses the system-level .mg-tag atom.
|
|
702
|
+
// No additional styles needed; the class is applied in ResultItem.jsx.
|
|
703
|
+
|
|
692
704
|
// Site name label in search results
|
|
693
705
|
.mg-search__result-site-name {
|
|
694
706
|
display: inline-block;
|
|
695
|
-
margin: 0
|
|
707
|
+
margin: 0;
|
|
696
708
|
padding: $mg-spacing-25 $mg-spacing-50;
|
|
697
709
|
font-size: $mg-font-size-200;
|
|
698
710
|
color: $search-text-muted;
|
|
@@ -719,6 +731,42 @@ $search-input-padding-x: $mg-spacing-250;
|
|
|
719
731
|
}
|
|
720
732
|
}
|
|
721
733
|
|
|
734
|
+
// ========================================
|
|
735
|
+
// Teaser Field Visibility
|
|
736
|
+
// ========================================
|
|
737
|
+
// Modifier classes on the results container hide specific teaser fields
|
|
738
|
+
// via the visibleTeaserFields config option.
|
|
739
|
+
// Title (.mg-card__title) is intentionally not toggleable.
|
|
740
|
+
// Teaser HTML uses standard mg-card__* BEM wrapper classes added by
|
|
741
|
+
// Drupal teaser templates (see web-backlog#2660).
|
|
742
|
+
|
|
743
|
+
.mg-search--hide-image .mg-card__visual { display: none; }
|
|
744
|
+
.mg-search--hide-contentType .mg-card__tag { display: none; }
|
|
745
|
+
.mg-search--hide-publicationType .mg-card__publication-type { display: none; }
|
|
746
|
+
.mg-search--hide-date .mg-card__date { display: none; }
|
|
747
|
+
.mg-search--hide-siteName .mg-search__result-site-name { display: none; }
|
|
748
|
+
.mg-search--hide-summary .mg-card__description { display: none; }
|
|
749
|
+
.mg-search--hide-organization .mg-card__organization { display: none; }
|
|
750
|
+
|
|
751
|
+
// ========================================
|
|
752
|
+
// Card Display Mode (mg-grid layout)
|
|
753
|
+
// ========================================
|
|
754
|
+
|
|
755
|
+
.mg-search__results-grid {
|
|
756
|
+
gap: $mg-spacing-150;
|
|
757
|
+
|
|
758
|
+
// Card items within grid
|
|
759
|
+
> [role="listitem"] {
|
|
760
|
+
display: flex;
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
// Remove list-style dividers in grid/card mode
|
|
764
|
+
.mg-search__result {
|
|
765
|
+
padding-bottom: 0;
|
|
766
|
+
border-bottom: 0;
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
|
|
722
770
|
// ========================================
|
|
723
771
|
// Result Animations
|
|
724
772
|
// Sequential fade-in and slide from left for search results.
|