@undrr/undrr-mangrove 2.0.0 → 2.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 (182) hide show
  1. package/README.md +9 -5
  2. package/components/BookCard.js +2 -2
  3. package/components/Breadcrumbs.js +2 -2
  4. package/components/Checkbox.js +2 -2
  5. package/components/Chips.js +2 -2
  6. package/components/CopyButton.js +2 -2
  7. package/components/CtaButton.js +2 -2
  8. package/components/Drawer.js +3 -3
  9. package/components/Drawer.js.LICENSE.txt +3 -1
  10. package/components/EmbedContainer.js +2 -2
  11. package/components/Footer.js +2 -2
  12. package/components/FormAction.js +2 -2
  13. package/components/FormErrorSummary.js +2 -2
  14. package/components/FormGroup.js +2 -2
  15. package/components/FullWidth.js +2 -2
  16. package/components/Gallery.js +3 -3
  17. package/components/Hero.js +3 -3
  18. package/components/HighlightBox.js +2 -2
  19. package/components/HorizontalBookCard.js +3 -3
  20. package/components/HorizontalBookCard.js.LICENSE.txt +3 -1
  21. package/components/HorizontalCard.js +3 -3
  22. package/components/HorizontalCard.js.LICENSE.txt +3 -1
  23. package/components/IconCard.js +3 -3
  24. package/components/IconCard.js.LICENSE.txt +3 -1
  25. package/components/Legend.js +2 -2
  26. package/components/Loader.js +3 -3
  27. package/components/MegaMenu.js +3 -3
  28. package/components/Notice.js +2 -2
  29. package/components/PageHeader.js +2 -2
  30. package/components/Pager.js +2 -2
  31. package/components/ProgressBar.js +9 -0
  32. package/components/ProgressBar.js.LICENSE.txt +9 -0
  33. package/components/QuoteHighlight.js +3 -3
  34. package/components/QuoteHighlight.js.LICENSE.txt +3 -1
  35. package/components/Radio.js +2 -2
  36. package/components/Range.js +2 -2
  37. package/components/ScrollContainer.js +2 -2
  38. package/components/SegmentedControl.js +2 -2
  39. package/components/Select.js +2 -2
  40. package/components/ServiceNotice.js +2 -2
  41. package/components/ShareButtons.js +3 -3
  42. package/components/ShowMore.js +3 -3
  43. package/components/SkipLink.js +2 -2
  44. package/components/StatsCard.js +3 -3
  45. package/components/StatsCard.js.LICENSE.txt +3 -1
  46. package/components/SyndicationSearchWidget.js +3 -3
  47. package/components/Tab.js +2 -2
  48. package/components/TextCta.js +3 -3
  49. package/components/TextCta.js.LICENSE.txt +3 -1
  50. package/components/TextInput.js +2 -2
  51. package/components/Textarea.js +2 -2
  52. package/components/Tree.js +2 -2
  53. package/components/UserFeedback.js +2 -2
  54. package/components/VerticalCard.js +3 -3
  55. package/components/VerticalCard.js.LICENSE.txt +3 -1
  56. package/components/hydrate.js +3 -3
  57. package/css/style-all.css +147 -128
  58. package/css/style-all.css.map +1 -1
  59. package/css/style-delta.css +147 -128
  60. package/css/style-delta.css.map +1 -1
  61. package/css/style-gutenberg.css +12 -12
  62. package/css/style-gutenberg.css.map +1 -1
  63. package/css/style-irp.css +147 -128
  64. package/css/style-irp.css.map +1 -1
  65. package/css/style-mcr.css +147 -128
  66. package/css/style-mcr.css.map +1 -1
  67. package/css/style-preventionweb.css +147 -128
  68. package/css/style-preventionweb.css.map +1 -1
  69. package/css/style.css +147 -128
  70. package/css/style.css.map +1 -1
  71. package/docs/EDITORIAL-MANUAL.md +193 -0
  72. package/docs/llms-editorial-manual.txt +200 -0
  73. package/docs/llms-motion.txt +125 -0
  74. package/docs/llms-page-building.txt +1140 -0
  75. package/docs/llms-search-widget.txt +765 -0
  76. package/error-pages/401.html +1 -1
  77. package/error-pages/403.html +1 -1
  78. package/error-pages/404.html +1 -1
  79. package/error-pages/429.html +1 -1
  80. package/error-pages/500.html +1 -1
  81. package/error-pages/502.html +1 -1
  82. package/error-pages/503.html +1 -1
  83. package/error-pages/504.html +1 -1
  84. package/error-pages/5xx.html +1 -1
  85. package/error-pages/challenge.html +1 -1
  86. package/error-pages/managed-challenge.html +1 -1
  87. package/js/cite-this.js +994 -0
  88. package/js/on-this-page-nav.js +80 -1
  89. package/js/show-more.js +149 -21
  90. package/package.json +6 -1
  91. package/scss/Atom/BaseTypography/Abbr/abbr.scss +1 -1
  92. package/scss/Atom/BaseTypography/Blockquote/blockquote.scss +1 -1
  93. package/scss/Atom/BaseTypography/Cite/cite.scss +1 -1
  94. package/scss/Atom/BaseTypography/Code/code.scss +1 -1
  95. package/scss/Atom/BaseTypography/Mark/mark.scss +1 -1
  96. package/scss/Atom/BaseTypography/Quotation/quotation.scss +1 -1
  97. package/scss/Atom/BaseTypography/Small/small.scss +1 -1
  98. package/scss/Atom/Colors/color.scss +1 -1
  99. package/scss/Atom/EmptyState/empty-state.scss +1 -1
  100. package/scss/Atom/Icons/_icon-definitions.scss +35 -3
  101. package/scss/Atom/Icons/icons.scss +1 -1
  102. package/scss/Atom/Images/AuthorImage/author-image.scss +10 -3
  103. package/scss/Atom/Images/Image/image.scss +1 -1
  104. package/scss/Atom/Images/ImageCaptionCredit/image-caption-credit.scss +7 -2
  105. package/scss/Atom/Images/ImageCredit/image-credit.scss +1 -1
  106. package/scss/Atom/Layout/Container/container.scss +1 -1
  107. package/scss/Atom/Layout/Grid/grid.scss +1 -1
  108. package/scss/Atom/Layout/Spacing/spacing.scss +1 -1
  109. package/scss/Atom/Logo/logo.scss +1 -1
  110. package/scss/Atom/Navigation/Breadcrumb/breadcrumb.scss +1 -1
  111. package/scss/Atom/Navigation/MenuItems/menu-items.scss +1 -1
  112. package/scss/Atom/ReachElement/Details/details.scss +5 -3
  113. package/scss/Atom/ReachElement/Figcaption/figcaption.scss +1 -1
  114. package/scss/Atom/StatusLabel/status-label.scss +1 -1
  115. package/scss/Atom/Table/table.scss +1 -1
  116. package/scss/Atom/Tag/tag.scss +1 -1
  117. package/scss/Atom/Video/video.scss +1 -1
  118. package/scss/Components/Boilerplate/boilerplate.scss +1 -1
  119. package/scss/Components/Breadcrumbs/breadcrumbs.scss +1 -1
  120. package/scss/Components/Buttons/Chips/chips.scss +1 -1
  121. package/scss/Components/Buttons/CopyButton/copy-button.scss +1 -1
  122. package/scss/Components/Buttons/CtaButton/buttons.scss +1 -1
  123. package/scss/Components/Buttons/CtaButton/cta-button.scss +1 -1
  124. package/scss/Components/Buttons/ShareButtons/share-buttons.scss +90 -1
  125. package/scss/Components/Cards/Card/card.scss +9 -3
  126. package/scss/Components/Cards/StatsCard/stats-card.scss +9 -2
  127. package/scss/Components/CiteThis/cite-this.scss +339 -0
  128. package/scss/Components/CookieConsentBanner/cookie-consent-banner.scss +1 -1
  129. package/scss/Components/DataViz/Legend/legend.scss +1 -1
  130. package/scss/Components/ErrorPages/error-pages.scss +1 -1
  131. package/scss/Components/Footer/footer.scss +1 -1
  132. package/scss/Components/Forms/Checkbox/checkbox.scss +1 -1
  133. package/scss/Components/Forms/FormAction/form-action.scss +1 -1
  134. package/scss/Components/Forms/FormGroup/form-group.scss +1 -1
  135. package/scss/Components/Forms/InputFields/input-fields.scss +1 -1
  136. package/scss/Components/Forms/Radio/radio.scss +1 -1
  137. package/scss/Components/Forms/Range/range.scss +1 -1
  138. package/scss/Components/Forms/SegmentedControl/segmented-control.scss +1 -1
  139. package/scss/Components/Forms/Select/select.scss +1 -1
  140. package/scss/Components/Forms/TextInput/text-input.scss +1 -1
  141. package/scss/Components/Forms/Textarea/textarea.scss +1 -1
  142. package/scss/Components/Forms/_form-base.scss +1 -1
  143. package/scss/Components/Gallery/gallery.scss +41 -16
  144. package/scss/Components/Hero/hero.scss +166 -1
  145. package/scss/Components/HighlightBox/highlight-box.scss +1 -1
  146. package/scss/Components/MegaMenu/mega-menu.scss +43 -122
  147. package/scss/Components/MegaMenu/megamenu.scss +1 -1
  148. package/scss/Components/Navigation/Drawer/drawer.scss +11 -1
  149. package/scss/Components/Navigation/Tree/tree.scss +1 -1
  150. package/scss/Components/Notice/notice.scss +1 -1
  151. package/scss/Components/OnThisPageNav/on-this-page-nav.scss +109 -4
  152. package/scss/Components/PageHeader/page-header.scss +1 -1
  153. package/scss/Components/Pager/pager.scss +1 -1
  154. package/scss/Components/PreviewAccess/preview-access.scss +1 -1
  155. package/scss/Components/ProgressBar/progress-bar.scss +215 -0
  156. package/scss/Components/QuoteHighlight/quote-highlight.scss +1 -1
  157. package/scss/Components/ScrollContainer/scroll-container.scss +1 -1
  158. package/scss/Components/Snackbar/snackbar.scss +1 -1
  159. package/scss/Components/SyndicationSearchWidget/_deprecated-teaser-hide.scss +1 -1
  160. package/scss/Components/SyndicationSearchWidget/syndication-search-widget.scss +253 -128
  161. package/scss/Components/Tab/tab.scss +3 -2
  162. package/scss/Components/TableOfContents/table-of-contents.scss +1 -1
  163. package/scss/Components/TextCta/text-cta.scss +1 -1
  164. package/scss/Components/TextCta/textcta.scss +1 -1
  165. package/scss/Components/UserFeedback/user-feedback.scss +1 -1
  166. package/scss/Molecules/ImageCaption/image-caption.scss +17 -3
  167. package/scss/Molecules/SectionHeader/section-header.scss +1 -1
  168. package/scss/Molecules/SectionHeader/sectionheader.scss +1 -1
  169. package/scss/Patterns/HubHeader/hub-header.scss +1 -1
  170. package/scss/Patterns/RichContent/rich-content.scss +177 -0
  171. package/scss/Patterns/_shared/pattern-demo.scss +6 -1
  172. package/scss/Utilities/EmbedContainer/embed-container.scss +1 -1
  173. package/scss/Utilities/FullWidth/full-width.scss +1 -1
  174. package/scss/Utilities/Loader/loader.scss +133 -12
  175. package/scss/Utilities/Normalize/normalize.scss +1 -1
  176. package/scss/Utilities/PagePatterns/page-patterns.scss +1 -1
  177. package/scss/Utilities/ShowMore/show-more.scss +7 -1
  178. package/scss/Utilities/SkipLink/skip-link.scss +1 -1
  179. package/scss/assets/scss/_components.scss +5 -0
  180. package/scss/assets/scss/_foundational.scss +23 -8
  181. package/scss/assets/scss/_mixins.scss +5 -0
  182. package/scss/assets/scss/_variables.scss +2 -2
@@ -0,0 +1,339 @@
1
+ /**
2
+ * Cite this (CiteThis)
3
+ *
4
+ * Citation button and dialog with a readable disclosure fallback.
5
+ *
6
+ * Full documentation:
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/CiteThis/CiteThis.mdx
8
+ */
9
+
10
+ .mg-cite-this {
11
+ max-inline-size: 48rem;
12
+ color: rgb(var(--mg-color-neutral-800));
13
+ font-family: var(--mg-font-family-text);
14
+
15
+ &__fallback {
16
+ background: rgb(var(--mg-color-neutral-50));
17
+ border-inline-start: var(--mg-spacing-50) solid
18
+ rgb(var(--mg-color-interactive));
19
+ }
20
+
21
+ &__trigger {
22
+ min-block-size: 44px;
23
+ padding: var(--mg-spacing-100) var(--mg-spacing-200);
24
+ background: rgb(var(--mg-color-interactive));
25
+ border: 0;
26
+ border-radius: var(--mg-radius-button);
27
+ color: rgb(var(--mg-color-white));
28
+ cursor: pointer;
29
+ font-family: var(--mg-font-family-text);
30
+ font-size: var(--mg-font-size-300);
31
+ font-weight: 600;
32
+ transition: filter var(--mg-motion-duration-fast)
33
+ var(--mg-motion-easing-standard);
34
+
35
+ &:hover {
36
+ filter: brightness(0.92);
37
+ }
38
+
39
+ &:focus-visible {
40
+ @include mg-focus-ring;
41
+ }
42
+
43
+ @media (prefers-reduced-motion: reduce) {
44
+ transition: none;
45
+ }
46
+
47
+ // The filled trigger relies on its background, which forced colours remove.
48
+ @media (forced-colors: active) {
49
+ border: 1px solid ButtonText;
50
+ }
51
+ }
52
+
53
+ // Default enhanced layout, with the same structure and metrics as
54
+ // ShareButtons: a label, the citation as a copyable field, and a quiet
55
+ // dialog link. `--compact` shows the dialog trigger alone.
56
+ &__panel {
57
+ display: flex;
58
+ flex-direction: column;
59
+ align-items: flex-start;
60
+ gap: var(--mg-spacing-100);
61
+ max-inline-size: mg-rem(400);
62
+ }
63
+
64
+ &__header {
65
+ margin: 0;
66
+ color: rgb(var(--mg-color-text));
67
+ font-family: var(--mg-font-family-text);
68
+ font-size: var(--mg-font-size-300);
69
+ font-weight: 600;
70
+ }
71
+
72
+ &__preview {
73
+ box-sizing: border-box;
74
+ display: flex;
75
+ align-items: center;
76
+ gap: var(--mg-spacing-100);
77
+ inline-size: 100%;
78
+ min-block-size: mg-rem(40);
79
+ padding: var(--mg-spacing-100);
80
+ background-color: rgb(var(--mg-color-neutral-25));
81
+ border: 1px solid rgb(var(--mg-color-neutral-300) / 0.4);
82
+ border-radius: var(--mg-radius-button);
83
+ color: rgb(var(--mg-color-text));
84
+ cursor: pointer;
85
+ font-family: var(--mg-font-family-text);
86
+ text-align: start;
87
+
88
+ @media (prefers-reduced-motion: no-preference) {
89
+ transition: background-color var(--mg-motion-duration-fast)
90
+ var(--mg-motion-easing-standard);
91
+ }
92
+
93
+ .mg-icon {
94
+ flex: 0 0 mg-rem(24);
95
+ text-align: center;
96
+ }
97
+
98
+ &:hover {
99
+ background-color: rgb(var(--mg-color-neutral-50));
100
+
101
+ .mg-cite-this__preview-text {
102
+ text-decoration: underline;
103
+ text-underline-offset: 0.15em;
104
+ }
105
+ }
106
+
107
+ &:focus-visible {
108
+ @include mg-focus-ring;
109
+ }
110
+
111
+ @media (forced-colors: active) {
112
+ border-color: ButtonText;
113
+ }
114
+ }
115
+
116
+ &__preview-text {
117
+ display: -webkit-box;
118
+ flex: 1;
119
+ min-inline-size: 0;
120
+ overflow: hidden;
121
+ font-size: var(--mg-font-size-250);
122
+ line-height: 1.5;
123
+ overflow-wrap: anywhere;
124
+ -webkit-box-orient: vertical;
125
+ -webkit-line-clamp: 2;
126
+ line-clamp: 2;
127
+ }
128
+
129
+ // Doubled selector outranks the filled `__trigger` styles.
130
+ & &__more {
131
+ min-block-size: 44px;
132
+ padding: 0;
133
+ background: transparent;
134
+ color: rgb(var(--mg-color-interactive));
135
+ font-size: var(--mg-font-size-250);
136
+ font-weight: 400;
137
+ text-decoration: underline;
138
+ text-underline-offset: 0.15em;
139
+
140
+ &:hover {
141
+ filter: none;
142
+ text-decoration-thickness: 2px;
143
+ }
144
+ }
145
+
146
+ &__dialog {
147
+ inline-size: min(calc(100% - 2rem), 44rem);
148
+ max-block-size: calc(100vh - 2rem);
149
+ padding: 0;
150
+ overflow-y: auto;
151
+ background: rgb(var(--mg-color-white));
152
+ border: 0;
153
+ border-block-start: var(--mg-spacing-50) solid
154
+ rgb(var(--mg-color-interactive));
155
+ border-radius: var(--mg-radius-button);
156
+ color: rgb(var(--mg-color-neutral-800));
157
+ box-shadow: 0 12px 40px rgb(0 0 0 / 0.2);
158
+
159
+ &::backdrop {
160
+ background: var(--mg-color-modal-scrim);
161
+ }
162
+
163
+ .mg-cite-this__content {
164
+ padding-block: 0 var(--mg-spacing-200);
165
+ }
166
+ }
167
+
168
+ &__dialog-header {
169
+ display: flex;
170
+ align-items: center;
171
+ justify-content: space-between;
172
+ gap: var(--mg-spacing-200);
173
+ padding: var(--mg-spacing-200) var(--mg-spacing-200) var(--mg-spacing-150);
174
+ }
175
+
176
+ &__title {
177
+ margin: 0;
178
+ font-family: var(--mg-font-family-ui);
179
+ font-size: var(--mg-font-size-400);
180
+ line-height: 1.3;
181
+ }
182
+
183
+ &__close {
184
+ flex-shrink: 0;
185
+ inline-size: 44px;
186
+ block-size: 44px;
187
+ min-inline-size: 44px;
188
+ min-block-size: 44px;
189
+ color: rgb(var(--mg-color-neutral-600));
190
+
191
+ &:hover {
192
+ color: rgb(var(--mg-color-neutral-900));
193
+ background-color: rgb(var(--mg-color-neutral-900) / 0.08);
194
+ }
195
+ }
196
+
197
+ &__summary {
198
+ display: flex;
199
+ align-items: center;
200
+ justify-content: space-between;
201
+ gap: var(--mg-spacing-150);
202
+ min-block-size: 44px;
203
+ padding: var(--mg-spacing-150) var(--mg-spacing-200);
204
+ cursor: pointer;
205
+ font-family: var(--mg-font-family-ui);
206
+ font-size: var(--mg-font-size-400);
207
+ font-weight: 700;
208
+ list-style: none;
209
+
210
+ &::-webkit-details-marker {
211
+ display: none;
212
+ }
213
+
214
+ &:focus-visible {
215
+ @include mg-focus-ring-inset;
216
+ }
217
+
218
+ &::after {
219
+ content: "+";
220
+ font-family: var(--mg-font-family-text);
221
+ font-size: var(--mg-font-size-400);
222
+ font-weight: 400;
223
+ line-height: 1;
224
+ }
225
+ }
226
+
227
+ &__fallback[open] .mg-cite-this__summary::after {
228
+ content: "−";
229
+ }
230
+
231
+ &__content {
232
+ padding: 0 var(--mg-spacing-200) var(--mg-spacing-200);
233
+ }
234
+
235
+ // Doubled selector outranks `.mg-code`, which earlier markup put on the
236
+ // citation; a citation is prose to read, not code.
237
+ & &__text {
238
+ margin: 0;
239
+ padding: var(--mg-spacing-150) var(--mg-spacing-200);
240
+ background: rgb(var(--mg-color-neutral-25));
241
+ border: 1px solid rgb(var(--mg-color-neutral-300) / 0.4);
242
+ border-radius: var(--mg-radius-form-input);
243
+ box-shadow: none;
244
+ color: rgb(var(--mg-color-neutral-800));
245
+ font-family: var(--mg-font-family-text);
246
+ font-size: var(--mg-font-size-300);
247
+ font-weight: 400;
248
+ line-height: 1.6;
249
+ overflow-wrap: anywhere;
250
+ text-wrap: pretty;
251
+
252
+ a {
253
+ color: rgb(var(--mg-color-interactive));
254
+ text-decoration: underline;
255
+ text-underline-offset: 0.15em;
256
+
257
+ &:focus-visible {
258
+ @include mg-focus-ring;
259
+ }
260
+ }
261
+ }
262
+
263
+ &__actions {
264
+ display: flex;
265
+ align-items: center;
266
+ flex-wrap: wrap;
267
+ gap: var(--mg-spacing-150);
268
+ margin-block-start: var(--mg-spacing-150);
269
+ }
270
+
271
+ &__copy {
272
+ min-block-size: 44px;
273
+ padding: var(--mg-spacing-50) var(--mg-spacing-150);
274
+ background: transparent;
275
+ border: 2px solid rgb(var(--mg-color-interactive));
276
+ border-radius: var(--mg-radius-button);
277
+ color: rgb(var(--mg-color-interactive));
278
+ cursor: pointer;
279
+ font-family: var(--mg-font-family-text);
280
+ font-size: var(--mg-font-size-250);
281
+ font-weight: 600;
282
+ transition-property: background-color, color, scale;
283
+ transition-duration: var(--mg-motion-duration-fast);
284
+ transition-timing-function: var(--mg-motion-easing-standard);
285
+
286
+ &:hover {
287
+ background: rgb(var(--mg-color-interactive));
288
+ color: rgb(var(--mg-color-white));
289
+ }
290
+
291
+ &:not(.mg-cite-this__copy-url) {
292
+ background: rgb(var(--mg-color-interactive));
293
+ color: rgb(var(--mg-color-white));
294
+
295
+ &:hover {
296
+ filter: brightness(0.92);
297
+ }
298
+ }
299
+
300
+ &:active {
301
+ scale: 0.96;
302
+ }
303
+
304
+ &:focus-visible {
305
+ @include mg-focus-ring;
306
+ }
307
+
308
+ @media (prefers-reduced-motion: reduce) {
309
+ transition: none;
310
+ }
311
+ }
312
+
313
+ &__exports {
314
+ display: flex;
315
+ flex-wrap: wrap;
316
+ gap: var(--mg-spacing-50) var(--mg-spacing-200);
317
+ margin-block-start: var(--mg-spacing-150);
318
+ padding-block-start: var(--mg-spacing-150);
319
+ border-block-start: 1px solid rgb(var(--mg-color-neutral-200));
320
+ font-size: var(--mg-font-size-250);
321
+ }
322
+
323
+ &__export {
324
+ display: inline-flex;
325
+ align-items: center;
326
+ min-block-size: 44px;
327
+ color: rgb(var(--mg-color-interactive));
328
+ text-decoration: underline;
329
+ text-underline-offset: 0.15em;
330
+
331
+ &:focus-visible {
332
+ @include mg-focus-ring;
333
+ }
334
+ }
335
+
336
+ &__status {
337
+ font-size: var(--mg-font-size-250);
338
+ }
339
+ }
@@ -4,7 +4,7 @@
4
4
  * Fixed bottom GDPR/privacy compliance consent notice with accept/manage preference controls.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/CookieConsentBanner/CookieConsentBanner.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/CookieConsentBanner/CookieConsentBanner.mdx
8
8
  */
9
9
  // Mangrove theme bridge for the externally loaded vanilla-cookieconsent UI.
10
10
  // The CDN stylesheet is appended after the local bundle and declares the same
@@ -4,7 +4,7 @@
4
4
  * Continuous, stepped and categorical legend primitives for maps and charts.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/DataViz/Legend/Legend.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/DataViz/Legend/Legend.mdx
8
8
  */
9
9
 
10
10
  .mg-legend {
@@ -4,7 +4,7 @@
4
4
  * Branded 404 Not Found and 500 Server Error status page layouts and illustrations.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/ErrorPages/ErrorPage.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/ErrorPages/ErrorPage.mdx
8
8
  */
9
9
  .mg-error-page {
10
10
  min-height: 100vh;
@@ -4,7 +4,7 @@
4
4
  * Site-wide mega footer with branding, navigation columns, copyright, and social links.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/Footer/Footer.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/Footer/Footer.mdx
8
8
  */
9
9
  .mg-footer {
10
10
  --mg-gutenberg-spacer: 0;
@@ -4,7 +4,7 @@
4
4
  * Accessible custom checkbox inputs with focus rings, checked checkmarks, and disabled states.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/Forms/Checkbox/Checkbox.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/Forms/Checkbox/Checkbox.mdx
8
8
  */
9
9
  // Checkbox-specific overrides.
10
10
  // Shared form styles live in _form-base.scss (.mg-form-check).
@@ -4,7 +4,7 @@
4
4
  * Button row and submission action container for web forms.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/Forms/FormAction/FormAction.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/Forms/FormAction/FormAction.mdx
8
8
  */
9
9
  .mg-form-action {
10
10
  align-items: stretch;
@@ -4,7 +4,7 @@
4
4
  * Field wrapper associating labels, hint helper text, form inputs, and inline error validation messages.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/Forms/FormGroup/FormGroup.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/Forms/FormGroup/FormGroup.mdx
8
8
  */
9
9
  // FormGroup — styled fieldset/legend for grouping related form controls.
10
10
 
@@ -4,7 +4,7 @@
4
4
  * Rollup stylesheet for text inputs, select dropdowns, and form control elements.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/Forms/TextInput/TextInput.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/Forms/TextInput/TextInput.mdx
8
8
  */
9
9
  // DEPRECATED — February 2026
10
10
  // This file has been replaced by:
@@ -4,7 +4,7 @@
4
4
  * Accessible radio input controls with styled checked indicators and keyboard focus states.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/Forms/Radio/Radio.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/Forms/Radio/Radio.mdx
8
8
  */
9
9
  // Radio-specific overrides.
10
10
  // Shared form styles live in _form-base.scss (.mg-form-check).
@@ -4,7 +4,7 @@
4
4
  * Range slider supporting continuous and stepped intervals with labelled tick marks.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/Forms/Range/Range.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/Forms/Range/Range.mdx
8
8
  */
9
9
 
10
10
  @mixin mg-range-thumb {
@@ -6,7 +6,7 @@
6
6
  * view shows.
7
7
  *
8
8
  * Full documentation:
9
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/Forms/SegmentedControl/SegmentedControl.mdx
9
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/Forms/SegmentedControl/SegmentedControl.mdx
10
10
  */
11
11
 
12
12
  // The control is a presentation layer over a native radio group: a fieldset, a
@@ -4,7 +4,7 @@
4
4
  * Custom styled <select> dropdown menus with custom chevron indicator and focus treatment.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/Forms/Select/Select.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/Forms/Select/Select.mdx
8
8
  */
9
9
  // Select-specific overrides.
10
10
  // Shared form styles live in _form-base.scss (.mg-form-select).
@@ -4,7 +4,7 @@
4
4
  * Single-line text input fields supporting prefix/suffix adornments, search variants, and error states.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/Forms/TextInput/TextInput.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/Forms/TextInput/TextInput.mdx
8
8
  */
9
9
  // TextInput-specific overrides (date picker styling).
10
10
  // Shared form styles live in _form-base.scss.
@@ -4,7 +4,7 @@
4
4
  * Multi-line text input fields with configurable resize behavior and validation styling.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/Forms/Textarea/Textarea.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/Forms/Textarea/Textarea.mdx
8
8
  */
9
9
  // Textarea-specific overrides.
10
10
  // Shared form styles live in _form-base.scss (.mg-form-textarea).
@@ -4,7 +4,7 @@
4
4
  * Foundational styling, typography, focus rings, and validation states shared across form controls.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/Forms/TextInput/TextInput.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/Forms/TextInput/TextInput.mdx
8
8
  */
9
9
  // Shared BEM-scoped form styles for Mangrove form components.
10
10
  // All form components import this partial for consistent base styling.
@@ -4,7 +4,7 @@
4
4
  * Thumbnail grid gallery and full-screen lightbox image viewer with keyboard navigation.
5
5
  *
6
6
  * Full documentation:
7
- * https://github.com/unisdr/undrr-mangrove/blob/main/stories/Components/Gallery/Gallery.mdx
7
+ * https://github.com/PreventionWeb/undrr-mangrove/blob/main/stories/Components/Gallery/Gallery.mdx
8
8
  */
9
9
  /* Photo Gallery Component */
10
10
  .mg-gallery {
@@ -105,21 +105,27 @@
105
105
  top: 50%;
106
106
  left: 50%;
107
107
  transform: translate(-50%, -50%);
108
+ color: rgb(var(--mg-color-interactive));
109
+ font-size: var(--mg-spacing-300);
108
110
  z-index: 3; // loading spinner above nav buttons — local to gallery stacking context
109
- }
110
111
 
111
- &__spinner {
112
- width: var(--mg-spacing-300); // 30px
113
- height: var(--mg-spacing-300);
114
- border: 4px solid rgb(var(--mg-color-neutral-300));
115
- border-top-color: rgb(var(--mg-color-interactive));
116
- border-radius: 50%;
117
- animation: mg-gallery-spin 0.8s linear infinite;
118
- }
112
+ @media (prefers-reduced-motion: reduce) {
113
+ // The shared Loader reveals translated text. Keep it inside the stage
114
+ // and give the label a stable surface over arbitrary video/posters.
115
+ width: max-content;
119
116
 
120
- @keyframes mg-gallery-spin {
121
- to {
122
- transform: rotate(360deg);
117
+ // Reserve both 44px arrow targets, their largest inset, and a focus gap.
118
+ $navigation-space: calc(
119
+ #{mg-rem(44)} + var(--mg-spacing-100) + var(--mg-spacing-50)
120
+ );
121
+
122
+ max-width: calc(100% - 2 * $navigation-space);
123
+ box-sizing: border-box;
124
+ pointer-events: none;
125
+ padding: var(--mg-spacing-75);
126
+ background: rgb(var(--mg-color-neutral-0));
127
+ color: rgb(var(--mg-color-text));
128
+ font-size: var(--mg-font-size-300);
123
129
  }
124
130
  }
125
131
 
@@ -213,7 +219,10 @@
213
219
  padding: 0;
214
220
  position: relative;
215
221
 
216
- @include transition(border-color 0.2s ease);
222
+ @include transition(
223
+ border-color var(--mg-motion-duration-fast)
224
+ var(--mg-motion-easing-standard)
225
+ );
217
226
 
218
227
  @include devicebreak(medium) {
219
228
  width: 100%;
@@ -366,7 +375,11 @@
366
375
  align-items: center;
367
376
  justify-content: center;
368
377
 
369
- @include transition(background-color 0.2s, opacity 0.2s);
378
+ @include transition(
379
+ background-color var(--mg-motion-duration-fast)
380
+ var(--mg-motion-easing-standard),
381
+ opacity var(--mg-motion-duration-fast) var(--mg-motion-easing-standard)
382
+ );
370
383
 
371
384
  &:hover {
372
385
  background: rgb(var(--mg-color-neutral-600));
@@ -436,7 +449,11 @@
436
449
  align-items: center;
437
450
  justify-content: center;
438
451
 
439
- @include transition(background-color 0.2s, opacity 0.2s);
452
+ @include transition(
453
+ background-color var(--mg-motion-duration-fast)
454
+ var(--mg-motion-easing-standard),
455
+ opacity var(--mg-motion-duration-fast) var(--mg-motion-easing-standard)
456
+ );
440
457
 
441
458
  &:hover {
442
459
  background: rgb(var(--mg-color-neutral-600));
@@ -511,3 +528,11 @@
511
528
  }
512
529
  }
513
530
  }
531
+
532
+ @media (prefers-reduced-motion: reduce) {
533
+ .mg-gallery__thumbnail,
534
+ .mg-gallery__arrow,
535
+ .mg-gallery__arrow-button {
536
+ transition: none;
537
+ }
538
+ }