@undrr/undrr-mangrove 2.1.1 → 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 +52 -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
|
@@ -1,102 +1,104 @@
|
|
|
1
1
|
// A rollup of all Mangrove components
|
|
2
2
|
|
|
3
3
|
// Normalize
|
|
4
|
-
@
|
|
4
|
+
@use "../../Utilities/Normalize/normalize" as *;
|
|
5
5
|
|
|
6
6
|
// Atom
|
|
7
|
-
@
|
|
8
|
-
@
|
|
9
|
-
@
|
|
10
|
-
@
|
|
11
|
-
@
|
|
12
|
-
@
|
|
13
|
-
@
|
|
14
|
-
@
|
|
7
|
+
@use "../../Atom/BaseTypography/Abbr/abbr" as *;
|
|
8
|
+
@use "../../Atom/BaseTypography/Blockquote/blockquote" as *;
|
|
9
|
+
@use "../../Atom/BaseTypography/Cite/cite" as *;
|
|
10
|
+
@use "../../Atom/BaseTypography/Code/code" as *;
|
|
11
|
+
@use "../../Atom/BaseTypography/Mark/mark" as *;
|
|
12
|
+
@use "../../Atom/BaseTypography/Quotation/quotation" as *;
|
|
13
|
+
@use "../../Atom/BaseTypography/Small/small" as *;
|
|
14
|
+
@use "../../Atom/Colors/color" as *;
|
|
15
15
|
|
|
16
16
|
// Icon definitions — included here so every theme CSS file contains icons.
|
|
17
17
|
// See: https://github.com/unisdr/undrr-mangrove/issues/906
|
|
18
|
-
@
|
|
19
|
-
@
|
|
20
|
-
@
|
|
21
|
-
@
|
|
22
|
-
@
|
|
23
|
-
@
|
|
24
|
-
@
|
|
25
|
-
@
|
|
18
|
+
@use "../../Atom/Icons/icons" as *;
|
|
19
|
+
@use "../../Atom/Images/AuthorImage/author-image" as *;
|
|
20
|
+
@use "../../Atom/Images/Image/image" as *;
|
|
21
|
+
@use "../../Atom/Images/ImageCaptionCredit/image-caption-credit" as *;
|
|
22
|
+
@use "../../Atom/Images/ImageCredit/image-credit" as *;
|
|
23
|
+
@use "../../Atom/Layout/Container/container" as *;
|
|
24
|
+
@use "../../Atom/Layout/Grid/grid" as *;
|
|
25
|
+
@use "../../Atom/Logo/logo" as *;
|
|
26
26
|
|
|
27
27
|
// @import "../../Atom/Layout/Spacing/spacing"; // Retried
|
|
28
28
|
// @import "../../Atom/Navigation/Breadcrumb/breadcrumb"; // Retried
|
|
29
|
-
@
|
|
30
|
-
@
|
|
31
|
-
@
|
|
32
|
-
@
|
|
33
|
-
@
|
|
34
|
-
@
|
|
35
|
-
@
|
|
36
|
-
@
|
|
29
|
+
@use "../../Atom/Navigation/MenuItems/menu-items" as *;
|
|
30
|
+
@use "../../Atom/ReachElement/Details/details" as *;
|
|
31
|
+
@use "../../Atom/ReachElement/Figcaption/figcaption" as *;
|
|
32
|
+
@use "../../Atom/EmptyState/empty-state" as *;
|
|
33
|
+
@use "../../Atom/StatusLabel/status-label" as *;
|
|
34
|
+
@use "../../Atom/Table/table" as *;
|
|
35
|
+
@use "../../Atom/Tag/tag" as *;
|
|
36
|
+
@use "../../Atom/Video/video" as *;
|
|
37
37
|
|
|
38
38
|
// Components
|
|
39
|
-
@
|
|
40
|
-
@
|
|
41
|
-
@
|
|
42
|
-
@
|
|
43
|
-
@
|
|
44
|
-
@
|
|
45
|
-
@
|
|
46
|
-
@
|
|
47
|
-
@
|
|
48
|
-
@
|
|
49
|
-
@
|
|
50
|
-
@
|
|
39
|
+
@use "../../Components/Boilerplate/boilerplate" as *;
|
|
40
|
+
@use "../../Components/Forms/form-base" as *;
|
|
41
|
+
@use "../../Components/Forms/FormAction/form-action" as *;
|
|
42
|
+
@use "../../Components/Forms/FormGroup/form-group" as *;
|
|
43
|
+
@use "../../Components/Forms/TextInput/text-input" as *;
|
|
44
|
+
@use "../../Components/Forms/Textarea/textarea" as *;
|
|
45
|
+
@use "../../Components/Forms/Checkbox/checkbox" as *;
|
|
46
|
+
@use "../../Components/Forms/Radio/radio" as *;
|
|
47
|
+
@use "../../Components/Forms/SegmentedControl/segmented-control" as *;
|
|
48
|
+
@use "../../Components/Forms/Select/select" as *;
|
|
49
|
+
@use "../../Components/Forms/Range/range" as *;
|
|
50
|
+
@use "../../Components/Breadcrumbs/breadcrumbs" as *;
|
|
51
51
|
|
|
52
52
|
// Deprecated (February 2026) — removal planned by end of 2026. Use Pager instead.
|
|
53
|
-
@
|
|
54
|
-
@
|
|
55
|
-
@
|
|
56
|
-
@
|
|
57
|
-
@
|
|
58
|
-
@
|
|
59
|
-
@
|
|
60
|
-
@
|
|
61
|
-
@
|
|
62
|
-
@
|
|
63
|
-
@
|
|
64
|
-
@
|
|
65
|
-
@
|
|
66
|
-
@
|
|
67
|
-
@
|
|
68
|
-
@
|
|
69
|
-
@
|
|
70
|
-
@
|
|
71
|
-
@
|
|
72
|
-
@
|
|
73
|
-
@
|
|
74
|
-
@
|
|
75
|
-
@
|
|
76
|
-
@
|
|
53
|
+
@use "../../Components/Pager/pager" as *;
|
|
54
|
+
@use "../../Components/Gallery/gallery" as *;
|
|
55
|
+
@use "../../Components/HighlightBox/highlight-box" as *;
|
|
56
|
+
@use "../../Components/QuoteHighlight/quote-highlight" as *;
|
|
57
|
+
@use "../../Components/Buttons/Chips/chips" as *;
|
|
58
|
+
@use "../../Components/Buttons/CtaButton/cta-button" as *;
|
|
59
|
+
@use "../../Components/Buttons/ShareButtons/share-buttons" as *;
|
|
60
|
+
@use "../../Components/Buttons/CopyButton/copy-button" as *;
|
|
61
|
+
@use "../../Components/MegaMenu/mega-menu" as *;
|
|
62
|
+
@use "../../Patterns/HubHeader/hub-header" as *;
|
|
63
|
+
@use "../../Components/CiteThis/cite-this" as *;
|
|
64
|
+
@use "../../Utilities/PagePatterns/page-patterns" as *;
|
|
65
|
+
@use "../../Components/PageHeader/page-header" as *;
|
|
66
|
+
@use "../../Components/Cards/Card/card" as *;
|
|
67
|
+
@use "../../Components/Cards/StatsCard/stats-card" as *;
|
|
68
|
+
@use "../../Components/Snackbar/snackbar" as *;
|
|
69
|
+
@use "../../Components/CookieConsentBanner/cookie-consent-banner" as *;
|
|
70
|
+
@use "../../Components/Hero/hero" as *;
|
|
71
|
+
@use "../../Components/TextCta/text-cta" as *;
|
|
72
|
+
@use "../../Components/Notice/notice" as *;
|
|
73
|
+
@use "../../Components/ProgressBar/progress-bar" as *;
|
|
74
|
+
@use "../../Components/ScrollContainer/scroll-container" as *;
|
|
75
|
+
@use "../../Components/Tab/tab" as *;
|
|
76
|
+
@use "../../Components/UserFeedback/user-feedback" as *;
|
|
77
77
|
|
|
78
78
|
// CSS+vanilla-JS component — Drupal integration via Gutenberg block, not a React export.
|
|
79
|
-
@
|
|
80
|
-
@
|
|
81
|
-
@
|
|
82
|
-
@
|
|
79
|
+
@use "../../Components/TableOfContents/table-of-contents" as *;
|
|
80
|
+
@use "../../Components/OnThisPageNav/on-this-page-nav" as *;
|
|
81
|
+
@use "../../Components/PreviewAccess/preview-access" as *;
|
|
82
|
+
@use "../../Components/SyndicationSearchWidget/syndication-search-widget" as *;
|
|
83
83
|
|
|
84
84
|
// CSS+static-HTML component — not a React export. Static pages in dist/assets/error-pages/.
|
|
85
|
-
@
|
|
86
|
-
@
|
|
85
|
+
@use "../../Components/ErrorPages/error-pages" as *;
|
|
86
|
+
@use "../../Components/Footer/footer" as *;
|
|
87
87
|
|
|
88
88
|
// Molecules
|
|
89
|
-
@
|
|
89
|
+
@use "../../Molecules/ImageCaption/image-caption" as *;
|
|
90
90
|
|
|
91
91
|
// Utilities
|
|
92
|
-
@
|
|
93
|
-
@
|
|
94
|
-
@
|
|
95
|
-
@
|
|
96
|
-
@
|
|
97
|
-
@
|
|
98
|
-
@
|
|
99
|
-
@
|
|
92
|
+
@use "../../Utilities/EmbedContainer/embed-container" as *;
|
|
93
|
+
@use "../../Utilities/Loader/loader" as *;
|
|
94
|
+
@use "../../Utilities/FullWidth/full-width" as *;
|
|
95
|
+
@use "../../Utilities/ShowMore/show-more" as *;
|
|
96
|
+
@use "../../Utilities/SkipLink/skip-link" as *;
|
|
97
|
+
@use "../../Components/DataViz/Legend/legend" as *;
|
|
98
|
+
@use "../../Components/Navigation/Drawer/drawer" as *;
|
|
99
|
+
@use "../../Components/Navigation/Tree/tree" as *;
|
|
100
100
|
|
|
101
101
|
// Opt-in editorial defaults follow component styles; classed islands opt out.
|
|
102
|
-
@
|
|
102
|
+
@use "../../Patterns/RichContent/rich-content" as *;
|
|
103
|
+
@use "../../Patterns/ContentTeaser/content-teaser";
|
|
104
|
+
@use "../../Patterns/ContentCard/content-card";
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
// Internal CSS-free build-time configuration and public Sass helpers.
|
|
2
|
+
// Public consumers load variables for the foundational root declarations.
|
|
3
|
+
@use "sass:math";
|
|
4
|
+
@use "sass:meta";
|
|
5
|
+
@forward "tokens-tabs";
|
|
6
|
+
@use "tokens-tabs" as *;
|
|
7
|
+
|
|
8
|
+
// Brand tokens. The palette, the spacing/type/width scales, the semantic
|
|
9
|
+
// tier and every component token a brand can restyle are generated from
|
|
10
|
+
// tokens/mangrove.yaml (the brand-neutral base) merged with tokens/undrr.yaml
|
|
11
|
+
// (UNDRR identity). Editing a value here would be overwritten; edit the YAML
|
|
12
|
+
// and run `yarn build:tokens`.
|
|
13
|
+
@forward "generated/tokens-mangrove";
|
|
14
|
+
@use "generated/tokens-mangrove" as *;
|
|
15
|
+
|
|
16
|
+
// Root font-size anchor: fixed at the browser-standard 16px root (1rem = 16px),
|
|
17
|
+
// used by mg-rem() to convert intended pixel values to rem at build time. The
|
|
18
|
+
// legacy 10px root — the `!default` override and the style-*-legacy.scss
|
|
19
|
+
// variants — was removed in 2.0; consumers use a standard 16px document root.
|
|
20
|
+
$mg-html-font-size: 16; // BUILD-TIME ONLY
|
|
21
|
+
|
|
22
|
+
// Converts an intended pixel value to rem for the 16px root.
|
|
23
|
+
// Example: mg-rem(16) → 1rem, mg-rem(24) → 1.5rem
|
|
24
|
+
@function mg-rem($px) {
|
|
25
|
+
@return math.div($px, $mg-html-font-size) * 1rem;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// font file variables
|
|
29
|
+
// Path adjusted for Storybook staticDirs (serves assets/ at root, not /assets/)
|
|
30
|
+
$mgIconFontPath: "../fonts/mangrove-icon-set/font" !default; // BUILD-TIME ONLY
|
|
31
|
+
|
|
32
|
+
// image variables
|
|
33
|
+
$img-path: "~/stories/assets/images"; // BUILD-TIME ONLY
|
|
34
|
+
$img-path-Icon: "~/stories/assets/icons"; // BUILD-TIME ONLY
|
|
35
|
+
$img-path-Iconback: "~/stories/assets/icons"; // BUILD-TIME ONLY
|
|
36
|
+
$img-path-Iconfourback: "~/stories/assets/icons"; // BUILD-TIME ONLY
|
|
37
|
+
|
|
38
|
+
$mg-font-body: $mg-font-size-300;
|
|
39
|
+
$mg-font-tag: $mg-font-size-250 !default;
|
|
40
|
+
|
|
41
|
+
// This is not really a "varaible" but kept here for now
|
|
42
|
+
// until we more fully rationalise our design decisions
|
|
43
|
+
@mixin mg-typography($size) {
|
|
44
|
+
@if $size == "extra-small" {
|
|
45
|
+
font-size: var(--mg-font-size-300);
|
|
46
|
+
} @else if $size == "small" {
|
|
47
|
+
font-size: var(--mg-font-size-400);
|
|
48
|
+
} @else if $size == "medium" {
|
|
49
|
+
font-size: var(--mg-font-size-500);
|
|
50
|
+
padding-top: var(--mg-spacing-250);
|
|
51
|
+
padding-bottom: var(--mg-spacing-150);
|
|
52
|
+
} @else if $size == "large" {
|
|
53
|
+
font-size: var(--mg-font-size-600);
|
|
54
|
+
padding-top: var(--mg-spacing-250);
|
|
55
|
+
padding-bottom: var(--mg-spacing-150);
|
|
56
|
+
} @else if $size == "xlarge" {
|
|
57
|
+
font-size: var(--mg-font-size-900);
|
|
58
|
+
padding-top: var(--mg-spacing-300);
|
|
59
|
+
padding-bottom: var(--mg-spacing-175);
|
|
60
|
+
} @else if $size == "huge" {
|
|
61
|
+
font-size: var(--mg-font-size-1000);
|
|
62
|
+
padding-top: var(--mg-spacing-300);
|
|
63
|
+
padding-bottom: var(--mg-spacing-250);
|
|
64
|
+
} @else if $size == "xhuge" {
|
|
65
|
+
font-size: var(--mg-font-size-1100);
|
|
66
|
+
padding-top: var(--mg-spacing-400);
|
|
67
|
+
padding-bottom: var(--mg-spacing-300);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// --- Font faces ---
|
|
72
|
+
// A font stack, rendered for a custom property value with its quoting intact.
|
|
73
|
+
|
|
74
|
+
// Plain interpolation of a Sass list strips the quotes from its quoted
|
|
75
|
+
// members, and a custom property value is parsed as a token stream rather than
|
|
76
|
+
// as a font-family. An override such as
|
|
77
|
+
// `$mg-font-face-sans: "Frutiger 55 Roman", sans-serif` would emit
|
|
78
|
+
// `Frutiger 55 Roman`; `55` is not a valid custom-ident, so the declaration is
|
|
79
|
+
// invalid at computed-value time, the role is never defined, and every element
|
|
80
|
+
// referencing it falls back to the browser's default serif. Frutiger, Univers
|
|
81
|
+
// and Helvetica Neue LT Std all name weights numerically, so this is the
|
|
82
|
+
// common case for the licensed brand faces the `!default` escape hatch exists
|
|
83
|
+
// to admit. `meta.inspect()` renders the list the way Sass wrote it.
|
|
84
|
+
|
|
85
|
+
// It lives here so both role definitions and the fonts module preserve
|
|
86
|
+
// quoted family names in exactly the same way.
|
|
87
|
+
// See unisdr/undrr-mangrove#1098.
|
|
88
|
+
@function mg-font-stack($stack) {
|
|
89
|
+
@return meta.inspect($stack);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Faces name what fonts exist. Roles (--mg-font-family-text / -heading /
|
|
93
|
+
// -display / -ui / -code) name the reader's task and are mapped onto these
|
|
94
|
+
// faces per script in _fonts.scss. No component stylesheet may name a
|
|
95
|
+
// face: it references a role. See unisdr/undrr-mangrove#1098.
|
|
96
|
+
|
|
97
|
+
// Faces keep `!default` so a consumer compiling Mangrove from source can swap
|
|
98
|
+
// in a licensed brand face before the import. That is the only way to introduce
|
|
99
|
+
// a face Mangrove does not ship: a runtime role override
|
|
100
|
+
// (`.mg-theme-* { --mg-font-family-ui: ...; }`) can only re-point a role among
|
|
101
|
+
// the faces _fonts.scss already loads @font-face rules for.
|
|
102
|
+
// These variables live outside the brand mixin, so a Sass override applies to
|
|
103
|
+
// every brand in the combined style-all.css. Per-brand faces need the runtime
|
|
104
|
+
// override instead.
|
|
105
|
+
// Quote any family name that is not a plain CSS identifier — anything with a
|
|
106
|
+
// space, a digit-leading word or punctuation. The public variables `:root` block
|
|
107
|
+
// round-trips these through `mg-font-stack()` so the quotes survive into the
|
|
108
|
+
// emitted custom property; see the note on that function.
|
|
109
|
+
$mg-font-face-sans: "Roboto", sans-serif !default;
|
|
110
|
+
$mg-font-face-sans-condensed: "Roboto Condensed", sans-serif !default;
|
|
111
|
+
$mg-font-face-mono:
|
|
112
|
+
ui-monospace, "SFMono-Regular", "Consolas", "Liberation Mono", "Menlo",
|
|
113
|
+
monospace !default;
|
|
114
|
+
|
|
115
|
+
// Arabic fonts
|
|
116
|
+
// Noto Kufi Arabic for headings, Noto Sans Arabic for body. Decided in
|
|
117
|
+
// unisdr/undrr-mangrove#1089, which replaced Dubai across every brand.
|
|
118
|
+
|
|
119
|
+
// Dubai was inherited from OCHA, but the inheritance was weaker than it looked
|
|
120
|
+
// and had gone out of date on both halves. Dubai was OCHA's ALTERNATIVE
|
|
121
|
+
// subtheme pairing (body only, never headings, Regular only), not their base
|
|
122
|
+
// theme, which used Noto Kufi Arabic. And on 2026-05-28 OCHA's brand guidance
|
|
123
|
+
// moved to Almarai for display and Noto Sans Arabic for body.
|
|
124
|
+
|
|
125
|
+
// Both Noto families are SIL Open Font License 1.1.
|
|
126
|
+
|
|
127
|
+
// This is two Arabic families where 2.0.0-alpha.3 had one. Kufi is a display
|
|
128
|
+
// style -- angular, high contrast, architectural -- so it earns its place in
|
|
129
|
+
// headings and is the wrong choice at body size; Noto Sans Arabic carries the
|
|
130
|
+
// running text and shares Noto Sans' proportions. The second download is
|
|
131
|
+
// subset by unicode-range, so a page pays for the scripts it actually renders.
|
|
132
|
+
|
|
133
|
+
// Only Regular and Bold exist upstream for both families, so Arabic has a
|
|
134
|
+
// 400/700 binary where Latin has a ladder. Nothing is faux bolded: the 600
|
|
135
|
+
// used in _foundational.scss resolves UP to the real Bold. The cost is a lost
|
|
136
|
+
// tier of emphasis, not a rendering defect.
|
|
137
|
+
$mg-font-face-arabic-display: "Noto Kufi Arabic", sans-serif !default;
|
|
138
|
+
$mg-font-face-arabic-sans: "Noto Sans Arabic", sans-serif !default;
|
|
139
|
+
|
|
140
|
+
// BUILD-TIME ONLY — breakpoints cannot be CSS custom properties.
|
|
141
|
+
// @media queries require static values resolved at compile time; var() is invalid there.
|
|
142
|
+
// Do not add --mg-breakpoint-* custom properties.
|
|
143
|
+
$mg-breakpoint-mobile: 480px;
|
|
144
|
+
$mg-breakpoint-tablet: 900px;
|
|
145
|
+
$mg-breakpoint-desktop: 1164px;
|
|
146
|
+
$mg-breakpoint-desktop-wide: 1440px;
|
|
147
|
+
|
|
148
|
+
// tabs
|
|
149
|
+
// BUILD-TIME ONLY: $mg-tabs-border-bottom drives @if conditional in tab.scss.
|
|
150
|
+
// Cannot become a CSS custom property — no runtime conditional equivalent exists.
|
|
151
|
+
// All sub-brands use true. To disable, set to false before @use.
|
|
152
|
+
$mg-tabs-border-bottom: true !default;
|
|
153
|
+
|
|
154
|
+
// Header height
|
|
155
|
+
$header-height-xlarge: 115px;
|
|
156
|
+
$header-height-medium: 75px;
|
|
157
|
+
|
|
158
|
+
/* variables end */
|
|
159
|
+
|
|
160
|
+
// stylelint-disable comment-whitespace-inside -- Preserve the fixed-width source easter egg.
|
|
161
|
+
/*============================================================================+
|
|
162
|
+
| [z-level: -2] [Biome: Server Rack] [Activity: Constructing Frameworks] |
|
|
163
|
+
+=============================================================================+
|
|
164
|
+
|X| d | _ _ _ _ ___ ___ ___ c X |
|
|
165
|
+
|X| [HTML] | w | | | | \| | \| _ \ _ \ [JS] | X |
|
|
166
|
+
|X| \--/ | [===] | |_| | | | |) | / / \--/ | X |
|
|
167
|
+
|X| || | || \___/|_|\_|___/|_|_\_|_\ || | d X |
|
|
168
|
+
|X| || | || | [=O=]X|
|
|
169
|
+
|X| c || | || c \ [DB_]X|
|
|
170
|
+
|X| _||_ | _||_ __ __ _ _ _ ___ ___ _____ __ ___ X |
|
|
171
|
+
|X|d [CSS ] | [NODE] | \/ | /_\ | \| |/ __| _ \/ _ \ \ / / | __| X |
|
|
172
|
+
|X|\ \--/ | \--/ | |\/| |/ _ \| | | (_ | / (_) \ V / | _| X |
|
|
173
|
+
|X|| || | d || |_| |_/_/ \_\_|\_|\___|_|_\\___/ \_/ |___| X |
|
|
174
|
+
|X|| || | || X |
|
|
175
|
+
|X|| || d | || ___ w X |
|
|
176
|
+
|X|| [=O=] | || c |_ ) d [=O=] X |
|
|
177
|
+
|X|| [API] | || [DOM] / / [=O=] [JSON] X |
|
|
178
|
+
|X|\============|==== || ========= \--/ /___| [CMS] || X |
|
|
179
|
+
|X| || || || X |
|
|
180
|
+
+=============================================================================+
|
|
181
|
+
| KEY: d=web-dwarf c=coder-dwarf w=wrangler [=O=]=data forge X=stairwell |
|
|
182
|
+
+============================================================================*/
|
|
183
|
+
// stylelint-enable comment-whitespace-inside
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Build-time font asset URLs. Shared by the font entry point and face modules.
|
|
2
|
+
$font-path-roboto: "https://assets.undrr.org/fonts/roboto/v1.0.0" !default;
|
|
3
|
+
$font-path-roboto-condensed: "https://assets.undrr.org/fonts/roboto-condensed/v1.0.0" !default;
|
|
4
|
+
$font-path-noto-kufi-arabic: "https://assets.undrr.org/fonts/noto-kufi-arabic/v1.1.0" !default;
|
|
5
|
+
$font-path-noto-sans-arabic: "https://assets.undrr.org/fonts/noto-sans-arabic/v1.0.0" !default;
|
|
6
|
+
|
|
7
|
+
// Legacy Roboto file-name/version hooks were shared by the import chain.
|
|
8
|
+
// Keep one source for both Roboto families, including configured overrides.
|
|
9
|
+
$FontName: "Roboto" !default;
|
|
10
|
+
$font-version: "2.137" !default;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
@forward "font-paths";
|
|
2
|
+
@use "../fonts/roboto/roboto" as *;
|
|
3
|
+
@use "../fonts/roboto-condensed/roboto-condensed" as *;
|
|
4
|
+
@use "../fonts/noto-kufi-arabic/noto-kufi-arabic" as *;
|
|
5
|
+
@use "../fonts/noto-sans-arabic/noto-sans-arabic" as *;
|
|
6
|
+
@use "config" as *;
|
|
7
|
+
|
|
1
8
|
// The font entry point. This file owns everything about type FACES: the asset
|
|
2
9
|
// paths, the `@font-face` declarations, and the script routing that re-points
|
|
3
10
|
// the font roles for Arabic. There is one font import, not two —
|
|
@@ -30,61 +37,12 @@
|
|
|
30
37
|
// read as prose and take `text`.
|
|
31
38
|
// code code / pre
|
|
32
39
|
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
// IMPORT THIS FILE EXACTLY ONCE PER BUILD. Sass's legacy `@import` re-emits,
|
|
41
|
-
// and `@import` is not allowed inside `@if`, so the `@font-face` partials below
|
|
42
|
-
// cannot be guarded — a second visit would duplicate all 32 blocks. Every
|
|
43
|
-
// supported build path reaches it once and only once:
|
|
44
|
-
|
|
45
|
-
// - the seven style*.scss entry points import _variables.scss and then this
|
|
46
|
-
// file, both directly;
|
|
47
|
-
// - the shared import list every UNDRR Drupal theme compiles
|
|
48
|
-
// (undrr_common/scss/_mangrove-components.scss) names `fonts` in its own
|
|
49
|
-
// right — first in the list, ahead of breakpoints, mixins, foundational and
|
|
50
|
-
// utility. It does NOT name `variables` anywhere: the theme entry point one
|
|
51
|
-
// level up supplies that, either as `@use "variables" as *` or as a plain
|
|
52
|
-
// `@import`, before it reaches the list. So the ordering rule above is a
|
|
53
|
-
// contract across two files, and copying or reordering that list without
|
|
54
|
-
// carrying its entry point's `variables` import is a compile error;
|
|
55
|
-
// - the per-component recipe in SassIntegration.mdx names both, in order.
|
|
56
|
-
|
|
57
|
-
// _foundational.scss therefore does NOT import it. It used to import
|
|
58
|
-
// _font-roles.scss, because that file was reachable from the entry points only
|
|
59
|
-
// and every production site was compiling the roles with no Arabic map behind
|
|
60
|
-
// them: Arabic text asked for Roboto, which has no Arabic coverage, and every
|
|
61
|
-
// glyph fell back to the OS default. Silently. Folding the map into the file
|
|
62
|
-
// consumers already import closes that hole at the source instead of routing
|
|
63
|
-
// around it. A test in __tests__/font-roles.test.js counts the `@font-face`
|
|
64
|
-
// blocks in every compiled bundle and in the consumer import list, so adding a
|
|
65
|
-
// second import of this file fails the suite rather than shipping quietly.
|
|
66
|
-
|
|
67
|
-
/* Roboto */
|
|
68
|
-
$font-path-roboto: "https://assets.undrr.org/fonts/roboto/v1.0.0" !default;
|
|
69
|
-
|
|
70
|
-
@import "../fonts/roboto/roboto";
|
|
71
|
-
|
|
72
|
-
/* Roboto Condensed */
|
|
73
|
-
$font-path-roboto-condensed: "https://assets.undrr.org/fonts/roboto-condensed/v1.0.0" !default;
|
|
74
|
-
|
|
75
|
-
@import "../fonts/roboto-condensed/roboto-condensed";
|
|
76
|
-
|
|
77
|
-
/* Arabic Fonts */
|
|
78
|
-
|
|
79
|
-
/* Noto Kufi Arabic - for headings in Arabic */
|
|
80
|
-
$font-path-noto-kufi-arabic: "https://assets.undrr.org/fonts/noto-kufi-arabic/v1.1.0" !default;
|
|
81
|
-
|
|
82
|
-
@import "../fonts/noto-kufi-arabic/noto-kufi-arabic";
|
|
83
|
-
|
|
84
|
-
/* Noto Sans Arabic - for body text in Arabic */
|
|
85
|
-
$font-path-noto-sans-arabic: "https://assets.undrr.org/fonts/noto-sans-arabic/v1.0.0" !default;
|
|
86
|
-
|
|
87
|
-
@import "../fonts/noto-sans-arabic/noto-sans-arabic";
|
|
40
|
+
// Module dependencies are explicit: variables owns role definitions and
|
|
41
|
+
// font-paths owns configurable asset URLs without loading any face modules.
|
|
42
|
+
// @use emits these faces once even when several consumers depend on fonts.
|
|
43
|
+
// Legacy @import consumers are routed through _fonts.import.scss to preserve
|
|
44
|
+
// pre-import URL assignments. The shared Drupal import list and the published
|
|
45
|
+
// per-component recipe are covered by __tests__/font-roles.test.js.
|
|
88
46
|
|
|
89
47
|
@mixin mg-font-roles-arabic {
|
|
90
48
|
--mg-font-family-text: #{mg-font-stack($mg-font-face-arabic-sans)};
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
@use "breakpoints" as *;
|
|
2
|
+
@use "mixins" as *;
|
|
3
|
+
@use "config" as *;
|
|
4
|
+
|
|
1
5
|
/* typography start */
|
|
2
6
|
*,
|
|
3
7
|
*::before,
|
|
@@ -71,9 +75,8 @@ caption {
|
|
|
71
75
|
// Latin face and _fonts.scss re-points to Noto Kufi Arabic. Compile
|
|
72
76
|
// _foundational.scss without _fonts.scss and the rule still matches but
|
|
73
77
|
// resolves to Roboto, which has no Arabic coverage. Every documented import
|
|
74
|
-
// list names both
|
|
75
|
-
//
|
|
76
|
-
// 32 `@font-face` blocks a second time.
|
|
78
|
+
// list names both. Keep face loading in the fonts module, which emits its
|
|
79
|
+
// 32 text `@font-face` blocks once for every supported entry point.
|
|
77
80
|
h1:lang(ar),
|
|
78
81
|
h2:lang(ar),
|
|
79
82
|
h3:lang(ar) {
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Import-only bridges inspect the caller's scope; this module owns the
|
|
2
|
+
// shared diagnostics so entry-point bridges cannot drift from variables.
|
|
3
|
+
@use "sass:map";
|
|
4
|
+
|
|
5
|
+
$legacy-roles: (
|
|
6
|
+
"mg-color-interactive": null,
|
|
7
|
+
"mg-color-interactive-active": null,
|
|
8
|
+
"mg-color-button-background": null,
|
|
9
|
+
"mg-color-button-background--hover": null,
|
|
10
|
+
"mg-border-color-button": null,
|
|
11
|
+
"mg-color-tag": null,
|
|
12
|
+
"mg-color-form-check": null,
|
|
13
|
+
"mg-color-form-focus": null,
|
|
14
|
+
"mg-color-hero": null,
|
|
15
|
+
"mg-color-hero--secondary": null,
|
|
16
|
+
"mg-spacing-150": null,
|
|
17
|
+
"mg-spacing-300": null,
|
|
18
|
+
"mg-font-family": "text",
|
|
19
|
+
"mg-font-family-headings": "ui",
|
|
20
|
+
"mg-font-family-condensed": "ui",
|
|
21
|
+
"mg-font-family-icons": "",
|
|
22
|
+
"mg-font-family-arabic-headings": "heading",
|
|
23
|
+
"mg-font-family-arabic-body": "text",
|
|
24
|
+
);
|
|
25
|
+
$legacy-names: map.keys($legacy-roles);
|
|
26
|
+
|
|
27
|
+
@mixin warn-override($name) {
|
|
28
|
+
$role: map.get($legacy-roles, $name);
|
|
29
|
+
|
|
30
|
+
@if not $role {
|
|
31
|
+
@warn "Mangrove 2.0: `$#{$name}` no longer has any effect — color and spacing tokens are CSS custom properties now. Move the override into a `.mg-theme-* { --#{$name}: ...; }` block (or `:root`). See docs/RELEASE-2.0.md.";
|
|
32
|
+
} @else if $role == "" {
|
|
33
|
+
@warn "Mangrove 2.0: `$#{$name}` 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.";
|
|
34
|
+
} @else {
|
|
35
|
+
@warn "Mangrove 2.0: `$#{$name}` 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.";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -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 "style-all";
|
|
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
|
+
}
|
|
@@ -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 "style-delta";
|
|
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
|
+
}
|
|
@@ -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 "style-gutenberg";
|
|
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
|
+
}
|
|
@@ -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 "style-irp";
|
|
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
|
+
}
|
|
@@ -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 "style-mcr";
|
|
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
|
+
}
|
|
@@ -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 "style-preventionweb";
|
|
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
|
+
}
|
|
@@ -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 "style";
|
|
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
|
+
}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
// ---------------------------------------------------------------------
|
|
4
4
|
// Every token in this block is generated from tokens/delta.yaml, merged over
|
|
5
5
|
// tokens/mangrove.yaml and tokens/undrr.yaml.
|
|
6
|
-
@
|
|
6
|
+
@use "generated/tokens-delta" as *;
|
|
7
|
+
@use "tokens-tabs" as *;
|
|
7
8
|
|
|
8
9
|
.mg-theme-delta {
|
|
9
10
|
@include mg-tokens-tabs;
|