@undrr/undrr-mangrove 2.1.0 → 2.2.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.
- package/README.md +1 -1
- package/components/BookCard.js +1 -1
- package/components/Breadcrumbs.js +1 -1
- package/components/Checkbox.js +1 -1
- package/components/Chips.js +1 -1
- package/components/ContentCard.js +9 -0
- package/components/ContentCard.js.LICENSE.txt +9 -0
- package/components/ContentTeaser.js +9 -0
- package/components/ContentTeaser.js.LICENSE.txt +9 -0
- package/components/CopyButton.js +1 -1
- package/components/CtaButton.js +1 -1
- package/components/Drawer.js +1 -1
- package/components/DrupalContentPatterns.js +8 -0
- package/components/EmbedContainer.js +1 -1
- package/components/Footer.js +1 -1
- package/components/FormAction.js +1 -1
- package/components/FormErrorSummary.js +1 -1
- package/components/FormGroup.js +1 -1
- package/components/FullWidth.js +1 -1
- package/components/Gallery.js +1 -1
- package/components/Hero.js +1 -1
- package/components/HighlightBox.js +1 -1
- package/components/HorizontalBookCard.js +1 -1
- package/components/HorizontalCard.js +1 -1
- package/components/IconCard.js +1 -1
- package/components/Legend.js +1 -1
- package/components/Loader.js +1 -1
- package/components/MegaMenu.js +1 -1
- package/components/Notice.js +1 -1
- package/components/PageHeader.js +1 -1
- package/components/Pager.js +1 -1
- package/components/ProgressBar.js +1 -1
- package/components/QuoteHighlight.js +1 -1
- package/components/Radio.js +1 -1
- package/components/Range.js +1 -1
- package/components/ScrollContainer.js +1 -1
- package/components/SegmentedControl.js +1 -1
- package/components/Select.js +1 -1
- package/components/ServiceNotice.js +1 -1
- package/components/ShareButtons.js +1 -1
- package/components/ShowMore.js +1 -1
- package/components/SkipLink.js +1 -1
- package/components/StatsCard.js +1 -1
- package/components/SyndicationSearchWidget.js +2 -2
- package/components/Tab.js +1 -1
- package/components/TextCta.js +1 -1
- package/components/TextInput.js +1 -1
- package/components/Textarea.js +1 -1
- package/components/Tree.js +1 -1
- package/components/UserFeedback.js +1 -1
- package/components/VerticalCard.js +1 -1
- package/components/hydrate.js +1 -1
- package/css/style-all.css +16 -11
- package/css/style-all.css.map +1 -1
- package/css/style-delta.css +16 -11
- package/css/style-delta.css.map +1 -1
- package/css/style-gutenberg.css +4 -8
- package/css/style-gutenberg.css.map +1 -1
- package/css/style-irp.css +16 -11
- package/css/style-irp.css.map +1 -1
- package/css/style-mcr.css +16 -11
- package/css/style-mcr.css.map +1 -1
- package/css/style-preventionweb.css +16 -11
- package/css/style-preventionweb.css.map +1 -1
- package/css/style.css +17 -11
- package/css/style.css.map +1 -1
- package/docs/EDITORIAL-MANUAL.md +1 -1
- package/docs/llms-page-building.txt +5 -3
- 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/preview-access.js +180 -30
- package/package.json +1 -1
- package/scss/Atom/BaseTypography/Blockquote/blockquote.scss +2 -0
- package/scss/Atom/BaseTypography/Cite/cite.scss +2 -0
- package/scss/Atom/BaseTypography/Code/code.scss +2 -0
- package/scss/Atom/BaseTypography/Mark/mark.scss +2 -0
- package/scss/Atom/BaseTypography/Small/small.scss +2 -0
- package/scss/Atom/Icons/icons.scss +3 -2
- package/scss/Atom/Images/ImageCaptionCredit/image-caption-credit.scss +3 -0
- package/scss/Atom/Images/ImageCredit/image-credit.scss +2 -0
- package/scss/Atom/Layout/Container/container.scss +2 -0
- package/scss/Atom/Layout/Grid/grid.scss +2 -0
- package/scss/Atom/Logo/logo.scss +2 -0
- package/scss/Atom/Navigation/MenuItems/menu-items.scss +2 -0
- package/scss/Atom/ReachElement/Details/details.scss +3 -0
- package/scss/Atom/ReachElement/Figcaption/figcaption.scss +3 -0
- package/scss/Atom/StatusLabel/status-label.scss +2 -0
- package/scss/Atom/Table/table.scss +4 -0
- package/scss/Atom/Tag/tag.scss +3 -0
- package/scss/Components/Boilerplate/boilerplate.scss +3 -0
- package/scss/Components/Breadcrumbs/breadcrumbs.scss +2 -0
- package/scss/Components/Buttons/Chips/chips.scss +3 -0
- package/scss/Components/Buttons/CtaButton/buttons.scss +1 -1
- package/scss/Components/Buttons/CtaButton/cta-button.scss +4 -0
- package/scss/Components/Buttons/ShareButtons/share-buttons.scss +3 -0
- package/scss/Components/Cards/Card/card.scss +156 -3
- package/scss/Components/Cards/StatsCard/stats-card.scss +14 -2
- package/scss/Components/CiteThis/cite-this.scss +2 -0
- package/scss/Components/CookieConsentBanner/cookie-consent-banner.scss +2 -0
- package/scss/Components/DataViz/Legend/legend.scss +1 -0
- package/scss/Components/ErrorPages/error-pages.scss +2 -0
- package/scss/Components/Footer/footer.scss +2 -0
- package/scss/Components/Forms/FormAction/form-action.scss +2 -0
- package/scss/Components/Forms/FormGroup/form-group.scss +2 -0
- package/scss/Components/Forms/Range/range.scss +1 -0
- package/scss/Components/Forms/SegmentedControl/segmented-control.scss +2 -0
- package/scss/Components/Forms/Select/select.scss +2 -0
- package/scss/Components/Forms/_form-base.scss +3 -0
- package/scss/Components/Gallery/gallery.scss +4 -0
- package/scss/Components/Hero/hero.scss +3 -0
- package/scss/Components/HighlightBox/highlight-box.scss +3 -0
- package/scss/Components/MegaMenu/mega-menu.scss +3 -0
- package/scss/Components/MegaMenu/megamenu.scss +1 -1
- package/scss/Components/Navigation/Drawer/drawer.scss +1 -0
- package/scss/Components/Navigation/Tree/tree.scss +1 -0
- package/scss/Components/OnThisPageNav/on-this-page-nav.scss +3 -0
- package/scss/Components/PageHeader/page-header.scss +3 -0
- package/scss/Components/Pager/pager.scss +3 -0
- package/scss/Components/PreviewAccess/preview-access.scss +3 -0
- package/scss/Components/QuoteHighlight/quote-highlight.scss +2 -0
- package/scss/Components/ScrollContainer/scroll-container.scss +4 -0
- package/scss/Components/Snackbar/snackbar.scss +1 -0
- package/scss/Components/SyndicationSearchWidget/syndication-search-widget.scss +58 -1
- package/scss/Components/Tab/tab.scss +4 -0
- package/scss/Components/TableOfContents/table-of-contents.scss +2 -0
- package/scss/Components/TextCta/text-cta.scss +3 -0
- package/scss/Components/TextCta/textcta.scss +1 -1
- package/scss/Components/UserFeedback/user-feedback.scss +3 -0
- package/scss/Molecules/ImageCaption/image-caption.scss +2 -0
- package/scss/Molecules/SectionHeader/sectionheader.scss +1 -1
- package/scss/Patterns/ContentCard/content-card.scss +79 -0
- package/scss/Patterns/ContentTeaser/content-teaser.scss +174 -0
- package/scss/Patterns/HubHeader/hub-header.scss +3 -0
- package/scss/Patterns/RichContent/rich-content.scss +1 -0
- package/scss/Patterns/_shared/pattern-demo.scss +1 -1
- package/scss/Utilities/Loader/loader.scss +2 -0
- package/scss/Utilities/ShowMore/show-more.scss +2 -0
- package/scss/Utilities/SkipLink/skip-link.scss +2 -0
- package/scss/assets/fonts/noto-kufi-arabic/noto-kufi-arabic.scss +2 -0
- package/scss/assets/fonts/noto-sans-arabic/noto-sans-arabic.scss +2 -0
- package/scss/assets/fonts/roboto/roboto.scss +12 -12
- package/scss/assets/fonts/roboto/sass/_Black.scss +4 -0
- package/scss/assets/fonts/roboto/sass/_BlackItalic.scss +4 -0
- package/scss/assets/fonts/roboto/sass/_Bold.scss +4 -0
- package/scss/assets/fonts/roboto/sass/_BoldItalic.scss +4 -0
- package/scss/assets/fonts/roboto/sass/_Italic.scss +4 -0
- package/scss/assets/fonts/roboto/sass/_Light.scss +4 -0
- package/scss/assets/fonts/roboto/sass/_LightItalic.scss +4 -0
- package/scss/assets/fonts/roboto/sass/_Medium.scss +4 -0
- package/scss/assets/fonts/roboto/sass/_MediumItalic.scss +4 -0
- package/scss/assets/fonts/roboto/sass/_Regular.scss +4 -0
- package/scss/assets/fonts/roboto/sass/_variables.scss +1 -2
- package/scss/assets/fonts/roboto/sass/roboto.scss +12 -12
- package/scss/assets/fonts/roboto-condensed/roboto-condensed.scss +8 -8
- package/scss/assets/fonts/roboto-condensed/sass/_Bold.scss +4 -0
- package/scss/assets/fonts/roboto-condensed/sass/_BoldItalic.scss +4 -0
- package/scss/assets/fonts/roboto-condensed/sass/_Italic.scss +4 -0
- package/scss/assets/fonts/roboto-condensed/sass/_Light.scss +4 -0
- package/scss/assets/fonts/roboto-condensed/sass/_LightItalic.scss +4 -0
- package/scss/assets/fonts/roboto-condensed/sass/_Regular.scss +4 -0
- package/scss/assets/fonts/roboto-condensed/sass/_variables.scss +1 -1
- package/scss/assets/scss/_components.scss +79 -77
- package/scss/assets/scss/_config.scss +183 -0
- package/scss/assets/scss/_font-paths.scss +10 -0
- package/scss/assets/scss/_fonts.import.scss +2 -0
- package/scss/assets/scss/_fonts.scss +13 -55
- package/scss/assets/scss/_foundational.scss +6 -3
- package/scss/assets/scss/_legacy-warnings.scss +37 -0
- package/scss/assets/scss/_mixins.scss +2 -0
- package/scss/assets/scss/_style-all.import.scss +11 -0
- package/scss/assets/scss/_style-delta.import.scss +11 -0
- package/scss/assets/scss/_style-gutenberg.import.scss +11 -0
- package/scss/assets/scss/_style-irp.import.scss +11 -0
- package/scss/assets/scss/_style-mcr.import.scss +11 -0
- package/scss/assets/scss/_style-preventionweb.import.scss +11 -0
- package/scss/assets/scss/_style.import.scss +11 -0
- package/scss/assets/scss/_theme-delta.scss +2 -1
- package/scss/assets/scss/_theme-irp.scss +2 -1
- package/scss/assets/scss/_theme-mcr.scss +2 -1
- package/scss/assets/scss/_theme-preventionweb.scss +2 -1
- package/scss/assets/scss/_utility.scss +3 -0
- package/scss/assets/scss/_variables.import.scss +11 -0
- package/scss/assets/scss/_variables.scss +5 -230
- package/scss/assets/scss/generated/_tokens-mangrove.scss +87 -0
- package/scss/assets/scss/style-all.scss +14 -11
- package/scss/assets/scss/style-delta.scss +11 -8
- package/scss/assets/scss/style-gutenberg.scss +15 -12
- package/scss/assets/scss/style-irp.scss +11 -8
- package/scss/assets/scss/style-mcr.scss +11 -8
- package/scss/assets/scss/style-preventionweb.scss +11 -8
- package/scss/assets/scss/style.scss +10 -7
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
// ---------------------------------------------------------------------
|
|
4
4
|
// Every token in this block is generated from tokens/irp.yaml, merged over
|
|
5
5
|
// tokens/mangrove.yaml and tokens/undrr.yaml.
|
|
6
|
-
@
|
|
6
|
+
@use "generated/tokens-irp" as *;
|
|
7
|
+
@use "tokens-tabs" as *;
|
|
7
8
|
|
|
8
9
|
.mg-theme-irp {
|
|
9
10
|
@include mg-tokens-tabs;
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
// ---------------------------------------------------------------------
|
|
4
4
|
// Every token in this block is generated from tokens/mcr.yaml, merged over
|
|
5
5
|
// tokens/mangrove.yaml and tokens/undrr.yaml.
|
|
6
|
-
@
|
|
6
|
+
@use "generated/tokens-mcr" as *;
|
|
7
|
+
@use "tokens-tabs" as *;
|
|
7
8
|
|
|
8
9
|
.mg-theme-mcr {
|
|
9
10
|
@include mg-tokens-tabs;
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
// ---------------------------------------------------------------------
|
|
4
4
|
// Every token in this block is generated from tokens/preventionweb.yaml, merged over
|
|
5
5
|
// tokens/mangrove.yaml and tokens/undrr.yaml.
|
|
6
|
-
@
|
|
6
|
+
@use "generated/tokens-preventionweb" as *;
|
|
7
|
+
@use "tokens-tabs" as *;
|
|
7
8
|
|
|
8
9
|
.mg-theme-preventionweb {
|
|
9
10
|
@include mg-tokens-tabs;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Legacy globals configure forwarded modules on first load (Sass semantics).
|
|
2
|
+
@use "sass:meta";
|
|
3
|
+
@use "legacy-warnings";
|
|
4
|
+
@forward "variables";
|
|
5
|
+
|
|
6
|
+
// Evaluate in the legacy caller scope, after all module forwards.
|
|
7
|
+
@each $_name in legacy-warnings.$legacy-names {
|
|
8
|
+
@if meta.variable-exists($_name) {
|
|
9
|
+
@include legacy-warnings.warn-override($_name);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Storybook: https://mangrove.undrr.org/
|
|
5
5
|
* LLMs context: https://mangrove.undrr.org/llms.txt
|
|
6
6
|
* Repository: https://github.com/PreventionWeb/undrr-mangrove
|
|
7
|
-
* Version: 2.
|
|
7
|
+
* Version: 2.2.0
|
|
8
8
|
*
|
|
9
9
|
* ██╗ ██╗███╗ ██╗██████╗ ██████╗ ██████╗
|
|
10
10
|
* ██║ ██║████╗ ██║██╔══██╗██╔══██╗██╔══██╗
|
|
@@ -27,210 +27,16 @@
|
|
|
27
27
|
* ███████╗
|
|
28
28
|
* ╚══════╝
|
|
29
29
|
*/
|
|
30
|
-
|
|
31
|
-
@use "
|
|
32
|
-
@
|
|
33
|
-
|
|
34
|
-
// Data-visualisation palettes: categorical, sequential and Sendai target
|
|
35
|
-
// ramps. A distinct concern from brand tokens, sourced from the DLDTS design
|
|
36
|
-
// system. @import must precede rule blocks, hence its position here.
|
|
37
|
-
@import "./tokens-data-viz";
|
|
38
|
-
|
|
39
|
-
// Brand tokens. The palette, the spacing/type/width scales, the semantic
|
|
40
|
-
// tier and every component token a brand can restyle are generated from
|
|
41
|
-
// tokens/mangrove.yaml (the brand-neutral base) merged with tokens/undrr.yaml
|
|
42
|
-
// (UNDRR identity). Editing a value here would be overwritten; edit the YAML
|
|
43
|
-
// and run `yarn build:tokens`.
|
|
44
|
-
@import "./generated/tokens-mangrove";
|
|
45
|
-
|
|
46
|
-
// --- Mangrove 2.0 upgrade guard (build-time) ---
|
|
47
|
-
// Color and spacing tokens are now CSS custom properties. Assigning the old
|
|
48
|
-
// SCSS variables ($mg-color-* / $mg-spacing-*) before importing Mangrove no
|
|
49
|
-
// longer changes anything — it is a silent no-op. If a consumer still defines
|
|
50
|
-
// one of the commonly-overridden token variables, warn loudly at compile time
|
|
51
|
-
// rather than let their brand colors quietly revert to the defaults.
|
|
52
|
-
// See docs/RELEASE-2.0.md (breaking change #1). This fires only for consumer
|
|
53
|
-
// overrides — Mangrove itself no longer defines these SCSS variables.
|
|
54
|
-
@each $_legacy in "mg-color-interactive", "mg-color-interactive-active",
|
|
55
|
-
"mg-color-button-background", "mg-color-button-background--hover",
|
|
56
|
-
"mg-border-color-button", "mg-color-tag", "mg-color-form-check",
|
|
57
|
-
"mg-color-form-focus", "mg-color-hero", "mg-color-hero--secondary",
|
|
58
|
-
"mg-spacing-150", "mg-spacing-300"
|
|
59
|
-
{
|
|
60
|
-
@if meta.variable-exists($_legacy) {
|
|
61
|
-
@warn "Mangrove 2.0: `$#{$_legacy}` no longer has any effect — color and spacing tokens are CSS custom properties now. Move the override into a `.mg-theme-* { --#{$_legacy}: ...; }` block (or `:root`). See docs/RELEASE-2.0.md.";
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// The same guard for the font-family variables removed by the role model
|
|
66
|
-
// (unisdr/undrr-mangrove#1098). Separate loop because each name maps to a
|
|
67
|
-
// different replacement role and the message has to say which.
|
|
68
|
-
// $mg-font-family is the one a consumer is most likely to have set: it carried
|
|
69
|
-
// 22 declarations before the migration.
|
|
70
|
-
@each $_legacy,
|
|
71
|
-
$_role
|
|
72
|
-
in (
|
|
73
|
-
"mg-font-family": "text",
|
|
74
|
-
"mg-font-family-headings": "ui",
|
|
75
|
-
"mg-font-family-condensed": "ui",
|
|
76
|
-
"mg-font-family-icons": "",
|
|
77
|
-
"mg-font-family-arabic-headings": "heading",
|
|
78
|
-
"mg-font-family-arabic-body": "text"
|
|
79
|
-
)
|
|
80
|
-
{
|
|
81
|
-
@if meta.variable-exists($_legacy) {
|
|
82
|
-
@if $_role == "" {
|
|
83
|
-
@warn "Mangrove 2.0: `$#{$_legacy}` no longer exists and has no replacement — it had no stylesheet consumer, and icons.scss names the FontAwesome family directly. See docs/RELEASE-2.0.md.";
|
|
84
|
-
} @else {
|
|
85
|
-
@warn "Mangrove 2.0: `$#{$_legacy}` no longer has any effect — font families are role custom properties now. Move the override into a `.mg-theme-* { --mg-font-family-#{$_role}: ...; }` block (or `:root`). See docs/RELEASE-2.0.md.";
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Root font-size anchor: fixed at the browser-standard 16px root (1rem = 16px),
|
|
91
|
-
// used by mg-rem() to convert intended pixel values to rem at build time. The
|
|
92
|
-
// legacy 10px root — the `!default` override and the style-*-legacy.scss
|
|
93
|
-
// variants — was removed in 2.0; consumers use a standard 16px document root.
|
|
94
|
-
$mg-html-font-size: 16; // BUILD-TIME ONLY
|
|
95
|
-
|
|
96
|
-
// Converts an intended pixel value to rem for the 16px root.
|
|
97
|
-
// Example: mg-rem(16) → 1rem, mg-rem(24) → 1.5rem
|
|
98
|
-
@function mg-rem($px) {
|
|
99
|
-
@return math.div($px, $mg-html-font-size) * 1rem;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// font file variables
|
|
103
|
-
// Path adjusted for Storybook staticDirs (serves assets/ at root, not /assets/)
|
|
104
|
-
$mgIconFontPath: "../fonts/mangrove-icon-set/font" !default; // BUILD-TIME ONLY
|
|
105
|
-
|
|
106
|
-
// image variables
|
|
107
|
-
$img-path: "~/stories/assets/images"; // BUILD-TIME ONLY
|
|
108
|
-
$img-path-Icon: "~/stories/assets/icons"; // BUILD-TIME ONLY
|
|
109
|
-
$img-path-Iconback: "~/stories/assets/icons"; // BUILD-TIME ONLY
|
|
110
|
-
$img-path-Iconfourback: "~/stories/assets/icons"; // BUILD-TIME ONLY
|
|
30
|
+
// Keep data-viz roots before the brand/tab and role roots.
|
|
31
|
+
@use "tokens-data-viz";
|
|
32
|
+
@forward "config";
|
|
33
|
+
@use "config" as *;
|
|
111
34
|
|
|
112
35
|
:root {
|
|
113
36
|
@include mg-tokens-mangrove;
|
|
114
37
|
@include mg-tokens-tabs;
|
|
115
38
|
}
|
|
116
39
|
|
|
117
|
-
$mg-font-body: $mg-font-size-300;
|
|
118
|
-
$mg-font-tag: $mg-font-size-250 !default;
|
|
119
|
-
|
|
120
|
-
// This is not really a "varaible" but kept here for now
|
|
121
|
-
// until we more fully rationalise our design decisions
|
|
122
|
-
@mixin mg-typography($size) {
|
|
123
|
-
@if $size == "extra-small" {
|
|
124
|
-
font-size: var(--mg-font-size-300);
|
|
125
|
-
} @else if $size == "small" {
|
|
126
|
-
font-size: var(--mg-font-size-400);
|
|
127
|
-
} @else if $size == "medium" {
|
|
128
|
-
font-size: var(--mg-font-size-500);
|
|
129
|
-
padding-top: var(--mg-spacing-250);
|
|
130
|
-
padding-bottom: var(--mg-spacing-150);
|
|
131
|
-
} @else if $size == "large" {
|
|
132
|
-
font-size: var(--mg-font-size-600);
|
|
133
|
-
padding-top: var(--mg-spacing-250);
|
|
134
|
-
padding-bottom: var(--mg-spacing-150);
|
|
135
|
-
} @else if $size == "xlarge" {
|
|
136
|
-
font-size: var(--mg-font-size-900);
|
|
137
|
-
padding-top: var(--mg-spacing-300);
|
|
138
|
-
padding-bottom: var(--mg-spacing-175);
|
|
139
|
-
} @else if $size == "huge" {
|
|
140
|
-
font-size: var(--mg-font-size-1000);
|
|
141
|
-
padding-top: var(--mg-spacing-300);
|
|
142
|
-
padding-bottom: var(--mg-spacing-250);
|
|
143
|
-
} @else if $size == "xhuge" {
|
|
144
|
-
font-size: var(--mg-font-size-1100);
|
|
145
|
-
padding-top: var(--mg-spacing-400);
|
|
146
|
-
padding-bottom: var(--mg-spacing-300);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// --- Font faces ---
|
|
151
|
-
// A font stack, rendered for a custom property value with its quoting intact.
|
|
152
|
-
|
|
153
|
-
// Plain interpolation of a Sass list strips the quotes from its quoted
|
|
154
|
-
// members, and a custom property value is parsed as a token stream rather than
|
|
155
|
-
// as a font-family. An override such as
|
|
156
|
-
// `$mg-font-face-sans: "Frutiger 55 Roman", sans-serif` would emit
|
|
157
|
-
// `Frutiger 55 Roman`; `55` is not a valid custom-ident, so the declaration is
|
|
158
|
-
// invalid at computed-value time, the role is never defined, and every element
|
|
159
|
-
// referencing it falls back to the browser's default serif. Frutiger, Univers
|
|
160
|
-
// and Helvetica Neue LT Std all name weights numerically, so this is the
|
|
161
|
-
// common case for the licensed brand faces the `!default` escape hatch exists
|
|
162
|
-
// to admit. `meta.inspect()` renders the list the way Sass wrote it.
|
|
163
|
-
|
|
164
|
-
// It lives here, and _fonts.scss calls it rather than importing `sass:meta`
|
|
165
|
-
// itself: both files are pulled into one scope by the legacy `@import` chain,
|
|
166
|
-
// and two `@use "sass:meta"` rules in that scope collide.
|
|
167
|
-
// See unisdr/undrr-mangrove#1098.
|
|
168
|
-
@function mg-font-stack($stack) {
|
|
169
|
-
@return meta.inspect($stack);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// Faces name what fonts exist. Roles (--mg-font-family-text / -heading /
|
|
173
|
-
// -display / -ui / -code) name the reader's task and are mapped onto these
|
|
174
|
-
// faces per script in _fonts.scss. No component stylesheet may name a
|
|
175
|
-
// face: it references a role. See unisdr/undrr-mangrove#1098.
|
|
176
|
-
|
|
177
|
-
// Faces keep `!default` so a consumer compiling Mangrove from source can swap
|
|
178
|
-
// in a licensed brand face before the import. That is the only way to introduce
|
|
179
|
-
// a face Mangrove does not ship: a runtime role override
|
|
180
|
-
// (`.mg-theme-* { --mg-font-family-ui: ...; }`) can only re-point a role among
|
|
181
|
-
// the faces _fonts.scss already loads @font-face rules for.
|
|
182
|
-
// These variables live outside the brand mixin, so a Sass override applies to
|
|
183
|
-
// every brand in the combined style-all.css. Per-brand faces need the runtime
|
|
184
|
-
// override instead.
|
|
185
|
-
// Quote any family name that is not a plain CSS identifier — anything with a
|
|
186
|
-
// space, a digit-leading word or punctuation. The `:root` block below
|
|
187
|
-
// round-trips these through `mg-font-stack()` so the quotes survive into the
|
|
188
|
-
// emitted custom property; see the note on that function.
|
|
189
|
-
$mg-font-face-sans: "Roboto", sans-serif !default;
|
|
190
|
-
$mg-font-face-sans-condensed: "Roboto Condensed", sans-serif !default;
|
|
191
|
-
$mg-font-face-mono:
|
|
192
|
-
ui-monospace, "SFMono-Regular", "Consolas", "Liberation Mono", "Menlo",
|
|
193
|
-
monospace !default;
|
|
194
|
-
|
|
195
|
-
// Arabic fonts
|
|
196
|
-
// Noto Kufi Arabic for headings, Noto Sans Arabic for body. Decided in
|
|
197
|
-
// unisdr/undrr-mangrove#1089, which replaced Dubai across every brand.
|
|
198
|
-
|
|
199
|
-
// Dubai was inherited from OCHA, but the inheritance was weaker than it looked
|
|
200
|
-
// and had gone out of date on both halves. Dubai was OCHA's ALTERNATIVE
|
|
201
|
-
// subtheme pairing (body only, never headings, Regular only), not their base
|
|
202
|
-
// theme, which used Noto Kufi Arabic. And on 2026-05-28 OCHA's brand guidance
|
|
203
|
-
// moved to Almarai for display and Noto Sans Arabic for body.
|
|
204
|
-
|
|
205
|
-
// Both Noto families are SIL Open Font License 1.1.
|
|
206
|
-
|
|
207
|
-
// This is two Arabic families where 2.0.0-alpha.3 had one. Kufi is a display
|
|
208
|
-
// style -- angular, high contrast, architectural -- so it earns its place in
|
|
209
|
-
// headings and is the wrong choice at body size; Noto Sans Arabic carries the
|
|
210
|
-
// running text and shares Noto Sans' proportions. The second download is
|
|
211
|
-
// subset by unicode-range, so a page pays for the scripts it actually renders.
|
|
212
|
-
|
|
213
|
-
// Only Regular and Bold exist upstream for both families, so Arabic has a
|
|
214
|
-
// 400/700 binary where Latin has a ladder. Nothing is faux bolded: the 600
|
|
215
|
-
// used in _foundational.scss resolves UP to the real Bold. The cost is a lost
|
|
216
|
-
// tier of emphasis, not a rendering defect.
|
|
217
|
-
$mg-font-face-arabic-display: "Noto Kufi Arabic", sans-serif !default;
|
|
218
|
-
$mg-font-face-arabic-sans: "Noto Sans Arabic", sans-serif !default;
|
|
219
|
-
|
|
220
|
-
// BUILD-TIME ONLY — breakpoints cannot be CSS custom properties.
|
|
221
|
-
// @media queries require static values resolved at compile time; var() is invalid there.
|
|
222
|
-
// Do not add --mg-breakpoint-* custom properties.
|
|
223
|
-
$mg-breakpoint-mobile: 480px;
|
|
224
|
-
$mg-breakpoint-tablet: 900px;
|
|
225
|
-
$mg-breakpoint-desktop: 1164px;
|
|
226
|
-
$mg-breakpoint-desktop-wide: 1440px;
|
|
227
|
-
|
|
228
|
-
// tabs
|
|
229
|
-
// BUILD-TIME ONLY: $mg-tabs-border-bottom drives @if conditional in tab.scss.
|
|
230
|
-
// Cannot become a CSS custom property — no runtime conditional equivalent exists.
|
|
231
|
-
// All sub-brands use true. To disable, set to false before @use.
|
|
232
|
-
$mg-tabs-border-bottom: true !default;
|
|
233
|
-
|
|
234
40
|
// Tokens deliberately NOT in the token sources.
|
|
235
41
|
// - The font roles are bound to faces here because every supported build path
|
|
236
42
|
// reaches _variables.scss, including the per-component Sass recipe in
|
|
@@ -365,34 +171,3 @@ $mg-tabs-border-bottom: true !default;
|
|
|
365
171
|
--mg-empty-state-compact-media-size: #{mg-rem(34)};
|
|
366
172
|
--mg-empty-state-compact-font-size: var(--mg-font-size-250);
|
|
367
173
|
}
|
|
368
|
-
|
|
369
|
-
// Header height
|
|
370
|
-
$header-height-xlarge: 115px;
|
|
371
|
-
$header-height-medium: 75px;
|
|
372
|
-
|
|
373
|
-
/* variables end */
|
|
374
|
-
|
|
375
|
-
// stylelint-disable comment-whitespace-inside -- Preserve the fixed-width source easter egg.
|
|
376
|
-
/*============================================================================+
|
|
377
|
-
| [z-level: -2] [Biome: Server Rack] [Activity: Constructing Frameworks] |
|
|
378
|
-
+=============================================================================+
|
|
379
|
-
|X| d | _ _ _ _ ___ ___ ___ c X |
|
|
380
|
-
|X| [HTML] | w | | | | \| | \| _ \ _ \ [JS] | X |
|
|
381
|
-
|X| \--/ | [===] | |_| | | | |) | / / \--/ | X |
|
|
382
|
-
|X| || | || \___/|_|\_|___/|_|_\_|_\ || | d X |
|
|
383
|
-
|X| || | || | [=O=]X|
|
|
384
|
-
|X| c || | || c \ [DB_]X|
|
|
385
|
-
|X| _||_ | _||_ __ __ _ _ _ ___ ___ _____ __ ___ X |
|
|
386
|
-
|X|d [CSS ] | [NODE] | \/ | /_\ | \| |/ __| _ \/ _ \ \ / / | __| X |
|
|
387
|
-
|X|\ \--/ | \--/ | |\/| |/ _ \| | | (_ | / (_) \ V / | _| X |
|
|
388
|
-
|X|| || | d || |_| |_/_/ \_\_|\_|\___|_|_\\___/ \_/ |___| X |
|
|
389
|
-
|X|| || | || X |
|
|
390
|
-
|X|| || d | || ___ w X |
|
|
391
|
-
|X|| [=O=] | || c |_ ) d [=O=] X |
|
|
392
|
-
|X|| [API] | || [DOM] / / [=O=] [JSON] X |
|
|
393
|
-
|X|\============|==== || ========= \--/ /___| [CMS] || X |
|
|
394
|
-
|X| || || || X |
|
|
395
|
-
+=============================================================================+
|
|
396
|
-
| KEY: d=web-dwarf c=coder-dwarf w=wrangler [=O=]=data forge X=stairwell |
|
|
397
|
-
+============================================================================*/
|
|
398
|
-
// stylelint-enable comment-whitespace-inside
|
|
@@ -561,6 +561,93 @@ $mg-font-line-height-700: 1.5em;
|
|
|
561
561
|
// card.icon-badge-radius
|
|
562
562
|
--mg-card-icon-badge-radius: 20%;
|
|
563
563
|
|
|
564
|
+
// card.publication.background
|
|
565
|
+
// Background of book and horizontal book publication teasers.
|
|
566
|
+
--mg-card-publication-background: transparent;
|
|
567
|
+
|
|
568
|
+
// card.publication.padding
|
|
569
|
+
// Outer publication teaser inset; cover-to-caption gaps are separate.
|
|
570
|
+
--mg-card-publication-padding: 0px;
|
|
571
|
+
|
|
572
|
+
// card.publication.border-radius
|
|
573
|
+
// Outer publication surface radius; complete cover artwork remains square.
|
|
574
|
+
--mg-card-publication-border-radius: 0px;
|
|
575
|
+
|
|
576
|
+
// card.publication.shadow
|
|
577
|
+
// Publication surface elevation at rest.
|
|
578
|
+
--mg-card-publication-shadow: none;
|
|
579
|
+
|
|
580
|
+
// card.publication.shadow-hover
|
|
581
|
+
// Linked publication surface elevation on hover.
|
|
582
|
+
--mg-card-publication-shadow-hover: none;
|
|
583
|
+
|
|
584
|
+
// content-meta.font-size
|
|
585
|
+
// Dates, attribution and supporting metadata in content teasers and cards;
|
|
586
|
+
// summaries retain body size.
|
|
587
|
+
--mg-content-meta-font-size: var(--mg-font-size-250);
|
|
588
|
+
|
|
589
|
+
// content-teaser.background
|
|
590
|
+
// Content teaser surface, defaulting to the standard card background
|
|
591
|
+
// independently of publication surfaces.
|
|
592
|
+
--mg-content-teaser-background: var(--mg-card-background);
|
|
593
|
+
|
|
594
|
+
// content-teaser.padding
|
|
595
|
+
// Content inset and complete-cover/logo inset inside the enclosed
|
|
596
|
+
// horizontal teaser; photographs meet the outer edge.
|
|
597
|
+
--mg-content-teaser-padding: var(--mg-card-padding);
|
|
598
|
+
|
|
599
|
+
// content-teaser.border-radius
|
|
600
|
+
// Content teaser enclosure radius, defaulting to the standard card radius.
|
|
601
|
+
--mg-content-teaser-border-radius: var(--mg-card-border-radius);
|
|
602
|
+
|
|
603
|
+
// content-teaser.shadow
|
|
604
|
+
// Content teaser soft enclosure, defaulting to the standard card surface at
|
|
605
|
+
// rest.
|
|
606
|
+
--mg-content-teaser-shadow: var(--mg-card-shadow);
|
|
607
|
+
|
|
608
|
+
// content-teaser.shadow-hover
|
|
609
|
+
// Content teaser soft enclosure on hover, defaulting to the standard card
|
|
610
|
+
// hover surface.
|
|
611
|
+
--mg-content-teaser-shadow-hover: var(--mg-card-shadow-hover);
|
|
612
|
+
|
|
613
|
+
// content-card.title-font-size
|
|
614
|
+
// Title size in vertical content card layouts.
|
|
615
|
+
--mg-content-card-title-font-size: var(--mg-font-size-500);
|
|
616
|
+
|
|
617
|
+
// content-card.book-title-font-size
|
|
618
|
+
// Title size in book card layouts.
|
|
619
|
+
--mg-content-card-book-title-font-size: var(--mg-font-size-300);
|
|
620
|
+
|
|
621
|
+
// content-card.book.background
|
|
622
|
+
// Independent content-card surface; publication surfaces do not determine
|
|
623
|
+
// this value.
|
|
624
|
+
--mg-content-card-book-background: transparent;
|
|
625
|
+
|
|
626
|
+
// content-card.book.padding
|
|
627
|
+
// Independent content-card surface; publication surfaces do not determine
|
|
628
|
+
// this value.
|
|
629
|
+
--mg-content-card-book-padding: 0px;
|
|
630
|
+
|
|
631
|
+
// content-card.book.border-radius
|
|
632
|
+
// Independent content-card surface; publication surfaces do not determine
|
|
633
|
+
// this value.
|
|
634
|
+
--mg-content-card-book-border-radius: 0px;
|
|
635
|
+
|
|
636
|
+
// content-card.book.shadow
|
|
637
|
+
// Independent content-card surface; publication surfaces do not determine
|
|
638
|
+
// this value.
|
|
639
|
+
--mg-content-card-book-shadow: none;
|
|
640
|
+
|
|
641
|
+
// content-card.book.shadow-hover
|
|
642
|
+
// Independent content-card surface; publication surfaces do not determine
|
|
643
|
+
// this value.
|
|
644
|
+
--mg-content-card-book-shadow-hover: none;
|
|
645
|
+
|
|
646
|
+
// search.book-cover-height
|
|
647
|
+
// Desktop search book-grid media stage; missing media reserves this space
|
|
648
|
+
// only in multi-column layouts.
|
|
649
|
+
--mg-search-book-cover-height: 20rem;
|
|
650
|
+
|
|
564
651
|
// notice.action-secondary
|
|
565
652
|
--mg-notice-action-secondary: rgb(var(--mg-color-button-outline-secondary));
|
|
566
653
|
|
|
@@ -6,14 +6,17 @@
|
|
|
6
6
|
// rebuild needed to switch brands. Prefer a per-brand entry
|
|
7
7
|
// (style-preventionweb.scss, etc.) for single-brand sites; use this bundle for
|
|
8
8
|
// multi-brand or runtime-switching pages. See docs/RELEASE-2.0.md.
|
|
9
|
-
@
|
|
10
|
-
@
|
|
11
|
-
@
|
|
12
|
-
@
|
|
13
|
-
@
|
|
14
|
-
@
|
|
15
|
-
@
|
|
16
|
-
@
|
|
17
|
-
@
|
|
18
|
-
@
|
|
19
|
-
@
|
|
9
|
+
@forward "font-paths";
|
|
10
|
+
@forward "variables";
|
|
11
|
+
@use "variables" as *;
|
|
12
|
+
@use "theme-preventionweb" as *;
|
|
13
|
+
@use "theme-irp" as *;
|
|
14
|
+
@use "theme-mcr" as *;
|
|
15
|
+
@use "theme-delta" as *;
|
|
16
|
+
@forward "fonts";
|
|
17
|
+
@use "fonts" as *;
|
|
18
|
+
@forward "breakpoints";
|
|
19
|
+
@forward "mixins";
|
|
20
|
+
@use "utility" as *;
|
|
21
|
+
@use "foundational" as *;
|
|
22
|
+
@use "components" as *;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
@
|
|
2
|
-
@
|
|
3
|
-
@
|
|
4
|
-
@
|
|
5
|
-
@
|
|
6
|
-
@
|
|
7
|
-
@
|
|
8
|
-
@
|
|
1
|
+
@forward "font-paths";
|
|
2
|
+
@forward "variables";
|
|
3
|
+
@use "variables" as *;
|
|
4
|
+
@use "theme-delta" as *;
|
|
5
|
+
@forward "fonts";
|
|
6
|
+
@use "fonts" as *;
|
|
7
|
+
@forward "breakpoints";
|
|
8
|
+
@forward "mixins";
|
|
9
|
+
@use "utility" as *;
|
|
10
|
+
@use "foundational" as *;
|
|
11
|
+
@use "components" as *;
|
|
@@ -9,20 +9,23 @@
|
|
|
9
9
|
* https://git.un.org/undrr/web-backlog/-/issues/545
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
@
|
|
13
|
-
@
|
|
14
|
-
@
|
|
15
|
-
@
|
|
16
|
-
@
|
|
12
|
+
@forward "font-paths";
|
|
13
|
+
@forward "variables";
|
|
14
|
+
@use "variables" as *;
|
|
15
|
+
@forward "fonts";
|
|
16
|
+
@use "fonts" as *;
|
|
17
|
+
@forward "breakpoints";
|
|
18
|
+
@forward "mixins";
|
|
19
|
+
@use "utility" as *;
|
|
17
20
|
|
|
18
21
|
// @import './base';
|
|
19
22
|
|
|
20
23
|
// We only bring in a limited set of components needed for gutenberg
|
|
21
24
|
// @import './components';
|
|
22
|
-
@
|
|
23
|
-
@
|
|
24
|
-
@
|
|
25
|
-
@
|
|
26
|
-
@
|
|
27
|
-
@
|
|
28
|
-
@
|
|
25
|
+
@use "../../Atom/Layout/Container/container" as *;
|
|
26
|
+
@use "../../Atom/Layout/Grid/grid" as *;
|
|
27
|
+
@use "../../Components/Buttons/CtaButton/cta-button" as *;
|
|
28
|
+
@use "../../Components/Cards/Card/card" as *;
|
|
29
|
+
@use "../../Components/Hero/hero" as *;
|
|
30
|
+
@use "../../Components/Tab/tab" as *;
|
|
31
|
+
@use "../../Utilities/FullWidth/full-width" as *;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
@
|
|
2
|
-
@
|
|
3
|
-
@
|
|
4
|
-
@
|
|
5
|
-
@
|
|
6
|
-
@
|
|
7
|
-
@
|
|
8
|
-
@
|
|
1
|
+
@forward "font-paths";
|
|
2
|
+
@forward "variables";
|
|
3
|
+
@use "variables" as *;
|
|
4
|
+
@use "theme-irp" as *;
|
|
5
|
+
@forward "fonts";
|
|
6
|
+
@use "fonts" as *;
|
|
7
|
+
@forward "breakpoints";
|
|
8
|
+
@forward "mixins";
|
|
9
|
+
@use "utility" as *;
|
|
10
|
+
@use "foundational" as *;
|
|
11
|
+
@use "components" as *;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
@
|
|
2
|
-
@
|
|
3
|
-
@
|
|
4
|
-
@
|
|
5
|
-
@
|
|
6
|
-
@
|
|
7
|
-
@
|
|
8
|
-
@
|
|
1
|
+
@forward "font-paths";
|
|
2
|
+
@forward "variables";
|
|
3
|
+
@use "variables" as *;
|
|
4
|
+
@use "theme-mcr" as *;
|
|
5
|
+
@forward "fonts";
|
|
6
|
+
@use "fonts" as *;
|
|
7
|
+
@forward "breakpoints";
|
|
8
|
+
@forward "mixins";
|
|
9
|
+
@use "utility" as *;
|
|
10
|
+
@use "foundational" as *;
|
|
11
|
+
@use "components" as *;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
@
|
|
2
|
-
@
|
|
3
|
-
@
|
|
4
|
-
@
|
|
5
|
-
@
|
|
6
|
-
@
|
|
7
|
-
@
|
|
8
|
-
@
|
|
1
|
+
@forward "font-paths";
|
|
2
|
+
@forward "variables";
|
|
3
|
+
@use "variables" as *;
|
|
4
|
+
@use "theme-preventionweb" as *;
|
|
5
|
+
@forward "fonts";
|
|
6
|
+
@use "fonts" as *;
|
|
7
|
+
@forward "breakpoints";
|
|
8
|
+
@forward "mixins";
|
|
9
|
+
@use "utility" as *;
|
|
10
|
+
@use "foundational" as *;
|
|
11
|
+
@use "components" as *;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
@
|
|
2
|
-
@
|
|
3
|
-
@
|
|
4
|
-
@
|
|
5
|
-
@
|
|
6
|
-
@
|
|
7
|
-
@
|
|
1
|
+
@forward "font-paths";
|
|
2
|
+
@forward "variables";
|
|
3
|
+
@use "variables" as *;
|
|
4
|
+
@forward "fonts";
|
|
5
|
+
@use "fonts" as *;
|
|
6
|
+
@forward "breakpoints";
|
|
7
|
+
@forward "mixins";
|
|
8
|
+
@use "utility" as *;
|
|
9
|
+
@use "foundational" as *;
|
|
10
|
+
@use "components" as *;
|