@canopy-iiif/app 1.11.2 → 1.12.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/lib/build/search.js +1 -1
- package/lib/build/sitemap.js +1 -1
- package/lib/search/search-form-runtime.js +1 -1
- package/lib/search/search.js +1 -4
- package/package.json +1 -1
- package/ui/dist/index.mjs +5 -5
- package/ui/dist/index.mjs.map +1 -1
- package/ui/dist/server.mjs +5 -5
- package/ui/dist/server.mjs.map +1 -1
package/ui/dist/server.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../lib/default-locale.js", "../../../../node_modules/slugify/slugify.js", "../src/HelloWorld.jsx", "../src/iiif/Viewer.jsx", "../src/iiif/Slider.jsx", "../src/iiif/sliderOptions.js", "../src/iiif/Scroll.jsx", "../src/iiif/Image.jsx", "../src/iiif/ImageStory.jsx", "../src/iiif/imageStoryRuntime.js", "../src/iiif/MdxRelatedItems.jsx", "../src/interstitials/index.js", "../src/interstitials/Hero.jsx", "../src/interstitials/hero-utils.js", "../src/layout/Button.jsx", "../src/layout/ButtonWrapper.jsx", "../src/locale/index.js", "../src/layout/pageContext.js", "../src/layout/SubNavigation.jsx", "../src/layout/NavigationTree.jsx", "../src/layout/ContentNavigation.jsx", "../src/layout/headingUtils.js", "../src/layout/ContentNavigationScript.jsx", "../src/layout/Layout.jsx", "../src/layout/CanopyHeader.jsx", "../src/search/SearchPanel.jsx", "../src/Icons.jsx", "../src/search/SearchPanelForm.jsx", "../src/search/SearchPanelTeaserResults.jsx", "../src/layout/CanopyBrand.jsx", "../src/layout/CanopyModal.jsx", "../src/layout/LanguageToggle.jsx", "../src/layout/languageToggleShared.jsx", "../src/layout/CanopyFooter.jsx", "../src/layout/TeaserCard.jsx", "../src/layout/GoogleAnalytics.jsx", "../src/layout/Container.jsx", "../src/layout/Card.jsx", "../src/content/ReferencedItems.jsx", "../src/content/References.jsx", "../src/content/Index.jsx", "../src/content/Bibliography.jsx", "../src/content/timeline/MdxTimeline.jsx", "../src/content/timeline/Timeline.jsx", "../src/content/timeline/date-utils.js", "../src/layout/ReferencedManifestCard.jsx", "../src/utils/keyLegend.js", "../src/content/timeline/TimelinePoint.jsx", "../src/utils/manifestReferences.js", "../src/content/map/MdxMap.jsx", "../src/content/map/MapPoint.jsx", "../src/content/gallery/Gallery.jsx", "../src/search/MdxSearchResults.jsx", "../src/search/SearchSummary.jsx", "../src/search/MdxSearchTabs.jsx", "../src/search/MdxSearch.jsx", "../src/search-form/MdxSearchFormModal.jsx", "../src/iiif/ManifestPrimitives.jsx", "../src/iiif/Properties/Id.jsx", "../src/docs/CodeBlock.jsx", "../src/docs/MarkdownTable.jsx", "../src/docs/Diagram.jsx", "../src/docs/ThemeShowcase.jsx", "../../../../node_modules/@radix-ui/colors/index.mjs"],
|
|
4
|
-
"sourcesContent": ["/**\n * This file is auto-generated from content/locale.yml.\n * Run `node packages/helpers/locales/sync-default-locale.js` after updating locale copy.\n */\nmodule.exports = {\n routes: {\n search: 'search',\n works: 'works'\n },\n common: {\n actions: {\n open: 'Open',\n close: 'Close',\n clear: 'Clear',\n clear_all: 'Clear all',\n done: 'Done',\n show: 'Show',\n hide: 'Hide'\n },\n nouns: {\n search: 'Search',\n filters: 'Filters',\n results: 'results',\n values: 'values',\n types: 'types',\n items: 'items',\n navigation: 'navigation',\n section_navigation: 'section navigation',\n content_navigation: 'content navigation',\n primary_navigation: 'Primary navigation',\n metadata: 'metadata',\n gallery: 'gallery',\n gallery_thumbnails: 'gallery thumbnails',\n map: 'map',\n map_data: 'map data',\n map_locations: 'map locations',\n item_label: 'Item',\n details: 'details',\n breadcrumb: 'Breadcrumb',\n home: 'Home'\n },\n types: {\n work: 'Works',\n page: 'Pages',\n docs: 'Docs'\n },\n statuses: {\n loading: 'Loading\u2026',\n empty_short: 'No {content}',\n empty_detail: 'No {content} available.',\n unavailable: '{content} unavailable.',\n unavailable_detail: '{content} is unavailable.',\n failed: 'Unable to load {content}.',\n loading_content: 'Loading {content}\u2026',\n summary_content: 'Showing {shown} of {total} {content}',\n search_summary: 'Found {shown} of {total} in {type} for \"{query}\"',\n no_matches: 'No matches found.'\n },\n phrases: {\n placeholder_search: 'Search\u2026',\n results_label: 'Search results',\n open_content: 'Open {content}',\n close_content: 'Close {content}',\n show_content: 'Show {content}',\n hide_content: 'Hide {content}',\n nav_label: '{content} navigation',\n search_content: 'Search {content}',\n filter_values: 'Filter {content} values',\n clear_content_search: 'Clear {content} search',\n none_applied: 'No {content} applied',\n applied_count: '{count} {content} applied',\n toggle_content: 'Toggle {content}',\n scroll_direction_content: 'Scroll {direction} through {content}',\n step_content: '{direction} {content}',\n item_numbered: '{content} {index}',\n content_key: '{content} key'\n },\n directions: {\n left: 'left',\n right: 'right',\n previous: 'Previous',\n next: 'Next'\n },\n misc: {\n referenced_by: 'Referenced by',\n on_this_page: 'On this page'\n }\n }\n};\n", "\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"\u00A2\":\"cent\",\"\u00A3\":\"pound\",\"\u00A4\":\"currency\",\"\u00A5\":\"yen\",\"\u00A9\":\"(c)\",\"\u00AA\":\"a\",\"\u00AE\":\"(r)\",\"\u00BA\":\"o\",\"\u00C0\":\"A\",\"\u00C1\":\"A\",\"\u00C2\":\"A\",\"\u00C3\":\"A\",\"\u00C4\":\"A\",\"\u00C5\":\"A\",\"\u00C6\":\"AE\",\"\u00C7\":\"C\",\"\u00C8\":\"E\",\"\u00C9\":\"E\",\"\u00CA\":\"E\",\"\u00CB\":\"E\",\"\u00CC\":\"I\",\"\u00CD\":\"I\",\"\u00CE\":\"I\",\"\u00CF\":\"I\",\"\u00D0\":\"D\",\"\u00D1\":\"N\",\"\u00D2\":\"O\",\"\u00D3\":\"O\",\"\u00D4\":\"O\",\"\u00D5\":\"O\",\"\u00D6\":\"O\",\"\u00D8\":\"O\",\"\u00D9\":\"U\",\"\u00DA\":\"U\",\"\u00DB\":\"U\",\"\u00DC\":\"U\",\"\u00DD\":\"Y\",\"\u00DE\":\"TH\",\"\u00DF\":\"ss\",\"\u00E0\":\"a\",\"\u00E1\":\"a\",\"\u00E2\":\"a\",\"\u00E3\":\"a\",\"\u00E4\":\"a\",\"\u00E5\":\"a\",\"\u00E6\":\"ae\",\"\u00E7\":\"c\",\"\u00E8\":\"e\",\"\u00E9\":\"e\",\"\u00EA\":\"e\",\"\u00EB\":\"e\",\"\u00EC\":\"i\",\"\u00ED\":\"i\",\"\u00EE\":\"i\",\"\u00EF\":\"i\",\"\u00F0\":\"d\",\"\u00F1\":\"n\",\"\u00F2\":\"o\",\"\u00F3\":\"o\",\"\u00F4\":\"o\",\"\u00F5\":\"o\",\"\u00F6\":\"o\",\"\u00F8\":\"o\",\"\u00F9\":\"u\",\"\u00FA\":\"u\",\"\u00FB\":\"u\",\"\u00FC\":\"u\",\"\u00FD\":\"y\",\"\u00FE\":\"th\",\"\u00FF\":\"y\",\"\u0100\":\"A\",\"\u0101\":\"a\",\"\u0102\":\"A\",\"\u0103\":\"a\",\"\u0104\":\"A\",\"\u0105\":\"a\",\"\u0106\":\"C\",\"\u0107\":\"c\",\"\u010C\":\"C\",\"\u010D\":\"c\",\"\u010E\":\"D\",\"\u010F\":\"d\",\"\u0110\":\"DJ\",\"\u0111\":\"dj\",\"\u0112\":\"E\",\"\u0113\":\"e\",\"\u0116\":\"E\",\"\u0117\":\"e\",\"\u0118\":\"e\",\"\u0119\":\"e\",\"\u011A\":\"E\",\"\u011B\":\"e\",\"\u011E\":\"G\",\"\u011F\":\"g\",\"\u0122\":\"G\",\"\u0123\":\"g\",\"\u0128\":\"I\",\"\u0129\":\"i\",\"\u012A\":\"i\",\"\u012B\":\"i\",\"\u012E\":\"I\",\"\u012F\":\"i\",\"\u0130\":\"I\",\"\u0131\":\"i\",\"\u0136\":\"k\",\"\u0137\":\"k\",\"\u013B\":\"L\",\"\u013C\":\"l\",\"\u013D\":\"L\",\"\u013E\":\"l\",\"\u0141\":\"L\",\"\u0142\":\"l\",\"\u0143\":\"N\",\"\u0144\":\"n\",\"\u0145\":\"N\",\"\u0146\":\"n\",\"\u0147\":\"N\",\"\u0148\":\"n\",\"\u014C\":\"O\",\"\u014D\":\"o\",\"\u0150\":\"O\",\"\u0151\":\"o\",\"\u0152\":\"OE\",\"\u0153\":\"oe\",\"\u0154\":\"R\",\"\u0155\":\"r\",\"\u0158\":\"R\",\"\u0159\":\"r\",\"\u015A\":\"S\",\"\u015B\":\"s\",\"\u015E\":\"S\",\"\u015F\":\"s\",\"\u0160\":\"S\",\"\u0161\":\"s\",\"\u0162\":\"T\",\"\u0163\":\"t\",\"\u0164\":\"T\",\"\u0165\":\"t\",\"\u0168\":\"U\",\"\u0169\":\"u\",\"\u016A\":\"u\",\"\u016B\":\"u\",\"\u016E\":\"U\",\"\u016F\":\"u\",\"\u0170\":\"U\",\"\u0171\":\"u\",\"\u0172\":\"U\",\"\u0173\":\"u\",\"\u0174\":\"W\",\"\u0175\":\"w\",\"\u0176\":\"Y\",\"\u0177\":\"y\",\"\u0178\":\"Y\",\"\u0179\":\"Z\",\"\u017A\":\"z\",\"\u017B\":\"Z\",\"\u017C\":\"z\",\"\u017D\":\"Z\",\"\u017E\":\"z\",\"\u018F\":\"E\",\"\u0192\":\"f\",\"\u01A0\":\"O\",\"\u01A1\":\"o\",\"\u01AF\":\"U\",\"\u01B0\":\"u\",\"\u01C8\":\"LJ\",\"\u01C9\":\"lj\",\"\u01CB\":\"NJ\",\"\u01CC\":\"nj\",\"\u0218\":\"S\",\"\u0219\":\"s\",\"\u021A\":\"T\",\"\u021B\":\"t\",\"\u0259\":\"e\",\"\u02DA\":\"o\",\"\u0386\":\"A\",\"\u0388\":\"E\",\"\u0389\":\"H\",\"\u038A\":\"I\",\"\u038C\":\"O\",\"\u038E\":\"Y\",\"\u038F\":\"W\",\"\u0390\":\"i\",\"\u0391\":\"A\",\"\u0392\":\"B\",\"\u0393\":\"G\",\"\u0394\":\"D\",\"\u0395\":\"E\",\"\u0396\":\"Z\",\"\u0397\":\"H\",\"\u0398\":\"8\",\"\u0399\":\"I\",\"\u039A\":\"K\",\"\u039B\":\"L\",\"\u039C\":\"M\",\"\u039D\":\"N\",\"\u039E\":\"3\",\"\u039F\":\"O\",\"\u03A0\":\"P\",\"\u03A1\":\"R\",\"\u03A3\":\"S\",\"\u03A4\":\"T\",\"\u03A5\":\"Y\",\"\u03A6\":\"F\",\"\u03A7\":\"X\",\"\u03A8\":\"PS\",\"\u03A9\":\"W\",\"\u03AA\":\"I\",\"\u03AB\":\"Y\",\"\u03AC\":\"a\",\"\u03AD\":\"e\",\"\u03AE\":\"h\",\"\u03AF\":\"i\",\"\u03B0\":\"y\",\"\u03B1\":\"a\",\"\u03B2\":\"b\",\"\u03B3\":\"g\",\"\u03B4\":\"d\",\"\u03B5\":\"e\",\"\u03B6\":\"z\",\"\u03B7\":\"h\",\"\u03B8\":\"8\",\"\u03B9\":\"i\",\"\u03BA\":\"k\",\"\u03BB\":\"l\",\"\u03BC\":\"m\",\"\u03BD\":\"n\",\"\u03BE\":\"3\",\"\u03BF\":\"o\",\"\u03C0\":\"p\",\"\u03C1\":\"r\",\"\u03C2\":\"s\",\"\u03C3\":\"s\",\"\u03C4\":\"t\",\"\u03C5\":\"y\",\"\u03C6\":\"f\",\"\u03C7\":\"x\",\"\u03C8\":\"ps\",\"\u03C9\":\"w\",\"\u03CA\":\"i\",\"\u03CB\":\"y\",\"\u03CC\":\"o\",\"\u03CD\":\"y\",\"\u03CE\":\"w\",\"\u0401\":\"Yo\",\"\u0402\":\"DJ\",\"\u0404\":\"Ye\",\"\u0406\":\"I\",\"\u0407\":\"Yi\",\"\u0408\":\"J\",\"\u0409\":\"LJ\",\"\u040A\":\"NJ\",\"\u040B\":\"C\",\"\u040F\":\"DZ\",\"\u0410\":\"A\",\"\u0411\":\"B\",\"\u0412\":\"V\",\"\u0413\":\"G\",\"\u0414\":\"D\",\"\u0415\":\"E\",\"\u0416\":\"Zh\",\"\u0417\":\"Z\",\"\u0418\":\"I\",\"\u0419\":\"J\",\"\u041A\":\"K\",\"\u041B\":\"L\",\"\u041C\":\"M\",\"\u041D\":\"N\",\"\u041E\":\"O\",\"\u041F\":\"P\",\"\u0420\":\"R\",\"\u0421\":\"S\",\"\u0422\":\"T\",\"\u0423\":\"U\",\"\u0424\":\"F\",\"\u0425\":\"H\",\"\u0426\":\"C\",\"\u0427\":\"Ch\",\"\u0428\":\"Sh\",\"\u0429\":\"Sh\",\"\u042A\":\"U\",\"\u042B\":\"Y\",\"\u042C\":\"\",\"\u042D\":\"E\",\"\u042E\":\"Yu\",\"\u042F\":\"Ya\",\"\u0430\":\"a\",\"\u0431\":\"b\",\"\u0432\":\"v\",\"\u0433\":\"g\",\"\u0434\":\"d\",\"\u0435\":\"e\",\"\u0436\":\"zh\",\"\u0437\":\"z\",\"\u0438\":\"i\",\"\u0439\":\"j\",\"\u043A\":\"k\",\"\u043B\":\"l\",\"\u043C\":\"m\",\"\u043D\":\"n\",\"\u043E\":\"o\",\"\u043F\":\"p\",\"\u0440\":\"r\",\"\u0441\":\"s\",\"\u0442\":\"t\",\"\u0443\":\"u\",\"\u0444\":\"f\",\"\u0445\":\"h\",\"\u0446\":\"c\",\"\u0447\":\"ch\",\"\u0448\":\"sh\",\"\u0449\":\"sh\",\"\u044A\":\"u\",\"\u044B\":\"y\",\"\u044C\":\"\",\"\u044D\":\"e\",\"\u044E\":\"yu\",\"\u044F\":\"ya\",\"\u0451\":\"yo\",\"\u0452\":\"dj\",\"\u0454\":\"ye\",\"\u0456\":\"i\",\"\u0457\":\"yi\",\"\u0458\":\"j\",\"\u0459\":\"lj\",\"\u045A\":\"nj\",\"\u045B\":\"c\",\"\u045D\":\"u\",\"\u045F\":\"dz\",\"\u0490\":\"G\",\"\u0491\":\"g\",\"\u0492\":\"GH\",\"\u0493\":\"gh\",\"\u049A\":\"KH\",\"\u049B\":\"kh\",\"\u04A2\":\"NG\",\"\u04A3\":\"ng\",\"\u04AE\":\"UE\",\"\u04AF\":\"ue\",\"\u04B0\":\"U\",\"\u04B1\":\"u\",\"\u04BA\":\"H\",\"\u04BB\":\"h\",\"\u04D8\":\"AE\",\"\u04D9\":\"ae\",\"\u04E8\":\"OE\",\"\u04E9\":\"oe\",\"\u0531\":\"A\",\"\u0532\":\"B\",\"\u0533\":\"G\",\"\u0534\":\"D\",\"\u0535\":\"E\",\"\u0536\":\"Z\",\"\u0537\":\"E\\'\",\"\u0538\":\"Y\\'\",\"\u0539\":\"T\\'\",\"\u053A\":\"JH\",\"\u053B\":\"I\",\"\u053C\":\"L\",\"\u053D\":\"X\",\"\u053E\":\"C\\'\",\"\u053F\":\"K\",\"\u0540\":\"H\",\"\u0541\":\"D\\'\",\"\u0542\":\"GH\",\"\u0543\":\"TW\",\"\u0544\":\"M\",\"\u0545\":\"Y\",\"\u0546\":\"N\",\"\u0547\":\"SH\",\"\u0549\":\"CH\",\"\u054A\":\"P\",\"\u054B\":\"J\",\"\u054C\":\"R\\'\",\"\u054D\":\"S\",\"\u054E\":\"V\",\"\u054F\":\"T\",\"\u0550\":\"R\",\"\u0551\":\"C\",\"\u0553\":\"P\\'\",\"\u0554\":\"Q\\'\",\"\u0555\":\"O\\'\\'\",\"\u0556\":\"F\",\"\u0587\":\"EV\",\"\u0621\":\"a\",\"\u0622\":\"aa\",\"\u0623\":\"a\",\"\u0624\":\"u\",\"\u0625\":\"i\",\"\u0626\":\"e\",\"\u0627\":\"a\",\"\u0628\":\"b\",\"\u0629\":\"h\",\"\u062A\":\"t\",\"\u062B\":\"th\",\"\u062C\":\"j\",\"\u062D\":\"h\",\"\u062E\":\"kh\",\"\u062F\":\"d\",\"\u0630\":\"th\",\"\u0631\":\"r\",\"\u0632\":\"z\",\"\u0633\":\"s\",\"\u0634\":\"sh\",\"\u0635\":\"s\",\"\u0636\":\"dh\",\"\u0637\":\"t\",\"\u0638\":\"z\",\"\u0639\":\"a\",\"\u063A\":\"gh\",\"\u0641\":\"f\",\"\u0642\":\"q\",\"\u0643\":\"k\",\"\u0644\":\"l\",\"\u0645\":\"m\",\"\u0646\":\"n\",\"\u0647\":\"h\",\"\u0648\":\"w\",\"\u0649\":\"a\",\"\u064A\":\"y\",\"\u064B\":\"an\",\"\u064C\":\"on\",\"\u064D\":\"en\",\"\u064E\":\"a\",\"\u064F\":\"u\",\"\u0650\":\"e\",\"\u0652\":\"\",\"\u0660\":\"0\",\"\u0661\":\"1\",\"\u0662\":\"2\",\"\u0663\":\"3\",\"\u0664\":\"4\",\"\u0665\":\"5\",\"\u0666\":\"6\",\"\u0667\":\"7\",\"\u0668\":\"8\",\"\u0669\":\"9\",\"\u067E\":\"p\",\"\u0686\":\"ch\",\"\u0698\":\"zh\",\"\u06A9\":\"k\",\"\u06AF\":\"g\",\"\u06CC\":\"y\",\"\u06F0\":\"0\",\"\u06F1\":\"1\",\"\u06F2\":\"2\",\"\u06F3\":\"3\",\"\u06F4\":\"4\",\"\u06F5\":\"5\",\"\u06F6\":\"6\",\"\u06F7\":\"7\",\"\u06F8\":\"8\",\"\u06F9\":\"9\",\"\u0E3F\":\"baht\",\"\u10D0\":\"a\",\"\u10D1\":\"b\",\"\u10D2\":\"g\",\"\u10D3\":\"d\",\"\u10D4\":\"e\",\"\u10D5\":\"v\",\"\u10D6\":\"z\",\"\u10D7\":\"t\",\"\u10D8\":\"i\",\"\u10D9\":\"k\",\"\u10DA\":\"l\",\"\u10DB\":\"m\",\"\u10DC\":\"n\",\"\u10DD\":\"o\",\"\u10DE\":\"p\",\"\u10DF\":\"zh\",\"\u10E0\":\"r\",\"\u10E1\":\"s\",\"\u10E2\":\"t\",\"\u10E3\":\"u\",\"\u10E4\":\"f\",\"\u10E5\":\"k\",\"\u10E6\":\"gh\",\"\u10E7\":\"q\",\"\u10E8\":\"sh\",\"\u10E9\":\"ch\",\"\u10EA\":\"ts\",\"\u10EB\":\"dz\",\"\u10EC\":\"ts\",\"\u10ED\":\"ch\",\"\u10EE\":\"kh\",\"\u10EF\":\"j\",\"\u10F0\":\"h\",\"\u1E62\":\"S\",\"\u1E63\":\"s\",\"\u1E80\":\"W\",\"\u1E81\":\"w\",\"\u1E82\":\"W\",\"\u1E83\":\"w\",\"\u1E84\":\"W\",\"\u1E85\":\"w\",\"\u1E9E\":\"SS\",\"\u1EA0\":\"A\",\"\u1EA1\":\"a\",\"\u1EA2\":\"A\",\"\u1EA3\":\"a\",\"\u1EA4\":\"A\",\"\u1EA5\":\"a\",\"\u1EA6\":\"A\",\"\u1EA7\":\"a\",\"\u1EA8\":\"A\",\"\u1EA9\":\"a\",\"\u1EAA\":\"A\",\"\u1EAB\":\"a\",\"\u1EAC\":\"A\",\"\u1EAD\":\"a\",\"\u1EAE\":\"A\",\"\u1EAF\":\"a\",\"\u1EB0\":\"A\",\"\u1EB1\":\"a\",\"\u1EB2\":\"A\",\"\u1EB3\":\"a\",\"\u1EB4\":\"A\",\"\u1EB5\":\"a\",\"\u1EB6\":\"A\",\"\u1EB7\":\"a\",\"\u1EB8\":\"E\",\"\u1EB9\":\"e\",\"\u1EBA\":\"E\",\"\u1EBB\":\"e\",\"\u1EBC\":\"E\",\"\u1EBD\":\"e\",\"\u1EBE\":\"E\",\"\u1EBF\":\"e\",\"\u1EC0\":\"E\",\"\u1EC1\":\"e\",\"\u1EC2\":\"E\",\"\u1EC3\":\"e\",\"\u1EC4\":\"E\",\"\u1EC5\":\"e\",\"\u1EC6\":\"E\",\"\u1EC7\":\"e\",\"\u1EC8\":\"I\",\"\u1EC9\":\"i\",\"\u1ECA\":\"I\",\"\u1ECB\":\"i\",\"\u1ECC\":\"O\",\"\u1ECD\":\"o\",\"\u1ECE\":\"O\",\"\u1ECF\":\"o\",\"\u1ED0\":\"O\",\"\u1ED1\":\"o\",\"\u1ED2\":\"O\",\"\u1ED3\":\"o\",\"\u1ED4\":\"O\",\"\u1ED5\":\"o\",\"\u1ED6\":\"O\",\"\u1ED7\":\"o\",\"\u1ED8\":\"O\",\"\u1ED9\":\"o\",\"\u1EDA\":\"O\",\"\u1EDB\":\"o\",\"\u1EDC\":\"O\",\"\u1EDD\":\"o\",\"\u1EDE\":\"O\",\"\u1EDF\":\"o\",\"\u1EE0\":\"O\",\"\u1EE1\":\"o\",\"\u1EE2\":\"O\",\"\u1EE3\":\"o\",\"\u1EE4\":\"U\",\"\u1EE5\":\"u\",\"\u1EE6\":\"U\",\"\u1EE7\":\"u\",\"\u1EE8\":\"U\",\"\u1EE9\":\"u\",\"\u1EEA\":\"U\",\"\u1EEB\":\"u\",\"\u1EEC\":\"U\",\"\u1EED\":\"u\",\"\u1EEE\":\"U\",\"\u1EEF\":\"u\",\"\u1EF0\":\"U\",\"\u1EF1\":\"u\",\"\u1EF2\":\"Y\",\"\u1EF3\":\"y\",\"\u1EF4\":\"Y\",\"\u1EF5\":\"y\",\"\u1EF6\":\"Y\",\"\u1EF7\":\"y\",\"\u1EF8\":\"Y\",\"\u1EF9\":\"y\",\"\u2013\":\"-\",\"\u2018\":\"\\'\",\"\u2019\":\"\\'\",\"\u201C\":\"\\\\\\\"\",\"\u201D\":\"\\\\\\\"\",\"\u201E\":\"\\\\\\\"\",\"\u2020\":\"+\",\"\u2022\":\"*\",\"\u2026\":\"...\",\"\u20A0\":\"ecu\",\"\u20A2\":\"cruzeiro\",\"\u20A3\":\"french franc\",\"\u20A4\":\"lira\",\"\u20A5\":\"mill\",\"\u20A6\":\"naira\",\"\u20A7\":\"peseta\",\"\u20A8\":\"rupee\",\"\u20A9\":\"won\",\"\u20AA\":\"new shequel\",\"\u20AB\":\"dong\",\"\u20AC\":\"euro\",\"\u20AD\":\"kip\",\"\u20AE\":\"tugrik\",\"\u20AF\":\"drachma\",\"\u20B0\":\"penny\",\"\u20B1\":\"peso\",\"\u20B2\":\"guarani\",\"\u20B3\":\"austral\",\"\u20B4\":\"hryvnia\",\"\u20B5\":\"cedi\",\"\u20B8\":\"kazakhstani tenge\",\"\u20B9\":\"indian rupee\",\"\u20BA\":\"turkish lira\",\"\u20BD\":\"russian ruble\",\"\u20BF\":\"bitcoin\",\"\u2120\":\"sm\",\"\u2122\":\"tm\",\"\u2202\":\"d\",\"\u2206\":\"delta\",\"\u2211\":\"sum\",\"\u221E\":\"infinity\",\"\u2665\":\"love\",\"\u5143\":\"yuan\",\"\u5186\":\"yen\",\"\uFDFC\":\"rial\",\"\uFEF5\":\"laa\",\"\uFEF7\":\"laa\",\"\uFEF9\":\"lai\",\"\uFEFB\":\"la\"}')\n var locales = JSON.parse('{\"bg\":{\"\u0419\":\"Y\",\"\u0426\":\"Ts\",\"\u0429\":\"Sht\",\"\u042A\":\"A\",\"\u042C\":\"Y\",\"\u0439\":\"y\",\"\u0446\":\"ts\",\"\u0449\":\"sht\",\"\u044A\":\"a\",\"\u044C\":\"y\"},\"de\":{\"\u00C4\":\"AE\",\"\u00E4\":\"ae\",\"\u00D6\":\"OE\",\"\u00F6\":\"oe\",\"\u00DC\":\"UE\",\"\u00FC\":\"ue\",\"\u00DF\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"\u2211\":\"summe\",\"\u221E\":\"unendlich\",\"\u2665\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"\u00A2\":\"centavos\",\"\u00A3\":\"libras\",\"\u00A4\":\"moneda\",\"\u20A3\":\"francos\",\"\u2211\":\"suma\",\"\u221E\":\"infinito\",\"\u2665\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"\u00A2\":\"centime\",\"\u00A3\":\"livre\",\"\u00A4\":\"devise\",\"\u20A3\":\"franc\",\"\u2211\":\"somme\",\"\u221E\":\"infini\",\"\u2665\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"\u00A2\":\"centavo\",\"\u2211\":\"soma\",\"\u00A3\":\"libra\",\"\u221E\":\"infinito\",\"\u2665\":\"amor\"},\"uk\":{\"\u0418\":\"Y\",\"\u0438\":\"y\",\"\u0419\":\"Y\",\"\u0439\":\"y\",\"\u0426\":\"Ts\",\"\u0446\":\"ts\",\"\u0425\":\"Kh\",\"\u0445\":\"kh\",\"\u0429\":\"Shch\",\"\u0449\":\"shch\",\"\u0413\":\"H\",\"\u0433\":\"h\"},\"vi\":{\"\u0110\":\"D\",\"\u0111\":\"d\"},\"da\":{\"\u00D8\":\"OE\",\"\u00F8\":\"oe\",\"\u00C5\":\"AA\",\"\u00E5\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"st\u00F8rre end\"},\"nb\":{\"&\":\"og\",\"\u00C5\":\"AA\",\"\u00C6\":\"AE\",\"\u00D8\":\"OE\",\"\u00E5\":\"aa\",\"\u00E6\":\"ae\",\"\u00F8\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"\u00C5\":\"AA\",\"\u00C4\":\"AE\",\"\u00D6\":\"OE\",\"\u00E5\":\"aa\",\"\u00E4\":\"ae\",\"\u00F6\":\"oe\"}}')\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var locale = locales[options.locale] || {}\n\n var replacement = options.replacement === undefined ? '-' : options.replacement\n\n var trim = options.trim === undefined ? true : options.trim\n\n var slug = string.normalize().split('')\n // replace characters based on charMap\n .reduce(function (result, ch) {\n var appendChar = locale[ch];\n if (appendChar === undefined) appendChar = charMap[ch];\n if (appendChar === undefined) appendChar = ch;\n if (appendChar === replacement) appendChar = ' ';\n return result + appendChar\n // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '')\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n }\n\n if (trim) {\n slug = slug.trim()\n }\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase()\n }\n\n return slug\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap)\n }\n\n return replace\n}))\n", "import React from \"react\";\n\nexport const HelloWorld = () => {\n return <div>Hello, World!</div>;\n};\n", "import React, { useEffect, useState } from \"react\";\n\n// SSR-safe wrapper around Clover's viewer. Clover touches the DOM at import time,\n// so we dynamically import it only in the browser.\n\n// Default Clover viewer options; can be overridden per-usage via props.options\nconst DEFAULT_VIEWER_OPTIONS = {\n showDownload: false,\n showIIIFBadge: false,\n showTitle: false,\n informationPanel: {\n open: false,\n renderAbout: false,\n renderToggle: false,\n },\n};\n\nfunction isPlainObject(val) {\n return val && typeof val === \"object\" && !Array.isArray(val);\n}\n\nfunction deepMerge(base, override) {\n if (!isPlainObject(base)) return override;\n const out = { ...base };\n if (!isPlainObject(override)) return out;\n for (const key of Object.keys(override)) {\n const a = base[key];\n const b = override[key];\n if (isPlainObject(a) && isPlainObject(b)) out[key] = deepMerge(a, b);\n else out[key] = b;\n }\n return out;\n}\n\nexport const Viewer = (props) => {\n const [CloverViewer, setCloverViewer] = useState(null);\n const mergedOptions = deepMerge(\n DEFAULT_VIEWER_OPTIONS,\n props && props.options\n );\n const crossOriginExplicitlyUndefined =\n props &&\n props.options &&\n Object.prototype.hasOwnProperty.call(props.options, \"crossOrigin\") &&\n props.options.crossOrigin === undefined;\n if (crossOriginExplicitlyUndefined) {\n mergedOptions.crossOrigin = null;\n }\n\n useEffect(() => {\n let mounted = true;\n const canUseDom =\n typeof window !== \"undefined\" && typeof document !== \"undefined\";\n if (canUseDom) {\n import(\"@samvera/clover-iiif/viewer\")\n .then((mod) => {\n if (!mounted) return;\n // Loaded Clover viewer dynamically in the browser\n const Comp = mod && (mod.default || mod.Viewer || mod);\n setCloverViewer(() => Comp);\n })\n .catch(() => {\n // Silently ignore load errors on the server or if Clover is unavailable\n });\n }\n return () => {\n mounted = false;\n };\n }, []);\n\n if (!CloverViewer) {\n // SSR placeholder for client hydration; props provided as JSON\n let json = \"{}\";\n try {\n const p = { ...(props || {}) };\n if (mergedOptions) p.options = mergedOptions;\n json = JSON.stringify(p);\n } catch (_) {\n json = \"{}\";\n }\n return (\n <div data-canopy-viewer=\"1\" className=\"not-prose\">\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{ __html: json }}\n />\n </div>\n );\n }\n return <CloverViewer {...props} options={mergedOptions} />;\n};\n", "import React, {useEffect, useState} from \"react\";\nimport {mergeSliderOptions, normalizeSliderOptions} from \"./sliderOptions.js\";\n\n// SSR-safe wrapper around Clover's slider. Clover touches the DOM at import time,\n// so we dynamically import it only in the browser.\nexport const Slider = (props = {}) => {\n const [CloverSlider, setCloverSlider] = useState(null);\n\n useEffect(() => {\n let mounted = true;\n const canUseDom =\n typeof window !== \"undefined\" && typeof document !== \"undefined\";\n if (canUseDom) {\n import(\"@samvera/clover-iiif/slider\")\n .then((mod) => {\n if (!mounted) return;\n const Comp = mod && (mod.default || mod.Slider || mod);\n setCloverSlider(() => Comp);\n })\n .catch(() => {\n // Silently ignore load errors on the server or if Clover is unavailable\n });\n }\n return () => {\n mounted = false;\n };\n }, []);\n\n const {className, ...rest} = props || {};\n const sliderClassName = [\"canopy-slider\", className]\n .filter(Boolean)\n .join(\" \");\n const mergedOptions = mergeSliderOptions(rest.options);\n const normalizedOptions = normalizeSliderOptions(mergedOptions);\n const resolvedProps = {\n ...rest,\n className: sliderClassName,\n options: normalizedOptions,\n };\n\n if (!CloverSlider) {\n // SSR placeholder for client hydration; props provided as JSON\n let json = \"{}\";\n try {\n json = JSON.stringify(resolvedProps || {});\n } catch (_) {\n json = \"{}\";\n }\n return (\n <div className={sliderClassName} data-canopy-slider=\"1\">\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{__html: json}}\n />\n </div>\n );\n }\n return <CloverSlider {...resolvedProps} />;\n};\n", "const UNIT_TOKEN = \"__canopySliderUnit\";\nconst UNIT_REM = \"rem\";\nconst DEFAULT_FONT_SIZE = 16;\nlet cachedRootFontSize = null;\n\n// Shared defaults applied to every slider instance (manual + generated).\nexport const sliderOptions = {\n breakpoints: {\n 400: {\n slidesPerView: 2,\n spaceBetween: rem(1),\n },\n 640: {\n slidesPerView: 3,\n spaceBetween: rem(1.618),\n },\n 1024: {\n slidesPerView: 4,\n spaceBetween: rem(1.618),\n },\n },\n};\n\nexport function rem(value) {\n const numeric = typeof value === \"number\" ? value : parseFloat(value);\n return {\n [UNIT_TOKEN]: UNIT_REM,\n value: Number.isFinite(numeric) ? numeric : 0,\n };\n}\n\nfunction cloneBreakpoints(source) {\n if (!source || typeof source !== \"object\") return undefined;\n const clone = {};\n Object.entries(source).forEach(([key, entry]) => {\n clone[key] = entry && typeof entry === \"object\" ? {...entry} : {};\n });\n return clone;\n}\n\nfunction cloneOptions(options = {}) {\n const clone = {...options};\n if (options.breakpoints && typeof options.breakpoints === \"object\") {\n clone.breakpoints = cloneBreakpoints(options.breakpoints);\n }\n return clone;\n}\n\nexport function mergeSliderOptions(overrides) {\n const base = cloneOptions(sliderOptions);\n const incoming = cloneOptions(overrides || {});\n const merged = {\n ...base,\n ...incoming,\n };\n if (base.breakpoints || incoming.breakpoints) {\n merged.breakpoints = {\n ...(base.breakpoints || {}),\n ...(incoming.breakpoints || {}),\n };\n }\n return merged;\n}\n\nfunction hasBrowserEnv() {\n return typeof window !== \"undefined\" && typeof document !== \"undefined\";\n}\n\nfunction measureRootFontSize() {\n if (!hasBrowserEnv()) return DEFAULT_FONT_SIZE;\n if (cachedRootFontSize !== null) return cachedRootFontSize;\n let size = DEFAULT_FONT_SIZE;\n try {\n const root = window.document && window.document.documentElement;\n if (root && window.getComputedStyle) {\n const computed = window.getComputedStyle(root).fontSize;\n const parsed = parseFloat(computed);\n if (Number.isFinite(parsed)) size = parsed;\n }\n } catch (_) {\n size = DEFAULT_FONT_SIZE;\n }\n cachedRootFontSize = size;\n return size;\n}\n\nfunction convertSpacing(value) {\n if (!hasBrowserEnv()) return value;\n if (value && typeof value === \"object\" && value[UNIT_TOKEN] === UNIT_REM) {\n const remValue =\n typeof value.value === \"number\" ? value.value : parseFloat(value.value);\n if (!Number.isFinite(remValue)) return value;\n return remValue * measureRootFontSize();\n }\n return value;\n}\n\nfunction normalizeBreakpoints(breakpoints) {\n if (!breakpoints || typeof breakpoints !== \"object\") return breakpoints;\n const normalized = {};\n Object.entries(breakpoints).forEach(([key, entry]) => {\n const clone = entry && typeof entry === \"object\" ? {...entry} : {};\n if (Object.prototype.hasOwnProperty.call(clone, \"spaceBetween\")) {\n clone.spaceBetween = convertSpacing(clone.spaceBetween);\n }\n normalized[key] = clone;\n });\n return normalized;\n}\n\nexport function normalizeSliderOptions(options) {\n const clone = cloneOptions(options || {});\n if (!hasBrowserEnv()) return clone;\n if (Object.prototype.hasOwnProperty.call(clone, \"spaceBetween\")) {\n clone.spaceBetween = convertSpacing(clone.spaceBetween);\n }\n if (clone.breakpoints) {\n clone.breakpoints = normalizeBreakpoints(clone.breakpoints);\n }\n return clone;\n}\n", "import React, { useEffect, useState } from \"react\";\n\n// SSR-safe wrapper around Clover's scroll component. The library touches the DOM\n// during import, so we only load it in the browser and render a placeholder on the\n// server for the hydration runtime to mount.\nexport const Scroll = (props) => {\n const [CloverScroll, setCloverScroll] = useState(null);\n\n useEffect(() => {\n let mounted = true;\n const canUseDom =\n typeof window !== \"undefined\" && typeof document !== \"undefined\";\n if (canUseDom) {\n import(\"@samvera/clover-iiif/scroll\")\n .then((mod) => {\n if (!mounted) return;\n const Comp = mod && (mod.default || mod.Scroll || mod);\n setCloverScroll(() => Comp);\n })\n .catch(() => {\n // Silently ignore load errors during SSR or when Clover is unavailable.\n });\n }\n return () => {\n mounted = false;\n };\n }, []);\n\n if (!CloverScroll) {\n // SSR placeholder for client hydration; props provided as JSON\n let json = \"{}\";\n try {\n json = JSON.stringify(props || {});\n } catch (_) {\n json = \"{}\";\n }\n return (\n <div data-canopy-scroll=\"1\" className=\"not-prose\">\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{ __html: json }}\n />\n </div>\n );\n }\n\n return <CloverScroll {...props} />;\n};\n", "import React, {useEffect, useState} from \"react\";\n\n// SSR-safe wrapper around Clover's image component. The module relies on the DOM\n// during import, so we lazy-load it in the browser and render a placeholder on the\n// server for the hydration runtime.\nexport const Image = (props = {}) => {\n const [CloverImage, setCloverImage] = useState(null);\n const baseClass = \"canopy-iiif-image\";\n const {\n height = `600px`,\n backgroundColor = `var(--color-gray-200)`,\n caption,\n className: userClassName,\n } = props || {};\n const rootClassName = [userClassName, baseClass].filter(Boolean).join(\" \");\n\n useEffect(() => {\n let mounted = true;\n const canUseDom =\n typeof window !== \"undefined\" && typeof document !== \"undefined\";\n if (canUseDom) {\n import(\"@samvera/clover-iiif/image\")\n .then((mod) => {\n if (!mounted) return;\n const Comp = mod && (mod.default || mod.Image || mod);\n setCloverImage(() => Comp);\n })\n .catch(() => {\n // Suppress errors during SSR or when the Clover bundle is unavailable.\n });\n }\n return () => {\n mounted = false;\n };\n }, []);\n\n if (!CloverImage) {\n let json = \"{}\";\n try {\n json = JSON.stringify(props || {});\n } catch (_) {\n json = \"{}\";\n }\n\n return (\n <figure className={rootClassName}>\n <div\n className={`${baseClass}__placeholder`}\n data-canopy-image=\"1\"\n style={{\n \"--canopy-iiif-image-height\": height,\n \"--canopy-iiif-image-bg\": backgroundColor,\n }}\n >\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{__html: json}}\n />\n </div>\n {caption && (\n <figcaption className={`${baseClass}__caption`}>\n {caption}\n </figcaption>\n )}\n </figure>\n );\n }\n\n return <CloverImage {...props} className={rootClassName} />;\n};\n", "import React, {useEffect, useMemo, useRef} from \"react\";\nimport {\n mountImageStory,\n sanitizeImageStoryProps,\n serializeImageStoryProps,\n} from \"./imageStoryRuntime.js\";\n\nconst DEFAULT_IMAGE_STORY_HEIGHT = 600;\nconst NUMERIC_HEIGHT_PATTERN = /^[+-]?(?:\\d+|\\d*\\.\\d+)$/;\nconst SIZE_EPSILON = 1;\n\nfunction resolveContainerHeight(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return `${value}px`;\n }\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) {\n return `${DEFAULT_IMAGE_STORY_HEIGHT}px`;\n }\n if (NUMERIC_HEIGHT_PATTERN.test(trimmed)) {\n return `${trimmed}px`;\n }\n return trimmed;\n }\n return `${DEFAULT_IMAGE_STORY_HEIGHT}px`;\n}\n\nexport const ImageStory = (props = {}) => {\n const {\n iiifContent,\n disablePanAndZoom,\n pointOfInterestSvgUrl,\n viewerOptions,\n height = DEFAULT_IMAGE_STORY_HEIGHT,\n className,\n style,\n ...rest\n } = props || {};\n const containerRef = useRef(null);\n const resolvedClassName = useMemo(() => {\n return [\"canopy-image-story\", className].filter(Boolean).join(\" \");\n }, [className]);\n const resolvedHeight = useMemo(() => {\n return resolveContainerHeight(height);\n }, [height]);\n const serializedProps = useMemo(() => {\n return serializeImageStoryProps({\n iiifContent,\n disablePanAndZoom,\n pointOfInterestSvgUrl,\n viewerOptions,\n });\n }, [iiifContent, disablePanAndZoom, pointOfInterestSvgUrl, viewerOptions]);\n\n useEffect(() => {\n const node = containerRef.current;\n if (!node) return undefined;\n\n let cleanup = null;\n let cancelled = false;\n let mounted = false;\n let resizeObserver = null;\n let pollId = null;\n let lastKnownSize = null;\n\n const payload = sanitizeImageStoryProps({\n iiifContent,\n disablePanAndZoom,\n pointOfInterestSvgUrl,\n viewerOptions,\n });\n\n const destroyCleanup = () => {\n if (cleanup) {\n try {\n cleanup();\n } catch (_) {}\n cleanup = null;\n }\n };\n\n const disconnectWatchers = () => {\n if (resizeObserver) {\n try {\n resizeObserver.disconnect();\n } catch (_) {}\n resizeObserver = null;\n }\n if (pollId) {\n window.clearTimeout(pollId);\n pollId = null;\n }\n };\n\n const measureSize = () => {\n if (!node) return null;\n const rect = node.getBoundingClientRect();\n const width = rect?.width || node.offsetWidth || node.clientWidth || 0;\n const height = rect?.height || node.offsetHeight || node.clientHeight || 0;\n return {width, height};\n };\n\n const hasUsableSize = () => {\n const size = measureSize();\n if (!size) return false;\n const usable = size.width > 2 && size.height > 2;\n if (usable) {\n lastKnownSize = size;\n }\n return usable;\n };\n\n const hasMeaningfulSizeChange = () => {\n const size = measureSize();\n if (!size) return false;\n if (size.width <= 2 || size.height <= 2) {\n return true;\n }\n if (!lastKnownSize) {\n lastKnownSize = size;\n return true;\n }\n const widthDelta = Math.abs(size.width - lastKnownSize.width);\n const heightDelta = Math.abs(size.height - lastKnownSize.height);\n if (widthDelta > SIZE_EPSILON || heightDelta > SIZE_EPSILON) {\n lastKnownSize = size;\n return true;\n }\n return false;\n };\n\n const mountViewer = () => {\n if (!node || mounted || cancelled) return false;\n if (!hasUsableSize()) return false;\n mounted = true;\n disconnectWatchers();\n mountImageStory(node, payload).then((destroy) => {\n if (cancelled) {\n destroy && destroy();\n return;\n }\n cleanup = typeof destroy === \"function\" ? destroy : null;\n });\n return true;\n };\n\n const scheduleWatchers = () => {\n if (mounted || cancelled) return;\n if (\n !resizeObserver &&\n typeof window !== \"undefined\" &&\n typeof window.ResizeObserver === \"function\"\n ) {\n resizeObserver = new window.ResizeObserver(() => {\n if (mounted || cancelled) return;\n mountViewer();\n });\n try {\n resizeObserver.observe(node);\n } catch (_) {}\n }\n const schedulePoll = () => {\n if (mounted || cancelled) return;\n pollId = window.setTimeout(() => {\n pollId = null;\n if (!mountViewer()) {\n schedulePoll();\n }\n }, 200);\n };\n if (!pollId) {\n schedulePoll();\n }\n };\n\n const beginMounting = () => {\n if (!mountViewer()) {\n scheduleWatchers();\n }\n };\n\n const remountViewer = () => {\n if (cancelled) return;\n if (mounted) {\n mounted = false;\n destroyCleanup();\n }\n beginMounting();\n };\n\n beginMounting();\n\n const handleGalleryModalChange = (event) => {\n if (!node || !event || typeof document === \"undefined\") return;\n const detail = event.detail || {};\n if (detail.state !== \"open\") return;\n const modal =\n detail.modal || (detail.modalId ? document.getElementById(detail.modalId) : null);\n if (!modal || !modal.contains(node)) return;\n if (!mounted) return;\n if (hasMeaningfulSizeChange()) {\n remountViewer();\n }\n };\n\n if (typeof window !== \"undefined\" && window.addEventListener) {\n window.addEventListener(\"canopy:gallery:modal-change\", handleGalleryModalChange);\n }\n\n return () => {\n cancelled = true;\n disconnectWatchers();\n destroyCleanup();\n if (typeof window !== \"undefined\" && window.removeEventListener) {\n window.removeEventListener(\n \"canopy:gallery:modal-change\",\n handleGalleryModalChange,\n );\n }\n };\n }, [iiifContent, disablePanAndZoom, pointOfInterestSvgUrl, viewerOptions]);\n\n return (\n <div\n ref={containerRef}\n className={resolvedClassName}\n data-canopy-image-story=\"1\"\n style={{\n width: \"100%\",\n height: resolvedHeight,\n ...(style || {}),\n }}\n {...rest}\n >\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{__html: serializedProps}}\n />\n </div>\n );\n};\n", "const STORIIIES_STYLE_URL =\n \"https://unpkg.com/@cogapp/storiiies-viewer@latest/dist/storiiies-viewer.css\";\nconst STORIIIES_SCRIPT_URL =\n \"https://unpkg.com/@cogapp/storiiies-viewer@latest/dist/umd/storiiies-viewer.js\";\n\nconst assetLoaders = new Map();\n\nfunction loadAsset(kind, url) {\n if (!assetLoaders.has(url)) {\n assetLoaders.set(\n url,\n new Promise((resolve, reject) => {\n try {\n const tag = document.createElement(kind === \"script\" ? \"script\" : \"link\");\n if (kind === \"script\") {\n tag.setAttribute(\"src\", url);\n tag.setAttribute(\"async\", \"true\");\n } else {\n tag.setAttribute(\"rel\", \"stylesheet\");\n tag.setAttribute(\"href\", url);\n }\n tag.addEventListener(\"load\", () => resolve(), {once: true});\n tag.addEventListener(\"error\", () => reject(new Error(`Failed to load ${url}`)), {\n once: true,\n });\n document.head.appendChild(tag);\n } catch (error) {\n reject(error);\n }\n }),\n );\n }\n return assetLoaders.get(url);\n}\n\nfunction normalizeBasePath(value) {\n if (value == null) return \"\";\n const raw = String(value).trim();\n if (!raw) return \"\";\n const prefixed = raw.startsWith(\"/\") ? raw : `/${raw}`;\n const cleaned = prefixed.replace(/\\/+$/, \"\");\n return cleaned === \"/\" ? \"\" : cleaned;\n}\n\nlet cachedBasePath = null;\nfunction readBasePath() {\n if (cachedBasePath !== null) return cachedBasePath;\n const candidates = [];\n try {\n if (typeof window !== \"undefined\" && window.CANOPY_BASE_PATH != null) {\n candidates.push(window.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n try {\n if (\n typeof globalThis !== \"undefined\" &&\n globalThis.CANOPY_BASE_PATH != null\n ) {\n candidates.push(globalThis.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n try {\n if (typeof process !== \"undefined\" && process.env) {\n candidates.push(process.env.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n for (const candidate of candidates) {\n const normalized = normalizeBasePath(candidate);\n if (normalized || normalized === \"\") {\n cachedBasePath = normalized;\n return cachedBasePath;\n }\n }\n cachedBasePath = \"\";\n return cachedBasePath;\n}\n\nfunction withBasePath(href) {\n if (typeof href !== \"string\") return href;\n const raw = href.trim();\n if (!raw) return href;\n if (/^(?:[a-z][a-z0-9+.-]*:|\\/\\/|#)/i.test(raw)) return raw;\n if (!raw.startsWith(\"/\")) return raw;\n const base = readBasePath();\n if (!base || base === \"/\") return raw;\n if (raw === base || raw.startsWith(`${base}/`)) return raw;\n return `${base}${raw}`;\n}\n\nexport function sanitizeImageStoryProps(raw = {}) {\n const props = raw && typeof raw === \"object\" ? raw : {};\n const out = {};\n if (typeof props.iiifContent === \"string\" && props.iiifContent.trim()) {\n out.iiifContent = props.iiifContent.trim();\n }\n if (typeof props.disablePanAndZoom === \"boolean\") {\n out.disablePanAndZoom = props.disablePanAndZoom;\n }\n if (\n typeof props.pointOfInterestSvgUrl === \"string\" &&\n props.pointOfInterestSvgUrl.trim()\n ) {\n out.pointOfInterestSvgUrl = props.pointOfInterestSvgUrl.trim();\n }\n if (props.viewerOptions && typeof props.viewerOptions === \"object\") {\n out.viewerOptions = props.viewerOptions;\n }\n return out;\n}\n\nexport function serializeImageStoryProps(raw = {}) {\n try {\n return JSON.stringify(sanitizeImageStoryProps(raw));\n } catch (_) {\n try {\n return JSON.stringify({\n iiifContent: raw && raw.iiifContent ? raw.iiifContent : \"\",\n });\n } catch (err) {\n return \"{}\";\n }\n }\n}\n\nfunction resolveViewerConfig(element, props) {\n const sanitized = sanitizeImageStoryProps(props);\n const viewerOptions =\n sanitized.viewerOptions && typeof sanitized.viewerOptions === \"object\"\n ? sanitized.viewerOptions\n : {};\n const config = { ...viewerOptions, container: element };\n // Always hide the Storiiies credit slide for consistency.\n config.showCreditSlide = false;\n if (sanitized.iiifContent) {\n config.manifestUrl = withBasePath(sanitized.iiifContent);\n }\n if (typeof sanitized.disablePanAndZoom === \"boolean\") {\n config.disablePanAndZoom = sanitized.disablePanAndZoom;\n }\n if (sanitized.pointOfInterestSvgUrl) {\n config.pointOfInterestSvgUrl = withBasePath(sanitized.pointOfInterestSvgUrl);\n }\n return config;\n}\n\nasync function ensureStoriiiesAssets() {\n await Promise.all([\n loadAsset(\"style\", STORIIIES_STYLE_URL),\n loadAsset(\"script\", STORIIIES_SCRIPT_URL),\n ]);\n}\n\nexport async function mountImageStory(element, props = {}) {\n if (typeof window === \"undefined\" || !element) return null;\n await ensureStoriiiesAssets();\n const { StoriiiesViewer } = window;\n if (!StoriiiesViewer || typeof StoriiiesViewer !== \"function\") return null;\n const config = resolveViewerConfig(element, props);\n if (!config.manifestUrl) return null;\n const viewer = new StoriiiesViewer(config);\n return () => {\n try {\n viewer && typeof viewer.destroy === \"function\" && viewer.destroy();\n } catch (_) {}\n };\n}\n", "import React from \"react\";\n\n// SSR-safe placeholder for RelatedItems. Hydrated by canopy-related-items.js + canopy-slider.js\nexport default function MdxRelatedItems(props) {\n let json = \"{}\";\n try {\n json = JSON.stringify(props || {});\n } catch (_) {\n json = \"{}\";\n }\n return (\n <div data-canopy-related-items=\"1\">\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{__html: json}}\n />\n </div>\n );\n}\n", "export { default as Hero } from './Hero.jsx';\nexport { computeHeroHeightStyle } from './hero-utils.js';\n", "import React from \"react\";\nimport helpers from \"../../../lib/components/featured.js\";\nimport navigationHelpers from \"../../../lib/components/navigation.js\";\nimport {computeHeroHeightStyle} from \"./hero-utils.js\";\nimport Button from \"../layout/Button.jsx\";\nimport ButtonWrapper from \"../layout/ButtonWrapper.jsx\";\nimport {useLocale} from \"../locale/index.js\";\n\nconst NavIconBase = ({children, ...rest}) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n focusable=\"false\"\n {...rest}\n >\n {children}\n </svg>\n);\n\nconst PrevArrowIcon = (props) => (\n <NavIconBase {...props}>\n <path\n d=\"M10.5 3L5.5 8L10.5 13\"\n stroke=\"currentColor\"\n strokeWidth=\"1.618\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </NavIconBase>\n);\n\nconst NextArrowIcon = (props) => (\n <NavIconBase {...props}>\n <path\n d=\"M5.5 3L10.5 8L5.5 13\"\n stroke=\"currentColor\"\n strokeWidth=\"1.618\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </NavIconBase>\n);\n\nconst HERO_DEFAULT_SIZES_ATTR = \"(min-width: 1024px) 1280px, 100vw\";\n\nconst basePath = (() => {\n try {\n const raw =\n typeof process !== \"undefined\" && process && process.env\n ? String(process.env.CANOPY_BASE_PATH || \"\")\n : \"\";\n return raw.replace(/\\/$/, \"\");\n } catch (_) {\n return \"\";\n }\n})();\n\nfunction applyBasePath(href) {\n try {\n if (!href) return href;\n if (!basePath) return href;\n if (typeof href === \"string\" && href.startsWith(\"/\")) {\n return `${basePath}${href}`;\n }\n } catch (_) {}\n return href;\n}\n\nfunction resolveFeaturedItem({item, index, random}) {\n if (item) return item;\n const list =\n helpers && helpers.readFeaturedFromCacheSync\n ? helpers.readFeaturedFromCacheSync()\n : [];\n if (!list.length) return null;\n if (typeof index === \"number\") {\n const idx = Math.max(0, Math.min(list.length - 1, Math.floor(index)));\n return list[idx];\n }\n if (random === true || random === \"true\") {\n const idx = Math.floor(Math.random() * Math.max(1, list.length));\n return list[idx];\n }\n return list[0];\n}\n\nfunction normalizeLinks(links) {\n if (!Array.isArray(links)) return [];\n return links\n .map((link) => {\n if (!link) return null;\n const href = applyBasePath(link.href || \"\");\n const title = link.title ? String(link.title) : \"\";\n if (!href || !title) return null;\n const type = link.type === \"secondary\" ? \"secondary\" : \"primary\";\n const target = link.target ? String(link.target) : undefined;\n return {href, title, type, target};\n })\n .filter(Boolean);\n}\n\nfunction sanitizeRest(rest) {\n const clone = {...rest};\n try {\n delete clone.random;\n delete clone.index;\n delete clone.item;\n delete clone.links;\n delete clone.overlay;\n delete clone.variant;\n delete clone.background;\n } catch (_) {}\n return clone;\n}\n\nfunction normalizeBackground(value) {\n try {\n const allowed = new Set([\"theme\", \"transparent\"]);\n const raw = value == null ? \"\" : String(value);\n const normalized = raw.trim().toLowerCase();\n return allowed.has(normalized) ? normalized : \"theme\";\n } catch (_) {\n return \"theme\";\n }\n}\n\nfunction findNodePathBySlug(node, targetSlug) {\n if (!node || !targetSlug) return null;\n const normalizedTarget = String(targetSlug || \"\");\n if (!normalizedTarget) return null;\n if (node.slug === normalizedTarget) return [node];\n const children = Array.isArray(node.children) ? node.children : [];\n for (const child of children) {\n const path = findNodePathBySlug(child, normalizedTarget);\n if (path && path.length) {\n return [node, ...path];\n }\n }\n return null;\n}\n\nfunction normalizeVariant(value) {\n try {\n const raw = value == null ? \"\" : String(value);\n const normalized = raw.trim().toLowerCase();\n if (normalized === \"breadcrumb\" || normalized === \"text\") return \"breadcrumb\";\n return \"featured\";\n } catch (_) {\n return \"featured\";\n }\n}\n\nexport default function Hero({\n height = 520,\n item,\n index,\n random = true,\n headline,\n description,\n links = [],\n className = \"\",\n style = {},\n background = \"theme\",\n variant = \"featured\",\n homeLabel,\n ...rest\n}) {\n const {getString} = useLocale();\n const normalizedVariant = normalizeVariant(variant);\n const isBreadcrumbVariant = normalizedVariant === \"breadcrumb\";\n const PageContext =\n navigationHelpers && typeof navigationHelpers.getPageContext === \"function\"\n ? navigationHelpers.getPageContext()\n : null;\n const pageContext = PageContext ? React.useContext(PageContext) : null;\n\n let orderedSlides = [];\n if (!isBreadcrumbVariant) {\n const resolved = resolveFeaturedItem({item, index, random});\n const helpersList =\n helpers && helpers.readFeaturedFromCacheSync\n ? helpers.readFeaturedFromCacheSync()\n : [];\n\n const slides = [];\n const pushUnique = (entry) => {\n if (!entry) return;\n const key = String(entry.href || entry.id || entry.title || \"\");\n const hasKey = slides.some(\n (item) =>\n String(item && (item.href || item.id || item.title || \"\")) === key\n );\n if (!hasKey) {\n slides.push(entry);\n }\n };\n\n if (resolved) pushUnique(resolved);\n helpersList.forEach(pushUnique);\n if (!slides.length) return null;\n\n orderedSlides = slides.slice();\n if (typeof index === \"number\" && orderedSlides.length > 1) {\n const clamp = Math.max(\n 0,\n Math.min(orderedSlides.length - 1, Math.floor(index))\n );\n if (clamp > 0) {\n orderedSlides = orderedSlides\n .slice(clamp)\n .concat(orderedSlides.slice(0, clamp));\n }\n } else if (random === true || random === \"true\") {\n const rand = Math.floor(Math.random() * orderedSlides.length);\n if (rand > 0) {\n orderedSlides = orderedSlides\n .slice(rand)\n .concat(orderedSlides.slice(0, rand));\n }\n }\n }\n\n const heroHeight = computeHeroHeightStyle(height);\n const heroStyles = {...(style || {})};\n if (heroHeight && heroHeight.height && !isBreadcrumbVariant) {\n heroStyles[\"--hero-height\"] = heroHeight.height;\n }\n if (isBreadcrumbVariant) {\n heroStyles[\"--hero-height\"] = \"auto\";\n }\n\n const derivedDescription = description ? String(description) : \"\";\n const normalizedLinks = normalizeLinks(links);\n\n const primarySlide = !isBreadcrumbVariant ? orderedSlides[0] || null : null;\n const overlayTitle = headline || (primarySlide && primarySlide.title) || \"\";\n const defaultLinkHref = applyBasePath(\n primarySlide && primarySlide.href ? primarySlide.href : \"#\"\n );\n const overlayLinks = normalizedLinks.length\n ? normalizedLinks\n : [\n {\n href: defaultLinkHref,\n title: \"View work\",\n type: \"primary\",\n },\n ].filter(Boolean);\n const finalOverlayLinks = isBreadcrumbVariant ? normalizedLinks : overlayLinks;\n\n const breadcrumbItems = React.useMemo(() => {\n if (!isBreadcrumbVariant) return [];\n const items = [];\n const label = (homeLabel != null\n ? homeLabel\n : getString(\"common.nouns.home\", \"Home\"))\n .trim();\n if (label) {\n items.push({title: label, href: applyBasePath(\"/\")});\n }\n const navigation = pageContext && pageContext.navigation ? pageContext.navigation : null;\n const page = pageContext && pageContext.page ? pageContext.page : null;\n const slug =\n (page && page.slug) ||\n (navigation && navigation.currentSlug) ||\n \"\";\n const rootNode = navigation && navigation.root ? navigation.root : null;\n if (!slug || !rootNode) return items;\n const path = findNodePathBySlug(rootNode, slug);\n if (!path || !path.length) return items;\n path.forEach((node) => {\n if (!node) return;\n const title = node.title || node.slug || \"\";\n if (!title) return;\n const href = node.href ? applyBasePath(node.href) : null;\n items.push({title, href});\n });\n return items;\n }, [isBreadcrumbVariant, pageContext, homeLabel]);\n\n const breadcrumbNode = isBreadcrumbVariant && breadcrumbItems.length\n ? (\n <nav\n className=\"canopy-interstitial__breadcrumb\"\n aria-label={getString(\"common.nouns.breadcrumb\", \"Breadcrumb\")}\n >\n {breadcrumbItems.map((item, idx) => {\n const isLast = idx === breadcrumbItems.length - 1;\n const key = `${item.title || idx}-${idx}`;\n const content = !isLast && item.href ? (\n <a href={item.href}>{item.title}</a>\n ) : (\n <span className=\"canopy-interstitial__breadcrumb-current\" aria-current=\"page\">\n {item.title}\n </span>\n );\n return (\n <React.Fragment key={key}>\n {idx > 0 ? (\n <span\n className=\"canopy-interstitial__breadcrumb-separator\"\n aria-hidden=\"true\"\n >\n >\n </span>\n ) : null}\n {content}\n </React.Fragment>\n );\n })}\n </nav>\n )\n : null;\n\n const normalizedBackground = normalizeBackground(background);\n const backgroundClassName =\n normalizedBackground === \"transparent\"\n ? \"canopy-interstitial--bg-transparent\"\n : \"\";\n\n const variantClassName = isBreadcrumbVariant\n ? \"canopy-interstitial--hero-breadcrumb\"\n : \"canopy-interstitial--hero-featured\";\n const containerClassName = [\n \"canopy-interstitial\",\n \"canopy-interstitial--hero\",\n variantClassName,\n backgroundClassName,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const renderSlide = (\n slide,\n idx,\n {showVeil = true, captionVariant = \"overlay\"} = {}\n ) => {\n const safeHref = applyBasePath(slide.href || \"#\");\n const isStaticCaption = captionVariant === \"static\";\n const paneClassName = [\n \"canopy-interstitial__pane\",\n showVeil ? \"\" : \"canopy-interstitial__pane--flat\",\n isStaticCaption ? \"canopy-interstitial__pane--static\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n const buildImageProps = (className) => {\n if (!slide.thumbnail) return null;\n const props = {\n src: slide.thumbnail,\n alt: \"\",\n \"aria-hidden\": true,\n className,\n loading: idx === 0 ? \"eager\" : \"lazy\",\n };\n if (slide.srcset) props.srcSet = slide.srcset;\n if (slide.srcset) props.sizes = slide.sizes || HERO_DEFAULT_SIZES_ATTR;\n return props;\n };\n\n const wrapWithLink = (node) => {\n if (!safeHref) return node;\n return (\n <a\n href={safeHref}\n className=\"canopy-interstitial__slide-link\"\n aria-label={slide.title || undefined}\n >\n {node}\n </a>\n );\n };\n\n if (isStaticCaption) {\n return (\n <div\n className=\"canopy-interstitial__slide\"\n key={safeHref || idx}\n role=\"group\"\n aria-roledescription=\"slide\"\n aria-label={`${idx + 1} of ${orderedSlides.length}`}\n >\n {wrapWithLink(\n <article className={paneClassName}>\n {slide.thumbnail ? (\n <div className=\"canopy-interstitial__media-frame\">\n <img\n {...buildImageProps(\n \"canopy-interstitial__media canopy-interstitial__media--static\"\n )}\n />\n </div>\n ) : null}\n {slide.title ? (\n <div className=\"canopy-interstitial__caption canopy-interstitial__caption--static\">\n <span className=\"canopy-interstitial__caption-link\">\n {slide.title}\n </span>\n </div>\n ) : null}\n </article>\n )}\n </div>\n );\n }\n\n return (\n <div\n className=\"canopy-interstitial__slide\"\n key={safeHref || idx}\n role=\"group\"\n aria-roledescription=\"slide\"\n aria-label={`${idx + 1} of ${orderedSlides.length}`}\n >\n {wrapWithLink(\n <article className={paneClassName}>\n {slide.thumbnail ? (\n <img {...buildImageProps(\"canopy-interstitial__media\")} />\n ) : null}\n {showVeil ? (\n <div className=\"canopy-interstitial__veil\" aria-hidden=\"true\" />\n ) : null}\n {slide.title ? (\n <div className=\"canopy-interstitial__caption\">\n <span className=\"canopy-interstitial__caption-link\">\n {slide.title}\n </span>\n </div>\n ) : null}\n </article>\n )}\n </div>\n );\n };\n\n const renderSlider = (options = {}) => (\n <div\n className=\"canopy-interstitial__slider\"\n role=\"region\"\n aria-roledescription=\"carousel\"\n aria-label={overlayTitle || \"Featured content\"}\n >\n <div className=\"canopy-interstitial__slide-wrapper\">\n {orderedSlides.map((slide, idx) => renderSlide(slide, idx, options))}\n </div>\n <div className=\"canopy-interstitial__nav\">\n <button\n type=\"button\"\n aria-label=\"Previous slide\"\n className=\"canopy-interstitial__nav-btn canopy-interstitial__nav-btn--prev\"\n >\n <PrevArrowIcon />\n </button>\n <button\n type=\"button\"\n aria-label=\"Next slide\"\n className=\"canopy-interstitial__nav-btn canopy-interstitial__nav-btn--next\"\n >\n <NextArrowIcon />\n </button>\n </div>\n </div>\n );\n\n const overlayContent = (\n <>\n {overlayTitle ? (\n <h1 className=\"canopy-interstitial__headline\">{overlayTitle}</h1>\n ) : null}\n {derivedDescription ? (\n <p className=\"canopy-interstitial__description\">{derivedDescription}</p>\n ) : null}\n {finalOverlayLinks.length ? (\n <ButtonWrapper className=\"canopy-interstitial__actions\">\n {finalOverlayLinks.map((link) => (\n <Button\n key={`${link.href}-${link.title}`}\n href={link.href}\n label={link.title}\n variant={link.type}\n target={link.target}\n />\n ))}\n </ButtonWrapper>\n ) : null}\n </>\n );\n\n const cleanedProps = sanitizeRest(rest);\n const sectionProps = {\n className: containerClassName,\n style: heroStyles,\n ...cleanedProps,\n };\n if (!isBreadcrumbVariant) {\n sectionProps[\"data-canopy-hero-slider\"] = \"1\";\n } else {\n sectionProps[\"data-canopy-hero-variant\"] = \"breadcrumb\";\n }\n\n return (\n <section {...sectionProps}>\n {isBreadcrumbVariant ? (\n <div className=\"canopy-interstitial__layout canopy-interstitial__layout--breadcrumb\">\n <div className=\"canopy-interstitial__panel\">\n <div className=\"canopy-interstitial__body\">\n {breadcrumbNode}\n {overlayContent}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"canopy-interstitial__layout\">\n <div className=\"canopy-interstitial__panel\">\n <div className=\"canopy-interstitial__body\">{overlayContent}</div>\n </div>\n <div className=\"canopy-interstitial__media-group\">\n {renderSlider({showVeil: false, captionVariant: \"static\"})}\n <div className=\"canopy-interstitial__pagination\" />\n </div>\n </div>\n )}\n </section>\n );\n}\n", "function computeHeroHeightStyle(height) {\n const h = typeof height === 'number' ? `${height}px` : String(height || '').trim();\n const val = h || '360px';\n return { width: '100%', height: val };\n}\n\nexport { computeHeroHeightStyle };\nexport default computeHeroHeightStyle;\n", "import React from 'react';\n\nconst VARIANTS = new Set(['primary', 'secondary']);\n\nexport default function Button({\n label,\n href = '#',\n target,\n rel,\n variant = 'primary',\n className = '',\n children,\n as: Element = 'a',\n ...rest\n}) {\n const resolvedVariant = VARIANTS.has(variant) ? variant : 'primary';\n const computedRel =\n Element === 'a' && target === '_blank' && !rel ? 'noopener noreferrer' : rel;\n const content = children != null ? children : label;\n\n if (!content) return null;\n\n const classes = [\n 'canopy-button',\n `canopy-button--${resolvedVariant}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const elementProps = {\n className: classes,\n ...rest,\n };\n\n if (Element === 'a') {\n elementProps.href = href;\n if (target) elementProps.target = target;\n if (computedRel) elementProps.rel = computedRel;\n } else {\n if (typeof target !== 'undefined') elementProps.target = target;\n if (computedRel) elementProps.rel = computedRel;\n }\n\n return <Element {...elementProps}>{content}</Element>;\n}\n", "import React from 'react';\n\nexport default function ButtonWrapper({\n className = '',\n children,\n text = '',\n variant = 'default',\n ...rest\n}) {\n const variantClass =\n variant && variant !== 'default'\n ? `canopy-button-group--${variant}`\n : '';\n const classes = ['canopy-button-group', variantClass, className]\n .filter(Boolean)\n .join(' ');\n return (\n <div className={classes} {...rest}>\n {text && <span className=\"canopy-button-group__text\">{text}</span>}\n <div className=\"canopy-button-group__actions\">{children}</div>\n </div>\n );\n}\n", "import React from \"react\";\nimport getSafePageContext from \"../layout/pageContext.js\";\nimport defaultMessages from \"../../../lib/default-locale.js\";\n\nfunction getGlobalScope() {\n if (typeof globalThis !== \"undefined\") return globalThis;\n if (typeof window !== \"undefined\") return window;\n if (typeof global !== \"undefined\") return global;\n return null;\n}\n\nfunction readRuntimeMessages() {\n const scope = getGlobalScope();\n const candidate = scope && scope.CANOPY_LOCALE_MESSAGES;\n if (candidate && typeof candidate === \"object\") return candidate;\n return defaultMessages || {};\n}\n\nexport function accessPath(obj, path) {\n if (!obj || typeof obj !== \"object\" || !path) return undefined;\n const parts = Array.isArray(path) ? path : String(path).split(\".\");\n let current = obj;\n for (const part of parts) {\n if (!current || typeof current !== \"object\") return undefined;\n const key = String(part).trim();\n if (!key || !(key in current)) return undefined;\n current = current[key];\n }\n return current;\n}\n\nexport function formatTemplate(template, replacements = {}) {\n if (template == null) return template;\n const str = String(template);\n if (!replacements || typeof replacements !== \"object\") return str;\n return str.replace(/\\{([^}]+)\\}/g, (match, key) => {\n if (!Object.prototype.hasOwnProperty.call(replacements, key)) return match;\n const value = replacements[key];\n if (value == null) return match;\n return String(value);\n });\n}\n\nexport function useLocaleMessages() {\n const PageContext = getSafePageContext();\n const context = PageContext ? React.useContext(PageContext) : null;\n const siteMessages =\n context &&\n context.site &&\n context.site.localeMessages &&\n typeof context.site.localeMessages === \"object\"\n ? context.site.localeMessages\n : null;\n return siteMessages || readRuntimeMessages();\n}\n\nexport function useLocale() {\n const messages = useLocaleMessages();\n const getString = React.useCallback(\n (path, fallback) => {\n const value = path ? accessPath(messages, path) : undefined;\n if (typeof value === \"string\" || typeof value === \"number\") {\n return value;\n }\n return fallback;\n },\n [messages],\n );\n const formatString = React.useCallback(\n (path, fallback, replacements) => {\n const template = path ? accessPath(messages, path) : undefined;\n const resolved = template != null ? template : fallback;\n if (resolved == null) return resolved;\n return formatTemplate(resolved, replacements);\n },\n [messages],\n );\n return {messages, getString, formatString};\n}\n\nexport function useLocaleString(path, fallback, replacements) {\n const {formatString} = useLocale();\n return formatString(path, fallback, replacements);\n}\n", "import React from \"react\";\n\nconst CONTEXT_KEY =\n typeof Symbol === \"function\"\n ? Symbol.for(\"__CANOPY_PAGE_CONTEXT__\")\n : \"__CANOPY_PAGE_CONTEXT__\";\n\nfunction getSharedRoot() {\n if (typeof globalThis !== \"undefined\") return globalThis;\n if (typeof window !== \"undefined\") return window;\n if (typeof global !== \"undefined\") return global;\n return null;\n}\n\nexport default function getSafePageContext() {\n const root = getSharedRoot();\n if (root && root[CONTEXT_KEY]) return root[CONTEXT_KEY];\n const ctx = React.createContext({navigation: null, page: null, site: null});\n if (root) root[CONTEXT_KEY] = ctx;\n return ctx;\n}\n\nexport {CONTEXT_KEY};\n", "import React from \"react\";\nimport navigationHelpers from \"../../../lib/components/navigation.js\";\nimport NavigationTree from \"./NavigationTree.jsx\";\n\nfunction resolveRelativeCandidate(page, current) {\n if (page && typeof page.relativePath === \"string\" && page.relativePath)\n return page.relativePath;\n if (page && typeof page.slug === \"string\" && page.slug) return page.slug;\n if (typeof current === \"string\" && current) return current;\n return \"\";\n}\n\nexport default function SubNavigation({\n navigation: navigationProp,\n page,\n current,\n className = \"\",\n style = {},\n heading,\n ariaLabel,\n}) {\n const PageContext =\n navigationHelpers && navigationHelpers.getPageContext\n ? navigationHelpers.getPageContext()\n : null;\n const context = PageContext ? React.useContext(PageContext) : null;\n const contextNavigation =\n context && context.navigation ? context.navigation : null;\n const contextPage = context && context.page ? context.page : null;\n const effectiveNavigation = navigationProp || contextNavigation;\n const effectivePage = page || contextPage;\n const resolvedNavigation = React.useMemo(() => {\n if (effectiveNavigation && effectiveNavigation.root)\n return effectiveNavigation;\n const candidate = resolveRelativeCandidate(effectivePage, current);\n if (!candidate) return effectiveNavigation || null;\n const helpers =\n navigationHelpers && navigationHelpers.buildNavigationForFile\n ? navigationHelpers\n : null;\n if (!helpers) return effectiveNavigation || null;\n try {\n const normalized = navigationHelpers.normalizeRelativePath\n ? navigationHelpers.normalizeRelativePath(candidate)\n : candidate;\n const built = helpers.buildNavigationForFile(normalized);\n if (built) return built;\n } catch (_) {\n // ignore helper errors and fall back to provided navigation\n }\n return effectiveNavigation || null;\n }, [effectiveNavigation, effectivePage, current]);\n\n if (!resolvedNavigation || !resolvedNavigation.root) return null;\n\n const rootNode = resolvedNavigation.root;\n const finalHeading = heading || null;\n const labelSource = finalHeading || resolvedNavigation.title;\n const navLabel =\n ariaLabel ||\n (labelSource ? `${labelSource} navigation` : \"Section navigation\");\n const combinedClassName = [\"canopy-sub-navigation\", className]\n .filter(Boolean)\n .join(\" \");\n const inlineStyle = {...style};\n if (!Object.prototype.hasOwnProperty.call(inlineStyle, \"--sub-nav-indent\")) {\n inlineStyle[\"--sub-nav-indent\"] = \"0.85rem\";\n }\n\n return (\n <nav\n className={combinedClassName}\n style={inlineStyle}\n aria-label={navLabel}\n >\n <NavigationTree\n root={rootNode}\n includeRoot\n component=\"div\"\n className=\"canopy-sub-navigation__tree\"\n parentKey={rootNode.slug || \"root\"}\n heading={finalHeading || undefined}\n />\n </nav>\n );\n}\n", "import React from \"react\";\nimport {useLocale} from \"../locale/index.js\";\n\nfunction normalizeDepth(depth) {\n if (typeof depth !== \"number\") return 0;\n return Math.max(0, Math.min(5, depth));\n}\n\nfunction NavigationTreeList({\n nodes,\n depth,\n parentKey,\n buildToggleLabel,\n buildNavLabel,\n}) {\n if (!Array.isArray(nodes) || !nodes.length) return null;\n const listClasses = [\"canopy-nav-tree__list\"];\n if (depth > 0) listClasses.push(\"canopy-nav-tree__list--nested\");\n return (\n <ul className={listClasses.join(\" \")} role=\"list\">\n {nodes.map((node, index) => (\n <NavigationTreeItem\n key={node.slug || node.href || node.title || `${parentKey}-${index}`}\n node={node}\n depth={depth}\n nodeKey={`${parentKey}-${index}`}\n buildToggleLabel={buildToggleLabel}\n buildNavLabel={buildNavLabel}\n />\n ))}\n </ul>\n );\n}\n\nfunction NavigationTreeItem({node, depth, nodeKey, buildToggleLabel, buildNavLabel}) {\n if (!node) return null;\n const hasChildren = Array.isArray(node.children) && node.children.length > 0;\n const isInteractive = !!node.href;\n const Tag = isInteractive ? \"a\" : \"span\";\n const depthClass = `depth-${normalizeDepth(depth + 1)}`;\n const classes = [\"canopy-nav-tree__link\", depthClass];\n if (!isInteractive) classes.push(\"is-label\");\n if (node.isActive) classes.push(\"is-active\");\n const isRootLevel = depth < 0;\n const panelId = hasChildren ? `canopy-section-${nodeKey}` : null;\n const allowToggle = hasChildren && !isRootLevel;\n const defaultExpanded = allowToggle ? !!node.isExpanded : true;\n const toggleLabel = buildToggleLabel\n ? buildToggleLabel(node.title || node.slug)\n : `Toggle ${node.title || \"section\"} menu`;\n\n return (\n <li\n className=\"canopy-nav-tree__item\"\n data-depth={depth}\n data-canopy-nav-item={allowToggle ? \"true\" : undefined}\n data-expanded={\n allowToggle ? (defaultExpanded ? \"true\" : \"false\") : undefined\n }\n data-default-expanded={\n allowToggle && defaultExpanded ? \"true\" : undefined\n }\n >\n <div className=\"canopy-nav-tree__row\">\n <div className=\"canopy-nav-tree__link-wrapper\">\n <Tag\n className={classes.join(\" \")}\n href={isInteractive ? node.href : undefined}\n aria-current={node.isActive ? \"page\" : undefined}\n tabIndex={isInteractive ? undefined : -1}\n >\n {node.title || node.slug}\n </Tag>\n </div>\n {allowToggle ? (\n <button\n type=\"button\"\n className=\"canopy-nav-tree__toggle\"\n aria-expanded={defaultExpanded ? \"true\" : \"false\"}\n aria-controls={panelId || undefined}\n aria-label={toggleLabel}\n data-canopy-nav-item-toggle={panelId || undefined}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n className=\"canopy-nav-tree__toggle-icon\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M5 9l7 7 7-7\"\n />\n </svg>\n <span className=\"sr-only\">{toggleLabel}</span>\n </button>\n ) : null}\n </div>\n {hasChildren ? (\n <div\n id={panelId || undefined}\n className=\"canopy-nav-tree__children\"\n aria-hidden={\n allowToggle ? (defaultExpanded ? \"false\" : \"true\") : \"false\"\n }\n hidden={allowToggle ? !defaultExpanded : undefined}\n >\n <NavigationTreeList\n nodes={node.children}\n depth={depth + 1}\n parentKey={nodeKey}\n buildToggleLabel={buildToggleLabel}\n buildNavLabel={buildNavLabel}\n />\n </div>\n ) : null}\n </li>\n );\n}\n\nexport default function NavigationTree({\n root,\n className = \"\",\n parentKey = \"nav\",\n includeRoot = false,\n heading,\n headingClassName = \"canopy-nav-tree__heading\",\n component: Component = \"div\",\n ...rest\n}) {\n if (!root) return null;\n const {formatString, getString} = useLocale();\n const navFallback = getString(\"common.nouns.navigation\", \"navigation\");\n const buildNavLabel = React.useCallback(\n (value) =>\n formatString(\n \"common.phrases.nav_label\",\n \"{content} navigation\",\n {content: value || navFallback},\n ),\n [formatString, navFallback],\n );\n const buildToggleLabel = React.useCallback(\n (value) =>\n formatString(\n \"common.phrases.toggle_content\",\n \"Toggle {content}\",\n {content: buildNavLabel(value)},\n ),\n [buildNavLabel, formatString],\n );\n const nodes = includeRoot ? [root] : root.children;\n if (!Array.isArray(nodes) || !nodes.length) return null;\n const combinedClassName = [\"canopy-nav-tree\", className]\n .filter(Boolean)\n .join(\" \");\n return (\n <Component\n className={combinedClassName}\n data-canopy-nav-tree=\"true\"\n {...rest}\n >\n {heading ? <div className={headingClassName}>{heading}</div> : null}\n <NavigationTreeList\n nodes={nodes}\n depth={includeRoot ? -1 : 0}\n parentKey={parentKey}\n buildToggleLabel={buildToggleLabel}\n buildNavLabel={buildNavLabel}\n />\n </Component>\n );\n}\n", "import React from \"react\";\nimport NavigationTree from \"./NavigationTree.jsx\";\nimport {useLocale} from \"../locale/index.js\";\nimport {buildHeadingTree} from \"./headingUtils.js\";\nimport getPageContext from \"./pageContext.js\";\n\nconst PageContext = typeof getPageContext === \"function\" ? getPageContext() : null;\n\nconst SCROLL_OFFSET_REM = 1.618;\nconst MAX_HEADING_DEPTH = 3;\n\nfunction depthIndex(depth) {\n return Math.max(0, Math.min(5, (depth || 1) - 1));\n}\n\nfunction resolveDepth(value, fallback = 1) {\n return Math.max(1, typeof value === \"number\" ? value : fallback);\n}\n\nfunction buildNodeKey(id, parentKey, index) {\n const base = id ? String(id) : `section-${parentKey || \"root\"}-${index}`;\n const sanitized = base.replace(/[^a-zA-Z0-9_-]/g, \"-\");\n return `${parentKey || \"section\"}-${sanitized || index}`;\n}\n\nexport default function ContentNavigation({\n items: itemsProp = [],\n className = \"\",\n style = {},\n heading,\n headingId,\n pageTitle,\n ariaLabel,\n collapsible = false,\n}) {\n const {getString, formatString} = useLocale();\n const context = PageContext ? React.useContext(PageContext) : null;\n const contextHeadings = React.useMemo(() => {\n const headings = context && context.page ? context.page.headings : null;\n return Array.isArray(headings) ? headings : [];\n }, [context]);\n const resolvedItems = React.useMemo(() => {\n if (itemsProp && itemsProp.length) return itemsProp;\n return buildHeadingTree(contextHeadings);\n }, [itemsProp, contextHeadings]);\n const topHeading = React.useMemo(() => {\n return (\n contextHeadings.find((entry) => {\n const depth = entry && (entry.depth || entry.level);\n return depth === 1;\n }) || null\n );\n }, [contextHeadings]);\n const resolvedHeadingId =\n headingId || (topHeading && topHeading.id) || null;\n const resolvedPageTitle =\n pageTitle || (context && context.page ? context.page.title : null) || null;\n const inferredHeading =\n (topHeading && (topHeading.title || topHeading.text)) || null;\n const isBrowser =\n typeof window !== \"undefined\" && typeof document !== \"undefined\";\n const savedDepthsRef = React.useRef(null);\n const [internalExpanded, setInternalExpanded] = React.useState(\n collapsible ? false : true,\n );\n\n React.useEffect(() => {\n setInternalExpanded(collapsible ? false : true);\n }, [collapsible]);\n\n const handleToggle = React.useCallback(() => {\n if (!collapsible) return;\n setInternalExpanded((prev) => !prev);\n }, [collapsible]);\n\n const isExpanded = collapsible ? internalExpanded : true;\n\n if ((!resolvedItems || !resolvedItems.length) && !resolvedHeadingId)\n return null;\n\n const combinedClassName = [\n \"canopy-sub-navigation canopy-content-navigation\",\n isExpanded\n ? \"canopy-content-navigation--expanded\"\n : \"canopy-content-navigation--collapsed\",\n !collapsible ? \"canopy-content-navigation--static\" : null,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const effectiveHeading =\n heading || inferredHeading || resolvedPageTitle || null;\n const fallbackNavLabel = getString(\n \"common.nouns.section_navigation\",\n \"Section navigation\",\n );\n const computedNavLabel = effectiveHeading\n ? formatString(\n \"common.phrases.nav_label\",\n \"{content} navigation\",\n {content: effectiveHeading},\n )\n : fallbackNavLabel;\n const navLabel = ariaLabel || computedNavLabel;\n const toggleSrLabel = isExpanded\n ? formatString(\"common.phrases.hide_content\", \"Hide {content}\", {\n content: navLabel,\n })\n : formatString(\"common.phrases.show_content\", \"Show {content}\", {\n content: navLabel,\n });\n const toggleStateClass = isExpanded ? \"is-expanded\" : \"is-collapsed\";\n const toggleShowLabel = getString(\"common.actions.show\", \"Show\");\n const toggleHideLabel = getString(\"common.actions.hide\", \"Hide\");\n const contentNavLabel = getString(\n \"common.nouns.content_navigation\",\n \"content navigation\",\n );\n const onThisPageLabel = getString(\n \"common.misc.on_this_page\",\n \"On this page\",\n );\n const showContentNavLabel = formatString(\n \"common.phrases.show_content\",\n \"Show {content}\",\n {content: contentNavLabel},\n );\n const hideContentNavLabel = formatString(\n \"common.phrases.hide_content\",\n \"Hide {content}\",\n {content: contentNavLabel},\n );\n\n const getSavedDepth = React.useCallback((id, fallback) => {\n if (!id) return fallback;\n if (!savedDepthsRef.current) savedDepthsRef.current = new Map();\n const store = savedDepthsRef.current;\n if (store.has(id)) return store.get(id);\n store.set(id, fallback);\n return fallback;\n }, []);\n\n const headingEntries = React.useMemo(() => {\n const entries = [];\n const seen = new Set();\n if (resolvedHeadingId) {\n const topId = String(resolvedHeadingId);\n entries.push({id: topId, depth: 1});\n seen.add(topId);\n }\n const pushNodes = (nodes) => {\n if (!Array.isArray(nodes)) return;\n nodes.forEach((node) => {\n if (!node || !node.id) return;\n const id = String(node.id);\n if (seen.has(id)) return;\n seen.add(id);\n const depth = resolveDepth(\n typeof node.depth === \"number\" ? node.depth : node.level,\n getSavedDepth(id, 2),\n );\n if (depth > MAX_HEADING_DEPTH) return;\n entries.push({id, depth});\n if (node.children && node.children.length) pushNodes(node.children);\n });\n };\n pushNodes(resolvedItems);\n return entries;\n }, [resolvedHeadingId, resolvedItems, getSavedDepth]);\n\n const fallbackId = headingEntries.length\n ? headingEntries[0].id\n : resolvedHeadingId || null;\n const [activeId, setActiveId] = React.useState(fallbackId);\n const activeIdRef = React.useRef(activeId);\n React.useEffect(() => {\n if (\n process.env.NODE_ENV !== \"production\" &&\n activeIdRef.current !== activeId\n ) {\n console.log(\"[ContentNavigation] activeId changed:\", activeId);\n }\n activeIdRef.current = activeId;\n }, [activeId]);\n\n React.useEffect(() => {\n if (!headingEntries.length) return;\n if (!headingEntries.some((entry) => entry.id === activeIdRef.current)) {\n const next = headingEntries[0].id;\n activeIdRef.current = next;\n setActiveId(next);\n }\n }, [headingEntries]);\n\n const computeOffsetPx = React.useCallback(() => {\n if (!isBrowser) return 0;\n try {\n const root = document.documentElement;\n const fontSize = root\n ? parseFloat(window.getComputedStyle(root).fontSize || \"16\") || 16\n : 16;\n return fontSize * SCROLL_OFFSET_REM;\n } catch (_) {\n return 0;\n }\n }, [isBrowser]);\n\n const headingElementsRef = React.useRef([]);\n\n const updateActiveFromElements = React.useCallback(\n (elements) => {\n if (!elements || !elements.length) return;\n const offset = computeOffsetPx();\n const viewportLimit =\n typeof window !== \"undefined\" && window.innerHeight\n ? window.innerHeight * 0.5\n : 0;\n let fallbackId = elements[0].id;\n let bestId = fallbackId;\n let bestDistance = Number.POSITIVE_INFINITY;\n elements.forEach(({id, element}) => {\n if (!element || !id) return;\n const rect = element.getBoundingClientRect();\n const relativeTop = rect.top - offset;\n if (viewportLimit > 0 && relativeTop < -viewportLimit) {\n return;\n }\n const distance = Math.abs(relativeTop);\n if (distance < bestDistance) {\n bestDistance = distance;\n bestId = id;\n }\n });\n const nextId = bestId || fallbackId;\n if (nextId && nextId !== activeIdRef.current) {\n if (process.env.NODE_ENV !== \"production\") {\n console.log(\"[ContentNavigation] updateActive ->\", nextId);\n }\n activeIdRef.current = nextId;\n setActiveId(nextId);\n }\n },\n [computeOffsetPx],\n );\n\n React.useEffect(() => {\n if (!isBrowser) return undefined;\n const elements = headingEntries\n .map((entry) => {\n const element = document.getElementById(entry.id);\n return element ? {id: entry.id, element} : null;\n })\n .filter(Boolean);\n headingElementsRef.current = elements;\n updateActiveFromElements(elements);\n if (!elements.length) return undefined;\n\n let ticking = false;\n const handle = () => {\n if (!ticking) {\n ticking = true;\n window.requestAnimationFrame(() => {\n if (process.env.NODE_ENV !== \"production\") {\n console.log(\n \"[ContentNavigation] scroll event\",\n window.scrollY,\n window.innerHeight,\n );\n }\n updateActiveFromElements(elements);\n ticking = false;\n });\n }\n };\n window.addEventListener(\"scroll\", handle, {passive: true});\n window.addEventListener(\"resize\", handle);\n return () => {\n window.removeEventListener(\"scroll\", handle);\n window.removeEventListener(\"resize\", handle);\n };\n }, [headingEntries, isBrowser, updateActiveFromElements]);\n\n const handleAnchorClick = React.useCallback(\n (event, targetId, options = {}) => {\n try {\n if (event && typeof event.preventDefault === \"function\")\n event.preventDefault();\n } catch (_) {}\n if (!isBrowser) return;\n const offset = computeOffsetPx();\n let top = 0;\n if (targetId && targetId !== \"top\" && !options.scrollToTop) {\n const el = document.getElementById(targetId);\n if (el) {\n const rect = el.getBoundingClientRect();\n top = window.scrollY + rect.top - offset;\n }\n }\n if (!Number.isFinite(top) || top < 0 || options.scrollToTop) top = 0;\n const nextId =\n targetId && targetId !== \"top\"\n ? targetId\n : headingEntries[0]?.id || resolvedHeadingId || null;\n if (nextId) {\n activeIdRef.current = nextId;\n setActiveId(nextId);\n }\n try {\n window.scrollTo({top, behavior: \"smooth\"});\n } catch (_) {\n window.scrollTo(0, top);\n }\n },\n [computeOffsetPx, headingEntries, resolvedHeadingId, isBrowser],\n );\n\n const navTreeRoot = React.useMemo(() => {\n function mapNodes(nodes, parentKey = \"section\") {\n if (!Array.isArray(nodes) || !nodes.length) return [];\n return nodes\n .map((node, index) => {\n if (!node) return null;\n const id = node.id ? String(node.id) : \"\";\n const depth = resolveDepth(\n typeof node.depth === \"number\" ? node.depth : node.level,\n getSavedDepth(id, 2),\n );\n if (depth > MAX_HEADING_DEPTH) return null;\n const key = buildNodeKey(\n id || node.title || `section-${index}`,\n parentKey,\n index,\n );\n const href = id ? `#${id}` : \"#\";\n const childNodes = mapNodes(node.children || [], key);\n const isActive = id && activeId === id;\n const hasActiveChild = childNodes.some(\n (child) => child && child.isActive,\n );\n return {\n slug: key,\n title: node.title || node.text || id || `Section ${index + 1}`,\n href,\n children: childNodes,\n isActive: Boolean(isActive),\n isExpanded: isActive || hasActiveChild,\n };\n })\n .filter(Boolean);\n }\n\n const nodes = mapNodes(resolvedItems, \"section\");\n return {\n slug: \"content-nav-root\",\n title: effectiveHeading || resolvedPageTitle || onThisPageLabel,\n children: nodes,\n };\n }, [\n resolvedItems,\n effectiveHeading,\n resolvedPageTitle,\n activeId,\n getSavedDepth,\n ]);\n\n return (\n <nav\n className={combinedClassName}\n style={style}\n aria-label={navLabel}\n data-canopy-content-nav=\"true\"\n >\n {collapsible ? (\n <button\n type=\"button\"\n className={`canopy-content-navigation__toggle ${toggleStateClass}`}\n aria-expanded={isExpanded}\n aria-label={toggleSrLabel}\n title={toggleSrLabel}\n onClick={handleToggle}\n data-canopy-content-nav-toggle=\"true\"\n data-show-label={toggleShowLabel}\n data-hide-label={toggleHideLabel}\n data-show-full-label={showContentNavLabel}\n data-hide-full-label={hideContentNavLabel}\n >\n <span\n className=\"canopy-content-navigation__toggle-icon\"\n aria-hidden=\"true\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ionicon\"\n viewBox=\"0 0 512 512\"\n >\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"50\"\n d=\"M160 144h288M160 256h288M160 368h288\"\n />\n <circle\n cx=\"80\"\n cy=\"144\"\n r=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"32\"\n />\n <circle\n cx=\"80\"\n cy=\"256\"\n r=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"32\"\n />\n <circle\n cx=\"80\"\n cy=\"368\"\n r=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"32\"\n />\n </svg>\n </span>\n <span\n className=\"canopy-content-navigation__toggle-label\"\n data-canopy-content-nav-toggle-label=\"true\"\n >\n <span className=\"sr-only\">{toggleSrLabel}</span>\n </span>\n <span className=\"sr-only\" data-canopy-content-nav-toggle-sr=\"true\">\n {toggleSrLabel}\n </span>\n </button>\n ) : null}\n <NavigationTree\n root={navTreeRoot}\n includeRoot={false}\n parentKey=\"content-nav\"\n className=\"canopy-sub-navigation__tree canopy-content-navigation__tree\"\n />\n </nav>\n );\n}\n", "export function buildHeadingTree(headings) {\n if (!Array.isArray(headings) || !headings.length) return [];\n const root = [];\n const stack = [];\n headings.forEach((heading) => {\n if (!heading || typeof heading !== 'object') return;\n const depth = typeof heading.depth === 'number' ? heading.depth : heading.level;\n if (typeof depth !== 'number' || depth < 2) return;\n const entry = {\n id: heading.id || heading.slug || heading.title,\n title: heading.title || heading.text || heading.id,\n depth,\n children: [],\n };\n while (stack.length && stack[stack.length - 1].depth >= entry.depth) {\n stack.pop();\n }\n if (!stack.length) {\n root.push(entry);\n } else {\n stack[stack.length - 1].children.push(entry);\n }\n stack.push(entry);\n });\n return root;\n}\n\nexport default {\n buildHeadingTree,\n};\n", "import React from 'react';\n\nexport default function ContentNavigationScript() {\n const code = `\n(function () {\n if (typeof window === 'undefined') return;\n if (window.__CANOPY_CONTENT_NAV_READY__) return;\n window.__CANOPY_CONTENT_NAV_READY__ = true;\n var STORAGE_KEY = 'canopy_content_nav_collapsed';\n var storage = null;\n try {\n storage = window.localStorage;\n } catch (error) {\n storage = null;\n }\n\n function setStored(value) {\n if (!storage) return;\n try {\n if (value == null) {\n storage.removeItem(STORAGE_KEY);\n } else {\n storage.setItem(STORAGE_KEY, value);\n }\n } catch (error) {}\n }\n\n function getStored() {\n if (!storage) return null;\n try {\n return storage.getItem(STORAGE_KEY);\n } catch (error) {\n return null;\n }\n }\n\n function ready(fn) {\n if (!fn) return;\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', fn, { once: true });\n } else {\n fn();\n }\n }\n\n function applyState(root, collapsed) {\n if (!root) return;\n var isCollapsed = !!collapsed;\n root.classList.toggle('is-collapsed', isCollapsed);\n var layout = root.closest('.canopy-layout');\n if (layout) layout.classList.toggle('canopy-layout--content-nav-collapsed', isCollapsed);\n var nav = root.querySelector('[data-canopy-content-nav]');\n if (nav) {\n nav.classList.toggle('canopy-content-navigation--collapsed', isCollapsed);\n nav.classList.toggle('canopy-content-navigation--expanded', !isCollapsed);\n nav.setAttribute('data-expanded', isCollapsed ? 'false' : 'true');\n }\n var toggle = root.querySelector('[data-canopy-content-nav-toggle]');\n if (toggle) {\n var showLabel = toggle.getAttribute('data-show-label') || 'Show';\n var hideLabel = toggle.getAttribute('data-hide-label') || 'Hide';\n var showFull = toggle.getAttribute('data-show-full-label') || 'Show section navigation';\n var hideFull = toggle.getAttribute('data-hide-full-label') || 'Hide section navigation';\n var labelNode = toggle.querySelector('[data-canopy-content-nav-toggle-label]');\n var srNode = toggle.querySelector('[data-canopy-content-nav-toggle-sr]');\n toggle.setAttribute('aria-expanded', isCollapsed ? 'false' : 'true');\n toggle.setAttribute('aria-label', isCollapsed ? showFull : hideFull);\n toggle.setAttribute('title', isCollapsed ? showFull : hideFull);\n toggle.classList.toggle('is-collapsed', isCollapsed);\n toggle.classList.toggle('is-expanded', !isCollapsed);\n if (!labelNode) {\n toggle.textContent = isCollapsed ? showLabel : hideLabel;\n }\n if (srNode) {\n srNode.textContent = isCollapsed ? showFull : hideFull;\n }\n }\n if (root.__canopyContentNavSync) {\n try {\n root.__canopyContentNavSync();\n } catch (_) {}\n }\n }\n\n function setupFloatingState(root) {\n if (!root || typeof IntersectionObserver !== 'function') return;\n if (root.__canopyContentNavFloating) return;\n var nav = root.querySelector('[data-canopy-content-nav]');\n if (!nav) return;\n var sentinel = root.querySelector('[data-canopy-content-nav-sentinel]');\n if (!sentinel) {\n sentinel = document.createElement('div');\n sentinel.setAttribute('aria-hidden', 'true');\n sentinel.setAttribute('data-canopy-content-nav-sentinel', 'true');\n root.insertBefore(sentinel, nav);\n }\n var placeholder = root.querySelector('[data-canopy-content-nav-placeholder]');\n if (!placeholder) {\n placeholder = document.createElement('div');\n placeholder.setAttribute('aria-hidden', 'true');\n placeholder.setAttribute('data-canopy-content-nav-placeholder', 'true');\n if (nav.nextSibling) {\n root.insertBefore(placeholder, nav.nextSibling);\n } else {\n root.appendChild(placeholder);\n }\n }\n root.__canopyContentNavFloating = true;\n\n function syncPosition() {\n try {\n var rect = root.getBoundingClientRect();\n nav.style.setProperty('--canopy-content-nav-fixed-left', rect.left + 'px');\n nav.style.setProperty('--canopy-content-nav-fixed-width', rect.width + 'px');\n if (placeholder) placeholder.style.width = rect.width + 'px';\n } catch (_) {}\n }\n\n var observer = new IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n var stuck = !entry.isIntersecting && entry.boundingClientRect.top < 0;\n nav.classList.toggle('canopy-content-navigation--floating', stuck);\n nav.setAttribute('data-stuck', stuck ? 'true' : 'false');\n if (placeholder) {\n placeholder.style.height = stuck ? nav.offsetHeight + 'px' : '0px';\n }\n });\n });\n\n observer.observe(sentinel);\n syncPosition();\n var handleResize = function () {\n syncPosition();\n };\n window.addEventListener('resize', handleResize);\n root.__canopyContentNavCleanup = function () {\n observer.disconnect();\n window.removeEventListener('resize', handleResize);\n };\n root.__canopyContentNavSync = syncPosition;\n }\n\n function computeOffsetPx() {\n try {\n var root = document.documentElement;\n var size = root ? parseFloat(window.getComputedStyle(root).fontSize || '16') || 16 : 16;\n return size * 1.618;\n } catch (error) {\n return 0;\n }\n }\n\n function setupActiveHeadingWatcher(root) {\n if (!root || root.__canopyContentNavActive) return;\n var nav = root.querySelector('[data-canopy-content-nav]');\n if (!nav) return;\n var linkNodes = Array.prototype.slice.call(\n nav.querySelectorAll('.canopy-nav-tree__link[href^=\"#\"]')\n );\n var entries = linkNodes\n .map(function (link) {\n if (!link || !link.getAttribute) return null;\n var href = link.getAttribute('href') || '';\n if (!href || href.charAt(0) !== '#') return null;\n var id = href.slice(1);\n if (!id) return null;\n var target = document.getElementById(id);\n if (!target) return null;\n return {\n id: id,\n link: link,\n target: target,\n item: link.closest('[data-canopy-nav-item]') || null,\n };\n })\n .filter(Boolean);\n if (!entries.length) return;\n root.__canopyContentNavActive = true;\n var activeId = null;\n\n function expandParents(link) {\n var parent = link ? link.closest('[data-canopy-nav-item]') : null;\n while (parent) {\n parent.setAttribute('data-expanded', 'true');\n var toggle = parent.querySelector('[data-canopy-nav-item-toggle]');\n if (toggle) {\n toggle.setAttribute('aria-expanded', 'true');\n var targetId = toggle.getAttribute('data-canopy-nav-item-toggle');\n if (targetId) {\n var panel = document.getElementById(targetId);\n if (panel) {\n panel.hidden = false;\n panel.removeAttribute('hidden');\n panel.setAttribute('aria-hidden', 'false');\n }\n }\n }\n parent = parent.parentElement\n ? parent.parentElement.closest('[data-canopy-nav-item]')\n : null;\n }\n }\n\n function applyActive(id) {\n if (!id || activeId === id) return;\n activeId = id;\n var activeParents = new Set();\n entries.forEach(function (entry) {\n var isActive = entry.id === id;\n entry.link.classList.toggle('is-active', isActive);\n if (entry.item) entry.item.classList.toggle('is-active', isActive);\n if (isActive) {\n expandParents(entry.link);\n var parent = entry.link.closest('[data-canopy-nav-item]');\n while (parent) {\n activeParents.add(parent);\n parent = parent.parentElement\n ? parent.parentElement.closest('[data-canopy-nav-item]')\n : null;\n }\n }\n });\n entries.forEach(function (entry) {\n var item = entry.item;\n if (!item) return;\n if (!activeParents.has(item) && entry.id !== id) {\n item.setAttribute('data-expanded', 'false');\n var toggle = item.querySelector('[data-canopy-nav-item-toggle]');\n if (toggle) {\n toggle.setAttribute('aria-expanded', 'false');\n var targetId = toggle.getAttribute('data-canopy-nav-item-toggle');\n if (targetId) {\n var panel = document.getElementById(targetId);\n if (panel) {\n panel.hidden = true;\n panel.setAttribute('hidden', '');\n panel.setAttribute('aria-hidden', 'true');\n }\n }\n }\n }\n });\n }\n\n function updateActive() {\n var offset = computeOffsetPx();\n var baseFont = 16;\n try {\n var root = document.documentElement;\n baseFont = parseFloat(window.getComputedStyle(root).fontSize || '16') || 16;\n } catch (_) {}\n var proximityLimit = baseFont * 5;\n var fallbackId = entries[0].id;\n var bestId = fallbackId;\n var bestDistance = Number.POSITIVE_INFINITY;\n entries.forEach(function (entry) {\n if (!entry || !entry.target) return;\n var rect = entry.target.getBoundingClientRect();\n var relativeTop = rect.top - offset;\n if (relativeTop < -proximityLimit) return;\n var distance = Math.abs(relativeTop);\n if (distance < bestDistance) {\n bestDistance = distance;\n bestId = entry.id;\n }\n });\n applyActive(bestId || fallbackId);\n }\n\n updateActive();\n var ticking = false;\n function handle() {\n if (ticking) return;\n ticking = true;\n window.requestAnimationFrame(function () {\n updateActive();\n ticking = false;\n });\n }\n window.addEventListener('scroll', handle, { passive: true });\n window.addEventListener('resize', handle);\n }\n\n ready(function () {\n var rootSet = new Set();\n var navNodes = Array.prototype.slice.call(\n document.querySelectorAll('[data-canopy-content-nav]')\n );\n navNodes.forEach(function (nav) {\n if (!nav || !nav.closest) return;\n var root = nav.closest('[data-canopy-content-nav-root]');\n if (!root) {\n root = nav.parentElement || nav;\n if (root && !root.hasAttribute('data-canopy-content-nav-root')) {\n root.setAttribute('data-canopy-content-nav-root', 'true');\n }\n }\n if (root) rootSet.add(root);\n });\n\n var roots = Array.from(rootSet);\n if (!roots.length) return;\n\n var collapsibleRoots = [];\n roots.forEach(function (root) {\n var nav = root.querySelector('[data-canopy-content-nav]');\n if (!nav) return;\n var isStatic = nav.classList.contains('canopy-content-navigation--static');\n if (isStatic) {\n root.classList.remove('is-collapsed');\n nav.classList.add('canopy-content-navigation--expanded');\n nav.classList.remove('canopy-content-navigation--collapsed');\n nav.setAttribute('data-expanded', 'true');\n } else {\n collapsibleRoots.push(root);\n }\n setupFloatingState(root);\n setupActiveHeadingWatcher(root);\n });\n\n if (!collapsibleRoots.length) return;\n\n var stored = getStored();\n var collapsed = true;\n var isDesktop = false;\n try {\n var bp = window.getComputedStyle(document.documentElement).getPropertyValue('--canopy-desktop-breakpoint') || '70rem';\n isDesktop = window.matchMedia('(min-width: ' + bp.trim() + ')').matches;\n } catch (_) {\n isDesktop = false;\n }\n if (!isDesktop) {\n collapsed = true;\n } else if (stored === '0' || stored === 'false') {\n collapsed = false;\n } else if (stored === '1' || stored === 'true') {\n collapsed = true;\n }\n\n function sync(next) {\n collapsed = !!next;\n collapsibleRoots.forEach(function (root) {\n applyState(root, collapsed);\n });\n setStored(collapsed ? '1' : '0');\n }\n\n sync(collapsed);\n\n collapsibleRoots.forEach(function (root) {\n var toggle = root.querySelector('[data-canopy-content-nav-toggle]');\n if (!toggle) return;\n toggle.addEventListener('click', function (event) {\n event.preventDefault();\n sync(!collapsed);\n });\n });\n });\n})();\n `;\n\n return <script dangerouslySetInnerHTML={{__html: code}} />;\n}\n", "import React from 'react';\nimport SubNavigation from './SubNavigation.jsx';\nimport ContentNavigation from './ContentNavigation.jsx';\nimport ContentNavigationScript from './ContentNavigationScript.jsx';\nimport {buildHeadingTree} from './headingUtils.js';\nimport getPageContext from './pageContext.js';\n\nfunction buildNavigationAside(sidebar, className) {\n if (!sidebar) {\n return <SubNavigation className={className} />;\n }\n if (typeof sidebar === \"function\") {\n return React.createElement(sidebar);\n }\n return sidebar;\n}\n\nexport default function Layout({\n children,\n sidebar,\n navigation = true,\n fluid = false,\n contentNavigation = true,\n className = \"\",\n contentClassName = \"\",\n sidebarClassName = \"\",\n contentNavigationClassName = \"\",\n ...rest\n}) {\n const PageContext = typeof getPageContext === \"function\" ? getPageContext() : null;\n const context = PageContext ? React.useContext(PageContext) : null;\n const pageHeadings = React.useMemo(() => {\n const headings = context && context.page ? context.page.headings : null;\n return Array.isArray(headings) ? headings : [];\n }, [context]);\n const contentHeading = React.useMemo(() => {\n const first = pageHeadings.find((heading) => {\n const depth = heading && (heading.depth || heading.level);\n return depth === 1;\n });\n return first && first.title ? first.title : null;\n }, [pageHeadings]);\n const headingAnchorId = React.useMemo(() => {\n const first = pageHeadings.find((heading) => {\n const depth = heading && (heading.depth || heading.level);\n return depth === 1;\n });\n return first && first.id ? first.id : null;\n }, [pageHeadings]);\n const headingTree = React.useMemo(\n () => buildHeadingTree(pageHeadings),\n [pageHeadings]\n );\n\n const showLeftColumn = navigation !== false;\n const hasContentNavigation =\n navigation !== false &&\n contentNavigation !== false &&\n headingTree.length > 0;\n\n const containerClassName = (() => {\n const classes = [\"canopy-layout\"];\n classes.push(fluid ? \"canopy-layout--fluid\" : \"canopy-layout--fixed\");\n if (showLeftColumn) classes.push(\"canopy-layout--with-sidebar\");\n if (hasContentNavigation) {\n classes.push(\"canopy-layout--with-content-nav\");\n classes.push(\"canopy-layout--content-nav-collapsed\");\n }\n if (className) classes.push(className);\n return classes.join(\" \");\n })();\n\n const leftAsideClassName = [\"canopy-layout__sidebar\", sidebarClassName]\n .filter(Boolean)\n .join(\" \");\n\n const contentClassNames = [\"canopy-layout__content\", contentClassName]\n .filter(Boolean)\n .join(\" \");\n\n const contentNavigationAsideClassName = [\n \"canopy-layout__content-nav\",\n \"is-collapsed\",\n contentNavigationClassName,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const sidebarNode = showLeftColumn\n ? buildNavigationAside(sidebar, sidebarClassName)\n : null;\n\n return (\n <div className={containerClassName} {...rest}>\n {showLeftColumn ? (\n <aside className={leftAsideClassName}>{sidebarNode}</aside>\n ) : null}\n <div className={contentClassNames}>{children}</div>\n {hasContentNavigation ? (\n <>\n <aside\n className={contentNavigationAsideClassName}\n data-canopy-content-nav-root=\"true\"\n >\n <ContentNavigation\n items={headingTree}\n heading={contentHeading || undefined}\n headingId={headingAnchorId || undefined}\n pageTitle={\n context && context.page ? context.page.title : undefined\n }\n collapsible\n />\n </aside>\n <ContentNavigationScript />\n </>\n ) : null}\n </div>\n );\n}\n", "import React from \"react\";\nimport SearchPanel from \"../search/SearchPanel.jsx\";\nimport CanopyBrand from \"./CanopyBrand.jsx\";\nimport CanopyModal from \"./CanopyModal.jsx\";\nimport NavigationTree from \"./NavigationTree.jsx\";\nimport getSafePageContext from \"./pageContext.js\";\nimport LanguageToggle from \"./LanguageToggle.jsx\";\nimport {useLocale} from \"../locale/index.js\";\n\nfunction HeaderScript() {\n const code = `\n(function () {\n if (typeof window === 'undefined') return;\n\n var doc = document;\n var body = doc.body;\n var root = doc.documentElement;\n\n function desktopBreakpointQuery() {\n if (typeof window === 'undefined') return '(min-width: 70rem)';\n try {\n var styles = window.getComputedStyle ? window.getComputedStyle(root) : null;\n var value = styles ? styles.getPropertyValue('--canopy-desktop-breakpoint') : '';\n if (typeof value === 'string') value = value.trim();\n if (!value) value = '70rem';\n return '(min-width: ' + value + ')';\n } catch (error) {\n return '(min-width: 70rem)';\n }\n }\n\n function ready(fn) {\n if (doc.readyState === 'loading') {\n doc.addEventListener('DOMContentLoaded', fn, { once: true });\n } else {\n fn(); \n }\n }\n\n ready(function () {\n var header = doc.querySelector('.canopy-header');\n if (!header) return;\n\n var NAV_ATTR = 'data-mobile-nav';\n var SEARCH_ATTR = 'data-mobile-search';\n var NAV_ITEM_ATTR = 'data-canopy-nav-item';\n var NAV_ITEM_TOGGLE_ATTR = 'data-canopy-nav-item-toggle';\n\n function modalFor(type) {\n return doc.querySelector('[data-canopy-modal=\"' + type + '\"]');\n }\n\n function each(list, fn) {\n if (!list || typeof fn !== 'function') return;\n Array.prototype.forEach.call(list, fn);\n }\n\n function setExpanded(type, expanded) {\n var toggles = header.querySelectorAll('[data-canopy-header-toggle=\"' + type + '\"]');\n each(toggles, function (btn) {\n btn.setAttribute('aria-expanded', expanded ? 'true' : 'false');\n });\n var modal = modalFor(type);\n if (modal) {\n modal.setAttribute('data-open', expanded ? 'true' : 'false');\n modal.setAttribute('aria-hidden', expanded ? 'false' : 'true');\n }\n }\n\n function lockScroll(shouldLock) {\n if (!body) return;\n if (shouldLock) {\n if (!body.dataset.canopyScrollLock) {\n body.dataset.canopyScrollPrevOverflow = body.style.overflow || '';\n if (root && root.dataset) {\n root.dataset.canopyScrollPrevOverflow = root.style.overflow || '';\n }\n }\n body.dataset.canopyScrollLock = '1';\n body.style.overflow = 'hidden';\n if (root) root.style.overflow = 'hidden';\n } else {\n if (body.dataset.canopyScrollLock) {\n delete body.dataset.canopyScrollLock;\n body.style.overflow = body.dataset.canopyScrollPrevOverflow || '';\n delete body.dataset.canopyScrollPrevOverflow;\n }\n if (root && root.dataset) {\n root.style.overflow = root.dataset.canopyScrollPrevOverflow || '';\n delete root.dataset.canopyScrollPrevOverflow;\n }\n }\n }\n\n function stateFor(type) {\n if (type === 'nav') return header.getAttribute(NAV_ATTR);\n if (type === 'search') return header.getAttribute(SEARCH_ATTR);\n return 'closed';\n }\n\n function focusSearchForm() {\n var input = header.querySelector('[data-canopy-search-form-input]');\n if (!input) return;\n var raf = typeof window !== 'undefined' && window.requestAnimationFrame;\n (raf || function (fn) { return setTimeout(fn, 16); })(function () {\n try {\n input.focus({ preventScroll: true });\n } catch (_) {\n try { input.focus(); } catch (_) {}\n }\n });\n }\n\n function focusNavMenu() {\n var modal = modalFor('nav');\n if (!modal) return;\n var target = modal.querySelector('button, a, input, [tabindex]:not([tabindex=\"-1\"])');\n if (!target) return;\n var raf = typeof window !== 'undefined' && window.requestAnimationFrame;\n (raf || function (fn) { return setTimeout(fn, 16); })(function () {\n try {\n target.focus({ preventScroll: true });\n } catch (_) {\n try { target.focus(); } catch (_) {}\n }\n });\n }\n\n function forEachNavTree(scope, fn) {\n if (typeof fn !== 'function') return;\n var rootNode = scope || doc;\n var trees = rootNode.querySelectorAll('[data-canopy-nav-tree]');\n each(trees, function (tree) {\n fn(tree);\n });\n }\n\n function resetNavItemToggles(scope) {\n forEachNavTree(scope, function (tree) {\n var toggles = tree.querySelectorAll('[' + NAV_ITEM_TOGGLE_ATTR + ']');\n each(toggles, function (btn) {\n btn.setAttribute('aria-expanded', 'false');\n var targetId = btn.getAttribute(NAV_ITEM_TOGGLE_ATTR);\n var panel = targetId ? doc.getElementById(targetId) : null;\n var parent = btn.closest('[' + NAV_ITEM_ATTR + ']');\n if (panel) {\n panel.hidden = true;\n panel.setAttribute('aria-hidden', 'true');\n panel.setAttribute('hidden', '');\n }\n if (parent) parent.setAttribute('data-expanded', 'false');\n });\n });\n }\n\n function applyDefaultNavItemState(scope) {\n forEachNavTree(scope, function (tree) {\n var defaults = tree.querySelectorAll('[data-default-expanded=\"true\"]');\n each(defaults, function (item) {\n var toggle = item.querySelector('[' + NAV_ITEM_TOGGLE_ATTR + ']');\n var targetId = toggle ? toggle.getAttribute(NAV_ITEM_TOGGLE_ATTR) : null;\n var panel = targetId ? doc.getElementById(targetId) : null;\n item.setAttribute('data-expanded', 'true');\n if (toggle) toggle.setAttribute('aria-expanded', 'true');\n if (panel) {\n panel.hidden = false;\n panel.removeAttribute('hidden');\n panel.setAttribute('aria-hidden', 'false');\n }\n });\n });\n }\n\n function setState(type, next) {\n if (type === 'nav') header.setAttribute(NAV_ATTR, next);\n if (type === 'search') header.setAttribute(SEARCH_ATTR, next);\n setExpanded(type, next === 'open');\n var navOpen = header.getAttribute(NAV_ATTR) === 'open';\n var searchOpen = header.getAttribute(SEARCH_ATTR) === 'open';\n lockScroll(navOpen || searchOpen);\n if (type === 'nav') {\n if (next !== 'open') {\n resetNavItemToggles(modalFor('nav'));\n } else {\n applyDefaultNavItemState(modalFor('nav'));\n }\n }\n }\n\n function toggle(type, force) {\n var current = stateFor(type) === 'open';\n var shouldOpen = typeof force === 'boolean' ? force : !current;\n if (shouldOpen && type === 'nav') setState('search', 'closed');\n if (shouldOpen && type === 'search') setState('nav', 'closed');\n setState(type, shouldOpen ? 'open' : 'closed');\n if (type === 'search' && shouldOpen) focusSearchForm();\n if (type === 'nav' && shouldOpen) focusNavMenu();\n }\n\n function setupNavItemToggles() {\n var toggles = doc.querySelectorAll('[' + NAV_ITEM_TOGGLE_ATTR + ']');\n each(toggles, function (btn) {\n if (btn.__canopyNavReady) return;\n btn.__canopyNavReady = true;\n btn.addEventListener('click', function (event) {\n event.preventDefault();\n event.stopPropagation();\n var targetId = btn.getAttribute(NAV_ITEM_TOGGLE_ATTR);\n if (!targetId) return;\n var panel = doc.getElementById(targetId);\n var parent = btn.closest('[' + NAV_ITEM_ATTR + ']');\n var expanded = btn.getAttribute('aria-expanded') === 'true';\n var next = !expanded;\n btn.setAttribute('aria-expanded', next ? 'true' : 'false');\n if (panel) {\n panel.hidden = !next;\n panel.setAttribute('aria-hidden', next ? 'false' : 'true');\n if (next) {\n panel.removeAttribute('hidden');\n } else {\n panel.setAttribute('hidden', '');\n }\n }\n if (parent) parent.setAttribute('data-expanded', next ? 'true' : 'false');\n });\n });\n }\n\n each(header.querySelectorAll('[data-canopy-header-toggle]'), function (btn) {\n btn.addEventListener('click', function (event) {\n event.preventDefault();\n var type = btn.getAttribute('data-canopy-header-toggle');\n if (!type) return;\n toggle(type);\n });\n });\n\n each(doc.querySelectorAll('[data-canopy-header-close]'), function (btn) {\n btn.addEventListener('click', function () {\n var type = btn.getAttribute('data-canopy-header-close');\n if (!type) return;\n toggle(type, false);\n });\n });\n\n var navModal = modalFor('nav');\n if (navModal) {\n navModal.addEventListener('click', function (event) {\n if (event.target === navModal) {\n toggle('nav', false);\n return;\n }\n var target = event.target && event.target.closest && event.target.closest('a');\n if (!target) return;\n toggle('nav', false);\n });\n }\n\n var searchModal = modalFor('search');\n if (searchModal) {\n searchModal.addEventListener('click', function (event) {\n if (event.target === searchModal) toggle('search', false);\n });\n }\n\n doc.addEventListener('keydown', function (event) {\n if (event.key !== 'Escape') return;\n var navOpen = header.getAttribute(NAV_ATTR) === 'open';\n var searchOpen = header.getAttribute(SEARCH_ATTR) === 'open';\n if (!navOpen && !searchOpen) return;\n event.preventDefault();\n toggle('nav', false);\n toggle('search', false);\n });\n\n var mq = window.matchMedia(desktopBreakpointQuery());\n function syncDesktopState() {\n if (mq.matches) {\n setState('nav', 'closed');\n setState('search', 'closed');\n setExpanded('nav', false);\n setExpanded('search', false);\n lockScroll(false);\n }\n }\n\n try {\n mq.addEventListener('change', syncDesktopState);\n } catch (_) {\n mq.addListener(syncDesktopState);\n }\n\n setupNavItemToggles();\n applyDefaultNavItemState(null);\n syncDesktopState();\n });\n})();\n `;\n\n return (\n <script\n dangerouslySetInnerHTML={{\n __html: code,\n }}\n />\n );\n}\n\nfunction ensureArray(navLinks) {\n if (!Array.isArray(navLinks)) return [];\n return navLinks.filter(\n (link) => link && typeof link === \"object\" && typeof link.href === \"string\",\n );\n}\n\nfunction normalizeHref(href) {\n if (typeof href !== \"string\") return \"\";\n let next = href.trim();\n if (!next) return \"\";\n try {\n const parsed = new URL(next, \"https://canopy.local\");\n next = parsed.pathname || \"/\";\n } catch (_) {\n next = next.replace(/[?#].*$/, \"\");\n }\n next = next.replace(/[?#].*$/, \"\");\n if (next.length > 1) {\n next = next.replace(/\\/+$/, \"\");\n }\n if (!next) return \"/\";\n return next;\n}\n\nfunction doesLinkMatchSection(linkHref, sectionNavigation) {\n if (!sectionNavigation || !sectionNavigation.root || !linkHref) return false;\n const normalizedLink = normalizeHref(linkHref);\n if (!normalizedLink) return false;\n const root = sectionNavigation.root;\n if (\n typeof root.href === \"string\" &&\n normalizeHref(root.href) === normalizedLink\n ) {\n return true;\n }\n if (root.slug) {\n const slugPath = normalizeHref(`/${root.slug}`);\n if (slugPath && normalizedLink === slugPath) {\n return true;\n }\n }\n return false;\n}\n\nfunction rootSegmentFromHref(href) {\n const normalized = normalizeHref(href);\n if (!normalized || normalized === \"/\") return \"\";\n const trimmed = normalized.replace(/^\\/+/, \"\");\n return trimmed.split(\"/\")[0] || \"\";\n}\n\nfunction getLinkNavigationData(link, navigationRoots, sectionNavigation) {\n if (!link || typeof link.href !== \"string\") return null;\n const segment = rootSegmentFromHref(link.href);\n if (navigationRoots && segment && navigationRoots[segment]) {\n return navigationRoots[segment];\n }\n if (sectionNavigation && doesLinkMatchSection(link.href, sectionNavigation)) {\n return sectionNavigation;\n }\n return null;\n}\n\nexport default function CanopyHeader(props = {}) {\n const {\n navigation: navLinksProp,\n searchLabel: searchLabelProp,\n searchHotkey = \"mod+k\",\n searchPlaceholder: searchPlaceholderProp,\n brandHref = \"/\",\n title: titleProp,\n logo: SiteLogo,\n languageToggle: languageToggleProp,\n } = props;\n\n const PageContext = getSafePageContext();\n const context = React.useContext(PageContext);\n const {getString, formatString} = useLocale();\n const contextPrimaryNav = context && Array.isArray(context.primaryNavigation)\n ? context.primaryNavigation\n : [];\n const navLinks = navLinksProp && navLinksProp.length\n ? ensureArray(navLinksProp)\n : ensureArray(contextPrimaryNav);\n const contextNavigation =\n context && context.navigation ? context.navigation : null;\n const contextSite = context && context.site ? context.site : null;\n const pageData = context && context.page ? context.page : null;\n const contextSiteTitle =\n contextSite && typeof contextSite.title === \"string\"\n ? contextSite.title.trim()\n : \"\";\n const siteLanguageToggle =\n contextSite && contextSite.languageToggle ? contextSite.languageToggle : null;\n const siteRoutes = contextSite && contextSite.routes ? contextSite.routes : null;\n const siteDefaultRoutes =\n contextSite && contextSite.routesDefault ? contextSite.routesDefault : null;\n const searchRouteValue =\n siteRoutes && typeof siteRoutes.search === \"string\"\n ? siteRoutes.search\n : \"\";\n const defaultSearchRoute =\n siteDefaultRoutes && typeof siteDefaultRoutes.search === \"string\"\n ? siteDefaultRoutes.search\n : \"search\";\n const trimmedSearchRoute = searchRouteValue\n ? searchRouteValue.replace(/^\\/+|\\/+$/g, \"\")\n : \"\";\n const usesDirectorySearchRoute =\n trimmedSearchRoute && trimmedSearchRoute !== (defaultSearchRoute || \"search\");\n const normalizedSearchRoute = usesDirectorySearchRoute\n ? `/${trimmedSearchRoute}/`\n : `/${(trimmedSearchRoute || defaultSearchRoute || \"search\").replace(/^\\/+/, \"\")}`;\n const resolvedLanguageToggle =\n languageToggleProp === false\n ? null\n : languageToggleProp === true || typeof languageToggleProp === \"undefined\"\n ? siteLanguageToggle\n : languageToggleProp;\n const resolvedSearchLabel =\n searchLabelProp != null\n ? searchLabelProp\n : getString(\"common.nouns.search\", \"Search\");\n const resolvedSearchPlaceholder =\n searchPlaceholderProp != null\n ? searchPlaceholderProp\n : getString(\"common.phrases.placeholder_search\", \"Search\u2026\");\n const primaryNavigationLabel = getString(\n \"common.nouns.primary_navigation\",\n \"Primary navigation\",\n );\n const openSearchButtonLabel = formatString(\n \"common.phrases.open_content\",\n \"Open {content}\",\n {content: resolvedSearchLabel},\n );\n const openNavButtonLabel = formatString(\n \"common.phrases.open_content\",\n \"Open {content}\",\n {content: primaryNavigationLabel},\n );\n const closeNavLabel = formatString(\n \"common.phrases.close_content\",\n \"Close {content}\",\n {content: primaryNavigationLabel},\n );\n const closeSearchLabel = formatString(\n \"common.phrases.close_content\",\n \"Close {content}\",\n {content: resolvedSearchLabel},\n );\n const defaultHeaderTitle = contextSiteTitle || \"Site title\";\n const normalizedTitleProp =\n typeof titleProp === \"string\" ? titleProp.trim() : \"\";\n const resolvedTitle = normalizedTitleProp || defaultHeaderTitle;\n const sectionNavigation =\n contextNavigation && contextNavigation.root ? contextNavigation : null;\n const navigationRoots =\n contextNavigation && contextNavigation.allRoots\n ? contextNavigation.allRoots\n : null;\n const sectionHeading =\n (sectionNavigation && sectionNavigation.title) ||\n (sectionNavigation && sectionNavigation.root\n ? sectionNavigation.root.title\n : \"\");\n const hasSectionNav = !!(\n sectionNavigation &&\n sectionNavigation.root &&\n Array.isArray(sectionNavigation.root.children) &&\n sectionNavigation.root.children.length\n );\n const sectionNavFallback = getString(\n \"common.nouns.section_navigation\",\n \"Section navigation\",\n );\n const sectionLabel = sectionHeading\n ? formatString(\n \"common.phrases.nav_label\",\n \"{content} navigation\",\n {content: sectionHeading},\n )\n : sectionNavFallback;\n const sectionAriaLabel = sectionHeading\n ? formatString(\n \"common.phrases.nav_label\",\n \"{content} navigation\",\n {content: sectionHeading},\n )\n : sectionNavFallback;\n const defaultSectionLabel = sectionLabel;\n const defaultSectionAriaLabel = sectionAriaLabel;\n const shouldAttachSectionNav = (link) => {\n const navData = getLinkNavigationData(\n link,\n navigationRoots,\n sectionNavigation,\n );\n const rootNode = navData && navData.root;\n return !!(\n rootNode &&\n Array.isArray(rootNode.children) &&\n rootNode.children.length\n );\n };\n const hasIntegratedSectionNav = navLinks.some(shouldAttachSectionNav);\n\n return (\n <>\n <header\n className=\"canopy-header\"\n data-mobile-nav=\"closed\"\n data-mobile-search=\"closed\"\n >\n <div className=\"canopy-header__brand\">\n <CanopyBrand\n label={resolvedTitle}\n href={brandHref}\n className=\"canopy-header__brand-link\"\n Logo={SiteLogo}\n />\n </div>\n\n <div className=\"canopy-header__desktop-search\">\n <SearchPanel\n label={resolvedSearchLabel}\n hotkey={searchHotkey}\n placeholder={resolvedSearchPlaceholder}\n searchPath={normalizedSearchRoute}\n />\n </div>\n\n <nav\n className=\"canopy-nav-links canopy-header__desktop-nav\"\n aria-label={primaryNavigationLabel}\n >\n {navLinks.map((link) => (\n <a\n key={link.href}\n href={link.href}\n aria-current={link.isActive ? \"page\" : undefined}\n >\n {link.label || link.href}\n </a>\n ))}\n </nav>\n\n <div className=\"canopy-header__actions\">\n {resolvedLanguageToggle ? (\n <LanguageToggle\n languageToggle={resolvedLanguageToggle}\n page={pageData}\n variant=\"desktop\"\n className=\"canopy-header__language-toggle canopy-header__language-toggle--desktop\"\n />\n ) : null}\n <button\n type=\"button\"\n className=\"canopy-header__icon-button canopy-header__search-trigger\"\n aria-label={openSearchButtonLabel}\n aria-controls=\"canopy-modal-search\"\n aria-expanded=\"false\"\n data-canopy-header-toggle=\"search\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n className=\"canopy-header__search-icon\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"m21 21-3.8-3.8M10.5 18a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15Z\"\n />\n </svg>\n </button>\n <button\n type=\"button\"\n className=\"canopy-header__icon-button canopy-header__menu\"\n aria-label={openNavButtonLabel}\n aria-controls=\"canopy-modal-nav\"\n aria-expanded=\"false\"\n data-canopy-header-toggle=\"nav\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"1.5\"\n stroke=\"currentColor\"\n className=\"canopy-header__menu-icon\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\"\n />\n </svg>\n </button>\n </div>\n </header>\n\n <CanopyModal\n id=\"canopy-modal-nav\"\n variant=\"nav\"\n labelledBy=\"canopy-modal-nav-label\"\n label={resolvedTitle}\n logo={SiteLogo}\n href={brandHref}\n closeLabel={closeNavLabel}\n closeDataAttr=\"nav\"\n >\n {resolvedLanguageToggle ? (\n <LanguageToggle\n languageToggle={resolvedLanguageToggle}\n page={pageData}\n variant=\"mobile\"\n className=\"canopy-header__language-toggle canopy-header__language-toggle--mobile\"\n />\n ) : null}\n <nav\n className=\"canopy-nav-links canopy-modal__nav\"\n aria-label={primaryNavigationLabel}\n >\n <ul className=\"canopy-modal__nav-list\" role=\"list\">\n {navLinks.map((link, index) => {\n const navData = getLinkNavigationData(\n link,\n navigationRoots,\n sectionNavigation,\n );\n const navRoot = navData && navData.root ? navData.root : null;\n const hasChildren = !!(\n navRoot &&\n Array.isArray(navRoot.children) &&\n navRoot.children.length\n );\n const nestedId = hasChildren\n ? `canopy-modal-section-${index}`\n : null;\n const toggleLabelTarget = link.label\n ? formatString(\n \"common.phrases.nav_label\",\n \"{content} navigation\",\n {content: link.label},\n )\n : primaryNavigationLabel;\n const toggleLabel = formatString(\n \"common.phrases.toggle_content\",\n \"Toggle {content}\",\n {content: toggleLabelTarget},\n );\n const defaultExpanded = hasChildren && !!navRoot.isExpanded;\n return (\n <li\n className=\"canopy-modal__nav-item\"\n key={link.href}\n data-canopy-nav-item={hasChildren ? \"true\" : undefined}\n data-expanded={defaultExpanded ? \"true\" : \"false\"}\n data-default-expanded={defaultExpanded ? \"true\" : undefined}\n >\n <div className=\"canopy-modal__nav-row\">\n <a href={link.href}>{link.label || link.href}</a>\n {hasChildren ? (\n <button\n type=\"button\"\n className=\"canopy-modal__nav-toggle\"\n aria-expanded={defaultExpanded ? \"true\" : \"false\"}\n aria-controls={nestedId || undefined}\n aria-label={toggleLabel}\n data-canopy-nav-item-toggle={nestedId || undefined}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n className=\"canopy-modal__nav-toggle-icon\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M5 9l7 7 7-7\"\n />\n </svg>\n <span className=\"sr-only\">{toggleLabel}</span>\n </button>\n ) : null}\n </div>\n {hasChildren ? (\n <NavigationTree\n root={navRoot}\n parentKey={\n navData && navData.rootSegment\n ? navData.rootSegment\n : `root-${index}`\n }\n component=\"div\"\n className=\"canopy-modal__section-nav canopy-modal__section-nav--nested\"\n aria-label={\n navData && navData.title\n ? formatString(\n \"common.phrases.nav_label\",\n \"{content} navigation\",\n {content: navData.title},\n )\n : defaultSectionAriaLabel\n }\n aria-hidden={defaultExpanded ? \"false\" : \"true\"}\n hidden={!defaultExpanded}\n id={nestedId || undefined}\n />\n ) : null}\n </li>\n );\n })}\n </ul>\n </nav>\n {hasSectionNav && !hasIntegratedSectionNav ? (\n <NavigationTree\n root={sectionNavigation.root}\n component=\"nav\"\n className=\"canopy-modal__section-nav\"\n aria-label={defaultSectionAriaLabel}\n parentKey=\"fallback-nav\"\n />\n ) : null}\n </CanopyModal>\n\n <CanopyModal\n id=\"canopy-modal-search\"\n variant=\"search\"\n labelledBy=\"canopy-modal-search-label\"\n label={resolvedTitle}\n logo={SiteLogo}\n href={brandHref}\n closeLabel={closeSearchLabel}\n closeDataAttr=\"search\"\n bodyClassName=\"canopy-modal__body--search\"\n >\n <SearchPanel\n label={resolvedSearchLabel}\n hotkey={searchHotkey}\n placeholder={resolvedSearchPlaceholder}\n searchPath={normalizedSearchRoute}\n />\n </CanopyModal>\n\n <HeaderScript />\n </>\n );\n}\n", "import React from 'react';\nimport SearchPanelForm, { resolveSearchPath } from './SearchPanelForm.jsx';\nimport SearchPanelTeaserResults from './SearchPanelTeaserResults.jsx';\nimport {useLocale} from \"../locale/index.js\";\n\n// High-level SearchPanel composed of a teaser form and teaser results panel.\n// Encodes configuration as JSON for the client runtime.\nexport default function SearchPanel(props = {}) {\n const {\n placeholder: placeholderProp,\n hotkey = 'mod+k',\n maxResults = 8,\n groupOrder = ['work', 'docs', 'page'],\n // Kept for backward compat; form always renders submit\n button = true, // eslint-disable-line no-unused-vars\n buttonLabel: buttonLabelProp,\n label,\n searchPath = '/search',\n } = props || {};\n const {getString} = useLocale();\n const placeholder =\n placeholderProp != null\n ? placeholderProp\n : getString('common.phrases.placeholder_search', 'Search\u2026');\n const resolvedButtonLabel =\n buttonLabelProp != null\n ? buttonLabelProp\n : getString('common.nouns.search', 'Search');\n const text =\n typeof label === 'string' && label.trim() ? label.trim() : resolvedButtonLabel;\n const resolvedSearchPath = resolveSearchPath(searchPath);\n const data = { placeholder, hotkey, maxResults, groupOrder, label: text, searchPath: resolvedSearchPath };\n\n return (\n <div data-canopy-search-form className=\"flex-1 min-w-0\">\n <div className=\"relative w-full\">\n <SearchPanelForm placeholder={placeholder} buttonLabel={resolvedButtonLabel} label={label} searchPath={resolvedSearchPath} />\n <SearchPanelTeaserResults />\n </div>\n <script type=\"application/json\" dangerouslySetInnerHTML={{ __html: JSON.stringify(data) }} />\n </div>\n );\n}\n", "import React from \"react\";\n\nexport const MagnifyingGlassIcon = (props) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" aria-hidden=\"true\" focusable=\"false\" {...props}>\n <path d=\"M456.69 421.39L362.6 327.3a173.81 173.81 0 0034.84-104.58C397.44 126.38 319.06 48 222.72 48S48 126.38 48 222.72s78.38 174.72 174.72 174.72A173.81 173.81 0 00327.3 362.6l94.09 94.09a25 25 0 0035.3-35.3zM97.92 222.72a124.8 124.8 0 11124.8 124.8 124.95 124.95 0 01-124.8-124.8z\" />\n </svg>\n);\n", "import {MagnifyingGlassIcon} from \"../Icons\";\nimport React from \"react\";\nimport {useLocale} from \"../locale/index.js\";\n\nfunction readBasePath() {\n const normalize = (val) => {\n const raw = typeof val === \"string\" ? val.trim() : \"\";\n if (!raw) return \"\";\n return raw.replace(/\\/+$/, \"\");\n };\n try {\n if (typeof window !== \"undefined\" && window.CANOPY_BASE_PATH != null) {\n const fromWindow = normalize(window.CANOPY_BASE_PATH);\n if (fromWindow) return fromWindow;\n }\n } catch (_) {}\n try {\n if (\n typeof globalThis !== \"undefined\" &&\n globalThis.CANOPY_BASE_PATH != null\n ) {\n const fromGlobal = normalize(globalThis.CANOPY_BASE_PATH);\n if (fromGlobal) return fromGlobal;\n }\n } catch (_) {}\n try {\n if (\n typeof process !== \"undefined\" &&\n process.env &&\n process.env.CANOPY_BASE_PATH\n ) {\n const fromEnv = normalize(process.env.CANOPY_BASE_PATH);\n if (fromEnv) return fromEnv;\n }\n } catch (_) {}\n return \"\";\n}\n\nfunction isAbsoluteUrl(href) {\n try {\n return /^https?:/i.test(String(href || \"\"));\n } catch (_) {\n return false;\n }\n}\n\nexport function resolveSearchPath(pathValue) {\n let raw = typeof pathValue === \"string\" ? pathValue.trim() : \"\";\n if (!raw) raw = \"/search\";\n if (isAbsoluteUrl(raw)) return raw;\n const normalizedPath = raw.startsWith(\"/\") ? raw : `/${raw}`;\n const base = readBasePath();\n if (!base) return normalizedPath;\n const baseWithLead = base.startsWith(\"/\") ? base : `/${base}`;\n const baseTrimmed = baseWithLead.replace(/\\/+$/, \"\");\n if (!baseTrimmed) return normalizedPath;\n if (\n normalizedPath === baseTrimmed ||\n normalizedPath.startsWith(`${baseTrimmed}/`)\n ) {\n return normalizedPath;\n }\n const pathTrimmed = normalizedPath.replace(/^\\/+/, \"\");\n return `${baseTrimmed}/${pathTrimmed}`;\n}\n\nexport default function SearchPanelForm(props = {}) {\n const {\n placeholder,\n buttonLabel,\n label,\n searchPath = \"/search\",\n inputId: inputIdProp,\n clearLabel,\n } = props || {};\n const {getString, formatString} = useLocale();\n const searchLabel = getString(\"common.nouns.search\", \"Search\");\n const placeholderText =\n placeholder != null\n ? placeholder\n : getString(\"common.phrases.placeholder_search\", \"Search\u2026\");\n const buttonText =\n buttonLabel != null ? buttonLabel : getString(\"common.nouns.search\", \"Search\");\n const clearText =\n clearLabel != null\n ? clearLabel\n : formatString(\n \"common.phrases.clear_content_search\",\n \"Clear {content} search\",\n {content: searchLabel},\n );\n const text =\n typeof label === \"string\" && label.trim() ? label.trim() : buttonText;\n const action = React.useMemo(\n () => resolveSearchPath(searchPath),\n [searchPath]\n );\n const autoId = typeof React.useId === \"function\" ? React.useId() : undefined;\n const [fallbackId] = React.useState(\n () => `canopy-search-form-${Math.random().toString(36).slice(2, 10)}`\n );\n const inputId = inputIdProp || autoId || fallbackId;\n const inputRef = React.useRef(null);\n const [hasValue, setHasValue] = React.useState(false);\n\n const focusInput = React.useCallback(() => {\n const el = inputRef.current;\n if (!el) return;\n if (document.activeElement === el) return;\n try {\n el.focus({preventScroll: true});\n } catch (_) {\n try {\n el.focus();\n } catch (_) {}\n }\n }, []);\n\n const handlePointerDown = React.useCallback(\n (event) => {\n const target = event.target;\n if (target && typeof target.closest === \"function\") {\n if (target.closest(\"[data-canopy-search-form-trigger]\")) return;\n if (target.closest(\"[data-canopy-search-form-clear]\")) return;\n }\n event.preventDefault();\n focusInput();\n },\n [focusInput]\n );\n\n React.useEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n if (el.value && el.value.trim()) {\n setHasValue(true);\n }\n }, []);\n\n const handleInputChange = React.useCallback((event) => {\n const nextHasValue = Boolean(\n event?.target?.value && event.target.value.trim()\n );\n setHasValue(nextHasValue);\n }, []);\n\n const handleClear = React.useCallback((event) => {}, []);\n\n const handleClearKey = React.useCallback(\n (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleClear(event);\n }\n },\n [handleClear]\n );\n\n return (\n <form\n action={action}\n method=\"get\"\n role=\"search\"\n autoComplete=\"off\"\n spellCheck=\"false\"\n className=\"canopy-search-form canopy-search-form-shell\"\n onPointerDown={handlePointerDown}\n data-has-value={hasValue ? \"1\" : \"0\"}\n >\n <label htmlFor={inputId} className=\"canopy-search-form__label\">\n <MagnifyingGlassIcon className=\"canopy-search-form__icon\" />\n <span className=\"sr-only\">{searchLabel}</span>\n <input\n id={inputId}\n type=\"search\"\n name=\"q\"\n inputMode=\"search\"\n data-canopy-search-form-input\n placeholder={placeholderText}\n className=\"canopy-search-form__input\"\n ref={inputRef}\n onChange={handleInputChange}\n onInput={handleInputChange}\n />\n </label>\n {hasValue ? (\n <button\n type=\"button\"\n className=\"canopy-search-form__clear\"\n onClick={handleClear}\n onPointerDown={(event) => event.stopPropagation()}\n onKeyDown={handleClearKey}\n aria-label={clearText}\n data-canopy-search-form-clear\n >\n \u00D7\n </button>\n ) : null}\n <button\n type=\"submit\"\n data-canopy-search-form-trigger=\"submit\"\n className=\"canopy-search-form__submit\"\n >\n {text}\n </button>\n </form>\n );\n}\n", "import React from \"react\";\n\n// SSR placeholder for teaser results panel; the runtime controls visibility and content.\nexport default function SearchPanelTeaserResults(props = {}) {\n const { style, className } = props || {};\n const classes = [\"canopy-search-teaser\", \"is-empty\", className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n data-canopy-search-form-panel\n hidden\n className={classes || undefined}\n style={style}\n >\n <div id=\"cplist\" className=\"canopy-search-teaser__list\" />\n </div>\n );\n}\n", "import React from 'react';\nimport getSafePageContext from './pageContext.js';\n\nconst PageContext = getSafePageContext();\n\nexport default function CanopyBrand(props = {}) {\n const {labelId, label: labelProp, href = '/', className, Logo} = props || {};\n const context = React.useContext(PageContext);\n const contextSiteTitle =\n context && context.site && typeof context.site.title === 'string'\n ? context.site.title.trim()\n : '';\n const normalizedLabel =\n typeof labelProp === 'string' && labelProp.trim() ? labelProp : '';\n const resolvedLabel = normalizedLabel || contextSiteTitle || 'Site title';\n const spanProps = labelId ? {id: labelId} : {};\n const classes = ['canopy-logo', className].filter(Boolean).join(' ');\n\n return (\n <a href={href} className={classes}>\n {typeof Logo === 'function' ? <Logo /> : null}\n <span {...spanProps}>{resolvedLabel}</span>\n </a>\n );\n}\n", "import React from 'react';\nimport CanopyBrand from './CanopyBrand.jsx';\nimport {useLocale} from \"../locale/index.js\";\n\nexport default function CanopyModal(props = {}) {\n const {\n id,\n variant,\n open = false,\n labelledBy,\n label,\n logo: Logo,\n href = '/',\n closeLabel,\n closeDataAttr,\n onClose,\n onBackgroundClick,\n bodyClassName,\n padded = true,\n className,\n children,\n } = props;\n\n const rootClassName = ['canopy-modal', variant ? `canopy-modal--${variant}` : null, className]\n .filter(Boolean)\n .join(' ');\n\n const modalProps = {\n id,\n className: rootClassName,\n role: 'dialog',\n 'aria-modal': 'true',\n 'aria-hidden': open ? 'false' : 'true',\n 'data-open': open ? 'true' : 'false',\n };\n\n if (variant) modalProps['data-canopy-modal'] = variant;\n\n const resolvedLabelId = labelledBy || (label ? `${variant || 'modal'}-label` : undefined);\n if (resolvedLabelId) modalProps['aria-labelledby'] = resolvedLabelId;\n\n if (typeof onBackgroundClick === 'function') {\n modalProps.onClick = (event) => {\n if (event.target === event.currentTarget) onBackgroundClick(event);\n };\n }\n\n const {getString} = useLocale();\n const resolvedCloseLabel = closeLabel || getString('common.actions.close', 'Close');\n\n const closeButtonProps = {\n type: 'button',\n className: 'canopy-modal__close',\n 'aria-label': resolvedCloseLabel,\n };\n\n if (typeof closeDataAttr === 'string' && closeDataAttr) {\n closeButtonProps['data-canopy-header-close'] = closeDataAttr;\n }\n\n if (typeof onClose === 'function') {\n closeButtonProps.onClick = onClose;\n }\n\n const bodyClasses = ['canopy-modal__body'];\n if (padded) bodyClasses.push('canopy-modal__body--padded');\n if (bodyClassName) bodyClasses.push(bodyClassName);\n const bodyClassNameValue = bodyClasses.join(' ');\n\n return (\n <div {...modalProps}>\n <div className=\"canopy-modal__panel\">\n <button {...closeButtonProps}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n className=\"canopy-modal__close-icon\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 6l12 12M6 18L18 6\" />\n </svg>\n <span className=\"sr-only\">{resolvedCloseLabel}</span>\n </button>\n <div className={bodyClassNameValue}>\n {label ? (\n <div className=\"canopy-modal__brand\">\n <CanopyBrand\n labelId={resolvedLabelId}\n label={label}\n href={href}\n Logo={Logo}\n className=\"canopy-modal__brand-link\"\n />\n </div>\n ) : null}\n {children}\n </div>\n </div>\n </div>\n );\n}\n", "import React from \"react\";\nimport getSafePageContext from \"./pageContext.js\";\nimport {\n buildLanguageToggleConfig,\n LanguageToggleControl,\n} from \"./languageToggleShared.jsx\";\n\nexport default function LanguageToggle({\n languageToggle,\n page,\n variant = \"inline\",\n className = \"\",\n showLabel = false,\n control,\n label,\n ariaLabel,\n}) {\n const PageContext = getSafePageContext();\n const context = React.useContext(PageContext);\n const siteLanguageToggle =\n (context && context.site && context.site.languageToggle) || null;\n const pageData = page || (context && context.page ? context.page : null);\n const resolvedToggle =\n languageToggle === false\n ? null\n : languageToggle === true || typeof languageToggle === \"undefined\"\n ? siteLanguageToggle\n : languageToggle;\n const normalizeControl = (value) =>\n value === \"list\" ? \"list\" : value === \"select\" ? \"select\" : null;\n const toggleControl = normalizeControl(\n resolvedToggle && typeof resolvedToggle.control === \"string\"\n ? resolvedToggle.control\n : null,\n );\n const resolvedControl =\n normalizeControl(typeof control === \"string\" ? control : null) ||\n toggleControl ||\n \"select\";\n const config = React.useMemo(() => {\n if (!resolvedToggle) return null;\n const base = buildLanguageToggleConfig(resolvedToggle, pageData);\n if (!base) return null;\n return {\n ...base,\n label: typeof label === \"string\" ? label : base.label,\n ariaLabel: typeof ariaLabel === \"string\" ? ariaLabel : base.ariaLabel,\n };\n }, [resolvedToggle, pageData, label, ariaLabel]);\n\n if (!config) return null;\n\n return (\n <LanguageToggleControl\n config={config}\n variant={variant}\n className={className}\n showLabel={showLabel}\n control={resolvedControl}\n />\n );\n}\n", "import React from \"react\";\n\nfunction readBasePath() {\n const normalize = (value) => {\n if (!value) return \"\";\n const raw = String(value).trim();\n if (!raw) return \"\";\n const prefixed = raw.startsWith(\"/\") ? raw : `/${raw}`;\n const cleaned = prefixed.replace(/\\/+$/, \"\");\n return cleaned === \"/\" ? \"\" : cleaned;\n };\n try {\n if (typeof window !== \"undefined\" && window.CANOPY_BASE_PATH != null) {\n const candidate = normalize(window.CANOPY_BASE_PATH);\n if (candidate || candidate === \"\") return candidate;\n }\n } catch (_) {}\n try {\n if (typeof globalThis !== \"undefined\" && globalThis.CANOPY_BASE_PATH != null) {\n const candidate = normalize(globalThis.CANOPY_BASE_PATH);\n if (candidate || candidate === \"\") return candidate;\n }\n } catch (_) {}\n try {\n if (typeof process !== \"undefined\" && process.env && process.env.CANOPY_BASE_PATH) {\n const candidate = normalize(process.env.CANOPY_BASE_PATH);\n if (candidate || candidate === \"\") return candidate;\n }\n } catch (_) {}\n return \"\";\n}\n\nfunction withBasePath(href) {\n try {\n const raw = typeof href === \"string\" ? href.trim() : \"\";\n if (!raw) return raw;\n if (/^(?:[a-z][a-z0-9+.-]*:|\\/\\/|#)/i.test(raw)) return raw;\n if (!raw.startsWith(\"/\")) return raw;\n const base = readBasePath();\n if (!base || base === \"/\") return raw;\n if (raw === base || raw.startsWith(`${base}/`)) return raw;\n return `${base}${raw}`;\n } catch (_) {\n return href;\n }\n}\n\nfunction normalizeLocales(locales) {\n if (!Array.isArray(locales)) return [];\n const normalized = locales\n .map((entry, index) => {\n if (!entry || typeof entry !== \"object\") return null;\n const lang = typeof entry.lang === \"string\" ? entry.lang.trim() : \"\";\n if (!lang) return null;\n const label =\n typeof entry.label === \"string\" && entry.label.trim()\n ? entry.label.trim()\n : lang.toUpperCase();\n return {lang, label, default: entry.default === true, index};\n })\n .filter(Boolean);\n if (!normalized.length) return [];\n const explicitDefault = normalized.find((item) => item.default);\n if (explicitDefault) {\n normalized.forEach((item) => {\n item.default = item.index === explicitDefault.index;\n });\n } else {\n normalized[0].default = true;\n }\n return normalized.map(({index, ...rest}) => rest);\n}\n\nfunction splitHref(href = \"/\") {\n try {\n if (/^[a-z][a-z0-9+.-]*:/i.test(href)) {\n const url = new URL(href);\n return {\n pathname: url.pathname || \"/\",\n suffix: `${url.search || \"\"}${url.hash || \"\"}`,\n };\n }\n } catch (_) {}\n const raw = typeof href === \"string\" ? href : String(href || \"/\");\n const match = raw.match(/^[^?#]+/);\n const pathname = match ? match[0] : \"/\";\n const suffix = raw.slice(pathname.length);\n return {\n pathname: pathname || \"/\",\n suffix,\n };\n}\n\nfunction normalizePathname(pathname = \"/\") {\n if (!pathname) return \"/\";\n const trimmed = pathname.trim();\n if (!trimmed) return \"/\";\n if (!trimmed.startsWith(\"/\")) return `/${trimmed}`;\n return trimmed === \"/\" ? \"/\" : `/${trimmed.replace(/^\\/+/, \"\")}`;\n}\n\nfunction stripLocaleFromPath(pathname, locales, defaultLocale) {\n const normalizedPath = normalizePathname(pathname);\n const segments = normalizedPath.replace(/^\\/+/, \"\").split(\"/\");\n const first = segments[0] || \"\";\n const match = locales.find((loc) => loc.lang === first);\n if (match && match.lang !== defaultLocale.lang) {\n segments.shift();\n const remainder = segments.join(\"/\");\n return {\n locale: match,\n pathname: remainder ? `/${remainder}` : \"/\",\n };\n }\n return {locale: defaultLocale, pathname: normalizedPath};\n}\n\nfunction buildLocaleHref(locale, basePath, suffix, defaultLocale) {\n const normalizedBase = normalizePathname(basePath);\n const needsPrefix = locale.lang !== defaultLocale.lang;\n const prefixed = needsPrefix\n ? `/${locale.lang}${normalizedBase === \"/\" ? \"\" : normalizedBase}`\n : normalizedBase;\n const href = withBasePath(prefixed || \"/\");\n return `${href}${suffix || \"\"}`;\n}\n\nexport function buildLanguageToggleConfig(toggle, page) {\n if (!toggle || !Array.isArray(toggle.locales)) return null;\n const locales = normalizeLocales(toggle.locales);\n if (locales.length <= 1) return null;\n const defaultLocale = locales.find((loc) => loc.default) || locales[0];\n const pageHref = page && page.href ? page.href : \"/\";\n const {pathname} = splitHref(pageHref);\n const {locale: activeLocale} = stripLocaleFromPath(\n pathname,\n locales,\n defaultLocale,\n );\n const homePathname = \"/\";\n const homeSuffix = \"\";\n const messageMap = toggle && toggle.messages ? toggle.messages : {};\n const defaultCopy = messageMap.__default || {};\n const localeCopy = messageMap[activeLocale.lang] || null;\n const fallbackLabel = defaultCopy.label || \"Language\";\n const label =\n (localeCopy && localeCopy.label) || fallbackLabel;\n const links = locales.map((locale) => ({\n lang: locale.lang,\n label: locale.label || locale.lang.toUpperCase(),\n href: buildLocaleHref(locale, homePathname, homeSuffix, defaultLocale),\n isActive: locale.lang === activeLocale.lang,\n }));\n return {label, links};\n}\n\nexport function LanguageToggleControl({\n config,\n variant = \"inline\",\n className = \"\",\n showLabel = false,\n control = \"select\",\n}) {\n if (!config) return null;\n const classes = [\n \"canopy-language-toggle\",\n variant ? `canopy-language-toggle--${variant}` : null,\n control ? `canopy-language-toggle--${control}` : null,\n className,\n ]\n .filter(Boolean)\n .join(\" \")\n .trim();\n const ariaLabel = config.label || \"Language\";\n const resolvedControl = control === \"list\" ? \"list\" : \"select\";\n const selectId =\n typeof React.useId === \"function\" && resolvedControl === \"select\"\n ? React.useId()\n : undefined;\n const links = Array.isArray(config.links) ? config.links : [];\n if (!links.length) return null;\n const activeLink = links.find((link) => link.isActive);\n const fallbackHref = links[0].href;\n const selectedHref = activeLink ? activeLink.href : fallbackHref;\n const navigate = React.useCallback((href) => {\n if (!href) return;\n try {\n if (typeof window !== \"undefined\" && window.location) {\n if (typeof window.location.assign === \"function\") {\n window.location.assign(href);\n } else {\n window.location.href = href;\n }\n return;\n }\n } catch (_) {}\n try {\n if (typeof document !== \"undefined\" && document.location) {\n document.location.href = href;\n }\n } catch (_) {}\n }, []);\n const handleSelectChange = React.useCallback(\n (event) => {\n if (!event || !event.target) return;\n const nextHref = event.target.value;\n if (!nextHref || nextHref === selectedHref) return;\n navigate(nextHref);\n },\n [navigate, selectedHref],\n );\n const labelElement =\n showLabel && config.label\n ? resolvedControl === \"select\"\n ? (\n <label\n className=\"canopy-language-toggle__label\"\n htmlFor={selectId}\n >\n {config.label}\n </label>\n )\n : (\n <span className=\"canopy-language-toggle__label\">\n {config.label}\n </span>\n )\n : null;\n return (\n <div className={classes || undefined}>\n {labelElement}\n {resolvedControl === \"select\" ? (\n <div className=\"canopy-language-toggle__select\">\n <select\n id={selectId}\n className=\"canopy-language-toggle__select-input\"\n value={selectedHref}\n onChange={handleSelectChange}\n aria-label={ariaLabel}\n data-canopy-language-select=\"true\"\n >\n {links.map((link) => (\n <option\n key={link.lang}\n value={link.href}\n data-lang={link.lang}\n data-canopy-language-option=\"true\"\n >\n {link.label}\n </option>\n ))}\n </select>\n </div>\n ) : (\n <nav className=\"canopy-language-toggle__nav\" aria-label={ariaLabel}>\n <ul className=\"canopy-language-toggle__list\" role=\"list\">\n {links.map((link) => (\n <li key={link.lang}>\n <button\n type=\"button\"\n className=\"canopy-language-toggle__button\"\n data-active={link.isActive ? \"true\" : undefined}\n aria-pressed={link.isActive ? \"true\" : \"false\"}\n data-canopy-language-button=\"true\"\n data-href={link.href}\n onClick={() => navigate(link.href)}\n >\n {link.label}\n </button>\n </li>\n ))}\n </ul>\n </nav>\n )}\n <LanguageToggleRuntime />\n </div>\n );\n}\n\nfunction LanguageToggleRuntime() {\n const code = `\n(function () {\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n if (window.__CANOPY_LANGUAGE_TOGGLE_INIT__) return;\n window.__CANOPY_LANGUAGE_TOGGLE_INIT__ = true;\n\n function navigate(href) {\n if (!href) return;\n try {\n if (window.location && typeof window.location.assign === 'function') {\n window.location.assign(href);\n } else if (window.location) {\n window.location.href = href;\n }\n } catch (_) {}\n }\n\n function bindSelect(select) {\n if (!select || select.dataset.canopyLanguageBound === 'true') return;\n select.dataset.canopyLanguageBound = 'true';\n select.addEventListener('change', function (event) {\n var target = event && event.target ? event.target : select;\n var href = target && target.value;\n if (!href || href === '#') return;\n navigate(href);\n });\n }\n\n function bindButtons(root) {\n var buttons = root.querySelectorAll('[data-canopy-language-button]');\n Array.prototype.forEach.call(buttons, function (btn) {\n if (!btn || btn.dataset.canopyLanguageBound === 'true') return;\n btn.dataset.canopyLanguageBound = 'true';\n btn.addEventListener('click', function (event) {\n event.preventDefault();\n var href = btn.getAttribute('data-href');\n navigate(href);\n });\n });\n }\n\n function scan(root) {\n if (!root) root = document;\n var selects = root.querySelectorAll('[data-canopy-language-select]');\n Array.prototype.forEach.call(selects, bindSelect);\n bindButtons(root);\n }\n\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', function () {\n scan(document);\n });\n } else {\n scan(document);\n }\n})();\n `;\n return <script dangerouslySetInnerHTML={{__html: code}} />;\n}\n", "import React from 'react';\n\nexport default function CanopyFooter({ className = '', children }) {\n const footerClassName = ['canopy-footer', className].filter(Boolean).join(' ');\n\n return (\n <footer className={footerClassName}>\n <div className=\"canopy-footer__inner\">{children}</div>\n </footer>\n );\n}\n", "import React from \"react\";\n\nexport default function TeaserCard({\n href = \"\",\n title = \"\",\n metadata = [],\n summary = \"\",\n thumbnail = null,\n type = \"work\",\n className = \"\",\n ...rest\n}) {\n const Tag = href ? \"a\" : \"div\";\n const classes = [\n \"canopy-card\",\n \"canopy-card--teaser\",\n \"canopy-search-teaser__item\",\n \"canopy-teaser-card\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n const showThumb = type === \"work\" && thumbnail;\n const metaLine = (\n Array.isArray(metadata) && metadata.length\n ? metadata.filter(Boolean)\n : summary\n ? [summary]\n : []\n )\n .filter(Boolean)\n .slice(0, 2)\n .join(\" \u2022 \");\n\n return (\n <Tag\n className={classes}\n href={href || undefined}\n data-canopy-item={href ? \"\" : undefined}\n {...rest}\n >\n {showThumb ? (\n <div className=\"canopy-search-teaser__thumb\">\n <img\n src={thumbnail}\n alt=\"\"\n aria-hidden=\"true\"\n loading=\"lazy\"\n className=\"canopy-search-teaser__thumb-img\"\n />\n </div>\n ) : null}\n <div className=\"canopy-search-teaser__text\">\n <span className=\"canopy-search-teaser__title\">\n {title || href || 'Untitled'}\n </span>\n {metaLine ? (\n <span className=\"canopy-search-teaser__meta\">{metaLine}</span>\n ) : null}\n </div>\n </Tag>\n );\n}\n", "import React from 'react';\n\nconst GA_HOST = 'https://www.googletagmanager.com/gtag/js';\n\nexport default function GoogleAnalytics({ id }) {\n if (!id) return null;\n\n const inlineConfig = `\n window.dataLayer = window.dataLayer || [];\n function gtag(){window.dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', '${id}');\n `;\n\n return (\n <>\n <script async src={`${GA_HOST}?id=${encodeURIComponent(id)}`}></script>\n <script dangerouslySetInnerHTML={{ __html: inlineConfig }} />\n </>\n );\n}\n", "import React from \"react\";\n\nexport default function Container({\n className = \"\",\n variant = \"content\",\n children,\n ...rest\n}) {\n const variantClass = variant === \"wide\" ? \"max-w-wide\" : \"max-w-content\";\n const classes = [\"mx-auto\", variantClass, \"w-full\", className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n className={classes}\n {...rest}\n style={{...rest.style, padding: \"1.618rem\"}}\n >\n {children}\n </div>\n );\n}\n", "import React, { useEffect, useRef, useState } from \"react\";\n\nconst DEFAULT_CARD_ASPECT_RATIO = 4 / 3; // match ReferencedItems proportions\n\n/**\n * Card\n *\n * Renders an anchor wrapping a figure with an image and caption.\n * Minimal styling; consumers can override via className/style.\n *\n * Props:\n * - href: string (required) \u2014 link target\n * - src: string (optional) \u2014 image source\n * - alt: string (optional) \u2014 image alt text (falls back to title)\n * - title: string (optional) \u2014 primary caption text\n * - subtitle: string (optional) \u2014 secondary caption text\n * - className: string (optional)\n * - style: object (optional)\n * - children: ReactNode (optional) \u2014 appended inside figcaption\n */\nexport default function Card({\n href,\n src,\n alt,\n title,\n subtitle,\n // Optional intrinsic dimensions or aspect ratio to compute a responsive height\n imgWidth,\n imgHeight,\n aspectRatio,\n className,\n style,\n children,\n lazy = true,\n ...rest\n}) {\n const containerRef = useRef(null);\n const isBrowser = typeof window !== \"undefined\";\n const supportsIntersectionObserver =\n typeof IntersectionObserver === \"function\";\n const shouldRenderImmediately =\n !lazy || !isBrowser || !supportsIntersectionObserver;\n const [inView, setInView] = useState(shouldRenderImmediately);\n const [imageLoaded, setImageLoaded] = useState(shouldRenderImmediately);\n\n /**\n * Use IntersectionObserver to detect when the card enters the viewport.\n * When in view, setInView(true) to trigger image loading.\n * If IntersectionObserver is not supported, default to inView=true.\n */\n useEffect(() => {\n if (!lazy) return;\n if (!containerRef.current) return;\n if (!supportsIntersectionObserver) {\n setInView(true);\n return;\n }\n const el = containerRef.current;\n const obs = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n setInView(true);\n try {\n obs.unobserve(el);\n } catch (_) {}\n break;\n }\n }\n },\n { root: null, rootMargin: \"100px\", threshold: 0.1 }\n );\n try {\n obs.observe(el);\n } catch (_) {}\n return () => {\n try {\n obs.disconnect();\n } catch (_) {}\n };\n }, [lazy, supportsIntersectionObserver]);\n\n /**\n * Calculate aspect ratio and padding percent for responsive image container.\n */\n const w = Number(imgWidth);\n const h = Number(imgHeight);\n const hasAspectRatio =\n Number.isFinite(Number(aspectRatio)) && Number(aspectRatio) > 0;\n const hasDimensions =\n Number.isFinite(w) && w > 0 && Number.isFinite(h) && h > 0;\n const ratio = hasAspectRatio\n ? Number(aspectRatio)\n : hasDimensions\n ? w / h\n : src\n ? DEFAULT_CARD_ASPECT_RATIO\n : undefined;\n const paddingPercent = ratio ? 100 / ratio : 100;\n\n /**\n * Caption element (figcaption), rendered if title, subtitle, or children are provided.\n */\n const caption = (\n <figcaption>\n {title && <span>{title}</span>}\n {subtitle && <span>{subtitle}</span>}\n {children}\n </figcaption>\n );\n\n return (\n <a\n href={href}\n className={[\"canopy-card\", className].filter(Boolean).join(\" \")}\n style={style}\n ref={containerRef}\n data-aspect-ratio={ratio}\n data-in-view={inView ? \"true\" : \"false\"}\n data-image-loaded={imageLoaded ? \"true\" : \"false\"}\n {...rest}\n >\n <figure>\n {src ? (\n ratio ? (\n <div\n className=\"canopy-card-media\"\n style={{ \"--canopy-card-padding\": `${paddingPercent}%` }}\n >\n {inView ? (\n <img\n src={src}\n alt={alt || title || \"\"}\n aria-hidden={!alt && !title ? \"true\" : undefined}\n loading=\"lazy\"\n onLoad={() => setImageLoaded(true)}\n onError={() => setImageLoaded(true)}\n />\n ) : null}\n </div>\n ) : (\n <img\n src={src}\n alt={alt || title || \"\"}\n aria-hidden={!alt && !title ? \"true\" : undefined}\n loading=\"lazy\"\n onLoad={() => setImageLoaded(true)}\n onError={() => setImageLoaded(true)}\n className=\"canopy-card-image\"\n />\n )\n ) : null}\n {caption}\n </figure>\n </a>\n );\n}\n", "import React from \"react\";\nimport navigationHelpers from \"../../../lib/components/navigation.js\";\nimport Card from \"../layout/Card.jsx\";\n\nfunction useReferencedItems(itemsProp) {\n if (Array.isArray(itemsProp)) return itemsProp;\n const PageContext =\n navigationHelpers && typeof navigationHelpers.getPageContext === \"function\"\n ? navigationHelpers.getPageContext()\n : null;\n if (!PageContext) return [];\n const context = React.useContext(PageContext);\n const items = context && context.page ? context.page.referencedItems : null;\n return Array.isArray(items) ? items : [];\n}\n\nexport default function ReferencedItems({\n items: itemsProp,\n emptyLabel = null,\n className = \"\",\n children,\n ...rest\n}) {\n const items = useReferencedItems(itemsProp);\n const hasItems = items.length > 0;\n\n if (!hasItems) {\n if (!emptyLabel) return null;\n const emptyClass = [\n \"referenced-items\",\n \"referenced-items--empty\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n return (\n <div className={emptyClass} {...rest}>\n {typeof emptyLabel === \"function\" ? emptyLabel() : emptyLabel}\n </div>\n );\n }\n\n const containerClassName = [\"referenced-items\", className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <section className={containerClassName} {...rest}>\n {children}\n <div className=\"referenced-items__grid\" role=\"list\">\n {items.map((item) => {\n if (!item) return null;\n const key = item.href || item.slug || item.id;\n return (\n <div className=\"referenced-items__item\" role=\"listitem\" key={key}>\n <Card\n href={item.href}\n src={item.thumbnail}\n imgWidth={item.thumbnailWidth}\n imgHeight={item.thumbnailHeight}\n title={item.title}\n subtitle={item.summary}\n className=\"referenced-items__card\"\n lazy={false}\n />\n </div>\n );\n })}\n </div>\n </section>\n );\n}\n", "import React from \"react\";\nimport navigationHelpers from \"../../../lib/components/navigation.js\";\nimport referenced from \"../../../lib/components/referenced.js\";\nimport {useLocale} from \"../locale/index.js\";\n\nfunction getPageContext() {\n if (!navigationHelpers || typeof navigationHelpers.getPageContext !== \"function\") {\n return null;\n }\n try {\n return navigationHelpers.getPageContext();\n } catch (_) {\n return null;\n }\n}\n\nfunction resolveReferences(manifestId, contextList) {\n if (contextList && contextList.length) return contextList;\n if (!manifestId) return [];\n try {\n return referenced.getReferencesForManifest(manifestId);\n } catch (_) {\n return [];\n }\n}\n\nexport default function References({\n id = \"\",\n title,\n emptyLabel = null,\n className = \"\",\n children,\n ...rest\n}) {\n const {getString} = useLocale();\n const resolvedTitle =\n title != null ? title : getString(\"common.misc.referenced_by\", \"Referenced by\");\n const PageContext = getPageContext();\n const context = PageContext ? React.useContext(PageContext) : null;\n const contextPage = context && context.page ? context.page : null;\n const manifestId = id || (contextPage && contextPage.manifestId) || \"\";\n const contextReferences = !id && contextPage && Array.isArray(contextPage.referencedBy)\n ? contextPage.referencedBy\n : null;\n const references = resolveReferences(manifestId, contextReferences);\n\n if (!manifestId) return null;\n\n const entries = references && references.length ? references : null;\n if (!entries || !entries.length) return null;\n\n const containerClass = [\"references\", className].filter(Boolean).join(\" \");\n\n return (\n <dl className={containerClass} {...rest}>\n <div className=\"references__group\">\n <dt>{resolvedTitle}</dt>\n {entries.map((entry) => (\n <dd key={entry.href} className=\"references__item\">\n <a href={entry.href}>{entry.title || entry.href}</a>\n </dd>\n ))}\n </div>\n </dl>\n );\n}\n", "import React from \"react\";\nimport slugify from \"slugify\";\nimport metadataIndexHelpers from \"../../../lib/components/metadata-index.js\";\n\nconst metadataModule =\n metadataIndexHelpers && typeof metadataIndexHelpers === \"object\"\n ? metadataIndexHelpers\n : null;\n\nconst SLUG_OPTIONS = {lower: true, strict: true, trim: true};\n\nfunction readGlobalIndex() {\n if (!metadataModule || typeof metadataModule.getMetadataIndex !== \"function\") {\n return [];\n }\n try {\n const data = metadataModule.getMetadataIndex();\n return Array.isArray(data) ? data : [];\n } catch (_) {\n return [];\n }\n}\n\nfunction normalizeEntries(entries) {\n const list = Array.isArray(entries) ? entries : [];\n const normalized = [];\n list.forEach((entry) => {\n if (!entry) return;\n const label = typeof entry.label === \"string\" ? entry.label.trim() : \"\";\n if (!label) return;\n const labelSlug = normalizeSlug(entry.slug, label);\n const valuesSource = Array.isArray(entry.values) ? entry.values : [];\n const seen = new Set();\n const values = [];\n valuesSource.forEach((valueEntry) => {\n let valueText = \"\";\n let valueSlug = \"\";\n if (valueEntry && typeof valueEntry === \"object\") {\n if (typeof valueEntry.value === \"string\") valueText = valueEntry.value;\n else if (valueEntry.value != null) valueText = String(valueEntry.value);\n if (typeof valueEntry.slug === \"string\") valueSlug = valueEntry.slug;\n } else if (valueEntry != null) {\n valueText = String(valueEntry);\n }\n const trimmed = valueText.trim();\n if (!trimmed) return;\n const slug = normalizeSlug(valueSlug, trimmed);\n const dedupeKey = `${labelSlug}__${slug}`;\n if (seen.has(dedupeKey)) return;\n seen.add(dedupeKey);\n values.push({value: trimmed, slug});\n });\n if (!values.length) return;\n normalized.push({label, slug: labelSlug, values});\n });\n return normalized;\n}\n\nfunction normalizeSlug(rawSlug, fallback) {\n const candidate = typeof rawSlug === \"string\" ? rawSlug.trim() : \"\";\n if (candidate) return candidate;\n try {\n const slug = slugify(fallback, SLUG_OPTIONS);\n if (slug) return slug;\n } catch (_) {}\n return String(fallback || \"\")\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n || String(fallback || \"\");\n}\n\nfunction filterByLabel(entries, label) {\n if (!label) return entries;\n const normalized = String(label || \"\").trim().toLowerCase();\n if (!normalized) return entries;\n return entries.filter((entry) => {\n const l = String(entry.label || \"\").trim().toLowerCase();\n const slug = String(entry.slug || \"\").trim().toLowerCase();\n return l === normalized || slug === normalized;\n });\n}\n\nlet cachedBasePath = null;\nfunction normalizeBasePath(value) {\n if (!value) return \"\";\n const raw = String(value).trim();\n if (!raw) return \"\";\n const prefixed = raw.startsWith(\"/\") ? raw : `/${raw}`;\n const cleaned = prefixed.replace(/\\/+$/, \"\");\n return cleaned === \"/\" ? \"\" : cleaned;\n}\n\nfunction readBasePath() {\n if (cachedBasePath !== null) return cachedBasePath;\n const candidates = [];\n try {\n if (typeof window !== \"undefined\" && window.CANOPY_BASE_PATH != null) {\n candidates.push(window.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n try {\n if (\n typeof globalThis !== \"undefined\" &&\n globalThis.CANOPY_BASE_PATH != null\n ) {\n candidates.push(globalThis.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n try {\n if (typeof process !== \"undefined\" && process.env) {\n candidates.push(process.env.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n for (const candidate of candidates) {\n const normalized = normalizeBasePath(candidate);\n if (normalized !== null) {\n cachedBasePath = normalized || \"\";\n return cachedBasePath;\n }\n }\n cachedBasePath = \"\";\n return cachedBasePath;\n}\n\nfunction withBasePath(href) {\n const base = readBasePath();\n const raw = typeof href === \"string\" ? href.trim() : \"\";\n if (!base) return raw || \"\";\n if (!raw) return base || \"\";\n if (raw.startsWith(\"/\")) return `${base}${raw}`;\n return `${base}/${raw}`;\n}\n\nfunction buildSearchHref(labelSlug, valueSlug) {\n if (!labelSlug || !valueSlug) return \"\";\n try {\n const params = new URLSearchParams();\n params.set(\"type\", \"work\");\n params.set(labelSlug, valueSlug);\n const url = `/search?${params.toString()}`;\n return withBasePath(url);\n } catch (_) {\n return \"\";\n }\n}\n\nconst INLINE_SCRIPT = `(() => {\n if (typeof window === 'undefined') return;\n if (window.__canopyIndexBound) return;\n window.__canopyIndexBound = true;\n document.addEventListener('click', (event) => {\n const btn = event.target && event.target.closest('[data-canopy-index-more]');\n if (!btn) return;\n const group = btn.closest('[data-canopy-index-group]');\n if (!group) return;\n const expanded = group.getAttribute('data-expanded') === '1';\n const nextExpanded = !expanded;\n group.setAttribute('data-expanded', nextExpanded ? '1' : '0');\n const hiddenItems = group.querySelectorAll('[data-canopy-index-hidden]');\n hiddenItems.forEach((node) => {\n node.hidden = !nextExpanded;\n });\n const moreLabel = btn.getAttribute('data-more-label') || 'Show more';\n const lessLabel = btn.getAttribute('data-less-label') || 'Show less';\n btn.textContent = nextExpanded ? lessLabel : moreLabel;\n });\n})()`;\n\nexport default function Index({\n label,\n metadata,\n limit = 15,\n expandLabel = \"Show more\",\n collapseLabel = \"Show less\",\n className = \"\",\n ...rest\n}) {\n const data = metadata ? normalizeEntries(metadata) : readGlobalIndex();\n const entries = filterByLabel(data, label);\n if (!entries.length) return null;\n const containerClass = [\"canopy-index\", className]\n .filter(Boolean)\n .join(\" \");\n return (\n <div className={containerClass} {...rest}>\n {entries.map((entry) => (\n <IndexGroup\n key={entry.slug || entry.label}\n label={entry.label}\n labelSlug={entry.slug}\n values={entry.values}\n limit={limit}\n expandLabel={expandLabel}\n collapseLabel={collapseLabel}\n />\n ))}\n <script\n data-canopy-index-script=\"\"\n dangerouslySetInnerHTML={{__html: INLINE_SCRIPT}}\n />\n </div>\n );\n}\n\nfunction IndexGroup({label, labelSlug, values, limit, expandLabel, collapseLabel}) {\n const parsedLimit = Number(limit);\n const clampedLimit = Number.isFinite(parsedLimit)\n ? Math.max(1, Math.floor(parsedLimit))\n : 15;\n const maxVisible = clampedLimit;\n const hasOverflow = values.length > maxVisible;\n const visibleValues = hasOverflow ? values.slice(0, maxVisible) : values;\n const hiddenValues = hasOverflow ? values.slice(maxVisible) : [];\n const labelCollapsed = typeof expandLabel === \"string\" && expandLabel.trim()\n ? expandLabel.trim()\n : \"Show more\";\n const labelExpanded = typeof collapseLabel === \"string\" && collapseLabel.trim()\n ? collapseLabel.trim()\n : \"Show less\";\n return (\n <dl className=\"canopy-index__group\" data-canopy-index-group=\"\" data-expanded=\"0\">\n <dt>{label}</dt>\n <div className=\"canopy-index__values\">\n {visibleValues.map((value) => {\n const href = buildSearchHref(labelSlug, value.slug);\n const key = `${labelSlug || label}-${value.slug || value.value}`;\n return (\n <dd key={key}>\n {href ? (\n <a\n href={href}\n data-canopy-index-link=\"\"\n data-index-label={labelSlug}\n data-index-value={value.slug}\n >\n {value.value}\n </a>\n ) : (\n value.value\n )}\n </dd>\n );\n })}\n {hiddenValues.map((value) => {\n const href = buildSearchHref(labelSlug, value.slug);\n const key = `${labelSlug || label}-hidden-${value.slug || value.value}`;\n return (\n <dd key={key} data-canopy-index-hidden=\"\" hidden>\n {href ? (\n <a\n href={href}\n data-canopy-index-link=\"\"\n data-index-label={labelSlug}\n data-index-value={value.slug}\n >\n {value.value}\n </a>\n ) : (\n value.value\n )}\n </dd>\n );\n })}\n </div>\n {hasOverflow && (\n <div className=\"canopy-index__more-wrapper\">\n <button\n type=\"button\"\n className=\"canopy-index__more\"\n data-canopy-index-more=\"\"\n data-more-label={labelCollapsed}\n data-less-label={labelExpanded}\n >\n {labelCollapsed}\n </button>\n </div>\n )}\n </dl>\n );\n}\n", "import React from 'react';\nimport bibliography from '../../../lib/components/bibliography.js';\n\nfunction resolveHeadingTag(tag, fallback) {\n if (typeof tag === 'string' && tag.trim()) return tag;\n if (typeof tag === 'function') return tag;\n return fallback;\n}\n\nfunction NoteBody({ note }) {\n if (!note) return null;\n if (note.html) {\n return (\n <div\n className=\"bibliography__note-body\"\n dangerouslySetInnerHTML={{ __html: note.html }}\n />\n );\n }\n if (note.text) {\n return <div className=\"bibliography__note-body\">{note.text}</div>;\n }\n return null;\n}\n\nexport default function Bibliography({\n className = '',\n pageHeadingTag = 'h3',\n} = {}) {\n let entries = [];\n try {\n entries = bibliography?.getBibliographyEntries?.() || [];\n } catch (_) {\n entries = [];\n }\n if (!entries.length) return null;\n\n const PageHeadingTag = resolveHeadingTag(pageHeadingTag, 'h3');\n const rootClass = ['bibliography', className].filter(Boolean).join(' ');\n\n return (\n <section className={rootClass}>\n <div className=\"bibliography__pages\">\n {entries.map((entry) => {\n const key = entry.href || entry.relativePath || entry.title;\n const pageTitle = entry.title || entry.href;\n return (\n <article key={key} className=\"bibliography__page\">\n <header className=\"bibliography__page-header\">\n {pageTitle ? (\n <PageHeadingTag className=\"bibliography__page-title\">\n {pageTitle}\n </PageHeadingTag>\n ) : null}\n {entry.href ? (\n <a className=\"bibliography__page-link\" href={entry.href}>\n {entry.href}\n </a>\n ) : null}\n </header>\n <ol className=\"bibliography__notes\">\n {(entry.footnotes || []).map((note, idx) => {\n const noteKey = `${key || 'entry'}-${note.identifier || idx}`;\n return (\n <li key={noteKey} className=\"bibliography__note\">\n {note.identifier ? (\n <span className=\"bibliography__note-label\">{note.identifier}</span>\n ) : null}\n <NoteBody note={note} />\n </li>\n );\n })}\n </ol>\n </article>\n );\n })}\n </div>\n </section>\n );\n}\n", "import React from \"react\";\nimport ReactDOMServer from \"react-dom/server\";\nimport Timeline from \"./Timeline.jsx\";\nimport TimelinePoint from \"./TimelinePoint.jsx\";\nimport {\n createLocale,\n buildPointMetadata,\n} from \"./date-utils.js\";\nimport {\n useReferencedManifestMap,\n resolveReferencedManifests,\n} from \"../../utils/manifestReferences.js\";\n\nfunction normalizeReactKey(value) {\n if (value == null) return \"\";\n const str = String(value);\n if (/^\\.[0-9]+$/.test(str)) return \"\";\n if (str.startsWith(\".$\")) return str.slice(2);\n if (str.startsWith(\".\")) return str.slice(1);\n return str;\n}\n\nfunction normalizeResource(resource, index) {\n if (!resource) return null;\n const href = resource.href || resource.id || \"\";\n const label = resource.label || resource.title || href || `Resource ${index + 1}`;\n return {\n id: resource.id || href || `timeline-resource-${index}`,\n href,\n label,\n type: resource.type || \"IIIF\",\n thumbnail: resource.thumbnail || null,\n summary: resource.summary || null,\n };\n}\n\nfunction normalizePoint(child, index, options) {\n if (!React.isValidElement(child)) return null;\n if (child.type !== TimelinePoint && child.type?.displayName !== \"TimelinePoint\")\n return null;\n const props = child.props || {};\n const id = props.id || `timeline-point-${index}`;\n const normalizedNodeKey = normalizeReactKey(child.key);\n const keyValueProp =\n props.timelineKey ??\n props.pointKey ??\n props.keyValue ??\n props.group ??\n props.category ??\n null;\n const normalizedKeyValue =\n keyValueProp != null && keyValueProp !== \"\"\n ? String(keyValueProp).trim()\n : normalizedNodeKey;\n const granularity =\n props.precision ||\n props.granularity ||\n (options && options.range && options.range.granularity) ||\n \"year\";\n const value =\n props.date ??\n props.value ??\n props.timestamp ??\n props.year ??\n props.label ??\n props.title;\n const meta = buildPointMetadata({\n value,\n granularity,\n locale: options.locale,\n });\n let detailsHtml = \"\";\n try {\n if (props.children) {\n detailsHtml = ReactDOMServer.renderToStaticMarkup(\n React.createElement(React.Fragment, null, props.children)\n );\n }\n } catch (_) {\n detailsHtml = \"\";\n }\n const resources = Array.isArray(props.iiifResources)\n ? props.iiifResources.map(normalizeResource).filter(Boolean)\n : [];\n const manifestValues = Array.isArray(props.referencedManifests)\n ? props.referencedManifests\n : props.manifest\n ? [props.manifest]\n : Array.isArray(props.manifests)\n ? props.manifests\n : [];\n const manifests = resolveReferencedManifests(manifestValues, options.manifestMap);\n return {\n id,\n title: props.title || props.label || `Point ${index + 1}`,\n summary: props.summary || props.description || \"\",\n description: props.description || \"\",\n highlight: props.highlight === true || props.highlight === \"true\",\n side: props.side || props.align || props.alignment || null,\n meta: {\n label: meta.label,\n timestamp: meta.timestamp,\n },\n detailsHtml,\n resources,\n manifests,\n keyValue: normalizedKeyValue,\n };\n}\n\nfunction serializeProps(props, payload, locale) {\n const clone = {};\n Object.keys(props || {}).forEach((key) => {\n if (key === \"children\") return;\n const value = props[key];\n if (typeof value === \"function\" || typeof value === \"symbol\") return;\n clone[key] = value;\n });\n clone.locale = locale;\n clone.__canopyTimeline = payload;\n return clone;\n}\n\nfunction serializeForScript(data) {\n try {\n return JSON.stringify(data).replace(/</g, \"\\\\u003c\");\n } catch (_) {\n return \"{}\";\n }\n}\n\nexport default function MdxTimeline({ children, ...rest }) {\n const localeValue = rest.locale || \"en-US\";\n const localeObj = createLocale(localeValue);\n const localeBase =\n typeof localeObj === \"string\" ? localeObj : localeObj.baseName || \"en-US\";\n const manifestMap = useReferencedManifestMap();\n const childArray = React.Children.toArray(children);\n const points = childArray\n .map((child, index) =>\n normalizePoint(child, index, {\n range: rest.range || {},\n locale: localeObj,\n manifestMap,\n })\n )\n .filter(Boolean);\n const payload = {\n points,\n locale: localeBase,\n range: rest.range || null,\n threshold: rest.threshold != null ? rest.threshold : null,\n steps: rest.steps != null ? rest.steps : null,\n };\n const json = serializeForScript(serializeProps(rest, payload, localeBase));\n return (\n <div data-canopy-timeline=\"1\">\n <Timeline {...rest} __canopyTimeline={payload} />\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{ __html: json }}\n />\n </div>\n );\n}\n", "import React from \"react\";\nimport {\n createLocale,\n normalizeRange,\n clampProgress,\n formatDateLabel,\n} from \"./date-utils.js\";\nimport TeaserCard from \"../../layout/TeaserCard.jsx\";\nimport ReferencedManifestCard from \"../../layout/ReferencedManifestCard.jsx\";\nimport {\n buildKeyLegend,\n normalizeKeyLegendEntries,\n} from \"../../utils/keyLegend.js\";\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\nconst DEFAULT_TRACK_HEIGHT = 640;\nconst MIN_HEIGHT_PER_POINT = 220;\nconst SCALE_MODES = {\n TIME: \"time\",\n UNIFORM: \"uniform\",\n};\n\nconst ALIGN_OPTIONS = {\n CENTER: \"center\",\n LEFT: \"left\",\n RIGHT: \"right\",\n};\n\nfunction getThresholdMs(threshold, granularity) {\n const value = Number(threshold);\n if (!Number.isFinite(value) || value <= 0) return 0;\n if (granularity === \"day\") return value * DAY_MS;\n if (granularity === \"month\") return value * 30 * DAY_MS;\n return value * 365 * DAY_MS;\n}\n\nfunction buildGroupedEntries(points, thresholdMs, options) {\n if (!Array.isArray(points) || !points.length) return [];\n if (!thresholdMs) return points.map((point) => ({type: \"point\", point}));\n\n const entries = [];\n let currentGroup = null;\n let groupCounter = 0;\n\n function flush() {\n if (!currentGroup) return;\n if (currentGroup.points.length > 1) {\n const firstPoint = currentGroup.points[0];\n entries.push({\n type: \"group\",\n id: `canopy-timeline-group-${groupCounter}-${currentGroup.start}`,\n points: currentGroup.points,\n progress: firstPoint.progress,\n side: firstPoint.side,\n label: formatGroupLabel(currentGroup.start, currentGroup.end, options),\n count: currentGroup.points.length,\n });\n groupCounter += 1;\n } else {\n entries.push({type: \"point\", point: currentGroup.points[0]});\n }\n currentGroup = null;\n }\n\n points.forEach((point) => {\n const timestamp = point && point.meta ? point.meta.timestamp : null;\n if (!Number.isFinite(timestamp)) {\n flush();\n if (point) entries.push({type: \"point\", point});\n return;\n }\n if (!currentGroup) {\n currentGroup = {\n points: [point],\n start: timestamp,\n end: timestamp,\n last: timestamp,\n };\n return;\n }\n const diff = Math.abs(timestamp - currentGroup.last);\n if (diff <= thresholdMs) {\n currentGroup.points.push(point);\n currentGroup.last = timestamp;\n if (timestamp < currentGroup.start) currentGroup.start = timestamp;\n if (timestamp > currentGroup.end) currentGroup.end = timestamp;\n } else {\n flush();\n currentGroup = {\n points: [point],\n start: timestamp,\n end: timestamp,\n last: timestamp,\n };\n }\n });\n\n flush();\n return entries;\n}\n\nfunction formatGroupLabel(startTs, endTs, options) {\n if (!Number.isFinite(startTs) || !Number.isFinite(endTs)) return \"\";\n const startLabel = formatDateLabel(new Date(startTs), options);\n const endLabel = formatDateLabel(new Date(endTs), options);\n if (!startLabel || !endLabel) return \"\";\n return startLabel === endLabel ? startLabel : `${startLabel} \u2013 ${endLabel}`;\n}\n\nfunction deriveRangeOverrides(points, range) {\n const timestamps = points\n .map((point) => (point && point.meta ? point.meta.timestamp : null))\n .filter((timestamp) => Number.isFinite(timestamp));\n if (!timestamps.length) return range || {};\n const earliest = Math.min(...timestamps);\n const latest = Math.max(...timestamps);\n return {\n ...range,\n start: range && range.start ? range.start : new Date(earliest),\n end: range && range.end ? range.end : new Date(latest),\n };\n}\n\nfunction getActivePointId(points) {\n const highlighted = points.find((point) => point && point.highlight);\n if (highlighted) return highlighted.id;\n return points.length ? points[0].id : null;\n}\n\nfunction formatRangeLabel(rangeInfo) {\n if (!rangeInfo) return \"\";\n const startLabel = formatDateLabel(rangeInfo.startDate, {\n granularity: rangeInfo.granularity,\n locale: rangeInfo.locale,\n });\n const endLabel = formatDateLabel(rangeInfo.endDate, {\n granularity: rangeInfo.granularity,\n locale: rangeInfo.locale,\n });\n if (!startLabel || !endLabel) return \"\";\n if (startLabel === endLabel) return startLabel;\n return `${startLabel} \u2013 ${endLabel}`;\n}\n\nfunction sanitizePoints(points) {\n if (!Array.isArray(points)) return [];\n return points\n .map((point, index) => {\n if (!point) return null;\n const meta = point.meta || {};\n const timestamp = Number(meta.timestamp);\n const manifests = Array.isArray(point.manifests)\n ? point.manifests\n .map((manifest) => (manifest ? {...manifest} : null))\n .filter(Boolean)\n : [];\n const resources = Array.isArray(point.resources)\n ? point.resources.filter(Boolean)\n : [];\n return {\n ...point,\n id: point.id || `timeline-point-${index}`,\n title: point.title || point.label || `Point ${index + 1}`,\n summary: point.summary || point.description || \"\",\n detailsHtml: point.detailsHtml || \"\",\n highlight: !!point.highlight,\n side:\n point.side === \"left\" || point.side === \"right\" ? point.side : null,\n meta: {\n label: meta.label || \"\",\n timestamp: Number.isFinite(timestamp) ? timestamp : null,\n },\n keyValue: point.keyValue ? String(point.keyValue).trim() : \"\",\n manifests,\n resources,\n };\n })\n .filter(Boolean);\n}\n\nfunction resolveTrackHeight(height, pointCount) {\n const minimumPx = Math.max(\n DEFAULT_TRACK_HEIGHT,\n pointCount * MIN_HEIGHT_PER_POINT\n );\n const fallback = `${minimumPx}px`;\n if (height == null) return fallback;\n if (typeof height === \"number\") {\n const numeric = Number(height);\n if (Number.isFinite(numeric)) {\n return `${Math.max(numeric, pointCount * MIN_HEIGHT_PER_POINT)}px`;\n }\n return fallback;\n }\n if (typeof height === \"string\") {\n const trimmed = height.trim();\n if (!trimmed) return fallback;\n const numeric = Number(trimmed);\n if (Number.isFinite(numeric)) {\n return `${Math.max(numeric, pointCount * MIN_HEIGHT_PER_POINT)}px`;\n }\n return trimmed;\n }\n return fallback;\n}\n\nfunction TimelineConnector({side, isActive, highlight, color}) {\n const connectorClasses = [\n \"canopy-timeline__connector\",\n side === \"left\"\n ? \"canopy-timeline__connector--left\"\n : \"canopy-timeline__connector--right\",\n ]\n .filter(Boolean)\n .join(\" \");\n const dotClasses = [\n \"canopy-timeline__connector-dot\",\n highlight || isActive ? \"is-active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n const connectorStyle = color\n ? {\"--canopy-timeline-point-color\": color}\n : undefined;\n return (\n <span className={connectorClasses} aria-hidden=\"true\" style={connectorStyle}>\n {side === \"left\" ? (\n <>\n <span className=\"canopy-timeline__connector-line\" />\n <span className={dotClasses} />\n </>\n ) : (\n <>\n <span className={dotClasses} />\n <span className=\"canopy-timeline__connector-line\" />\n </>\n )}\n </span>\n );\n}\n\nfunction renderResourceSection(point) {\n if (!point) return null;\n const manifestCards = Array.isArray(point.manifests)\n ? point.manifests.filter(Boolean)\n : [];\n const legacyResources = Array.isArray(point.resources)\n ? point.resources.filter(Boolean)\n : [];\n if (!manifestCards.length && !legacyResources.length) return null;\n return (\n <div className=\"canopy-timeline__resources\">\n <div className=\"canopy-timeline__resources-list\">\n {manifestCards.map((manifest) => (\n <div key={manifest.id || manifest.href}>\n <ReferencedManifestCard manifest={manifest} />\n </div>\n ))}\n {legacyResources.map((resource, idx) => (\n <div key={resource.id || resource.href || `legacy-${idx}`}>\n <TeaserCard\n href={resource.href}\n title={resource.label || resource.title || resource.href}\n summary={resource.summary}\n thumbnail={resource.thumbnail}\n type={resource.type || \"resource\"}\n />\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nexport default function Timeline({\n className = \"\",\n title,\n description,\n range: rangeProp,\n locale: localeProp = \"en-US\",\n height = DEFAULT_TRACK_HEIGHT,\n threshold: thresholdProp = null,\n scale = SCALE_MODES.TIME,\n align = ALIGN_OPTIONS.CENTER,\n steps = null,\n points: pointsProp,\n keyConfig = [],\n timelineKey = [],\n legend = [],\n __canopyTimeline: payload = null,\n ...rest\n}) {\n const payloadPoints =\n payload && Array.isArray(payload.points) ? payload.points : null;\n const rawPoints = React.useMemo(() => {\n if (Array.isArray(pointsProp) && pointsProp.length) return pointsProp;\n if (payloadPoints && payloadPoints.length) return payloadPoints;\n return [];\n }, [pointsProp, payloadPoints]);\n\n const sanitizedPoints = React.useMemo(\n () => sanitizePoints(rawPoints),\n [rawPoints]\n );\n\n const resolvedKeyInput = React.useMemo(() => {\n if (Array.isArray(keyConfig) && keyConfig.length) return keyConfig;\n if (Array.isArray(timelineKey) && timelineKey.length) return timelineKey;\n if (Array.isArray(legend) && legend.length) return legend;\n return [];\n }, [keyConfig, timelineKey, legend]);\n\n const normalizedLegendConfig = React.useMemo(\n () => normalizeKeyLegendEntries(resolvedKeyInput),\n [resolvedKeyInput]\n );\n\n const timelineKeyData = React.useMemo(\n () => buildKeyLegend(normalizedLegendConfig),\n [normalizedLegendConfig]\n );\n const timelineKeyGroups = timelineKeyData.groups;\n const timelineKeyLookup = timelineKeyData.lookup;\n\n const getLegendMeta = React.useCallback(\n (value) => {\n if (!value || !timelineKeyLookup || typeof timelineKeyLookup.get !== \"function\") {\n return null;\n }\n try {\n return timelineKeyLookup.get(value) || null;\n } catch (_) {\n return null;\n }\n },\n [timelineKeyLookup]\n );\n\n const localeValue = payload && payload.locale ? payload.locale : localeProp;\n const baseLocale = React.useMemo(\n () => createLocale(localeValue),\n [localeValue]\n );\n\n const rangeInput = payload && payload.range ? payload.range : rangeProp || {};\n const rangeOverrides = React.useMemo(\n () => deriveRangeOverrides(sanitizedPoints, rangeInput),\n [sanitizedPoints, rangeInput]\n );\n const effectiveRange = React.useMemo(\n () =>\n normalizeRange({\n ...rangeOverrides,\n locale: baseLocale,\n }),\n [rangeOverrides, baseLocale]\n );\n\n const spanStart = effectiveRange.startDate.getTime();\n const span = effectiveRange.span;\n const scaleValue =\n scale === SCALE_MODES.UNIFORM ? SCALE_MODES.UNIFORM : SCALE_MODES.TIME;\n const useUniformSpacing = scaleValue === SCALE_MODES.UNIFORM;\n const alignValue =\n align === ALIGN_OPTIONS.LEFT\n ? ALIGN_OPTIONS.LEFT\n : align === ALIGN_OPTIONS.RIGHT\n ? ALIGN_OPTIONS.RIGHT\n : ALIGN_OPTIONS.CENTER;\n const enforcedSide =\n alignValue === ALIGN_OPTIONS.LEFT\n ? \"right\"\n : alignValue === ALIGN_OPTIONS.RIGHT\n ? \"left\"\n : null;\n\n const pointsWithPosition = React.useMemo(() => {\n if (!sanitizedPoints.length) return [];\n return sanitizedPoints.map((point, index) => {\n const timestamp = point.meta.timestamp;\n const fallbackProgress =\n sanitizedPoints.length > 1 ? index / (sanitizedPoints.length - 1) : 0;\n const progress = useUniformSpacing\n ? fallbackProgress\n : Number.isFinite(timestamp)\n ? clampProgress((timestamp - spanStart) / span)\n : fallbackProgress;\n const side =\n enforcedSide || point.side || (index % 2 === 0 ? \"left\" : \"right\");\n const keyMeta = point.keyValue ? getLegendMeta(point.keyValue) : null;\n return {\n ...point,\n progress,\n side,\n keyMeta,\n };\n });\n }, [\n sanitizedPoints,\n spanStart,\n span,\n useUniformSpacing,\n enforcedSide,\n getLegendMeta,\n ]);\n\n const [activeId, setActiveId] = React.useState(() =>\n getActivePointId(pointsWithPosition)\n );\n\n React.useEffect(() => {\n setActiveId(getActivePointId(pointsWithPosition));\n }, [pointsWithPosition]);\n\n const thresholdValue =\n typeof thresholdProp === \"number\"\n ? thresholdProp\n : payload && payload.threshold != null\n ? payload.threshold\n : null;\n const stepsValue =\n typeof steps === \"number\"\n ? Number(steps)\n : payload && typeof payload.steps === \"number\"\n ? Number(payload.steps)\n : null;\n\n const thresholdMs = React.useMemo(\n () => getThresholdMs(thresholdValue, effectiveRange.granularity),\n [thresholdValue, effectiveRange.granularity]\n );\n\n const groupedEntries = React.useMemo(\n () =>\n buildGroupedEntries(pointsWithPosition, thresholdMs, {\n granularity: effectiveRange.granularity,\n locale: baseLocale,\n }),\n [pointsWithPosition, thresholdMs, effectiveRange.granularity, baseLocale]\n );\n\n const [expandedGroupIds, setExpandedGroupIds] = React.useState(\n () => new Set()\n );\n\n React.useEffect(() => {\n setExpandedGroupIds((prev) => {\n if (!prev || prev.size === 0) return prev;\n const validIds = new Set(\n groupedEntries\n .filter((entry) => entry.type === \"group\")\n .map((entry) => entry.id)\n );\n const next = new Set();\n let changed = false;\n prev.forEach((id) => {\n if (validIds.has(id)) next.add(id);\n else changed = true;\n });\n return changed ? next : prev;\n });\n }, [groupedEntries]);\n\n const toggleGroup = React.useCallback((groupId) => {\n setExpandedGroupIds((prev) => {\n const next = new Set(prev || []);\n if (next.has(groupId)) next.delete(groupId);\n else next.add(groupId);\n return next;\n });\n }, []);\n\n const trackHeight = resolveTrackHeight(height, pointsWithPosition.length);\n const containerClasses = [\n \"canopy-timeline\",\n alignValue ? `canopy-timeline--align-${alignValue}` : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n const rangeLabel = formatRangeLabel(effectiveRange);\n const hasKeyLegend = timelineKeyGroups.length > 0;\n\n function renderPointEntry(point) {\n if (!point) return null;\n const wrapperClasses = [\n \"canopy-timeline__point-wrapper\",\n point.side === \"left\"\n ? \"canopy-timeline__point-wrapper--left\"\n : \"canopy-timeline__point-wrapper--right\",\n ]\n .filter(Boolean)\n .join(\" \");\n const wrapperStyle = {top: `${point.progress * 100}%`};\n const cardClasses = [\n \"canopy-timeline__point\",\n point.id === activeId ? \"is-active\" : \"\",\n point.highlight ? \"is-highlighted\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n const pointColor = point.keyMeta && point.keyMeta.color ? point.keyMeta.color : null;\n const connector = (\n <TimelineConnector\n side={point.side}\n isActive={point.id === activeId}\n highlight={point.highlight}\n color={pointColor}\n />\n );\n\n const body = (\n <div className=\"canopy-timeline__point-body\">\n <span className=\"canopy-timeline__point-date\">{point.meta.label}</span>\n <span className=\"canopy-timeline__point-title\">{point.title}</span>\n {point.summary ? (\n <span className=\"canopy-timeline__point-summary\">\n {point.summary}\n </span>\n ) : null}\n </div>\n );\n const resourceSection = renderResourceSection(point);\n\n return (\n <div\n key={point.id}\n className={wrapperClasses}\n style={wrapperStyle}\n role=\"listitem\"\n >\n {point.side === \"left\" ? (\n <>\n <div className={cardClasses}>\n {body}\n {resourceSection}\n </div>\n {connector}\n </>\n ) : (\n <>\n {connector}\n <div className={cardClasses}>\n {body}\n {resourceSection}\n </div>\n </>\n )}\n </div>\n );\n }\n\n function renderGroupEntry(entry) {\n const wrapperClasses = [\n \"canopy-timeline__point-wrapper\",\n entry.side === \"left\"\n ? \"canopy-timeline__point-wrapper--left\"\n : \"canopy-timeline__point-wrapper--right\",\n ]\n .filter(Boolean)\n .join(\" \");\n const wrapperStyle = {top: `${entry.progress * 100}%`};\n const isExpanded = expandedGroupIds.has(entry.id);\n const hasActivePoint = entry.points.some((point) => point.id === activeId);\n const groupKeyMeta = (() => {\n if (!entry.points || !entry.points.length) return null;\n const firstPoint = entry.points[0];\n if (!firstPoint || !firstPoint.keyValue) return null;\n const sameKey = entry.points.every(\n (point) => point && point.keyValue === firstPoint.keyValue\n );\n if (!sameKey) return null;\n return firstPoint.keyMeta || getLegendMeta(firstPoint.keyValue);\n })();\n const groupColor = groupKeyMeta && groupKeyMeta.color ? groupKeyMeta.color : null;\n const connector = (\n <TimelineConnector\n side={entry.side}\n isActive={hasActivePoint}\n highlight={hasActivePoint}\n color={groupColor}\n />\n );\n const groupClasses = [\n \"canopy-timeline__group\",\n isExpanded ? \"is-expanded\" : \"\",\n hasActivePoint ? \"is-active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n const countLabel = `${entry.count} event${entry.count > 1 ? \"s\" : \"\"}`;\n\n const header = (\n <div className=\"canopy-timeline__group-header\">\n <div className=\"canopy-timeline__group-summary\">\n <span className=\"canopy-timeline__point-date\">{entry.label}</span>\n <span className=\"canopy-timeline__group-count\">{countLabel}</span>\n </div>\n <button\n type=\"button\"\n className=\"canopy-timeline__group-toggle\"\n aria-expanded={isExpanded ? \"true\" : \"false\"}\n onClick={() => toggleGroup(entry.id)}\n >\n {isExpanded ? \"Hide details\" : \"Show details\"}\n </button>\n </div>\n );\n\n const groupPoints = isExpanded ? (\n <div className=\"canopy-timeline__group-points\">\n {entry.points.map((point) => (\n <button\n key={point.id}\n type=\"button\"\n className={[\n \"canopy-timeline__group-point\",\n point.id === activeId ? \"is-active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => setActiveId(point.id)}\n >\n <span className=\"canopy-timeline__point-date\">\n {point.meta.label}\n </span>\n <span className=\"canopy-timeline__group-point-title\">\n {point.title}\n </span>\n </button>\n ))}\n </div>\n ) : null;\n\n const groupCard = (\n <div className={groupClasses}>\n {header}\n {groupPoints}\n </div>\n );\n\n return (\n <div\n key={entry.id}\n className={wrapperClasses}\n style={wrapperStyle}\n role=\"listitem\"\n >\n {entry.side === \"left\" ? (\n <>\n {groupCard}\n {connector}\n </>\n ) : (\n <>\n {connector}\n {groupCard}\n </>\n )}\n </div>\n );\n }\n\n return (\n <section className={containerClasses} {...rest}>\n {title ? <h2 className=\"canopy-timeline__title\">{title}</h2> : null}\n {description ? (\n <p className=\"canopy-timeline__description\">{description}</p>\n ) : null}\n {rangeLabel ? (\n <p className=\"canopy-timeline__range\" aria-live=\"polite\">\n {rangeLabel}\n </p>\n ) : null}\n <div className=\"canopy-timeline__body\">\n <div\n className=\"canopy-timeline__list\"\n role=\"list\"\n style={{minHeight: trackHeight}}\n >\n <div className=\"canopy-timeline__spine\" aria-hidden=\"true\" />\n {renderSteps(stepsValue, effectiveRange)}\n {groupedEntries.map((entry) => {\n if (entry.type === \"group\") return renderGroupEntry(entry);\n return renderPointEntry(entry.point);\n })}\n </div>\n </div>\n {hasKeyLegend ? (\n <div className=\"canopy-timeline__key\" aria-label=\"Timeline key\">\n <ul className=\"canopy-timeline__key-list\">\n {timelineKeyGroups.map((group) => (\n <li\n key={group.keyValue || group.label}\n className=\"canopy-timeline__key-item\"\n >\n <span\n className=\"canopy-timeline__key-dot\"\n aria-hidden=\"true\"\n style={{backgroundColor: group.color || undefined}}\n />\n <span className=\"canopy-timeline__key-label\">{group.label}</span>\n </li>\n ))}\n </ul>\n </div>\n ) : null}\n </section>\n );\n}\n\nfunction renderSteps(stepSize, range) {\n if (!Number.isFinite(stepSize) || stepSize <= 0 || !range) return null;\n const startYear = range.startDate.getUTCFullYear();\n const endYear = range.endDate.getUTCFullYear();\n const markers = [];\n if (startYear < endYear) {\n markers.push(\n <span\n key=\"timeline-step-start\"\n className=\"canopy-timeline__step canopy-timeline__step--start\"\n style={{top: \"0%\"}}\n aria-hidden=\"true\"\n >\n <span className=\"canopy-timeline__step-line\" />\n <span className=\"canopy-timeline__step-label\">{startYear}</span>\n </span>\n );\n markers.push(\n <span\n key=\"timeline-step-end\"\n className=\"canopy-timeline__step canopy-timeline__step--end\"\n style={{top: \"100%\"}}\n aria-hidden=\"true\"\n >\n <span className=\"canopy-timeline__step-line\" />\n <span className=\"canopy-timeline__step-label\">{endYear}</span>\n </span>\n );\n }\n const baseYear = Math.ceil(startYear / stepSize) * stepSize;\n for (let year = baseYear; year <= endYear; year += stepSize) {\n const timestamp = Date.UTC(year, 0, 1);\n const progress = (timestamp - range.startDate.getTime()) / range.span;\n if (progress <= 0 || progress >= 1) continue;\n markers.push(\n <span\n key={`timeline-step-${year}`}\n className=\"canopy-timeline__step\"\n style={{top: `calc(${progress * 100}% - 0.5px)`}}\n aria-hidden=\"true\"\n >\n <span className=\"canopy-timeline__step-line\" />\n <span className=\"canopy-timeline__step-label\">{year}</span>\n </span>\n );\n }\n return markers.length ? markers : null;\n}\n", "const FALLBACK_LOCALE = (() => {\n try {\n return new Intl.Locale(\"en-US\");\n } catch (_) {\n return \"en-US\";\n }\n})();\n\nexport function createLocale(localeValue) {\n if (!localeValue) return FALLBACK_LOCALE;\n if (typeof Intl !== \"undefined\" && localeValue instanceof Intl.Locale)\n return localeValue;\n try {\n return new Intl.Locale(localeValue);\n } catch (_) {\n return FALLBACK_LOCALE;\n }\n}\n\nfunction parseMonthIndex(name = \"\", locale = FALLBACK_LOCALE) {\n const localeId =\n typeof locale === \"string\" ? locale : locale && locale.baseName\n ? locale.baseName\n : \"en-US\";\n const normalized = String(name || \"\")\n .trim()\n .toLocaleLowerCase(localeId);\n if (!normalized) return 0;\n const months = [\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"may\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n ];\n const idx = months.indexOf(normalized);\n return idx === -1 ? 0 : idx;\n}\n\nfunction parseStructuredInput(value) {\n if (!value || typeof value !== \"object\") return null;\n const {year, month, day} = value;\n if (!Number.isFinite(Number(year))) return null;\n const y = Number(year);\n const m = Number.isFinite(Number(month)) ? Number(month) - 1 : 0;\n const d = Number.isFinite(Number(day)) ? Number(day) : 1;\n return new Date(Date.UTC(y, Math.max(0, Math.min(11, m)), Math.max(1, Math.min(31, d))));\n}\n\nexport function createDateFromInput(value, {locale} = {}) {\n const loc = createLocale(locale);\n if (value instanceof Date) return new Date(value.getTime());\n if (Number.isFinite(Number(value))) {\n const year = Number(value);\n return new Date(Date.UTC(year, 0, 1));\n }\n if (value && typeof value === \"object\") {\n const structured = parseStructuredInput(value);\n if (structured) return structured;\n }\n const text = typeof value === \"string\" ? value.trim() : \"\";\n if (!text) return null;\n const isoYear = text.match(/^(\\d{4})$/);\n if (isoYear) {\n return new Date(Date.UTC(Number(isoYear[1]), 0, 1));\n }\n const isoYearMonth = text.match(/^(\\d{4})-(\\d{2})$/);\n if (isoYearMonth) {\n return new Date(\n Date.UTC(Number(isoYearMonth[1]), Number(isoYearMonth[2]) - 1, 1)\n );\n }\n const isoDate = text.match(/^(\\d{4})-(\\d{2})-(\\d{2})$/);\n if (isoDate) {\n return new Date(\n Date.UTC(\n Number(isoDate[1]),\n Number(isoDate[2]) - 1,\n Number(isoDate[3])\n )\n );\n }\n const monthDayYear = text.match(/^([A-Za-z]+)\\s+(\\d{1,2})(?:,)?\\s*(\\d{4})$/);\n if (monthDayYear) {\n const month = parseMonthIndex(monthDayYear[1], loc);\n const day = Number(monthDayYear[2]);\n const year = Number(monthDayYear[3]);\n return new Date(Date.UTC(year, month, day));\n }\n const monthYear = text.match(/^([A-Za-z]+)\\s+(\\d{4})$/);\n if (monthYear) {\n const month = parseMonthIndex(monthYear[1], loc);\n const year = Number(monthYear[2]);\n return new Date(Date.UTC(year, month, 1));\n }\n const fallback = new Date(text);\n if (!Number.isNaN(fallback.getTime())) return fallback;\n const alt = new Date(Date.parse(text));\n if (!Number.isNaN(alt.getTime())) return alt;\n return null;\n}\n\nexport function formatDateLabel(date, {granularity = \"day\", locale} = {}) {\n if (!(date instanceof Date) || Number.isNaN(date.getTime())) return \"\";\n const loc = createLocale(locale);\n const baseName = typeof loc === \"string\" ? loc : loc.baseName || \"en-US\";\n const options = {year: \"numeric\"};\n if (granularity === \"month\" || granularity === \"day\") {\n options.month = \"long\";\n }\n if (granularity === \"day\") {\n options.day = \"numeric\";\n }\n options.timeZone = \"UTC\";\n try {\n const formatter = new Intl.DateTimeFormat(baseName, options);\n return formatter.format(date);\n } catch (_) {\n return date.toISOString().slice(0, 10);\n }\n}\n\nexport function normalizeRange(range = {}) {\n const {start, end, granularity = \"year\", locale} = range || {};\n const loc = createLocale(locale);\n const startDate = createDateFromInput(start || new Date(), {locale: loc}) ||\n new Date(Date.UTC(0, 0, 1));\n let endDate = createDateFromInput(end, {locale: loc});\n if (!endDate) {\n const copy = new Date(startDate.getTime());\n copy.setUTCFullYear(copy.getUTCFullYear() + 1);\n endDate = copy;\n }\n if (endDate <= startDate) {\n const nextDay = new Date(startDate.getTime());\n nextDay.setUTCDate(nextDay.getUTCDate() + 1);\n endDate = nextDay;\n }\n const span = Math.max(1, endDate - startDate);\n return {\n startDate,\n endDate,\n span,\n granularity: granularity === \"month\" || granularity === \"day\" ? granularity : \"year\",\n locale: loc,\n };\n}\n\nexport function buildPointMetadata({value, granularity, locale}) {\n const date = createDateFromInput(value, {locale});\n return {\n date,\n label: formatDateLabel(date, {granularity, locale}),\n timestamp: date ? date.getTime() : null,\n };\n}\n\nexport function clampProgress(value) {\n if (!Number.isFinite(value)) return 0;\n if (value < 0) return 0;\n if (value > 1) return 1;\n return value;\n}\n", "import React from \"react\";\nimport TeaserCard from \"./TeaserCard.jsx\";\n\nfunction normalizeMetadata(metadata, summary) {\n if (Array.isArray(metadata) && metadata.length) {\n return metadata.filter(Boolean);\n }\n if (summary) return [summary];\n return [];\n}\n\nexport default function ReferencedManifestCard({\n manifest = null,\n href,\n title,\n summary,\n metadata,\n thumbnail,\n type,\n className = \"\",\n ...rest\n}) {\n const record = manifest || {};\n const resolvedHref = href ?? record.href ?? \"\";\n const resolvedTitle = title ?? record.title ?? record.href ?? \"\";\n const resolvedSummary = summary ?? record.summary ?? \"\";\n const resolvedMetadata = normalizeMetadata(\n metadata ?? record.metadata,\n resolvedSummary\n );\n const resolvedThumbnail = thumbnail ?? record.thumbnail ?? null;\n const resolvedType = type ?? record.type ?? \"work\";\n const classes = [\n \"canopy-referenced-manifest-card\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <TeaserCard\n href={resolvedHref || undefined}\n title={resolvedTitle || resolvedHref || \"\"}\n summary={resolvedSummary}\n metadata={resolvedMetadata}\n thumbnail={resolvedThumbnail}\n type={resolvedType}\n className={classes}\n {...rest}\n />\n );\n}\n", "const DEFAULT_ACCENT_HEX = '#2563eb';\n\nfunction normalizeHex(value) {\n if (!value) return '';\n let input = String(value).trim();\n if (!input) return '';\n if (input.startsWith('var(')) return input;\n if (/^#[0-9a-f]{3}$/i.test(input)) {\n return (\n '#' +\n input\n .replace(/^#/, '')\n .split('')\n .map((ch) => ch + ch)\n .join('')\n .toLowerCase()\n );\n }\n if (/^#[0-9a-f]{6}$/i.test(input)) return input.toLowerCase();\n return '';\n}\n\nfunction hexToRgb(hex) {\n if (!hex) return null;\n const normalized = normalizeHex(hex);\n if (!normalized || normalized.startsWith('var(')) return null;\n const int = parseInt(normalized.slice(1), 16);\n if (Number.isNaN(int)) return null;\n return {\n r: (int >> 16) & 255,\n g: (int >> 8) & 255,\n b: int & 255,\n };\n}\n\nfunction rgbToHsl({r, g, b}) {\n const rn = r / 255;\n const gn = g / 255;\n const bn = b / 255;\n const max = Math.max(rn, gn, bn);\n const min = Math.min(rn, gn, bn);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n const delta = max - min;\n if (delta !== 0) {\n s = l > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n switch (max) {\n case rn:\n h = (gn - bn) / delta + (gn < bn ? 6 : 0);\n break;\n case gn:\n h = (bn - rn) / delta + 2;\n break;\n case bn:\n h = (rn - gn) / delta + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return {h: h * 360, s: s * 100, l: l * 100};\n}\n\nfunction hslToHex(h, s, l) {\n const sat = s / 100;\n const light = l / 100;\n const c = (1 - Math.abs(2 * light - 1)) * sat;\n const hh = h / 60;\n const x = c * (1 - Math.abs((hh % 2) - 1));\n let r = 0;\n let g = 0;\n let b = 0;\n if (hh >= 0 && hh < 1) {\n r = c;\n g = x;\n } else if (hh >= 1 && hh < 2) {\n r = x;\n g = c;\n } else if (hh >= 2 && hh < 3) {\n g = c;\n b = x;\n } else if (hh >= 3 && hh < 4) {\n g = x;\n b = c;\n } else if (hh >= 4 && hh < 5) {\n r = x;\n b = c;\n } else {\n r = c;\n b = x;\n }\n const m = light - c / 2;\n const rn = Math.round((r + m) * 255);\n const gn = Math.round((g + m) * 255);\n const bn = Math.round((b + m) * 255);\n const toHex = (value) => value.toString(16).padStart(2, '0');\n return `#${toHex(rn)}${toHex(gn)}${toHex(bn)}`;\n}\n\nfunction rotateHue(baseHue, degrees) {\n return (baseHue + degrees + 360) % 360;\n}\n\nfunction resolveAccentHex() {\n let value = '';\n try {\n if (typeof window !== 'undefined') {\n const styles = window.getComputedStyle(document.documentElement);\n value = styles.getPropertyValue('--color-accent-default');\n }\n } catch (_) {}\n const normalized = normalizeHex(value);\n return normalized && !normalized.startsWith('var(')\n ? normalized\n : DEFAULT_ACCENT_HEX;\n}\n\nfunction generateLegendColors(count) {\n if (!count || count <= 0) return [];\n const colors = [];\n const baseHex = resolveAccentHex();\n const accentVar = `var(--color-accent-default, ${baseHex})`;\n colors.push(accentVar);\n if (count === 1) return colors;\n const rgb = hexToRgb(baseHex);\n const baseHsl = rgb ? rgbToHsl(rgb) : {h: 220, s: 85, l: 56};\n const rotations = [180, 120, -120, 60, -60, 90, -90, 30, -30];\n const needed = count - 1;\n for (let i = 0; i < needed; i += 1) {\n const angle = rotations[i] != null ? rotations[i] : (360 / (needed + 1)) * (i + 1);\n const rotatedHue = rotateHue(baseHsl.h, angle);\n const hex = hslToHex(rotatedHue, baseHsl.s, baseHsl.l);\n colors.push(hex);\n }\n return colors;\n}\n\nfunction createLookupStore() {\n try {\n if (typeof globalThis !== 'undefined' && typeof globalThis.Map === 'function') {\n return new globalThis.Map();\n }\n } catch (_) {}\n try {\n if (typeof window !== 'undefined' && typeof window.Map === 'function') {\n return new window.Map();\n }\n } catch (_) {}\n const store = Object.create(null);\n return {\n has(key) {\n return Object.prototype.hasOwnProperty.call(store, key);\n },\n get(key) {\n return store[key];\n },\n set(key, value) {\n store[key] = value;\n return this;\n },\n };\n}\n\nfunction normalizeText(value) {\n if (value == null) return '';\n try {\n return String(value).trim();\n } catch (_) {\n return '';\n }\n}\n\nfunction normalizeKeyValue(entry) {\n if (!entry) return '';\n const value = entry.id ?? entry.value ?? entry.key ?? entry.slug;\n return normalizeText(value);\n}\n\nfunction normalizeKeyLabel(entry) {\n if (!entry) return '';\n const label = entry.label ?? entry.name ?? entry.title ?? entry.text;\n return normalizeText(label);\n}\n\nfunction normalizeKeyLegendEntries(entries, options = {}) {\n if (!Array.isArray(entries)) return [];\n const resolveVariant = typeof options.resolveVariant === 'function' ? options.resolveVariant : null;\n const variantProp = options.variantProp || 'variant';\n return entries\n .map((entry) => {\n if (!entry) return null;\n const keyValue = normalizeKeyValue(entry);\n const label = normalizeKeyLabel(entry);\n if (!keyValue || !label) return null;\n const normalized = {\n keyValue,\n label,\n };\n if (resolveVariant) {\n const variant = resolveVariant(entry);\n if (variant) normalized[variantProp] = variant;\n }\n return normalized;\n })\n .filter(Boolean);\n}\n\nfunction buildKeyLegend(entries) {\n if (!Array.isArray(entries) || !entries.length) {\n return {groups: [], lookup: null};\n }\n const lookup = createLookupStore();\n const palette = generateLegendColors(entries.length);\n const groups = entries.map((entry, index) => {\n const color = palette[index] || palette[0] || DEFAULT_ACCENT_HEX;\n const group = {\n ...entry,\n color,\n };\n lookup.set(entry.keyValue, group);\n return group;\n });\n return {groups, lookup};\n}\n\nexport {DEFAULT_ACCENT_HEX, normalizeKeyLegendEntries, buildKeyLegend};\n", "export default function TimelinePoint() {\n return null;\n}\n\nTimelinePoint.displayName = \"TimelinePoint\";\n", "import React from \"react\";\n\nconst CONTEXT_KEY =\n typeof Symbol === \"function\" ? Symbol.for(\"__CANOPY_PAGE_CONTEXT__\") : \"__CANOPY_PAGE_CONTEXT__\";\n\nfunction getGlobalRoot() {\n if (typeof globalThis !== \"undefined\") return globalThis;\n if (typeof global !== \"undefined\") return global;\n if (typeof window !== \"undefined\") return window;\n return {};\n}\n\nfunction getPageContext() {\n const root = getGlobalRoot();\n if (root && root[CONTEXT_KEY]) return root[CONTEXT_KEY];\n const ctx = React.createContext({\n navigation: null,\n page: null,\n site: null,\n primaryNavigation: [],\n });\n if (root) root[CONTEXT_KEY] = ctx;\n return ctx;\n}\n\nexport function normalizeManifestId(raw) {\n if (!raw) return \"\";\n try {\n const url = new URL(String(raw));\n url.hash = \"\";\n const params = Array.from(url.searchParams.entries()).sort((a, b) =>\n a[0].localeCompare(b[0]) || a[1].localeCompare(b[1])\n );\n url.search = \"\";\n params.forEach(([key, value]) => url.searchParams.append(key, value));\n return url.toString();\n } catch (_) {\n return String(raw || \"\").trim();\n }\n}\n\nconst PageContextFallback = React.createContext(null);\nlet referencedModule = null;\nconst REFERENCED_SPEC = '@canopy-iiif/app/lib/components/referenced.js';\n\nfunction getReferencedModule() {\n if (typeof window !== 'undefined') return null;\n if (referencedModule) return referencedModule;\n try {\n const globalReq =\n (typeof globalThis !== 'undefined' && globalThis.__canopyRequire) || null;\n if (typeof globalReq === 'function') {\n let target = REFERENCED_SPEC;\n if (typeof globalReq.resolve === 'function') {\n try {\n target = globalReq.resolve(REFERENCED_SPEC);\n } catch (_) {}\n }\n referencedModule = globalReq(target);\n return referencedModule;\n }\n } catch (_) {\n referencedModule = null;\n }\n return referencedModule;\n}\n\nexport function useReferencedManifestMap() {\n const PageContext = getPageContext() || PageContextFallback;\n const pageContext = React.useContext(PageContext);\n const referencedItems =\n pageContext && pageContext.page && Array.isArray(pageContext.page.referencedItems)\n ? pageContext.page.referencedItems\n : [];\n return React.useMemo(() => {\n const map = new Map();\n referencedItems.forEach((item) => {\n if (!item) return;\n const id = item.id || item.href;\n if (!id) return;\n const normalized = normalizeManifestId(id);\n if (normalized) map.set(normalized, item);\n map.set(String(id), item);\n });\n return map;\n }, [referencedItems]);\n}\n\nexport function resolveManifestReferences(ids, manifestMap) {\n if (!Array.isArray(ids) || !ids.length || !manifestMap) return [];\n const seen = new Set();\n const out = [];\n ids.forEach((value) => {\n if (!value) return;\n const normalized = normalizeManifestId(value);\n if (!normalized || seen.has(normalized)) return;\n seen.add(normalized);\n const record = manifestMap.get(normalized) || manifestMap.get(String(value));\n if (!record) return;\n out.push({\n id: record.id || record.href || value,\n href: record.href || null,\n title: record.title || record.label || record.href || value,\n summary: record.summary || \"\",\n thumbnail: record.thumbnail || null,\n thumbnailWidth: record.thumbnailWidth,\n thumbnailHeight: record.thumbnailHeight,\n type: record.type || \"work\",\n metadata:\n Array.isArray(record.metadata) && record.metadata.length\n ? record.metadata\n : record.summary\n ? [record.summary]\n : [],\n });\n });\n return out;\n}\n\nexport function resolveReferencedManifests(ids, manifestMap) {\n if (!Array.isArray(ids) || !ids.length) return [];\n const order = [];\n const seen = new Set();\n ids.forEach((value) => {\n const normalized = normalizeManifestId(value);\n if (!normalized || seen.has(normalized)) return;\n seen.add(normalized);\n order.push(normalized);\n });\n if (!order.length) return [];\n const manifestRecords = new Map();\n if (manifestMap) {\n const resolved = resolveManifestReferences(ids, manifestMap);\n resolved.forEach((entry) => {\n const key = normalizeManifestId(entry && (entry.id || entry.href));\n if (key && !manifestRecords.has(key)) {\n manifestRecords.set(key, entry);\n }\n });\n }\n const missing = order.filter((key) => key && !manifestRecords.has(key));\n if (missing.length) {\n const referencedHelpers = getReferencedModule();\n const buildReferencedItems = referencedHelpers?.buildReferencedItems;\n const normalizeList = referencedHelpers?.normalizeReferencedManifestList;\n if (typeof buildReferencedItems === 'function') {\n let fallbackItems = [];\n try {\n const normalizedMissing =\n typeof normalizeList === 'function' ? normalizeList(missing) : missing;\n if (normalizedMissing && normalizedMissing.length) {\n fallbackItems = buildReferencedItems(normalizedMissing) || [];\n }\n } catch (_) {\n fallbackItems = [];\n }\n fallbackItems.forEach((item) => {\n if (!item) return;\n const fallbackKey = normalizeManifestId(item.id || item.href);\n if (!fallbackKey || manifestRecords.has(fallbackKey)) return;\n manifestRecords.set(fallbackKey, {\n id: item.id || item.href || fallbackKey,\n href: item.href || null,\n title: item.title || item.href || '',\n summary: item.summary || '',\n thumbnail: item.thumbnail || null,\n thumbnailWidth: item.thumbnailWidth,\n thumbnailHeight: item.thumbnailHeight,\n type: item.type || 'work',\n metadata:\n Array.isArray(item.metadata) && item.metadata.length\n ? item.metadata\n : item.summary\n ? [item.summary]\n : [],\n });\n });\n }\n }\n return order\n .map((key) => manifestRecords.get(key))\n .filter(Boolean);\n}\n", "import React from \"react\";\nimport ReactDOMServer from \"react-dom/server\";\nimport MapPoint from \"./MapPoint.jsx\";\nimport navPlaceHelpers from \"../../../../lib/components/nav-place.js\";\nimport {\n useReferencedManifestMap,\n resolveReferencedManifests,\n} from \"../../utils/manifestReferences.js\";\n\nfunction normalizeNumber(value) {\n if (value == null) return null;\n const num = Number(value);\n return Number.isFinite(num) ? num : null;\n}\n\nfunction normalizeReactKey(value) {\n if (value == null) return \"\";\n const str = String(value);\n if (/^\\.[0-9]+$/.test(str)) return \"\";\n if (str.startsWith(\".$\")) return str.slice(2);\n if (str.startsWith(\".\")) return str.slice(1);\n return str;\n}\n\nfunction normalizeCoordinates(props = {}) {\n const lat =\n normalizeNumber(props.lat) ??\n normalizeNumber(props.latitude) ??\n normalizeNumber(props.y);\n const lng =\n normalizeNumber(props.lng) ??\n normalizeNumber(props.lon) ??\n normalizeNumber(props.long) ??\n normalizeNumber(props.longitude) ??\n normalizeNumber(props.x);\n if (lat == null || lng == null) return null;\n return {lat, lng};\n}\n\nfunction renderDetailsHtml(children) {\n if (!children) return \"\";\n try {\n return ReactDOMServer.renderToStaticMarkup(\n React.createElement(React.Fragment, null, children)\n );\n } catch (_) {\n return \"\";\n }\n}\n\nfunction normalizeKeyLabel(value) {\n if (value == null) return \"\";\n try {\n const label = String(value).trim();\n return label;\n } catch (_) {\n return \"\";\n }\n}\n\nfunction pickManifestSummary(manifest) {\n if (!manifest) return \"\";\n if (manifest.summary && typeof manifest.summary === \"string\") {\n const trimmedSummary = manifest.summary.trim();\n if (trimmedSummary) return trimmedSummary;\n }\n if (!Array.isArray(manifest.metadata)) return \"\";\n for (const entry of manifest.metadata) {\n if (entry == null) continue;\n const value = typeof entry === \"string\"\n ? entry\n : typeof entry === \"object\"\n ? entry.value || entry.label || entry.title || \"\"\n : \"\";\n if (!value) continue;\n const trimmed = String(value).trim();\n if (trimmed) return trimmed;\n }\n return \"\";\n}\n\nfunction normalizeCustomPoint(child, index, manifestMap) {\n if (!React.isValidElement(child)) return null;\n if (child.type !== MapPoint && child.type?.displayName !== \"MapPoint\") return null;\n const coords = normalizeCoordinates(child.props || {});\n if (!coords) return null;\n const props = child.props || {};\n const id = props.id || `map-point-${index + 1}`;\n let title = props.title || props.label || \"\";\n let summary = props.summary || props.description || \"\";\n let href = props.href || props.link || \"\";\n let thumbnail = props.thumbnail || props.image || \"\";\n let thumbnailWidth = normalizeNumber(props.thumbnailWidth);\n let thumbnailHeight = normalizeNumber(props.thumbnailHeight);\n const rawNodeKey = child && child.key != null ? child.key : null;\n const normalizedNodeKey = normalizeReactKey(rawNodeKey);\n const keyValue = props.mapKey || props.group || props.key || normalizedNodeKey;\n const keyLabelFromProps = normalizeKeyLabel(props.keyLabel || props.legend || props.groupLabel);\n const detailsHtml = renderDetailsHtml(props.children);\n const manifestValues = Array.isArray(props.referencedManifests)\n ? props.referencedManifests\n : props.manifest\n ? [props.manifest]\n : Array.isArray(props.manifests)\n ? props.manifests\n : [];\n const manifests = resolveReferencedManifests(manifestValues, manifestMap);\n const manifestFallback = manifests.length ? manifests[0] : null;\n if (!title) {\n const manifestTitle = manifestFallback?.title || manifestFallback?.href || \"\";\n title = manifestTitle || `Point ${index + 1}`;\n }\n if (!summary && manifestFallback) {\n const manifestSummary = pickManifestSummary(manifestFallback);\n if (manifestSummary) summary = manifestSummary;\n }\n if (!href && manifestFallback && manifestFallback.href) {\n href = manifestFallback.href;\n }\n if (!thumbnail && manifests.length) {\n const manifestWithThumb = manifests.find(\n (manifest) => manifest && manifest.thumbnail\n );\n if (manifestWithThumb) {\n thumbnail = manifestWithThumb.thumbnail || \"\";\n if (\n thumbnail &&\n thumbnailWidth == null &&\n typeof manifestWithThumb.thumbnailWidth === \"number\"\n ) {\n thumbnailWidth = manifestWithThumb.thumbnailWidth;\n }\n if (\n thumbnail &&\n thumbnailHeight == null &&\n typeof manifestWithThumb.thumbnailHeight === \"number\"\n ) {\n thumbnailHeight = manifestWithThumb.thumbnailHeight;\n }\n }\n }\n return {\n id,\n title,\n summary,\n href,\n thumbnail,\n thumbnailWidth,\n thumbnailHeight,\n lat: coords.lat,\n lng: coords.lng,\n detailsHtml,\n manifests,\n type: \"custom\",\n keyValue: keyValue ? String(keyValue).trim() : \"\",\n keyLabel: keyLabelFromProps,\n };\n}\n\nfunction normalizeCustomPoints(children, manifestMap) {\n return React.Children.toArray(children)\n .map((child, index) => normalizeCustomPoint(child, index, manifestMap))\n .filter(Boolean);\n}\n\nfunction normalizeHeight(value) {\n if (value == null) return \"600px\";\n if (typeof value === \"number\") {\n return `${value}px`;\n }\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) return \"600px\";\n if (/^[0-9.]+$/.test(trimmed)) {\n return `${trimmed}px`;\n }\n return trimmed;\n }\n return \"600px\";\n}\n\nfunction normalizeTileLayer(entry, index) {\n if (!entry) return null;\n if (typeof entry === \"string\") {\n const url = entry.trim();\n if (!url) return null;\n return {\n name: `Layer ${index + 1}`,\n url,\n attribution: \"\",\n };\n }\n if (typeof entry === \"object\") {\n const url = entry.url || entry.href;\n if (!url) return null;\n const layer = {\n name: entry.name || entry.title || `Layer ${index + 1}`,\n url: String(url),\n attribution: entry.attribution || entry.credit || \"\",\n };\n const minZoom = normalizeNumber(entry.minZoom);\n const maxZoom = normalizeNumber(entry.maxZoom);\n if (Number.isFinite(minZoom)) layer.minZoom = minZoom;\n if (Number.isFinite(maxZoom)) layer.maxZoom = maxZoom;\n if (entry.subdomains) layer.subdomains = entry.subdomains;\n return layer;\n }\n return null;\n}\n\nfunction normalizeTileLayers(value) {\n const list = Array.isArray(value) ? value : value ? [value] : [];\n return list\n .map((entry, index) => normalizeTileLayer(entry, index))\n .filter(Boolean);\n}\n\nconst TILE_LAYER_DISABLE_TOKENS = new Set([\n \"false\",\n \"0\",\n \"off\",\n \"no\",\n \"none\",\n \"transparent\",\n \"disable\",\n \"disabled\",\n]);\n\nfunction shouldDisableTileLayers(value) {\n if (value === false) return true;\n if (typeof value === \"string\") {\n const normalized = value.trim().toLowerCase();\n if (normalized && TILE_LAYER_DISABLE_TOKENS.has(normalized)) return true;\n }\n return false;\n}\n\nfunction parseBoolean(value, fallback) {\n if (value === undefined) return fallback;\n if (typeof value === \"boolean\") return value;\n const normalized = String(value).trim().toLowerCase();\n if (!normalized) return fallback;\n if ([\"false\", \"0\", \"no\", \"off\"].includes(normalized)) return false;\n if ([\"true\", \"1\", \"yes\", \"on\"].includes(normalized)) return true;\n return fallback;\n}\n\nfunction normalizeCenter(value) {\n if (!value) return null;\n if (typeof value === \"string\") {\n const parts = value.split(/[,\\s]+/).filter(Boolean);\n if (parts.length >= 2) {\n const coords = normalizeCoordinates({lat: parts[0], lng: parts[1]});\n if (coords) return coords;\n }\n return null;\n }\n if (typeof value === \"object\") {\n const coords = normalizeCoordinates(value);\n if (coords) return coords;\n }\n return null;\n}\n\nfunction serializeProps(props, payload) {\n const clone = {};\n Object.keys(props || {}).forEach((key) => {\n if (key === \"children\") return;\n const value = props[key];\n if (typeof value === \"function\" || typeof value === \"symbol\") return;\n clone[key] = value;\n });\n return {...clone, ...payload};\n}\n\nfunction serializeForScript(data) {\n try {\n return JSON.stringify(data).replace(/</g, \"\\\\u003c\");\n } catch (_) {\n return \"{}\";\n }\n}\n\nfunction getDatasetInfo() {\n if (!navPlaceHelpers) {\n return {hasFeatures: false, version: null, href: \"/api/navplace.json\"};\n }\n try {\n return navPlaceHelpers.getNavPlaceDatasetInfo();\n } catch (_) {\n return {\n hasFeatures: false,\n version: null,\n href: navPlaceHelpers.NAVPLACE_PUBLIC_HREF || \"/api/navplace.json\",\n };\n }\n}\n\nexport default function MdxMap({children, ...rest}) {\n const manifestMap = useReferencedManifestMap();\n const customPoints = normalizeCustomPoints(children, manifestMap);\n const datasetInfo = getDatasetInfo();\n const navDataset = {\n hasFeatures: Boolean(datasetInfo && datasetInfo.hasFeatures),\n href: (datasetInfo && datasetInfo.href) || \"/api/navplace.json\",\n version: datasetInfo && datasetInfo.version ? datasetInfo.version : null,\n };\n const height = normalizeHeight(rest.height);\n const tileLayersInput =\n rest.tileLayers !== undefined && rest.tileLayers !== null\n ? rest.tileLayers\n : rest.tileLayer !== undefined\n ? rest.tileLayer\n : undefined;\n const disableTileLayersInput =\n rest.disableTileLayers ?? rest.disableBasemap ?? rest.hideTileLayers;\n const showTileLayersOverride =\n rest.showTileLayers ?? rest.showBasemap ?? rest.basemap ?? rest.basemapVisible;\n let disableTileLayers = false;\n if (disableTileLayersInput !== undefined) {\n disableTileLayers = parseBoolean(disableTileLayersInput, false);\n } else if (showTileLayersOverride !== undefined) {\n const showLayers = parseBoolean(showTileLayersOverride, true);\n disableTileLayers = !showLayers;\n } else {\n disableTileLayers = shouldDisableTileLayers(tileLayersInput);\n }\n const tileLayers = disableTileLayers ? [] : normalizeTileLayers(tileLayersInput);\n const scrollWheelZoom = parseBoolean(rest.scrollWheelZoom, false);\n const cluster = parseBoolean(rest.cluster, true);\n const maxClusterRadius = normalizeNumber(\n rest.maxClusterRadius ?? rest.clusterRadius ?? rest.markerClusterRadius\n );\n const defaultCenter = normalizeCenter(rest.defaultCenter || rest.center);\n const defaultZoom = normalizeNumber(rest.defaultZoom || rest.zoom);\n const rawKeyConfig =\n rest.key ?? rest.mapKey ?? rest.keys ?? rest.legend ?? rest.keyConfig ?? null;\n const mapKeyConfig = Array.isArray(rawKeyConfig)\n ? rawKeyConfig\n : rawKeyConfig && typeof rawKeyConfig === \"object\"\n ? [rawKeyConfig]\n : [];\n const payload = serializeProps(rest, {\n className: rest.className || \"\",\n id: rest.id || null,\n height,\n tileLayers,\n disableTileLayers,\n scrollWheelZoom,\n cluster,\n maxClusterRadius: Number.isFinite(maxClusterRadius) ? maxClusterRadius : null,\n customPoints,\n navDataset,\n defaultCenter,\n defaultZoom: Number.isFinite(defaultZoom) ? defaultZoom : null,\n keyConfig: mapKeyConfig,\n });\n const json = serializeForScript(payload);\n const placeholderClass = [\"canopy-map\", rest.className]\n .filter(Boolean)\n .join(\" \");\n const placeholderProps = {};\n if (placeholderClass) placeholderProps.className = placeholderClass;\n if (rest.id) placeholderProps.id = rest.id;\n if (rest.style) placeholderProps.style = rest.style;\n return (\n <div data-canopy-map=\"1\">\n <div {...placeholderProps} aria-live=\"polite\">\n <div className=\"canopy-map__status\">Loading map\u2026</div>\n </div>\n <script type=\"application/json\" dangerouslySetInnerHTML={{__html: json}} />\n </div>\n );\n}\n", "export default function MapPoint() {\n return null;\n}\n\nMapPoint.displayName = \"MapPoint\";\n", "import React from \"react\";\nimport Button from \"../../layout/Button.jsx\";\nimport {useLocale} from \"../../locale/index.js\";\nimport {\n useReferencedManifestMap,\n resolveReferencedManifests,\n} from \"../../utils/manifestReferences.js\";\n\nconst INLINE_SCRIPT = `(() => {\n if (typeof window === 'undefined') return;\n if (window.__canopyGalleryBound) return;\n window.__canopyGalleryBound = true;\n const focusableSelector =\n 'a[href],area[href],button:not([disabled]),input:not([disabled]):not([type=\"hidden\"]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex=\"-1\"])';\n const raf =\n (window.requestAnimationFrame && window.requestAnimationFrame.bind(window)) ||\n function (cb) {\n return window.setTimeout(cb, 0);\n };\n let activeModal = null;\n const NAV_SELECTOR = '[data-canopy-gallery-nav]';\n const NAV_OPTION_SELECTOR = '[data-canopy-gallery-nav-option]';\n const NAV_ITEM_SELECTOR = '[data-canopy-gallery-nav-item]';\n\n function emitModalState(modal, state) {\n if (!modal || typeof window === 'undefined') return;\n const detail = { modalId: modal.id || '', modal, state };\n try {\n const EventCtor = window.CustomEvent || CustomEvent;\n if (typeof EventCtor === 'function') {\n window.dispatchEvent(new EventCtor('canopy:gallery:modal-change', { detail }));\n return;\n }\n } catch (_) {}\n try {\n const fallback = document.createEvent('CustomEvent');\n fallback.initCustomEvent('canopy:gallery:modal-change', true, true, detail);\n window.dispatchEvent(fallback);\n } catch (_) {}\n }\n\n function isVisible(node) {\n return !!(node && (node.offsetWidth || node.offsetHeight || node.getClientRects().length));\n }\n\n function getFocusable(modal) {\n if (!modal) return [];\n return Array.prototype.slice\n .call(modal.querySelectorAll(focusableSelector))\n .filter((node) => !node.hasAttribute('disabled') && node.getAttribute('aria-hidden') !== 'true' && isVisible(node));\n }\n\n function escapeSelector(value) {\n if (window.CSS && typeof window.CSS.escape === 'function') {\n return window.CSS.escape(value);\n }\n return value.replace(/\"/g, '\\\\\"');\n }\n\n function findTrigger(modal) {\n if (!modal || !modal.id) return null;\n try {\n return document.querySelector('[data-canopy-gallery-trigger=\"' + escapeSelector(modal.id) + '\"]');\n } catch (_) {\n return null;\n }\n }\n\n function resetModalScroll(modal) {\n if (!modal) return;\n const panel = modal.querySelector('.canopy-gallery__modal-panel');\n if (panel) {\n panel.scrollTop = 0;\n panel.scrollLeft = 0;\n }\n }\n\n function getOptionItem(option) {\n if (!option || typeof option.closest !== 'function') return null;\n return option.closest(NAV_ITEM_SELECTOR);\n }\n\n function focusActiveNav(modal) {\n if (!modal) return false;\n const nav = modal.querySelector(NAV_SELECTOR);\n if (!nav) return false;\n const activeOption =\n nav.querySelector(NAV_OPTION_SELECTOR + ':checked') ||\n nav.querySelector(NAV_OPTION_SELECTOR);\n if (!activeOption) return false;\n raf(() => {\n try {\n activeOption.focus({preventScroll: true});\n } catch (_) {\n try {\n activeOption.focus();\n } catch (err) {}\n }\n });\n return true;\n }\n\n function focusInitial(modal) {\n if (!modal) return;\n const focusables = getFocusable(modal);\n const target = focusables[0] || modal;\n raf(() => {\n try {\n target.focus({preventScroll: true});\n } catch (_) {\n try {\n target.focus();\n } catch (err) {}\n }\n });\n }\n\n function lockScroll() {\n document.body && document.body.setAttribute('data-canopy-gallery-locked', '1');\n }\n\n function unlockScroll() {\n document.body && document.body.removeAttribute('data-canopy-gallery-locked');\n }\n\n function handleKeydown(event) {\n if (!activeModal) return;\n if (event.key === 'Escape' || event.key === 'Esc') {\n event.preventDefault();\n const closeId = activeModal.getAttribute('data-canopy-gallery-close');\n if (closeId) {\n const targetHash = '#' + closeId;\n if (window.location.hash !== targetHash) {\n window.location.hash = targetHash;\n } else {\n window.location.hash = targetHash;\n }\n } else {\n window.location.hash = '';\n }\n return;\n }\n if (event.key !== 'Tab') return;\n const focusables = getFocusable(activeModal);\n if (!focusables.length) {\n event.preventDefault();\n activeModal.focus();\n return;\n }\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n const current = document.activeElement;\n if (event.shiftKey) {\n if (current === first || !activeModal.contains(current)) {\n event.preventDefault();\n last.focus();\n }\n return;\n }\n if (current === last || !activeModal.contains(current)) {\n event.preventDefault();\n first.focus();\n }\n }\n\n function setActiveModal(modal) {\n if (modal) {\n if (!activeModal) {\n lockScroll();\n document.addEventListener('keydown', handleKeydown, true);\n } else if (activeModal !== modal) {\n emitModalState(activeModal, 'close');\n activeModal.removeAttribute('data-canopy-gallery-active');\n }\n activeModal = modal;\n modal.setAttribute('data-canopy-gallery-active', '1');\n resetModalScroll(modal);\n if (!focusActiveNav(modal)) {\n focusInitial(modal);\n }\n emitModalState(modal, 'open');\n return;\n }\n if (!activeModal) return;\n const previous = activeModal;\n activeModal = null;\n previous.removeAttribute('data-canopy-gallery-active');\n unlockScroll();\n document.removeEventListener('keydown', handleKeydown, true);\n const closeTarget = previous.getAttribute('data-canopy-gallery-close');\n if (closeTarget) {\n const closeHash = '#' + closeTarget;\n if (window.location.hash === closeHash) {\n try {\n if (window.history && typeof window.history.replaceState === 'function') {\n window.history.replaceState('', document.title, window.location.pathname + window.location.search);\n } else {\n window.location.hash = '';\n }\n } catch (_) {}\n }\n }\n const trigger = findTrigger(previous);\n if (trigger && typeof trigger.focus === 'function') {\n raf(() => {\n try {\n trigger.focus({preventScroll: true});\n } catch (_) {\n try {\n trigger.focus();\n } catch (err) {}\n }\n });\n }\n emitModalState(previous, 'close');\n }\n\n function closeModalFromBackground(modal) {\n if (!modal) return;\n const closeId = modal.getAttribute('data-canopy-gallery-close');\n const targetHash = closeId ? '#' + closeId : '';\n if (targetHash) {\n if (window.location.hash === targetHash) {\n try {\n window.location.hash = targetHash;\n } catch (_) {}\n } else {\n window.location.hash = targetHash;\n }\n } else {\n window.location.hash = '';\n }\n }\n\n function shouldCloseFromBackground(event, modal) {\n if (!event || !modal) return false;\n const target = event.target;\n if (!target) return false;\n const panel = modal.querySelector('.canopy-gallery__modal-panel');\n if (panel && panel.contains(target)) return false;\n const actions = modal.querySelector('.canopy-gallery__modal-actions');\n if (actions && actions.contains(target)) return false;\n if (target === modal) return true;\n const scrim = modal.querySelector('.canopy-gallery__modal-scrim');\n if (scrim && scrim.contains(target)) return true;\n return false;\n }\n\n function bindModalDismissal(modal) {\n if (!modal || modal.getAttribute('data-canopy-gallery-dismiss-bound') === '1') {\n return;\n }\n modal.setAttribute('data-canopy-gallery-dismiss-bound', '1');\n modal.addEventListener('click', function (event) {\n if (!shouldCloseFromBackground(event, modal)) return;\n event.preventDefault();\n closeModalFromBackground(modal);\n });\n }\n\n function bindModalDismissals() {\n const modals = document.querySelectorAll('[data-canopy-gallery-modal]');\n if (!modals || !modals.length) return;\n Array.prototype.forEach.call(modals, bindModalDismissal);\n }\n\n function modalFromHash() {\n const id = window.location.hash.replace(/^#/, '');\n if (!id) return null;\n const candidate = document.getElementById(id);\n if (!candidate) return null;\n return candidate.hasAttribute('data-canopy-gallery-modal') ? candidate : null;\n }\n\n function syncFromHash() {\n const modal = modalFromHash();\n if (modal) {\n setActiveModal(modal);\n } else {\n setActiveModal(null);\n }\n }\n\n function initGalleryNav(nav) {\n if (!nav || nav.getAttribute('data-canopy-gallery-nav-bound') === '1') {\n return;\n }\n const viewport =\n nav.querySelector('[data-canopy-gallery-nav-viewport]') ||\n nav.querySelector('[data-canopy-gallery-nav-track]');\n if (!viewport) return;\n const optionNodes = nav.querySelectorAll(NAV_OPTION_SELECTOR);\n const navOptions = optionNodes ? Array.prototype.slice.call(optionNodes) : [];\n if (!navOptions.length) return;\n nav.setAttribute('data-canopy-gallery-nav-bound', '1');\n const navModal = nav.closest('[data-canopy-gallery-modal]');\n const prevBtn =\n nav.querySelector('[data-canopy-gallery-nav-prev]') ||\n (navModal &&\n navModal.querySelector(\n '.canopy-gallery__modal-panel [data-canopy-gallery-nav-prev]'\n ));\n const nextBtn =\n nav.querySelector('[data-canopy-gallery-nav-next]') ||\n (navModal &&\n navModal.querySelector(\n '.canopy-gallery__modal-panel [data-canopy-gallery-nav-next]'\n ));\n\n function updateButtons() {\n if (prevBtn) prevBtn.disabled = false;\n if (nextBtn) nextBtn.disabled = false;\n }\n\n function getOptionLabel(option) {\n if (!option) return null;\n let label = option.nextElementSibling;\n if (label && label.tagName && label.tagName.toLowerCase() === 'label') {\n return label;\n }\n if (option.id) {\n try {\n label = nav.querySelector('label[for=\"' + escapeSelector(option.id) + '\"]');\n if (label) return label;\n } catch (_) {}\n }\n return null;\n }\n\n function getTargetIdFromOption(option) {\n if (!option) return '';\n const dataId = option.getAttribute('data-canopy-gallery-nav-modal');\n if (dataId) return String(dataId);\n const value = option.value || option.getAttribute('value') || '';\n return String(value);\n }\n\n function focusOption(option) {\n if (!option) return;\n try {\n option.focus({preventScroll: true});\n } catch (_) {\n try {\n option.focus();\n } catch (err) {}\n }\n }\n\n function getActiveIndex() {\n const currentId = window.location.hash.replace(/^#/, '');\n if (!currentId) return 0;\n for (let i = 0; i < navOptions.length; i += 1) {\n if (getTargetIdFromOption(navOptions[i]) === currentId) {\n return i;\n }\n }\n return 0;\n }\n\n function scrollOptionIntoView(option) {\n const label = getOptionLabel(option);\n const target = label || option;\n if (!target) return;\n try {\n target.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'center'});\n } catch (_) {\n try {\n target.scrollIntoView();\n } catch (err) {}\n }\n }\n\n function activateOption(option, opts = {}) {\n if (!option) return;\n const targetId = getTargetIdFromOption(option);\n if (!targetId) return;\n const targetHash = '#' + targetId;\n syncActiveState({targetHash, reveal: true, focus: !!opts.focus});\n if (window.location.hash === targetHash) {\n try {\n window.location.hash = targetHash;\n } catch (_) {}\n } else {\n window.location.hash = targetHash;\n }\n }\n\n function openByOffset(direction) {\n const total = navOptions.length;\n if (!total) return;\n const currentIndex = getActiveIndex();\n const nextIndex = (currentIndex + direction + total) % total;\n const nextOption = navOptions[nextIndex];\n if (!nextOption) return;\n activateOption(nextOption, {focus: true});\n }\n\n function syncActiveState(options) {\n const targetHash =\n (options && options.targetHash) || window.location.hash || '';\n const normalized = String(targetHash)\n .split('#')\n .pop()\n .replace(/^#/, '');\n let activeIndex = -1;\n let activeOption = null;\n navOptions.forEach((option, index) => {\n const linkTarget = getTargetIdFromOption(option);\n const isActive = normalized && linkTarget === normalized;\n const label = getOptionLabel(option);\n const navItem = getOptionItem(option);\n if (isActive) {\n activeIndex = index;\n activeOption = option;\n option.checked = true;\n option.setAttribute('checked', 'checked');\n option.setAttribute('data-canopy-gallery-nav-active', '1');\n option.setAttribute('data-canopy-gallery-nav-selected', '1');\n option.tabIndex = 0;\n if (label) {\n label.setAttribute('data-canopy-gallery-nav-active', '1');\n }\n if (navItem) {\n navItem.setAttribute('data-canopy-gallery-nav-selected', '1');\n }\n } else {\n option.checked = false;\n option.removeAttribute('checked');\n option.removeAttribute('data-canopy-gallery-nav-active');\n option.removeAttribute('data-canopy-gallery-nav-selected');\n option.tabIndex = -1;\n if (label) {\n label.removeAttribute('data-canopy-gallery-nav-active');\n }\n if (navItem) {\n navItem.removeAttribute('data-canopy-gallery-nav-selected');\n }\n }\n });\n if (options && options.reveal && activeIndex >= 0) {\n scrollOptionIntoView(navOptions[activeIndex]);\n }\n if (options && options.focus && activeIndex >= 0) {\n focusOption(activeOption);\n }\n }\n\n if (prevBtn) {\n prevBtn.addEventListener('click', function (event) {\n event.preventDefault();\n openByOffset(-1);\n });\n }\n if (nextBtn) {\n nextBtn.addEventListener('click', function (event) {\n event.preventDefault();\n openByOffset(1);\n });\n }\n\n viewport.addEventListener('scroll', function () {\n raf(updateButtons);\n });\n window.addEventListener('resize', function () {\n raf(updateButtons);\n });\n\n nav.addEventListener('keydown', function (event) {\n const target = event.target || event.srcElement;\n const isOption =\n target && target.hasAttribute && target.hasAttribute('data-canopy-gallery-nav-option');\n if (!isOption) return;\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n event.preventDefault();\n openByOffset(1);\n return;\n }\n if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n event.preventDefault();\n openByOffset(-1);\n return;\n }\n if (event.key === 'Tab' && !event.shiftKey) {\n const actions = nav.closest('.canopy-gallery__modal-actions');\n const closeBtn = actions && actions.querySelector('.canopy-gallery__modal-close');\n if (closeBtn) {\n event.preventDefault();\n try {\n closeBtn.focus({preventScroll: true});\n } catch (_) {\n try {\n closeBtn.focus();\n } catch (err) {}\n }\n }\n }\n });\n\n nav.addEventListener('change', function (event) {\n const target = event.target || event.srcElement;\n if (!target || typeof target.matches !== 'function') return;\n if (!target.matches(NAV_OPTION_SELECTOR)) return;\n activateOption(target, {focus: true});\n });\n\n updateButtons();\n syncActiveState({reveal: true});\n nav.__canopyGalleryNavUpdate = updateButtons;\n nav.__canopyGalleryNavRefresh = function (options) {\n syncActiveState({\n reveal: options && options.reveal,\n focus: options && options.focus,\n });\n };\n }\n\n function bindGalleryNavs() {\n const navs = document.querySelectorAll('[data-canopy-gallery-nav]');\n if (!navs || !navs.length) return;\n Array.prototype.forEach.call(navs, initGalleryNav);\n refreshGalleryNavs({reveal: true});\n }\n\n function refreshGalleryNavs(options) {\n const opts = options || {};\n const navs = document.querySelectorAll('[data-canopy-gallery-nav-bound=\"1\"]');\n if (!navs || !navs.length) return;\n Array.prototype.forEach.call(navs, function (nav) {\n if (typeof nav.__canopyGalleryNavUpdate === 'function') {\n raf(nav.__canopyGalleryNavUpdate);\n }\n if (typeof nav.__canopyGalleryNavRefresh === 'function') {\n raf(function () {\n nav.__canopyGalleryNavRefresh({\n reveal: !!opts.reveal,\n focus: !!opts.focus,\n });\n });\n }\n });\n }\n\n window.addEventListener('hashchange', function () {\n syncFromHash();\n refreshGalleryNavs({reveal: true});\n });\n window.addEventListener('pageshow', function () {\n syncFromHash();\n bindGalleryNavs();\n bindModalDismissals();\n refreshGalleryNavs({reveal: true});\n });\n syncFromHash();\n bindGalleryNavs();\n bindModalDismissals();\n refreshGalleryNavs({reveal: true});\n})()`;\n\nlet galleryInstanceCounter = 0;\n\nfunction nextGalleryInstanceId() {\n galleryInstanceCounter += 1;\n return `canopy-gallery-${galleryInstanceCounter}`;\n}\n\nfunction slugify(value, fallback) {\n if (!value) return fallback;\n const normalized = String(value)\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .trim();\n if (!normalized) return fallback;\n return normalized;\n}\n\nfunction ensureArray(value) {\n if (!value && value !== 0) return [];\n return Array.isArray(value) ? value : [value];\n}\n\nfunction normalizeOrder(value) {\n const normalized = String(value || \"default\").toLowerCase();\n return normalized === \"random\" ? \"random\" : \"default\";\n}\n\nfunction shuffleItems(list) {\n const copy = list.slice();\n for (let i = copy.length - 1; i > 0; i -= 1) {\n const j = Math.floor(Math.random() * (i + 1));\n const temp = copy[i];\n copy[i] = copy[j];\n copy[j] = temp;\n }\n return copy;\n}\n\nfunction renderMetaList(meta, className) {\n const entries = ensureArray(meta).filter((entry) => entry || entry === 0);\n if (!entries.length) return null;\n return (\n <ul className={className} role=\"list\">\n {entries.map((entry, index) => (\n <li key={`meta-${index}`}>{entry}</li>\n ))}\n </ul>\n );\n}\n\nfunction renderPreview(props = {}) {\n const source =\n (typeof props.media === \"string\" && props.media) ||\n props.thumbnail ||\n props.src ||\n (props.image && props.image.src) ||\n props.image;\n if (source) {\n const alt =\n props.thumbnailAlt || props.imageAlt || props.alt || props.title || \"\";\n const width = props.thumbnailWidth || props.imageWidth || props.width;\n const height = props.thumbnailHeight || props.imageHeight || props.height;\n return (\n <img\n src={source}\n alt={alt}\n width={width}\n height={height}\n loading=\"lazy\"\n />\n );\n }\n return <div className=\"canopy-gallery__placeholder\" aria-hidden=\"true\" />;\n}\n\nfunction renderFlexibleContent(content, options = {}) {\n const {\n inlineTag: InlineTag = \"span\",\n blockTag: BlockTag = \"div\",\n className,\n id,\n } = options;\n if (content == null || content === false) return null;\n const isPrimitive =\n typeof content === \"string\" ||\n typeof content === \"number\" ||\n typeof content === \"bigint\";\n if (isPrimitive) {\n return (\n <InlineTag className={className} id={id}>\n {content}\n </InlineTag>\n );\n }\n if (React.isValidElement(content)) {\n if (content.type === React.Fragment) {\n return (\n <BlockTag className={className} id={id}>\n {content}\n </BlockTag>\n );\n }\n const mergedClassName = [content.props?.className, className]\n .filter(Boolean)\n .join(\" \");\n return React.cloneElement(content, {\n ...content.props,\n className: mergedClassName || undefined,\n id: content.props?.id || id,\n });\n }\n const FallbackTag = BlockTag;\n return (\n <FallbackTag className={className} id={id}>\n {content}\n </FallbackTag>\n );\n}\n\nfunction normalizeItem(child, index, galleryId, manifestMap) {\n if (!React.isValidElement(child)) return null;\n if (child.type !== GalleryItem && child.type?.displayName !== \"GalleryItem\")\n return null;\n const props = child.props || {};\n const manifestValues = props.referencedManifests\n ? ensureArray(props.referencedManifests)\n : props.manifest\n ? [props.manifest]\n : props.manifests\n ? ensureArray(props.manifests)\n : [];\n const manifests = resolveReferencedManifests(manifestValues, manifestMap);\n const normalizedProps = {...props};\n if (!normalizedProps.title) {\n const manifestWithTitle = manifests.find(\n (manifest) => manifest && manifest.title,\n );\n if (manifestWithTitle && manifestWithTitle.title) {\n normalizedProps.title = manifestWithTitle.title;\n }\n }\n if (!normalizedProps.summary || !normalizedProps.description) {\n const manifestWithSummary = manifests.find(\n (manifest) => manifest && manifest.summary,\n );\n if (manifestWithSummary && manifestWithSummary.summary) {\n if (!normalizedProps.summary) {\n normalizedProps.summary = manifestWithSummary.summary;\n }\n if (!normalizedProps.description) {\n normalizedProps.description = manifestWithSummary.summary;\n }\n }\n }\n if (\n !normalizedProps.thumbnail &&\n !normalizedProps.media &&\n !normalizedProps.image\n ) {\n const manifestWithThumb = manifests.find(\n (manifest) => manifest && manifest.thumbnail,\n );\n if (manifestWithThumb && manifestWithThumb.thumbnail) {\n normalizedProps.thumbnail = manifestWithThumb.thumbnail;\n if (\n manifestWithThumb.thumbnailWidth != null &&\n normalizedProps.thumbnailWidth == null &&\n normalizedProps.imageWidth == null &&\n normalizedProps.width == null\n ) {\n normalizedProps.thumbnailWidth = manifestWithThumb.thumbnailWidth;\n }\n if (\n manifestWithThumb.thumbnailHeight != null &&\n normalizedProps.thumbnailHeight == null &&\n normalizedProps.imageHeight == null &&\n normalizedProps.height == null\n ) {\n normalizedProps.thumbnailHeight = manifestWithThumb.thumbnailHeight;\n }\n }\n }\n const rawSlug =\n normalizedProps.slug ||\n normalizedProps.id ||\n normalizedProps.title ||\n `item-${index + 1}`;\n const slug = slugify(rawSlug, `item-${index + 1}`);\n const modalId = `${galleryId}-modal-${slug}-${index + 1}`;\n const triggerLabel =\n normalizedProps.triggerLabel ||\n normalizedProps.buttonLabel ||\n normalizedProps.linkLabel ||\n `Open popup for ${normalizedProps.title || `item ${index + 1}`}`;\n const modalTitleId = `${modalId}-title`;\n const needsDescriptionId =\n normalizedProps.popupDescription ||\n normalizedProps.modalDescription ||\n normalizedProps.description ||\n normalizedProps.summary;\n const modalDescriptionId = needsDescriptionId\n ? `${modalId}-description`\n : null;\n const manifestLinks = manifests\n .map((manifest) => {\n if (!manifest) return null;\n const href = manifest.href || manifest.id || manifest.slug;\n if (!href) return null;\n return {\n id: manifest.id || manifest.slug || href,\n href,\n title: manifest.title || manifest.label || href,\n };\n })\n .filter(Boolean);\n\n return {\n index,\n key: child.key != null ? child.key : `${galleryId}-item-${index}`,\n props: normalizedProps,\n modalId,\n slug,\n modalTitleId,\n modalDescriptionId,\n triggerLabel,\n manifests: manifestLinks,\n };\n}\n\nfunction buildCaptionContent(itemProps) {\n if (itemProps.caption) return itemProps.caption;\n const kicker = itemProps.kicker || itemProps.label || itemProps.eyebrow;\n const summary = itemProps.summary || itemProps.description;\n return (\n <>\n {kicker ? <span className=\"canopy-gallery__kicker\">{kicker}</span> : null}\n {itemProps.title ? (\n <span className=\"canopy-gallery__title-text\">{itemProps.title}</span>\n ) : null}\n {renderFlexibleContent(summary, {\n inlineTag: \"span\",\n blockTag: \"div\",\n className: \"canopy-gallery__summary\",\n })}\n {renderMetaList(\n itemProps.meta,\n \"canopy-gallery__meta canopy-gallery__meta--caption\",\n )}\n </>\n );\n}\n\nfunction GalleryModal({item, closeTargetId, navItems, navGroupName}) {\n const {getString, formatString} = useLocale();\n const {\n props,\n modalId,\n modalTitleId,\n modalDescriptionId,\n triggerLabel,\n index,\n manifests,\n } = item;\n const kicker = props.kicker || props.label || props.eyebrow;\n const summary =\n props.popupDescription ||\n props.modalDescription ||\n props.description ||\n props.summary ||\n null;\n const modalTitle =\n props.popupTitle || props.modalTitle || props.title || `Item ${index + 1}`;\n const closeButtonText = getString(\"common.actions.close\", \"Close\");\n const closeButtonLabel = formatString(\n \"common.phrases.close_content\",\n \"Close {content}\",\n {content: modalTitle},\n );\n return (\n <div\n id={modalId}\n className=\"canopy-gallery__modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={modalTitleId}\n aria-describedby={modalDescriptionId || undefined}\n tabIndex={-1}\n data-canopy-gallery-modal=\"true\"\n data-canopy-gallery-close={closeTargetId}\n >\n <div className=\"canopy-gallery__modal-scrim\">\n <div className=\"canopy-gallery__modal-actions\">\n <GalleryThumbnailNav\n items={navItems}\n activeModalId={modalId}\n groupName={`${navGroupName || \"canopy-gallery\"}-${modalId}`}\n />\n <Button\n className=\"canopy-gallery__modal-close\"\n href={`#${closeTargetId}`}\n label={closeButtonText}\n aria-label={closeButtonLabel}\n variant=\"secondary\"\n />\n </div>\n <div className=\"canopy-gallery__modal-panel\">\n <button\n type=\"button\"\n className=\"canopy-gallery__nav-button canopy-gallery__nav-button--prev\"\n aria-label=\"Scroll left through gallery thumbnails\"\n data-canopy-gallery-nav-prev=\"true\"\n >\n <span\n className=\"canopy-gallery__nav-button-icon\"\n aria-hidden=\"true\"\n role=\"presentation\"\n >\n {\"<\"}\n </span>\n <span className=\"canopy-gallery__visually-hidden\">\n Previous item\n </span>\n </button>\n <button\n type=\"button\"\n className=\"canopy-gallery__nav-button canopy-gallery__nav-button--next\"\n aria-label=\"Scroll right through gallery thumbnails\"\n data-canopy-gallery-nav-next=\"true\"\n >\n <span\n className=\"canopy-gallery__nav-button-icon\"\n aria-hidden=\"true\"\n role=\"presentation\"\n >\n {\">\"}\n </span>\n <span className=\"canopy-gallery__visually-hidden\">Next item</span>\n </button>\n <header className=\"canopy-gallery__modal-header\">\n <div className=\"canopy-gallery__modal-text\">\n {kicker ? (\n <p className=\"canopy-gallery__modal-kicker\">{kicker}</p>\n ) : null}\n <h3 id={modalTitleId} className=\"canopy-gallery__modal-title\">\n {modalTitle}\n </h3>\n {renderFlexibleContent(summary, {\n inlineTag: \"p\",\n blockTag: \"div\",\n className: \"canopy-gallery__modal-summary\",\n id: modalDescriptionId || undefined,\n })}\n {renderMetaList(\n props.meta,\n \"canopy-gallery__meta canopy-gallery__meta--modal\",\n )}\n {manifests && manifests.length\n ? manifests.map((manifest) => (\n <a key={manifest.id || manifest.href} href={manifest.href}>\n {manifest.title || manifest.href}\n </a>\n ))\n : null}\n </div>\n </header>\n <div className=\"canopy-gallery__modal-body\">{props.children}</div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction GalleryFigure({item}) {\n const {props, modalId, triggerLabel} = item;\n return (\n <figure\n className=\"canopy-gallery__item\"\n data-gallery-item-index={item.index}\n >\n <div className=\"canopy-gallery__media\">{renderPreview(props)}</div>\n <figcaption className=\"canopy-gallery__caption\">\n {buildCaptionContent(props)}\n </figcaption>\n <a\n className=\"canopy-gallery__trigger\"\n href={`#${modalId}`}\n aria-haspopup=\"dialog\"\n aria-controls={modalId}\n aria-label={triggerLabel}\n data-canopy-gallery-trigger={modalId}\n >\n <span className=\"canopy-gallery__trigger-label\">{triggerLabel}</span>\n </a>\n </figure>\n );\n}\n\nfunction GalleryThumbnailNav({items, activeModalId, groupName}) {\n if (!items || items.length < 2) return null;\n const radioGroup = groupName || \"canopy-gallery-nav\";\n return (\n <nav\n className=\"canopy-gallery__nav\"\n aria-label=\"Gallery navigation\"\n data-canopy-gallery-nav=\"true\"\n >\n <div\n className=\"canopy-gallery__nav-viewport\"\n data-canopy-gallery-nav-viewport=\"true\"\n >\n <ul\n className=\"canopy-gallery__nav-list\"\n role=\"list\"\n data-canopy-gallery-nav-track=\"true\"\n >\n {items.map((item, index) => {\n const optionId = `${radioGroup}-${item.modalId || index}`;\n const isActive = item.modalId === activeModalId;\n return (\n <li\n key={`${item.key}-nav`}\n className=\"canopy-gallery__nav-item\"\n data-canopy-gallery-nav-item=\"true\"\n data-canopy-gallery-nav-selected={isActive ? \"1\" : undefined}\n >\n <input\n type=\"radio\"\n className=\"canopy-gallery__nav-radio\"\n id={optionId}\n name={radioGroup}\n value={item.modalId}\n checked={isActive ? true : undefined}\n readOnly\n data-canopy-gallery-nav-option=\"true\"\n data-canopy-gallery-nav-modal={item.modalId}\n tabIndex={isActive ? 0 : -1}\n data-canopy-gallery-nav-selected={isActive ? \"1\" : undefined}\n />\n <label\n className=\"canopy-gallery__nav-link\"\n htmlFor={optionId}\n data-canopy-gallery-nav-active={isActive ? \"1\" : undefined}\n >\n <span className=\"canopy-gallery__nav-thumb\">\n {renderPreview(item.props)}\n </span>\n <span className=\"canopy-gallery__nav-label\">\n {item.props.title || `Item ${item.index + 1}`}\n </span>\n </label>\n </li>\n );\n })}\n </ul>\n </div>\n </nav>\n );\n}\n\nexport function GalleryContent({children, flex = false}) {\n const contentClassName = [\n \"canopy-gallery-item__content\",\n flex ? \"canopy-gallery-item__content_flex\" : null,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return <div className={contentClassName}>{children}</div>;\n}\n\nexport function GalleryItem() {\n return null;\n}\n\nGalleryItem.displayName = \"GalleryItem\";\n\nfunction normalizePopupSize(value) {\n const normalized = String(value || \"full\").toLowerCase();\n return normalized === \"window\" ? \"window\" : \"full\";\n}\n\nexport default function Gallery({\n children,\n id,\n title,\n description,\n popupSize = \"full\",\n order = \"default\",\n className = \"\",\n style = {},\n}) {\n const manifestMap = useReferencedManifestMap();\n const galleryId = id ? String(id) : nextGalleryInstanceId();\n const HeadingTag = \"h3\";\n const closeTargetId = `${galleryId}-close`;\n const childArray = React.Children.toArray(children);\n const items = childArray\n .map((child, index) => normalizeItem(child, index, galleryId, manifestMap))\n .filter(Boolean);\n\n if (!items.length) return null;\n\n const popupMode = normalizePopupSize(popupSize);\n const orderMode = normalizeOrder(order);\n const orderedItems = orderMode === \"random\" ? shuffleItems(items) : items;\n const rootClassName = [\n \"canopy-gallery\",\n popupMode === \"window\"\n ? \"canopy-gallery--popup-window\"\n : \"canopy-gallery--popup-full\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const navGroupName = `${galleryId}-nav`;\n\n return (\n <section className={rootClassName} style={style} data-canopy-gallery=\"true\">\n <div\n id={closeTargetId}\n className=\"canopy-gallery__close-anchor\"\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n {(title || description) && (\n <div className=\"canopy-gallery__header\">\n {title ? (\n <HeadingTag className=\"canopy-gallery__heading\">{title}</HeadingTag>\n ) : null}\n {description ? (\n <p className=\"canopy-gallery__description\">{description}</p>\n ) : null}\n </div>\n )}\n <div className=\"canopy-gallery__grid\">\n {orderedItems.map((item) => (\n <GalleryFigure key={item.key} item={item} />\n ))}\n </div>\n <div className=\"canopy-gallery__modals\">\n {orderedItems.map((item) => (\n <GalleryModal\n key={`${item.modalId}-modal`}\n item={item}\n closeTargetId={closeTargetId}\n navItems={orderedItems}\n navGroupName={navGroupName}\n />\n ))}\n </div>\n <script\n data-canopy-gallery-script=\"true\"\n dangerouslySetInnerHTML={{__html: INLINE_SCRIPT}}\n />\n </section>\n );\n}\n\nGallery.Item = GalleryItem;\nGallery.Content = GalleryContent;\n", "import React from 'react';\n\nexport default function MdxSearchResults(props) {\n let json = '{}';\n try { json = JSON.stringify(props || {}); } catch (_) { json = '{}'; }\n return (\n <div data-canopy-search-results=\"1\">\n <script type=\"application/json\" dangerouslySetInnerHTML={{ __html: json }} />\n </div>\n );\n}\n\n", "import React from 'react';\n\nexport default function SearchSummary(props) {\n let json = '{}';\n try { json = JSON.stringify(props || {}); } catch (_) { json = '{}'; }\n return (\n <div data-canopy-search-summary=\"1\">\n <script type=\"application/json\" dangerouslySetInnerHTML={{ __html: json }} />\n </div>\n );\n}\n\n", "import React from 'react';\n\nexport default function MdxSearchTabs(props) {\n let json = '{}';\n try { json = JSON.stringify(props || {}); } catch (_) { json = '{}'; }\n return (\n <div data-canopy-search-tabs=\"1\">\n <script type=\"application/json\" dangerouslySetInnerHTML={{ __html: json }} />\n </div>\n );\n}\n\n", "import React from 'react';\nimport SearchSummary from './SearchSummary.jsx';\nimport SearchTabs from './MdxSearchTabs.jsx';\nimport SearchResults from './MdxSearchResults.jsx';\n\nexport default function MdxSearch(props = {}) {\n const {\n layout,\n tabsProps = {},\n summaryProps = {},\n resultsProps = {},\n className = '',\n showTabs = true,\n showSummary = true,\n showResults = true,\n children,\n } = props || {};\n const resultsPayload =\n resultsProps && typeof resultsProps === 'object'\n ? { ...resultsProps }\n : {};\n if (typeof layout !== 'undefined' && layout !== null && !resultsPayload.layout) {\n resultsPayload.layout = layout;\n }\n const classes = ['canopy-search', className].filter(Boolean).join(' ');\n\n return (\n <section className={classes} data-canopy-search=\"1\">\n {showTabs ? <SearchTabs {...tabsProps} /> : null}\n {showSummary ? <SearchSummary {...summaryProps} /> : null}\n {showResults ? <SearchResults {...resultsPayload} /> : null}\n {children || null}\n </section>\n );\n}\n", "import React from 'react';\nimport SearchPanelForm, { resolveSearchPath } from '../search/SearchPanelForm.jsx';\nimport SearchPanelTeaserResults from '../search/SearchPanelTeaserResults.jsx';\nimport {useLocale} from \"../locale/index.js\";\n\n// SSR-safe placeholder for the search form modal, composed from SearchPanel parts.\n// This ensures a single JSX source of truth for form/panel markup.\nexport default function MdxSearchFormModal(props = {}) {\n const {\n placeholder: placeholderProp,\n hotkey = 'mod+k',\n maxResults = 8,\n groupOrder = ['work', 'page'],\n button = true, // kept for backward compat; ignored by teaser form\n buttonLabel: buttonLabelProp,\n label,\n searchPath = '/search',\n } = props || {};\n const {getString} = useLocale();\n const placeholder =\n placeholderProp != null\n ? placeholderProp\n : getString('common.phrases.placeholder_search', 'Search\u2026');\n const resolvedButtonLabel =\n buttonLabelProp != null\n ? buttonLabelProp\n : getString('common.nouns.search', 'Search');\n const text =\n typeof label === 'string' && label.trim() ? label.trim() : resolvedButtonLabel;\n const resolvedSearchPath = resolveSearchPath(searchPath);\n const data = { placeholder, hotkey, maxResults, groupOrder, label: text, searchPath: resolvedSearchPath };\n return (\n <div data-canopy-search-form className=\"flex-1 min-w-0\">\n <div className=\"relative w-full\">\n <SearchPanelForm placeholder={placeholder} buttonLabel={resolvedButtonLabel} label={label} searchPath={resolvedSearchPath} />\n <SearchPanelTeaserResults />\n </div>\n <script type=\"application/json\" dangerouslySetInnerHTML={{ __html: JSON.stringify(data) }} />\n </div>\n );\n}\n", "import React from \"react\";\nimport slugify from \"slugify\";\nimport {\n Label as CloverLabel,\n Metadata as CloverMetadata,\n RequiredStatement as CloverRequiredStatement,\n Summary as CloverSummary,\n} from \"@samvera/clover-iiif/primitives\";\n\nfunction hasInternationalValue(value) {\n if (!value || typeof value !== \"object\") return false;\n return Object.keys(value).some((key) => {\n const entries = value[key];\n return (\n Array.isArray(entries) &&\n entries.some((entry) => String(entry || \"\").trim().length > 0)\n );\n });\n}\n\nfunction ensureMetadata(items) {\n if (!Array.isArray(items)) return [];\n return items.filter((item) => {\n if (!item || typeof item !== \"object\") return false;\n const { label, value } = item;\n return hasInternationalValue(label) && hasInternationalValue(value);\n });\n}\n\nfunction getFirstIntlValue(value) {\n if (!value) return \"\";\n if (typeof value === \"string\") return value;\n try {\n const keys = Object.keys(value || {});\n for (const key of keys) {\n const arr = Array.isArray(value[key]) ? value[key] : [];\n for (const entry of arr) {\n if (entry == null) continue;\n const str = typeof entry === \"string\" ? entry : String(entry);\n if (str) return str;\n }\n }\n } catch (_) {}\n return \"\";\n}\n\nfunction normalizeMetadataLabelText(label) {\n if (!label) return \"\";\n return label.trim().replace(/[:\\s]+$/g, \"\").toLowerCase();\n}\n\nfunction normalizeMetadataLabelValue(value) {\n const raw = getFirstIntlValue(value);\n if (!raw) return \"\";\n return normalizeMetadataLabelText(String(raw));\n}\n\nfunction buildFacetLabelMap(manifest) {\n const source =\n manifest && Array.isArray(manifest.__canopyMetadataFacets)\n ? manifest.__canopyMetadataFacets\n : null;\n if (!source || !source.length) return null;\n const map = new Map();\n for (const entry of source) {\n if (!entry || !entry.normalized) continue;\n map.set(entry.normalized, entry);\n }\n return map.size ? map : null;\n}\n\nconst SLUG_OPTIONS = {lower: true, strict: true, trim: true};\n\nfunction toValueSlug(value) {\n if (value == null) return \"\";\n try {\n const raw = typeof value === \"string\" ? value : String(value);\n return slugify(raw, SLUG_OPTIONS);\n } catch (_) {\n return \"\";\n }\n}\n\nfunction normalizeBasePath(value) {\n if (value == null) return \"\";\n const raw = String(value).trim();\n if (!raw) return \"\";\n const prefixed = raw.startsWith(\"/\") ? raw : `/${raw}`;\n const cleaned = prefixed.replace(/\\/+$/, \"\");\n return cleaned === \"/\" ? \"\" : cleaned;\n}\n\nlet cachedBasePath = null;\nfunction readBasePath() {\n if (cachedBasePath !== null) return cachedBasePath;\n const candidates = [];\n try {\n if (typeof window !== \"undefined\" && window.CANOPY_BASE_PATH != null) {\n candidates.push(window.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n try {\n if (\n typeof globalThis !== \"undefined\" &&\n globalThis.CANOPY_BASE_PATH != null\n ) {\n candidates.push(globalThis.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n try {\n if (typeof process !== \"undefined\" && process.env) {\n candidates.push(process.env.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n for (const candidate of candidates) {\n const normalized = normalizeBasePath(candidate);\n if (normalized) {\n cachedBasePath = normalized;\n return cachedBasePath;\n }\n }\n cachedBasePath = \"\";\n return cachedBasePath;\n}\n\nfunction withBasePath(href) {\n try {\n const raw = typeof href === \"string\" ? href.trim() : \"\";\n if (!raw) return href;\n if (/^(?:[a-z][a-z0-9+.-]*:|\\/\\/|#)/i.test(raw)) return raw;\n if (!raw.startsWith(\"/\")) return raw;\n const base = readBasePath();\n if (!base) return raw;\n if (raw === base || raw.startsWith(`${base}/`)) return raw;\n return `${base}${raw}`;\n } catch (_) {\n return href;\n }\n}\n\nfunction buildFacetSearchHref(labelSlug, valueSlug) {\n if (!labelSlug || !valueSlug) return \"\";\n try {\n const params = new URLSearchParams();\n params.set(\"type\", \"work\");\n params.set(labelSlug, valueSlug);\n const path = `/search?${params.toString()}`;\n return withBasePath(path);\n } catch (_) {\n return \"\";\n }\n}\n\nfunction MetadataFacetLink(props) {\n const {value, facetSlug} = props;\n const text = value == null ? \"\" : String(value);\n if (!text) return null;\n const valueSlug = facetSlug ? toValueSlug(text) : \"\";\n const href = facetSlug && valueSlug ? buildFacetSearchHref(facetSlug, valueSlug) : \"\";\n if (!href) return text;\n return (\n <a\n href={href}\n data-canopy-facet-link=\"\"\n data-facet-label={facetSlug}\n data-facet-value={valueSlug}\n >\n {text}\n </a>\n );\n}\n\nfunction buildFacetCustomValueContent(items, manifest) {\n if (!Array.isArray(items) || !items.length || !manifest) return [];\n const facetMap = buildFacetLabelMap(manifest);\n if (!facetMap) return [];\n const seen = new Set();\n const custom = [];\n for (const item of items) {\n if (!item || !item.label) continue;\n const normalized = normalizeMetadataLabelValue(item.label);\n if (!normalized || seen.has(normalized)) continue;\n if (!facetMap.has(normalized)) continue;\n const facet = facetMap.get(normalized);\n seen.add(normalized);\n custom.push({\n matchingLabel: item.label,\n Content: <MetadataFacetLink facetSlug={facet.slug} />,\n });\n }\n return custom;\n}\n\nfunction normalizeMatchingLabel(label) {\n if (!label) return \"\";\n return normalizeMetadataLabelValue(label);\n}\n\nfunction mergeCustomValueContent(userContent, autoContent) {\n const merged = [];\n const seen = new Set();\n const addEntry = (entry, track = false) => {\n if (!entry || !entry.matchingLabel || !entry.Content) return;\n merged.push(entry);\n if (!track) return;\n const normalized = normalizeMatchingLabel(entry.matchingLabel);\n if (normalized) seen.add(normalized);\n };\n const userList = Array.isArray(userContent) ? userContent : [];\n userList.forEach((entry) => addEntry(entry, true));\n const autoList = Array.isArray(autoContent) ? autoContent : [];\n autoList.forEach((entry) => {\n const normalized = normalizeMatchingLabel(entry.matchingLabel);\n if (normalized && seen.has(normalized)) return;\n addEntry(entry, false);\n });\n return merged.length ? merged : undefined;\n}\n\nexport function Label({ manifest, label, ...rest }) {\n const intl = label || (manifest && manifest.label);\n if (!hasInternationalValue(intl)) return null;\n return <CloverLabel label={intl} {...rest} />;\n}\n\nexport function Summary({ manifest, summary, ...rest }) {\n const intl = summary || (manifest && manifest.summary);\n if (!hasInternationalValue(intl)) return null;\n return <CloverSummary summary={intl} {...rest} />;\n}\n\nexport function Metadata({ manifest, metadata, customValueContent, ...rest }) {\n const items = ensureMetadata(metadata || (manifest && manifest.metadata));\n if (!items.length) return null;\n const autoCustomContent = buildFacetCustomValueContent(items, manifest);\n const mergedCustomContent = mergeCustomValueContent(\n customValueContent,\n autoCustomContent\n );\n return (\n <CloverMetadata\n metadata={items}\n customValueContent={mergedCustomContent}\n {...rest}\n />\n );\n}\n\nexport function RequiredStatement({ manifest, requiredStatement, ...rest }) {\n const stmt = requiredStatement || (manifest && manifest.requiredStatement);\n if (\n !stmt ||\n !hasInternationalValue(stmt.label) ||\n !hasInternationalValue(stmt.value)\n ) {\n return null;\n }\n return <CloverRequiredStatement requiredStatement={stmt} {...rest} />;\n}\n\nexport const Primitives = {\n Label,\n Summary,\n Metadata,\n RequiredStatement,\n};\n\nexport default Primitives;\n", "import React from \"react\";\n\nexport function Id({title = \"IIIF Manifest\", id, ...props}) {\n return (\n <dl>\n <dt>{title}</dt>\n <dd>\n <a href={id}>{id}</a>\n </dd>\n </dl>\n );\n}\n", "import React from \"react\";\n\nfunction parseHighlightAttr(attr) {\n if (!attr) return new Set();\n const cleaned = String(attr || \"\").trim();\n if (!cleaned) return new Set();\n const segments = cleaned\n .split(\",\")\n .map((segment) => segment.trim())\n .filter(Boolean);\n const lines = new Set();\n for (const segment of segments) {\n if (!segment) continue;\n if (/^\\d+-\\d+$/.test(segment)) {\n const [startRaw, endRaw] = segment.split(\"-\");\n const start = Number(startRaw);\n const end = Number(endRaw);\n if (Number.isFinite(start) && Number.isFinite(end) && end >= start) {\n for (let i = start; i <= end; i += 1) {\n lines.add(i);\n }\n }\n } else if (/^\\d+$/.test(segment)) {\n const value = Number(segment);\n if (Number.isFinite(value)) lines.add(value);\n }\n }\n return lines;\n}\n\nfunction normaliseCode(children) {\n if (children == null) return \"\";\n if (typeof children === \"string\") return children;\n if (Array.isArray(children)) {\n return children\n .map((child) => (typeof child === \"string\" ? child : \"\"))\n .join(\"\");\n }\n if (typeof children === \"object\" && typeof children.toString === \"function\") {\n return children.toString();\n }\n return \"\";\n}\n\nconst baseLineStyle = {\n display: \"block\",\n padding: \"0.125rem 1.25rem\",\n boxSizing: \"border-box\",\n};\n\nconst highlightBaseStyle = {\n background:\n \"linear-gradient(to right, var(--color-accent-200, #bfdbfe), var(--color-accent-100, #bfdbfe))\",\n};\n\nexport default function DocsCodeBlock(props = {}) {\n const {children, ...rest} = props;\n const childArray = React.Children.toArray(children);\n const codeElement = childArray.find((el) => React.isValidElement(el));\n if (!codeElement || !codeElement.props) {\n return React.createElement(\"pre\", props);\n }\n\n const {\n className = \"\",\n children: codeChildren,\n ...codeProps\n } = codeElement.props;\n const rawCode = normaliseCode(codeChildren);\n const trimmedCode = rawCode.endsWith(\"\\n\") ? rawCode.slice(0, -1) : rawCode;\n const lines = trimmedCode.split(\"\\n\");\n const filename = codeProps[\"data-filename\"] || \"\";\n const highlightAttr = codeProps[\"data-highlight\"] || \"\";\n const highlightSet = parseHighlightAttr(highlightAttr);\n const copyAttr = codeProps[\"data-copy\"];\n const enableCopy =\n copyAttr !== undefined\n ? copyAttr === true || copyAttr === \"true\" || copyAttr === \"\"\n : false;\n\n const [copied, setCopied] = React.useState(false);\n const buttonRef = React.useRef(null);\n\n const handleCopy = React.useCallback(async () => {\n const text = trimmedCode;\n try {\n if (\n typeof navigator !== \"undefined\" &&\n navigator.clipboard &&\n navigator.clipboard.writeText\n ) {\n await navigator.clipboard.writeText(text);\n } else {\n const textarea = document.createElement(\"textarea\");\n textarea.value = text;\n textarea.setAttribute(\"readonly\", \"\");\n textarea.style.position = \"absolute\";\n textarea.style.left = \"-9999px\";\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textarea);\n }\n setCopied(true);\n setTimeout(() => setCopied(false), 5000);\n } catch (_) {\n setCopied(false);\n }\n }, [trimmedCode]);\n\n React.useEffect(() => {\n if (buttonRef.current) {\n buttonRef.current.setAttribute(\"data-docs-copy-hydrated\", \"true\");\n }\n }, []);\n\n React.useEffect(() => {\n if (!buttonRef.current) return;\n if (copied) buttonRef.current.setAttribute(\"data-docs-copy-active\", \"true\");\n else buttonRef.current.removeAttribute(\"data-docs-copy-active\");\n }, [copied]);\n\n const containerStyle = {\n borderRadius: \"12px\",\n overflow: \"hidden\",\n margin: \"1.5rem 0\",\n background: \"var(--color-accent-100)\",\n fontFamily: \"var(--font-mono)\",\n fontSize: \"0.8333rem\",\n };\n\n const headerStyle = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"1rem 1.25rem\",\n fontWeight: 700,\n background: \"var(--color-accent-100)\",\n borderBottom: \"1px solid var(--color-accent-200)\",\n color: \"var(--color-gray-900)\",\n };\n\n const preStyle = {\n margin: 0,\n background: \"var(--color-accent-100)\",\n color: \"var(--color-accent-800)\",\n lineHeight: 1.55,\n padding: \"1rem 0\",\n overflowX: \"auto\",\n };\n\n const buttonStyle = {\n border: \"1px solid var(--color-accent-200, )\",\n borderRadius: \"6px\",\n padding: \"0.25rem 0.65rem\",\n fontSize: \"0.7rem\",\n fontWeight: 600,\n color: \"var(--color-accent-default)\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0.3rem\",\n background: \"var(--docs-copy-bg, rgba(255,255,255,0.08))\",\n transform: \"var(--docs-copy-transform, scale(1))\",\n transition:\n \"transform 150ms ease, background-color 150ms ease, color 150ms ease\",\n };\n\n const codeStyle = {\n display: \"block\",\n padding: 0,\n };\n\n const lineContentStyle = {\n whiteSpace: \"pre\",\n display: \"inline\",\n };\n\n const showFilename = Boolean(filename);\n const showHeader = showFilename || enableCopy;\n\n const {style: preStyleOverride, className: preClassName, ...preRest} = rest;\n const mergedPreStyle = Object.assign({}, preStyle, preStyleOverride || {});\n\n const lineElements = lines.map((line, index) => {\n const lineNumber = index + 1;\n const highlight = highlightSet.has(lineNumber);\n const style = highlight\n ? {...baseLineStyle, ...highlightBaseStyle}\n : baseLineStyle;\n const displayLine = line === \"\" ? \" \" : line;\n return React.createElement(\n \"span\",\n {\n key: lineNumber,\n style,\n \"data-docs-code-line\": line,\n },\n React.createElement(\"span\", {style: lineContentStyle}, displayLine),\n );\n });\n\n return React.createElement(\n \"div\",\n {\n style: containerStyle,\n \"data-docs-code-block\": \"true\",\n },\n showHeader\n ? React.createElement(\n \"div\",\n {style: headerStyle},\n React.createElement(\"span\", null, showFilename ? filename : null),\n enableCopy\n ? React.createElement(\n \"button\",\n {\n ref: buttonRef,\n type: \"button\",\n onClick: handleCopy,\n \"aria-live\": \"polite\",\n \"aria-label\": copied\n ? \"Copied to clipboard\"\n : \"Copy code to clipboard\",\n \"data-docs-copy-button\": \"true\",\n style: buttonStyle,\n },\n React.createElement(\"span\", null, \"Copy\"),\n React.createElement(\n \"span\",\n {\n \"aria-hidden\": \"true\",\n \"data-docs-copy-icon\": \"true\",\n },\n \"\\u2713\",\n ),\n )\n : null,\n )\n : null,\n enableCopy\n ? React.createElement(\"textarea\", {\n \"data-docs-copy-source\": \"true\",\n tabIndex: -1,\n readOnly: true,\n \"aria-hidden\": \"true\",\n defaultValue: trimmedCode,\n style: {\n position: \"absolute\",\n left: \"-9999px\",\n width: 1,\n height: 1,\n opacity: 0,\n pointerEvents: \"none\",\n },\n })\n : null,\n React.createElement(\n \"pre\",\n {...preRest, className: preClassName, style: mergedPreStyle},\n React.createElement(\"code\", {style: codeStyle}, lineElements),\n ),\n );\n}\n", "import React from 'react';\n\nexport default function MarkdownTable({ className = '', ...rest }) {\n const merged = ['markdown-table', className].filter(Boolean).join(' ');\n return (\n <div className=\"markdown-table__frame\">\n <table className={merged} {...rest} />\n </div>\n );\n}\n", "import React from \"react\";\n\nexport function CanopyDiagram() {\n return (\n <div className=\"canopy-diagram\">\n <section className=\"canopy-diagram__section canopy-diagram__section--collections\">\n <h3>IIIF Providers</h3>\n <span className=\"canopy-diagram__section-summary\">\n Source collections contribute 45 manifests while 5 manifests are\n directly retrieved as-is via IIIF endpoints.\n </span>\n <div className=\"canopy-diagram__grid\">\n <article>\n <h4>Collection A</h4>\n <ul>\n <li>30 Manifests</li>\n <li>\n <em>Manuscripts</em>\n </li>\n </ul>\n </article>\n <article>\n <h4>Collection B</h4>\n <ul>\n <li>15 Manifests</li>\n <li>\n <em>Portraits</em>\n </li>\n </ul>\n </article>\n <article>\n <h4>Manifests (direct)</h4>\n <ul>\n <li>5 Manifests</li>\n <li>\n <em>Scrapbooks</em>\n </li>\n </ul>\n </article>\n </div>\n </section>\n\n <div className=\"canopy-diagram__arrow\" aria-hidden=\"true\">\n <span className=\"canopy-diagram__arrow-line\" />\n <span className=\"canopy-diagram__arrow-head\" />\n </div>\n\n <section className=\"canopy-diagram__section canopy-diagram__section--build\">\n <h3>Canopy Build Process</h3>\n <span className=\"canopy-diagram__section-summary\">\n Canopy retrieves collections and syncs all manifests, page content,\n and annotations before bundling the site.\n </span>\n <div className=\"canopy-diagram__grid\">\n <article>\n <h4>Automated content</h4>\n <ul>\n <li>50 manifests \u2192 50 work pages</li>\n <li>One page per manifest</li>\n <li>Customize page layout</li>\n </ul>\n </article>\n <article>\n <h4>Contextual content</h4>\n <ul>\n <li>Markdown & MDX pages</li>\n <li>Author narratives</li>\n <li>Reference manifests inline</li>\n </ul>\n </article>\n <article>\n <h4>Search index</h4>\n <ul>\n <li>Combines works + pages</li>\n <li>Customize result layout</li>\n <li>Optional annotations</li>\n </ul>\n </article>\n </div>\n </section>\n\n <div className=\"canopy-diagram__arrow\" aria-hidden=\"true\">\n <span className=\"canopy-diagram__arrow-line\" />\n <span className=\"canopy-diagram__arrow-head\" />\n </div>\n\n <section className=\"canopy-diagram__section canopy-diagram__section--output\">\n <h3>Static Digital Project</h3>\n <span className=\"canopy-diagram__section-summary\">\n The output is a lightweight bundle of HTML, CSS, JS, and JSON assets\n that can deploy anywhere.\n </span>\n <div className=\"canopy-diagram__grid\">\n <article>\n <h4>Work pages</h4>\n <ul>\n <li>50 generated HTML pages</li>\n <li>Each links back to source manifests</li>\n <li>Styled with Canopy components</li>\n </ul>\n </article>\n <article>\n <h4>Custom pages</h4>\n <ul>\n <li>Markdown & MDX-authored content</li>\n <li>Reusable layouts for narratives</li>\n <li>Embed IIIF media & interstitials</li>\n </ul>\n </article>\n <article>\n <h4>Search bundle</h4>\n <ul>\n <li>Static FlexSearch index</li>\n <li>Works + pages share records</li>\n <li>Optional annotation dataset</li>\n </ul>\n </article>\n </div>\n </section>\n </div>\n );\n}\n", "/* eslint-disable import/namespace */\nimport React from \"react\";\nimport * as radixColors from \"@radix-ui/colors\";\n\nconst COLOR_SCALES = [\n {label: \"Accent\", prefix: \"--color-accent\"},\n {label: \"Gray\", prefix: \"--color-gray\"},\n];\n\nconst COLOR_STOPS = [\n \"50\",\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\",\n];\n\nconst ACCENT_COLOR_NAMES = [\n \"gray\",\n \"gold\",\n \"bronze\",\n \"brown\",\n \"yellow\",\n \"amber\",\n \"orange\",\n \"tomato\",\n \"red\",\n \"ruby\",\n \"crimson\",\n \"pink\",\n \"plum\",\n \"purple\",\n \"violet\",\n \"iris\",\n \"indigo\",\n \"blue\",\n \"cyan\",\n \"teal\",\n \"jade\",\n \"green\",\n \"grass\",\n \"lime\",\n \"mint\",\n \"sky\",\n];\n\nconst GRAY_COLOR_NAMES = [\"gray\", \"mauve\", \"slate\", \"sage\", \"olive\", \"sand\"];\nconst APPEARANCES = [\"light\", \"dark\"];\nconst DEFAULTS = {\n appearance: \"light\",\n accentColor: \"indigo\",\n grayColor: \"slate\",\n};\nconst LEVELS = COLOR_STOPS;\nconst STEP_MAP = {\n 50: 1,\n 100: 3,\n 200: 4,\n 300: 6,\n 400: 7,\n 500: 8,\n 600: 9,\n 700: 10,\n 800: 11,\n 900: 12,\n};\n\nconst Section = ({title, description, children}) => (\n <div className=\"canopy-theme-showcase__section\">\n <h3 className=\"canopy-theme-showcase__section-title\">{title}</h3>\n {description ? (\n <p className=\"canopy-theme-showcase__section-description\">\n {description}\n </p>\n ) : null}\n {children}\n </div>\n);\n\nconst ColorScaleRow = ({label, prefix}) => (\n <div className=\"canopy-theme-showcase__scale-row\">\n <div className=\"canopy-theme-showcase__scale-label\">\n <strong>{label}</strong>\n </div>\n <div className=\"canopy-theme-showcase__scale-track\">\n {COLOR_STOPS.map((stop) => (\n <div\n key={`${label}-${stop}`}\n className=\"canopy-theme-showcase__scale-stop\"\n >\n <span\n className=\"canopy-theme-showcase__scale-chip\"\n style={{backgroundColor: `var(${prefix}-${stop})`}}\n />\n <span className=\"canopy-theme-showcase__scale-token\">{stop}</span>\n </div>\n ))}\n </div>\n </div>\n);\n\nconst AVAILABLE = new Set(\n Object.keys(radixColors).filter(\n (key) =>\n /^[a-z]+$/i.test(key) && radixColors[key] && radixColors[key][`${key}1`]\n )\n);\n\nfunction normalizeAppearance(raw) {\n if (!raw) return \"light\";\n return String(raw).trim().toLowerCase() === \"dark\" ? \"dark\" : \"light\";\n}\n\nfunction darkenHex(hex, amount = 0.15) {\n if (!hex) return hex;\n const normalized = hex.replace(\"#\", \"\");\n if (!/^[0-9a-fA-F]{6}$/.test(normalized)) return hex;\n const num = parseInt(normalized, 16);\n const r = (num >> 16) & 255;\n const g = (num >> 8) & 255;\n const b = num & 255;\n const clamp = (value) => Math.max(0, Math.min(255, Math.round(value)));\n const toHex = (value) => clamp(value).toString(16).padStart(2, \"0\");\n const factor = 1 - amount;\n return `#${toHex(r * factor)}${toHex(g * factor)}${toHex(b * factor)}`;\n}\n\nfunction lightenHex(hex, amount = 0.15) {\n if (!hex) return hex;\n const normalized = hex.replace(\"#\", \"\");\n if (!/^[0-9a-fA-F]{6}$/.test(normalized)) return hex;\n const num = parseInt(normalized, 16);\n const r = (num >> 16) & 255;\n const g = (num >> 8) & 255;\n const b = num & 255;\n const clamp = (value) => Math.max(0, Math.min(255, Math.round(value)));\n const toHex = (value) => clamp(value).toString(16).padStart(2, \"0\");\n const adjust = (value) => value + (255 - value) * amount;\n return `#${toHex(adjust(r))}${toHex(adjust(g))}${toHex(adjust(b))}`;\n}\n\nfunction adjustSaturation(hex, amount = 0.15) {\n if (!hex) return hex;\n const normalized = hex.replace(\"#\", \"\");\n if (!/^[0-9a-fA-F]{6}$/.test(normalized)) return hex;\n const num = parseInt(normalized, 16);\n let r = ((num >> 16) & 255) / 255;\n let g = ((num >> 8) & 255) / 255;\n let b = (num & 255) / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n default:\n h = (r - g) / d + 4;\n }\n h /= 6;\n }\n const delta = Number(amount);\n if (!Number.isFinite(delta) || delta === 0) return hex;\n s = Math.max(0, Math.min(1, s + delta));\n const hueToRgb = (p, q, t) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n let rOut;\n let gOut;\n let bOut;\n if (s === 0) {\n rOut = gOut = bOut = l;\n } else {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n rOut = hueToRgb(p, q, h + 1 / 3);\n gOut = hueToRgb(p, q, h);\n bOut = hueToRgb(p, q, h - 1 / 3);\n }\n const toHex = (value) =>\n Math.round(Math.max(0, Math.min(1, value)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n return `#${toHex(rOut)}${toHex(gOut)}${toHex(bOut)}`;\n}\n\nfunction mixHexColors(colorA, colorB, amount = 0.5) {\n const normalize = (hex) =>\n hex && /^[0-9a-fA-F]{6}$/.test(hex.replace(\"#\", \"\"))\n ? hex.replace(\"#\", \"\")\n : null;\n const first = normalize(colorA);\n const second = normalize(colorB);\n if (!first || !second) return colorA || colorB || null;\n const a = parseInt(first, 16);\n const b = parseInt(second, 16);\n const clampAmount = Math.max(0, Math.min(1, Number(amount) || 0));\n const mixChannel = (shift) =>\n Math.round(\n ((a >> shift) & 255) +\n (((b >> shift) & 255) - ((a >> shift) & 255)) * clampAmount\n );\n const toHex = (value) => value.toString(16).padStart(2, \"0\");\n const r = mixChannel(16);\n const g = mixChannel(8);\n const bl = mixChannel(0);\n return `#${toHex(r)}${toHex(g)}${toHex(bl)}`;\n}\n\nfunction normalizeDarkenAmount(raw) {\n const value = Number(raw);\n if (!Number.isFinite(value)) return null;\n return Math.min(0.95, Math.max(0, value));\n}\n\nfunction resolveRadixPalette(name, appearance) {\n if (!name || !AVAILABLE.has(name)) return null;\n const paletteKey = appearance === \"dark\" ? `${name}Dark` : name;\n const palette = radixColors[paletteKey];\n if (palette && palette[`${name}1`]) return palette;\n const fallback = radixColors[name];\n return fallback && fallback[`${name}1`] ? fallback : null;\n}\n\nfunction toTailwindScale(name, options = {}) {\n if (!name || !AVAILABLE.has(name)) return null;\n const appearance = normalizeAppearance(options.appearance);\n const palette = resolveRadixPalette(name, appearance);\n if (!palette) return null;\n const scale = {};\n for (const lvl of LEVELS) {\n const radixStep = STEP_MAP[lvl];\n const key = `${name}${radixStep}`;\n const value = palette[key];\n if (!value) return null;\n scale[lvl] = value;\n }\n return scale;\n}\n\nfunction buildPreviewData() {\n const data = {\n appearances: APPEARANCES,\n accentColors: ACCENT_COLOR_NAMES,\n grayColors: GRAY_COLOR_NAMES,\n defaults: DEFAULTS,\n scales: {},\n };\n for (const appearance of APPEARANCES) {\n const accentScales = {};\n const grayScales = {};\n for (const accent of ACCENT_COLOR_NAMES) {\n const scale = toTailwindScale(accent, {appearance});\n if (scale) accentScales[accent] = scale;\n }\n for (const gray of GRAY_COLOR_NAMES) {\n const scale = toTailwindScale(gray, {\n appearance,\n darken900Amount: 0.4,\n saturate700: false,\n });\n if (scale) grayScales[gray] = scale;\n }\n data.scales[appearance] = {accent: accentScales, gray: grayScales};\n }\n return data;\n}\n\nconst PREVIEW_DATA = buildPreviewData();\n\nfunction encodeJson(value) {\n return JSON.stringify(value).replace(/</g, \"\\\\u003c\");\n}\n\nconst ColorsLabeled = ({colors, type, getRadixSwatch}) => (\n <div className=\"canopy-theme-showcase__swatch-grid\">\n {colors.map((name) => {\n const colorValue = getRadixSwatch(name);\n return (\n <button\n key={`${type}-${name}`}\n type=\"button\"\n className=\"canopy-theme-showcase__swatch\"\n data-theme-swatch\n data-theme-swatch-type={type}\n data-theme-swatch-value={name}\n aria-pressed=\"false\"\n >\n <span\n className=\"canopy-theme-showcase__swatch-chip\"\n style={{background: colorValue || \"var(--color-gray-200)\"}}\n />\n <span className=\"canopy-theme-showcase__swatch-label\">{name}</span>\n </button>\n );\n })}\n </div>\n);\n\nexport default function ThemeShowcase() {\n const accentColors = ACCENT_COLOR_NAMES;\n const grayColors = GRAY_COLOR_NAMES;\n\n const getRadixSwatch = (name) => {\n if (!name) return null;\n const scale = radixColors[name];\n if (!scale) return null;\n return scale[`${name}9`] || Object.values(scale)[8];\n };\n\n const styles = `\n .canopy-theme-showcase {\n margin: 2.618rem 0;\n }\n .canopy-theme-showcase__appearance-buttons {\n display: inline-flex;\n gap: 0.35rem;\n flex-wrap: wrap;\n }\n .canopy-theme-showcase__appearance-button {\n border-radius: 999px;\n border: 1px solid var(--color-gray-300);\n background: var(--color-gray-50);\n color: var(--color-gray-900);\n padding: 0.3rem 0.9rem;\n font-size: 0.85rem;\n cursor: pointer;\n transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;\n }\n .canopy-theme-showcase__appearance-button.is-active {\n border-color: var(--color-accent-default);\n color: var(--color-accent-default);\n background: color-mix(in srgb, var(--color-accent-100) 65%, transparent);\n }\n .canopy-theme-showcase__reset {\n border-radius: 999px;\n border: 1px solid var(--color-gray-400);\n background: transparent;\n padding: 0.35rem 1.2rem;\n font-size: 0.85rem;\n cursor: pointer;\n color: var(--color-gray-900);\n }\n .canopy-theme-showcase__section {\n margin: 2.618rem 0;\n }\n .canopy-theme-showcase__section:first-of-type {\n margin-top: 0;\n }\n .canopy-theme-showcase__section:last-of-type {\n margin-bottom: 0;\n }\n .canopy-theme-showcase__section-title {\n margin: 0 0 0.382rem;\n font-size: 1.382rem;\n }\n .canopy-theme-showcase__section-description {\n margin: 0 0 1rem;\n color: var(--color-gray-muted);\n line-height: 1.5;\n }\n .canopy-theme-showcase__scale-group {\n display: flex;\n flex-direction: column;\n gap: 1.618rem;\n }\n .canopy-theme-showcase__scale-row {\n display: flex;\n gap: 1rem;\n align-items: center;\n flex-wrap: wrap;\n }\n .canopy-theme-showcase__scale-label {\n min-width: 90px;\n font-size: 0.9222rem;\n }\n .canopy-theme-showcase__scale-track {\n display: flex;\n flex: 1;\n overflow: auto;\n }\n .canopy-theme-showcase__scale-stop {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.382rem;\n overflow: hidden;\n\n &:first-child {\n .canopy-theme-showcase__scale-chip {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n }\n }\n\n &:last-child {\n .canopy-theme-showcase__scale-chip {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n }\n }\n }\n .canopy-theme-showcase__scale-chip {\n display: block;\n width: 100%;\n min-height: 2.618rem;\n }\n .canopy-theme-showcase__scale-token {\n font-size: 0.8333rem;\n }\n .canopy-theme-showcase__swatch-grid {\n display: flex;\n flex-wrap: wrap;\n gap: 1rem;\n }\n .canopy-theme-showcase__swatch {\n width: 5.5rem;\n border: 1px solid var(--color-gray-200);\n border-radius: 0.75rem;\n background: var(--color-gray-50);\n padding: 0.5rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.35rem;\n cursor: pointer;\n transition: border-color 0.2s ease, box-shadow 0.2s ease background 0.2s ease, color 0.2s ease;\n font-weight: 300;\n }\n .canopy-theme-showcase__swatch:focus-visible {\n outline: 2px solid var(--color-accent-default);\n outline-offset: 3px;\n }\n .canopy-theme-showcase__swatch[data-swatch-active=\"true\"] {\n border-color: var(--color-accent-default);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-accent-200) 70%, transparent);\n background: linear-gradient(135deg, var(--color-accent-50), var(--color-accent-100));\n color: var(--color-gray-900);\n font-weight: 400;\n }\n .canopy-theme-showcase__swatch[data-swatch-active=\"true\"][data-theme-swatch-type=\"gray\"] {\n border-color: var(--color-gray-default);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-gray-200) 70%, transparent);\n background: linear-gradient(135deg, var(--color-gray-50), var(--color-gray-100));\n }\n .canopy-theme-showcase__swatch-chip {\n width: 100%;\n height: 2.618rem;\n border-radius: 0.5rem;\n }\n .canopy-theme-showcase__swatch-label {\n font-size: 0.9222rem;\n margin-top: 0.1rem;\n }\n .canopy-theme-showcase__swatch-controls { display: none; }\n .canopy-theme-showcase__clear-button { display: none; }\n `;\n\n return (\n <div className=\"canopy-theme-showcase\" data-theme-showcase>\n <style dangerouslySetInnerHTML={{__html: styles}} />\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n gap: \"1rem\",\n marginBottom: \"1rem\",\n }}\n >\n <Section\n title=\"Appearance\"\n description=\"Pick the base light or dark mode for the theme preview.\"\n >\n <div className=\"canopy-theme-showcase__appearance-buttons\">\n {[\"light\", \"dark\"].map((mode) => {\n const label = `${mode.charAt(0).toUpperCase()}${mode.slice(1)}`;\n const baseClass = \"canopy-theme-showcase__appearance-button\";\n const isDefault = mode === DEFAULTS.appearance;\n const className = isDefault\n ? `${baseClass} is-active`\n : baseClass;\n return (\n <button\n key={mode}\n type=\"button\"\n className={className}\n data-theme-appearance={mode}\n >\n {label}\n </button>\n );\n })}\n </div>\n </Section>\n <button\n type=\"button\"\n className=\"canopy-theme-showcase__reset\"\n data-theme-reset\n >\n Reset\n </button>\n </div>\n <Section\n title=\"Color scales\"\n description=\"Accent and gray ramps from the active theme.\"\n >\n <div style={{display: \"flex\", flexDirection: \"column\", gap: \"1.5rem\"}}>\n {COLOR_SCALES.map((scale) => (\n <ColorScaleRow\n key={scale.label}\n label={scale.label}\n prefix={scale.prefix}\n />\n ))}\n </div>\n </Section>\n <Section\n title=\"Accent color palette options\"\n description=\"Click a swatch to temporarily override the accent palette.\"\n >\n <ColorsLabeled\n colors={accentColors}\n type=\"accent\"\n getRadixSwatch={getRadixSwatch}\n />\n </Section>\n <Section\n title=\"Gray color palette options\"\n description=\"Click a swatch to preview the neutral ramp for surfaces and text.\"\n >\n <ColorsLabeled\n colors={grayColors}\n type=\"gray\"\n getRadixSwatch={getRadixSwatch}\n />\n </Section>\n <script\n type=\"application/json\"\n data-theme-showcase-values\n dangerouslySetInnerHTML={{__html: encodeJson(PREVIEW_DATA)}}\n />\n </div>\n );\n}\n", "const grayDark = {\n gray1: \"#111111\",\n gray2: \"#191919\",\n gray3: \"#222222\",\n gray4: \"#2a2a2a\",\n gray5: \"#313131\",\n gray6: \"#3a3a3a\",\n gray7: \"#484848\",\n gray8: \"#606060\",\n gray9: \"#6e6e6e\",\n gray10: \"#7b7b7b\",\n gray11: \"#b4b4b4\",\n gray12: \"#eeeeee\",\n};\nconst grayDarkA = {\n grayA1: \"#00000000\",\n grayA2: \"#ffffff09\",\n grayA3: \"#ffffff12\",\n grayA4: \"#ffffff1b\",\n grayA5: \"#ffffff22\",\n grayA6: \"#ffffff2c\",\n grayA7: \"#ffffff3b\",\n grayA8: \"#ffffff55\",\n grayA9: \"#ffffff64\",\n grayA10: \"#ffffff72\",\n grayA11: \"#ffffffaf\",\n grayA12: \"#ffffffed\",\n};\nconst grayDarkP3 = {\n gray1: \"color(display-p3 0.067 0.067 0.067)\",\n gray2: \"color(display-p3 0.098 0.098 0.098)\",\n gray3: \"color(display-p3 0.135 0.135 0.135)\",\n gray4: \"color(display-p3 0.163 0.163 0.163)\",\n gray5: \"color(display-p3 0.192 0.192 0.192)\",\n gray6: \"color(display-p3 0.228 0.228 0.228)\",\n gray7: \"color(display-p3 0.283 0.283 0.283)\",\n gray8: \"color(display-p3 0.375 0.375 0.375)\",\n gray9: \"color(display-p3 0.431 0.431 0.431)\",\n gray10: \"color(display-p3 0.484 0.484 0.484)\",\n gray11: \"color(display-p3 0.706 0.706 0.706)\",\n gray12: \"color(display-p3 0.933 0.933 0.933)\",\n};\nconst grayDarkP3A = {\n grayA1: \"color(display-p3 0 0 0 / 0)\",\n grayA2: \"color(display-p3 1 1 1 / 0.034)\",\n grayA3: \"color(display-p3 1 1 1 / 0.071)\",\n grayA4: \"color(display-p3 1 1 1 / 0.105)\",\n grayA5: \"color(display-p3 1 1 1 / 0.134)\",\n grayA6: \"color(display-p3 1 1 1 / 0.172)\",\n grayA7: \"color(display-p3 1 1 1 / 0.231)\",\n grayA8: \"color(display-p3 1 1 1 / 0.332)\",\n grayA9: \"color(display-p3 1 1 1 / 0.391)\",\n grayA10: \"color(display-p3 1 1 1 / 0.445)\",\n grayA11: \"color(display-p3 1 1 1 / 0.685)\",\n grayA12: \"color(display-p3 1 1 1 / 0.929)\",\n};\nconst mauveDark = {\n mauve1: \"#121113\",\n mauve2: \"#1a191b\",\n mauve3: \"#232225\",\n mauve4: \"#2b292d\",\n mauve5: \"#323035\",\n mauve6: \"#3c393f\",\n mauve7: \"#49474e\",\n mauve8: \"#625f69\",\n mauve9: \"#6f6d78\",\n mauve10: \"#7c7a85\",\n mauve11: \"#b5b2bc\",\n mauve12: \"#eeeef0\",\n};\nconst mauveDarkA = {\n mauveA1: \"#00000000\",\n mauveA2: \"#f5f4f609\",\n mauveA3: \"#ebeaf814\",\n mauveA4: \"#eee5f81d\",\n mauveA5: \"#efe6fe25\",\n mauveA6: \"#f1e6fd30\",\n mauveA7: \"#eee9ff40\",\n mauveA8: \"#eee7ff5d\",\n mauveA9: \"#eae6fd6e\",\n mauveA10: \"#ece9fd7c\",\n mauveA11: \"#f5f1ffb7\",\n mauveA12: \"#fdfdffef\",\n};\nconst mauveDarkP3 = {\n mauve1: \"color(display-p3 0.07 0.067 0.074)\",\n mauve2: \"color(display-p3 0.101 0.098 0.105)\",\n mauve3: \"color(display-p3 0.138 0.134 0.144)\",\n mauve4: \"color(display-p3 0.167 0.161 0.175)\",\n mauve5: \"color(display-p3 0.196 0.189 0.206)\",\n mauve6: \"color(display-p3 0.232 0.225 0.245)\",\n mauve7: \"color(display-p3 0.286 0.277 0.302)\",\n mauve8: \"color(display-p3 0.383 0.373 0.408)\",\n mauve9: \"color(display-p3 0.434 0.428 0.467)\",\n mauve10: \"color(display-p3 0.487 0.48 0.519)\",\n mauve11: \"color(display-p3 0.707 0.7 0.735)\",\n mauve12: \"color(display-p3 0.933 0.933 0.94)\",\n};\nconst mauveDarkP3A = {\n mauveA1: \"color(display-p3 0 0 0 / 0)\",\n mauveA2: \"color(display-p3 0.996 0.992 1 / 0.034)\",\n mauveA3: \"color(display-p3 0.937 0.933 0.992 / 0.077)\",\n mauveA4: \"color(display-p3 0.957 0.918 0.996 / 0.111)\",\n mauveA5: \"color(display-p3 0.937 0.906 0.996 / 0.145)\",\n mauveA6: \"color(display-p3 0.953 0.925 0.996 / 0.183)\",\n mauveA7: \"color(display-p3 0.945 0.929 1 / 0.246)\",\n mauveA8: \"color(display-p3 0.937 0.918 1 / 0.361)\",\n mauveA9: \"color(display-p3 0.933 0.918 1 / 0.424)\",\n mauveA10: \"color(display-p3 0.941 0.925 1 / 0.479)\",\n mauveA11: \"color(display-p3 0.965 0.961 1 / 0.712)\",\n mauveA12: \"color(display-p3 0.992 0.992 1 / 0.937)\",\n};\nconst slateDark = {\n slate1: \"#111113\",\n slate2: \"#18191b\",\n slate3: \"#212225\",\n slate4: \"#272a2d\",\n slate5: \"#2e3135\",\n slate6: \"#363a3f\",\n slate7: \"#43484e\",\n slate8: \"#5a6169\",\n slate9: \"#696e77\",\n slate10: \"#777b84\",\n slate11: \"#b0b4ba\",\n slate12: \"#edeef0\",\n};\nconst slateDarkA = {\n slateA1: \"#00000000\",\n slateA2: \"#d8f4f609\",\n slateA3: \"#ddeaf814\",\n slateA4: \"#d3edf81d\",\n slateA5: \"#d9edfe25\",\n slateA6: \"#d6ebfd30\",\n slateA7: \"#d9edff40\",\n slateA8: \"#d9edff5d\",\n slateA9: \"#dfebfd6d\",\n slateA10: \"#e5edfd7b\",\n slateA11: \"#f1f7feb5\",\n slateA12: \"#fcfdffef\",\n};\nconst slateDarkP3 = {\n slate1: \"color(display-p3 0.067 0.067 0.074)\",\n slate2: \"color(display-p3 0.095 0.098 0.105)\",\n slate3: \"color(display-p3 0.13 0.135 0.145)\",\n slate4: \"color(display-p3 0.156 0.163 0.176)\",\n slate5: \"color(display-p3 0.183 0.191 0.206)\",\n slate6: \"color(display-p3 0.215 0.226 0.244)\",\n slate7: \"color(display-p3 0.265 0.28 0.302)\",\n slate8: \"color(display-p3 0.357 0.381 0.409)\",\n slate9: \"color(display-p3 0.415 0.431 0.463)\",\n slate10: \"color(display-p3 0.469 0.483 0.514)\",\n slate11: \"color(display-p3 0.692 0.704 0.728)\",\n slate12: \"color(display-p3 0.93 0.933 0.94)\",\n};\nconst slateDarkP3A = {\n slateA1: \"color(display-p3 0 0 0 / 0)\",\n slateA2: \"color(display-p3 0.875 0.992 1 / 0.034)\",\n slateA3: \"color(display-p3 0.882 0.933 0.992 / 0.077)\",\n slateA4: \"color(display-p3 0.882 0.953 0.996 / 0.111)\",\n slateA5: \"color(display-p3 0.878 0.929 0.996 / 0.145)\",\n slateA6: \"color(display-p3 0.882 0.949 0.996 / 0.183)\",\n slateA7: \"color(display-p3 0.882 0.929 1 / 0.246)\",\n slateA8: \"color(display-p3 0.871 0.937 1 / 0.361)\",\n slateA9: \"color(display-p3 0.898 0.937 1 / 0.42)\",\n slateA10: \"color(display-p3 0.918 0.945 1 / 0.475)\",\n slateA11: \"color(display-p3 0.949 0.969 0.996 / 0.708)\",\n slateA12: \"color(display-p3 0.988 0.992 1 / 0.937)\",\n};\nconst sageDark = {\n sage1: \"#101211\",\n sage2: \"#171918\",\n sage3: \"#202221\",\n sage4: \"#272a29\",\n sage5: \"#2e3130\",\n sage6: \"#373b39\",\n sage7: \"#444947\",\n sage8: \"#5b625f\",\n sage9: \"#63706b\",\n sage10: \"#717d79\",\n sage11: \"#adb5b2\",\n sage12: \"#eceeed\",\n};\nconst sageDarkA = {\n sageA1: \"#00000000\",\n sageA2: \"#f0f2f108\",\n sageA3: \"#f3f5f412\",\n sageA4: \"#f2fefd1a\",\n sageA5: \"#f1fbfa22\",\n sageA6: \"#edfbf42d\",\n sageA7: \"#edfcf73c\",\n sageA8: \"#ebfdf657\",\n sageA9: \"#dffdf266\",\n sageA10: \"#e5fdf674\",\n sageA11: \"#f4fefbb0\",\n sageA12: \"#fdfffeed\",\n};\nconst sageDarkP3 = {\n sage1: \"color(display-p3 0.064 0.07 0.067)\",\n sage2: \"color(display-p3 0.092 0.098 0.094)\",\n sage3: \"color(display-p3 0.128 0.135 0.131)\",\n sage4: \"color(display-p3 0.155 0.164 0.159)\",\n sage5: \"color(display-p3 0.183 0.193 0.188)\",\n sage6: \"color(display-p3 0.218 0.23 0.224)\",\n sage7: \"color(display-p3 0.269 0.285 0.277)\",\n sage8: \"color(display-p3 0.362 0.382 0.373)\",\n sage9: \"color(display-p3 0.398 0.438 0.421)\",\n sage10: \"color(display-p3 0.453 0.49 0.474)\",\n sage11: \"color(display-p3 0.685 0.709 0.697)\",\n sage12: \"color(display-p3 0.927 0.933 0.93)\",\n};\nconst sageDarkP3A = {\n sageA1: \"color(display-p3 0 0 0 / 0)\",\n sageA2: \"color(display-p3 0.976 0.988 0.984 / 0.03)\",\n sageA3: \"color(display-p3 0.992 0.945 0.941 / 0.072)\",\n sageA4: \"color(display-p3 0.988 0.996 0.992 / 0.102)\",\n sageA5: \"color(display-p3 0.992 1 0.996 / 0.131)\",\n sageA6: \"color(display-p3 0.973 1 0.976 / 0.173)\",\n sageA7: \"color(display-p3 0.957 1 0.976 / 0.233)\",\n sageA8: \"color(display-p3 0.957 1 0.984 / 0.334)\",\n sageA9: \"color(display-p3 0.902 1 0.957 / 0.397)\",\n sageA10: \"color(display-p3 0.929 1 0.973 / 0.452)\",\n sageA11: \"color(display-p3 0.969 1 0.988 / 0.688)\",\n sageA12: \"color(display-p3 0.992 1 0.996 / 0.929)\",\n};\nconst oliveDark = {\n olive1: \"#111210\",\n olive2: \"#181917\",\n olive3: \"#212220\",\n olive4: \"#282a27\",\n olive5: \"#2f312e\",\n olive6: \"#383a36\",\n olive7: \"#454843\",\n olive8: \"#5c625b\",\n olive9: \"#687066\",\n olive10: \"#767d74\",\n olive11: \"#afb5ad\",\n olive12: \"#eceeec\",\n};\nconst oliveDarkA = {\n oliveA1: \"#00000000\",\n oliveA2: \"#f1f2f008\",\n oliveA3: \"#f4f5f312\",\n oliveA4: \"#f3fef21a\",\n oliveA5: \"#f2fbf122\",\n oliveA6: \"#f4faed2c\",\n oliveA7: \"#f2fced3b\",\n oliveA8: \"#edfdeb57\",\n oliveA9: \"#ebfde766\",\n oliveA10: \"#f0fdec74\",\n oliveA11: \"#f6fef4b0\",\n oliveA12: \"#fdfffded\",\n};\nconst oliveDarkP3 = {\n olive1: \"color(display-p3 0.067 0.07 0.063)\",\n olive2: \"color(display-p3 0.095 0.098 0.091)\",\n olive3: \"color(display-p3 0.131 0.135 0.126)\",\n olive4: \"color(display-p3 0.158 0.163 0.153)\",\n olive5: \"color(display-p3 0.186 0.192 0.18)\",\n olive6: \"color(display-p3 0.221 0.229 0.215)\",\n olive7: \"color(display-p3 0.273 0.284 0.266)\",\n olive8: \"color(display-p3 0.365 0.382 0.359)\",\n olive9: \"color(display-p3 0.414 0.438 0.404)\",\n olive10: \"color(display-p3 0.467 0.49 0.458)\",\n olive11: \"color(display-p3 0.69 0.709 0.682)\",\n olive12: \"color(display-p3 0.927 0.933 0.926)\",\n};\nconst oliveDarkP3A = {\n oliveA1: \"color(display-p3 0 0 0 / 0)\",\n oliveA2: \"color(display-p3 0.984 0.988 0.976 / 0.03)\",\n oliveA3: \"color(display-p3 0.992 0.996 0.988 / 0.068)\",\n oliveA4: \"color(display-p3 0.953 0.996 0.949 / 0.102)\",\n oliveA5: \"color(display-p3 0.969 1 0.965 / 0.131)\",\n oliveA6: \"color(display-p3 0.973 1 0.969 / 0.169)\",\n oliveA7: \"color(display-p3 0.98 1 0.961 / 0.228)\",\n oliveA8: \"color(display-p3 0.961 1 0.957 / 0.334)\",\n oliveA9: \"color(display-p3 0.949 1 0.922 / 0.397)\",\n oliveA10: \"color(display-p3 0.953 1 0.941 / 0.452)\",\n oliveA11: \"color(display-p3 0.976 1 0.965 / 0.688)\",\n oliveA12: \"color(display-p3 0.992 1 0.992 / 0.929)\",\n};\nconst sandDark = {\n sand1: \"#111110\",\n sand2: \"#191918\",\n sand3: \"#222221\",\n sand4: \"#2a2a28\",\n sand5: \"#31312e\",\n sand6: \"#3b3a37\",\n sand7: \"#494844\",\n sand8: \"#62605b\",\n sand9: \"#6f6d66\",\n sand10: \"#7c7b74\",\n sand11: \"#b5b3ad\",\n sand12: \"#eeeeec\",\n};\nconst sandDarkA = {\n sandA1: \"#00000000\",\n sandA2: \"#f4f4f309\",\n sandA3: \"#f6f6f513\",\n sandA4: \"#fefef31b\",\n sandA5: \"#fbfbeb23\",\n sandA6: \"#fffaed2d\",\n sandA7: \"#fffbed3c\",\n sandA8: \"#fff9eb57\",\n sandA9: \"#fffae965\",\n sandA10: \"#fffdee73\",\n sandA11: \"#fffcf4b0\",\n sandA12: \"#fffffded\",\n};\nconst sandDarkP3 = {\n sand1: \"color(display-p3 0.067 0.067 0.063)\",\n sand2: \"color(display-p3 0.098 0.098 0.094)\",\n sand3: \"color(display-p3 0.135 0.135 0.129)\",\n sand4: \"color(display-p3 0.164 0.163 0.156)\",\n sand5: \"color(display-p3 0.193 0.192 0.183)\",\n sand6: \"color(display-p3 0.23 0.229 0.217)\",\n sand7: \"color(display-p3 0.285 0.282 0.267)\",\n sand8: \"color(display-p3 0.384 0.378 0.357)\",\n sand9: \"color(display-p3 0.434 0.428 0.403)\",\n sand10: \"color(display-p3 0.487 0.481 0.456)\",\n sand11: \"color(display-p3 0.707 0.703 0.68)\",\n sand12: \"color(display-p3 0.933 0.933 0.926)\",\n};\nconst sandDarkP3A = {\n sandA1: \"color(display-p3 0 0 0 / 0)\",\n sandA2: \"color(display-p3 0.992 0.992 0.988 / 0.034)\",\n sandA3: \"color(display-p3 0.996 0.996 0.992 / 0.072)\",\n sandA4: \"color(display-p3 0.992 0.992 0.953 / 0.106)\",\n sandA5: \"color(display-p3 1 1 0.965 / 0.135)\",\n sandA6: \"color(display-p3 1 0.976 0.929 / 0.177)\",\n sandA7: \"color(display-p3 1 0.984 0.929 / 0.236)\",\n sandA8: \"color(display-p3 1 0.976 0.925 / 0.341)\",\n sandA9: \"color(display-p3 1 0.98 0.925 / 0.395)\",\n sandA10: \"color(display-p3 1 0.992 0.933 / 0.45)\",\n sandA11: \"color(display-p3 1 0.996 0.961 / 0.685)\",\n sandA12: \"color(display-p3 1 1 0.992 / 0.929)\",\n};\nconst tomatoDark = {\n tomato1: \"#181111\",\n tomato2: \"#1f1513\",\n tomato3: \"#391714\",\n tomato4: \"#4e1511\",\n tomato5: \"#5e1c16\",\n tomato6: \"#6e2920\",\n tomato7: \"#853a2d\",\n tomato8: \"#ac4d39\",\n tomato9: \"#e54d2e\",\n tomato10: \"#ec6142\",\n tomato11: \"#ff977d\",\n tomato12: \"#fbd3cb\",\n};\nconst tomatoDarkA = {\n tomatoA1: \"#f1121208\",\n tomatoA2: \"#ff55330f\",\n tomatoA3: \"#ff35232b\",\n tomatoA4: \"#fd201142\",\n tomatoA5: \"#fe332153\",\n tomatoA6: \"#ff4f3864\",\n tomatoA7: \"#fd644a7d\",\n tomatoA8: \"#fe6d4ea7\",\n tomatoA9: \"#fe5431e4\",\n tomatoA10: \"#ff6847eb\",\n tomatoA11: \"#ff977d\",\n tomatoA12: \"#ffd6cefb\",\n};\nconst tomatoDarkP3 = {\n tomato1: \"color(display-p3 0.09 0.068 0.067)\",\n tomato2: \"color(display-p3 0.115 0.084 0.076)\",\n tomato3: \"color(display-p3 0.205 0.097 0.083)\",\n tomato4: \"color(display-p3 0.282 0.099 0.077)\",\n tomato5: \"color(display-p3 0.339 0.129 0.101)\",\n tomato6: \"color(display-p3 0.398 0.179 0.141)\",\n tomato7: \"color(display-p3 0.487 0.245 0.194)\",\n tomato8: \"color(display-p3 0.629 0.322 0.248)\",\n tomato9: \"color(display-p3 0.831 0.345 0.231)\",\n tomato10: \"color(display-p3 0.862 0.415 0.298)\",\n tomato11: \"color(display-p3 1 0.585 0.455)\",\n tomato12: \"color(display-p3 0.959 0.833 0.802)\",\n};\nconst tomatoDarkP3A = {\n tomatoA1: \"color(display-p3 0.973 0.071 0.071 / 0.026)\",\n tomatoA2: \"color(display-p3 0.992 0.376 0.224 / 0.051)\",\n tomatoA3: \"color(display-p3 0.996 0.282 0.176 / 0.148)\",\n tomatoA4: \"color(display-p3 1 0.204 0.118 / 0.232)\",\n tomatoA5: \"color(display-p3 1 0.286 0.192 / 0.29)\",\n tomatoA6: \"color(display-p3 1 0.392 0.278 / 0.353)\",\n tomatoA7: \"color(display-p3 1 0.459 0.349 / 0.45)\",\n tomatoA8: \"color(display-p3 1 0.49 0.369 / 0.601)\",\n tomatoA9: \"color(display-p3 1 0.408 0.267 / 0.82)\",\n tomatoA10: \"color(display-p3 1 0.478 0.341 / 0.853)\",\n tomatoA11: \"color(display-p3 1 0.585 0.455)\",\n tomatoA12: \"color(display-p3 0.959 0.833 0.802)\",\n};\nconst redDark = {\n red1: \"#191111\",\n red2: \"#201314\",\n red3: \"#3b1219\",\n red4: \"#500f1c\",\n red5: \"#611623\",\n red6: \"#72232d\",\n red7: \"#8c333a\",\n red8: \"#b54548\",\n red9: \"#e5484d\",\n red10: \"#ec5d5e\",\n red11: \"#ff9592\",\n red12: \"#ffd1d9\",\n};\nconst redDarkA = {\n redA1: \"#f4121209\",\n redA2: \"#f22f3e11\",\n redA3: \"#ff173f2d\",\n redA4: \"#fe0a3b44\",\n redA5: \"#ff204756\",\n redA6: \"#ff3e5668\",\n redA7: \"#ff536184\",\n redA8: \"#ff5d61b0\",\n redA9: \"#fe4e54e4\",\n redA10: \"#ff6465eb\",\n redA11: \"#ff9592\",\n redA12: \"#ffd1d9\",\n};\nconst redDarkP3 = {\n red1: \"color(display-p3 0.093 0.068 0.067)\",\n red2: \"color(display-p3 0.118 0.077 0.079)\",\n red3: \"color(display-p3 0.211 0.081 0.099)\",\n red4: \"color(display-p3 0.287 0.079 0.113)\",\n red5: \"color(display-p3 0.348 0.11 0.142)\",\n red6: \"color(display-p3 0.414 0.16 0.183)\",\n red7: \"color(display-p3 0.508 0.224 0.236)\",\n red8: \"color(display-p3 0.659 0.298 0.297)\",\n red9: \"color(display-p3 0.83 0.329 0.324)\",\n red10: \"color(display-p3 0.861 0.403 0.387)\",\n red11: \"color(display-p3 1 0.57 0.55)\",\n red12: \"color(display-p3 0.971 0.826 0.852)\",\n};\nconst redDarkP3A = {\n redA1: \"color(display-p3 0.984 0.071 0.071 / 0.03)\",\n redA2: \"color(display-p3 0.996 0.282 0.282 / 0.055)\",\n redA3: \"color(display-p3 1 0.169 0.271 / 0.156)\",\n redA4: \"color(display-p3 1 0.118 0.267 / 0.236)\",\n redA5: \"color(display-p3 1 0.212 0.314 / 0.303)\",\n redA6: \"color(display-p3 1 0.318 0.38 / 0.374)\",\n redA7: \"color(display-p3 1 0.4 0.424 / 0.475)\",\n redA8: \"color(display-p3 1 0.431 0.431 / 0.635)\",\n redA9: \"color(display-p3 1 0.388 0.384 / 0.82)\",\n redA10: \"color(display-p3 1 0.463 0.447 / 0.853)\",\n redA11: \"color(display-p3 1 0.57 0.55)\",\n redA12: \"color(display-p3 0.971 0.826 0.852)\",\n};\nconst rubyDark = {\n ruby1: \"#191113\",\n ruby2: \"#1e1517\",\n ruby3: \"#3a141e\",\n ruby4: \"#4e1325\",\n ruby5: \"#5e1a2e\",\n ruby6: \"#6f2539\",\n ruby7: \"#883447\",\n ruby8: \"#b3445a\",\n ruby9: \"#e54666\",\n ruby10: \"#ec5a72\",\n ruby11: \"#ff949d\",\n ruby12: \"#fed2e1\",\n};\nconst rubyDarkA = {\n rubyA1: \"#f4124a09\",\n rubyA2: \"#fe5a7f0e\",\n rubyA3: \"#ff235d2c\",\n rubyA4: \"#fd195e42\",\n rubyA5: \"#fe2d6b53\",\n rubyA6: \"#ff447665\",\n rubyA7: \"#ff577d80\",\n rubyA8: \"#ff5c7cae\",\n rubyA9: \"#fe4c70e4\",\n rubyA10: \"#ff617beb\",\n rubyA11: \"#ff949d\",\n rubyA12: \"#ffd3e2fe\",\n};\nconst rubyDarkP3 = {\n ruby1: \"color(display-p3 0.093 0.068 0.074)\",\n ruby2: \"color(display-p3 0.113 0.083 0.089)\",\n ruby3: \"color(display-p3 0.208 0.088 0.117)\",\n ruby4: \"color(display-p3 0.279 0.092 0.147)\",\n ruby5: \"color(display-p3 0.337 0.12 0.18)\",\n ruby6: \"color(display-p3 0.401 0.166 0.223)\",\n ruby7: \"color(display-p3 0.495 0.224 0.281)\",\n ruby8: \"color(display-p3 0.652 0.295 0.359)\",\n ruby9: \"color(display-p3 0.83 0.323 0.408)\",\n ruby10: \"color(display-p3 0.857 0.392 0.455)\",\n ruby11: \"color(display-p3 1 0.57 0.59)\",\n ruby12: \"color(display-p3 0.968 0.83 0.88)\",\n};\nconst rubyDarkP3A = {\n rubyA1: \"color(display-p3 0.984 0.071 0.329 / 0.03)\",\n rubyA2: \"color(display-p3 0.992 0.376 0.529 / 0.051)\",\n rubyA3: \"color(display-p3 0.996 0.196 0.404 / 0.152)\",\n rubyA4: \"color(display-p3 1 0.173 0.416 / 0.227)\",\n rubyA5: \"color(display-p3 1 0.259 0.459 / 0.29)\",\n rubyA6: \"color(display-p3 1 0.341 0.506 / 0.358)\",\n rubyA7: \"color(display-p3 1 0.412 0.541 / 0.458)\",\n rubyA8: \"color(display-p3 1 0.431 0.537 / 0.627)\",\n rubyA9: \"color(display-p3 1 0.376 0.482 / 0.82)\",\n rubyA10: \"color(display-p3 1 0.447 0.522 / 0.849)\",\n rubyA11: \"color(display-p3 1 0.57 0.59)\",\n rubyA12: \"color(display-p3 0.968 0.83 0.88)\",\n};\nconst crimsonDark = {\n crimson1: \"#191114\",\n crimson2: \"#201318\",\n crimson3: \"#381525\",\n crimson4: \"#4d122f\",\n crimson5: \"#5c1839\",\n crimson6: \"#6d2545\",\n crimson7: \"#873356\",\n crimson8: \"#b0436e\",\n crimson9: \"#e93d82\",\n crimson10: \"#ee518a\",\n crimson11: \"#ff92ad\",\n crimson12: \"#fdd3e8\",\n};\nconst crimsonDarkA = {\n crimsonA1: \"#f4126709\",\n crimsonA2: \"#f22f7a11\",\n crimsonA3: \"#fe2a8b2a\",\n crimsonA4: \"#fd158741\",\n crimsonA5: \"#fd278f51\",\n crimsonA6: \"#fe459763\",\n crimsonA7: \"#fd559b7f\",\n crimsonA8: \"#fe5b9bab\",\n crimsonA9: \"#fe418de8\",\n crimsonA10: \"#ff5693ed\",\n crimsonA11: \"#ff92ad\",\n crimsonA12: \"#ffd5eafd\",\n};\nconst crimsonDarkP3 = {\n crimson1: \"color(display-p3 0.093 0.068 0.078)\",\n crimson2: \"color(display-p3 0.117 0.078 0.095)\",\n crimson3: \"color(display-p3 0.203 0.091 0.143)\",\n crimson4: \"color(display-p3 0.277 0.087 0.182)\",\n crimson5: \"color(display-p3 0.332 0.115 0.22)\",\n crimson6: \"color(display-p3 0.394 0.162 0.268)\",\n crimson7: \"color(display-p3 0.489 0.222 0.336)\",\n crimson8: \"color(display-p3 0.638 0.289 0.429)\",\n crimson9: \"color(display-p3 0.843 0.298 0.507)\",\n crimson10: \"color(display-p3 0.864 0.364 0.539)\",\n crimson11: \"color(display-p3 1 0.56 0.66)\",\n crimson12: \"color(display-p3 0.966 0.834 0.906)\",\n};\nconst crimsonDarkP3A = {\n crimsonA1: \"color(display-p3 0.984 0.071 0.463 / 0.03)\",\n crimsonA2: \"color(display-p3 0.996 0.282 0.569 / 0.055)\",\n crimsonA3: \"color(display-p3 0.996 0.227 0.573 / 0.148)\",\n crimsonA4: \"color(display-p3 1 0.157 0.569 / 0.227)\",\n crimsonA5: \"color(display-p3 1 0.231 0.604 / 0.286)\",\n crimsonA6: \"color(display-p3 1 0.337 0.643 / 0.349)\",\n crimsonA7: \"color(display-p3 1 0.416 0.663 / 0.454)\",\n crimsonA8: \"color(display-p3 0.996 0.427 0.651 / 0.614)\",\n crimsonA9: \"color(display-p3 1 0.345 0.596 / 0.832)\",\n crimsonA10: \"color(display-p3 1 0.42 0.62 / 0.853)\",\n crimsonA11: \"color(display-p3 1 0.56 0.66)\",\n crimsonA12: \"color(display-p3 0.966 0.834 0.906)\",\n};\nconst pinkDark = {\n pink1: \"#191117\",\n pink2: \"#21121d\",\n pink3: \"#37172f\",\n pink4: \"#4b143d\",\n pink5: \"#591c47\",\n pink6: \"#692955\",\n pink7: \"#833869\",\n pink8: \"#a84885\",\n pink9: \"#d6409f\",\n pink10: \"#de51a8\",\n pink11: \"#ff8dcc\",\n pink12: \"#fdd1ea\",\n};\nconst pinkDarkA = {\n pinkA1: \"#f412bc09\",\n pinkA2: \"#f420bb12\",\n pinkA3: \"#fe37cc29\",\n pinkA4: \"#fc1ec43f\",\n pinkA5: \"#fd35c24e\",\n pinkA6: \"#fd51c75f\",\n pinkA7: \"#fd62c87b\",\n pinkA8: \"#ff68c8a2\",\n pinkA9: \"#fe49bcd4\",\n pinkA10: \"#ff5cc0dc\",\n pinkA11: \"#ff8dcc\",\n pinkA12: \"#ffd3ecfd\",\n};\nconst pinkDarkP3 = {\n pink1: \"color(display-p3 0.093 0.068 0.089)\",\n pink2: \"color(display-p3 0.121 0.073 0.11)\",\n pink3: \"color(display-p3 0.198 0.098 0.179)\",\n pink4: \"color(display-p3 0.271 0.095 0.231)\",\n pink5: \"color(display-p3 0.32 0.127 0.273)\",\n pink6: \"color(display-p3 0.382 0.177 0.326)\",\n pink7: \"color(display-p3 0.477 0.238 0.405)\",\n pink8: \"color(display-p3 0.612 0.304 0.51)\",\n pink9: \"color(display-p3 0.775 0.297 0.61)\",\n pink10: \"color(display-p3 0.808 0.356 0.645)\",\n pink11: \"color(display-p3 1 0.535 0.78)\",\n pink12: \"color(display-p3 0.964 0.826 0.912)\",\n};\nconst pinkDarkP3A = {\n pinkA1: \"color(display-p3 0.984 0.071 0.855 / 0.03)\",\n pinkA2: \"color(display-p3 1 0.2 0.8 / 0.059)\",\n pinkA3: \"color(display-p3 1 0.294 0.886 / 0.139)\",\n pinkA4: \"color(display-p3 1 0.192 0.82 / 0.219)\",\n pinkA5: \"color(display-p3 1 0.282 0.827 / 0.274)\",\n pinkA6: \"color(display-p3 1 0.396 0.835 / 0.337)\",\n pinkA7: \"color(display-p3 1 0.459 0.831 / 0.442)\",\n pinkA8: \"color(display-p3 1 0.478 0.827 / 0.585)\",\n pinkA9: \"color(display-p3 1 0.373 0.784 / 0.761)\",\n pinkA10: \"color(display-p3 1 0.435 0.792 / 0.795)\",\n pinkA11: \"color(display-p3 1 0.535 0.78)\",\n pinkA12: \"color(display-p3 0.964 0.826 0.912)\",\n};\nconst plumDark = {\n plum1: \"#181118\",\n plum2: \"#201320\",\n plum3: \"#351a35\",\n plum4: \"#451d47\",\n plum5: \"#512454\",\n plum6: \"#5e3061\",\n plum7: \"#734079\",\n plum8: \"#92549c\",\n plum9: \"#ab4aba\",\n plum10: \"#b658c4\",\n plum11: \"#e796f3\",\n plum12: \"#f4d4f4\",\n};\nconst plumDarkA = {\n plumA1: \"#f112f108\",\n plumA2: \"#f22ff211\",\n plumA3: \"#fd4cfd27\",\n plumA4: \"#f646ff3a\",\n plumA5: \"#f455ff48\",\n plumA6: \"#f66dff56\",\n plumA7: \"#f07cfd70\",\n plumA8: \"#ee84ff95\",\n plumA9: \"#e961feb6\",\n plumA10: \"#ed70ffc0\",\n plumA11: \"#f19cfef3\",\n plumA12: \"#feddfef4\",\n};\nconst plumDarkP3 = {\n plum1: \"color(display-p3 0.09 0.068 0.092)\",\n plum2: \"color(display-p3 0.118 0.077 0.121)\",\n plum3: \"color(display-p3 0.192 0.105 0.202)\",\n plum4: \"color(display-p3 0.25 0.121 0.271)\",\n plum5: \"color(display-p3 0.293 0.152 0.319)\",\n plum6: \"color(display-p3 0.343 0.198 0.372)\",\n plum7: \"color(display-p3 0.424 0.262 0.461)\",\n plum8: \"color(display-p3 0.54 0.341 0.595)\",\n plum9: \"color(display-p3 0.624 0.313 0.708)\",\n plum10: \"color(display-p3 0.666 0.365 0.748)\",\n plum11: \"color(display-p3 0.86 0.602 0.933)\",\n plum12: \"color(display-p3 0.936 0.836 0.949)\",\n};\nconst plumDarkP3A = {\n plumA1: \"color(display-p3 0.973 0.071 0.973 / 0.026)\",\n plumA2: \"color(display-p3 0.933 0.267 1 / 0.059)\",\n plumA3: \"color(display-p3 0.918 0.333 0.996 / 0.148)\",\n plumA4: \"color(display-p3 0.91 0.318 1 / 0.219)\",\n plumA5: \"color(display-p3 0.914 0.388 1 / 0.269)\",\n plumA6: \"color(display-p3 0.906 0.463 1 / 0.328)\",\n plumA7: \"color(display-p3 0.906 0.529 1 / 0.425)\",\n plumA8: \"color(display-p3 0.906 0.553 1 / 0.568)\",\n plumA9: \"color(display-p3 0.875 0.427 1 / 0.69)\",\n plumA10: \"color(display-p3 0.886 0.471 0.996 / 0.732)\",\n plumA11: \"color(display-p3 0.86 0.602 0.933)\",\n plumA12: \"color(display-p3 0.936 0.836 0.949)\",\n};\nconst purpleDark = {\n purple1: \"#18111b\",\n purple2: \"#1e1523\",\n purple3: \"#301c3b\",\n purple4: \"#3d224e\",\n purple5: \"#48295c\",\n purple6: \"#54346b\",\n purple7: \"#664282\",\n purple8: \"#8457aa\",\n purple9: \"#8e4ec6\",\n purple10: \"#9a5cd0\",\n purple11: \"#d19dff\",\n purple12: \"#ecd9fa\",\n};\nconst purpleDarkA = {\n purpleA1: \"#b412f90b\",\n purpleA2: \"#b744f714\",\n purpleA3: \"#c150ff2d\",\n purpleA4: \"#bb53fd42\",\n purpleA5: \"#be5cfd51\",\n purpleA6: \"#c16dfd61\",\n purpleA7: \"#c378fd7a\",\n purpleA8: \"#c47effa4\",\n purpleA9: \"#b661ffc2\",\n purpleA10: \"#bc6fffcd\",\n purpleA11: \"#d19dff\",\n purpleA12: \"#f1ddfffa\",\n};\nconst purpleDarkP3 = {\n purple1: \"color(display-p3 0.09 0.068 0.103)\",\n purple2: \"color(display-p3 0.113 0.082 0.134)\",\n purple3: \"color(display-p3 0.175 0.112 0.224)\",\n purple4: \"color(display-p3 0.224 0.137 0.297)\",\n purple5: \"color(display-p3 0.264 0.167 0.349)\",\n purple6: \"color(display-p3 0.311 0.208 0.406)\",\n purple7: \"color(display-p3 0.381 0.266 0.496)\",\n purple8: \"color(display-p3 0.49 0.349 0.649)\",\n purple9: \"color(display-p3 0.523 0.318 0.751)\",\n purple10: \"color(display-p3 0.57 0.373 0.791)\",\n purple11: \"color(display-p3 0.8 0.62 1)\",\n purple12: \"color(display-p3 0.913 0.854 0.971)\",\n};\nconst purpleDarkP3A = {\n purpleA1: \"color(display-p3 0.686 0.071 0.996 / 0.038)\",\n purpleA2: \"color(display-p3 0.722 0.286 0.996 / 0.072)\",\n purpleA3: \"color(display-p3 0.718 0.349 0.996 / 0.169)\",\n purpleA4: \"color(display-p3 0.702 0.353 1 / 0.248)\",\n purpleA5: \"color(display-p3 0.718 0.404 1 / 0.303)\",\n purpleA6: \"color(display-p3 0.733 0.455 1 / 0.366)\",\n purpleA7: \"color(display-p3 0.753 0.506 1 / 0.458)\",\n purpleA8: \"color(display-p3 0.749 0.522 1 / 0.622)\",\n purpleA9: \"color(display-p3 0.686 0.408 1 / 0.736)\",\n purpleA10: \"color(display-p3 0.71 0.459 1 / 0.778)\",\n purpleA11: \"color(display-p3 0.8 0.62 1)\",\n purpleA12: \"color(display-p3 0.913 0.854 0.971)\",\n};\nconst violetDark = {\n violet1: \"#14121f\",\n violet2: \"#1b1525\",\n violet3: \"#291f43\",\n violet4: \"#33255b\",\n violet5: \"#3c2e69\",\n violet6: \"#473876\",\n violet7: \"#56468b\",\n violet8: \"#6958ad\",\n violet9: \"#6e56cf\",\n violet10: \"#7d66d9\",\n violet11: \"#baa7ff\",\n violet12: \"#e2ddfe\",\n};\nconst violetDarkA = {\n violetA1: \"#4422ff0f\",\n violetA2: \"#853ff916\",\n violetA3: \"#8354fe36\",\n violetA4: \"#7d51fd50\",\n violetA5: \"#845ffd5f\",\n violetA6: \"#8f6cfd6d\",\n violetA7: \"#9879ff83\",\n violetA8: \"#977dfea8\",\n violetA9: \"#8668ffcc\",\n violetA10: \"#9176fed7\",\n violetA11: \"#baa7ff\",\n violetA12: \"#e3defffe\",\n};\nconst violetDarkP3 = {\n violet1: \"color(display-p3 0.077 0.071 0.118)\",\n violet2: \"color(display-p3 0.101 0.084 0.141)\",\n violet3: \"color(display-p3 0.154 0.123 0.256)\",\n violet4: \"color(display-p3 0.191 0.148 0.345)\",\n violet5: \"color(display-p3 0.226 0.182 0.396)\",\n violet6: \"color(display-p3 0.269 0.223 0.449)\",\n violet7: \"color(display-p3 0.326 0.277 0.53)\",\n violet8: \"color(display-p3 0.399 0.346 0.656)\",\n violet9: \"color(display-p3 0.417 0.341 0.784)\",\n violet10: \"color(display-p3 0.477 0.402 0.823)\",\n violet11: \"color(display-p3 0.72 0.65 1)\",\n violet12: \"color(display-p3 0.883 0.867 0.986)\",\n};\nconst violetDarkP3A = {\n violetA1: \"color(display-p3 0.282 0.141 0.996 / 0.055)\",\n violetA2: \"color(display-p3 0.51 0.263 1 / 0.08)\",\n violetA3: \"color(display-p3 0.494 0.337 0.996 / 0.202)\",\n violetA4: \"color(display-p3 0.49 0.345 1 / 0.299)\",\n violetA5: \"color(display-p3 0.525 0.392 1 / 0.353)\",\n violetA6: \"color(display-p3 0.569 0.455 1 / 0.408)\",\n violetA7: \"color(display-p3 0.588 0.494 1 / 0.496)\",\n violetA8: \"color(display-p3 0.596 0.51 1 / 0.631)\",\n violetA9: \"color(display-p3 0.522 0.424 1 / 0.769)\",\n violetA10: \"color(display-p3 0.576 0.482 1 / 0.811)\",\n violetA11: \"color(display-p3 0.72 0.65 1)\",\n violetA12: \"color(display-p3 0.883 0.867 0.986)\",\n};\nconst irisDark = {\n iris1: \"#13131e\",\n iris2: \"#171625\",\n iris3: \"#202248\",\n iris4: \"#262a65\",\n iris5: \"#303374\",\n iris6: \"#3d3e82\",\n iris7: \"#4a4a95\",\n iris8: \"#5958b1\",\n iris9: \"#5b5bd6\",\n iris10: \"#6e6ade\",\n iris11: \"#b1a9ff\",\n iris12: \"#e0dffe\",\n};\nconst irisDarkA = {\n irisA1: \"#3636fe0e\",\n irisA2: \"#564bf916\",\n irisA3: \"#525bff3b\",\n irisA4: \"#4d58ff5a\",\n irisA5: \"#5b62fd6b\",\n irisA6: \"#6d6ffd7a\",\n irisA7: \"#7777fe8e\",\n irisA8: \"#7b7afeac\",\n irisA9: \"#6a6afed4\",\n irisA10: \"#7d79ffdc\",\n irisA11: \"#b1a9ff\",\n irisA12: \"#e1e0fffe\",\n};\nconst irisDarkP3 = {\n iris1: \"color(display-p3 0.075 0.075 0.114)\",\n iris2: \"color(display-p3 0.089 0.086 0.14)\",\n iris3: \"color(display-p3 0.128 0.134 0.272)\",\n iris4: \"color(display-p3 0.153 0.165 0.382)\",\n iris5: \"color(display-p3 0.192 0.201 0.44)\",\n iris6: \"color(display-p3 0.239 0.241 0.491)\",\n iris7: \"color(display-p3 0.291 0.289 0.565)\",\n iris8: \"color(display-p3 0.35 0.345 0.673)\",\n iris9: \"color(display-p3 0.357 0.357 0.81)\",\n iris10: \"color(display-p3 0.428 0.416 0.843)\",\n iris11: \"color(display-p3 0.685 0.662 1)\",\n iris12: \"color(display-p3 0.878 0.875 0.986)\",\n};\nconst irisDarkP3A = {\n irisA1: \"color(display-p3 0.224 0.224 0.992 / 0.051)\",\n irisA2: \"color(display-p3 0.361 0.314 1 / 0.08)\",\n irisA3: \"color(display-p3 0.357 0.373 1 / 0.219)\",\n irisA4: \"color(display-p3 0.325 0.361 1 / 0.337)\",\n irisA5: \"color(display-p3 0.38 0.4 1 / 0.4)\",\n irisA6: \"color(display-p3 0.447 0.447 1 / 0.454)\",\n irisA7: \"color(display-p3 0.486 0.486 1 / 0.534)\",\n irisA8: \"color(display-p3 0.502 0.494 1 / 0.652)\",\n irisA9: \"color(display-p3 0.431 0.431 1 / 0.799)\",\n irisA10: \"color(display-p3 0.502 0.486 1 / 0.832)\",\n irisA11: \"color(display-p3 0.685 0.662 1)\",\n irisA12: \"color(display-p3 0.878 0.875 0.986)\",\n};\nconst indigoDark = {\n indigo1: \"#11131f\",\n indigo2: \"#141726\",\n indigo3: \"#182449\",\n indigo4: \"#1d2e62\",\n indigo5: \"#253974\",\n indigo6: \"#304384\",\n indigo7: \"#3a4f97\",\n indigo8: \"#435db1\",\n indigo9: \"#3e63dd\",\n indigo10: \"#5472e4\",\n indigo11: \"#9eb1ff\",\n indigo12: \"#d6e1ff\",\n};\nconst indigoDarkA = {\n indigoA1: \"#1133ff0f\",\n indigoA2: \"#3354fa17\",\n indigoA3: \"#2f62ff3c\",\n indigoA4: \"#3566ff57\",\n indigoA5: \"#4171fd6b\",\n indigoA6: \"#5178fd7c\",\n indigoA7: \"#5a7fff90\",\n indigoA8: \"#5b81feac\",\n indigoA9: \"#4671ffdb\",\n indigoA10: \"#5c7efee3\",\n indigoA11: \"#9eb1ff\",\n indigoA12: \"#d6e1ff\",\n};\nconst indigoDarkP3 = {\n indigo1: \"color(display-p3 0.068 0.074 0.118)\",\n indigo2: \"color(display-p3 0.081 0.089 0.144)\",\n indigo3: \"color(display-p3 0.105 0.141 0.275)\",\n indigo4: \"color(display-p3 0.129 0.18 0.369)\",\n indigo5: \"color(display-p3 0.163 0.22 0.439)\",\n indigo6: \"color(display-p3 0.203 0.262 0.5)\",\n indigo7: \"color(display-p3 0.245 0.309 0.575)\",\n indigo8: \"color(display-p3 0.285 0.362 0.674)\",\n indigo9: \"color(display-p3 0.276 0.384 0.837)\",\n indigo10: \"color(display-p3 0.354 0.445 0.866)\",\n indigo11: \"color(display-p3 0.63 0.69 1)\",\n indigo12: \"color(display-p3 0.848 0.881 0.99)\",\n};\nconst indigoDarkP3A = {\n indigoA1: \"color(display-p3 0.071 0.212 0.996 / 0.055)\",\n indigoA2: \"color(display-p3 0.251 0.345 0.988 / 0.085)\",\n indigoA3: \"color(display-p3 0.243 0.404 1 / 0.223)\",\n indigoA4: \"color(display-p3 0.263 0.42 1 / 0.324)\",\n indigoA5: \"color(display-p3 0.314 0.451 1 / 0.4)\",\n indigoA6: \"color(display-p3 0.361 0.49 1 / 0.467)\",\n indigoA7: \"color(display-p3 0.388 0.51 1 / 0.547)\",\n indigoA8: \"color(display-p3 0.404 0.518 1 / 0.652)\",\n indigoA9: \"color(display-p3 0.318 0.451 1 / 0.824)\",\n indigoA10: \"color(display-p3 0.404 0.506 1 / 0.858)\",\n indigoA11: \"color(display-p3 0.63 0.69 1)\",\n indigoA12: \"color(display-p3 0.848 0.881 0.99)\",\n};\nconst blueDark = {\n blue1: \"#0d1520\",\n blue2: \"#111927\",\n blue3: \"#0d2847\",\n blue4: \"#003362\",\n blue5: \"#004074\",\n blue6: \"#104d87\",\n blue7: \"#205d9e\",\n blue8: \"#2870bd\",\n blue9: \"#0090ff\",\n blue10: \"#3b9eff\",\n blue11: \"#70b8ff\",\n blue12: \"#c2e6ff\",\n};\nconst blueDarkA = {\n blueA1: \"#004df211\",\n blueA2: \"#1166fb18\",\n blueA3: \"#0077ff3a\",\n blueA4: \"#0075ff57\",\n blueA5: \"#0081fd6b\",\n blueA6: \"#0f89fd7f\",\n blueA7: \"#2a91fe98\",\n blueA8: \"#3094feb9\",\n blueA9: \"#0090ff\",\n blueA10: \"#3b9eff\",\n blueA11: \"#70b8ff\",\n blueA12: \"#c2e6ff\",\n};\nconst blueDarkP3 = {\n blue1: \"color(display-p3 0.057 0.081 0.122)\",\n blue2: \"color(display-p3 0.072 0.098 0.147)\",\n blue3: \"color(display-p3 0.078 0.154 0.27)\",\n blue4: \"color(display-p3 0.033 0.197 0.37)\",\n blue5: \"color(display-p3 0.08 0.245 0.441)\",\n blue6: \"color(display-p3 0.14 0.298 0.511)\",\n blue7: \"color(display-p3 0.195 0.361 0.6)\",\n blue8: \"color(display-p3 0.239 0.434 0.72)\",\n blue9: \"color(display-p3 0.247 0.556 0.969)\",\n blue10: \"color(display-p3 0.344 0.612 0.973)\",\n blue11: \"color(display-p3 0.49 0.72 1)\",\n blue12: \"color(display-p3 0.788 0.898 0.99)\",\n};\nconst blueDarkP3A = {\n blueA1: \"color(display-p3 0 0.333 1 / 0.059)\",\n blueA2: \"color(display-p3 0.114 0.435 0.988 / 0.085)\",\n blueA3: \"color(display-p3 0.122 0.463 1 / 0.219)\",\n blueA4: \"color(display-p3 0 0.467 1 / 0.324)\",\n blueA5: \"color(display-p3 0.098 0.51 1 / 0.4)\",\n blueA6: \"color(display-p3 0.224 0.557 1 / 0.475)\",\n blueA7: \"color(display-p3 0.294 0.584 1 / 0.572)\",\n blueA8: \"color(display-p3 0.314 0.592 1 / 0.702)\",\n blueA9: \"color(display-p3 0.251 0.573 0.996 / 0.967)\",\n blueA10: \"color(display-p3 0.357 0.631 1 / 0.971)\",\n blueA11: \"color(display-p3 0.49 0.72 1)\",\n blueA12: \"color(display-p3 0.788 0.898 0.99)\",\n};\nconst cyanDark = {\n cyan1: \"#0b161a\",\n cyan2: \"#101b20\",\n cyan3: \"#082c36\",\n cyan4: \"#003848\",\n cyan5: \"#004558\",\n cyan6: \"#045468\",\n cyan7: \"#12677e\",\n cyan8: \"#11809c\",\n cyan9: \"#00a2c7\",\n cyan10: \"#23afd0\",\n cyan11: \"#4ccce6\",\n cyan12: \"#b6ecf7\",\n};\nconst cyanDarkA = {\n cyanA1: \"#0091f70a\",\n cyanA2: \"#02a7f211\",\n cyanA3: \"#00befd28\",\n cyanA4: \"#00baff3b\",\n cyanA5: \"#00befd4d\",\n cyanA6: \"#00c7fd5e\",\n cyanA7: \"#14cdff75\",\n cyanA8: \"#11cfff95\",\n cyanA9: \"#00cfffc3\",\n cyanA10: \"#28d6ffcd\",\n cyanA11: \"#52e1fee5\",\n cyanA12: \"#bbf3fef7\",\n};\nconst cyanDarkP3 = {\n cyan1: \"color(display-p3 0.053 0.085 0.098)\",\n cyan2: \"color(display-p3 0.072 0.105 0.122)\",\n cyan3: \"color(display-p3 0.073 0.168 0.209)\",\n cyan4: \"color(display-p3 0.063 0.216 0.277)\",\n cyan5: \"color(display-p3 0.091 0.267 0.336)\",\n cyan6: \"color(display-p3 0.137 0.324 0.4)\",\n cyan7: \"color(display-p3 0.186 0.398 0.484)\",\n cyan8: \"color(display-p3 0.23 0.496 0.6)\",\n cyan9: \"color(display-p3 0.282 0.627 0.765)\",\n cyan10: \"color(display-p3 0.331 0.675 0.801)\",\n cyan11: \"color(display-p3 0.446 0.79 0.887)\",\n cyan12: \"color(display-p3 0.757 0.919 0.962)\",\n};\nconst cyanDarkP3A = {\n cyanA1: \"color(display-p3 0 0.647 0.992 / 0.034)\",\n cyanA2: \"color(display-p3 0.133 0.733 1 / 0.059)\",\n cyanA3: \"color(display-p3 0.122 0.741 0.996 / 0.152)\",\n cyanA4: \"color(display-p3 0.051 0.725 1 / 0.227)\",\n cyanA5: \"color(display-p3 0.149 0.757 1 / 0.29)\",\n cyanA6: \"color(display-p3 0.267 0.792 1 / 0.358)\",\n cyanA7: \"color(display-p3 0.333 0.808 1 / 0.446)\",\n cyanA8: \"color(display-p3 0.357 0.816 1 / 0.572)\",\n cyanA9: \"color(display-p3 0.357 0.82 1 / 0.748)\",\n cyanA10: \"color(display-p3 0.4 0.839 1 / 0.786)\",\n cyanA11: \"color(display-p3 0.446 0.79 0.887)\",\n cyanA12: \"color(display-p3 0.757 0.919 0.962)\",\n};\nconst tealDark = {\n teal1: \"#0d1514\",\n teal2: \"#111c1b\",\n teal3: \"#0d2d2a\",\n teal4: \"#023b37\",\n teal5: \"#084843\",\n teal6: \"#145750\",\n teal7: \"#1c6961\",\n teal8: \"#207e73\",\n teal9: \"#12a594\",\n teal10: \"#0eb39e\",\n teal11: \"#0bd8b6\",\n teal12: \"#adf0dd\",\n};\nconst tealDarkA = {\n tealA1: \"#00deab05\",\n tealA2: \"#12fbe60c\",\n tealA3: \"#00ffe61e\",\n tealA4: \"#00ffe92d\",\n tealA5: \"#00ffea3b\",\n tealA6: \"#1cffe84b\",\n tealA7: \"#2efde85f\",\n tealA8: \"#32ffe775\",\n tealA9: \"#13ffe49f\",\n tealA10: \"#0dffe0ae\",\n tealA11: \"#0afed5d6\",\n tealA12: \"#b8ffebef\",\n};\nconst tealDarkP3 = {\n teal1: \"color(display-p3 0.059 0.083 0.079)\",\n teal2: \"color(display-p3 0.075 0.11 0.107)\",\n teal3: \"color(display-p3 0.087 0.175 0.165)\",\n teal4: \"color(display-p3 0.087 0.227 0.214)\",\n teal5: \"color(display-p3 0.12 0.277 0.261)\",\n teal6: \"color(display-p3 0.162 0.335 0.314)\",\n teal7: \"color(display-p3 0.205 0.406 0.379)\",\n teal8: \"color(display-p3 0.245 0.489 0.453)\",\n teal9: \"color(display-p3 0.297 0.637 0.581)\",\n teal10: \"color(display-p3 0.319 0.69 0.62)\",\n teal11: \"color(display-p3 0.388 0.835 0.719)\",\n teal12: \"color(display-p3 0.734 0.934 0.87)\",\n};\nconst tealDarkP3A = {\n tealA1: \"color(display-p3 0 0.992 0.761 / 0.017)\",\n tealA2: \"color(display-p3 0.235 0.988 0.902 / 0.047)\",\n tealA3: \"color(display-p3 0.235 1 0.898 / 0.118)\",\n tealA4: \"color(display-p3 0.18 0.996 0.929 / 0.173)\",\n tealA5: \"color(display-p3 0.31 1 0.933 / 0.227)\",\n tealA6: \"color(display-p3 0.396 1 0.933 / 0.286)\",\n tealA7: \"color(display-p3 0.443 1 0.925 / 0.366)\",\n tealA8: \"color(display-p3 0.459 1 0.925 / 0.454)\",\n tealA9: \"color(display-p3 0.443 0.996 0.906 / 0.61)\",\n tealA10: \"color(display-p3 0.439 0.996 0.89 / 0.669)\",\n tealA11: \"color(display-p3 0.388 0.835 0.719)\",\n tealA12: \"color(display-p3 0.734 0.934 0.87)\",\n};\nconst jadeDark = {\n jade1: \"#0d1512\",\n jade2: \"#121c18\",\n jade3: \"#0f2e22\",\n jade4: \"#0b3b2c\",\n jade5: \"#114837\",\n jade6: \"#1b5745\",\n jade7: \"#246854\",\n jade8: \"#2a7e68\",\n jade9: \"#29a383\",\n jade10: \"#27b08b\",\n jade11: \"#1fd8a4\",\n jade12: \"#adf0d4\",\n};\nconst jadeDarkA = {\n jadeA1: \"#00de4505\",\n jadeA2: \"#27fba60c\",\n jadeA3: \"#02f99920\",\n jadeA4: \"#00ffaa2d\",\n jadeA5: \"#11ffb63b\",\n jadeA6: \"#34ffc24b\",\n jadeA7: \"#45fdc75e\",\n jadeA8: \"#48ffcf75\",\n jadeA9: \"#38feca9d\",\n jadeA10: \"#31fec7ab\",\n jadeA11: \"#21fec0d6\",\n jadeA12: \"#b8ffe1ef\",\n};\nconst jadeDarkP3 = {\n jade1: \"color(display-p3 0.059 0.083 0.071)\",\n jade2: \"color(display-p3 0.078 0.11 0.094)\",\n jade3: \"color(display-p3 0.091 0.176 0.138)\",\n jade4: \"color(display-p3 0.102 0.228 0.177)\",\n jade5: \"color(display-p3 0.133 0.279 0.221)\",\n jade6: \"color(display-p3 0.174 0.334 0.273)\",\n jade7: \"color(display-p3 0.219 0.402 0.335)\",\n jade8: \"color(display-p3 0.263 0.488 0.411)\",\n jade9: \"color(display-p3 0.319 0.63 0.521)\",\n jade10: \"color(display-p3 0.338 0.68 0.555)\",\n jade11: \"color(display-p3 0.4 0.835 0.656)\",\n jade12: \"color(display-p3 0.734 0.934 0.838)\",\n};\nconst jadeDarkP3A = {\n jadeA1: \"color(display-p3 0 0.992 0.298 / 0.017)\",\n jadeA2: \"color(display-p3 0.318 0.988 0.651 / 0.047)\",\n jadeA3: \"color(display-p3 0.267 1 0.667 / 0.118)\",\n jadeA4: \"color(display-p3 0.275 0.996 0.702 / 0.173)\",\n jadeA5: \"color(display-p3 0.361 1 0.741 / 0.227)\",\n jadeA6: \"color(display-p3 0.439 1 0.796 / 0.286)\",\n jadeA7: \"color(display-p3 0.49 1 0.804 / 0.362)\",\n jadeA8: \"color(display-p3 0.506 1 0.835 / 0.45)\",\n jadeA9: \"color(display-p3 0.478 0.996 0.816 / 0.606)\",\n jadeA10: \"color(display-p3 0.478 1 0.816 / 0.656)\",\n jadeA11: \"color(display-p3 0.4 0.835 0.656)\",\n jadeA12: \"color(display-p3 0.734 0.934 0.838)\",\n};\nconst greenDark = {\n green1: \"#0e1512\",\n green2: \"#121b17\",\n green3: \"#132d21\",\n green4: \"#113b29\",\n green5: \"#174933\",\n green6: \"#20573e\",\n green7: \"#28684a\",\n green8: \"#2f7c57\",\n green9: \"#30a46c\",\n green10: \"#33b074\",\n green11: \"#3dd68c\",\n green12: \"#b1f1cb\",\n};\nconst greenDarkA = {\n greenA1: \"#00de4505\",\n greenA2: \"#29f99d0b\",\n greenA3: \"#22ff991e\",\n greenA4: \"#11ff992d\",\n greenA5: \"#2bffa23c\",\n greenA6: \"#44ffaa4b\",\n greenA7: \"#50fdac5e\",\n greenA8: \"#54ffad73\",\n greenA9: \"#44ffa49e\",\n greenA10: \"#43fea4ab\",\n greenA11: \"#46fea5d4\",\n greenA12: \"#bbffd7f0\",\n};\nconst greenDarkP3 = {\n green1: \"color(display-p3 0.062 0.083 0.071)\",\n green2: \"color(display-p3 0.079 0.106 0.09)\",\n green3: \"color(display-p3 0.1 0.173 0.133)\",\n green4: \"color(display-p3 0.115 0.229 0.166)\",\n green5: \"color(display-p3 0.147 0.282 0.206)\",\n green6: \"color(display-p3 0.185 0.338 0.25)\",\n green7: \"color(display-p3 0.227 0.403 0.298)\",\n green8: \"color(display-p3 0.27 0.479 0.351)\",\n green9: \"color(display-p3 0.332 0.634 0.442)\",\n green10: \"color(display-p3 0.357 0.682 0.474)\",\n green11: \"color(display-p3 0.434 0.828 0.573)\",\n green12: \"color(display-p3 0.747 0.938 0.807)\",\n};\nconst greenDarkP3A = {\n greenA1: \"color(display-p3 0 0.992 0.298 / 0.017)\",\n greenA2: \"color(display-p3 0.341 0.98 0.616 / 0.043)\",\n greenA3: \"color(display-p3 0.376 0.996 0.655 / 0.114)\",\n greenA4: \"color(display-p3 0.341 0.996 0.635 / 0.173)\",\n greenA5: \"color(display-p3 0.408 1 0.678 / 0.232)\",\n greenA6: \"color(display-p3 0.475 1 0.706 / 0.29)\",\n greenA7: \"color(display-p3 0.514 1 0.706 / 0.362)\",\n greenA8: \"color(display-p3 0.529 1 0.718 / 0.442)\",\n greenA9: \"color(display-p3 0.502 0.996 0.682 / 0.61)\",\n greenA10: \"color(display-p3 0.506 1 0.682 / 0.66)\",\n greenA11: \"color(display-p3 0.434 0.828 0.573)\",\n greenA12: \"color(display-p3 0.747 0.938 0.807)\",\n};\nconst grassDark = {\n grass1: \"#0e1511\",\n grass2: \"#141a15\",\n grass3: \"#1b2a1e\",\n grass4: \"#1d3a24\",\n grass5: \"#25482d\",\n grass6: \"#2d5736\",\n grass7: \"#366740\",\n grass8: \"#3e7949\",\n grass9: \"#46a758\",\n grass10: \"#53b365\",\n grass11: \"#71d083\",\n grass12: \"#c2f0c2\",\n};\nconst grassDarkA = {\n grassA1: \"#00de1205\",\n grassA2: \"#5ef7780a\",\n grassA3: \"#70fe8c1b\",\n grassA4: \"#57ff802c\",\n grassA5: \"#68ff8b3b\",\n grassA6: \"#71ff8f4b\",\n grassA7: \"#77fd925d\",\n grassA8: \"#77fd9070\",\n grassA9: \"#65ff82a1\",\n grassA10: \"#72ff8dae\",\n grassA11: \"#89ff9fcd\",\n grassA12: \"#ceffceef\",\n};\nconst grassDarkP3 = {\n grass1: \"color(display-p3 0.062 0.083 0.067)\",\n grass2: \"color(display-p3 0.083 0.103 0.085)\",\n grass3: \"color(display-p3 0.118 0.163 0.122)\",\n grass4: \"color(display-p3 0.142 0.225 0.15)\",\n grass5: \"color(display-p3 0.178 0.279 0.186)\",\n grass6: \"color(display-p3 0.217 0.337 0.224)\",\n grass7: \"color(display-p3 0.258 0.4 0.264)\",\n grass8: \"color(display-p3 0.302 0.47 0.305)\",\n grass9: \"color(display-p3 0.38 0.647 0.378)\",\n grass10: \"color(display-p3 0.426 0.694 0.426)\",\n grass11: \"color(display-p3 0.535 0.807 0.542)\",\n grass12: \"color(display-p3 0.797 0.936 0.776)\",\n};\nconst grassDarkP3A = {\n grassA1: \"color(display-p3 0 0.992 0.071 / 0.017)\",\n grassA2: \"color(display-p3 0.482 0.996 0.584 / 0.038)\",\n grassA3: \"color(display-p3 0.549 0.992 0.588 / 0.106)\",\n grassA4: \"color(display-p3 0.51 0.996 0.557 / 0.169)\",\n grassA5: \"color(display-p3 0.553 1 0.588 / 0.227)\",\n grassA6: \"color(display-p3 0.584 1 0.608 / 0.29)\",\n grassA7: \"color(display-p3 0.604 1 0.616 / 0.358)\",\n grassA8: \"color(display-p3 0.608 1 0.62 / 0.433)\",\n grassA9: \"color(display-p3 0.573 1 0.569 / 0.622)\",\n grassA10: \"color(display-p3 0.6 0.996 0.6 / 0.673)\",\n grassA11: \"color(display-p3 0.535 0.807 0.542)\",\n grassA12: \"color(display-p3 0.797 0.936 0.776)\",\n};\nconst brownDark = {\n brown1: \"#12110f\",\n brown2: \"#1c1816\",\n brown3: \"#28211d\",\n brown4: \"#322922\",\n brown5: \"#3e3128\",\n brown6: \"#4d3c2f\",\n brown7: \"#614a39\",\n brown8: \"#7c5f46\",\n brown9: \"#ad7f58\",\n brown10: \"#b88c67\",\n brown11: \"#dbb594\",\n brown12: \"#f2e1ca\",\n};\nconst brownDarkA = {\n brownA1: \"#91110002\",\n brownA2: \"#fba67c0c\",\n brownA3: \"#fcb58c19\",\n brownA4: \"#fbbb8a24\",\n brownA5: \"#fcb88931\",\n brownA6: \"#fdba8741\",\n brownA7: \"#ffbb8856\",\n brownA8: \"#ffbe8773\",\n brownA9: \"#feb87da8\",\n brownA10: \"#ffc18cb3\",\n brownA11: \"#fed1aad9\",\n brownA12: \"#feecd4f2\",\n};\nconst brownDarkP3 = {\n brown1: \"color(display-p3 0.071 0.067 0.059)\",\n brown2: \"color(display-p3 0.107 0.095 0.087)\",\n brown3: \"color(display-p3 0.151 0.13 0.115)\",\n brown4: \"color(display-p3 0.191 0.161 0.138)\",\n brown5: \"color(display-p3 0.235 0.194 0.162)\",\n brown6: \"color(display-p3 0.291 0.237 0.192)\",\n brown7: \"color(display-p3 0.365 0.295 0.232)\",\n brown8: \"color(display-p3 0.469 0.377 0.287)\",\n brown9: \"color(display-p3 0.651 0.505 0.368)\",\n brown10: \"color(display-p3 0.697 0.557 0.423)\",\n brown11: \"color(display-p3 0.835 0.715 0.597)\",\n brown12: \"color(display-p3 0.938 0.885 0.802)\",\n};\nconst brownDarkP3A = {\n brownA1: \"color(display-p3 0.855 0.071 0 / 0.005)\",\n brownA2: \"color(display-p3 0.98 0.706 0.525 / 0.043)\",\n brownA3: \"color(display-p3 0.996 0.745 0.576 / 0.093)\",\n brownA4: \"color(display-p3 1 0.765 0.592 / 0.135)\",\n brownA5: \"color(display-p3 1 0.761 0.588 / 0.181)\",\n brownA6: \"color(display-p3 1 0.773 0.592 / 0.24)\",\n brownA7: \"color(display-p3 0.996 0.776 0.58 / 0.32)\",\n brownA8: \"color(display-p3 1 0.78 0.573 / 0.433)\",\n brownA9: \"color(display-p3 1 0.769 0.549 / 0.627)\",\n brownA10: \"color(display-p3 1 0.792 0.596 / 0.677)\",\n brownA11: \"color(display-p3 0.835 0.715 0.597)\",\n brownA12: \"color(display-p3 0.938 0.885 0.802)\",\n};\nconst bronzeDark = {\n bronze1: \"#141110\",\n bronze2: \"#1c1917\",\n bronze3: \"#262220\",\n bronze4: \"#302a27\",\n bronze5: \"#3b3330\",\n bronze6: \"#493e3a\",\n bronze7: \"#5a4c47\",\n bronze8: \"#6f5f58\",\n bronze9: \"#a18072\",\n bronze10: \"#ae8c7e\",\n bronze11: \"#d4b3a5\",\n bronze12: \"#ede0d9\",\n};\nconst bronzeDarkA = {\n bronzeA1: \"#d1110004\",\n bronzeA2: \"#fbbc910c\",\n bronzeA3: \"#faceb817\",\n bronzeA4: \"#facdb622\",\n bronzeA5: \"#ffd2c12d\",\n bronzeA6: \"#ffd1c03c\",\n bronzeA7: \"#fdd0c04f\",\n bronzeA8: \"#ffd6c565\",\n bronzeA9: \"#fec7b09b\",\n bronzeA10: \"#fecab5a9\",\n bronzeA11: \"#ffd7c6d1\",\n bronzeA12: \"#fff1e9ec\",\n};\nconst bronzeDarkP3 = {\n bronze1: \"color(display-p3 0.076 0.067 0.063)\",\n bronze2: \"color(display-p3 0.106 0.097 0.093)\",\n bronze3: \"color(display-p3 0.147 0.132 0.125)\",\n bronze4: \"color(display-p3 0.185 0.166 0.156)\",\n bronze5: \"color(display-p3 0.227 0.202 0.19)\",\n bronze6: \"color(display-p3 0.278 0.246 0.23)\",\n bronze7: \"color(display-p3 0.343 0.302 0.281)\",\n bronze8: \"color(display-p3 0.426 0.374 0.347)\",\n bronze9: \"color(display-p3 0.611 0.507 0.455)\",\n bronze10: \"color(display-p3 0.66 0.556 0.504)\",\n bronze11: \"color(display-p3 0.81 0.707 0.655)\",\n bronze12: \"color(display-p3 0.921 0.88 0.854)\",\n};\nconst bronzeDarkP3A = {\n bronzeA1: \"color(display-p3 0.941 0.067 0 / 0.009)\",\n bronzeA2: \"color(display-p3 0.98 0.8 0.706 / 0.043)\",\n bronzeA3: \"color(display-p3 0.988 0.851 0.761 / 0.085)\",\n bronzeA4: \"color(display-p3 0.996 0.839 0.78 / 0.127)\",\n bronzeA5: \"color(display-p3 0.996 0.863 0.773 / 0.173)\",\n bronzeA6: \"color(display-p3 1 0.863 0.796 / 0.227)\",\n bronzeA7: \"color(display-p3 1 0.867 0.8 / 0.295)\",\n bronzeA8: \"color(display-p3 1 0.859 0.788 / 0.387)\",\n bronzeA9: \"color(display-p3 1 0.82 0.733 / 0.585)\",\n bronzeA10: \"color(display-p3 1 0.839 0.761 / 0.635)\",\n bronzeA11: \"color(display-p3 0.81 0.707 0.655)\",\n bronzeA12: \"color(display-p3 0.921 0.88 0.854)\",\n};\nconst goldDark = {\n gold1: \"#121211\",\n gold2: \"#1b1a17\",\n gold3: \"#24231f\",\n gold4: \"#2d2b26\",\n gold5: \"#38352e\",\n gold6: \"#444039\",\n gold7: \"#544f46\",\n gold8: \"#696256\",\n gold9: \"#978365\",\n gold10: \"#a39073\",\n gold11: \"#cbb99f\",\n gold12: \"#e8e2d9\",\n};\nconst goldDarkA = {\n goldA1: \"#91911102\",\n goldA2: \"#f9e29d0b\",\n goldA3: \"#f8ecbb15\",\n goldA4: \"#ffeec41e\",\n goldA5: \"#feecc22a\",\n goldA6: \"#feebcb37\",\n goldA7: \"#ffedcd48\",\n goldA8: \"#fdeaca5f\",\n goldA9: \"#ffdba690\",\n goldA10: \"#fedfb09d\",\n goldA11: \"#fee7c6c8\",\n goldA12: \"#fef7ede7\",\n};\nconst goldDarkP3 = {\n gold1: \"color(display-p3 0.071 0.071 0.067)\",\n gold2: \"color(display-p3 0.104 0.101 0.09)\",\n gold3: \"color(display-p3 0.141 0.136 0.122)\",\n gold4: \"color(display-p3 0.177 0.17 0.152)\",\n gold5: \"color(display-p3 0.217 0.207 0.185)\",\n gold6: \"color(display-p3 0.265 0.252 0.225)\",\n gold7: \"color(display-p3 0.327 0.31 0.277)\",\n gold8: \"color(display-p3 0.407 0.384 0.342)\",\n gold9: \"color(display-p3 0.579 0.517 0.41)\",\n gold10: \"color(display-p3 0.628 0.566 0.463)\",\n gold11: \"color(display-p3 0.784 0.728 0.635)\",\n gold12: \"color(display-p3 0.906 0.887 0.855)\",\n};\nconst goldDarkP3A = {\n goldA1: \"color(display-p3 0.855 0.855 0.071 / 0.005)\",\n goldA2: \"color(display-p3 0.98 0.89 0.616 / 0.043)\",\n goldA3: \"color(display-p3 1 0.949 0.753 / 0.08)\",\n goldA4: \"color(display-p3 1 0.933 0.8 / 0.118)\",\n goldA5: \"color(display-p3 1 0.949 0.804 / 0.16)\",\n goldA6: \"color(display-p3 1 0.925 0.8 / 0.215)\",\n goldA7: \"color(display-p3 1 0.945 0.831 / 0.278)\",\n goldA8: \"color(display-p3 1 0.937 0.82 / 0.366)\",\n goldA9: \"color(display-p3 0.996 0.882 0.69 / 0.551)\",\n goldA10: \"color(display-p3 1 0.894 0.725 / 0.601)\",\n goldA11: \"color(display-p3 0.784 0.728 0.635)\",\n goldA12: \"color(display-p3 0.906 0.887 0.855)\",\n};\nconst skyDark = {\n sky1: \"#0d141f\",\n sky2: \"#111a27\",\n sky3: \"#112840\",\n sky4: \"#113555\",\n sky5: \"#154467\",\n sky6: \"#1b537b\",\n sky7: \"#1f6692\",\n sky8: \"#197cae\",\n sky9: \"#7ce2fe\",\n sky10: \"#a8eeff\",\n sky11: \"#75c7f0\",\n sky12: \"#c2f3ff\",\n};\nconst skyDarkA = {\n skyA1: \"#0044ff0f\",\n skyA2: \"#1171fb18\",\n skyA3: \"#1184fc33\",\n skyA4: \"#128fff49\",\n skyA5: \"#1c9dfd5d\",\n skyA6: \"#28a5ff72\",\n skyA7: \"#2badfe8b\",\n skyA8: \"#1db2fea9\",\n skyA9: \"#7ce3fffe\",\n skyA10: \"#a8eeff\",\n skyA11: \"#7cd3ffef\",\n skyA12: \"#c2f3ff\",\n};\nconst skyDarkP3 = {\n sky1: \"color(display-p3 0.056 0.078 0.116)\",\n sky2: \"color(display-p3 0.075 0.101 0.149)\",\n sky3: \"color(display-p3 0.089 0.154 0.244)\",\n sky4: \"color(display-p3 0.106 0.207 0.323)\",\n sky5: \"color(display-p3 0.135 0.261 0.394)\",\n sky6: \"color(display-p3 0.17 0.322 0.469)\",\n sky7: \"color(display-p3 0.205 0.394 0.557)\",\n sky8: \"color(display-p3 0.232 0.48 0.665)\",\n sky9: \"color(display-p3 0.585 0.877 0.983)\",\n sky10: \"color(display-p3 0.718 0.925 0.991)\",\n sky11: \"color(display-p3 0.536 0.772 0.924)\",\n sky12: \"color(display-p3 0.799 0.947 0.993)\",\n};\nconst skyDarkP3A = {\n skyA1: \"color(display-p3 0 0.282 0.996 / 0.055)\",\n skyA2: \"color(display-p3 0.157 0.467 0.992 / 0.089)\",\n skyA3: \"color(display-p3 0.192 0.522 0.996 / 0.19)\",\n skyA4: \"color(display-p3 0.212 0.584 1 / 0.274)\",\n skyA5: \"color(display-p3 0.259 0.631 1 / 0.349)\",\n skyA6: \"color(display-p3 0.302 0.655 1 / 0.433)\",\n skyA7: \"color(display-p3 0.329 0.686 1 / 0.526)\",\n skyA8: \"color(display-p3 0.325 0.71 1 / 0.643)\",\n skyA9: \"color(display-p3 0.592 0.894 1 / 0.984)\",\n skyA10: \"color(display-p3 0.722 0.933 1 / 0.992)\",\n skyA11: \"color(display-p3 0.536 0.772 0.924)\",\n skyA12: \"color(display-p3 0.799 0.947 0.993)\",\n};\nconst mintDark = {\n mint1: \"#0e1515\",\n mint2: \"#0f1b1b\",\n mint3: \"#092c2b\",\n mint4: \"#003a38\",\n mint5: \"#004744\",\n mint6: \"#105650\",\n mint7: \"#1e685f\",\n mint8: \"#277f70\",\n mint9: \"#86ead4\",\n mint10: \"#a8f5e5\",\n mint11: \"#58d5ba\",\n mint12: \"#c4f5e1\",\n};\nconst mintDarkA = {\n mintA1: \"#00dede05\",\n mintA2: \"#00f9f90b\",\n mintA3: \"#00fff61d\",\n mintA4: \"#00fff42c\",\n mintA5: \"#00fff23a\",\n mintA6: \"#0effeb4a\",\n mintA7: \"#34fde55e\",\n mintA8: \"#41ffdf76\",\n mintA9: \"#92ffe7e9\",\n mintA10: \"#aefeedf5\",\n mintA11: \"#67ffded2\",\n mintA12: \"#cbfee9f5\",\n};\nconst mintDarkP3 = {\n mint1: \"color(display-p3 0.059 0.082 0.081)\",\n mint2: \"color(display-p3 0.068 0.104 0.105)\",\n mint3: \"color(display-p3 0.077 0.17 0.168)\",\n mint4: \"color(display-p3 0.068 0.224 0.22)\",\n mint5: \"color(display-p3 0.104 0.275 0.264)\",\n mint6: \"color(display-p3 0.154 0.332 0.313)\",\n mint7: \"color(display-p3 0.207 0.403 0.373)\",\n mint8: \"color(display-p3 0.258 0.49 0.441)\",\n mint9: \"color(display-p3 0.62 0.908 0.834)\",\n mint10: \"color(display-p3 0.725 0.954 0.898)\",\n mint11: \"color(display-p3 0.482 0.825 0.733)\",\n mint12: \"color(display-p3 0.807 0.955 0.887)\",\n};\nconst mintDarkP3A = {\n mintA1: \"color(display-p3 0 0.992 0.992 / 0.017)\",\n mintA2: \"color(display-p3 0.071 0.98 0.98 / 0.043)\",\n mintA3: \"color(display-p3 0.176 0.996 0.996 / 0.11)\",\n mintA4: \"color(display-p3 0.071 0.996 0.973 / 0.169)\",\n mintA5: \"color(display-p3 0.243 1 0.949 / 0.223)\",\n mintA6: \"color(display-p3 0.369 1 0.933 / 0.286)\",\n mintA7: \"color(display-p3 0.459 1 0.914 / 0.362)\",\n mintA8: \"color(display-p3 0.49 1 0.89 / 0.454)\",\n mintA9: \"color(display-p3 0.678 0.996 0.914 / 0.904)\",\n mintA10: \"color(display-p3 0.761 1 0.941 / 0.95)\",\n mintA11: \"color(display-p3 0.482 0.825 0.733)\",\n mintA12: \"color(display-p3 0.807 0.955 0.887)\",\n};\nconst limeDark = {\n lime1: \"#11130c\",\n lime2: \"#151a10\",\n lime3: \"#1f2917\",\n lime4: \"#29371d\",\n lime5: \"#334423\",\n lime6: \"#3d522a\",\n lime7: \"#496231\",\n lime8: \"#577538\",\n lime9: \"#bdee63\",\n lime10: \"#d4ff70\",\n lime11: \"#bde56c\",\n lime12: \"#e3f7ba\",\n};\nconst limeDarkA = {\n limeA1: \"#11bb0003\",\n limeA2: \"#78f7000a\",\n limeA3: \"#9bfd4c1a\",\n limeA4: \"#a7fe5c29\",\n limeA5: \"#affe6537\",\n limeA6: \"#b2fe6d46\",\n limeA7: \"#b6ff6f57\",\n limeA8: \"#b6fd6d6c\",\n limeA9: \"#caff69ed\",\n limeA10: \"#d4ff70\",\n limeA11: \"#d1fe77e4\",\n limeA12: \"#e9febff7\",\n};\nconst limeDarkP3 = {\n lime1: \"color(display-p3 0.067 0.073 0.048)\",\n lime2: \"color(display-p3 0.086 0.1 0.067)\",\n lime3: \"color(display-p3 0.13 0.16 0.099)\",\n lime4: \"color(display-p3 0.172 0.214 0.126)\",\n lime5: \"color(display-p3 0.213 0.266 0.153)\",\n lime6: \"color(display-p3 0.257 0.321 0.182)\",\n lime7: \"color(display-p3 0.307 0.383 0.215)\",\n lime8: \"color(display-p3 0.365 0.456 0.25)\",\n lime9: \"color(display-p3 0.78 0.928 0.466)\",\n lime10: \"color(display-p3 0.865 0.995 0.519)\",\n lime11: \"color(display-p3 0.771 0.893 0.485)\",\n lime12: \"color(display-p3 0.905 0.966 0.753)\",\n};\nconst limeDarkP3A = {\n limeA1: \"color(display-p3 0.067 0.941 0 / 0.009)\",\n limeA2: \"color(display-p3 0.584 0.996 0.071 / 0.038)\",\n limeA3: \"color(display-p3 0.69 1 0.38 / 0.101)\",\n limeA4: \"color(display-p3 0.729 1 0.435 / 0.16)\",\n limeA5: \"color(display-p3 0.745 1 0.471 / 0.215)\",\n limeA6: \"color(display-p3 0.769 1 0.482 / 0.274)\",\n limeA7: \"color(display-p3 0.769 1 0.506 / 0.341)\",\n limeA8: \"color(display-p3 0.784 1 0.51 / 0.416)\",\n limeA9: \"color(display-p3 0.839 1 0.502 / 0.925)\",\n limeA10: \"color(display-p3 0.871 1 0.522 / 0.996)\",\n limeA11: \"color(display-p3 0.771 0.893 0.485)\",\n limeA12: \"color(display-p3 0.905 0.966 0.753)\",\n};\nconst yellowDark = {\n yellow1: \"#14120b\",\n yellow2: \"#1b180f\",\n yellow3: \"#2d2305\",\n yellow4: \"#362b00\",\n yellow5: \"#433500\",\n yellow6: \"#524202\",\n yellow7: \"#665417\",\n yellow8: \"#836a21\",\n yellow9: \"#ffe629\",\n yellow10: \"#ffff57\",\n yellow11: \"#f5e147\",\n yellow12: \"#f6eeb4\",\n};\nconst yellowDarkA = {\n yellowA1: \"#d1510004\",\n yellowA2: \"#f9b4000b\",\n yellowA3: \"#ffaa001e\",\n yellowA4: \"#fdb70028\",\n yellowA5: \"#febb0036\",\n yellowA6: \"#fec40046\",\n yellowA7: \"#fdcb225c\",\n yellowA8: \"#fdca327b\",\n yellowA9: \"#ffe629\",\n yellowA10: \"#ffff57\",\n yellowA11: \"#fee949f5\",\n yellowA12: \"#fef6baf6\",\n};\nconst yellowDarkP3 = {\n yellow1: \"color(display-p3 0.078 0.069 0.047)\",\n yellow2: \"color(display-p3 0.103 0.094 0.063)\",\n yellow3: \"color(display-p3 0.168 0.137 0.039)\",\n yellow4: \"color(display-p3 0.209 0.169 0)\",\n yellow5: \"color(display-p3 0.255 0.209 0)\",\n yellow6: \"color(display-p3 0.31 0.261 0.07)\",\n yellow7: \"color(display-p3 0.389 0.331 0.135)\",\n yellow8: \"color(display-p3 0.497 0.42 0.182)\",\n yellow9: \"color(display-p3 1 0.92 0.22)\",\n yellow10: \"color(display-p3 1 1 0.456)\",\n yellow11: \"color(display-p3 0.948 0.885 0.392)\",\n yellow12: \"color(display-p3 0.959 0.934 0.731)\",\n};\nconst yellowDarkP3A = {\n yellowA1: \"color(display-p3 0.973 0.369 0 / 0.013)\",\n yellowA2: \"color(display-p3 0.996 0.792 0 / 0.038)\",\n yellowA3: \"color(display-p3 0.996 0.71 0 / 0.11)\",\n yellowA4: \"color(display-p3 0.996 0.741 0 / 0.152)\",\n yellowA5: \"color(display-p3 0.996 0.765 0 / 0.202)\",\n yellowA6: \"color(display-p3 0.996 0.816 0.082 / 0.261)\",\n yellowA7: \"color(display-p3 1 0.831 0.263 / 0.345)\",\n yellowA8: \"color(display-p3 1 0.831 0.314 / 0.463)\",\n yellowA9: \"color(display-p3 1 0.922 0.22)\",\n yellowA10: \"color(display-p3 1 1 0.455)\",\n yellowA11: \"color(display-p3 0.948 0.885 0.392)\",\n yellowA12: \"color(display-p3 0.959 0.934 0.731)\",\n};\nconst amberDark = {\n amber1: \"#16120c\",\n amber2: \"#1d180f\",\n amber3: \"#302008\",\n amber4: \"#3f2700\",\n amber5: \"#4d3000\",\n amber6: \"#5c3d05\",\n amber7: \"#714f19\",\n amber8: \"#8f6424\",\n amber9: \"#ffc53d\",\n amber10: \"#ffd60a\",\n amber11: \"#ffca16\",\n amber12: \"#ffe7b3\",\n};\nconst amberDarkA = {\n amberA1: \"#e63c0006\",\n amberA2: \"#fd9b000d\",\n amberA3: \"#fa820022\",\n amberA4: \"#fc820032\",\n amberA5: \"#fd8b0041\",\n amberA6: \"#fd9b0051\",\n amberA7: \"#ffab2567\",\n amberA8: \"#ffae3587\",\n amberA9: \"#ffc53d\",\n amberA10: \"#ffd60a\",\n amberA11: \"#ffca16\",\n amberA12: \"#ffe7b3\",\n};\nconst amberDarkP3 = {\n amber1: \"color(display-p3 0.082 0.07 0.05)\",\n amber2: \"color(display-p3 0.111 0.094 0.064)\",\n amber3: \"color(display-p3 0.178 0.128 0.049)\",\n amber4: \"color(display-p3 0.239 0.156 0)\",\n amber5: \"color(display-p3 0.29 0.193 0)\",\n amber6: \"color(display-p3 0.344 0.245 0.076)\",\n amber7: \"color(display-p3 0.422 0.314 0.141)\",\n amber8: \"color(display-p3 0.535 0.399 0.189)\",\n amber9: \"color(display-p3 1 0.77 0.26)\",\n amber10: \"color(display-p3 1 0.87 0.15)\",\n amber11: \"color(display-p3 1 0.8 0.29)\",\n amber12: \"color(display-p3 0.984 0.909 0.726)\",\n};\nconst amberDarkP3A = {\n amberA1: \"color(display-p3 0.992 0.298 0 / 0.017)\",\n amberA2: \"color(display-p3 0.988 0.651 0 / 0.047)\",\n amberA3: \"color(display-p3 1 0.6 0 / 0.118)\",\n amberA4: \"color(display-p3 1 0.557 0 / 0.185)\",\n amberA5: \"color(display-p3 1 0.592 0 / 0.24)\",\n amberA6: \"color(display-p3 1 0.659 0.094 / 0.299)\",\n amberA7: \"color(display-p3 1 0.714 0.263 / 0.383)\",\n amberA8: \"color(display-p3 0.996 0.729 0.306 / 0.5)\",\n amberA9: \"color(display-p3 1 0.769 0.259)\",\n amberA10: \"color(display-p3 1 0.871 0.149)\",\n amberA11: \"color(display-p3 1 0.8 0.29)\",\n amberA12: \"color(display-p3 0.984 0.909 0.726)\",\n};\nconst orangeDark = {\n orange1: \"#17120e\",\n orange2: \"#1e160f\",\n orange3: \"#331e0b\",\n orange4: \"#462100\",\n orange5: \"#562800\",\n orange6: \"#66350c\",\n orange7: \"#7e451d\",\n orange8: \"#a35829\",\n orange9: \"#f76b15\",\n orange10: \"#ff801f\",\n orange11: \"#ffa057\",\n orange12: \"#ffe0c2\",\n};\nconst orangeDarkA = {\n orangeA1: \"#ec360007\",\n orangeA2: \"#fe6d000e\",\n orangeA3: \"#fb6a0025\",\n orangeA4: \"#ff590039\",\n orangeA5: \"#ff61004a\",\n orangeA6: \"#fd75045c\",\n orangeA7: \"#ff832c75\",\n orangeA8: \"#fe84389d\",\n orangeA9: \"#fe6d15f7\",\n orangeA10: \"#ff801f\",\n orangeA11: \"#ffa057\",\n orangeA12: \"#ffe0c2\",\n};\nconst orangeDarkP3 = {\n orange1: \"color(display-p3 0.088 0.07 0.057)\",\n orange2: \"color(display-p3 0.113 0.089 0.061)\",\n orange3: \"color(display-p3 0.189 0.12 0.056)\",\n orange4: \"color(display-p3 0.262 0.132 0)\",\n orange5: \"color(display-p3 0.315 0.168 0.016)\",\n orange6: \"color(display-p3 0.376 0.219 0.088)\",\n orange7: \"color(display-p3 0.465 0.283 0.147)\",\n orange8: \"color(display-p3 0.601 0.359 0.201)\",\n orange9: \"color(display-p3 0.9 0.45 0.2)\",\n orange10: \"color(display-p3 0.98 0.51 0.23)\",\n orange11: \"color(display-p3 1 0.63 0.38)\",\n orange12: \"color(display-p3 0.98 0.883 0.775)\",\n};\nconst orangeDarkP3A = {\n orangeA1: \"color(display-p3 0.961 0.247 0 / 0.022)\",\n orangeA2: \"color(display-p3 0.992 0.529 0 / 0.051)\",\n orangeA3: \"color(display-p3 0.996 0.486 0 / 0.131)\",\n orangeA4: \"color(display-p3 0.996 0.384 0 / 0.211)\",\n orangeA5: \"color(display-p3 1 0.455 0 / 0.265)\",\n orangeA6: \"color(display-p3 1 0.529 0.129 / 0.332)\",\n orangeA7: \"color(display-p3 1 0.569 0.251 / 0.429)\",\n orangeA8: \"color(display-p3 1 0.584 0.302 / 0.572)\",\n orangeA9: \"color(display-p3 1 0.494 0.216 / 0.895)\",\n orangeA10: \"color(display-p3 1 0.522 0.235 / 0.979)\",\n orangeA11: \"color(display-p3 1 0.63 0.38)\",\n orangeA12: \"color(display-p3 0.98 0.883 0.775)\",\n};\n\nconst gray = {\n gray1: \"#fcfcfc\",\n gray2: \"#f9f9f9\",\n gray3: \"#f0f0f0\",\n gray4: \"#e8e8e8\",\n gray5: \"#e0e0e0\",\n gray6: \"#d9d9d9\",\n gray7: \"#cecece\",\n gray8: \"#bbbbbb\",\n gray9: \"#8d8d8d\",\n gray10: \"#838383\",\n gray11: \"#646464\",\n gray12: \"#202020\",\n};\nconst grayA = {\n grayA1: \"#00000003\",\n grayA2: \"#00000006\",\n grayA3: \"#0000000f\",\n grayA4: \"#00000017\",\n grayA5: \"#0000001f\",\n grayA6: \"#00000026\",\n grayA7: \"#00000031\",\n grayA8: \"#00000044\",\n grayA9: \"#00000072\",\n grayA10: \"#0000007c\",\n grayA11: \"#0000009b\",\n grayA12: \"#000000df\",\n};\nconst grayP3 = {\n gray1: \"color(display-p3 0.988 0.988 0.988)\",\n gray2: \"color(display-p3 0.975 0.975 0.975)\",\n gray3: \"color(display-p3 0.939 0.939 0.939)\",\n gray4: \"color(display-p3 0.908 0.908 0.908)\",\n gray5: \"color(display-p3 0.88 0.88 0.88)\",\n gray6: \"color(display-p3 0.849 0.849 0.849)\",\n gray7: \"color(display-p3 0.807 0.807 0.807)\",\n gray8: \"color(display-p3 0.732 0.732 0.732)\",\n gray9: \"color(display-p3 0.553 0.553 0.553)\",\n gray10: \"color(display-p3 0.512 0.512 0.512)\",\n gray11: \"color(display-p3 0.392 0.392 0.392)\",\n gray12: \"color(display-p3 0.125 0.125 0.125)\",\n};\nconst grayP3A = {\n grayA1: \"color(display-p3 0 0 0 / 0.012)\",\n grayA2: \"color(display-p3 0 0 0 / 0.024)\",\n grayA3: \"color(display-p3 0 0 0 / 0.063)\",\n grayA4: \"color(display-p3 0 0 0 / 0.09)\",\n grayA5: \"color(display-p3 0 0 0 / 0.122)\",\n grayA6: \"color(display-p3 0 0 0 / 0.153)\",\n grayA7: \"color(display-p3 0 0 0 / 0.192)\",\n grayA8: \"color(display-p3 0 0 0 / 0.267)\",\n grayA9: \"color(display-p3 0 0 0 / 0.447)\",\n grayA10: \"color(display-p3 0 0 0 / 0.486)\",\n grayA11: \"color(display-p3 0 0 0 / 0.608)\",\n grayA12: \"color(display-p3 0 0 0 / 0.875)\",\n};\nconst mauve = {\n mauve1: \"#fdfcfd\",\n mauve2: \"#faf9fb\",\n mauve3: \"#f2eff3\",\n mauve4: \"#eae7ec\",\n mauve5: \"#e3dfe6\",\n mauve6: \"#dbd8e0\",\n mauve7: \"#d0cdd7\",\n mauve8: \"#bcbac7\",\n mauve9: \"#8e8c99\",\n mauve10: \"#84828e\",\n mauve11: \"#65636d\",\n mauve12: \"#211f26\",\n};\nconst mauveA = {\n mauveA1: \"#55005503\",\n mauveA2: \"#2b005506\",\n mauveA3: \"#30004010\",\n mauveA4: \"#20003618\",\n mauveA5: \"#20003820\",\n mauveA6: \"#14003527\",\n mauveA7: \"#10003332\",\n mauveA8: \"#08003145\",\n mauveA9: \"#05001d73\",\n mauveA10: \"#0500197d\",\n mauveA11: \"#0400119c\",\n mauveA12: \"#020008e0\",\n};\nconst mauveP3 = {\n mauve1: \"color(display-p3 0.991 0.988 0.992)\",\n mauve2: \"color(display-p3 0.98 0.976 0.984)\",\n mauve3: \"color(display-p3 0.946 0.938 0.952)\",\n mauve4: \"color(display-p3 0.915 0.906 0.925)\",\n mauve5: \"color(display-p3 0.886 0.876 0.901)\",\n mauve6: \"color(display-p3 0.856 0.846 0.875)\",\n mauve7: \"color(display-p3 0.814 0.804 0.84)\",\n mauve8: \"color(display-p3 0.735 0.728 0.777)\",\n mauve9: \"color(display-p3 0.555 0.549 0.596)\",\n mauve10: \"color(display-p3 0.514 0.508 0.552)\",\n mauve11: \"color(display-p3 0.395 0.388 0.424)\",\n mauve12: \"color(display-p3 0.128 0.122 0.147)\",\n};\nconst mauveP3A = {\n mauveA1: \"color(display-p3 0.349 0.024 0.349 / 0.012)\",\n mauveA2: \"color(display-p3 0.184 0.024 0.349 / 0.024)\",\n mauveA3: \"color(display-p3 0.129 0.008 0.255 / 0.063)\",\n mauveA4: \"color(display-p3 0.094 0.012 0.216 / 0.095)\",\n mauveA5: \"color(display-p3 0.098 0.008 0.224 / 0.126)\",\n mauveA6: \"color(display-p3 0.055 0.004 0.18 / 0.153)\",\n mauveA7: \"color(display-p3 0.067 0.008 0.184 / 0.197)\",\n mauveA8: \"color(display-p3 0.02 0.004 0.176 / 0.271)\",\n mauveA9: \"color(display-p3 0.02 0.004 0.106 / 0.451)\",\n mauveA10: \"color(display-p3 0.012 0.004 0.09 / 0.491)\",\n mauveA11: \"color(display-p3 0.016 0 0.059 / 0.612)\",\n mauveA12: \"color(display-p3 0.008 0 0.027 / 0.879)\",\n};\nconst slate = {\n slate1: \"#fcfcfd\",\n slate2: \"#f9f9fb\",\n slate3: \"#f0f0f3\",\n slate4: \"#e8e8ec\",\n slate5: \"#e0e1e6\",\n slate6: \"#d9d9e0\",\n slate7: \"#cdced6\",\n slate8: \"#b9bbc6\",\n slate9: \"#8b8d98\",\n slate10: \"#80838d\",\n slate11: \"#60646c\",\n slate12: \"#1c2024\",\n};\nconst slateA = {\n slateA1: \"#00005503\",\n slateA2: \"#00005506\",\n slateA3: \"#0000330f\",\n slateA4: \"#00002d17\",\n slateA5: \"#0009321f\",\n slateA6: \"#00002f26\",\n slateA7: \"#00062e32\",\n slateA8: \"#00083046\",\n slateA9: \"#00051d74\",\n slateA10: \"#00071b7f\",\n slateA11: \"#0007149f\",\n slateA12: \"#000509e3\",\n};\nconst slateP3 = {\n slate1: \"color(display-p3 0.988 0.988 0.992)\",\n slate2: \"color(display-p3 0.976 0.976 0.984)\",\n slate3: \"color(display-p3 0.94 0.941 0.953)\",\n slate4: \"color(display-p3 0.908 0.909 0.925)\",\n slate5: \"color(display-p3 0.88 0.881 0.901)\",\n slate6: \"color(display-p3 0.85 0.852 0.876)\",\n slate7: \"color(display-p3 0.805 0.808 0.838)\",\n slate8: \"color(display-p3 0.727 0.733 0.773)\",\n slate9: \"color(display-p3 0.547 0.553 0.592)\",\n slate10: \"color(display-p3 0.503 0.512 0.549)\",\n slate11: \"color(display-p3 0.379 0.392 0.421)\",\n slate12: \"color(display-p3 0.113 0.125 0.14)\",\n};\nconst slateP3A = {\n slateA1: \"color(display-p3 0.024 0.024 0.349 / 0.012)\",\n slateA2: \"color(display-p3 0.024 0.024 0.349 / 0.024)\",\n slateA3: \"color(display-p3 0.004 0.004 0.204 / 0.059)\",\n slateA4: \"color(display-p3 0.012 0.012 0.184 / 0.091)\",\n slateA5: \"color(display-p3 0.004 0.039 0.2 / 0.122)\",\n slateA6: \"color(display-p3 0.008 0.008 0.165 / 0.15)\",\n slateA7: \"color(display-p3 0.008 0.027 0.184 / 0.197)\",\n slateA8: \"color(display-p3 0.004 0.031 0.176 / 0.275)\",\n slateA9: \"color(display-p3 0.004 0.02 0.106 / 0.455)\",\n slateA10: \"color(display-p3 0.004 0.027 0.098 / 0.499)\",\n slateA11: \"color(display-p3 0 0.02 0.063 / 0.62)\",\n slateA12: \"color(display-p3 0 0.012 0.031 / 0.887)\",\n};\nconst sage = {\n sage1: \"#fbfdfc\",\n sage2: \"#f7f9f8\",\n sage3: \"#eef1f0\",\n sage4: \"#e6e9e8\",\n sage5: \"#dfe2e0\",\n sage6: \"#d7dad9\",\n sage7: \"#cbcfcd\",\n sage8: \"#b8bcba\",\n sage9: \"#868e8b\",\n sage10: \"#7c8481\",\n sage11: \"#5f6563\",\n sage12: \"#1a211e\",\n};\nconst sageA = {\n sageA1: \"#00804004\",\n sageA2: \"#00402008\",\n sageA3: \"#002d1e11\",\n sageA4: \"#001f1519\",\n sageA5: \"#00180820\",\n sageA6: \"#00140d28\",\n sageA7: \"#00140a34\",\n sageA8: \"#000f0847\",\n sageA9: \"#00110b79\",\n sageA10: \"#00100a83\",\n sageA11: \"#000a07a0\",\n sageA12: \"#000805e5\",\n};\nconst sageP3 = {\n sage1: \"color(display-p3 0.986 0.992 0.988)\",\n sage2: \"color(display-p3 0.97 0.977 0.974)\",\n sage3: \"color(display-p3 0.935 0.944 0.94)\",\n sage4: \"color(display-p3 0.904 0.913 0.909)\",\n sage5: \"color(display-p3 0.875 0.885 0.88)\",\n sage6: \"color(display-p3 0.844 0.854 0.849)\",\n sage7: \"color(display-p3 0.8 0.811 0.806)\",\n sage8: \"color(display-p3 0.725 0.738 0.732)\",\n sage9: \"color(display-p3 0.531 0.556 0.546)\",\n sage10: \"color(display-p3 0.492 0.515 0.506)\",\n sage11: \"color(display-p3 0.377 0.395 0.389)\",\n sage12: \"color(display-p3 0.107 0.129 0.118)\",\n};\nconst sageP3A = {\n sageA1: \"color(display-p3 0.024 0.514 0.267 / 0.016)\",\n sageA2: \"color(display-p3 0.02 0.267 0.145 / 0.032)\",\n sageA3: \"color(display-p3 0.008 0.184 0.125 / 0.067)\",\n sageA4: \"color(display-p3 0.012 0.094 0.051 / 0.095)\",\n sageA5: \"color(display-p3 0.008 0.098 0.035 / 0.126)\",\n sageA6: \"color(display-p3 0.004 0.078 0.027 / 0.157)\",\n sageA7: \"color(display-p3 0 0.059 0.039 / 0.2)\",\n sageA8: \"color(display-p3 0.004 0.047 0.031 / 0.275)\",\n sageA9: \"color(display-p3 0.004 0.059 0.035 / 0.471)\",\n sageA10: \"color(display-p3 0 0.047 0.031 / 0.51)\",\n sageA11: \"color(display-p3 0 0.031 0.02 / 0.624)\",\n sageA12: \"color(display-p3 0 0.027 0.012 / 0.895)\",\n};\nconst olive = {\n olive1: \"#fcfdfc\",\n olive2: \"#f8faf8\",\n olive3: \"#eff1ef\",\n olive4: \"#e7e9e7\",\n olive5: \"#dfe2df\",\n olive6: \"#d7dad7\",\n olive7: \"#cccfcc\",\n olive8: \"#b9bcb8\",\n olive9: \"#898e87\",\n olive10: \"#7f847d\",\n olive11: \"#60655f\",\n olive12: \"#1d211c\",\n};\nconst oliveA = {\n oliveA1: \"#00550003\",\n oliveA2: \"#00490007\",\n oliveA3: \"#00200010\",\n oliveA4: \"#00160018\",\n oliveA5: \"#00180020\",\n oliveA6: \"#00140028\",\n oliveA7: \"#000f0033\",\n oliveA8: \"#040f0047\",\n oliveA9: \"#050f0078\",\n oliveA10: \"#040e0082\",\n oliveA11: \"#020a00a0\",\n oliveA12: \"#010600e3\",\n};\nconst oliveP3 = {\n olive1: \"color(display-p3 0.989 0.992 0.989)\",\n olive2: \"color(display-p3 0.974 0.98 0.973)\",\n olive3: \"color(display-p3 0.939 0.945 0.937)\",\n olive4: \"color(display-p3 0.907 0.914 0.905)\",\n olive5: \"color(display-p3 0.878 0.885 0.875)\",\n olive6: \"color(display-p3 0.846 0.855 0.843)\",\n olive7: \"color(display-p3 0.803 0.812 0.8)\",\n olive8: \"color(display-p3 0.727 0.738 0.723)\",\n olive9: \"color(display-p3 0.541 0.556 0.532)\",\n olive10: \"color(display-p3 0.5 0.515 0.491)\",\n olive11: \"color(display-p3 0.38 0.395 0.374)\",\n olive12: \"color(display-p3 0.117 0.129 0.111)\",\n};\nconst oliveP3A = {\n oliveA1: \"color(display-p3 0.024 0.349 0.024 / 0.012)\",\n oliveA2: \"color(display-p3 0.024 0.302 0.024 / 0.028)\",\n oliveA3: \"color(display-p3 0.008 0.129 0.008 / 0.063)\",\n oliveA4: \"color(display-p3 0.012 0.094 0.012 / 0.095)\",\n oliveA5: \"color(display-p3 0.035 0.098 0.008 / 0.126)\",\n oliveA6: \"color(display-p3 0.027 0.078 0.004 / 0.157)\",\n oliveA7: \"color(display-p3 0.02 0.059 0 / 0.2)\",\n oliveA8: \"color(display-p3 0.02 0.059 0.004 / 0.279)\",\n oliveA9: \"color(display-p3 0.02 0.051 0.004 / 0.467)\",\n oliveA10: \"color(display-p3 0.024 0.047 0 / 0.51)\",\n oliveA11: \"color(display-p3 0.012 0.039 0 / 0.628)\",\n oliveA12: \"color(display-p3 0.008 0.024 0 / 0.891)\",\n};\nconst sand = {\n sand1: \"#fdfdfc\",\n sand2: \"#f9f9f8\",\n sand3: \"#f1f0ef\",\n sand4: \"#e9e8e6\",\n sand5: \"#e2e1de\",\n sand6: \"#dad9d6\",\n sand7: \"#cfceca\",\n sand8: \"#bcbbb5\",\n sand9: \"#8d8d86\",\n sand10: \"#82827c\",\n sand11: \"#63635e\",\n sand12: \"#21201c\",\n};\nconst sandA = {\n sandA1: \"#55550003\",\n sandA2: \"#25250007\",\n sandA3: \"#20100010\",\n sandA4: \"#1f150019\",\n sandA5: \"#1f180021\",\n sandA6: \"#19130029\",\n sandA7: \"#19140035\",\n sandA8: \"#1915014a\",\n sandA9: \"#0f0f0079\",\n sandA10: \"#0c0c0083\",\n sandA11: \"#080800a1\",\n sandA12: \"#060500e3\",\n};\nconst sandP3 = {\n sand1: \"color(display-p3 0.992 0.992 0.989)\",\n sand2: \"color(display-p3 0.977 0.977 0.973)\",\n sand3: \"color(display-p3 0.943 0.942 0.936)\",\n sand4: \"color(display-p3 0.913 0.912 0.903)\",\n sand5: \"color(display-p3 0.885 0.883 0.873)\",\n sand6: \"color(display-p3 0.854 0.852 0.839)\",\n sand7: \"color(display-p3 0.813 0.81 0.794)\",\n sand8: \"color(display-p3 0.738 0.734 0.713)\",\n sand9: \"color(display-p3 0.553 0.553 0.528)\",\n sand10: \"color(display-p3 0.511 0.511 0.488)\",\n sand11: \"color(display-p3 0.388 0.388 0.37)\",\n sand12: \"color(display-p3 0.129 0.126 0.111)\",\n};\nconst sandP3A = {\n sandA1: \"color(display-p3 0.349 0.349 0.024 / 0.012)\",\n sandA2: \"color(display-p3 0.161 0.161 0.024 / 0.028)\",\n sandA3: \"color(display-p3 0.067 0.067 0.008 / 0.063)\",\n sandA4: \"color(display-p3 0.129 0.129 0.012 / 0.099)\",\n sandA5: \"color(display-p3 0.098 0.067 0.008 / 0.126)\",\n sandA6: \"color(display-p3 0.102 0.075 0.004 / 0.161)\",\n sandA7: \"color(display-p3 0.098 0.098 0.004 / 0.208)\",\n sandA8: \"color(display-p3 0.086 0.075 0.004 / 0.287)\",\n sandA9: \"color(display-p3 0.051 0.051 0.004 / 0.471)\",\n sandA10: \"color(display-p3 0.047 0.047 0 / 0.514)\",\n sandA11: \"color(display-p3 0.031 0.031 0 / 0.632)\",\n sandA12: \"color(display-p3 0.024 0.02 0 / 0.891)\",\n};\nconst tomato = {\n tomato1: \"#fffcfc\",\n tomato2: \"#fff8f7\",\n tomato3: \"#feebe7\",\n tomato4: \"#ffdcd3\",\n tomato5: \"#ffcdc2\",\n tomato6: \"#fdbdaf\",\n tomato7: \"#f5a898\",\n tomato8: \"#ec8e7b\",\n tomato9: \"#e54d2e\",\n tomato10: \"#dd4425\",\n tomato11: \"#d13415\",\n tomato12: \"#5c271f\",\n};\nconst tomatoA = {\n tomatoA1: \"#ff000003\",\n tomatoA2: \"#ff200008\",\n tomatoA3: \"#f52b0018\",\n tomatoA4: \"#ff35002c\",\n tomatoA5: \"#ff2e003d\",\n tomatoA6: \"#f92d0050\",\n tomatoA7: \"#e7280067\",\n tomatoA8: \"#db250084\",\n tomatoA9: \"#df2600d1\",\n tomatoA10: \"#d72400da\",\n tomatoA11: \"#cd2200ea\",\n tomatoA12: \"#460900e0\",\n};\nconst tomatoP3 = {\n tomato1: \"color(display-p3 0.998 0.989 0.988)\",\n tomato2: \"color(display-p3 0.994 0.974 0.969)\",\n tomato3: \"color(display-p3 0.985 0.924 0.909)\",\n tomato4: \"color(display-p3 0.996 0.868 0.835)\",\n tomato5: \"color(display-p3 0.98 0.812 0.77)\",\n tomato6: \"color(display-p3 0.953 0.75 0.698)\",\n tomato7: \"color(display-p3 0.917 0.673 0.611)\",\n tomato8: \"color(display-p3 0.875 0.575 0.502)\",\n tomato9: \"color(display-p3 0.831 0.345 0.231)\",\n tomato10: \"color(display-p3 0.802 0.313 0.2)\",\n tomato11: \"color(display-p3 0.755 0.259 0.152)\",\n tomato12: \"color(display-p3 0.335 0.165 0.132)\",\n};\nconst tomatoP3A = {\n tomatoA1: \"color(display-p3 0.675 0.024 0.024 / 0.012)\",\n tomatoA2: \"color(display-p3 0.757 0.145 0.02 / 0.032)\",\n tomatoA3: \"color(display-p3 0.831 0.184 0.012 / 0.091)\",\n tomatoA4: \"color(display-p3 0.976 0.192 0.004 / 0.165)\",\n tomatoA5: \"color(display-p3 0.918 0.192 0.004 / 0.232)\",\n tomatoA6: \"color(display-p3 0.847 0.173 0.004 / 0.302)\",\n tomatoA7: \"color(display-p3 0.788 0.165 0.004 / 0.389)\",\n tomatoA8: \"color(display-p3 0.749 0.153 0.004 / 0.499)\",\n tomatoA9: \"color(display-p3 0.78 0.149 0 / 0.769)\",\n tomatoA10: \"color(display-p3 0.757 0.141 0 / 0.8)\",\n tomatoA11: \"color(display-p3 0.755 0.259 0.152)\",\n tomatoA12: \"color(display-p3 0.335 0.165 0.132)\",\n};\nconst red = {\n red1: \"#fffcfc\",\n red2: \"#fff7f7\",\n red3: \"#feebec\",\n red4: \"#ffdbdc\",\n red5: \"#ffcdce\",\n red6: \"#fdbdbe\",\n red7: \"#f4a9aa\",\n red8: \"#eb8e90\",\n red9: \"#e5484d\",\n red10: \"#dc3e42\",\n red11: \"#ce2c31\",\n red12: \"#641723\",\n};\nconst redA = {\n redA1: \"#ff000003\",\n redA2: \"#ff000008\",\n redA3: \"#f3000d14\",\n redA4: \"#ff000824\",\n redA5: \"#ff000632\",\n redA6: \"#f8000442\",\n redA7: \"#df000356\",\n redA8: \"#d2000571\",\n redA9: \"#db0007b7\",\n redA10: \"#d10005c1\",\n redA11: \"#c40006d3\",\n redA12: \"#55000de8\",\n};\nconst redP3 = {\n red1: \"color(display-p3 0.998 0.989 0.988)\",\n red2: \"color(display-p3 0.995 0.971 0.971)\",\n red3: \"color(display-p3 0.985 0.925 0.925)\",\n red4: \"color(display-p3 0.999 0.866 0.866)\",\n red5: \"color(display-p3 0.984 0.812 0.811)\",\n red6: \"color(display-p3 0.955 0.751 0.749)\",\n red7: \"color(display-p3 0.915 0.675 0.672)\",\n red8: \"color(display-p3 0.872 0.575 0.572)\",\n red9: \"color(display-p3 0.83 0.329 0.324)\",\n red10: \"color(display-p3 0.798 0.294 0.285)\",\n red11: \"color(display-p3 0.744 0.234 0.222)\",\n red12: \"color(display-p3 0.36 0.115 0.143)\",\n};\nconst redP3A = {\n redA1: \"color(display-p3 0.675 0.024 0.024 / 0.012)\",\n redA2: \"color(display-p3 0.863 0.024 0.024 / 0.028)\",\n redA3: \"color(display-p3 0.792 0.008 0.008 / 0.075)\",\n redA4: \"color(display-p3 1 0.008 0.008 / 0.134)\",\n redA5: \"color(display-p3 0.918 0.008 0.008 / 0.189)\",\n redA6: \"color(display-p3 0.831 0.02 0.004 / 0.251)\",\n redA7: \"color(display-p3 0.741 0.016 0.004 / 0.33)\",\n redA8: \"color(display-p3 0.698 0.012 0.004 / 0.428)\",\n redA9: \"color(display-p3 0.749 0.008 0 / 0.675)\",\n redA10: \"color(display-p3 0.714 0.012 0 / 0.714)\",\n redA11: \"color(display-p3 0.744 0.234 0.222)\",\n redA12: \"color(display-p3 0.36 0.115 0.143)\",\n};\nconst ruby = {\n ruby1: \"#fffcfd\",\n ruby2: \"#fff7f8\",\n ruby3: \"#feeaed\",\n ruby4: \"#ffdce1\",\n ruby5: \"#ffced6\",\n ruby6: \"#f8bfc8\",\n ruby7: \"#efacb8\",\n ruby8: \"#e592a3\",\n ruby9: \"#e54666\",\n ruby10: \"#dc3b5d\",\n ruby11: \"#ca244d\",\n ruby12: \"#64172b\",\n};\nconst rubyA = {\n rubyA1: \"#ff005503\",\n rubyA2: \"#ff002008\",\n rubyA3: \"#f3002515\",\n rubyA4: \"#ff002523\",\n rubyA5: \"#ff002a31\",\n rubyA6: \"#e4002440\",\n rubyA7: \"#ce002553\",\n rubyA8: \"#c300286d\",\n rubyA9: \"#db002cb9\",\n rubyA10: \"#d2002cc4\",\n rubyA11: \"#c10030db\",\n rubyA12: \"#550016e8\",\n};\nconst rubyP3 = {\n ruby1: \"color(display-p3 0.998 0.989 0.992)\",\n ruby2: \"color(display-p3 0.995 0.971 0.974)\",\n ruby3: \"color(display-p3 0.983 0.92 0.928)\",\n ruby4: \"color(display-p3 0.987 0.869 0.885)\",\n ruby5: \"color(display-p3 0.968 0.817 0.839)\",\n ruby6: \"color(display-p3 0.937 0.758 0.786)\",\n ruby7: \"color(display-p3 0.897 0.685 0.721)\",\n ruby8: \"color(display-p3 0.851 0.588 0.639)\",\n ruby9: \"color(display-p3 0.83 0.323 0.408)\",\n ruby10: \"color(display-p3 0.795 0.286 0.375)\",\n ruby11: \"color(display-p3 0.728 0.211 0.311)\",\n ruby12: \"color(display-p3 0.36 0.115 0.171)\",\n};\nconst rubyP3A = {\n rubyA1: \"color(display-p3 0.675 0.024 0.349 / 0.012)\",\n rubyA2: \"color(display-p3 0.863 0.024 0.024 / 0.028)\",\n rubyA3: \"color(display-p3 0.804 0.008 0.11 / 0.079)\",\n rubyA4: \"color(display-p3 0.91 0.008 0.125 / 0.13)\",\n rubyA5: \"color(display-p3 0.831 0.004 0.133 / 0.185)\",\n rubyA6: \"color(display-p3 0.745 0.004 0.118 / 0.244)\",\n rubyA7: \"color(display-p3 0.678 0.004 0.114 / 0.314)\",\n rubyA8: \"color(display-p3 0.639 0.004 0.125 / 0.412)\",\n rubyA9: \"color(display-p3 0.753 0 0.129 / 0.679)\",\n rubyA10: \"color(display-p3 0.714 0 0.125 / 0.714)\",\n rubyA11: \"color(display-p3 0.728 0.211 0.311)\",\n rubyA12: \"color(display-p3 0.36 0.115 0.171)\",\n};\nconst crimson = {\n crimson1: \"#fffcfd\",\n crimson2: \"#fef7f9\",\n crimson3: \"#ffe9f0\",\n crimson4: \"#fedce7\",\n crimson5: \"#facedd\",\n crimson6: \"#f3bed1\",\n crimson7: \"#eaacc3\",\n crimson8: \"#e093b2\",\n crimson9: \"#e93d82\",\n crimson10: \"#df3478\",\n crimson11: \"#cb1d63\",\n crimson12: \"#621639\",\n};\nconst crimsonA = {\n crimsonA1: \"#ff005503\",\n crimsonA2: \"#e0004008\",\n crimsonA3: \"#ff005216\",\n crimsonA4: \"#f8005123\",\n crimsonA5: \"#e5004f31\",\n crimsonA6: \"#d0004b41\",\n crimsonA7: \"#bf004753\",\n crimsonA8: \"#b6004a6c\",\n crimsonA9: \"#e2005bc2\",\n crimsonA10: \"#d70056cb\",\n crimsonA11: \"#c4004fe2\",\n crimsonA12: \"#530026e9\",\n};\nconst crimsonP3 = {\n crimson1: \"color(display-p3 0.998 0.989 0.992)\",\n crimson2: \"color(display-p3 0.991 0.969 0.976)\",\n crimson3: \"color(display-p3 0.987 0.917 0.941)\",\n crimson4: \"color(display-p3 0.975 0.866 0.904)\",\n crimson5: \"color(display-p3 0.953 0.813 0.864)\",\n crimson6: \"color(display-p3 0.921 0.755 0.817)\",\n crimson7: \"color(display-p3 0.88 0.683 0.761)\",\n crimson8: \"color(display-p3 0.834 0.592 0.694)\",\n crimson9: \"color(display-p3 0.843 0.298 0.507)\",\n crimson10: \"color(display-p3 0.807 0.266 0.468)\",\n crimson11: \"color(display-p3 0.731 0.195 0.388)\",\n crimson12: \"color(display-p3 0.352 0.111 0.221)\",\n};\nconst crimsonP3A = {\n crimsonA1: \"color(display-p3 0.675 0.024 0.349 / 0.012)\",\n crimsonA2: \"color(display-p3 0.757 0.02 0.267 / 0.032)\",\n crimsonA3: \"color(display-p3 0.859 0.008 0.294 / 0.083)\",\n crimsonA4: \"color(display-p3 0.827 0.008 0.298 / 0.134)\",\n crimsonA5: \"color(display-p3 0.753 0.008 0.275 / 0.189)\",\n crimsonA6: \"color(display-p3 0.682 0.004 0.247 / 0.244)\",\n crimsonA7: \"color(display-p3 0.62 0.004 0.251 / 0.318)\",\n crimsonA8: \"color(display-p3 0.6 0.004 0.251 / 0.408)\",\n crimsonA9: \"color(display-p3 0.776 0 0.298 / 0.702)\",\n crimsonA10: \"color(display-p3 0.737 0 0.275 / 0.734)\",\n crimsonA11: \"color(display-p3 0.731 0.195 0.388)\",\n crimsonA12: \"color(display-p3 0.352 0.111 0.221)\",\n};\nconst pink = {\n pink1: \"#fffcfe\",\n pink2: \"#fef7fb\",\n pink3: \"#fee9f5\",\n pink4: \"#fbdcef\",\n pink5: \"#f6cee7\",\n pink6: \"#efbfdd\",\n pink7: \"#e7acd0\",\n pink8: \"#dd93c2\",\n pink9: \"#d6409f\",\n pink10: \"#cf3897\",\n pink11: \"#c2298a\",\n pink12: \"#651249\",\n};\nconst pinkA = {\n pinkA1: \"#ff00aa03\",\n pinkA2: \"#e0008008\",\n pinkA3: \"#f4008c16\",\n pinkA4: \"#e2008b23\",\n pinkA5: \"#d1008331\",\n pinkA6: \"#c0007840\",\n pinkA7: \"#b6006f53\",\n pinkA8: \"#af006f6c\",\n pinkA9: \"#c8007fbf\",\n pinkA10: \"#c2007ac7\",\n pinkA11: \"#b60074d6\",\n pinkA12: \"#59003bed\",\n};\nconst pinkP3 = {\n pink1: \"color(display-p3 0.998 0.989 0.996)\",\n pink2: \"color(display-p3 0.992 0.97 0.985)\",\n pink3: \"color(display-p3 0.981 0.917 0.96)\",\n pink4: \"color(display-p3 0.963 0.867 0.932)\",\n pink5: \"color(display-p3 0.939 0.815 0.899)\",\n pink6: \"color(display-p3 0.907 0.756 0.859)\",\n pink7: \"color(display-p3 0.869 0.683 0.81)\",\n pink8: \"color(display-p3 0.825 0.59 0.751)\",\n pink9: \"color(display-p3 0.775 0.297 0.61)\",\n pink10: \"color(display-p3 0.748 0.27 0.581)\",\n pink11: \"color(display-p3 0.698 0.219 0.528)\",\n pink12: \"color(display-p3 0.363 0.101 0.279)\",\n};\nconst pinkP3A = {\n pinkA1: \"color(display-p3 0.675 0.024 0.675 / 0.012)\",\n pinkA2: \"color(display-p3 0.757 0.02 0.51 / 0.032)\",\n pinkA3: \"color(display-p3 0.765 0.008 0.529 / 0.083)\",\n pinkA4: \"color(display-p3 0.737 0.008 0.506 / 0.134)\",\n pinkA5: \"color(display-p3 0.663 0.004 0.451 / 0.185)\",\n pinkA6: \"color(display-p3 0.616 0.004 0.424 / 0.244)\",\n pinkA7: \"color(display-p3 0.596 0.004 0.412 / 0.318)\",\n pinkA8: \"color(display-p3 0.573 0.004 0.404 / 0.412)\",\n pinkA9: \"color(display-p3 0.682 0 0.447 / 0.702)\",\n pinkA10: \"color(display-p3 0.655 0 0.424 / 0.73)\",\n pinkA11: \"color(display-p3 0.698 0.219 0.528)\",\n pinkA12: \"color(display-p3 0.363 0.101 0.279)\",\n};\nconst plum = {\n plum1: \"#fefcff\",\n plum2: \"#fdf7fd\",\n plum3: \"#fbebfb\",\n plum4: \"#f7def8\",\n plum5: \"#f2d1f3\",\n plum6: \"#e9c2ec\",\n plum7: \"#deade3\",\n plum8: \"#cf91d8\",\n plum9: \"#ab4aba\",\n plum10: \"#a144af\",\n plum11: \"#953ea3\",\n plum12: \"#53195d\",\n};\nconst plumA = {\n plumA1: \"#aa00ff03\",\n plumA2: \"#c000c008\",\n plumA3: \"#cc00cc14\",\n plumA4: \"#c200c921\",\n plumA5: \"#b700bd2e\",\n plumA6: \"#a400b03d\",\n plumA7: \"#9900a852\",\n plumA8: \"#9000a56e\",\n plumA9: \"#89009eb5\",\n plumA10: \"#7f0092bb\",\n plumA11: \"#730086c1\",\n plumA12: \"#40004be6\",\n};\nconst plumP3 = {\n plum1: \"color(display-p3 0.995 0.988 0.999)\",\n plum2: \"color(display-p3 0.988 0.971 0.99)\",\n plum3: \"color(display-p3 0.973 0.923 0.98)\",\n plum4: \"color(display-p3 0.953 0.875 0.966)\",\n plum5: \"color(display-p3 0.926 0.825 0.945)\",\n plum6: \"color(display-p3 0.89 0.765 0.916)\",\n plum7: \"color(display-p3 0.84 0.686 0.877)\",\n plum8: \"color(display-p3 0.775 0.58 0.832)\",\n plum9: \"color(display-p3 0.624 0.313 0.708)\",\n plum10: \"color(display-p3 0.587 0.29 0.667)\",\n plum11: \"color(display-p3 0.543 0.263 0.619)\",\n plum12: \"color(display-p3 0.299 0.114 0.352)\",\n};\nconst plumP3A = {\n plumA1: \"color(display-p3 0.675 0.024 1 / 0.012)\",\n plumA2: \"color(display-p3 0.58 0.024 0.58 / 0.028)\",\n plumA3: \"color(display-p3 0.655 0.008 0.753 / 0.079)\",\n plumA4: \"color(display-p3 0.627 0.008 0.722 / 0.126)\",\n plumA5: \"color(display-p3 0.58 0.004 0.69 / 0.177)\",\n plumA6: \"color(display-p3 0.537 0.004 0.655 / 0.236)\",\n plumA7: \"color(display-p3 0.49 0.004 0.616 / 0.314)\",\n plumA8: \"color(display-p3 0.471 0.004 0.6 / 0.42)\",\n plumA9: \"color(display-p3 0.451 0 0.576 / 0.687)\",\n plumA10: \"color(display-p3 0.42 0 0.529 / 0.71)\",\n plumA11: \"color(display-p3 0.543 0.263 0.619)\",\n plumA12: \"color(display-p3 0.299 0.114 0.352)\",\n};\nconst purple = {\n purple1: \"#fefcfe\",\n purple2: \"#fbf7fe\",\n purple3: \"#f7edfe\",\n purple4: \"#f2e2fc\",\n purple5: \"#ead5f9\",\n purple6: \"#e0c4f4\",\n purple7: \"#d1afec\",\n purple8: \"#be93e4\",\n purple9: \"#8e4ec6\",\n purple10: \"#8347b9\",\n purple11: \"#8145b5\",\n purple12: \"#402060\",\n};\nconst purpleA = {\n purpleA1: \"#aa00aa03\",\n purpleA2: \"#8000e008\",\n purpleA3: \"#8e00f112\",\n purpleA4: \"#8d00e51d\",\n purpleA5: \"#8000db2a\",\n purpleA6: \"#7a01d03b\",\n purpleA7: \"#6d00c350\",\n purpleA8: \"#6600c06c\",\n purpleA9: \"#5c00adb1\",\n purpleA10: \"#53009eb8\",\n purpleA11: \"#52009aba\",\n purpleA12: \"#250049df\",\n};\nconst purpleP3 = {\n purple1: \"color(display-p3 0.995 0.988 0.996)\",\n purple2: \"color(display-p3 0.983 0.971 0.993)\",\n purple3: \"color(display-p3 0.963 0.931 0.989)\",\n purple4: \"color(display-p3 0.937 0.888 0.981)\",\n purple5: \"color(display-p3 0.904 0.837 0.966)\",\n purple6: \"color(display-p3 0.86 0.774 0.942)\",\n purple7: \"color(display-p3 0.799 0.69 0.91)\",\n purple8: \"color(display-p3 0.719 0.583 0.874)\",\n purple9: \"color(display-p3 0.523 0.318 0.751)\",\n purple10: \"color(display-p3 0.483 0.289 0.7)\",\n purple11: \"color(display-p3 0.473 0.281 0.687)\",\n purple12: \"color(display-p3 0.234 0.132 0.363)\",\n};\nconst purpleP3A = {\n purpleA1: \"color(display-p3 0.675 0.024 0.675 / 0.012)\",\n purpleA2: \"color(display-p3 0.443 0.024 0.722 / 0.028)\",\n purpleA3: \"color(display-p3 0.506 0.008 0.835 / 0.071)\",\n purpleA4: \"color(display-p3 0.451 0.004 0.831 / 0.114)\",\n purpleA5: \"color(display-p3 0.431 0.004 0.788 / 0.165)\",\n purpleA6: \"color(display-p3 0.384 0.004 0.745 / 0.228)\",\n purpleA7: \"color(display-p3 0.357 0.004 0.71 / 0.31)\",\n purpleA8: \"color(display-p3 0.322 0.004 0.702 / 0.416)\",\n purpleA9: \"color(display-p3 0.298 0 0.639 / 0.683)\",\n purpleA10: \"color(display-p3 0.271 0 0.58 / 0.71)\",\n purpleA11: \"color(display-p3 0.473 0.281 0.687)\",\n purpleA12: \"color(display-p3 0.234 0.132 0.363)\",\n};\nconst violet = {\n violet1: \"#fdfcfe\",\n violet2: \"#faf8ff\",\n violet3: \"#f4f0fe\",\n violet4: \"#ebe4ff\",\n violet5: \"#e1d9ff\",\n violet6: \"#d4cafe\",\n violet7: \"#c2b5f5\",\n violet8: \"#aa99ec\",\n violet9: \"#6e56cf\",\n violet10: \"#654dc4\",\n violet11: \"#6550b9\",\n violet12: \"#2f265f\",\n};\nconst violetA = {\n violetA1: \"#5500aa03\",\n violetA2: \"#4900ff07\",\n violetA3: \"#4400ee0f\",\n violetA4: \"#4300ff1b\",\n violetA5: \"#3600ff26\",\n violetA6: \"#3100fb35\",\n violetA7: \"#2d01dd4a\",\n violetA8: \"#2b00d066\",\n violetA9: \"#2400b7a9\",\n violetA10: \"#2300abb2\",\n violetA11: \"#1f0099af\",\n violetA12: \"#0b0043d9\",\n};\nconst violetP3 = {\n violet1: \"color(display-p3 0.991 0.988 0.995)\",\n violet2: \"color(display-p3 0.978 0.974 0.998)\",\n violet3: \"color(display-p3 0.953 0.943 0.993)\",\n violet4: \"color(display-p3 0.916 0.897 1)\",\n violet5: \"color(display-p3 0.876 0.851 1)\",\n violet6: \"color(display-p3 0.825 0.793 0.981)\",\n violet7: \"color(display-p3 0.752 0.712 0.943)\",\n violet8: \"color(display-p3 0.654 0.602 0.902)\",\n violet9: \"color(display-p3 0.417 0.341 0.784)\",\n violet10: \"color(display-p3 0.381 0.306 0.741)\",\n violet11: \"color(display-p3 0.383 0.317 0.702)\",\n violet12: \"color(display-p3 0.179 0.15 0.359)\",\n};\nconst violetP3A = {\n violetA1: \"color(display-p3 0.349 0.024 0.675 / 0.012)\",\n violetA2: \"color(display-p3 0.161 0.024 0.863 / 0.028)\",\n violetA3: \"color(display-p3 0.204 0.004 0.871 / 0.059)\",\n violetA4: \"color(display-p3 0.196 0.004 1 / 0.102)\",\n violetA5: \"color(display-p3 0.165 0.008 1 / 0.15)\",\n violetA6: \"color(display-p3 0.153 0.004 0.906 / 0.208)\",\n violetA7: \"color(display-p3 0.141 0.004 0.796 / 0.287)\",\n violetA8: \"color(display-p3 0.133 0.004 0.753 / 0.397)\",\n violetA9: \"color(display-p3 0.114 0 0.675 / 0.659)\",\n violetA10: \"color(display-p3 0.11 0 0.627 / 0.695)\",\n violetA11: \"color(display-p3 0.383 0.317 0.702)\",\n violetA12: \"color(display-p3 0.179 0.15 0.359)\",\n};\nconst iris = {\n iris1: \"#fdfdff\",\n iris2: \"#f8f8ff\",\n iris3: \"#f0f1fe\",\n iris4: \"#e6e7ff\",\n iris5: \"#dadcff\",\n iris6: \"#cbcdff\",\n iris7: \"#b8baf8\",\n iris8: \"#9b9ef0\",\n iris9: \"#5b5bd6\",\n iris10: \"#5151cd\",\n iris11: \"#5753c6\",\n iris12: \"#272962\",\n};\nconst irisA = {\n irisA1: \"#0000ff02\",\n irisA2: \"#0000ff07\",\n irisA3: \"#0011ee0f\",\n irisA4: \"#000bff19\",\n irisA5: \"#000eff25\",\n irisA6: \"#000aff34\",\n irisA7: \"#0008e647\",\n irisA8: \"#0008d964\",\n irisA9: \"#0000c0a4\",\n irisA10: \"#0000b6ae\",\n irisA11: \"#0600abac\",\n irisA12: \"#000246d8\",\n};\nconst irisP3 = {\n iris1: \"color(display-p3 0.992 0.992 0.999)\",\n iris2: \"color(display-p3 0.972 0.973 0.998)\",\n iris3: \"color(display-p3 0.943 0.945 0.992)\",\n iris4: \"color(display-p3 0.902 0.906 1)\",\n iris5: \"color(display-p3 0.857 0.861 1)\",\n iris6: \"color(display-p3 0.799 0.805 0.987)\",\n iris7: \"color(display-p3 0.721 0.727 0.955)\",\n iris8: \"color(display-p3 0.61 0.619 0.918)\",\n iris9: \"color(display-p3 0.357 0.357 0.81)\",\n iris10: \"color(display-p3 0.318 0.318 0.774)\",\n iris11: \"color(display-p3 0.337 0.326 0.748)\",\n iris12: \"color(display-p3 0.154 0.161 0.371)\",\n};\nconst irisP3A = {\n irisA1: \"color(display-p3 0.02 0.02 1 / 0.008)\",\n irisA2: \"color(display-p3 0.024 0.024 0.863 / 0.028)\",\n irisA3: \"color(display-p3 0.004 0.071 0.871 / 0.059)\",\n irisA4: \"color(display-p3 0.012 0.051 1 / 0.099)\",\n irisA5: \"color(display-p3 0.008 0.035 1 / 0.142)\",\n irisA6: \"color(display-p3 0 0.02 0.941 / 0.2)\",\n irisA7: \"color(display-p3 0.004 0.02 0.847 / 0.279)\",\n irisA8: \"color(display-p3 0.004 0.024 0.788 / 0.389)\",\n irisA9: \"color(display-p3 0 0 0.706 / 0.644)\",\n irisA10: \"color(display-p3 0 0 0.667 / 0.683)\",\n irisA11: \"color(display-p3 0.337 0.326 0.748)\",\n irisA12: \"color(display-p3 0.154 0.161 0.371)\",\n};\nconst indigo = {\n indigo1: \"#fdfdfe\",\n indigo2: \"#f7f9ff\",\n indigo3: \"#edf2fe\",\n indigo4: \"#e1e9ff\",\n indigo5: \"#d2deff\",\n indigo6: \"#c1d0ff\",\n indigo7: \"#abbdf9\",\n indigo8: \"#8da4ef\",\n indigo9: \"#3e63dd\",\n indigo10: \"#3358d4\",\n indigo11: \"#3a5bc7\",\n indigo12: \"#1f2d5c\",\n};\nconst indigoA = {\n indigoA1: \"#00008002\",\n indigoA2: \"#0040ff08\",\n indigoA3: \"#0047f112\",\n indigoA4: \"#0044ff1e\",\n indigoA5: \"#0044ff2d\",\n indigoA6: \"#003eff3e\",\n indigoA7: \"#0037ed54\",\n indigoA8: \"#0034dc72\",\n indigoA9: \"#0031d2c1\",\n indigoA10: \"#002ec9cc\",\n indigoA11: \"#002bb7c5\",\n indigoA12: \"#001046e0\",\n};\nconst indigoP3 = {\n indigo1: \"color(display-p3 0.992 0.992 0.996)\",\n indigo2: \"color(display-p3 0.971 0.977 0.998)\",\n indigo3: \"color(display-p3 0.933 0.948 0.992)\",\n indigo4: \"color(display-p3 0.885 0.914 1)\",\n indigo5: \"color(display-p3 0.831 0.87 1)\",\n indigo6: \"color(display-p3 0.767 0.814 0.995)\",\n indigo7: \"color(display-p3 0.685 0.74 0.957)\",\n indigo8: \"color(display-p3 0.569 0.639 0.916)\",\n indigo9: \"color(display-p3 0.276 0.384 0.837)\",\n indigo10: \"color(display-p3 0.234 0.343 0.801)\",\n indigo11: \"color(display-p3 0.256 0.354 0.755)\",\n indigo12: \"color(display-p3 0.133 0.175 0.348)\",\n};\nconst indigoP3A = {\n indigoA1: \"color(display-p3 0.02 0.02 0.51 / 0.008)\",\n indigoA2: \"color(display-p3 0.024 0.161 0.863 / 0.028)\",\n indigoA3: \"color(display-p3 0.008 0.239 0.886 / 0.067)\",\n indigoA4: \"color(display-p3 0.004 0.247 1 / 0.114)\",\n indigoA5: \"color(display-p3 0.004 0.235 1 / 0.169)\",\n indigoA6: \"color(display-p3 0.004 0.208 0.984 / 0.232)\",\n indigoA7: \"color(display-p3 0.004 0.176 0.863 / 0.314)\",\n indigoA8: \"color(display-p3 0.004 0.165 0.812 / 0.432)\",\n indigoA9: \"color(display-p3 0 0.153 0.773 / 0.726)\",\n indigoA10: \"color(display-p3 0 0.137 0.737 / 0.765)\",\n indigoA11: \"color(display-p3 0.256 0.354 0.755)\",\n indigoA12: \"color(display-p3 0.133 0.175 0.348)\",\n};\nconst blue = {\n blue1: \"#fbfdff\",\n blue2: \"#f4faff\",\n blue3: \"#e6f4fe\",\n blue4: \"#d5efff\",\n blue5: \"#c2e5ff\",\n blue6: \"#acd8fc\",\n blue7: \"#8ec8f6\",\n blue8: \"#5eb1ef\",\n blue9: \"#0090ff\",\n blue10: \"#0588f0\",\n blue11: \"#0d74ce\",\n blue12: \"#113264\",\n};\nconst blueA = {\n blueA1: \"#0080ff04\",\n blueA2: \"#008cff0b\",\n blueA3: \"#008ff519\",\n blueA4: \"#009eff2a\",\n blueA5: \"#0093ff3d\",\n blueA6: \"#0088f653\",\n blueA7: \"#0083eb71\",\n blueA8: \"#0084e6a1\",\n blueA9: \"#0090ff\",\n blueA10: \"#0086f0fa\",\n blueA11: \"#006dcbf2\",\n blueA12: \"#002359ee\",\n};\nconst blueP3 = {\n blue1: \"color(display-p3 0.986 0.992 0.999)\",\n blue2: \"color(display-p3 0.96 0.979 0.998)\",\n blue3: \"color(display-p3 0.912 0.956 0.991)\",\n blue4: \"color(display-p3 0.853 0.932 1)\",\n blue5: \"color(display-p3 0.788 0.894 0.998)\",\n blue6: \"color(display-p3 0.709 0.843 0.976)\",\n blue7: \"color(display-p3 0.606 0.777 0.947)\",\n blue8: \"color(display-p3 0.451 0.688 0.917)\",\n blue9: \"color(display-p3 0.247 0.556 0.969)\",\n blue10: \"color(display-p3 0.234 0.523 0.912)\",\n blue11: \"color(display-p3 0.15 0.44 0.84)\",\n blue12: \"color(display-p3 0.102 0.193 0.379)\",\n};\nconst blueP3A = {\n blueA1: \"color(display-p3 0.024 0.514 1 / 0.016)\",\n blueA2: \"color(display-p3 0.024 0.514 0.906 / 0.04)\",\n blueA3: \"color(display-p3 0.012 0.506 0.914 / 0.087)\",\n blueA4: \"color(display-p3 0.008 0.545 1 / 0.146)\",\n blueA5: \"color(display-p3 0.004 0.502 0.984 / 0.212)\",\n blueA6: \"color(display-p3 0.004 0.463 0.922 / 0.291)\",\n blueA7: \"color(display-p3 0.004 0.431 0.863 / 0.393)\",\n blueA8: \"color(display-p3 0 0.427 0.851 / 0.55)\",\n blueA9: \"color(display-p3 0 0.412 0.961 / 0.753)\",\n blueA10: \"color(display-p3 0 0.376 0.886 / 0.765)\",\n blueA11: \"color(display-p3 0.15 0.44 0.84)\",\n blueA12: \"color(display-p3 0.102 0.193 0.379)\",\n};\nconst cyan = {\n cyan1: \"#fafdfe\",\n cyan2: \"#f2fafb\",\n cyan3: \"#def7f9\",\n cyan4: \"#caf1f6\",\n cyan5: \"#b5e9f0\",\n cyan6: \"#9ddde7\",\n cyan7: \"#7dcedc\",\n cyan8: \"#3db9cf\",\n cyan9: \"#00a2c7\",\n cyan10: \"#0797b9\",\n cyan11: \"#107d98\",\n cyan12: \"#0d3c48\",\n};\nconst cyanA = {\n cyanA1: \"#0099cc05\",\n cyanA2: \"#009db10d\",\n cyanA3: \"#00c2d121\",\n cyanA4: \"#00bcd435\",\n cyanA5: \"#01b4cc4a\",\n cyanA6: \"#00a7c162\",\n cyanA7: \"#009fbb82\",\n cyanA8: \"#00a3c0c2\",\n cyanA9: \"#00a2c7\",\n cyanA10: \"#0094b7f8\",\n cyanA11: \"#007491ef\",\n cyanA12: \"#00323ef2\",\n};\nconst cyanP3 = {\n cyan1: \"color(display-p3 0.982 0.992 0.996)\",\n cyan2: \"color(display-p3 0.955 0.981 0.984)\",\n cyan3: \"color(display-p3 0.888 0.965 0.975)\",\n cyan4: \"color(display-p3 0.821 0.941 0.959)\",\n cyan5: \"color(display-p3 0.751 0.907 0.935)\",\n cyan6: \"color(display-p3 0.671 0.862 0.9)\",\n cyan7: \"color(display-p3 0.564 0.8 0.854)\",\n cyan8: \"color(display-p3 0.388 0.715 0.798)\",\n cyan9: \"color(display-p3 0.282 0.627 0.765)\",\n cyan10: \"color(display-p3 0.264 0.583 0.71)\",\n cyan11: \"color(display-p3 0.08 0.48 0.63)\",\n cyan12: \"color(display-p3 0.108 0.232 0.277)\",\n};\nconst cyanP3A = {\n cyanA1: \"color(display-p3 0.02 0.608 0.804 / 0.02)\",\n cyanA2: \"color(display-p3 0.02 0.557 0.647 / 0.044)\",\n cyanA3: \"color(display-p3 0.004 0.694 0.796 / 0.114)\",\n cyanA4: \"color(display-p3 0.004 0.678 0.784 / 0.181)\",\n cyanA5: \"color(display-p3 0.004 0.624 0.733 / 0.248)\",\n cyanA6: \"color(display-p3 0.004 0.584 0.706 / 0.33)\",\n cyanA7: \"color(display-p3 0.004 0.541 0.667 / 0.436)\",\n cyanA8: \"color(display-p3 0 0.533 0.667 / 0.612)\",\n cyanA9: \"color(display-p3 0 0.482 0.675 / 0.718)\",\n cyanA10: \"color(display-p3 0 0.435 0.608 / 0.738)\",\n cyanA11: \"color(display-p3 0.08 0.48 0.63)\",\n cyanA12: \"color(display-p3 0.108 0.232 0.277)\",\n};\nconst teal = {\n teal1: \"#fafefd\",\n teal2: \"#f3fbf9\",\n teal3: \"#e0f8f3\",\n teal4: \"#ccf3ea\",\n teal5: \"#b8eae0\",\n teal6: \"#a1ded2\",\n teal7: \"#83cdc1\",\n teal8: \"#53b9ab\",\n teal9: \"#12a594\",\n teal10: \"#0d9b8a\",\n teal11: \"#008573\",\n teal12: \"#0d3d38\",\n};\nconst tealA = {\n tealA1: \"#00cc9905\",\n tealA2: \"#00aa800c\",\n tealA3: \"#00c69d1f\",\n tealA4: \"#00c39633\",\n tealA5: \"#00b49047\",\n tealA6: \"#00a6855e\",\n tealA7: \"#0099807c\",\n tealA8: \"#009783ac\",\n tealA9: \"#009e8ced\",\n tealA10: \"#009684f2\",\n tealA11: \"#008573\",\n tealA12: \"#00332df2\",\n};\nconst tealP3 = {\n teal1: \"color(display-p3 0.983 0.996 0.992)\",\n teal2: \"color(display-p3 0.958 0.983 0.976)\",\n teal3: \"color(display-p3 0.895 0.971 0.952)\",\n teal4: \"color(display-p3 0.831 0.949 0.92)\",\n teal5: \"color(display-p3 0.761 0.914 0.878)\",\n teal6: \"color(display-p3 0.682 0.864 0.825)\",\n teal7: \"color(display-p3 0.581 0.798 0.756)\",\n teal8: \"color(display-p3 0.433 0.716 0.671)\",\n teal9: \"color(display-p3 0.297 0.637 0.581)\",\n teal10: \"color(display-p3 0.275 0.599 0.542)\",\n teal11: \"color(display-p3 0.08 0.5 0.43)\",\n teal12: \"color(display-p3 0.11 0.235 0.219)\",\n};\nconst tealP3A = {\n tealA1: \"color(display-p3 0.024 0.757 0.514 / 0.016)\",\n tealA2: \"color(display-p3 0.02 0.647 0.467 / 0.044)\",\n tealA3: \"color(display-p3 0.004 0.741 0.557 / 0.106)\",\n tealA4: \"color(display-p3 0.004 0.702 0.537 / 0.169)\",\n tealA5: \"color(display-p3 0.004 0.643 0.494 / 0.24)\",\n tealA6: \"color(display-p3 0.004 0.569 0.447 / 0.318)\",\n tealA7: \"color(display-p3 0.004 0.518 0.424 / 0.42)\",\n tealA8: \"color(display-p3 0 0.506 0.424 / 0.569)\",\n tealA9: \"color(display-p3 0 0.482 0.404 / 0.702)\",\n tealA10: \"color(display-p3 0 0.451 0.369 / 0.726)\",\n tealA11: \"color(display-p3 0.08 0.5 0.43)\",\n tealA12: \"color(display-p3 0.11 0.235 0.219)\",\n};\nconst jade = {\n jade1: \"#fbfefd\",\n jade2: \"#f4fbf7\",\n jade3: \"#e6f7ed\",\n jade4: \"#d6f1e3\",\n jade5: \"#c3e9d7\",\n jade6: \"#acdec8\",\n jade7: \"#8bceb6\",\n jade8: \"#56ba9f\",\n jade9: \"#29a383\",\n jade10: \"#26997b\",\n jade11: \"#208368\",\n jade12: \"#1d3b31\",\n};\nconst jadeA = {\n jadeA1: \"#00c08004\",\n jadeA2: \"#00a3460b\",\n jadeA3: \"#00ae4819\",\n jadeA4: \"#00a85129\",\n jadeA5: \"#00a2553c\",\n jadeA6: \"#009a5753\",\n jadeA7: \"#00945f74\",\n jadeA8: \"#00976ea9\",\n jadeA9: \"#00916bd6\",\n jadeA10: \"#008764d9\",\n jadeA11: \"#007152df\",\n jadeA12: \"#002217e2\",\n};\nconst jadeP3 = {\n jade1: \"color(display-p3 0.986 0.996 0.992)\",\n jade2: \"color(display-p3 0.962 0.983 0.969)\",\n jade3: \"color(display-p3 0.912 0.965 0.932)\",\n jade4: \"color(display-p3 0.858 0.941 0.893)\",\n jade5: \"color(display-p3 0.795 0.909 0.847)\",\n jade6: \"color(display-p3 0.715 0.864 0.791)\",\n jade7: \"color(display-p3 0.603 0.802 0.718)\",\n jade8: \"color(display-p3 0.44 0.72 0.629)\",\n jade9: \"color(display-p3 0.319 0.63 0.521)\",\n jade10: \"color(display-p3 0.299 0.592 0.488)\",\n jade11: \"color(display-p3 0.15 0.5 0.37)\",\n jade12: \"color(display-p3 0.142 0.229 0.194)\",\n};\nconst jadeP3A = {\n jadeA1: \"color(display-p3 0.024 0.757 0.514 / 0.016)\",\n jadeA2: \"color(display-p3 0.024 0.612 0.22 / 0.04)\",\n jadeA3: \"color(display-p3 0.012 0.596 0.235 / 0.087)\",\n jadeA4: \"color(display-p3 0.008 0.588 0.255 / 0.142)\",\n jadeA5: \"color(display-p3 0.004 0.561 0.251 / 0.204)\",\n jadeA6: \"color(display-p3 0.004 0.525 0.278 / 0.287)\",\n jadeA7: \"color(display-p3 0.004 0.506 0.29 / 0.397)\",\n jadeA8: \"color(display-p3 0 0.506 0.337 / 0.561)\",\n jadeA9: \"color(display-p3 0 0.459 0.298 / 0.683)\",\n jadeA10: \"color(display-p3 0 0.42 0.271 / 0.702)\",\n jadeA11: \"color(display-p3 0.15 0.5 0.37)\",\n jadeA12: \"color(display-p3 0.142 0.229 0.194)\",\n};\nconst green = {\n green1: \"#fbfefc\",\n green2: \"#f4fbf6\",\n green3: \"#e6f6eb\",\n green4: \"#d6f1df\",\n green5: \"#c4e8d1\",\n green6: \"#adddc0\",\n green7: \"#8eceaa\",\n green8: \"#5bb98b\",\n green9: \"#30a46c\",\n green10: \"#2b9a66\",\n green11: \"#218358\",\n green12: \"#193b2d\",\n};\nconst greenA = {\n greenA1: \"#00c04004\",\n greenA2: \"#00a32f0b\",\n greenA3: \"#00a43319\",\n greenA4: \"#00a83829\",\n greenA5: \"#019c393b\",\n greenA6: \"#00963c52\",\n greenA7: \"#00914071\",\n greenA8: \"#00924ba4\",\n greenA9: \"#008f4acf\",\n greenA10: \"#008647d4\",\n greenA11: \"#00713fde\",\n greenA12: \"#002616e6\",\n};\nconst greenP3 = {\n green1: \"color(display-p3 0.986 0.996 0.989)\",\n green2: \"color(display-p3 0.963 0.983 0.967)\",\n green3: \"color(display-p3 0.913 0.964 0.925)\",\n green4: \"color(display-p3 0.859 0.94 0.879)\",\n green5: \"color(display-p3 0.796 0.907 0.826)\",\n green6: \"color(display-p3 0.718 0.863 0.761)\",\n green7: \"color(display-p3 0.61 0.801 0.675)\",\n green8: \"color(display-p3 0.451 0.715 0.559)\",\n green9: \"color(display-p3 0.332 0.634 0.442)\",\n green10: \"color(display-p3 0.308 0.595 0.417)\",\n green11: \"color(display-p3 0.19 0.5 0.32)\",\n green12: \"color(display-p3 0.132 0.228 0.18)\",\n};\nconst greenP3A = {\n greenA1: \"color(display-p3 0.024 0.757 0.267 / 0.016)\",\n greenA2: \"color(display-p3 0.024 0.565 0.129 / 0.036)\",\n greenA3: \"color(display-p3 0.012 0.596 0.145 / 0.087)\",\n greenA4: \"color(display-p3 0.008 0.588 0.145 / 0.142)\",\n greenA5: \"color(display-p3 0.004 0.541 0.157 / 0.204)\",\n greenA6: \"color(display-p3 0.004 0.518 0.157 / 0.283)\",\n greenA7: \"color(display-p3 0.004 0.486 0.165 / 0.389)\",\n greenA8: \"color(display-p3 0 0.478 0.2 / 0.55)\",\n greenA9: \"color(display-p3 0 0.455 0.165 / 0.667)\",\n greenA10: \"color(display-p3 0 0.416 0.153 / 0.691)\",\n greenA11: \"color(display-p3 0.19 0.5 0.32)\",\n greenA12: \"color(display-p3 0.132 0.228 0.18)\",\n};\nconst grass = {\n grass1: \"#fbfefb\",\n grass2: \"#f5fbf5\",\n grass3: \"#e9f6e9\",\n grass4: \"#daf1db\",\n grass5: \"#c9e8ca\",\n grass6: \"#b2ddb5\",\n grass7: \"#94ce9a\",\n grass8: \"#65ba74\",\n grass9: \"#46a758\",\n grass10: \"#3e9b4f\",\n grass11: \"#2a7e3b\",\n grass12: \"#203c25\",\n};\nconst grassA = {\n grassA1: \"#00c00004\",\n grassA2: \"#0099000a\",\n grassA3: \"#00970016\",\n grassA4: \"#009f0725\",\n grassA5: \"#00930536\",\n grassA6: \"#008f0a4d\",\n grassA7: \"#018b0f6b\",\n grassA8: \"#008d199a\",\n grassA9: \"#008619b9\",\n grassA10: \"#007b17c1\",\n grassA11: \"#006514d5\",\n grassA12: \"#002006df\",\n};\nconst grassP3 = {\n grass1: \"color(display-p3 0.986 0.996 0.985)\",\n grass2: \"color(display-p3 0.966 0.983 0.964)\",\n grass3: \"color(display-p3 0.923 0.965 0.917)\",\n grass4: \"color(display-p3 0.872 0.94 0.865)\",\n grass5: \"color(display-p3 0.811 0.908 0.802)\",\n grass6: \"color(display-p3 0.733 0.864 0.724)\",\n grass7: \"color(display-p3 0.628 0.803 0.622)\",\n grass8: \"color(display-p3 0.477 0.72 0.482)\",\n grass9: \"color(display-p3 0.38 0.647 0.378)\",\n grass10: \"color(display-p3 0.344 0.598 0.342)\",\n grass11: \"color(display-p3 0.263 0.488 0.261)\",\n grass12: \"color(display-p3 0.151 0.233 0.153)\",\n};\nconst grassP3A = {\n grassA1: \"color(display-p3 0.024 0.757 0.024 / 0.016)\",\n grassA2: \"color(display-p3 0.024 0.565 0.024 / 0.036)\",\n grassA3: \"color(display-p3 0.059 0.576 0.008 / 0.083)\",\n grassA4: \"color(display-p3 0.035 0.565 0.008 / 0.134)\",\n grassA5: \"color(display-p3 0.047 0.545 0.008 / 0.197)\",\n grassA6: \"color(display-p3 0.031 0.502 0.004 / 0.275)\",\n grassA7: \"color(display-p3 0.012 0.482 0.004 / 0.377)\",\n grassA8: \"color(display-p3 0 0.467 0.008 / 0.522)\",\n grassA9: \"color(display-p3 0.008 0.435 0 / 0.624)\",\n grassA10: \"color(display-p3 0.008 0.388 0 / 0.659)\",\n grassA11: \"color(display-p3 0.263 0.488 0.261)\",\n grassA12: \"color(display-p3 0.151 0.233 0.153)\",\n};\nconst brown = {\n brown1: \"#fefdfc\",\n brown2: \"#fcf9f6\",\n brown3: \"#f6eee7\",\n brown4: \"#f0e4d9\",\n brown5: \"#ebdaca\",\n brown6: \"#e4cdb7\",\n brown7: \"#dcbc9f\",\n brown8: \"#cea37e\",\n brown9: \"#ad7f58\",\n brown10: \"#a07553\",\n brown11: \"#815e46\",\n brown12: \"#3e332e\",\n};\nconst brownA = {\n brownA1: \"#aa550003\",\n brownA2: \"#aa550009\",\n brownA3: \"#a04b0018\",\n brownA4: \"#9b4a0026\",\n brownA5: \"#9f4d0035\",\n brownA6: \"#a04e0048\",\n brownA7: \"#a34e0060\",\n brownA8: \"#9f4a0081\",\n brownA9: \"#823c00a7\",\n brownA10: \"#723300ac\",\n brownA11: \"#522100b9\",\n brownA12: \"#140600d1\",\n};\nconst brownP3 = {\n brown1: \"color(display-p3 0.995 0.992 0.989)\",\n brown2: \"color(display-p3 0.987 0.976 0.964)\",\n brown3: \"color(display-p3 0.959 0.936 0.909)\",\n brown4: \"color(display-p3 0.934 0.897 0.855)\",\n brown5: \"color(display-p3 0.909 0.856 0.798)\",\n brown6: \"color(display-p3 0.88 0.808 0.73)\",\n brown7: \"color(display-p3 0.841 0.742 0.639)\",\n brown8: \"color(display-p3 0.782 0.647 0.514)\",\n brown9: \"color(display-p3 0.651 0.505 0.368)\",\n brown10: \"color(display-p3 0.601 0.465 0.344)\",\n brown11: \"color(display-p3 0.485 0.374 0.288)\",\n brown12: \"color(display-p3 0.236 0.202 0.183)\",\n};\nconst brownP3A = {\n brownA1: \"color(display-p3 0.675 0.349 0.024 / 0.012)\",\n brownA2: \"color(display-p3 0.675 0.349 0.024 / 0.036)\",\n brownA3: \"color(display-p3 0.573 0.314 0.012 / 0.091)\",\n brownA4: \"color(display-p3 0.545 0.302 0.008 / 0.146)\",\n brownA5: \"color(display-p3 0.561 0.29 0.004 / 0.204)\",\n brownA6: \"color(display-p3 0.553 0.294 0.004 / 0.271)\",\n brownA7: \"color(display-p3 0.557 0.286 0.004 / 0.361)\",\n brownA8: \"color(display-p3 0.549 0.275 0.004 / 0.487)\",\n brownA9: \"color(display-p3 0.447 0.22 0 / 0.632)\",\n brownA10: \"color(display-p3 0.388 0.188 0 / 0.655)\",\n brownA11: \"color(display-p3 0.485 0.374 0.288)\",\n brownA12: \"color(display-p3 0.236 0.202 0.183)\",\n};\nconst bronze = {\n bronze1: \"#fdfcfc\",\n bronze2: \"#fdf7f5\",\n bronze3: \"#f6edea\",\n bronze4: \"#efe4df\",\n bronze5: \"#e7d9d3\",\n bronze6: \"#dfcdc5\",\n bronze7: \"#d3bcb3\",\n bronze8: \"#c2a499\",\n bronze9: \"#a18072\",\n bronze10: \"#957468\",\n bronze11: \"#7d5e54\",\n bronze12: \"#43302b\",\n};\nconst bronzeA = {\n bronzeA1: \"#55000003\",\n bronzeA2: \"#cc33000a\",\n bronzeA3: \"#92250015\",\n bronzeA4: \"#80280020\",\n bronzeA5: \"#7423002c\",\n bronzeA6: \"#7324003a\",\n bronzeA7: \"#6c1f004c\",\n bronzeA8: \"#671c0066\",\n bronzeA9: \"#551a008d\",\n bronzeA10: \"#4c150097\",\n bronzeA11: \"#3d0f00ab\",\n bronzeA12: \"#1d0600d4\",\n};\nconst bronzeP3 = {\n bronze1: \"color(display-p3 0.991 0.988 0.988)\",\n bronze2: \"color(display-p3 0.989 0.97 0.961)\",\n bronze3: \"color(display-p3 0.958 0.932 0.919)\",\n bronze4: \"color(display-p3 0.929 0.894 0.877)\",\n bronze5: \"color(display-p3 0.898 0.853 0.832)\",\n bronze6: \"color(display-p3 0.861 0.805 0.778)\",\n bronze7: \"color(display-p3 0.812 0.739 0.706)\",\n bronze8: \"color(display-p3 0.741 0.647 0.606)\",\n bronze9: \"color(display-p3 0.611 0.507 0.455)\",\n bronze10: \"color(display-p3 0.563 0.461 0.414)\",\n bronze11: \"color(display-p3 0.471 0.373 0.336)\",\n bronze12: \"color(display-p3 0.251 0.191 0.172)\",\n};\nconst bronzeP3A = {\n bronzeA1: \"color(display-p3 0.349 0.024 0.024 / 0.012)\",\n bronzeA2: \"color(display-p3 0.71 0.22 0.024 / 0.04)\",\n bronzeA3: \"color(display-p3 0.482 0.2 0.008 / 0.083)\",\n bronzeA4: \"color(display-p3 0.424 0.133 0.004 / 0.122)\",\n bronzeA5: \"color(display-p3 0.4 0.145 0.004 / 0.169)\",\n bronzeA6: \"color(display-p3 0.388 0.125 0.004 / 0.224)\",\n bronzeA7: \"color(display-p3 0.365 0.11 0.004 / 0.295)\",\n bronzeA8: \"color(display-p3 0.341 0.102 0.004 / 0.393)\",\n bronzeA9: \"color(display-p3 0.29 0.094 0 / 0.546)\",\n bronzeA10: \"color(display-p3 0.255 0.082 0 / 0.585)\",\n bronzeA11: \"color(display-p3 0.471 0.373 0.336)\",\n bronzeA12: \"color(display-p3 0.251 0.191 0.172)\",\n};\nconst gold = {\n gold1: \"#fdfdfc\",\n gold2: \"#faf9f2\",\n gold3: \"#f2f0e7\",\n gold4: \"#eae6db\",\n gold5: \"#e1dccf\",\n gold6: \"#d8d0bf\",\n gold7: \"#cbc0aa\",\n gold8: \"#b9a88d\",\n gold9: \"#978365\",\n gold10: \"#8c7a5e\",\n gold11: \"#71624b\",\n gold12: \"#3b352b\",\n};\nconst goldA = {\n goldA1: \"#55550003\",\n goldA2: \"#9d8a000d\",\n goldA3: \"#75600018\",\n goldA4: \"#6b4e0024\",\n goldA5: \"#60460030\",\n goldA6: \"#64440040\",\n goldA7: \"#63420055\",\n goldA8: \"#633d0072\",\n goldA9: \"#5332009a\",\n goldA10: \"#492d00a1\",\n goldA11: \"#362100b4\",\n goldA12: \"#130c00d4\",\n};\nconst goldP3 = {\n gold1: \"color(display-p3 0.992 0.992 0.989)\",\n gold2: \"color(display-p3 0.98 0.976 0.953)\",\n gold3: \"color(display-p3 0.947 0.94 0.909)\",\n gold4: \"color(display-p3 0.914 0.904 0.865)\",\n gold5: \"color(display-p3 0.88 0.865 0.816)\",\n gold6: \"color(display-p3 0.84 0.818 0.756)\",\n gold7: \"color(display-p3 0.788 0.753 0.677)\",\n gold8: \"color(display-p3 0.715 0.66 0.565)\",\n gold9: \"color(display-p3 0.579 0.517 0.41)\",\n gold10: \"color(display-p3 0.538 0.479 0.38)\",\n gold11: \"color(display-p3 0.433 0.386 0.305)\",\n gold12: \"color(display-p3 0.227 0.209 0.173)\",\n};\nconst goldP3A = {\n goldA1: \"color(display-p3 0.349 0.349 0.024 / 0.012)\",\n goldA2: \"color(display-p3 0.592 0.514 0.024 / 0.048)\",\n goldA3: \"color(display-p3 0.4 0.357 0.012 / 0.091)\",\n goldA4: \"color(display-p3 0.357 0.298 0.008 / 0.134)\",\n goldA5: \"color(display-p3 0.345 0.282 0.004 / 0.185)\",\n goldA6: \"color(display-p3 0.341 0.263 0.004 / 0.244)\",\n goldA7: \"color(display-p3 0.345 0.235 0.004 / 0.322)\",\n goldA8: \"color(display-p3 0.345 0.22 0.004 / 0.436)\",\n goldA9: \"color(display-p3 0.286 0.18 0 / 0.589)\",\n goldA10: \"color(display-p3 0.255 0.161 0 / 0.62)\",\n goldA11: \"color(display-p3 0.433 0.386 0.305)\",\n goldA12: \"color(display-p3 0.227 0.209 0.173)\",\n};\nconst sky = {\n sky1: \"#f9feff\",\n sky2: \"#f1fafd\",\n sky3: \"#e1f6fd\",\n sky4: \"#d1f0fa\",\n sky5: \"#bee7f5\",\n sky6: \"#a9daed\",\n sky7: \"#8dcae3\",\n sky8: \"#60b3d7\",\n sky9: \"#7ce2fe\",\n sky10: \"#74daf8\",\n sky11: \"#00749e\",\n sky12: \"#1d3e56\",\n};\nconst skyA = {\n skyA1: \"#00d5ff06\",\n skyA2: \"#00a4db0e\",\n skyA3: \"#00b3ee1e\",\n skyA4: \"#00ace42e\",\n skyA5: \"#00a1d841\",\n skyA6: \"#0092ca56\",\n skyA7: \"#0089c172\",\n skyA8: \"#0085bf9f\",\n skyA9: \"#00c7fe83\",\n skyA10: \"#00bcf38b\",\n skyA11: \"#00749e\",\n skyA12: \"#002540e2\",\n};\nconst skyP3 = {\n sky1: \"color(display-p3 0.98 0.995 0.999)\",\n sky2: \"color(display-p3 0.953 0.98 0.99)\",\n sky3: \"color(display-p3 0.899 0.963 0.989)\",\n sky4: \"color(display-p3 0.842 0.937 0.977)\",\n sky5: \"color(display-p3 0.777 0.9 0.954)\",\n sky6: \"color(display-p3 0.701 0.851 0.921)\",\n sky7: \"color(display-p3 0.604 0.785 0.879)\",\n sky8: \"color(display-p3 0.457 0.696 0.829)\",\n sky9: \"color(display-p3 0.585 0.877 0.983)\",\n sky10: \"color(display-p3 0.555 0.845 0.959)\",\n sky11: \"color(display-p3 0.193 0.448 0.605)\",\n sky12: \"color(display-p3 0.145 0.241 0.329)\",\n};\nconst skyP3A = {\n skyA1: \"color(display-p3 0.02 0.804 1 / 0.02)\",\n skyA2: \"color(display-p3 0.024 0.592 0.757 / 0.048)\",\n skyA3: \"color(display-p3 0.004 0.655 0.886 / 0.102)\",\n skyA4: \"color(display-p3 0.004 0.604 0.851 / 0.157)\",\n skyA5: \"color(display-p3 0.004 0.565 0.792 / 0.224)\",\n skyA6: \"color(display-p3 0.004 0.502 0.737 / 0.299)\",\n skyA7: \"color(display-p3 0.004 0.459 0.694 / 0.397)\",\n skyA8: \"color(display-p3 0 0.435 0.682 / 0.542)\",\n skyA9: \"color(display-p3 0.004 0.71 0.965 / 0.416)\",\n skyA10: \"color(display-p3 0.004 0.647 0.914 / 0.444)\",\n skyA11: \"color(display-p3 0.193 0.448 0.605)\",\n skyA12: \"color(display-p3 0.145 0.241 0.329)\",\n};\nconst mint = {\n mint1: \"#f9fefd\",\n mint2: \"#f2fbf9\",\n mint3: \"#ddf9f2\",\n mint4: \"#c8f4e9\",\n mint5: \"#b3ecde\",\n mint6: \"#9ce0d0\",\n mint7: \"#7ecfbd\",\n mint8: \"#4cbba5\",\n mint9: \"#86ead4\",\n mint10: \"#7de0cb\",\n mint11: \"#027864\",\n mint12: \"#16433c\",\n};\nconst mintA = {\n mintA1: \"#00d5aa06\",\n mintA2: \"#00b18a0d\",\n mintA3: \"#00d29e22\",\n mintA4: \"#00cc9937\",\n mintA5: \"#00c0914c\",\n mintA6: \"#00b08663\",\n mintA7: \"#00a17d81\",\n mintA8: \"#009e7fb3\",\n mintA9: \"#00d3a579\",\n mintA10: \"#00c39982\",\n mintA11: \"#007763fd\",\n mintA12: \"#00312ae9\",\n};\nconst mintP3 = {\n mint1: \"color(display-p3 0.98 0.995 0.992)\",\n mint2: \"color(display-p3 0.957 0.985 0.977)\",\n mint3: \"color(display-p3 0.888 0.972 0.95)\",\n mint4: \"color(display-p3 0.819 0.951 0.916)\",\n mint5: \"color(display-p3 0.747 0.918 0.873)\",\n mint6: \"color(display-p3 0.668 0.87 0.818)\",\n mint7: \"color(display-p3 0.567 0.805 0.744)\",\n mint8: \"color(display-p3 0.42 0.724 0.649)\",\n mint9: \"color(display-p3 0.62 0.908 0.834)\",\n mint10: \"color(display-p3 0.585 0.871 0.797)\",\n mint11: \"color(display-p3 0.203 0.463 0.397)\",\n mint12: \"color(display-p3 0.136 0.259 0.236)\",\n};\nconst mintP3A = {\n mintA1: \"color(display-p3 0.02 0.804 0.608 / 0.02)\",\n mintA2: \"color(display-p3 0.02 0.647 0.467 / 0.044)\",\n mintA3: \"color(display-p3 0.004 0.761 0.553 / 0.114)\",\n mintA4: \"color(display-p3 0.004 0.741 0.545 / 0.181)\",\n mintA5: \"color(display-p3 0.004 0.678 0.51 / 0.255)\",\n mintA6: \"color(display-p3 0.004 0.616 0.463 / 0.334)\",\n mintA7: \"color(display-p3 0.004 0.549 0.412 / 0.432)\",\n mintA8: \"color(display-p3 0 0.529 0.392 / 0.581)\",\n mintA9: \"color(display-p3 0.004 0.765 0.569 / 0.381)\",\n mintA10: \"color(display-p3 0.004 0.69 0.51 / 0.416)\",\n mintA11: \"color(display-p3 0.203 0.463 0.397)\",\n mintA12: \"color(display-p3 0.136 0.259 0.236)\",\n};\nconst lime = {\n lime1: \"#fcfdfa\",\n lime2: \"#f8faf3\",\n lime3: \"#eef6d6\",\n lime4: \"#e2f0bd\",\n lime5: \"#d3e7a6\",\n lime6: \"#c2da91\",\n lime7: \"#abc978\",\n lime8: \"#8db654\",\n lime9: \"#bdee63\",\n lime10: \"#b0e64c\",\n lime11: \"#5c7c2f\",\n lime12: \"#37401c\",\n};\nconst limeA = {\n limeA1: \"#66990005\",\n limeA2: \"#6b95000c\",\n limeA3: \"#96c80029\",\n limeA4: \"#8fc60042\",\n limeA5: \"#81bb0059\",\n limeA6: \"#72aa006e\",\n limeA7: \"#61990087\",\n limeA8: \"#559200ab\",\n limeA9: \"#93e4009c\",\n limeA10: \"#8fdc00b3\",\n limeA11: \"#375f00d0\",\n limeA12: \"#1e2900e3\",\n};\nconst limeP3 = {\n lime1: \"color(display-p3 0.989 0.992 0.981)\",\n lime2: \"color(display-p3 0.975 0.98 0.954)\",\n lime3: \"color(display-p3 0.939 0.965 0.851)\",\n lime4: \"color(display-p3 0.896 0.94 0.76)\",\n lime5: \"color(display-p3 0.843 0.903 0.678)\",\n lime6: \"color(display-p3 0.778 0.852 0.599)\",\n lime7: \"color(display-p3 0.694 0.784 0.508)\",\n lime8: \"color(display-p3 0.585 0.707 0.378)\",\n lime9: \"color(display-p3 0.78 0.928 0.466)\",\n lime10: \"color(display-p3 0.734 0.896 0.397)\",\n lime11: \"color(display-p3 0.386 0.482 0.227)\",\n lime12: \"color(display-p3 0.222 0.25 0.128)\",\n};\nconst limeP3A = {\n limeA1: \"color(display-p3 0.412 0.608 0.02 / 0.02)\",\n limeA2: \"color(display-p3 0.514 0.592 0.024 / 0.048)\",\n limeA3: \"color(display-p3 0.584 0.765 0.008 / 0.15)\",\n limeA4: \"color(display-p3 0.561 0.757 0.004 / 0.24)\",\n limeA5: \"color(display-p3 0.514 0.698 0.004 / 0.322)\",\n limeA6: \"color(display-p3 0.443 0.627 0 / 0.4)\",\n limeA7: \"color(display-p3 0.376 0.561 0.004 / 0.491)\",\n limeA8: \"color(display-p3 0.333 0.529 0 / 0.624)\",\n limeA9: \"color(display-p3 0.588 0.867 0 / 0.534)\",\n limeA10: \"color(display-p3 0.561 0.827 0 / 0.604)\",\n limeA11: \"color(display-p3 0.386 0.482 0.227)\",\n limeA12: \"color(display-p3 0.222 0.25 0.128)\",\n};\nconst yellow = {\n yellow1: \"#fdfdf9\",\n yellow2: \"#fefce9\",\n yellow3: \"#fffab8\",\n yellow4: \"#fff394\",\n yellow5: \"#ffe770\",\n yellow6: \"#f3d768\",\n yellow7: \"#e4c767\",\n yellow8: \"#d5ae39\",\n yellow9: \"#ffe629\",\n yellow10: \"#ffdc00\",\n yellow11: \"#9e6c00\",\n yellow12: \"#473b1f\",\n};\nconst yellowA = {\n yellowA1: \"#aaaa0006\",\n yellowA2: \"#f4dd0016\",\n yellowA3: \"#ffee0047\",\n yellowA4: \"#ffe3016b\",\n yellowA5: \"#ffd5008f\",\n yellowA6: \"#ebbc0097\",\n yellowA7: \"#d2a10098\",\n yellowA8: \"#c99700c6\",\n yellowA9: \"#ffe100d6\",\n yellowA10: \"#ffdc00\",\n yellowA11: \"#9e6c00\",\n yellowA12: \"#2e2000e0\",\n};\nconst yellowP3 = {\n yellow1: \"color(display-p3 0.992 0.992 0.978)\",\n yellow2: \"color(display-p3 0.995 0.99 0.922)\",\n yellow3: \"color(display-p3 0.997 0.982 0.749)\",\n yellow4: \"color(display-p3 0.992 0.953 0.627)\",\n yellow5: \"color(display-p3 0.984 0.91 0.51)\",\n yellow6: \"color(display-p3 0.934 0.847 0.474)\",\n yellow7: \"color(display-p3 0.876 0.785 0.46)\",\n yellow8: \"color(display-p3 0.811 0.689 0.313)\",\n yellow9: \"color(display-p3 1 0.92 0.22)\",\n yellow10: \"color(display-p3 0.977 0.868 0.291)\",\n yellow11: \"color(display-p3 0.6 0.44 0)\",\n yellow12: \"color(display-p3 0.271 0.233 0.137)\",\n};\nconst yellowP3A = {\n yellowA1: \"color(display-p3 0.675 0.675 0.024 / 0.024)\",\n yellowA2: \"color(display-p3 0.953 0.855 0.008 / 0.079)\",\n yellowA3: \"color(display-p3 0.988 0.925 0.004 / 0.251)\",\n yellowA4: \"color(display-p3 0.98 0.875 0.004 / 0.373)\",\n yellowA5: \"color(display-p3 0.969 0.816 0.004 / 0.491)\",\n yellowA6: \"color(display-p3 0.875 0.71 0 / 0.526)\",\n yellowA7: \"color(display-p3 0.769 0.604 0 / 0.542)\",\n yellowA8: \"color(display-p3 0.725 0.549 0 / 0.687)\",\n yellowA9: \"color(display-p3 1 0.898 0 / 0.781)\",\n yellowA10: \"color(display-p3 0.969 0.812 0 / 0.71)\",\n yellowA11: \"color(display-p3 0.6 0.44 0)\",\n yellowA12: \"color(display-p3 0.271 0.233 0.137)\",\n};\nconst amber = {\n amber1: \"#fefdfb\",\n amber2: \"#fefbe9\",\n amber3: \"#fff7c2\",\n amber4: \"#ffee9c\",\n amber5: \"#fbe577\",\n amber6: \"#f3d673\",\n amber7: \"#e9c162\",\n amber8: \"#e2a336\",\n amber9: \"#ffc53d\",\n amber10: \"#ffba18\",\n amber11: \"#ab6400\",\n amber12: \"#4f3422\",\n};\nconst amberA = {\n amberA1: \"#c0800004\",\n amberA2: \"#f4d10016\",\n amberA3: \"#ffde003d\",\n amberA4: \"#ffd40063\",\n amberA5: \"#f8cf0088\",\n amberA6: \"#eab5008c\",\n amberA7: \"#dc9b009d\",\n amberA8: \"#da8a00c9\",\n amberA9: \"#ffb300c2\",\n amberA10: \"#ffb300e7\",\n amberA11: \"#ab6400\",\n amberA12: \"#341500dd\",\n};\nconst amberP3 = {\n amber1: \"color(display-p3 0.995 0.992 0.985)\",\n amber2: \"color(display-p3 0.994 0.986 0.921)\",\n amber3: \"color(display-p3 0.994 0.969 0.782)\",\n amber4: \"color(display-p3 0.989 0.937 0.65)\",\n amber5: \"color(display-p3 0.97 0.902 0.527)\",\n amber6: \"color(display-p3 0.936 0.844 0.506)\",\n amber7: \"color(display-p3 0.89 0.762 0.443)\",\n amber8: \"color(display-p3 0.85 0.65 0.3)\",\n amber9: \"color(display-p3 1 0.77 0.26)\",\n amber10: \"color(display-p3 0.959 0.741 0.274)\",\n amber11: \"color(display-p3 0.64 0.4 0)\",\n amber12: \"color(display-p3 0.294 0.208 0.145)\",\n};\nconst amberP3A = {\n amberA1: \"color(display-p3 0.757 0.514 0.024 / 0.016)\",\n amberA2: \"color(display-p3 0.902 0.804 0.008 / 0.079)\",\n amberA3: \"color(display-p3 0.965 0.859 0.004 / 0.22)\",\n amberA4: \"color(display-p3 0.969 0.82 0.004 / 0.35)\",\n amberA5: \"color(display-p3 0.933 0.796 0.004 / 0.475)\",\n amberA6: \"color(display-p3 0.875 0.682 0.004 / 0.495)\",\n amberA7: \"color(display-p3 0.804 0.573 0 / 0.557)\",\n amberA8: \"color(display-p3 0.788 0.502 0 / 0.699)\",\n amberA9: \"color(display-p3 1 0.686 0 / 0.742)\",\n amberA10: \"color(display-p3 0.945 0.643 0 / 0.726)\",\n amberA11: \"color(display-p3 0.64 0.4 0)\",\n amberA12: \"color(display-p3 0.294 0.208 0.145)\",\n};\nconst orange = {\n orange1: \"#fefcfb\",\n orange2: \"#fff7ed\",\n orange3: \"#ffefd6\",\n orange4: \"#ffdfb5\",\n orange5: \"#ffd19a\",\n orange6: \"#ffc182\",\n orange7: \"#f5ae73\",\n orange8: \"#ec9455\",\n orange9: \"#f76b15\",\n orange10: \"#ef5f00\",\n orange11: \"#cc4e00\",\n orange12: \"#582d1d\",\n};\nconst orangeA = {\n orangeA1: \"#c0400004\",\n orangeA2: \"#ff8e0012\",\n orangeA3: \"#ff9c0029\",\n orangeA4: \"#ff91014a\",\n orangeA5: \"#ff8b0065\",\n orangeA6: \"#ff81007d\",\n orangeA7: \"#ed6c008c\",\n orangeA8: \"#e35f00aa\",\n orangeA9: \"#f65e00ea\",\n orangeA10: \"#ef5f00\",\n orangeA11: \"#cc4e00\",\n orangeA12: \"#431200e2\",\n};\nconst orangeP3 = {\n orange1: \"color(display-p3 0.995 0.988 0.985)\",\n orange2: \"color(display-p3 0.994 0.968 0.934)\",\n orange3: \"color(display-p3 0.989 0.938 0.85)\",\n orange4: \"color(display-p3 1 0.874 0.687)\",\n orange5: \"color(display-p3 1 0.821 0.583)\",\n orange6: \"color(display-p3 0.975 0.767 0.545)\",\n orange7: \"color(display-p3 0.919 0.693 0.486)\",\n orange8: \"color(display-p3 0.877 0.597 0.379)\",\n orange9: \"color(display-p3 0.9 0.45 0.2)\",\n orange10: \"color(display-p3 0.87 0.409 0.164)\",\n orange11: \"color(display-p3 0.76 0.34 0)\",\n orange12: \"color(display-p3 0.323 0.185 0.127)\",\n};\nconst orangeP3A = {\n orangeA1: \"color(display-p3 0.757 0.267 0.024 / 0.016)\",\n orangeA2: \"color(display-p3 0.886 0.533 0.008 / 0.067)\",\n orangeA3: \"color(display-p3 0.922 0.584 0.008 / 0.15)\",\n orangeA4: \"color(display-p3 1 0.604 0.004 / 0.314)\",\n orangeA5: \"color(display-p3 1 0.569 0.004 / 0.416)\",\n orangeA6: \"color(display-p3 0.949 0.494 0.004 / 0.455)\",\n orangeA7: \"color(display-p3 0.839 0.408 0 / 0.514)\",\n orangeA8: \"color(display-p3 0.804 0.349 0 / 0.62)\",\n orangeA9: \"color(display-p3 0.878 0.314 0 / 0.8)\",\n orangeA10: \"color(display-p3 0.843 0.29 0 / 0.836)\",\n orangeA11: \"color(display-p3 0.76 0.34 0)\",\n orangeA12: \"color(display-p3 0.323 0.185 0.127)\",\n};\n\nconst blackA = {\n blackA1: \"rgba(0, 0, 0, 0.05)\",\n blackA2: \"rgba(0, 0, 0, 0.1)\",\n blackA3: \"rgba(0, 0, 0, 0.15)\",\n blackA4: \"rgba(0, 0, 0, 0.2)\",\n blackA5: \"rgba(0, 0, 0, 0.3)\",\n blackA6: \"rgba(0, 0, 0, 0.4)\",\n blackA7: \"rgba(0, 0, 0, 0.5)\",\n blackA8: \"rgba(0, 0, 0, 0.6)\",\n blackA9: \"rgba(0, 0, 0, 0.7)\",\n blackA10: \"rgba(0, 0, 0, 0.8)\",\n blackA11: \"rgba(0, 0, 0, 0.9)\",\n blackA12: \"rgba(0, 0, 0, 0.95)\",\n};\nconst blackP3A = {\n blackA1: \"color(display-p3 0 0 0 / 0.05)\",\n blackA2: \"color(display-p3 0 0 0 / 0.1)\",\n blackA3: \"color(display-p3 0 0 0 / 0.15)\",\n blackA4: \"color(display-p3 0 0 0 / 0.2)\",\n blackA5: \"color(display-p3 0 0 0 / 0.3)\",\n blackA6: \"color(display-p3 0 0 0 / 0.4)\",\n blackA7: \"color(display-p3 0 0 0 / 0.5)\",\n blackA8: \"color(display-p3 0 0 0 / 0.6)\",\n blackA9: \"color(display-p3 0 0 0 / 0.7)\",\n blackA10: \"color(display-p3 0 0 0 / 0.8)\",\n blackA11: \"color(display-p3 0 0 0 / 0.9)\",\n blackA12: \"color(display-p3 0 0 0 / 0.95)\",\n};\n\nconst whiteA = {\n whiteA1: \"rgba(255, 255, 255, 0.05)\",\n whiteA2: \"rgba(255, 255, 255, 0.1)\",\n whiteA3: \"rgba(255, 255, 255, 0.15)\",\n whiteA4: \"rgba(255, 255, 255, 0.2)\",\n whiteA5: \"rgba(255, 255, 255, 0.3)\",\n whiteA6: \"rgba(255, 255, 255, 0.4)\",\n whiteA7: \"rgba(255, 255, 255, 0.5)\",\n whiteA8: \"rgba(255, 255, 255, 0.6)\",\n whiteA9: \"rgba(255, 255, 255, 0.7)\",\n whiteA10: \"rgba(255, 255, 255, 0.8)\",\n whiteA11: \"rgba(255, 255, 255, 0.9)\",\n whiteA12: \"rgba(255, 255, 255, 0.95)\",\n};\nconst whiteP3A = {\n whiteA1: \"color(display-p3 1 1 1 / 0.05)\",\n whiteA2: \"color(display-p3 1 1 1 / 0.1)\",\n whiteA3: \"color(display-p3 1 1 1 / 0.15)\",\n whiteA4: \"color(display-p3 1 1 1 / 0.2)\",\n whiteA5: \"color(display-p3 1 1 1 / 0.3)\",\n whiteA6: \"color(display-p3 1 1 1 / 0.4)\",\n whiteA7: \"color(display-p3 1 1 1 / 0.5)\",\n whiteA8: \"color(display-p3 1 1 1 / 0.6)\",\n whiteA9: \"color(display-p3 1 1 1 / 0.7)\",\n whiteA10: \"color(display-p3 1 1 1 / 0.8)\",\n whiteA11: \"color(display-p3 1 1 1 / 0.9)\",\n whiteA12: \"color(display-p3 1 1 1 / 0.95)\",\n};\n\nexport { amber, amberA, amberDark, amberDarkA, amberDarkP3, amberDarkP3A, amberP3, amberP3A, blackA, blackP3A, blue, blueA, blueDark, blueDarkA, blueDarkP3, blueDarkP3A, blueP3, blueP3A, bronze, bronzeA, bronzeDark, bronzeDarkA, bronzeDarkP3, bronzeDarkP3A, bronzeP3, bronzeP3A, brown, brownA, brownDark, brownDarkA, brownDarkP3, brownDarkP3A, brownP3, brownP3A, crimson, crimsonA, crimsonDark, crimsonDarkA, crimsonDarkP3, crimsonDarkP3A, crimsonP3, crimsonP3A, cyan, cyanA, cyanDark, cyanDarkA, cyanDarkP3, cyanDarkP3A, cyanP3, cyanP3A, gold, goldA, goldDark, goldDarkA, goldDarkP3, goldDarkP3A, goldP3, goldP3A, grass, grassA, grassDark, grassDarkA, grassDarkP3, grassDarkP3A, grassP3, grassP3A, gray, grayA, grayDark, grayDarkA, grayDarkP3, grayDarkP3A, grayP3, grayP3A, green, greenA, greenDark, greenDarkA, greenDarkP3, greenDarkP3A, greenP3, greenP3A, indigo, indigoA, indigoDark, indigoDarkA, indigoDarkP3, indigoDarkP3A, indigoP3, indigoP3A, iris, irisA, irisDark, irisDarkA, irisDarkP3, irisDarkP3A, irisP3, irisP3A, jade, jadeA, jadeDark, jadeDarkA, jadeDarkP3, jadeDarkP3A, jadeP3, jadeP3A, lime, limeA, limeDark, limeDarkA, limeDarkP3, limeDarkP3A, limeP3, limeP3A, mauve, mauveA, mauveDark, mauveDarkA, mauveDarkP3, mauveDarkP3A, mauveP3, mauveP3A, mint, mintA, mintDark, mintDarkA, mintDarkP3, mintDarkP3A, mintP3, mintP3A, olive, oliveA, oliveDark, oliveDarkA, oliveDarkP3, oliveDarkP3A, oliveP3, oliveP3A, orange, orangeA, orangeDark, orangeDarkA, orangeDarkP3, orangeDarkP3A, orangeP3, orangeP3A, pink, pinkA, pinkDark, pinkDarkA, pinkDarkP3, pinkDarkP3A, pinkP3, pinkP3A, plum, plumA, plumDark, plumDarkA, plumDarkP3, plumDarkP3A, plumP3, plumP3A, purple, purpleA, purpleDark, purpleDarkA, purpleDarkP3, purpleDarkP3A, purpleP3, purpleP3A, red, redA, redDark, redDarkA, redDarkP3, redDarkP3A, redP3, redP3A, ruby, rubyA, rubyDark, rubyDarkA, rubyDarkP3, rubyDarkP3A, rubyP3, rubyP3A, sage, sageA, sageDark, sageDarkA, sageDarkP3, sageDarkP3A, sageP3, sageP3A, sand, sandA, sandDark, sandDarkA, sandDarkP3, sandDarkP3A, sandP3, sandP3A, sky, skyA, skyDark, skyDarkA, skyDarkP3, skyDarkP3A, skyP3, skyP3A, slate, slateA, slateDark, slateDarkA, slateDarkP3, slateDarkP3A, slateP3, slateP3A, teal, tealA, tealDark, tealDarkA, tealDarkP3, tealDarkP3A, tealP3, tealP3A, tomato, tomatoA, tomatoDark, tomatoDarkA, tomatoDarkP3, tomatoDarkP3A, tomatoP3, tomatoP3A, violet, violetA, violetDark, violetDarkA, violetDarkP3, violetDarkP3A, violetP3, violetP3A, whiteA, whiteP3A, yellow, yellowA, yellowDark, yellowDarkA, yellowDarkP3, yellowDarkP3A, yellowP3, yellowP3A };\n"],
|
|
4
|
+
"sourcesContent": ["/**\n * This file is auto-generated from content/locale.yml.\n * Run `node packages/helpers/locales/sync-default-locale.js` after updating locale copy.\n */\nmodule.exports = {\n routes: {\n search: 'search',\n works: 'works'\n },\n common: {\n actions: {\n open: 'Open',\n close: 'Close',\n clear: 'Clear',\n clear_all: 'Clear all',\n done: 'Done',\n show: 'Show',\n hide: 'Hide'\n },\n nouns: {\n search: 'Search',\n filters: 'Filters',\n results: 'results',\n values: 'values',\n types: 'types',\n items: 'items',\n navigation: 'navigation',\n section_navigation: 'section navigation',\n content_navigation: 'content navigation',\n primary_navigation: 'Primary navigation',\n metadata: 'metadata',\n gallery: 'gallery',\n gallery_thumbnails: 'gallery thumbnails',\n map: 'map',\n map_data: 'map data',\n map_locations: 'map locations',\n item_label: 'Item',\n details: 'details',\n breadcrumb: 'Breadcrumb',\n home: 'Home'\n },\n types: {\n work: 'Works',\n page: 'Pages',\n docs: 'Docs'\n },\n statuses: {\n loading: 'Loading\u2026',\n empty_short: 'No {content}',\n empty_detail: 'No {content} available.',\n unavailable: '{content} unavailable.',\n unavailable_detail: '{content} is unavailable.',\n failed: 'Unable to load {content}.',\n loading_content: 'Loading {content}\u2026',\n summary_content: 'Showing {shown} of {total} {content}',\n search_summary: 'Found {shown} of {total} in {type} for \"{query}\"',\n no_matches: 'No matches found.'\n },\n phrases: {\n placeholder_search: 'Search\u2026',\n results_label: 'Search results',\n open_content: 'Open {content}',\n close_content: 'Close {content}',\n show_content: 'Show {content}',\n hide_content: 'Hide {content}',\n nav_label: '{content} navigation',\n search_content: 'Search {content}',\n filter_values: 'Filter {content} values',\n clear_content_search: 'Clear {content} search',\n none_applied: 'No {content} applied',\n applied_count: '{count} {content} applied',\n toggle_content: 'Toggle {content}',\n scroll_direction_content: 'Scroll {direction} through {content}',\n step_content: '{direction} {content}',\n item_numbered: '{content} {index}',\n content_key: '{content} key'\n },\n directions: {\n left: 'left',\n right: 'right',\n previous: 'Previous',\n next: 'Next'\n },\n misc: {\n referenced_by: 'Referenced by',\n on_this_page: 'On this page'\n }\n }\n};\n", "\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"\u00A2\":\"cent\",\"\u00A3\":\"pound\",\"\u00A4\":\"currency\",\"\u00A5\":\"yen\",\"\u00A9\":\"(c)\",\"\u00AA\":\"a\",\"\u00AE\":\"(r)\",\"\u00BA\":\"o\",\"\u00C0\":\"A\",\"\u00C1\":\"A\",\"\u00C2\":\"A\",\"\u00C3\":\"A\",\"\u00C4\":\"A\",\"\u00C5\":\"A\",\"\u00C6\":\"AE\",\"\u00C7\":\"C\",\"\u00C8\":\"E\",\"\u00C9\":\"E\",\"\u00CA\":\"E\",\"\u00CB\":\"E\",\"\u00CC\":\"I\",\"\u00CD\":\"I\",\"\u00CE\":\"I\",\"\u00CF\":\"I\",\"\u00D0\":\"D\",\"\u00D1\":\"N\",\"\u00D2\":\"O\",\"\u00D3\":\"O\",\"\u00D4\":\"O\",\"\u00D5\":\"O\",\"\u00D6\":\"O\",\"\u00D8\":\"O\",\"\u00D9\":\"U\",\"\u00DA\":\"U\",\"\u00DB\":\"U\",\"\u00DC\":\"U\",\"\u00DD\":\"Y\",\"\u00DE\":\"TH\",\"\u00DF\":\"ss\",\"\u00E0\":\"a\",\"\u00E1\":\"a\",\"\u00E2\":\"a\",\"\u00E3\":\"a\",\"\u00E4\":\"a\",\"\u00E5\":\"a\",\"\u00E6\":\"ae\",\"\u00E7\":\"c\",\"\u00E8\":\"e\",\"\u00E9\":\"e\",\"\u00EA\":\"e\",\"\u00EB\":\"e\",\"\u00EC\":\"i\",\"\u00ED\":\"i\",\"\u00EE\":\"i\",\"\u00EF\":\"i\",\"\u00F0\":\"d\",\"\u00F1\":\"n\",\"\u00F2\":\"o\",\"\u00F3\":\"o\",\"\u00F4\":\"o\",\"\u00F5\":\"o\",\"\u00F6\":\"o\",\"\u00F8\":\"o\",\"\u00F9\":\"u\",\"\u00FA\":\"u\",\"\u00FB\":\"u\",\"\u00FC\":\"u\",\"\u00FD\":\"y\",\"\u00FE\":\"th\",\"\u00FF\":\"y\",\"\u0100\":\"A\",\"\u0101\":\"a\",\"\u0102\":\"A\",\"\u0103\":\"a\",\"\u0104\":\"A\",\"\u0105\":\"a\",\"\u0106\":\"C\",\"\u0107\":\"c\",\"\u010C\":\"C\",\"\u010D\":\"c\",\"\u010E\":\"D\",\"\u010F\":\"d\",\"\u0110\":\"DJ\",\"\u0111\":\"dj\",\"\u0112\":\"E\",\"\u0113\":\"e\",\"\u0116\":\"E\",\"\u0117\":\"e\",\"\u0118\":\"e\",\"\u0119\":\"e\",\"\u011A\":\"E\",\"\u011B\":\"e\",\"\u011E\":\"G\",\"\u011F\":\"g\",\"\u0122\":\"G\",\"\u0123\":\"g\",\"\u0128\":\"I\",\"\u0129\":\"i\",\"\u012A\":\"i\",\"\u012B\":\"i\",\"\u012E\":\"I\",\"\u012F\":\"i\",\"\u0130\":\"I\",\"\u0131\":\"i\",\"\u0136\":\"k\",\"\u0137\":\"k\",\"\u013B\":\"L\",\"\u013C\":\"l\",\"\u013D\":\"L\",\"\u013E\":\"l\",\"\u0141\":\"L\",\"\u0142\":\"l\",\"\u0143\":\"N\",\"\u0144\":\"n\",\"\u0145\":\"N\",\"\u0146\":\"n\",\"\u0147\":\"N\",\"\u0148\":\"n\",\"\u014C\":\"O\",\"\u014D\":\"o\",\"\u0150\":\"O\",\"\u0151\":\"o\",\"\u0152\":\"OE\",\"\u0153\":\"oe\",\"\u0154\":\"R\",\"\u0155\":\"r\",\"\u0158\":\"R\",\"\u0159\":\"r\",\"\u015A\":\"S\",\"\u015B\":\"s\",\"\u015E\":\"S\",\"\u015F\":\"s\",\"\u0160\":\"S\",\"\u0161\":\"s\",\"\u0162\":\"T\",\"\u0163\":\"t\",\"\u0164\":\"T\",\"\u0165\":\"t\",\"\u0168\":\"U\",\"\u0169\":\"u\",\"\u016A\":\"u\",\"\u016B\":\"u\",\"\u016E\":\"U\",\"\u016F\":\"u\",\"\u0170\":\"U\",\"\u0171\":\"u\",\"\u0172\":\"U\",\"\u0173\":\"u\",\"\u0174\":\"W\",\"\u0175\":\"w\",\"\u0176\":\"Y\",\"\u0177\":\"y\",\"\u0178\":\"Y\",\"\u0179\":\"Z\",\"\u017A\":\"z\",\"\u017B\":\"Z\",\"\u017C\":\"z\",\"\u017D\":\"Z\",\"\u017E\":\"z\",\"\u018F\":\"E\",\"\u0192\":\"f\",\"\u01A0\":\"O\",\"\u01A1\":\"o\",\"\u01AF\":\"U\",\"\u01B0\":\"u\",\"\u01C8\":\"LJ\",\"\u01C9\":\"lj\",\"\u01CB\":\"NJ\",\"\u01CC\":\"nj\",\"\u0218\":\"S\",\"\u0219\":\"s\",\"\u021A\":\"T\",\"\u021B\":\"t\",\"\u0259\":\"e\",\"\u02DA\":\"o\",\"\u0386\":\"A\",\"\u0388\":\"E\",\"\u0389\":\"H\",\"\u038A\":\"I\",\"\u038C\":\"O\",\"\u038E\":\"Y\",\"\u038F\":\"W\",\"\u0390\":\"i\",\"\u0391\":\"A\",\"\u0392\":\"B\",\"\u0393\":\"G\",\"\u0394\":\"D\",\"\u0395\":\"E\",\"\u0396\":\"Z\",\"\u0397\":\"H\",\"\u0398\":\"8\",\"\u0399\":\"I\",\"\u039A\":\"K\",\"\u039B\":\"L\",\"\u039C\":\"M\",\"\u039D\":\"N\",\"\u039E\":\"3\",\"\u039F\":\"O\",\"\u03A0\":\"P\",\"\u03A1\":\"R\",\"\u03A3\":\"S\",\"\u03A4\":\"T\",\"\u03A5\":\"Y\",\"\u03A6\":\"F\",\"\u03A7\":\"X\",\"\u03A8\":\"PS\",\"\u03A9\":\"W\",\"\u03AA\":\"I\",\"\u03AB\":\"Y\",\"\u03AC\":\"a\",\"\u03AD\":\"e\",\"\u03AE\":\"h\",\"\u03AF\":\"i\",\"\u03B0\":\"y\",\"\u03B1\":\"a\",\"\u03B2\":\"b\",\"\u03B3\":\"g\",\"\u03B4\":\"d\",\"\u03B5\":\"e\",\"\u03B6\":\"z\",\"\u03B7\":\"h\",\"\u03B8\":\"8\",\"\u03B9\":\"i\",\"\u03BA\":\"k\",\"\u03BB\":\"l\",\"\u03BC\":\"m\",\"\u03BD\":\"n\",\"\u03BE\":\"3\",\"\u03BF\":\"o\",\"\u03C0\":\"p\",\"\u03C1\":\"r\",\"\u03C2\":\"s\",\"\u03C3\":\"s\",\"\u03C4\":\"t\",\"\u03C5\":\"y\",\"\u03C6\":\"f\",\"\u03C7\":\"x\",\"\u03C8\":\"ps\",\"\u03C9\":\"w\",\"\u03CA\":\"i\",\"\u03CB\":\"y\",\"\u03CC\":\"o\",\"\u03CD\":\"y\",\"\u03CE\":\"w\",\"\u0401\":\"Yo\",\"\u0402\":\"DJ\",\"\u0404\":\"Ye\",\"\u0406\":\"I\",\"\u0407\":\"Yi\",\"\u0408\":\"J\",\"\u0409\":\"LJ\",\"\u040A\":\"NJ\",\"\u040B\":\"C\",\"\u040F\":\"DZ\",\"\u0410\":\"A\",\"\u0411\":\"B\",\"\u0412\":\"V\",\"\u0413\":\"G\",\"\u0414\":\"D\",\"\u0415\":\"E\",\"\u0416\":\"Zh\",\"\u0417\":\"Z\",\"\u0418\":\"I\",\"\u0419\":\"J\",\"\u041A\":\"K\",\"\u041B\":\"L\",\"\u041C\":\"M\",\"\u041D\":\"N\",\"\u041E\":\"O\",\"\u041F\":\"P\",\"\u0420\":\"R\",\"\u0421\":\"S\",\"\u0422\":\"T\",\"\u0423\":\"U\",\"\u0424\":\"F\",\"\u0425\":\"H\",\"\u0426\":\"C\",\"\u0427\":\"Ch\",\"\u0428\":\"Sh\",\"\u0429\":\"Sh\",\"\u042A\":\"U\",\"\u042B\":\"Y\",\"\u042C\":\"\",\"\u042D\":\"E\",\"\u042E\":\"Yu\",\"\u042F\":\"Ya\",\"\u0430\":\"a\",\"\u0431\":\"b\",\"\u0432\":\"v\",\"\u0433\":\"g\",\"\u0434\":\"d\",\"\u0435\":\"e\",\"\u0436\":\"zh\",\"\u0437\":\"z\",\"\u0438\":\"i\",\"\u0439\":\"j\",\"\u043A\":\"k\",\"\u043B\":\"l\",\"\u043C\":\"m\",\"\u043D\":\"n\",\"\u043E\":\"o\",\"\u043F\":\"p\",\"\u0440\":\"r\",\"\u0441\":\"s\",\"\u0442\":\"t\",\"\u0443\":\"u\",\"\u0444\":\"f\",\"\u0445\":\"h\",\"\u0446\":\"c\",\"\u0447\":\"ch\",\"\u0448\":\"sh\",\"\u0449\":\"sh\",\"\u044A\":\"u\",\"\u044B\":\"y\",\"\u044C\":\"\",\"\u044D\":\"e\",\"\u044E\":\"yu\",\"\u044F\":\"ya\",\"\u0451\":\"yo\",\"\u0452\":\"dj\",\"\u0454\":\"ye\",\"\u0456\":\"i\",\"\u0457\":\"yi\",\"\u0458\":\"j\",\"\u0459\":\"lj\",\"\u045A\":\"nj\",\"\u045B\":\"c\",\"\u045D\":\"u\",\"\u045F\":\"dz\",\"\u0490\":\"G\",\"\u0491\":\"g\",\"\u0492\":\"GH\",\"\u0493\":\"gh\",\"\u049A\":\"KH\",\"\u049B\":\"kh\",\"\u04A2\":\"NG\",\"\u04A3\":\"ng\",\"\u04AE\":\"UE\",\"\u04AF\":\"ue\",\"\u04B0\":\"U\",\"\u04B1\":\"u\",\"\u04BA\":\"H\",\"\u04BB\":\"h\",\"\u04D8\":\"AE\",\"\u04D9\":\"ae\",\"\u04E8\":\"OE\",\"\u04E9\":\"oe\",\"\u0531\":\"A\",\"\u0532\":\"B\",\"\u0533\":\"G\",\"\u0534\":\"D\",\"\u0535\":\"E\",\"\u0536\":\"Z\",\"\u0537\":\"E\\'\",\"\u0538\":\"Y\\'\",\"\u0539\":\"T\\'\",\"\u053A\":\"JH\",\"\u053B\":\"I\",\"\u053C\":\"L\",\"\u053D\":\"X\",\"\u053E\":\"C\\'\",\"\u053F\":\"K\",\"\u0540\":\"H\",\"\u0541\":\"D\\'\",\"\u0542\":\"GH\",\"\u0543\":\"TW\",\"\u0544\":\"M\",\"\u0545\":\"Y\",\"\u0546\":\"N\",\"\u0547\":\"SH\",\"\u0549\":\"CH\",\"\u054A\":\"P\",\"\u054B\":\"J\",\"\u054C\":\"R\\'\",\"\u054D\":\"S\",\"\u054E\":\"V\",\"\u054F\":\"T\",\"\u0550\":\"R\",\"\u0551\":\"C\",\"\u0553\":\"P\\'\",\"\u0554\":\"Q\\'\",\"\u0555\":\"O\\'\\'\",\"\u0556\":\"F\",\"\u0587\":\"EV\",\"\u0621\":\"a\",\"\u0622\":\"aa\",\"\u0623\":\"a\",\"\u0624\":\"u\",\"\u0625\":\"i\",\"\u0626\":\"e\",\"\u0627\":\"a\",\"\u0628\":\"b\",\"\u0629\":\"h\",\"\u062A\":\"t\",\"\u062B\":\"th\",\"\u062C\":\"j\",\"\u062D\":\"h\",\"\u062E\":\"kh\",\"\u062F\":\"d\",\"\u0630\":\"th\",\"\u0631\":\"r\",\"\u0632\":\"z\",\"\u0633\":\"s\",\"\u0634\":\"sh\",\"\u0635\":\"s\",\"\u0636\":\"dh\",\"\u0637\":\"t\",\"\u0638\":\"z\",\"\u0639\":\"a\",\"\u063A\":\"gh\",\"\u0641\":\"f\",\"\u0642\":\"q\",\"\u0643\":\"k\",\"\u0644\":\"l\",\"\u0645\":\"m\",\"\u0646\":\"n\",\"\u0647\":\"h\",\"\u0648\":\"w\",\"\u0649\":\"a\",\"\u064A\":\"y\",\"\u064B\":\"an\",\"\u064C\":\"on\",\"\u064D\":\"en\",\"\u064E\":\"a\",\"\u064F\":\"u\",\"\u0650\":\"e\",\"\u0652\":\"\",\"\u0660\":\"0\",\"\u0661\":\"1\",\"\u0662\":\"2\",\"\u0663\":\"3\",\"\u0664\":\"4\",\"\u0665\":\"5\",\"\u0666\":\"6\",\"\u0667\":\"7\",\"\u0668\":\"8\",\"\u0669\":\"9\",\"\u067E\":\"p\",\"\u0686\":\"ch\",\"\u0698\":\"zh\",\"\u06A9\":\"k\",\"\u06AF\":\"g\",\"\u06CC\":\"y\",\"\u06F0\":\"0\",\"\u06F1\":\"1\",\"\u06F2\":\"2\",\"\u06F3\":\"3\",\"\u06F4\":\"4\",\"\u06F5\":\"5\",\"\u06F6\":\"6\",\"\u06F7\":\"7\",\"\u06F8\":\"8\",\"\u06F9\":\"9\",\"\u0E3F\":\"baht\",\"\u10D0\":\"a\",\"\u10D1\":\"b\",\"\u10D2\":\"g\",\"\u10D3\":\"d\",\"\u10D4\":\"e\",\"\u10D5\":\"v\",\"\u10D6\":\"z\",\"\u10D7\":\"t\",\"\u10D8\":\"i\",\"\u10D9\":\"k\",\"\u10DA\":\"l\",\"\u10DB\":\"m\",\"\u10DC\":\"n\",\"\u10DD\":\"o\",\"\u10DE\":\"p\",\"\u10DF\":\"zh\",\"\u10E0\":\"r\",\"\u10E1\":\"s\",\"\u10E2\":\"t\",\"\u10E3\":\"u\",\"\u10E4\":\"f\",\"\u10E5\":\"k\",\"\u10E6\":\"gh\",\"\u10E7\":\"q\",\"\u10E8\":\"sh\",\"\u10E9\":\"ch\",\"\u10EA\":\"ts\",\"\u10EB\":\"dz\",\"\u10EC\":\"ts\",\"\u10ED\":\"ch\",\"\u10EE\":\"kh\",\"\u10EF\":\"j\",\"\u10F0\":\"h\",\"\u1E62\":\"S\",\"\u1E63\":\"s\",\"\u1E80\":\"W\",\"\u1E81\":\"w\",\"\u1E82\":\"W\",\"\u1E83\":\"w\",\"\u1E84\":\"W\",\"\u1E85\":\"w\",\"\u1E9E\":\"SS\",\"\u1EA0\":\"A\",\"\u1EA1\":\"a\",\"\u1EA2\":\"A\",\"\u1EA3\":\"a\",\"\u1EA4\":\"A\",\"\u1EA5\":\"a\",\"\u1EA6\":\"A\",\"\u1EA7\":\"a\",\"\u1EA8\":\"A\",\"\u1EA9\":\"a\",\"\u1EAA\":\"A\",\"\u1EAB\":\"a\",\"\u1EAC\":\"A\",\"\u1EAD\":\"a\",\"\u1EAE\":\"A\",\"\u1EAF\":\"a\",\"\u1EB0\":\"A\",\"\u1EB1\":\"a\",\"\u1EB2\":\"A\",\"\u1EB3\":\"a\",\"\u1EB4\":\"A\",\"\u1EB5\":\"a\",\"\u1EB6\":\"A\",\"\u1EB7\":\"a\",\"\u1EB8\":\"E\",\"\u1EB9\":\"e\",\"\u1EBA\":\"E\",\"\u1EBB\":\"e\",\"\u1EBC\":\"E\",\"\u1EBD\":\"e\",\"\u1EBE\":\"E\",\"\u1EBF\":\"e\",\"\u1EC0\":\"E\",\"\u1EC1\":\"e\",\"\u1EC2\":\"E\",\"\u1EC3\":\"e\",\"\u1EC4\":\"E\",\"\u1EC5\":\"e\",\"\u1EC6\":\"E\",\"\u1EC7\":\"e\",\"\u1EC8\":\"I\",\"\u1EC9\":\"i\",\"\u1ECA\":\"I\",\"\u1ECB\":\"i\",\"\u1ECC\":\"O\",\"\u1ECD\":\"o\",\"\u1ECE\":\"O\",\"\u1ECF\":\"o\",\"\u1ED0\":\"O\",\"\u1ED1\":\"o\",\"\u1ED2\":\"O\",\"\u1ED3\":\"o\",\"\u1ED4\":\"O\",\"\u1ED5\":\"o\",\"\u1ED6\":\"O\",\"\u1ED7\":\"o\",\"\u1ED8\":\"O\",\"\u1ED9\":\"o\",\"\u1EDA\":\"O\",\"\u1EDB\":\"o\",\"\u1EDC\":\"O\",\"\u1EDD\":\"o\",\"\u1EDE\":\"O\",\"\u1EDF\":\"o\",\"\u1EE0\":\"O\",\"\u1EE1\":\"o\",\"\u1EE2\":\"O\",\"\u1EE3\":\"o\",\"\u1EE4\":\"U\",\"\u1EE5\":\"u\",\"\u1EE6\":\"U\",\"\u1EE7\":\"u\",\"\u1EE8\":\"U\",\"\u1EE9\":\"u\",\"\u1EEA\":\"U\",\"\u1EEB\":\"u\",\"\u1EEC\":\"U\",\"\u1EED\":\"u\",\"\u1EEE\":\"U\",\"\u1EEF\":\"u\",\"\u1EF0\":\"U\",\"\u1EF1\":\"u\",\"\u1EF2\":\"Y\",\"\u1EF3\":\"y\",\"\u1EF4\":\"Y\",\"\u1EF5\":\"y\",\"\u1EF6\":\"Y\",\"\u1EF7\":\"y\",\"\u1EF8\":\"Y\",\"\u1EF9\":\"y\",\"\u2013\":\"-\",\"\u2018\":\"\\'\",\"\u2019\":\"\\'\",\"\u201C\":\"\\\\\\\"\",\"\u201D\":\"\\\\\\\"\",\"\u201E\":\"\\\\\\\"\",\"\u2020\":\"+\",\"\u2022\":\"*\",\"\u2026\":\"...\",\"\u20A0\":\"ecu\",\"\u20A2\":\"cruzeiro\",\"\u20A3\":\"french franc\",\"\u20A4\":\"lira\",\"\u20A5\":\"mill\",\"\u20A6\":\"naira\",\"\u20A7\":\"peseta\",\"\u20A8\":\"rupee\",\"\u20A9\":\"won\",\"\u20AA\":\"new shequel\",\"\u20AB\":\"dong\",\"\u20AC\":\"euro\",\"\u20AD\":\"kip\",\"\u20AE\":\"tugrik\",\"\u20AF\":\"drachma\",\"\u20B0\":\"penny\",\"\u20B1\":\"peso\",\"\u20B2\":\"guarani\",\"\u20B3\":\"austral\",\"\u20B4\":\"hryvnia\",\"\u20B5\":\"cedi\",\"\u20B8\":\"kazakhstani tenge\",\"\u20B9\":\"indian rupee\",\"\u20BA\":\"turkish lira\",\"\u20BD\":\"russian ruble\",\"\u20BF\":\"bitcoin\",\"\u2120\":\"sm\",\"\u2122\":\"tm\",\"\u2202\":\"d\",\"\u2206\":\"delta\",\"\u2211\":\"sum\",\"\u221E\":\"infinity\",\"\u2665\":\"love\",\"\u5143\":\"yuan\",\"\u5186\":\"yen\",\"\uFDFC\":\"rial\",\"\uFEF5\":\"laa\",\"\uFEF7\":\"laa\",\"\uFEF9\":\"lai\",\"\uFEFB\":\"la\"}')\n var locales = JSON.parse('{\"bg\":{\"\u0419\":\"Y\",\"\u0426\":\"Ts\",\"\u0429\":\"Sht\",\"\u042A\":\"A\",\"\u042C\":\"Y\",\"\u0439\":\"y\",\"\u0446\":\"ts\",\"\u0449\":\"sht\",\"\u044A\":\"a\",\"\u044C\":\"y\"},\"de\":{\"\u00C4\":\"AE\",\"\u00E4\":\"ae\",\"\u00D6\":\"OE\",\"\u00F6\":\"oe\",\"\u00DC\":\"UE\",\"\u00FC\":\"ue\",\"\u00DF\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"\u2211\":\"summe\",\"\u221E\":\"unendlich\",\"\u2665\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"\u00A2\":\"centavos\",\"\u00A3\":\"libras\",\"\u00A4\":\"moneda\",\"\u20A3\":\"francos\",\"\u2211\":\"suma\",\"\u221E\":\"infinito\",\"\u2665\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"\u00A2\":\"centime\",\"\u00A3\":\"livre\",\"\u00A4\":\"devise\",\"\u20A3\":\"franc\",\"\u2211\":\"somme\",\"\u221E\":\"infini\",\"\u2665\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"\u00A2\":\"centavo\",\"\u2211\":\"soma\",\"\u00A3\":\"libra\",\"\u221E\":\"infinito\",\"\u2665\":\"amor\"},\"uk\":{\"\u0418\":\"Y\",\"\u0438\":\"y\",\"\u0419\":\"Y\",\"\u0439\":\"y\",\"\u0426\":\"Ts\",\"\u0446\":\"ts\",\"\u0425\":\"Kh\",\"\u0445\":\"kh\",\"\u0429\":\"Shch\",\"\u0449\":\"shch\",\"\u0413\":\"H\",\"\u0433\":\"h\"},\"vi\":{\"\u0110\":\"D\",\"\u0111\":\"d\"},\"da\":{\"\u00D8\":\"OE\",\"\u00F8\":\"oe\",\"\u00C5\":\"AA\",\"\u00E5\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"st\u00F8rre end\"},\"nb\":{\"&\":\"og\",\"\u00C5\":\"AA\",\"\u00C6\":\"AE\",\"\u00D8\":\"OE\",\"\u00E5\":\"aa\",\"\u00E6\":\"ae\",\"\u00F8\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"\u00C5\":\"AA\",\"\u00C4\":\"AE\",\"\u00D6\":\"OE\",\"\u00E5\":\"aa\",\"\u00E4\":\"ae\",\"\u00F6\":\"oe\"}}')\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var locale = locales[options.locale] || {}\n\n var replacement = options.replacement === undefined ? '-' : options.replacement\n\n var trim = options.trim === undefined ? true : options.trim\n\n var slug = string.normalize().split('')\n // replace characters based on charMap\n .reduce(function (result, ch) {\n var appendChar = locale[ch];\n if (appendChar === undefined) appendChar = charMap[ch];\n if (appendChar === undefined) appendChar = ch;\n if (appendChar === replacement) appendChar = ' ';\n return result + appendChar\n // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '')\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n }\n\n if (trim) {\n slug = slug.trim()\n }\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase()\n }\n\n return slug\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap)\n }\n\n return replace\n}))\n", "import React from \"react\";\n\nexport const HelloWorld = () => {\n return <div>Hello, World!</div>;\n};\n", "import React, { useEffect, useState } from \"react\";\n\n// SSR-safe wrapper around Clover's viewer. Clover touches the DOM at import time,\n// so we dynamically import it only in the browser.\n\n// Default Clover viewer options; can be overridden per-usage via props.options\nconst DEFAULT_VIEWER_OPTIONS = {\n showDownload: false,\n showIIIFBadge: false,\n showTitle: false,\n informationPanel: {\n open: false,\n renderAbout: false,\n renderToggle: false,\n },\n};\n\nfunction isPlainObject(val) {\n return val && typeof val === \"object\" && !Array.isArray(val);\n}\n\nfunction deepMerge(base, override) {\n if (!isPlainObject(base)) return override;\n const out = { ...base };\n if (!isPlainObject(override)) return out;\n for (const key of Object.keys(override)) {\n const a = base[key];\n const b = override[key];\n if (isPlainObject(a) && isPlainObject(b)) out[key] = deepMerge(a, b);\n else out[key] = b;\n }\n return out;\n}\n\nexport const Viewer = (props) => {\n const [CloverViewer, setCloverViewer] = useState(null);\n const mergedOptions = deepMerge(\n DEFAULT_VIEWER_OPTIONS,\n props && props.options\n );\n const crossOriginExplicitlyUndefined =\n props &&\n props.options &&\n Object.prototype.hasOwnProperty.call(props.options, \"crossOrigin\") &&\n props.options.crossOrigin === undefined;\n if (crossOriginExplicitlyUndefined) {\n mergedOptions.crossOrigin = null;\n }\n\n useEffect(() => {\n let mounted = true;\n const canUseDom =\n typeof window !== \"undefined\" && typeof document !== \"undefined\";\n if (canUseDom) {\n import(\"@samvera/clover-iiif/viewer\")\n .then((mod) => {\n if (!mounted) return;\n // Loaded Clover viewer dynamically in the browser\n const Comp = mod && (mod.default || mod.Viewer || mod);\n setCloverViewer(() => Comp);\n })\n .catch(() => {\n // Silently ignore load errors on the server or if Clover is unavailable\n });\n }\n return () => {\n mounted = false;\n };\n }, []);\n\n if (!CloverViewer) {\n // SSR placeholder for client hydration; props provided as JSON\n let json = \"{}\";\n try {\n const p = { ...(props || {}) };\n if (mergedOptions) p.options = mergedOptions;\n json = JSON.stringify(p);\n } catch (_) {\n json = \"{}\";\n }\n return (\n <div data-canopy-viewer=\"1\" className=\"not-prose\">\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{ __html: json }}\n />\n </div>\n );\n }\n return <CloverViewer {...props} options={mergedOptions} />;\n};\n", "import React, {useEffect, useState} from \"react\";\nimport {mergeSliderOptions, normalizeSliderOptions} from \"./sliderOptions.js\";\n\n// SSR-safe wrapper around Clover's slider. Clover touches the DOM at import time,\n// so we dynamically import it only in the browser.\nexport const Slider = (props = {}) => {\n const [CloverSlider, setCloverSlider] = useState(null);\n\n useEffect(() => {\n let mounted = true;\n const canUseDom =\n typeof window !== \"undefined\" && typeof document !== \"undefined\";\n if (canUseDom) {\n import(\"@samvera/clover-iiif/slider\")\n .then((mod) => {\n if (!mounted) return;\n const Comp = mod && (mod.default || mod.Slider || mod);\n setCloverSlider(() => Comp);\n })\n .catch(() => {\n // Silently ignore load errors on the server or if Clover is unavailable\n });\n }\n return () => {\n mounted = false;\n };\n }, []);\n\n const {className, ...rest} = props || {};\n const sliderClassName = [\"canopy-slider\", className]\n .filter(Boolean)\n .join(\" \");\n const mergedOptions = mergeSliderOptions(rest.options);\n const normalizedOptions = normalizeSliderOptions(mergedOptions);\n const resolvedProps = {\n ...rest,\n className: sliderClassName,\n options: normalizedOptions,\n };\n\n if (!CloverSlider) {\n // SSR placeholder for client hydration; props provided as JSON\n let json = \"{}\";\n try {\n json = JSON.stringify(resolvedProps || {});\n } catch (_) {\n json = \"{}\";\n }\n return (\n <div className={sliderClassName} data-canopy-slider=\"1\">\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{__html: json}}\n />\n </div>\n );\n }\n return <CloverSlider {...resolvedProps} />;\n};\n", "const UNIT_TOKEN = \"__canopySliderUnit\";\nconst UNIT_REM = \"rem\";\nconst DEFAULT_FONT_SIZE = 16;\nlet cachedRootFontSize = null;\n\n// Shared defaults applied to every slider instance (manual + generated).\nexport const sliderOptions = {\n breakpoints: {\n 400: {\n slidesPerView: 2,\n spaceBetween: rem(1),\n },\n 640: {\n slidesPerView: 3,\n spaceBetween: rem(1.618),\n },\n 1024: {\n slidesPerView: 4,\n spaceBetween: rem(1.618),\n },\n },\n};\n\nexport function rem(value) {\n const numeric = typeof value === \"number\" ? value : parseFloat(value);\n return {\n [UNIT_TOKEN]: UNIT_REM,\n value: Number.isFinite(numeric) ? numeric : 0,\n };\n}\n\nfunction cloneBreakpoints(source) {\n if (!source || typeof source !== \"object\") return undefined;\n const clone = {};\n Object.entries(source).forEach(([key, entry]) => {\n clone[key] = entry && typeof entry === \"object\" ? {...entry} : {};\n });\n return clone;\n}\n\nfunction cloneOptions(options = {}) {\n const clone = {...options};\n if (options.breakpoints && typeof options.breakpoints === \"object\") {\n clone.breakpoints = cloneBreakpoints(options.breakpoints);\n }\n return clone;\n}\n\nexport function mergeSliderOptions(overrides) {\n const base = cloneOptions(sliderOptions);\n const incoming = cloneOptions(overrides || {});\n const merged = {\n ...base,\n ...incoming,\n };\n if (base.breakpoints || incoming.breakpoints) {\n merged.breakpoints = {\n ...(base.breakpoints || {}),\n ...(incoming.breakpoints || {}),\n };\n }\n return merged;\n}\n\nfunction hasBrowserEnv() {\n return typeof window !== \"undefined\" && typeof document !== \"undefined\";\n}\n\nfunction measureRootFontSize() {\n if (!hasBrowserEnv()) return DEFAULT_FONT_SIZE;\n if (cachedRootFontSize !== null) return cachedRootFontSize;\n let size = DEFAULT_FONT_SIZE;\n try {\n const root = window.document && window.document.documentElement;\n if (root && window.getComputedStyle) {\n const computed = window.getComputedStyle(root).fontSize;\n const parsed = parseFloat(computed);\n if (Number.isFinite(parsed)) size = parsed;\n }\n } catch (_) {\n size = DEFAULT_FONT_SIZE;\n }\n cachedRootFontSize = size;\n return size;\n}\n\nfunction convertSpacing(value) {\n if (!hasBrowserEnv()) return value;\n if (value && typeof value === \"object\" && value[UNIT_TOKEN] === UNIT_REM) {\n const remValue =\n typeof value.value === \"number\" ? value.value : parseFloat(value.value);\n if (!Number.isFinite(remValue)) return value;\n return remValue * measureRootFontSize();\n }\n return value;\n}\n\nfunction normalizeBreakpoints(breakpoints) {\n if (!breakpoints || typeof breakpoints !== \"object\") return breakpoints;\n const normalized = {};\n Object.entries(breakpoints).forEach(([key, entry]) => {\n const clone = entry && typeof entry === \"object\" ? {...entry} : {};\n if (Object.prototype.hasOwnProperty.call(clone, \"spaceBetween\")) {\n clone.spaceBetween = convertSpacing(clone.spaceBetween);\n }\n normalized[key] = clone;\n });\n return normalized;\n}\n\nexport function normalizeSliderOptions(options) {\n const clone = cloneOptions(options || {});\n if (!hasBrowserEnv()) return clone;\n if (Object.prototype.hasOwnProperty.call(clone, \"spaceBetween\")) {\n clone.spaceBetween = convertSpacing(clone.spaceBetween);\n }\n if (clone.breakpoints) {\n clone.breakpoints = normalizeBreakpoints(clone.breakpoints);\n }\n return clone;\n}\n", "import React, { useEffect, useState } from \"react\";\n\n// SSR-safe wrapper around Clover's scroll component. The library touches the DOM\n// during import, so we only load it in the browser and render a placeholder on the\n// server for the hydration runtime to mount.\nexport const Scroll = (props) => {\n const [CloverScroll, setCloverScroll] = useState(null);\n\n useEffect(() => {\n let mounted = true;\n const canUseDom =\n typeof window !== \"undefined\" && typeof document !== \"undefined\";\n if (canUseDom) {\n import(\"@samvera/clover-iiif/scroll\")\n .then((mod) => {\n if (!mounted) return;\n const Comp = mod && (mod.default || mod.Scroll || mod);\n setCloverScroll(() => Comp);\n })\n .catch(() => {\n // Silently ignore load errors during SSR or when Clover is unavailable.\n });\n }\n return () => {\n mounted = false;\n };\n }, []);\n\n if (!CloverScroll) {\n // SSR placeholder for client hydration; props provided as JSON\n let json = \"{}\";\n try {\n json = JSON.stringify(props || {});\n } catch (_) {\n json = \"{}\";\n }\n return (\n <div data-canopy-scroll=\"1\" className=\"not-prose\">\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{ __html: json }}\n />\n </div>\n );\n }\n\n return <CloverScroll {...props} />;\n};\n", "import React, {useEffect, useState} from \"react\";\n\n// SSR-safe wrapper around Clover's image component. The module relies on the DOM\n// during import, so we lazy-load it in the browser and render a placeholder on the\n// server for the hydration runtime.\nexport const Image = (props = {}) => {\n const [CloverImage, setCloverImage] = useState(null);\n const baseClass = \"canopy-iiif-image\";\n const {\n height = `600px`,\n backgroundColor = `var(--color-gray-200)`,\n caption,\n className: userClassName,\n } = props || {};\n const rootClassName = [userClassName, baseClass].filter(Boolean).join(\" \");\n\n useEffect(() => {\n let mounted = true;\n const canUseDom =\n typeof window !== \"undefined\" && typeof document !== \"undefined\";\n if (canUseDom) {\n import(\"@samvera/clover-iiif/image\")\n .then((mod) => {\n if (!mounted) return;\n const Comp = mod && (mod.default || mod.Image || mod);\n setCloverImage(() => Comp);\n })\n .catch(() => {\n // Suppress errors during SSR or when the Clover bundle is unavailable.\n });\n }\n return () => {\n mounted = false;\n };\n }, []);\n\n if (!CloverImage) {\n let json = \"{}\";\n try {\n json = JSON.stringify(props || {});\n } catch (_) {\n json = \"{}\";\n }\n\n return (\n <figure className={rootClassName}>\n <div\n className={`${baseClass}__placeholder`}\n data-canopy-image=\"1\"\n style={{\n \"--canopy-iiif-image-height\": height,\n \"--canopy-iiif-image-bg\": backgroundColor,\n }}\n >\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{__html: json}}\n />\n </div>\n {caption && (\n <figcaption className={`${baseClass}__caption`}>\n {caption}\n </figcaption>\n )}\n </figure>\n );\n }\n\n return <CloverImage {...props} className={rootClassName} />;\n};\n", "import React, {useEffect, useMemo, useRef} from \"react\";\nimport {\n mountImageStory,\n sanitizeImageStoryProps,\n serializeImageStoryProps,\n} from \"./imageStoryRuntime.js\";\n\nconst DEFAULT_IMAGE_STORY_HEIGHT = 600;\nconst NUMERIC_HEIGHT_PATTERN = /^[+-]?(?:\\d+|\\d*\\.\\d+)$/;\nconst SIZE_EPSILON = 1;\n\nfunction resolveContainerHeight(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return `${value}px`;\n }\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) {\n return `${DEFAULT_IMAGE_STORY_HEIGHT}px`;\n }\n if (NUMERIC_HEIGHT_PATTERN.test(trimmed)) {\n return `${trimmed}px`;\n }\n return trimmed;\n }\n return `${DEFAULT_IMAGE_STORY_HEIGHT}px`;\n}\n\nexport const ImageStory = (props = {}) => {\n const {\n iiifContent,\n disablePanAndZoom,\n pointOfInterestSvgUrl,\n viewerOptions,\n height = DEFAULT_IMAGE_STORY_HEIGHT,\n className,\n style,\n ...rest\n } = props || {};\n const containerRef = useRef(null);\n const resolvedClassName = useMemo(() => {\n return [\"canopy-image-story\", className].filter(Boolean).join(\" \");\n }, [className]);\n const resolvedHeight = useMemo(() => {\n return resolveContainerHeight(height);\n }, [height]);\n const serializedProps = useMemo(() => {\n return serializeImageStoryProps({\n iiifContent,\n disablePanAndZoom,\n pointOfInterestSvgUrl,\n viewerOptions,\n });\n }, [iiifContent, disablePanAndZoom, pointOfInterestSvgUrl, viewerOptions]);\n\n useEffect(() => {\n const node = containerRef.current;\n if (!node) return undefined;\n\n let cleanup = null;\n let cancelled = false;\n let mounted = false;\n let resizeObserver = null;\n let pollId = null;\n let lastKnownSize = null;\n\n const payload = sanitizeImageStoryProps({\n iiifContent,\n disablePanAndZoom,\n pointOfInterestSvgUrl,\n viewerOptions,\n });\n\n const destroyCleanup = () => {\n if (cleanup) {\n try {\n cleanup();\n } catch (_) {}\n cleanup = null;\n }\n };\n\n const disconnectWatchers = () => {\n if (resizeObserver) {\n try {\n resizeObserver.disconnect();\n } catch (_) {}\n resizeObserver = null;\n }\n if (pollId) {\n window.clearTimeout(pollId);\n pollId = null;\n }\n };\n\n const measureSize = () => {\n if (!node) return null;\n const rect = node.getBoundingClientRect();\n const width = rect?.width || node.offsetWidth || node.clientWidth || 0;\n const height = rect?.height || node.offsetHeight || node.clientHeight || 0;\n return {width, height};\n };\n\n const hasUsableSize = () => {\n const size = measureSize();\n if (!size) return false;\n const usable = size.width > 2 && size.height > 2;\n if (usable) {\n lastKnownSize = size;\n }\n return usable;\n };\n\n const hasMeaningfulSizeChange = () => {\n const size = measureSize();\n if (!size) return false;\n if (size.width <= 2 || size.height <= 2) {\n return true;\n }\n if (!lastKnownSize) {\n lastKnownSize = size;\n return true;\n }\n const widthDelta = Math.abs(size.width - lastKnownSize.width);\n const heightDelta = Math.abs(size.height - lastKnownSize.height);\n if (widthDelta > SIZE_EPSILON || heightDelta > SIZE_EPSILON) {\n lastKnownSize = size;\n return true;\n }\n return false;\n };\n\n const mountViewer = () => {\n if (!node || mounted || cancelled) return false;\n if (!hasUsableSize()) return false;\n mounted = true;\n disconnectWatchers();\n mountImageStory(node, payload).then((destroy) => {\n if (cancelled) {\n destroy && destroy();\n return;\n }\n cleanup = typeof destroy === \"function\" ? destroy : null;\n });\n return true;\n };\n\n const scheduleWatchers = () => {\n if (mounted || cancelled) return;\n if (\n !resizeObserver &&\n typeof window !== \"undefined\" &&\n typeof window.ResizeObserver === \"function\"\n ) {\n resizeObserver = new window.ResizeObserver(() => {\n if (mounted || cancelled) return;\n mountViewer();\n });\n try {\n resizeObserver.observe(node);\n } catch (_) {}\n }\n const schedulePoll = () => {\n if (mounted || cancelled) return;\n pollId = window.setTimeout(() => {\n pollId = null;\n if (!mountViewer()) {\n schedulePoll();\n }\n }, 200);\n };\n if (!pollId) {\n schedulePoll();\n }\n };\n\n const beginMounting = () => {\n if (!mountViewer()) {\n scheduleWatchers();\n }\n };\n\n const remountViewer = () => {\n if (cancelled) return;\n if (mounted) {\n mounted = false;\n destroyCleanup();\n }\n beginMounting();\n };\n\n beginMounting();\n\n const handleGalleryModalChange = (event) => {\n if (!node || !event || typeof document === \"undefined\") return;\n const detail = event.detail || {};\n if (detail.state !== \"open\") return;\n const modal =\n detail.modal || (detail.modalId ? document.getElementById(detail.modalId) : null);\n if (!modal || !modal.contains(node)) return;\n if (!mounted) return;\n if (hasMeaningfulSizeChange()) {\n remountViewer();\n }\n };\n\n if (typeof window !== \"undefined\" && window.addEventListener) {\n window.addEventListener(\"canopy:gallery:modal-change\", handleGalleryModalChange);\n }\n\n return () => {\n cancelled = true;\n disconnectWatchers();\n destroyCleanup();\n if (typeof window !== \"undefined\" && window.removeEventListener) {\n window.removeEventListener(\n \"canopy:gallery:modal-change\",\n handleGalleryModalChange,\n );\n }\n };\n }, [iiifContent, disablePanAndZoom, pointOfInterestSvgUrl, viewerOptions]);\n\n return (\n <div\n ref={containerRef}\n className={resolvedClassName}\n data-canopy-image-story=\"1\"\n style={{\n width: \"100%\",\n height: resolvedHeight,\n ...(style || {}),\n }}\n {...rest}\n >\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{__html: serializedProps}}\n />\n </div>\n );\n};\n", "const STORIIIES_STYLE_URL =\n \"https://unpkg.com/@cogapp/storiiies-viewer@latest/dist/storiiies-viewer.css\";\nconst STORIIIES_SCRIPT_URL =\n \"https://unpkg.com/@cogapp/storiiies-viewer@latest/dist/umd/storiiies-viewer.js\";\n\nconst assetLoaders = new Map();\n\nfunction loadAsset(kind, url) {\n if (!assetLoaders.has(url)) {\n assetLoaders.set(\n url,\n new Promise((resolve, reject) => {\n try {\n const tag = document.createElement(kind === \"script\" ? \"script\" : \"link\");\n if (kind === \"script\") {\n tag.setAttribute(\"src\", url);\n tag.setAttribute(\"async\", \"true\");\n } else {\n tag.setAttribute(\"rel\", \"stylesheet\");\n tag.setAttribute(\"href\", url);\n }\n tag.addEventListener(\"load\", () => resolve(), {once: true});\n tag.addEventListener(\"error\", () => reject(new Error(`Failed to load ${url}`)), {\n once: true,\n });\n document.head.appendChild(tag);\n } catch (error) {\n reject(error);\n }\n }),\n );\n }\n return assetLoaders.get(url);\n}\n\nfunction normalizeBasePath(value) {\n if (value == null) return \"\";\n const raw = String(value).trim();\n if (!raw) return \"\";\n const prefixed = raw.startsWith(\"/\") ? raw : `/${raw}`;\n const cleaned = prefixed.replace(/\\/+$/, \"\");\n return cleaned === \"/\" ? \"\" : cleaned;\n}\n\nlet cachedBasePath = null;\nfunction readBasePath() {\n if (cachedBasePath !== null) return cachedBasePath;\n const candidates = [];\n try {\n if (typeof window !== \"undefined\" && window.CANOPY_BASE_PATH != null) {\n candidates.push(window.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n try {\n if (\n typeof globalThis !== \"undefined\" &&\n globalThis.CANOPY_BASE_PATH != null\n ) {\n candidates.push(globalThis.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n try {\n if (typeof process !== \"undefined\" && process.env) {\n candidates.push(process.env.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n for (const candidate of candidates) {\n const normalized = normalizeBasePath(candidate);\n if (normalized || normalized === \"\") {\n cachedBasePath = normalized;\n return cachedBasePath;\n }\n }\n cachedBasePath = \"\";\n return cachedBasePath;\n}\n\nfunction withBasePath(href) {\n if (typeof href !== \"string\") return href;\n const raw = href.trim();\n if (!raw) return href;\n if (/^(?:[a-z][a-z0-9+.-]*:|\\/\\/|#)/i.test(raw)) return raw;\n if (!raw.startsWith(\"/\")) return raw;\n const base = readBasePath();\n if (!base || base === \"/\") return raw;\n if (raw === base || raw.startsWith(`${base}/`)) return raw;\n return `${base}${raw}`;\n}\n\nexport function sanitizeImageStoryProps(raw = {}) {\n const props = raw && typeof raw === \"object\" ? raw : {};\n const out = {};\n if (typeof props.iiifContent === \"string\" && props.iiifContent.trim()) {\n out.iiifContent = props.iiifContent.trim();\n }\n if (typeof props.disablePanAndZoom === \"boolean\") {\n out.disablePanAndZoom = props.disablePanAndZoom;\n }\n if (\n typeof props.pointOfInterestSvgUrl === \"string\" &&\n props.pointOfInterestSvgUrl.trim()\n ) {\n out.pointOfInterestSvgUrl = props.pointOfInterestSvgUrl.trim();\n }\n if (props.viewerOptions && typeof props.viewerOptions === \"object\") {\n out.viewerOptions = props.viewerOptions;\n }\n return out;\n}\n\nexport function serializeImageStoryProps(raw = {}) {\n try {\n return JSON.stringify(sanitizeImageStoryProps(raw));\n } catch (_) {\n try {\n return JSON.stringify({\n iiifContent: raw && raw.iiifContent ? raw.iiifContent : \"\",\n });\n } catch (err) {\n return \"{}\";\n }\n }\n}\n\nfunction resolveViewerConfig(element, props) {\n const sanitized = sanitizeImageStoryProps(props);\n const viewerOptions =\n sanitized.viewerOptions && typeof sanitized.viewerOptions === \"object\"\n ? sanitized.viewerOptions\n : {};\n const config = { ...viewerOptions, container: element };\n // Always hide the Storiiies credit slide for consistency.\n config.showCreditSlide = false;\n if (sanitized.iiifContent) {\n config.manifestUrl = withBasePath(sanitized.iiifContent);\n }\n if (typeof sanitized.disablePanAndZoom === \"boolean\") {\n config.disablePanAndZoom = sanitized.disablePanAndZoom;\n }\n if (sanitized.pointOfInterestSvgUrl) {\n config.pointOfInterestSvgUrl = withBasePath(sanitized.pointOfInterestSvgUrl);\n }\n return config;\n}\n\nasync function ensureStoriiiesAssets() {\n await Promise.all([\n loadAsset(\"style\", STORIIIES_STYLE_URL),\n loadAsset(\"script\", STORIIIES_SCRIPT_URL),\n ]);\n}\n\nexport async function mountImageStory(element, props = {}) {\n if (typeof window === \"undefined\" || !element) return null;\n await ensureStoriiiesAssets();\n const { StoriiiesViewer } = window;\n if (!StoriiiesViewer || typeof StoriiiesViewer !== \"function\") return null;\n const config = resolveViewerConfig(element, props);\n if (!config.manifestUrl) return null;\n const viewer = new StoriiiesViewer(config);\n return () => {\n try {\n viewer && typeof viewer.destroy === \"function\" && viewer.destroy();\n } catch (_) {}\n };\n}\n", "import React from \"react\";\n\n// SSR-safe placeholder for RelatedItems. Hydrated by canopy-related-items.js + canopy-slider.js\nexport default function MdxRelatedItems(props) {\n let json = \"{}\";\n try {\n json = JSON.stringify(props || {});\n } catch (_) {\n json = \"{}\";\n }\n return (\n <div data-canopy-related-items=\"1\">\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{__html: json}}\n />\n </div>\n );\n}\n", "export { default as Hero } from './Hero.jsx';\nexport { computeHeroHeightStyle } from './hero-utils.js';\n", "import React from \"react\";\nimport helpers from \"../../../lib/components/featured.js\";\nimport navigationHelpers from \"../../../lib/components/navigation.js\";\nimport {computeHeroHeightStyle} from \"./hero-utils.js\";\nimport Button from \"../layout/Button.jsx\";\nimport ButtonWrapper from \"../layout/ButtonWrapper.jsx\";\nimport {useLocale} from \"../locale/index.js\";\n\nconst NavIconBase = ({children, ...rest}) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n focusable=\"false\"\n {...rest}\n >\n {children}\n </svg>\n);\n\nconst PrevArrowIcon = (props) => (\n <NavIconBase {...props}>\n <path\n d=\"M10.5 3L5.5 8L10.5 13\"\n stroke=\"currentColor\"\n strokeWidth=\"1.618\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </NavIconBase>\n);\n\nconst NextArrowIcon = (props) => (\n <NavIconBase {...props}>\n <path\n d=\"M5.5 3L10.5 8L5.5 13\"\n stroke=\"currentColor\"\n strokeWidth=\"1.618\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </NavIconBase>\n);\n\nconst HERO_DEFAULT_SIZES_ATTR = \"(min-width: 1024px) 1280px, 100vw\";\n\nconst basePath = (() => {\n try {\n const raw =\n typeof process !== \"undefined\" && process && process.env\n ? String(process.env.CANOPY_BASE_PATH || \"\")\n : \"\";\n return raw.replace(/\\/$/, \"\");\n } catch (_) {\n return \"\";\n }\n})();\n\nfunction applyBasePath(href) {\n try {\n if (!href) return href;\n if (!basePath) return href;\n if (typeof href === \"string\" && href.startsWith(\"/\")) {\n return `${basePath}${href}`;\n }\n } catch (_) {}\n return href;\n}\n\nfunction resolveFeaturedItem({item, index, random}) {\n if (item) return item;\n const list =\n helpers && helpers.readFeaturedFromCacheSync\n ? helpers.readFeaturedFromCacheSync()\n : [];\n if (!list.length) return null;\n if (typeof index === \"number\") {\n const idx = Math.max(0, Math.min(list.length - 1, Math.floor(index)));\n return list[idx];\n }\n if (random === true || random === \"true\") {\n const idx = Math.floor(Math.random() * Math.max(1, list.length));\n return list[idx];\n }\n return list[0];\n}\n\nfunction normalizeLinks(links) {\n if (!Array.isArray(links)) return [];\n return links\n .map((link) => {\n if (!link) return null;\n const href = applyBasePath(link.href || \"\");\n const title = link.title ? String(link.title) : \"\";\n if (!href || !title) return null;\n const type = link.type === \"secondary\" ? \"secondary\" : \"primary\";\n const target = link.target ? String(link.target) : undefined;\n return {href, title, type, target};\n })\n .filter(Boolean);\n}\n\nfunction sanitizeRest(rest) {\n const clone = {...rest};\n try {\n delete clone.random;\n delete clone.index;\n delete clone.item;\n delete clone.links;\n delete clone.overlay;\n delete clone.variant;\n delete clone.background;\n } catch (_) {}\n return clone;\n}\n\nfunction normalizeBackground(value) {\n try {\n const allowed = new Set([\"theme\", \"transparent\"]);\n const raw = value == null ? \"\" : String(value);\n const normalized = raw.trim().toLowerCase();\n return allowed.has(normalized) ? normalized : \"theme\";\n } catch (_) {\n return \"theme\";\n }\n}\n\nfunction findNodePathBySlug(node, targetSlug) {\n if (!node || !targetSlug) return null;\n const normalizedTarget = String(targetSlug || \"\");\n if (!normalizedTarget) return null;\n if (node.slug === normalizedTarget) return [node];\n const children = Array.isArray(node.children) ? node.children : [];\n for (const child of children) {\n const path = findNodePathBySlug(child, normalizedTarget);\n if (path && path.length) {\n return [node, ...path];\n }\n }\n return null;\n}\n\nfunction normalizeVariant(value) {\n try {\n const raw = value == null ? \"\" : String(value);\n const normalized = raw.trim().toLowerCase();\n if (normalized === \"breadcrumb\" || normalized === \"text\") return \"breadcrumb\";\n return \"featured\";\n } catch (_) {\n return \"featured\";\n }\n}\n\nexport default function Hero({\n height = 520,\n item,\n index,\n random = true,\n headline,\n description,\n links = [],\n className = \"\",\n style = {},\n background = \"theme\",\n variant = \"featured\",\n homeLabel,\n ...rest\n}) {\n const {getString} = useLocale();\n const normalizedVariant = normalizeVariant(variant);\n const isBreadcrumbVariant = normalizedVariant === \"breadcrumb\";\n const PageContext =\n navigationHelpers && typeof navigationHelpers.getPageContext === \"function\"\n ? navigationHelpers.getPageContext()\n : null;\n const pageContext = PageContext ? React.useContext(PageContext) : null;\n\n let orderedSlides = [];\n if (!isBreadcrumbVariant) {\n const resolved = resolveFeaturedItem({item, index, random});\n const helpersList =\n helpers && helpers.readFeaturedFromCacheSync\n ? helpers.readFeaturedFromCacheSync()\n : [];\n\n const slides = [];\n const pushUnique = (entry) => {\n if (!entry) return;\n const key = String(entry.href || entry.id || entry.title || \"\");\n const hasKey = slides.some(\n (item) =>\n String(item && (item.href || item.id || item.title || \"\")) === key\n );\n if (!hasKey) {\n slides.push(entry);\n }\n };\n\n if (resolved) pushUnique(resolved);\n helpersList.forEach(pushUnique);\n if (!slides.length) return null;\n\n orderedSlides = slides.slice();\n if (typeof index === \"number\" && orderedSlides.length > 1) {\n const clamp = Math.max(\n 0,\n Math.min(orderedSlides.length - 1, Math.floor(index))\n );\n if (clamp > 0) {\n orderedSlides = orderedSlides\n .slice(clamp)\n .concat(orderedSlides.slice(0, clamp));\n }\n } else if (random === true || random === \"true\") {\n const rand = Math.floor(Math.random() * orderedSlides.length);\n if (rand > 0) {\n orderedSlides = orderedSlides\n .slice(rand)\n .concat(orderedSlides.slice(0, rand));\n }\n }\n }\n\n const heroHeight = computeHeroHeightStyle(height);\n const heroStyles = {...(style || {})};\n if (heroHeight && heroHeight.height && !isBreadcrumbVariant) {\n heroStyles[\"--hero-height\"] = heroHeight.height;\n }\n if (isBreadcrumbVariant) {\n heroStyles[\"--hero-height\"] = \"auto\";\n }\n\n const derivedDescription = description ? String(description) : \"\";\n const normalizedLinks = normalizeLinks(links);\n\n const primarySlide = !isBreadcrumbVariant ? orderedSlides[0] || null : null;\n const overlayTitle = headline || (primarySlide && primarySlide.title) || \"\";\n const defaultLinkHref = applyBasePath(\n primarySlide && primarySlide.href ? primarySlide.href : \"#\"\n );\n const overlayLinks = normalizedLinks.length\n ? normalizedLinks\n : [\n {\n href: defaultLinkHref,\n title: \"View work\",\n type: \"primary\",\n },\n ].filter(Boolean);\n const finalOverlayLinks = isBreadcrumbVariant ? normalizedLinks : overlayLinks;\n\n const breadcrumbItems = React.useMemo(() => {\n if (!isBreadcrumbVariant) return [];\n const items = [];\n const label = (homeLabel != null\n ? homeLabel\n : getString(\"common.nouns.home\", \"Home\"))\n .trim();\n if (label) {\n items.push({title: label, href: applyBasePath(\"/\")});\n }\n const navigation = pageContext && pageContext.navigation ? pageContext.navigation : null;\n const page = pageContext && pageContext.page ? pageContext.page : null;\n const slug =\n (page && page.slug) ||\n (navigation && navigation.currentSlug) ||\n \"\";\n const rootNode = navigation && navigation.root ? navigation.root : null;\n if (!slug || !rootNode) return items;\n const path = findNodePathBySlug(rootNode, slug);\n if (!path || !path.length) return items;\n path.forEach((node) => {\n if (!node) return;\n const title = node.title || node.slug || \"\";\n if (!title) return;\n const href = node.href ? applyBasePath(node.href) : null;\n items.push({title, href});\n });\n return items;\n }, [isBreadcrumbVariant, pageContext, homeLabel]);\n\n const breadcrumbNode = isBreadcrumbVariant && breadcrumbItems.length\n ? (\n <nav\n className=\"canopy-interstitial__breadcrumb\"\n aria-label={getString(\"common.nouns.breadcrumb\", \"Breadcrumb\")}\n >\n {breadcrumbItems.map((item, idx) => {\n const isLast = idx === breadcrumbItems.length - 1;\n const key = `${item.title || idx}-${idx}`;\n const content = !isLast && item.href ? (\n <a href={item.href}>{item.title}</a>\n ) : (\n <span className=\"canopy-interstitial__breadcrumb-current\" aria-current=\"page\">\n {item.title}\n </span>\n );\n return (\n <React.Fragment key={key}>\n {idx > 0 ? (\n <span\n className=\"canopy-interstitial__breadcrumb-separator\"\n aria-hidden=\"true\"\n >\n >\n </span>\n ) : null}\n {content}\n </React.Fragment>\n );\n })}\n </nav>\n )\n : null;\n\n const normalizedBackground = normalizeBackground(background);\n const backgroundClassName =\n normalizedBackground === \"transparent\"\n ? \"canopy-interstitial--bg-transparent\"\n : \"\";\n\n const variantClassName = isBreadcrumbVariant\n ? \"canopy-interstitial--hero-breadcrumb\"\n : \"canopy-interstitial--hero-featured\";\n const containerClassName = [\n \"canopy-interstitial\",\n \"canopy-interstitial--hero\",\n variantClassName,\n backgroundClassName,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const renderSlide = (\n slide,\n idx,\n {showVeil = true, captionVariant = \"overlay\"} = {}\n ) => {\n const safeHref = applyBasePath(slide.href || \"#\");\n const isStaticCaption = captionVariant === \"static\";\n const paneClassName = [\n \"canopy-interstitial__pane\",\n showVeil ? \"\" : \"canopy-interstitial__pane--flat\",\n isStaticCaption ? \"canopy-interstitial__pane--static\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n const buildImageProps = (className) => {\n if (!slide.thumbnail) return null;\n const props = {\n src: slide.thumbnail,\n alt: \"\",\n \"aria-hidden\": true,\n className,\n loading: idx === 0 ? \"eager\" : \"lazy\",\n };\n if (slide.srcset) props.srcSet = slide.srcset;\n if (slide.srcset) props.sizes = slide.sizes || HERO_DEFAULT_SIZES_ATTR;\n return props;\n };\n\n const wrapWithLink = (node) => {\n if (!safeHref) return node;\n return (\n <a\n href={safeHref}\n className=\"canopy-interstitial__slide-link\"\n aria-label={slide.title || undefined}\n >\n {node}\n </a>\n );\n };\n\n if (isStaticCaption) {\n return (\n <div\n className=\"canopy-interstitial__slide\"\n key={safeHref || idx}\n role=\"group\"\n aria-roledescription=\"slide\"\n aria-label={`${idx + 1} of ${orderedSlides.length}`}\n >\n {wrapWithLink(\n <article className={paneClassName}>\n {slide.thumbnail ? (\n <div className=\"canopy-interstitial__media-frame\">\n <img\n {...buildImageProps(\n \"canopy-interstitial__media canopy-interstitial__media--static\"\n )}\n />\n </div>\n ) : null}\n {slide.title ? (\n <div className=\"canopy-interstitial__caption canopy-interstitial__caption--static\">\n <span className=\"canopy-interstitial__caption-link\">\n {slide.title}\n </span>\n </div>\n ) : null}\n </article>\n )}\n </div>\n );\n }\n\n return (\n <div\n className=\"canopy-interstitial__slide\"\n key={safeHref || idx}\n role=\"group\"\n aria-roledescription=\"slide\"\n aria-label={`${idx + 1} of ${orderedSlides.length}`}\n >\n {wrapWithLink(\n <article className={paneClassName}>\n {slide.thumbnail ? (\n <img {...buildImageProps(\"canopy-interstitial__media\")} />\n ) : null}\n {showVeil ? (\n <div className=\"canopy-interstitial__veil\" aria-hidden=\"true\" />\n ) : null}\n {slide.title ? (\n <div className=\"canopy-interstitial__caption\">\n <span className=\"canopy-interstitial__caption-link\">\n {slide.title}\n </span>\n </div>\n ) : null}\n </article>\n )}\n </div>\n );\n };\n\n const renderSlider = (options = {}) => (\n <div\n className=\"canopy-interstitial__slider\"\n role=\"region\"\n aria-roledescription=\"carousel\"\n aria-label={overlayTitle || \"Featured content\"}\n >\n <div className=\"canopy-interstitial__slide-wrapper\">\n {orderedSlides.map((slide, idx) => renderSlide(slide, idx, options))}\n </div>\n <div className=\"canopy-interstitial__nav\">\n <button\n type=\"button\"\n aria-label=\"Previous slide\"\n className=\"canopy-interstitial__nav-btn canopy-interstitial__nav-btn--prev\"\n >\n <PrevArrowIcon />\n </button>\n <button\n type=\"button\"\n aria-label=\"Next slide\"\n className=\"canopy-interstitial__nav-btn canopy-interstitial__nav-btn--next\"\n >\n <NextArrowIcon />\n </button>\n </div>\n </div>\n );\n\n const overlayContent = (\n <>\n {overlayTitle ? (\n <h1 className=\"canopy-interstitial__headline\">{overlayTitle}</h1>\n ) : null}\n {derivedDescription ? (\n <p className=\"canopy-interstitial__description\">{derivedDescription}</p>\n ) : null}\n {finalOverlayLinks.length ? (\n <ButtonWrapper className=\"canopy-interstitial__actions\">\n {finalOverlayLinks.map((link) => (\n <Button\n key={`${link.href}-${link.title}`}\n href={link.href}\n label={link.title}\n variant={link.type}\n target={link.target}\n />\n ))}\n </ButtonWrapper>\n ) : null}\n </>\n );\n\n const cleanedProps = sanitizeRest(rest);\n const sectionProps = {\n className: containerClassName,\n style: heroStyles,\n ...cleanedProps,\n };\n if (!isBreadcrumbVariant) {\n sectionProps[\"data-canopy-hero-slider\"] = \"1\";\n } else {\n sectionProps[\"data-canopy-hero-variant\"] = \"breadcrumb\";\n }\n\n return (\n <section {...sectionProps}>\n {isBreadcrumbVariant ? (\n <div className=\"canopy-interstitial__layout canopy-interstitial__layout--breadcrumb\">\n <div className=\"canopy-interstitial__panel\">\n <div className=\"canopy-interstitial__body\">\n {breadcrumbNode}\n {overlayContent}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"canopy-interstitial__layout\">\n <div className=\"canopy-interstitial__panel\">\n <div className=\"canopy-interstitial__body\">{overlayContent}</div>\n </div>\n <div className=\"canopy-interstitial__media-group\">\n {renderSlider({showVeil: false, captionVariant: \"static\"})}\n <div className=\"canopy-interstitial__pagination\" />\n </div>\n </div>\n )}\n </section>\n );\n}\n", "function computeHeroHeightStyle(height) {\n const h = typeof height === 'number' ? `${height}px` : String(height || '').trim();\n const val = h || '360px';\n return { width: '100%', height: val };\n}\n\nexport { computeHeroHeightStyle };\nexport default computeHeroHeightStyle;\n", "import React from 'react';\n\nconst VARIANTS = new Set(['primary', 'secondary']);\n\nexport default function Button({\n label,\n href = '#',\n target,\n rel,\n variant = 'primary',\n className = '',\n children,\n as: Element = 'a',\n ...rest\n}) {\n const resolvedVariant = VARIANTS.has(variant) ? variant : 'primary';\n const computedRel =\n Element === 'a' && target === '_blank' && !rel ? 'noopener noreferrer' : rel;\n const content = children != null ? children : label;\n\n if (!content) return null;\n\n const classes = [\n 'canopy-button',\n `canopy-button--${resolvedVariant}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const elementProps = {\n className: classes,\n ...rest,\n };\n\n if (Element === 'a') {\n elementProps.href = href;\n if (target) elementProps.target = target;\n if (computedRel) elementProps.rel = computedRel;\n } else {\n if (typeof target !== 'undefined') elementProps.target = target;\n if (computedRel) elementProps.rel = computedRel;\n }\n\n return <Element {...elementProps}>{content}</Element>;\n}\n", "import React from 'react';\n\nexport default function ButtonWrapper({\n className = '',\n children,\n text = '',\n variant = 'default',\n ...rest\n}) {\n const variantClass =\n variant && variant !== 'default'\n ? `canopy-button-group--${variant}`\n : '';\n const classes = ['canopy-button-group', variantClass, className]\n .filter(Boolean)\n .join(' ');\n return (\n <div className={classes} {...rest}>\n {text && <span className=\"canopy-button-group__text\">{text}</span>}\n <div className=\"canopy-button-group__actions\">{children}</div>\n </div>\n );\n}\n", "import React from \"react\";\nimport getSafePageContext from \"../layout/pageContext.js\";\nimport defaultMessages from \"../../../lib/default-locale.js\";\n\nfunction getGlobalScope() {\n if (typeof globalThis !== \"undefined\") return globalThis;\n if (typeof window !== \"undefined\") return window;\n if (typeof global !== \"undefined\") return global;\n return null;\n}\n\nfunction readRuntimeMessages() {\n const scope = getGlobalScope();\n const candidate = scope && scope.CANOPY_LOCALE_MESSAGES;\n if (candidate && typeof candidate === \"object\") return candidate;\n return defaultMessages || {};\n}\n\nexport function accessPath(obj, path) {\n if (!obj || typeof obj !== \"object\" || !path) return undefined;\n const parts = Array.isArray(path) ? path : String(path).split(\".\");\n let current = obj;\n for (const part of parts) {\n if (!current || typeof current !== \"object\") return undefined;\n const key = String(part).trim();\n if (!key || !(key in current)) return undefined;\n current = current[key];\n }\n return current;\n}\n\nexport function formatTemplate(template, replacements = {}) {\n if (template == null) return template;\n const str = String(template);\n if (!replacements || typeof replacements !== \"object\") return str;\n return str.replace(/\\{([^}]+)\\}/g, (match, key) => {\n if (!Object.prototype.hasOwnProperty.call(replacements, key)) return match;\n const value = replacements[key];\n if (value == null) return match;\n return String(value);\n });\n}\n\nexport function useLocaleMessages() {\n const PageContext = getSafePageContext();\n const context = PageContext ? React.useContext(PageContext) : null;\n const siteMessages =\n context &&\n context.site &&\n context.site.localeMessages &&\n typeof context.site.localeMessages === \"object\"\n ? context.site.localeMessages\n : null;\n return siteMessages || readRuntimeMessages();\n}\n\nexport function useLocale() {\n const messages = useLocaleMessages();\n const getString = React.useCallback(\n (path, fallback) => {\n const value = path ? accessPath(messages, path) : undefined;\n if (typeof value === \"string\" || typeof value === \"number\") {\n return value;\n }\n return fallback;\n },\n [messages],\n );\n const formatString = React.useCallback(\n (path, fallback, replacements) => {\n const template = path ? accessPath(messages, path) : undefined;\n const resolved = template != null ? template : fallback;\n if (resolved == null) return resolved;\n return formatTemplate(resolved, replacements);\n },\n [messages],\n );\n return {messages, getString, formatString};\n}\n\nexport function useLocaleString(path, fallback, replacements) {\n const {formatString} = useLocale();\n return formatString(path, fallback, replacements);\n}\n", "import React from \"react\";\n\nconst CONTEXT_KEY =\n typeof Symbol === \"function\"\n ? Symbol.for(\"__CANOPY_PAGE_CONTEXT__\")\n : \"__CANOPY_PAGE_CONTEXT__\";\n\nfunction getSharedRoot() {\n if (typeof globalThis !== \"undefined\") return globalThis;\n if (typeof window !== \"undefined\") return window;\n if (typeof global !== \"undefined\") return global;\n return null;\n}\n\nexport default function getSafePageContext() {\n const root = getSharedRoot();\n if (root && root[CONTEXT_KEY]) return root[CONTEXT_KEY];\n const ctx = React.createContext({navigation: null, page: null, site: null});\n if (root) root[CONTEXT_KEY] = ctx;\n return ctx;\n}\n\nexport {CONTEXT_KEY};\n", "import React from \"react\";\nimport navigationHelpers from \"../../../lib/components/navigation.js\";\nimport NavigationTree from \"./NavigationTree.jsx\";\n\nfunction resolveRelativeCandidate(page, current) {\n if (page && typeof page.relativePath === \"string\" && page.relativePath)\n return page.relativePath;\n if (page && typeof page.slug === \"string\" && page.slug) return page.slug;\n if (typeof current === \"string\" && current) return current;\n return \"\";\n}\n\nexport default function SubNavigation({\n navigation: navigationProp,\n page,\n current,\n className = \"\",\n style = {},\n heading,\n ariaLabel,\n}) {\n const PageContext =\n navigationHelpers && navigationHelpers.getPageContext\n ? navigationHelpers.getPageContext()\n : null;\n const context = PageContext ? React.useContext(PageContext) : null;\n const contextNavigation =\n context && context.navigation ? context.navigation : null;\n const contextPage = context && context.page ? context.page : null;\n const effectiveNavigation = navigationProp || contextNavigation;\n const effectivePage = page || contextPage;\n const resolvedNavigation = React.useMemo(() => {\n if (effectiveNavigation && effectiveNavigation.root)\n return effectiveNavigation;\n const candidate = resolveRelativeCandidate(effectivePage, current);\n if (!candidate) return effectiveNavigation || null;\n const helpers =\n navigationHelpers && navigationHelpers.buildNavigationForFile\n ? navigationHelpers\n : null;\n if (!helpers) return effectiveNavigation || null;\n try {\n const normalized = navigationHelpers.normalizeRelativePath\n ? navigationHelpers.normalizeRelativePath(candidate)\n : candidate;\n const built = helpers.buildNavigationForFile(normalized);\n if (built) return built;\n } catch (_) {\n // ignore helper errors and fall back to provided navigation\n }\n return effectiveNavigation || null;\n }, [effectiveNavigation, effectivePage, current]);\n\n if (!resolvedNavigation || !resolvedNavigation.root) return null;\n\n const rootNode = resolvedNavigation.root;\n const finalHeading = heading || null;\n const labelSource = finalHeading || resolvedNavigation.title;\n const navLabel =\n ariaLabel ||\n (labelSource ? `${labelSource} navigation` : \"Section navigation\");\n const combinedClassName = [\"canopy-sub-navigation\", className]\n .filter(Boolean)\n .join(\" \");\n const inlineStyle = {...style};\n if (!Object.prototype.hasOwnProperty.call(inlineStyle, \"--sub-nav-indent\")) {\n inlineStyle[\"--sub-nav-indent\"] = \"0.85rem\";\n }\n\n return (\n <nav\n className={combinedClassName}\n style={inlineStyle}\n aria-label={navLabel}\n >\n <NavigationTree\n root={rootNode}\n includeRoot\n component=\"div\"\n className=\"canopy-sub-navigation__tree\"\n parentKey={rootNode.slug || \"root\"}\n heading={finalHeading || undefined}\n />\n </nav>\n );\n}\n", "import React from \"react\";\nimport {useLocale} from \"../locale/index.js\";\n\nfunction normalizeDepth(depth) {\n if (typeof depth !== \"number\") return 0;\n return Math.max(0, Math.min(5, depth));\n}\n\nfunction NavigationTreeList({\n nodes,\n depth,\n parentKey,\n buildToggleLabel,\n buildNavLabel,\n}) {\n if (!Array.isArray(nodes) || !nodes.length) return null;\n const listClasses = [\"canopy-nav-tree__list\"];\n if (depth > 0) listClasses.push(\"canopy-nav-tree__list--nested\");\n return (\n <ul className={listClasses.join(\" \")} role=\"list\">\n {nodes.map((node, index) => (\n <NavigationTreeItem\n key={node.slug || node.href || node.title || `${parentKey}-${index}`}\n node={node}\n depth={depth}\n nodeKey={`${parentKey}-${index}`}\n buildToggleLabel={buildToggleLabel}\n buildNavLabel={buildNavLabel}\n />\n ))}\n </ul>\n );\n}\n\nfunction NavigationTreeItem({node, depth, nodeKey, buildToggleLabel, buildNavLabel}) {\n if (!node) return null;\n const hasChildren = Array.isArray(node.children) && node.children.length > 0;\n const isInteractive = !!node.href;\n const Tag = isInteractive ? \"a\" : \"span\";\n const depthClass = `depth-${normalizeDepth(depth + 1)}`;\n const classes = [\"canopy-nav-tree__link\", depthClass];\n if (!isInteractive) classes.push(\"is-label\");\n if (node.isActive) classes.push(\"is-active\");\n const isRootLevel = depth < 0;\n const panelId = hasChildren ? `canopy-section-${nodeKey}` : null;\n const allowToggle = hasChildren && !isRootLevel;\n const defaultExpanded = allowToggle ? !!node.isExpanded : true;\n const toggleLabel = buildToggleLabel\n ? buildToggleLabel(node.title || node.slug)\n : `Toggle ${node.title || \"section\"} menu`;\n\n return (\n <li\n className=\"canopy-nav-tree__item\"\n data-depth={depth}\n data-canopy-nav-item={allowToggle ? \"true\" : undefined}\n data-expanded={\n allowToggle ? (defaultExpanded ? \"true\" : \"false\") : undefined\n }\n data-default-expanded={\n allowToggle && defaultExpanded ? \"true\" : undefined\n }\n >\n <div className=\"canopy-nav-tree__row\">\n <div className=\"canopy-nav-tree__link-wrapper\">\n <Tag\n className={classes.join(\" \")}\n href={isInteractive ? node.href : undefined}\n aria-current={node.isActive ? \"page\" : undefined}\n tabIndex={isInteractive ? undefined : -1}\n >\n {node.title || node.slug}\n </Tag>\n </div>\n {allowToggle ? (\n <button\n type=\"button\"\n className=\"canopy-nav-tree__toggle\"\n aria-expanded={defaultExpanded ? \"true\" : \"false\"}\n aria-controls={panelId || undefined}\n aria-label={toggleLabel}\n data-canopy-nav-item-toggle={panelId || undefined}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n className=\"canopy-nav-tree__toggle-icon\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M5 9l7 7 7-7\"\n />\n </svg>\n <span className=\"sr-only\">{toggleLabel}</span>\n </button>\n ) : null}\n </div>\n {hasChildren ? (\n <div\n id={panelId || undefined}\n className=\"canopy-nav-tree__children\"\n aria-hidden={\n allowToggle ? (defaultExpanded ? \"false\" : \"true\") : \"false\"\n }\n hidden={allowToggle ? !defaultExpanded : undefined}\n >\n <NavigationTreeList\n nodes={node.children}\n depth={depth + 1}\n parentKey={nodeKey}\n buildToggleLabel={buildToggleLabel}\n buildNavLabel={buildNavLabel}\n />\n </div>\n ) : null}\n </li>\n );\n}\n\nexport default function NavigationTree({\n root,\n className = \"\",\n parentKey = \"nav\",\n includeRoot = false,\n heading,\n headingClassName = \"canopy-nav-tree__heading\",\n component: Component = \"div\",\n ...rest\n}) {\n if (!root) return null;\n const {formatString, getString} = useLocale();\n const navFallback = getString(\"common.nouns.navigation\", \"navigation\");\n const buildNavLabel = React.useCallback(\n (value) =>\n formatString(\n \"common.phrases.nav_label\",\n \"{content} navigation\",\n {content: value || navFallback},\n ),\n [formatString, navFallback],\n );\n const buildToggleLabel = React.useCallback(\n (value) =>\n formatString(\n \"common.phrases.toggle_content\",\n \"Toggle {content}\",\n {content: buildNavLabel(value)},\n ),\n [buildNavLabel, formatString],\n );\n const nodes = includeRoot ? [root] : root.children;\n if (!Array.isArray(nodes) || !nodes.length) return null;\n const combinedClassName = [\"canopy-nav-tree\", className]\n .filter(Boolean)\n .join(\" \");\n return (\n <Component\n className={combinedClassName}\n data-canopy-nav-tree=\"true\"\n {...rest}\n >\n {heading ? <div className={headingClassName}>{heading}</div> : null}\n <NavigationTreeList\n nodes={nodes}\n depth={includeRoot ? -1 : 0}\n parentKey={parentKey}\n buildToggleLabel={buildToggleLabel}\n buildNavLabel={buildNavLabel}\n />\n </Component>\n );\n}\n", "import React from \"react\";\nimport NavigationTree from \"./NavigationTree.jsx\";\nimport {useLocale} from \"../locale/index.js\";\nimport {buildHeadingTree} from \"./headingUtils.js\";\nimport getPageContext from \"./pageContext.js\";\n\nconst PageContext = typeof getPageContext === \"function\" ? getPageContext() : null;\n\nconst SCROLL_OFFSET_REM = 1.618;\nconst MAX_HEADING_DEPTH = 3;\n\nfunction depthIndex(depth) {\n return Math.max(0, Math.min(5, (depth || 1) - 1));\n}\n\nfunction resolveDepth(value, fallback = 1) {\n return Math.max(1, typeof value === \"number\" ? value : fallback);\n}\n\nfunction buildNodeKey(id, parentKey, index) {\n const base = id ? String(id) : `section-${parentKey || \"root\"}-${index}`;\n const sanitized = base.replace(/[^a-zA-Z0-9_-]/g, \"-\");\n return `${parentKey || \"section\"}-${sanitized || index}`;\n}\n\nexport default function ContentNavigation({\n items: itemsProp = [],\n className = \"\",\n style = {},\n heading,\n headingId,\n pageTitle,\n ariaLabel,\n collapsible = false,\n}) {\n const {getString, formatString} = useLocale();\n const context = PageContext ? React.useContext(PageContext) : null;\n const contextHeadings = React.useMemo(() => {\n const headings = context && context.page ? context.page.headings : null;\n return Array.isArray(headings) ? headings : [];\n }, [context]);\n const resolvedItems = React.useMemo(() => {\n if (itemsProp && itemsProp.length) return itemsProp;\n return buildHeadingTree(contextHeadings);\n }, [itemsProp, contextHeadings]);\n const topHeading = React.useMemo(() => {\n return (\n contextHeadings.find((entry) => {\n const depth = entry && (entry.depth || entry.level);\n return depth === 1;\n }) || null\n );\n }, [contextHeadings]);\n const resolvedHeadingId =\n headingId || (topHeading && topHeading.id) || null;\n const resolvedPageTitle =\n pageTitle || (context && context.page ? context.page.title : null) || null;\n const inferredHeading =\n (topHeading && (topHeading.title || topHeading.text)) || null;\n const isBrowser =\n typeof window !== \"undefined\" && typeof document !== \"undefined\";\n const savedDepthsRef = React.useRef(null);\n const [internalExpanded, setInternalExpanded] = React.useState(\n collapsible ? false : true,\n );\n\n React.useEffect(() => {\n setInternalExpanded(collapsible ? false : true);\n }, [collapsible]);\n\n const handleToggle = React.useCallback(() => {\n if (!collapsible) return;\n setInternalExpanded((prev) => !prev);\n }, [collapsible]);\n\n const isExpanded = collapsible ? internalExpanded : true;\n\n if ((!resolvedItems || !resolvedItems.length) && !resolvedHeadingId)\n return null;\n\n const combinedClassName = [\n \"canopy-sub-navigation canopy-content-navigation\",\n isExpanded\n ? \"canopy-content-navigation--expanded\"\n : \"canopy-content-navigation--collapsed\",\n !collapsible ? \"canopy-content-navigation--static\" : null,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const effectiveHeading =\n heading || inferredHeading || resolvedPageTitle || null;\n const fallbackNavLabel = getString(\n \"common.nouns.section_navigation\",\n \"Section navigation\",\n );\n const computedNavLabel = effectiveHeading\n ? formatString(\n \"common.phrases.nav_label\",\n \"{content} navigation\",\n {content: effectiveHeading},\n )\n : fallbackNavLabel;\n const navLabel = ariaLabel || computedNavLabel;\n const toggleSrLabel = isExpanded\n ? formatString(\"common.phrases.hide_content\", \"Hide {content}\", {\n content: navLabel,\n })\n : formatString(\"common.phrases.show_content\", \"Show {content}\", {\n content: navLabel,\n });\n const toggleStateClass = isExpanded ? \"is-expanded\" : \"is-collapsed\";\n const toggleShowLabel = getString(\"common.actions.show\", \"Show\");\n const toggleHideLabel = getString(\"common.actions.hide\", \"Hide\");\n const contentNavLabel = getString(\n \"common.nouns.content_navigation\",\n \"content navigation\",\n );\n const onThisPageLabel = getString(\n \"common.misc.on_this_page\",\n \"On this page\",\n );\n const showContentNavLabel = formatString(\n \"common.phrases.show_content\",\n \"Show {content}\",\n {content: contentNavLabel},\n );\n const hideContentNavLabel = formatString(\n \"common.phrases.hide_content\",\n \"Hide {content}\",\n {content: contentNavLabel},\n );\n\n const getSavedDepth = React.useCallback((id, fallback) => {\n if (!id) return fallback;\n if (!savedDepthsRef.current) savedDepthsRef.current = new Map();\n const store = savedDepthsRef.current;\n if (store.has(id)) return store.get(id);\n store.set(id, fallback);\n return fallback;\n }, []);\n\n const headingEntries = React.useMemo(() => {\n const entries = [];\n const seen = new Set();\n if (resolvedHeadingId) {\n const topId = String(resolvedHeadingId);\n entries.push({id: topId, depth: 1});\n seen.add(topId);\n }\n const pushNodes = (nodes) => {\n if (!Array.isArray(nodes)) return;\n nodes.forEach((node) => {\n if (!node || !node.id) return;\n const id = String(node.id);\n if (seen.has(id)) return;\n seen.add(id);\n const depth = resolveDepth(\n typeof node.depth === \"number\" ? node.depth : node.level,\n getSavedDepth(id, 2),\n );\n if (depth > MAX_HEADING_DEPTH) return;\n entries.push({id, depth});\n if (node.children && node.children.length) pushNodes(node.children);\n });\n };\n pushNodes(resolvedItems);\n return entries;\n }, [resolvedHeadingId, resolvedItems, getSavedDepth]);\n\n const fallbackId = headingEntries.length\n ? headingEntries[0].id\n : resolvedHeadingId || null;\n const [activeId, setActiveId] = React.useState(fallbackId);\n const activeIdRef = React.useRef(activeId);\n React.useEffect(() => {\n if (\n process.env.NODE_ENV !== \"production\" &&\n activeIdRef.current !== activeId\n ) {\n console.log(\"[ContentNavigation] activeId changed:\", activeId);\n }\n activeIdRef.current = activeId;\n }, [activeId]);\n\n React.useEffect(() => {\n if (!headingEntries.length) return;\n if (!headingEntries.some((entry) => entry.id === activeIdRef.current)) {\n const next = headingEntries[0].id;\n activeIdRef.current = next;\n setActiveId(next);\n }\n }, [headingEntries]);\n\n const computeOffsetPx = React.useCallback(() => {\n if (!isBrowser) return 0;\n try {\n const root = document.documentElement;\n const fontSize = root\n ? parseFloat(window.getComputedStyle(root).fontSize || \"16\") || 16\n : 16;\n return fontSize * SCROLL_OFFSET_REM;\n } catch (_) {\n return 0;\n }\n }, [isBrowser]);\n\n const headingElementsRef = React.useRef([]);\n\n const updateActiveFromElements = React.useCallback(\n (elements) => {\n if (!elements || !elements.length) return;\n const offset = computeOffsetPx();\n const viewportLimit =\n typeof window !== \"undefined\" && window.innerHeight\n ? window.innerHeight * 0.5\n : 0;\n let fallbackId = elements[0].id;\n let bestId = fallbackId;\n let bestDistance = Number.POSITIVE_INFINITY;\n elements.forEach(({id, element}) => {\n if (!element || !id) return;\n const rect = element.getBoundingClientRect();\n const relativeTop = rect.top - offset;\n if (viewportLimit > 0 && relativeTop < -viewportLimit) {\n return;\n }\n const distance = Math.abs(relativeTop);\n if (distance < bestDistance) {\n bestDistance = distance;\n bestId = id;\n }\n });\n const nextId = bestId || fallbackId;\n if (nextId && nextId !== activeIdRef.current) {\n if (process.env.NODE_ENV !== \"production\") {\n console.log(\"[ContentNavigation] updateActive ->\", nextId);\n }\n activeIdRef.current = nextId;\n setActiveId(nextId);\n }\n },\n [computeOffsetPx],\n );\n\n React.useEffect(() => {\n if (!isBrowser) return undefined;\n const elements = headingEntries\n .map((entry) => {\n const element = document.getElementById(entry.id);\n return element ? {id: entry.id, element} : null;\n })\n .filter(Boolean);\n headingElementsRef.current = elements;\n updateActiveFromElements(elements);\n if (!elements.length) return undefined;\n\n let ticking = false;\n const handle = () => {\n if (!ticking) {\n ticking = true;\n window.requestAnimationFrame(() => {\n if (process.env.NODE_ENV !== \"production\") {\n console.log(\n \"[ContentNavigation] scroll event\",\n window.scrollY,\n window.innerHeight,\n );\n }\n updateActiveFromElements(elements);\n ticking = false;\n });\n }\n };\n window.addEventListener(\"scroll\", handle, {passive: true});\n window.addEventListener(\"resize\", handle);\n return () => {\n window.removeEventListener(\"scroll\", handle);\n window.removeEventListener(\"resize\", handle);\n };\n }, [headingEntries, isBrowser, updateActiveFromElements]);\n\n const handleAnchorClick = React.useCallback(\n (event, targetId, options = {}) => {\n try {\n if (event && typeof event.preventDefault === \"function\")\n event.preventDefault();\n } catch (_) {}\n if (!isBrowser) return;\n const offset = computeOffsetPx();\n let top = 0;\n if (targetId && targetId !== \"top\" && !options.scrollToTop) {\n const el = document.getElementById(targetId);\n if (el) {\n const rect = el.getBoundingClientRect();\n top = window.scrollY + rect.top - offset;\n }\n }\n if (!Number.isFinite(top) || top < 0 || options.scrollToTop) top = 0;\n const nextId =\n targetId && targetId !== \"top\"\n ? targetId\n : headingEntries[0]?.id || resolvedHeadingId || null;\n if (nextId) {\n activeIdRef.current = nextId;\n setActiveId(nextId);\n }\n try {\n window.scrollTo({top, behavior: \"smooth\"});\n } catch (_) {\n window.scrollTo(0, top);\n }\n },\n [computeOffsetPx, headingEntries, resolvedHeadingId, isBrowser],\n );\n\n const navTreeRoot = React.useMemo(() => {\n function mapNodes(nodes, parentKey = \"section\") {\n if (!Array.isArray(nodes) || !nodes.length) return [];\n return nodes\n .map((node, index) => {\n if (!node) return null;\n const id = node.id ? String(node.id) : \"\";\n const depth = resolveDepth(\n typeof node.depth === \"number\" ? node.depth : node.level,\n getSavedDepth(id, 2),\n );\n if (depth > MAX_HEADING_DEPTH) return null;\n const key = buildNodeKey(\n id || node.title || `section-${index}`,\n parentKey,\n index,\n );\n const href = id ? `#${id}` : \"#\";\n const childNodes = mapNodes(node.children || [], key);\n const isActive = id && activeId === id;\n const hasActiveChild = childNodes.some(\n (child) => child && child.isActive,\n );\n return {\n slug: key,\n title: node.title || node.text || id || `Section ${index + 1}`,\n href,\n children: childNodes,\n isActive: Boolean(isActive),\n isExpanded: isActive || hasActiveChild,\n };\n })\n .filter(Boolean);\n }\n\n const nodes = mapNodes(resolvedItems, \"section\");\n return {\n slug: \"content-nav-root\",\n title: effectiveHeading || resolvedPageTitle || onThisPageLabel,\n children: nodes,\n };\n }, [\n resolvedItems,\n effectiveHeading,\n resolvedPageTitle,\n activeId,\n getSavedDepth,\n ]);\n\n return (\n <nav\n className={combinedClassName}\n style={style}\n aria-label={navLabel}\n data-canopy-content-nav=\"true\"\n >\n {collapsible ? (\n <button\n type=\"button\"\n className={`canopy-content-navigation__toggle ${toggleStateClass}`}\n aria-expanded={isExpanded}\n aria-label={toggleSrLabel}\n title={toggleSrLabel}\n onClick={handleToggle}\n data-canopy-content-nav-toggle=\"true\"\n data-show-label={toggleShowLabel}\n data-hide-label={toggleHideLabel}\n data-show-full-label={showContentNavLabel}\n data-hide-full-label={hideContentNavLabel}\n >\n <span\n className=\"canopy-content-navigation__toggle-icon\"\n aria-hidden=\"true\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ionicon\"\n viewBox=\"0 0 512 512\"\n >\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"50\"\n d=\"M160 144h288M160 256h288M160 368h288\"\n />\n <circle\n cx=\"80\"\n cy=\"144\"\n r=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"32\"\n />\n <circle\n cx=\"80\"\n cy=\"256\"\n r=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"32\"\n />\n <circle\n cx=\"80\"\n cy=\"368\"\n r=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"32\"\n />\n </svg>\n </span>\n <span\n className=\"canopy-content-navigation__toggle-label\"\n data-canopy-content-nav-toggle-label=\"true\"\n >\n <span className=\"sr-only\">{toggleSrLabel}</span>\n </span>\n <span className=\"sr-only\" data-canopy-content-nav-toggle-sr=\"true\">\n {toggleSrLabel}\n </span>\n </button>\n ) : null}\n <NavigationTree\n root={navTreeRoot}\n includeRoot={false}\n parentKey=\"content-nav\"\n className=\"canopy-sub-navigation__tree canopy-content-navigation__tree\"\n />\n </nav>\n );\n}\n", "export function buildHeadingTree(headings) {\n if (!Array.isArray(headings) || !headings.length) return [];\n const root = [];\n const stack = [];\n headings.forEach((heading) => {\n if (!heading || typeof heading !== 'object') return;\n const depth = typeof heading.depth === 'number' ? heading.depth : heading.level;\n if (typeof depth !== 'number' || depth < 2) return;\n const entry = {\n id: heading.id || heading.slug || heading.title,\n title: heading.title || heading.text || heading.id,\n depth,\n children: [],\n };\n while (stack.length && stack[stack.length - 1].depth >= entry.depth) {\n stack.pop();\n }\n if (!stack.length) {\n root.push(entry);\n } else {\n stack[stack.length - 1].children.push(entry);\n }\n stack.push(entry);\n });\n return root;\n}\n\nexport default {\n buildHeadingTree,\n};\n", "import React from 'react';\n\nexport default function ContentNavigationScript() {\n const code = `\n(function () {\n if (typeof window === 'undefined') return;\n if (window.__CANOPY_CONTENT_NAV_READY__) return;\n window.__CANOPY_CONTENT_NAV_READY__ = true;\n var STORAGE_KEY = 'canopy_content_nav_collapsed';\n var storage = null;\n try {\n storage = window.localStorage;\n } catch (error) {\n storage = null;\n }\n\n function setStored(value) {\n if (!storage) return;\n try {\n if (value == null) {\n storage.removeItem(STORAGE_KEY);\n } else {\n storage.setItem(STORAGE_KEY, value);\n }\n } catch (error) {}\n }\n\n function getStored() {\n if (!storage) return null;\n try {\n return storage.getItem(STORAGE_KEY);\n } catch (error) {\n return null;\n }\n }\n\n function ready(fn) {\n if (!fn) return;\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', fn, { once: true });\n } else {\n fn();\n }\n }\n\n function applyState(root, collapsed) {\n if (!root) return;\n var isCollapsed = !!collapsed;\n root.classList.toggle('is-collapsed', isCollapsed);\n var layout = root.closest('.canopy-layout');\n if (layout) layout.classList.toggle('canopy-layout--content-nav-collapsed', isCollapsed);\n var nav = root.querySelector('[data-canopy-content-nav]');\n if (nav) {\n nav.classList.toggle('canopy-content-navigation--collapsed', isCollapsed);\n nav.classList.toggle('canopy-content-navigation--expanded', !isCollapsed);\n nav.setAttribute('data-expanded', isCollapsed ? 'false' : 'true');\n }\n var toggle = root.querySelector('[data-canopy-content-nav-toggle]');\n if (toggle) {\n var showLabel = toggle.getAttribute('data-show-label') || 'Show';\n var hideLabel = toggle.getAttribute('data-hide-label') || 'Hide';\n var showFull = toggle.getAttribute('data-show-full-label') || 'Show section navigation';\n var hideFull = toggle.getAttribute('data-hide-full-label') || 'Hide section navigation';\n var labelNode = toggle.querySelector('[data-canopy-content-nav-toggle-label]');\n var srNode = toggle.querySelector('[data-canopy-content-nav-toggle-sr]');\n toggle.setAttribute('aria-expanded', isCollapsed ? 'false' : 'true');\n toggle.setAttribute('aria-label', isCollapsed ? showFull : hideFull);\n toggle.setAttribute('title', isCollapsed ? showFull : hideFull);\n toggle.classList.toggle('is-collapsed', isCollapsed);\n toggle.classList.toggle('is-expanded', !isCollapsed);\n if (!labelNode) {\n toggle.textContent = isCollapsed ? showLabel : hideLabel;\n }\n if (srNode) {\n srNode.textContent = isCollapsed ? showFull : hideFull;\n }\n }\n if (root.__canopyContentNavSync) {\n try {\n root.__canopyContentNavSync();\n } catch (_) {}\n }\n }\n\n function setupFloatingState(root) {\n if (!root || typeof IntersectionObserver !== 'function') return;\n if (root.__canopyContentNavFloating) return;\n var nav = root.querySelector('[data-canopy-content-nav]');\n if (!nav) return;\n var sentinel = root.querySelector('[data-canopy-content-nav-sentinel]');\n if (!sentinel) {\n sentinel = document.createElement('div');\n sentinel.setAttribute('aria-hidden', 'true');\n sentinel.setAttribute('data-canopy-content-nav-sentinel', 'true');\n root.insertBefore(sentinel, nav);\n }\n var placeholder = root.querySelector('[data-canopy-content-nav-placeholder]');\n if (!placeholder) {\n placeholder = document.createElement('div');\n placeholder.setAttribute('aria-hidden', 'true');\n placeholder.setAttribute('data-canopy-content-nav-placeholder', 'true');\n if (nav.nextSibling) {\n root.insertBefore(placeholder, nav.nextSibling);\n } else {\n root.appendChild(placeholder);\n }\n }\n root.__canopyContentNavFloating = true;\n\n function syncPosition() {\n try {\n var rect = root.getBoundingClientRect();\n nav.style.setProperty('--canopy-content-nav-fixed-left', rect.left + 'px');\n nav.style.setProperty('--canopy-content-nav-fixed-width', rect.width + 'px');\n if (placeholder) placeholder.style.width = rect.width + 'px';\n } catch (_) {}\n }\n\n var observer = new IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n var stuck = !entry.isIntersecting && entry.boundingClientRect.top < 0;\n nav.classList.toggle('canopy-content-navigation--floating', stuck);\n nav.setAttribute('data-stuck', stuck ? 'true' : 'false');\n if (placeholder) {\n placeholder.style.height = stuck ? nav.offsetHeight + 'px' : '0px';\n }\n });\n });\n\n observer.observe(sentinel);\n syncPosition();\n var handleResize = function () {\n syncPosition();\n };\n window.addEventListener('resize', handleResize);\n root.__canopyContentNavCleanup = function () {\n observer.disconnect();\n window.removeEventListener('resize', handleResize);\n };\n root.__canopyContentNavSync = syncPosition;\n }\n\n function computeOffsetPx() {\n try {\n var root = document.documentElement;\n var size = root ? parseFloat(window.getComputedStyle(root).fontSize || '16') || 16 : 16;\n return size * 1.618;\n } catch (error) {\n return 0;\n }\n }\n\n function setupActiveHeadingWatcher(root) {\n if (!root || root.__canopyContentNavActive) return;\n var nav = root.querySelector('[data-canopy-content-nav]');\n if (!nav) return;\n var linkNodes = Array.prototype.slice.call(\n nav.querySelectorAll('.canopy-nav-tree__link[href^=\"#\"]')\n );\n var entries = linkNodes\n .map(function (link) {\n if (!link || !link.getAttribute) return null;\n var href = link.getAttribute('href') || '';\n if (!href || href.charAt(0) !== '#') return null;\n var id = href.slice(1);\n if (!id) return null;\n var target = document.getElementById(id);\n if (!target) return null;\n return {\n id: id,\n link: link,\n target: target,\n item: link.closest('[data-canopy-nav-item]') || null,\n };\n })\n .filter(Boolean);\n if (!entries.length) return;\n root.__canopyContentNavActive = true;\n var activeId = null;\n\n function expandParents(link) {\n var parent = link ? link.closest('[data-canopy-nav-item]') : null;\n while (parent) {\n parent.setAttribute('data-expanded', 'true');\n var toggle = parent.querySelector('[data-canopy-nav-item-toggle]');\n if (toggle) {\n toggle.setAttribute('aria-expanded', 'true');\n var targetId = toggle.getAttribute('data-canopy-nav-item-toggle');\n if (targetId) {\n var panel = document.getElementById(targetId);\n if (panel) {\n panel.hidden = false;\n panel.removeAttribute('hidden');\n panel.setAttribute('aria-hidden', 'false');\n }\n }\n }\n parent = parent.parentElement\n ? parent.parentElement.closest('[data-canopy-nav-item]')\n : null;\n }\n }\n\n function applyActive(id) {\n if (!id || activeId === id) return;\n activeId = id;\n var activeParents = new Set();\n entries.forEach(function (entry) {\n var isActive = entry.id === id;\n entry.link.classList.toggle('is-active', isActive);\n if (entry.item) entry.item.classList.toggle('is-active', isActive);\n if (isActive) {\n expandParents(entry.link);\n var parent = entry.link.closest('[data-canopy-nav-item]');\n while (parent) {\n activeParents.add(parent);\n parent = parent.parentElement\n ? parent.parentElement.closest('[data-canopy-nav-item]')\n : null;\n }\n }\n });\n entries.forEach(function (entry) {\n var item = entry.item;\n if (!item) return;\n if (!activeParents.has(item) && entry.id !== id) {\n item.setAttribute('data-expanded', 'false');\n var toggle = item.querySelector('[data-canopy-nav-item-toggle]');\n if (toggle) {\n toggle.setAttribute('aria-expanded', 'false');\n var targetId = toggle.getAttribute('data-canopy-nav-item-toggle');\n if (targetId) {\n var panel = document.getElementById(targetId);\n if (panel) {\n panel.hidden = true;\n panel.setAttribute('hidden', '');\n panel.setAttribute('aria-hidden', 'true');\n }\n }\n }\n }\n });\n }\n\n function updateActive() {\n var offset = computeOffsetPx();\n var baseFont = 16;\n try {\n var root = document.documentElement;\n baseFont = parseFloat(window.getComputedStyle(root).fontSize || '16') || 16;\n } catch (_) {}\n var proximityLimit = baseFont * 5;\n var fallbackId = entries[0].id;\n var bestId = fallbackId;\n var bestDistance = Number.POSITIVE_INFINITY;\n entries.forEach(function (entry) {\n if (!entry || !entry.target) return;\n var rect = entry.target.getBoundingClientRect();\n var relativeTop = rect.top - offset;\n if (relativeTop < -proximityLimit) return;\n var distance = Math.abs(relativeTop);\n if (distance < bestDistance) {\n bestDistance = distance;\n bestId = entry.id;\n }\n });\n applyActive(bestId || fallbackId);\n }\n\n updateActive();\n var ticking = false;\n function handle() {\n if (ticking) return;\n ticking = true;\n window.requestAnimationFrame(function () {\n updateActive();\n ticking = false;\n });\n }\n window.addEventListener('scroll', handle, { passive: true });\n window.addEventListener('resize', handle);\n }\n\n ready(function () {\n var rootSet = new Set();\n var navNodes = Array.prototype.slice.call(\n document.querySelectorAll('[data-canopy-content-nav]')\n );\n navNodes.forEach(function (nav) {\n if (!nav || !nav.closest) return;\n var root = nav.closest('[data-canopy-content-nav-root]');\n if (!root) {\n root = nav.parentElement || nav;\n if (root && !root.hasAttribute('data-canopy-content-nav-root')) {\n root.setAttribute('data-canopy-content-nav-root', 'true');\n }\n }\n if (root) rootSet.add(root);\n });\n\n var roots = Array.from(rootSet);\n if (!roots.length) return;\n\n var collapsibleRoots = [];\n roots.forEach(function (root) {\n var nav = root.querySelector('[data-canopy-content-nav]');\n if (!nav) return;\n var isStatic = nav.classList.contains('canopy-content-navigation--static');\n if (isStatic) {\n root.classList.remove('is-collapsed');\n nav.classList.add('canopy-content-navigation--expanded');\n nav.classList.remove('canopy-content-navigation--collapsed');\n nav.setAttribute('data-expanded', 'true');\n } else {\n collapsibleRoots.push(root);\n }\n setupFloatingState(root);\n setupActiveHeadingWatcher(root);\n });\n\n if (!collapsibleRoots.length) return;\n\n var stored = getStored();\n var collapsed = true;\n var isDesktop = false;\n try {\n var bp = window.getComputedStyle(document.documentElement).getPropertyValue('--canopy-desktop-breakpoint') || '70rem';\n isDesktop = window.matchMedia('(min-width: ' + bp.trim() + ')').matches;\n } catch (_) {\n isDesktop = false;\n }\n if (!isDesktop) {\n collapsed = true;\n } else if (stored === '0' || stored === 'false') {\n collapsed = false;\n } else if (stored === '1' || stored === 'true') {\n collapsed = true;\n }\n\n function sync(next) {\n collapsed = !!next;\n collapsibleRoots.forEach(function (root) {\n applyState(root, collapsed);\n });\n setStored(collapsed ? '1' : '0');\n }\n\n sync(collapsed);\n\n collapsibleRoots.forEach(function (root) {\n var toggle = root.querySelector('[data-canopy-content-nav-toggle]');\n if (!toggle) return;\n toggle.addEventListener('click', function (event) {\n event.preventDefault();\n sync(!collapsed);\n });\n });\n });\n})();\n `;\n\n return <script dangerouslySetInnerHTML={{__html: code}} />;\n}\n", "import React from 'react';\nimport SubNavigation from './SubNavigation.jsx';\nimport ContentNavigation from './ContentNavigation.jsx';\nimport ContentNavigationScript from './ContentNavigationScript.jsx';\nimport {buildHeadingTree} from './headingUtils.js';\nimport getPageContext from './pageContext.js';\n\nfunction buildNavigationAside(sidebar, className) {\n if (!sidebar) {\n return <SubNavigation className={className} />;\n }\n if (typeof sidebar === \"function\") {\n return React.createElement(sidebar);\n }\n return sidebar;\n}\n\nexport default function Layout({\n children,\n sidebar,\n navigation = true,\n fluid = false,\n contentNavigation = true,\n className = \"\",\n contentClassName = \"\",\n sidebarClassName = \"\",\n contentNavigationClassName = \"\",\n ...rest\n}) {\n const PageContext = typeof getPageContext === \"function\" ? getPageContext() : null;\n const context = PageContext ? React.useContext(PageContext) : null;\n const pageHeadings = React.useMemo(() => {\n const headings = context && context.page ? context.page.headings : null;\n return Array.isArray(headings) ? headings : [];\n }, [context]);\n const contentHeading = React.useMemo(() => {\n const first = pageHeadings.find((heading) => {\n const depth = heading && (heading.depth || heading.level);\n return depth === 1;\n });\n return first && first.title ? first.title : null;\n }, [pageHeadings]);\n const headingAnchorId = React.useMemo(() => {\n const first = pageHeadings.find((heading) => {\n const depth = heading && (heading.depth || heading.level);\n return depth === 1;\n });\n return first && first.id ? first.id : null;\n }, [pageHeadings]);\n const headingTree = React.useMemo(\n () => buildHeadingTree(pageHeadings),\n [pageHeadings]\n );\n\n const showLeftColumn = navigation !== false;\n const hasContentNavigation =\n navigation !== false &&\n contentNavigation !== false &&\n headingTree.length > 0;\n\n const containerClassName = (() => {\n const classes = [\"canopy-layout\"];\n classes.push(fluid ? \"canopy-layout--fluid\" : \"canopy-layout--fixed\");\n if (showLeftColumn) classes.push(\"canopy-layout--with-sidebar\");\n if (hasContentNavigation) {\n classes.push(\"canopy-layout--with-content-nav\");\n classes.push(\"canopy-layout--content-nav-collapsed\");\n }\n if (className) classes.push(className);\n return classes.join(\" \");\n })();\n\n const leftAsideClassName = [\"canopy-layout__sidebar\", sidebarClassName]\n .filter(Boolean)\n .join(\" \");\n\n const contentClassNames = [\"canopy-layout__content\", contentClassName]\n .filter(Boolean)\n .join(\" \");\n\n const contentNavigationAsideClassName = [\n \"canopy-layout__content-nav\",\n \"is-collapsed\",\n contentNavigationClassName,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const sidebarNode = showLeftColumn\n ? buildNavigationAside(sidebar, sidebarClassName)\n : null;\n\n return (\n <div className={containerClassName} {...rest}>\n {showLeftColumn ? (\n <aside className={leftAsideClassName}>{sidebarNode}</aside>\n ) : null}\n <div className={contentClassNames}>{children}</div>\n {hasContentNavigation ? (\n <>\n <aside\n className={contentNavigationAsideClassName}\n data-canopy-content-nav-root=\"true\"\n >\n <ContentNavigation\n items={headingTree}\n heading={contentHeading || undefined}\n headingId={headingAnchorId || undefined}\n pageTitle={\n context && context.page ? context.page.title : undefined\n }\n collapsible\n />\n </aside>\n <ContentNavigationScript />\n </>\n ) : null}\n </div>\n );\n}\n", "import React from \"react\";\nimport SearchPanel from \"../search/SearchPanel.jsx\";\nimport CanopyBrand from \"./CanopyBrand.jsx\";\nimport CanopyModal from \"./CanopyModal.jsx\";\nimport NavigationTree from \"./NavigationTree.jsx\";\nimport getSafePageContext from \"./pageContext.js\";\nimport LanguageToggle from \"./LanguageToggle.jsx\";\nimport {useLocale} from \"../locale/index.js\";\n\nfunction HeaderScript() {\n const code = `\n(function () {\n if (typeof window === 'undefined') return;\n\n var doc = document;\n var body = doc.body;\n var root = doc.documentElement;\n\n function desktopBreakpointQuery() {\n if (typeof window === 'undefined') return '(min-width: 70rem)';\n try {\n var styles = window.getComputedStyle ? window.getComputedStyle(root) : null;\n var value = styles ? styles.getPropertyValue('--canopy-desktop-breakpoint') : '';\n if (typeof value === 'string') value = value.trim();\n if (!value) value = '70rem';\n return '(min-width: ' + value + ')';\n } catch (error) {\n return '(min-width: 70rem)';\n }\n }\n\n function ready(fn) {\n if (doc.readyState === 'loading') {\n doc.addEventListener('DOMContentLoaded', fn, { once: true });\n } else {\n fn(); \n }\n }\n\n ready(function () {\n var header = doc.querySelector('.canopy-header');\n if (!header) return;\n\n var NAV_ATTR = 'data-mobile-nav';\n var SEARCH_ATTR = 'data-mobile-search';\n var NAV_ITEM_ATTR = 'data-canopy-nav-item';\n var NAV_ITEM_TOGGLE_ATTR = 'data-canopy-nav-item-toggle';\n\n function modalFor(type) {\n return doc.querySelector('[data-canopy-modal=\"' + type + '\"]');\n }\n\n function each(list, fn) {\n if (!list || typeof fn !== 'function') return;\n Array.prototype.forEach.call(list, fn);\n }\n\n function setExpanded(type, expanded) {\n var toggles = header.querySelectorAll('[data-canopy-header-toggle=\"' + type + '\"]');\n each(toggles, function (btn) {\n btn.setAttribute('aria-expanded', expanded ? 'true' : 'false');\n });\n var modal = modalFor(type);\n if (modal) {\n modal.setAttribute('data-open', expanded ? 'true' : 'false');\n modal.setAttribute('aria-hidden', expanded ? 'false' : 'true');\n }\n }\n\n function lockScroll(shouldLock) {\n if (!body) return;\n if (shouldLock) {\n if (!body.dataset.canopyScrollLock) {\n body.dataset.canopyScrollPrevOverflow = body.style.overflow || '';\n if (root && root.dataset) {\n root.dataset.canopyScrollPrevOverflow = root.style.overflow || '';\n }\n }\n body.dataset.canopyScrollLock = '1';\n body.style.overflow = 'hidden';\n if (root) root.style.overflow = 'hidden';\n } else {\n if (body.dataset.canopyScrollLock) {\n delete body.dataset.canopyScrollLock;\n body.style.overflow = body.dataset.canopyScrollPrevOverflow || '';\n delete body.dataset.canopyScrollPrevOverflow;\n }\n if (root && root.dataset) {\n root.style.overflow = root.dataset.canopyScrollPrevOverflow || '';\n delete root.dataset.canopyScrollPrevOverflow;\n }\n }\n }\n\n function stateFor(type) {\n if (type === 'nav') return header.getAttribute(NAV_ATTR);\n if (type === 'search') return header.getAttribute(SEARCH_ATTR);\n return 'closed';\n }\n\n function focusSearchForm() {\n var input = header.querySelector('[data-canopy-search-form-input]');\n if (!input) return;\n var raf = typeof window !== 'undefined' && window.requestAnimationFrame;\n (raf || function (fn) { return setTimeout(fn, 16); })(function () {\n try {\n input.focus({ preventScroll: true });\n } catch (_) {\n try { input.focus(); } catch (_) {}\n }\n });\n }\n\n function focusNavMenu() {\n var modal = modalFor('nav');\n if (!modal) return;\n var target = modal.querySelector('button, a, input, [tabindex]:not([tabindex=\"-1\"])');\n if (!target) return;\n var raf = typeof window !== 'undefined' && window.requestAnimationFrame;\n (raf || function (fn) { return setTimeout(fn, 16); })(function () {\n try {\n target.focus({ preventScroll: true });\n } catch (_) {\n try { target.focus(); } catch (_) {}\n }\n });\n }\n\n function forEachNavTree(scope, fn) {\n if (typeof fn !== 'function') return;\n var rootNode = scope || doc;\n var trees = rootNode.querySelectorAll('[data-canopy-nav-tree]');\n each(trees, function (tree) {\n fn(tree);\n });\n }\n\n function resetNavItemToggles(scope) {\n forEachNavTree(scope, function (tree) {\n var toggles = tree.querySelectorAll('[' + NAV_ITEM_TOGGLE_ATTR + ']');\n each(toggles, function (btn) {\n btn.setAttribute('aria-expanded', 'false');\n var targetId = btn.getAttribute(NAV_ITEM_TOGGLE_ATTR);\n var panel = targetId ? doc.getElementById(targetId) : null;\n var parent = btn.closest('[' + NAV_ITEM_ATTR + ']');\n if (panel) {\n panel.hidden = true;\n panel.setAttribute('aria-hidden', 'true');\n panel.setAttribute('hidden', '');\n }\n if (parent) parent.setAttribute('data-expanded', 'false');\n });\n });\n }\n\n function applyDefaultNavItemState(scope) {\n forEachNavTree(scope, function (tree) {\n var defaults = tree.querySelectorAll('[data-default-expanded=\"true\"]');\n each(defaults, function (item) {\n var toggle = item.querySelector('[' + NAV_ITEM_TOGGLE_ATTR + ']');\n var targetId = toggle ? toggle.getAttribute(NAV_ITEM_TOGGLE_ATTR) : null;\n var panel = targetId ? doc.getElementById(targetId) : null;\n item.setAttribute('data-expanded', 'true');\n if (toggle) toggle.setAttribute('aria-expanded', 'true');\n if (panel) {\n panel.hidden = false;\n panel.removeAttribute('hidden');\n panel.setAttribute('aria-hidden', 'false');\n }\n });\n });\n }\n\n function setState(type, next) {\n if (type === 'nav') header.setAttribute(NAV_ATTR, next);\n if (type === 'search') header.setAttribute(SEARCH_ATTR, next);\n setExpanded(type, next === 'open');\n var navOpen = header.getAttribute(NAV_ATTR) === 'open';\n var searchOpen = header.getAttribute(SEARCH_ATTR) === 'open';\n lockScroll(navOpen || searchOpen);\n if (type === 'nav') {\n if (next !== 'open') {\n resetNavItemToggles(modalFor('nav'));\n } else {\n applyDefaultNavItemState(modalFor('nav'));\n }\n }\n }\n\n function toggle(type, force) {\n var current = stateFor(type) === 'open';\n var shouldOpen = typeof force === 'boolean' ? force : !current;\n if (shouldOpen && type === 'nav') setState('search', 'closed');\n if (shouldOpen && type === 'search') setState('nav', 'closed');\n setState(type, shouldOpen ? 'open' : 'closed');\n if (type === 'search' && shouldOpen) focusSearchForm();\n if (type === 'nav' && shouldOpen) focusNavMenu();\n }\n\n function setupNavItemToggles() {\n var toggles = doc.querySelectorAll('[' + NAV_ITEM_TOGGLE_ATTR + ']');\n each(toggles, function (btn) {\n if (btn.__canopyNavReady) return;\n btn.__canopyNavReady = true;\n btn.addEventListener('click', function (event) {\n event.preventDefault();\n event.stopPropagation();\n var targetId = btn.getAttribute(NAV_ITEM_TOGGLE_ATTR);\n if (!targetId) return;\n var panel = doc.getElementById(targetId);\n var parent = btn.closest('[' + NAV_ITEM_ATTR + ']');\n var expanded = btn.getAttribute('aria-expanded') === 'true';\n var next = !expanded;\n btn.setAttribute('aria-expanded', next ? 'true' : 'false');\n if (panel) {\n panel.hidden = !next;\n panel.setAttribute('aria-hidden', next ? 'false' : 'true');\n if (next) {\n panel.removeAttribute('hidden');\n } else {\n panel.setAttribute('hidden', '');\n }\n }\n if (parent) parent.setAttribute('data-expanded', next ? 'true' : 'false');\n });\n });\n }\n\n each(header.querySelectorAll('[data-canopy-header-toggle]'), function (btn) {\n btn.addEventListener('click', function (event) {\n event.preventDefault();\n var type = btn.getAttribute('data-canopy-header-toggle');\n if (!type) return;\n toggle(type);\n });\n });\n\n each(doc.querySelectorAll('[data-canopy-header-close]'), function (btn) {\n btn.addEventListener('click', function () {\n var type = btn.getAttribute('data-canopy-header-close');\n if (!type) return;\n toggle(type, false);\n });\n });\n\n var navModal = modalFor('nav');\n if (navModal) {\n navModal.addEventListener('click', function (event) {\n if (event.target === navModal) {\n toggle('nav', false);\n return;\n }\n var target = event.target && event.target.closest && event.target.closest('a');\n if (!target) return;\n toggle('nav', false);\n });\n }\n\n var searchModal = modalFor('search');\n if (searchModal) {\n searchModal.addEventListener('click', function (event) {\n if (event.target === searchModal) toggle('search', false);\n });\n }\n\n doc.addEventListener('keydown', function (event) {\n if (event.key !== 'Escape') return;\n var navOpen = header.getAttribute(NAV_ATTR) === 'open';\n var searchOpen = header.getAttribute(SEARCH_ATTR) === 'open';\n if (!navOpen && !searchOpen) return;\n event.preventDefault();\n toggle('nav', false);\n toggle('search', false);\n });\n\n var mq = window.matchMedia(desktopBreakpointQuery());\n function syncDesktopState() {\n if (mq.matches) {\n setState('nav', 'closed');\n setState('search', 'closed');\n setExpanded('nav', false);\n setExpanded('search', false);\n lockScroll(false);\n }\n }\n\n try {\n mq.addEventListener('change', syncDesktopState);\n } catch (_) {\n mq.addListener(syncDesktopState);\n }\n\n setupNavItemToggles();\n applyDefaultNavItemState(null);\n syncDesktopState();\n });\n})();\n `;\n\n return (\n <script\n dangerouslySetInnerHTML={{\n __html: code,\n }}\n />\n );\n}\n\nfunction ensureArray(navLinks) {\n if (!Array.isArray(navLinks)) return [];\n return navLinks.filter(\n (link) => link && typeof link === \"object\" && typeof link.href === \"string\",\n );\n}\n\nfunction normalizeHref(href) {\n if (typeof href !== \"string\") return \"\";\n let next = href.trim();\n if (!next) return \"\";\n try {\n const parsed = new URL(next, \"https://canopy.local\");\n next = parsed.pathname || \"/\";\n } catch (_) {\n next = next.replace(/[?#].*$/, \"\");\n }\n next = next.replace(/[?#].*$/, \"\");\n if (next.length > 1) {\n next = next.replace(/\\/+$/, \"\");\n }\n if (!next) return \"/\";\n return next;\n}\n\nfunction doesLinkMatchSection(linkHref, sectionNavigation) {\n if (!sectionNavigation || !sectionNavigation.root || !linkHref) return false;\n const normalizedLink = normalizeHref(linkHref);\n if (!normalizedLink) return false;\n const root = sectionNavigation.root;\n if (\n typeof root.href === \"string\" &&\n normalizeHref(root.href) === normalizedLink\n ) {\n return true;\n }\n if (root.slug) {\n const slugPath = normalizeHref(`/${root.slug}`);\n if (slugPath && normalizedLink === slugPath) {\n return true;\n }\n }\n return false;\n}\n\nfunction rootSegmentFromHref(href) {\n const normalized = normalizeHref(href);\n if (!normalized || normalized === \"/\") return \"\";\n const trimmed = normalized.replace(/^\\/+/, \"\");\n return trimmed.split(\"/\")[0] || \"\";\n}\n\nfunction getLinkNavigationData(link, navigationRoots, sectionNavigation) {\n if (!link || typeof link.href !== \"string\") return null;\n const segment = rootSegmentFromHref(link.href);\n if (navigationRoots && segment && navigationRoots[segment]) {\n return navigationRoots[segment];\n }\n if (sectionNavigation && doesLinkMatchSection(link.href, sectionNavigation)) {\n return sectionNavigation;\n }\n return null;\n}\n\nexport default function CanopyHeader(props = {}) {\n const {\n navigation: navLinksProp,\n searchLabel: searchLabelProp,\n searchHotkey = \"mod+k\",\n searchPlaceholder: searchPlaceholderProp,\n brandHref = \"/\",\n title: titleProp,\n logo: SiteLogo,\n languageToggle: languageToggleProp,\n } = props;\n\n const PageContext = getSafePageContext();\n const context = React.useContext(PageContext);\n const {getString, formatString} = useLocale();\n const contextPrimaryNav = context && Array.isArray(context.primaryNavigation)\n ? context.primaryNavigation\n : [];\n const navLinks = navLinksProp && navLinksProp.length\n ? ensureArray(navLinksProp)\n : ensureArray(contextPrimaryNav);\n const contextNavigation =\n context && context.navigation ? context.navigation : null;\n const contextSite = context && context.site ? context.site : null;\n const pageData = context && context.page ? context.page : null;\n const contextSiteTitle =\n contextSite && typeof contextSite.title === \"string\"\n ? contextSite.title.trim()\n : \"\";\n const siteLanguageToggle =\n contextSite && contextSite.languageToggle ? contextSite.languageToggle : null;\n const siteRoutes = contextSite && contextSite.routes ? contextSite.routes : null;\n const siteDefaultRoutes =\n contextSite && contextSite.routesDefault ? contextSite.routesDefault : null;\n const searchRouteValue =\n siteRoutes && typeof siteRoutes.search === \"string\"\n ? siteRoutes.search\n : \"\";\n const defaultSearchRoute =\n siteDefaultRoutes && typeof siteDefaultRoutes.search === \"string\"\n ? siteDefaultRoutes.search\n : \"search\";\n const trimmedSearchRoute = searchRouteValue\n ? searchRouteValue.replace(/^\\/+|\\/+$/g, \"\")\n : \"\";\n const usesDirectorySearchRoute =\n trimmedSearchRoute && trimmedSearchRoute !== (defaultSearchRoute || \"search\");\n const normalizedSearchRoute = usesDirectorySearchRoute\n ? `/${trimmedSearchRoute}/`\n : `/${(trimmedSearchRoute || defaultSearchRoute || \"search\").replace(/^\\/+/, \"\")}/index.html`;\n const resolvedLanguageToggle =\n languageToggleProp === false\n ? null\n : languageToggleProp === true || typeof languageToggleProp === \"undefined\"\n ? siteLanguageToggle\n : languageToggleProp;\n const resolvedSearchLabel =\n searchLabelProp != null\n ? searchLabelProp\n : getString(\"common.nouns.search\", \"Search\");\n const resolvedSearchPlaceholder =\n searchPlaceholderProp != null\n ? searchPlaceholderProp\n : getString(\"common.phrases.placeholder_search\", \"Search\u2026\");\n const primaryNavigationLabel = getString(\n \"common.nouns.primary_navigation\",\n \"Primary navigation\",\n );\n const openSearchButtonLabel = formatString(\n \"common.phrases.open_content\",\n \"Open {content}\",\n {content: resolvedSearchLabel},\n );\n const openNavButtonLabel = formatString(\n \"common.phrases.open_content\",\n \"Open {content}\",\n {content: primaryNavigationLabel},\n );\n const closeNavLabel = formatString(\n \"common.phrases.close_content\",\n \"Close {content}\",\n {content: primaryNavigationLabel},\n );\n const closeSearchLabel = formatString(\n \"common.phrases.close_content\",\n \"Close {content}\",\n {content: resolvedSearchLabel},\n );\n const defaultHeaderTitle = contextSiteTitle || \"Site title\";\n const normalizedTitleProp =\n typeof titleProp === \"string\" ? titleProp.trim() : \"\";\n const resolvedTitle = normalizedTitleProp || defaultHeaderTitle;\n const sectionNavigation =\n contextNavigation && contextNavigation.root ? contextNavigation : null;\n const navigationRoots =\n contextNavigation && contextNavigation.allRoots\n ? contextNavigation.allRoots\n : null;\n const sectionHeading =\n (sectionNavigation && sectionNavigation.title) ||\n (sectionNavigation && sectionNavigation.root\n ? sectionNavigation.root.title\n : \"\");\n const hasSectionNav = !!(\n sectionNavigation &&\n sectionNavigation.root &&\n Array.isArray(sectionNavigation.root.children) &&\n sectionNavigation.root.children.length\n );\n const sectionNavFallback = getString(\n \"common.nouns.section_navigation\",\n \"Section navigation\",\n );\n const sectionLabel = sectionHeading\n ? formatString(\n \"common.phrases.nav_label\",\n \"{content} navigation\",\n {content: sectionHeading},\n )\n : sectionNavFallback;\n const sectionAriaLabel = sectionHeading\n ? formatString(\n \"common.phrases.nav_label\",\n \"{content} navigation\",\n {content: sectionHeading},\n )\n : sectionNavFallback;\n const defaultSectionLabel = sectionLabel;\n const defaultSectionAriaLabel = sectionAriaLabel;\n const shouldAttachSectionNav = (link) => {\n const navData = getLinkNavigationData(\n link,\n navigationRoots,\n sectionNavigation,\n );\n const rootNode = navData && navData.root;\n return !!(\n rootNode &&\n Array.isArray(rootNode.children) &&\n rootNode.children.length\n );\n };\n const hasIntegratedSectionNav = navLinks.some(shouldAttachSectionNav);\n\n return (\n <>\n <header\n className=\"canopy-header\"\n data-mobile-nav=\"closed\"\n data-mobile-search=\"closed\"\n >\n <div className=\"canopy-header__brand\">\n <CanopyBrand\n label={resolvedTitle}\n href={brandHref}\n className=\"canopy-header__brand-link\"\n Logo={SiteLogo}\n />\n </div>\n\n <div className=\"canopy-header__desktop-search\">\n <SearchPanel\n label={resolvedSearchLabel}\n hotkey={searchHotkey}\n placeholder={resolvedSearchPlaceholder}\n searchPath={normalizedSearchRoute}\n />\n </div>\n\n <nav\n className=\"canopy-nav-links canopy-header__desktop-nav\"\n aria-label={primaryNavigationLabel}\n >\n {navLinks.map((link) => (\n <a\n key={link.href}\n href={link.href}\n aria-current={link.isActive ? \"page\" : undefined}\n >\n {link.label || link.href}\n </a>\n ))}\n </nav>\n\n <div className=\"canopy-header__actions\">\n {resolvedLanguageToggle ? (\n <LanguageToggle\n languageToggle={resolvedLanguageToggle}\n page={pageData}\n variant=\"desktop\"\n className=\"canopy-header__language-toggle canopy-header__language-toggle--desktop\"\n />\n ) : null}\n <button\n type=\"button\"\n className=\"canopy-header__icon-button canopy-header__search-trigger\"\n aria-label={openSearchButtonLabel}\n aria-controls=\"canopy-modal-search\"\n aria-expanded=\"false\"\n data-canopy-header-toggle=\"search\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n className=\"canopy-header__search-icon\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"m21 21-3.8-3.8M10.5 18a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15Z\"\n />\n </svg>\n </button>\n <button\n type=\"button\"\n className=\"canopy-header__icon-button canopy-header__menu\"\n aria-label={openNavButtonLabel}\n aria-controls=\"canopy-modal-nav\"\n aria-expanded=\"false\"\n data-canopy-header-toggle=\"nav\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"1.5\"\n stroke=\"currentColor\"\n className=\"canopy-header__menu-icon\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\"\n />\n </svg>\n </button>\n </div>\n </header>\n\n <CanopyModal\n id=\"canopy-modal-nav\"\n variant=\"nav\"\n labelledBy=\"canopy-modal-nav-label\"\n label={resolvedTitle}\n logo={SiteLogo}\n href={brandHref}\n closeLabel={closeNavLabel}\n closeDataAttr=\"nav\"\n >\n {resolvedLanguageToggle ? (\n <LanguageToggle\n languageToggle={resolvedLanguageToggle}\n page={pageData}\n variant=\"mobile\"\n className=\"canopy-header__language-toggle canopy-header__language-toggle--mobile\"\n />\n ) : null}\n <nav\n className=\"canopy-nav-links canopy-modal__nav\"\n aria-label={primaryNavigationLabel}\n >\n <ul className=\"canopy-modal__nav-list\" role=\"list\">\n {navLinks.map((link, index) => {\n const navData = getLinkNavigationData(\n link,\n navigationRoots,\n sectionNavigation,\n );\n const navRoot = navData && navData.root ? navData.root : null;\n const hasChildren = !!(\n navRoot &&\n Array.isArray(navRoot.children) &&\n navRoot.children.length\n );\n const nestedId = hasChildren\n ? `canopy-modal-section-${index}`\n : null;\n const toggleLabelTarget = link.label\n ? formatString(\n \"common.phrases.nav_label\",\n \"{content} navigation\",\n {content: link.label},\n )\n : primaryNavigationLabel;\n const toggleLabel = formatString(\n \"common.phrases.toggle_content\",\n \"Toggle {content}\",\n {content: toggleLabelTarget},\n );\n const defaultExpanded = hasChildren && !!navRoot.isExpanded;\n return (\n <li\n className=\"canopy-modal__nav-item\"\n key={link.href}\n data-canopy-nav-item={hasChildren ? \"true\" : undefined}\n data-expanded={defaultExpanded ? \"true\" : \"false\"}\n data-default-expanded={defaultExpanded ? \"true\" : undefined}\n >\n <div className=\"canopy-modal__nav-row\">\n <a href={link.href}>{link.label || link.href}</a>\n {hasChildren ? (\n <button\n type=\"button\"\n className=\"canopy-modal__nav-toggle\"\n aria-expanded={defaultExpanded ? \"true\" : \"false\"}\n aria-controls={nestedId || undefined}\n aria-label={toggleLabel}\n data-canopy-nav-item-toggle={nestedId || undefined}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n className=\"canopy-modal__nav-toggle-icon\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M5 9l7 7 7-7\"\n />\n </svg>\n <span className=\"sr-only\">{toggleLabel}</span>\n </button>\n ) : null}\n </div>\n {hasChildren ? (\n <NavigationTree\n root={navRoot}\n parentKey={\n navData && navData.rootSegment\n ? navData.rootSegment\n : `root-${index}`\n }\n component=\"div\"\n className=\"canopy-modal__section-nav canopy-modal__section-nav--nested\"\n aria-label={\n navData && navData.title\n ? formatString(\n \"common.phrases.nav_label\",\n \"{content} navigation\",\n {content: navData.title},\n )\n : defaultSectionAriaLabel\n }\n aria-hidden={defaultExpanded ? \"false\" : \"true\"}\n hidden={!defaultExpanded}\n id={nestedId || undefined}\n />\n ) : null}\n </li>\n );\n })}\n </ul>\n </nav>\n {hasSectionNav && !hasIntegratedSectionNav ? (\n <NavigationTree\n root={sectionNavigation.root}\n component=\"nav\"\n className=\"canopy-modal__section-nav\"\n aria-label={defaultSectionAriaLabel}\n parentKey=\"fallback-nav\"\n />\n ) : null}\n </CanopyModal>\n\n <CanopyModal\n id=\"canopy-modal-search\"\n variant=\"search\"\n labelledBy=\"canopy-modal-search-label\"\n label={resolvedTitle}\n logo={SiteLogo}\n href={brandHref}\n closeLabel={closeSearchLabel}\n closeDataAttr=\"search\"\n bodyClassName=\"canopy-modal__body--search\"\n >\n <SearchPanel\n label={resolvedSearchLabel}\n hotkey={searchHotkey}\n placeholder={resolvedSearchPlaceholder}\n searchPath={normalizedSearchRoute}\n />\n </CanopyModal>\n\n <HeaderScript />\n </>\n );\n}\n", "import React from 'react';\nimport SearchPanelForm, { resolveSearchPath } from './SearchPanelForm.jsx';\nimport SearchPanelTeaserResults from './SearchPanelTeaserResults.jsx';\nimport {useLocale} from \"../locale/index.js\";\n\n// High-level SearchPanel composed of a teaser form and teaser results panel.\n// Encodes configuration as JSON for the client runtime.\nexport default function SearchPanel(props = {}) {\n const {\n placeholder: placeholderProp,\n hotkey = 'mod+k',\n maxResults = 8,\n groupOrder = ['work', 'docs', 'page'],\n // Kept for backward compat; form always renders submit\n button = true, // eslint-disable-line no-unused-vars\n buttonLabel: buttonLabelProp,\n label,\n searchPath = '/search/index.html',\n } = props || {};\n const {getString} = useLocale();\n const placeholder =\n placeholderProp != null\n ? placeholderProp\n : getString('common.phrases.placeholder_search', 'Search\u2026');\n const resolvedButtonLabel =\n buttonLabelProp != null\n ? buttonLabelProp\n : getString('common.nouns.search', 'Search');\n const text =\n typeof label === 'string' && label.trim() ? label.trim() : resolvedButtonLabel;\n const resolvedSearchPath = resolveSearchPath(searchPath);\n const data = { placeholder, hotkey, maxResults, groupOrder, label: text, searchPath: resolvedSearchPath };\n\n return (\n <div data-canopy-search-form className=\"flex-1 min-w-0\">\n <div className=\"relative w-full\">\n <SearchPanelForm placeholder={placeholder} buttonLabel={resolvedButtonLabel} label={label} searchPath={resolvedSearchPath} />\n <SearchPanelTeaserResults />\n </div>\n <script type=\"application/json\" dangerouslySetInnerHTML={{ __html: JSON.stringify(data) }} />\n </div>\n );\n}\n", "import React from \"react\";\n\nexport const MagnifyingGlassIcon = (props) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" aria-hidden=\"true\" focusable=\"false\" {...props}>\n <path d=\"M456.69 421.39L362.6 327.3a173.81 173.81 0 0034.84-104.58C397.44 126.38 319.06 48 222.72 48S48 126.38 48 222.72s78.38 174.72 174.72 174.72A173.81 173.81 0 00327.3 362.6l94.09 94.09a25 25 0 0035.3-35.3zM97.92 222.72a124.8 124.8 0 11124.8 124.8 124.95 124.95 0 01-124.8-124.8z\" />\n </svg>\n);\n", "import {MagnifyingGlassIcon} from \"../Icons\";\nimport React from \"react\";\nimport {useLocale} from \"../locale/index.js\";\n\nfunction readBasePath() {\n const normalize = (val) => {\n const raw = typeof val === \"string\" ? val.trim() : \"\";\n if (!raw) return \"\";\n return raw.replace(/\\/+$/, \"\");\n };\n try {\n if (typeof window !== \"undefined\" && window.CANOPY_BASE_PATH != null) {\n const fromWindow = normalize(window.CANOPY_BASE_PATH);\n if (fromWindow) return fromWindow;\n }\n } catch (_) {}\n try {\n if (\n typeof globalThis !== \"undefined\" &&\n globalThis.CANOPY_BASE_PATH != null\n ) {\n const fromGlobal = normalize(globalThis.CANOPY_BASE_PATH);\n if (fromGlobal) return fromGlobal;\n }\n } catch (_) {}\n try {\n if (\n typeof process !== \"undefined\" &&\n process.env &&\n process.env.CANOPY_BASE_PATH\n ) {\n const fromEnv = normalize(process.env.CANOPY_BASE_PATH);\n if (fromEnv) return fromEnv;\n }\n } catch (_) {}\n return \"\";\n}\n\nfunction isAbsoluteUrl(href) {\n try {\n return /^https?:/i.test(String(href || \"\"));\n } catch (_) {\n return false;\n }\n}\n\nexport function resolveSearchPath(pathValue) {\n let raw = typeof pathValue === \"string\" ? pathValue.trim() : \"\";\n if (!raw) raw = \"/search/index.html\";\n if (isAbsoluteUrl(raw)) return raw;\n const normalizedPath = raw.startsWith(\"/\") ? raw : `/${raw}`;\n const base = readBasePath();\n if (!base) return normalizedPath;\n const baseWithLead = base.startsWith(\"/\") ? base : `/${base}`;\n const baseTrimmed = baseWithLead.replace(/\\/+$/, \"\");\n if (!baseTrimmed) return normalizedPath;\n if (\n normalizedPath === baseTrimmed ||\n normalizedPath.startsWith(`${baseTrimmed}/`)\n ) {\n return normalizedPath;\n }\n const pathTrimmed = normalizedPath.replace(/^\\/+/, \"\");\n return `${baseTrimmed}/${pathTrimmed}`;\n}\n\nexport default function SearchPanelForm(props = {}) {\n const {\n placeholder,\n buttonLabel,\n label,\n searchPath = \"/search/index.html\",\n inputId: inputIdProp,\n clearLabel,\n } = props || {};\n const {getString, formatString} = useLocale();\n const searchLabel = getString(\"common.nouns.search\", \"Search\");\n const placeholderText =\n placeholder != null\n ? placeholder\n : getString(\"common.phrases.placeholder_search\", \"Search\u2026\");\n const buttonText =\n buttonLabel != null ? buttonLabel : getString(\"common.nouns.search\", \"Search\");\n const clearText =\n clearLabel != null\n ? clearLabel\n : formatString(\n \"common.phrases.clear_content_search\",\n \"Clear {content} search\",\n {content: searchLabel},\n );\n const text =\n typeof label === \"string\" && label.trim() ? label.trim() : buttonText;\n const action = React.useMemo(\n () => resolveSearchPath(searchPath),\n [searchPath]\n );\n const autoId = typeof React.useId === \"function\" ? React.useId() : undefined;\n const [fallbackId] = React.useState(\n () => `canopy-search-form-${Math.random().toString(36).slice(2, 10)}`\n );\n const inputId = inputIdProp || autoId || fallbackId;\n const inputRef = React.useRef(null);\n const [hasValue, setHasValue] = React.useState(false);\n\n const focusInput = React.useCallback(() => {\n const el = inputRef.current;\n if (!el) return;\n if (document.activeElement === el) return;\n try {\n el.focus({preventScroll: true});\n } catch (_) {\n try {\n el.focus();\n } catch (_) {}\n }\n }, []);\n\n const handlePointerDown = React.useCallback(\n (event) => {\n const target = event.target;\n if (target && typeof target.closest === \"function\") {\n if (target.closest(\"[data-canopy-search-form-trigger]\")) return;\n if (target.closest(\"[data-canopy-search-form-clear]\")) return;\n }\n event.preventDefault();\n focusInput();\n },\n [focusInput]\n );\n\n React.useEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n if (el.value && el.value.trim()) {\n setHasValue(true);\n }\n }, []);\n\n const handleInputChange = React.useCallback((event) => {\n const nextHasValue = Boolean(\n event?.target?.value && event.target.value.trim()\n );\n setHasValue(nextHasValue);\n }, []);\n\n const handleClear = React.useCallback((event) => {}, []);\n\n const handleClearKey = React.useCallback(\n (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleClear(event);\n }\n },\n [handleClear]\n );\n\n return (\n <form\n action={action}\n method=\"get\"\n role=\"search\"\n autoComplete=\"off\"\n spellCheck=\"false\"\n className=\"canopy-search-form canopy-search-form-shell\"\n onPointerDown={handlePointerDown}\n data-has-value={hasValue ? \"1\" : \"0\"}\n >\n <label htmlFor={inputId} className=\"canopy-search-form__label\">\n <MagnifyingGlassIcon className=\"canopy-search-form__icon\" />\n <span className=\"sr-only\">{searchLabel}</span>\n <input\n id={inputId}\n type=\"search\"\n name=\"q\"\n inputMode=\"search\"\n data-canopy-search-form-input\n placeholder={placeholderText}\n className=\"canopy-search-form__input\"\n ref={inputRef}\n onChange={handleInputChange}\n onInput={handleInputChange}\n />\n </label>\n {hasValue ? (\n <button\n type=\"button\"\n className=\"canopy-search-form__clear\"\n onClick={handleClear}\n onPointerDown={(event) => event.stopPropagation()}\n onKeyDown={handleClearKey}\n aria-label={clearText}\n data-canopy-search-form-clear\n >\n \u00D7\n </button>\n ) : null}\n <button\n type=\"submit\"\n data-canopy-search-form-trigger=\"submit\"\n className=\"canopy-search-form__submit\"\n >\n {text}\n </button>\n </form>\n );\n}\n", "import React from \"react\";\n\n// SSR placeholder for teaser results panel; the runtime controls visibility and content.\nexport default function SearchPanelTeaserResults(props = {}) {\n const { style, className } = props || {};\n const classes = [\"canopy-search-teaser\", \"is-empty\", className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n data-canopy-search-form-panel\n hidden\n className={classes || undefined}\n style={style}\n >\n <div id=\"cplist\" className=\"canopy-search-teaser__list\" />\n </div>\n );\n}\n", "import React from 'react';\nimport getSafePageContext from './pageContext.js';\n\nconst PageContext = getSafePageContext();\n\nexport default function CanopyBrand(props = {}) {\n const {labelId, label: labelProp, href = '/', className, Logo} = props || {};\n const context = React.useContext(PageContext);\n const contextSiteTitle =\n context && context.site && typeof context.site.title === 'string'\n ? context.site.title.trim()\n : '';\n const normalizedLabel =\n typeof labelProp === 'string' && labelProp.trim() ? labelProp : '';\n const resolvedLabel = normalizedLabel || contextSiteTitle || 'Site title';\n const spanProps = labelId ? {id: labelId} : {};\n const classes = ['canopy-logo', className].filter(Boolean).join(' ');\n\n return (\n <a href={href} className={classes}>\n {typeof Logo === 'function' ? <Logo /> : null}\n <span {...spanProps}>{resolvedLabel}</span>\n </a>\n );\n}\n", "import React from 'react';\nimport CanopyBrand from './CanopyBrand.jsx';\nimport {useLocale} from \"../locale/index.js\";\n\nexport default function CanopyModal(props = {}) {\n const {\n id,\n variant,\n open = false,\n labelledBy,\n label,\n logo: Logo,\n href = '/',\n closeLabel,\n closeDataAttr,\n onClose,\n onBackgroundClick,\n bodyClassName,\n padded = true,\n className,\n children,\n } = props;\n\n const rootClassName = ['canopy-modal', variant ? `canopy-modal--${variant}` : null, className]\n .filter(Boolean)\n .join(' ');\n\n const modalProps = {\n id,\n className: rootClassName,\n role: 'dialog',\n 'aria-modal': 'true',\n 'aria-hidden': open ? 'false' : 'true',\n 'data-open': open ? 'true' : 'false',\n };\n\n if (variant) modalProps['data-canopy-modal'] = variant;\n\n const resolvedLabelId = labelledBy || (label ? `${variant || 'modal'}-label` : undefined);\n if (resolvedLabelId) modalProps['aria-labelledby'] = resolvedLabelId;\n\n if (typeof onBackgroundClick === 'function') {\n modalProps.onClick = (event) => {\n if (event.target === event.currentTarget) onBackgroundClick(event);\n };\n }\n\n const {getString} = useLocale();\n const resolvedCloseLabel = closeLabel || getString('common.actions.close', 'Close');\n\n const closeButtonProps = {\n type: 'button',\n className: 'canopy-modal__close',\n 'aria-label': resolvedCloseLabel,\n };\n\n if (typeof closeDataAttr === 'string' && closeDataAttr) {\n closeButtonProps['data-canopy-header-close'] = closeDataAttr;\n }\n\n if (typeof onClose === 'function') {\n closeButtonProps.onClick = onClose;\n }\n\n const bodyClasses = ['canopy-modal__body'];\n if (padded) bodyClasses.push('canopy-modal__body--padded');\n if (bodyClassName) bodyClasses.push(bodyClassName);\n const bodyClassNameValue = bodyClasses.join(' ');\n\n return (\n <div {...modalProps}>\n <div className=\"canopy-modal__panel\">\n <button {...closeButtonProps}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n className=\"canopy-modal__close-icon\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 6l12 12M6 18L18 6\" />\n </svg>\n <span className=\"sr-only\">{resolvedCloseLabel}</span>\n </button>\n <div className={bodyClassNameValue}>\n {label ? (\n <div className=\"canopy-modal__brand\">\n <CanopyBrand\n labelId={resolvedLabelId}\n label={label}\n href={href}\n Logo={Logo}\n className=\"canopy-modal__brand-link\"\n />\n </div>\n ) : null}\n {children}\n </div>\n </div>\n </div>\n );\n}\n", "import React from \"react\";\nimport getSafePageContext from \"./pageContext.js\";\nimport {\n buildLanguageToggleConfig,\n LanguageToggleControl,\n} from \"./languageToggleShared.jsx\";\n\nexport default function LanguageToggle({\n languageToggle,\n page,\n variant = \"inline\",\n className = \"\",\n showLabel = false,\n control,\n label,\n ariaLabel,\n}) {\n const PageContext = getSafePageContext();\n const context = React.useContext(PageContext);\n const siteLanguageToggle =\n (context && context.site && context.site.languageToggle) || null;\n const pageData = page || (context && context.page ? context.page : null);\n const resolvedToggle =\n languageToggle === false\n ? null\n : languageToggle === true || typeof languageToggle === \"undefined\"\n ? siteLanguageToggle\n : languageToggle;\n const normalizeControl = (value) =>\n value === \"list\" ? \"list\" : value === \"select\" ? \"select\" : null;\n const toggleControl = normalizeControl(\n resolvedToggle && typeof resolvedToggle.control === \"string\"\n ? resolvedToggle.control\n : null,\n );\n const resolvedControl =\n normalizeControl(typeof control === \"string\" ? control : null) ||\n toggleControl ||\n \"select\";\n const config = React.useMemo(() => {\n if (!resolvedToggle) return null;\n const base = buildLanguageToggleConfig(resolvedToggle, pageData);\n if (!base) return null;\n return {\n ...base,\n label: typeof label === \"string\" ? label : base.label,\n ariaLabel: typeof ariaLabel === \"string\" ? ariaLabel : base.ariaLabel,\n };\n }, [resolvedToggle, pageData, label, ariaLabel]);\n\n if (!config) return null;\n\n return (\n <LanguageToggleControl\n config={config}\n variant={variant}\n className={className}\n showLabel={showLabel}\n control={resolvedControl}\n />\n );\n}\n", "import React from \"react\";\n\nfunction readBasePath() {\n const normalize = (value) => {\n if (!value) return \"\";\n const raw = String(value).trim();\n if (!raw) return \"\";\n const prefixed = raw.startsWith(\"/\") ? raw : `/${raw}`;\n const cleaned = prefixed.replace(/\\/+$/, \"\");\n return cleaned === \"/\" ? \"\" : cleaned;\n };\n try {\n if (typeof window !== \"undefined\" && window.CANOPY_BASE_PATH != null) {\n const candidate = normalize(window.CANOPY_BASE_PATH);\n if (candidate || candidate === \"\") return candidate;\n }\n } catch (_) {}\n try {\n if (typeof globalThis !== \"undefined\" && globalThis.CANOPY_BASE_PATH != null) {\n const candidate = normalize(globalThis.CANOPY_BASE_PATH);\n if (candidate || candidate === \"\") return candidate;\n }\n } catch (_) {}\n try {\n if (typeof process !== \"undefined\" && process.env && process.env.CANOPY_BASE_PATH) {\n const candidate = normalize(process.env.CANOPY_BASE_PATH);\n if (candidate || candidate === \"\") return candidate;\n }\n } catch (_) {}\n return \"\";\n}\n\nfunction withBasePath(href) {\n try {\n const raw = typeof href === \"string\" ? href.trim() : \"\";\n if (!raw) return raw;\n if (/^(?:[a-z][a-z0-9+.-]*:|\\/\\/|#)/i.test(raw)) return raw;\n if (!raw.startsWith(\"/\")) return raw;\n const base = readBasePath();\n if (!base || base === \"/\") return raw;\n if (raw === base || raw.startsWith(`${base}/`)) return raw;\n return `${base}${raw}`;\n } catch (_) {\n return href;\n }\n}\n\nfunction normalizeLocales(locales) {\n if (!Array.isArray(locales)) return [];\n const normalized = locales\n .map((entry, index) => {\n if (!entry || typeof entry !== \"object\") return null;\n const lang = typeof entry.lang === \"string\" ? entry.lang.trim() : \"\";\n if (!lang) return null;\n const label =\n typeof entry.label === \"string\" && entry.label.trim()\n ? entry.label.trim()\n : lang.toUpperCase();\n return {lang, label, default: entry.default === true, index};\n })\n .filter(Boolean);\n if (!normalized.length) return [];\n const explicitDefault = normalized.find((item) => item.default);\n if (explicitDefault) {\n normalized.forEach((item) => {\n item.default = item.index === explicitDefault.index;\n });\n } else {\n normalized[0].default = true;\n }\n return normalized.map(({index, ...rest}) => rest);\n}\n\nfunction splitHref(href = \"/\") {\n try {\n if (/^[a-z][a-z0-9+.-]*:/i.test(href)) {\n const url = new URL(href);\n return {\n pathname: url.pathname || \"/\",\n suffix: `${url.search || \"\"}${url.hash || \"\"}`,\n };\n }\n } catch (_) {}\n const raw = typeof href === \"string\" ? href : String(href || \"/\");\n const match = raw.match(/^[^?#]+/);\n const pathname = match ? match[0] : \"/\";\n const suffix = raw.slice(pathname.length);\n return {\n pathname: pathname || \"/\",\n suffix,\n };\n}\n\nfunction normalizePathname(pathname = \"/\") {\n if (!pathname) return \"/\";\n const trimmed = pathname.trim();\n if (!trimmed) return \"/\";\n if (!trimmed.startsWith(\"/\")) return `/${trimmed}`;\n return trimmed === \"/\" ? \"/\" : `/${trimmed.replace(/^\\/+/, \"\")}`;\n}\n\nfunction stripLocaleFromPath(pathname, locales, defaultLocale) {\n const normalizedPath = normalizePathname(pathname);\n const segments = normalizedPath.replace(/^\\/+/, \"\").split(\"/\");\n const first = segments[0] || \"\";\n const match = locales.find((loc) => loc.lang === first);\n if (match && match.lang !== defaultLocale.lang) {\n segments.shift();\n const remainder = segments.join(\"/\");\n return {\n locale: match,\n pathname: remainder ? `/${remainder}` : \"/\",\n };\n }\n return {locale: defaultLocale, pathname: normalizedPath};\n}\n\nfunction buildLocaleHref(locale, basePath, suffix, defaultLocale) {\n const normalizedBase = normalizePathname(basePath);\n const needsPrefix = locale.lang !== defaultLocale.lang;\n const prefixed = needsPrefix\n ? `/${locale.lang}${normalizedBase === \"/\" ? \"\" : normalizedBase}`\n : normalizedBase;\n const href = withBasePath(prefixed || \"/\");\n return `${href}${suffix || \"\"}`;\n}\n\nexport function buildLanguageToggleConfig(toggle, page) {\n if (!toggle || !Array.isArray(toggle.locales)) return null;\n const locales = normalizeLocales(toggle.locales);\n if (locales.length <= 1) return null;\n const defaultLocale = locales.find((loc) => loc.default) || locales[0];\n const pageHref = page && page.href ? page.href : \"/\";\n const {pathname} = splitHref(pageHref);\n const {locale: activeLocale} = stripLocaleFromPath(\n pathname,\n locales,\n defaultLocale,\n );\n const homePathname = \"/\";\n const homeSuffix = \"\";\n const messageMap = toggle && toggle.messages ? toggle.messages : {};\n const defaultCopy = messageMap.__default || {};\n const localeCopy = messageMap[activeLocale.lang] || null;\n const fallbackLabel = defaultCopy.label || \"Language\";\n const label =\n (localeCopy && localeCopy.label) || fallbackLabel;\n const links = locales.map((locale) => ({\n lang: locale.lang,\n label: locale.label || locale.lang.toUpperCase(),\n href: buildLocaleHref(locale, homePathname, homeSuffix, defaultLocale),\n isActive: locale.lang === activeLocale.lang,\n }));\n return {label, links};\n}\n\nexport function LanguageToggleControl({\n config,\n variant = \"inline\",\n className = \"\",\n showLabel = false,\n control = \"select\",\n}) {\n if (!config) return null;\n const classes = [\n \"canopy-language-toggle\",\n variant ? `canopy-language-toggle--${variant}` : null,\n control ? `canopy-language-toggle--${control}` : null,\n className,\n ]\n .filter(Boolean)\n .join(\" \")\n .trim();\n const ariaLabel = config.label || \"Language\";\n const resolvedControl = control === \"list\" ? \"list\" : \"select\";\n const selectId =\n typeof React.useId === \"function\" && resolvedControl === \"select\"\n ? React.useId()\n : undefined;\n const links = Array.isArray(config.links) ? config.links : [];\n if (!links.length) return null;\n const activeLink = links.find((link) => link.isActive);\n const fallbackHref = links[0].href;\n const selectedHref = activeLink ? activeLink.href : fallbackHref;\n const navigate = React.useCallback((href) => {\n if (!href) return;\n try {\n if (typeof window !== \"undefined\" && window.location) {\n if (typeof window.location.assign === \"function\") {\n window.location.assign(href);\n } else {\n window.location.href = href;\n }\n return;\n }\n } catch (_) {}\n try {\n if (typeof document !== \"undefined\" && document.location) {\n document.location.href = href;\n }\n } catch (_) {}\n }, []);\n const handleSelectChange = React.useCallback(\n (event) => {\n if (!event || !event.target) return;\n const nextHref = event.target.value;\n if (!nextHref || nextHref === selectedHref) return;\n navigate(nextHref);\n },\n [navigate, selectedHref],\n );\n const labelElement =\n showLabel && config.label\n ? resolvedControl === \"select\"\n ? (\n <label\n className=\"canopy-language-toggle__label\"\n htmlFor={selectId}\n >\n {config.label}\n </label>\n )\n : (\n <span className=\"canopy-language-toggle__label\">\n {config.label}\n </span>\n )\n : null;\n return (\n <div className={classes || undefined}>\n {labelElement}\n {resolvedControl === \"select\" ? (\n <div className=\"canopy-language-toggle__select\">\n <select\n id={selectId}\n className=\"canopy-language-toggle__select-input\"\n value={selectedHref}\n onChange={handleSelectChange}\n aria-label={ariaLabel}\n data-canopy-language-select=\"true\"\n >\n {links.map((link) => (\n <option\n key={link.lang}\n value={link.href}\n data-lang={link.lang}\n data-canopy-language-option=\"true\"\n >\n {link.label}\n </option>\n ))}\n </select>\n </div>\n ) : (\n <nav className=\"canopy-language-toggle__nav\" aria-label={ariaLabel}>\n <ul className=\"canopy-language-toggle__list\" role=\"list\">\n {links.map((link) => (\n <li key={link.lang}>\n <button\n type=\"button\"\n className=\"canopy-language-toggle__button\"\n data-active={link.isActive ? \"true\" : undefined}\n aria-pressed={link.isActive ? \"true\" : \"false\"}\n data-canopy-language-button=\"true\"\n data-href={link.href}\n onClick={() => navigate(link.href)}\n >\n {link.label}\n </button>\n </li>\n ))}\n </ul>\n </nav>\n )}\n <LanguageToggleRuntime />\n </div>\n );\n}\n\nfunction LanguageToggleRuntime() {\n const code = `\n(function () {\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n if (window.__CANOPY_LANGUAGE_TOGGLE_INIT__) return;\n window.__CANOPY_LANGUAGE_TOGGLE_INIT__ = true;\n\n function navigate(href) {\n if (!href) return;\n try {\n if (window.location && typeof window.location.assign === 'function') {\n window.location.assign(href);\n } else if (window.location) {\n window.location.href = href;\n }\n } catch (_) {}\n }\n\n function bindSelect(select) {\n if (!select || select.dataset.canopyLanguageBound === 'true') return;\n select.dataset.canopyLanguageBound = 'true';\n select.addEventListener('change', function (event) {\n var target = event && event.target ? event.target : select;\n var href = target && target.value;\n if (!href || href === '#') return;\n navigate(href);\n });\n }\n\n function bindButtons(root) {\n var buttons = root.querySelectorAll('[data-canopy-language-button]');\n Array.prototype.forEach.call(buttons, function (btn) {\n if (!btn || btn.dataset.canopyLanguageBound === 'true') return;\n btn.dataset.canopyLanguageBound = 'true';\n btn.addEventListener('click', function (event) {\n event.preventDefault();\n var href = btn.getAttribute('data-href');\n navigate(href);\n });\n });\n }\n\n function scan(root) {\n if (!root) root = document;\n var selects = root.querySelectorAll('[data-canopy-language-select]');\n Array.prototype.forEach.call(selects, bindSelect);\n bindButtons(root);\n }\n\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', function () {\n scan(document);\n });\n } else {\n scan(document);\n }\n})();\n `;\n return <script dangerouslySetInnerHTML={{__html: code}} />;\n}\n", "import React from 'react';\n\nexport default function CanopyFooter({ className = '', children }) {\n const footerClassName = ['canopy-footer', className].filter(Boolean).join(' ');\n\n return (\n <footer className={footerClassName}>\n <div className=\"canopy-footer__inner\">{children}</div>\n </footer>\n );\n}\n", "import React from \"react\";\n\nexport default function TeaserCard({\n href = \"\",\n title = \"\",\n metadata = [],\n summary = \"\",\n thumbnail = null,\n type = \"work\",\n className = \"\",\n ...rest\n}) {\n const Tag = href ? \"a\" : \"div\";\n const classes = [\n \"canopy-card\",\n \"canopy-card--teaser\",\n \"canopy-search-teaser__item\",\n \"canopy-teaser-card\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n const showThumb = type === \"work\" && thumbnail;\n const metaLine = (\n Array.isArray(metadata) && metadata.length\n ? metadata.filter(Boolean)\n : summary\n ? [summary]\n : []\n )\n .filter(Boolean)\n .slice(0, 2)\n .join(\" \u2022 \");\n\n return (\n <Tag\n className={classes}\n href={href || undefined}\n data-canopy-item={href ? \"\" : undefined}\n {...rest}\n >\n {showThumb ? (\n <div className=\"canopy-search-teaser__thumb\">\n <img\n src={thumbnail}\n alt=\"\"\n aria-hidden=\"true\"\n loading=\"lazy\"\n className=\"canopy-search-teaser__thumb-img\"\n />\n </div>\n ) : null}\n <div className=\"canopy-search-teaser__text\">\n <span className=\"canopy-search-teaser__title\">\n {title || href || 'Untitled'}\n </span>\n {metaLine ? (\n <span className=\"canopy-search-teaser__meta\">{metaLine}</span>\n ) : null}\n </div>\n </Tag>\n );\n}\n", "import React from 'react';\n\nconst GA_HOST = 'https://www.googletagmanager.com/gtag/js';\n\nexport default function GoogleAnalytics({ id }) {\n if (!id) return null;\n\n const inlineConfig = `\n window.dataLayer = window.dataLayer || [];\n function gtag(){window.dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', '${id}');\n `;\n\n return (\n <>\n <script async src={`${GA_HOST}?id=${encodeURIComponent(id)}`}></script>\n <script dangerouslySetInnerHTML={{ __html: inlineConfig }} />\n </>\n );\n}\n", "import React from \"react\";\n\nexport default function Container({\n className = \"\",\n variant = \"content\",\n children,\n ...rest\n}) {\n const variantClass = variant === \"wide\" ? \"max-w-wide\" : \"max-w-content\";\n const classes = [\"mx-auto\", variantClass, \"w-full\", className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n className={classes}\n {...rest}\n style={{...rest.style, padding: \"1.618rem\"}}\n >\n {children}\n </div>\n );\n}\n", "import React, { useEffect, useRef, useState } from \"react\";\n\nconst DEFAULT_CARD_ASPECT_RATIO = 4 / 3; // match ReferencedItems proportions\n\n/**\n * Card\n *\n * Renders an anchor wrapping a figure with an image and caption.\n * Minimal styling; consumers can override via className/style.\n *\n * Props:\n * - href: string (required) \u2014 link target\n * - src: string (optional) \u2014 image source\n * - alt: string (optional) \u2014 image alt text (falls back to title)\n * - title: string (optional) \u2014 primary caption text\n * - subtitle: string (optional) \u2014 secondary caption text\n * - className: string (optional)\n * - style: object (optional)\n * - children: ReactNode (optional) \u2014 appended inside figcaption\n */\nexport default function Card({\n href,\n src,\n alt,\n title,\n subtitle,\n // Optional intrinsic dimensions or aspect ratio to compute a responsive height\n imgWidth,\n imgHeight,\n aspectRatio,\n className,\n style,\n children,\n lazy = true,\n ...rest\n}) {\n const containerRef = useRef(null);\n const isBrowser = typeof window !== \"undefined\";\n const supportsIntersectionObserver =\n typeof IntersectionObserver === \"function\";\n const shouldRenderImmediately =\n !lazy || !isBrowser || !supportsIntersectionObserver;\n const [inView, setInView] = useState(shouldRenderImmediately);\n const [imageLoaded, setImageLoaded] = useState(shouldRenderImmediately);\n\n /**\n * Use IntersectionObserver to detect when the card enters the viewport.\n * When in view, setInView(true) to trigger image loading.\n * If IntersectionObserver is not supported, default to inView=true.\n */\n useEffect(() => {\n if (!lazy) return;\n if (!containerRef.current) return;\n if (!supportsIntersectionObserver) {\n setInView(true);\n return;\n }\n const el = containerRef.current;\n const obs = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n setInView(true);\n try {\n obs.unobserve(el);\n } catch (_) {}\n break;\n }\n }\n },\n { root: null, rootMargin: \"100px\", threshold: 0.1 }\n );\n try {\n obs.observe(el);\n } catch (_) {}\n return () => {\n try {\n obs.disconnect();\n } catch (_) {}\n };\n }, [lazy, supportsIntersectionObserver]);\n\n /**\n * Calculate aspect ratio and padding percent for responsive image container.\n */\n const w = Number(imgWidth);\n const h = Number(imgHeight);\n const hasAspectRatio =\n Number.isFinite(Number(aspectRatio)) && Number(aspectRatio) > 0;\n const hasDimensions =\n Number.isFinite(w) && w > 0 && Number.isFinite(h) && h > 0;\n const ratio = hasAspectRatio\n ? Number(aspectRatio)\n : hasDimensions\n ? w / h\n : src\n ? DEFAULT_CARD_ASPECT_RATIO\n : undefined;\n const paddingPercent = ratio ? 100 / ratio : 100;\n\n /**\n * Caption element (figcaption), rendered if title, subtitle, or children are provided.\n */\n const caption = (\n <figcaption>\n {title && <span>{title}</span>}\n {subtitle && <span>{subtitle}</span>}\n {children}\n </figcaption>\n );\n\n return (\n <a\n href={href}\n className={[\"canopy-card\", className].filter(Boolean).join(\" \")}\n style={style}\n ref={containerRef}\n data-aspect-ratio={ratio}\n data-in-view={inView ? \"true\" : \"false\"}\n data-image-loaded={imageLoaded ? \"true\" : \"false\"}\n {...rest}\n >\n <figure>\n {src ? (\n ratio ? (\n <div\n className=\"canopy-card-media\"\n style={{ \"--canopy-card-padding\": `${paddingPercent}%` }}\n >\n {inView ? (\n <img\n src={src}\n alt={alt || title || \"\"}\n aria-hidden={!alt && !title ? \"true\" : undefined}\n loading=\"lazy\"\n onLoad={() => setImageLoaded(true)}\n onError={() => setImageLoaded(true)}\n />\n ) : null}\n </div>\n ) : (\n <img\n src={src}\n alt={alt || title || \"\"}\n aria-hidden={!alt && !title ? \"true\" : undefined}\n loading=\"lazy\"\n onLoad={() => setImageLoaded(true)}\n onError={() => setImageLoaded(true)}\n className=\"canopy-card-image\"\n />\n )\n ) : null}\n {caption}\n </figure>\n </a>\n );\n}\n", "import React from \"react\";\nimport navigationHelpers from \"../../../lib/components/navigation.js\";\nimport Card from \"../layout/Card.jsx\";\n\nfunction useReferencedItems(itemsProp) {\n if (Array.isArray(itemsProp)) return itemsProp;\n const PageContext =\n navigationHelpers && typeof navigationHelpers.getPageContext === \"function\"\n ? navigationHelpers.getPageContext()\n : null;\n if (!PageContext) return [];\n const context = React.useContext(PageContext);\n const items = context && context.page ? context.page.referencedItems : null;\n return Array.isArray(items) ? items : [];\n}\n\nexport default function ReferencedItems({\n items: itemsProp,\n emptyLabel = null,\n className = \"\",\n children,\n ...rest\n}) {\n const items = useReferencedItems(itemsProp);\n const hasItems = items.length > 0;\n\n if (!hasItems) {\n if (!emptyLabel) return null;\n const emptyClass = [\n \"referenced-items\",\n \"referenced-items--empty\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n return (\n <div className={emptyClass} {...rest}>\n {typeof emptyLabel === \"function\" ? emptyLabel() : emptyLabel}\n </div>\n );\n }\n\n const containerClassName = [\"referenced-items\", className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <section className={containerClassName} {...rest}>\n {children}\n <div className=\"referenced-items__grid\" role=\"list\">\n {items.map((item) => {\n if (!item) return null;\n const key = item.href || item.slug || item.id;\n return (\n <div className=\"referenced-items__item\" role=\"listitem\" key={key}>\n <Card\n href={item.href}\n src={item.thumbnail}\n imgWidth={item.thumbnailWidth}\n imgHeight={item.thumbnailHeight}\n title={item.title}\n subtitle={item.summary}\n className=\"referenced-items__card\"\n lazy={false}\n />\n </div>\n );\n })}\n </div>\n </section>\n );\n}\n", "import React from \"react\";\nimport navigationHelpers from \"../../../lib/components/navigation.js\";\nimport referenced from \"../../../lib/components/referenced.js\";\nimport {useLocale} from \"../locale/index.js\";\n\nfunction getPageContext() {\n if (!navigationHelpers || typeof navigationHelpers.getPageContext !== \"function\") {\n return null;\n }\n try {\n return navigationHelpers.getPageContext();\n } catch (_) {\n return null;\n }\n}\n\nfunction resolveReferences(manifestId, contextList) {\n if (contextList && contextList.length) return contextList;\n if (!manifestId) return [];\n try {\n return referenced.getReferencesForManifest(manifestId);\n } catch (_) {\n return [];\n }\n}\n\nexport default function References({\n id = \"\",\n title,\n emptyLabel = null,\n className = \"\",\n children,\n ...rest\n}) {\n const {getString} = useLocale();\n const resolvedTitle =\n title != null ? title : getString(\"common.misc.referenced_by\", \"Referenced by\");\n const PageContext = getPageContext();\n const context = PageContext ? React.useContext(PageContext) : null;\n const contextPage = context && context.page ? context.page : null;\n const manifestId = id || (contextPage && contextPage.manifestId) || \"\";\n const contextReferences = !id && contextPage && Array.isArray(contextPage.referencedBy)\n ? contextPage.referencedBy\n : null;\n const references = resolveReferences(manifestId, contextReferences);\n\n if (!manifestId) return null;\n\n const entries = references && references.length ? references : null;\n if (!entries || !entries.length) return null;\n\n const containerClass = [\"references\", className].filter(Boolean).join(\" \");\n\n return (\n <dl className={containerClass} {...rest}>\n <div className=\"references__group\">\n <dt>{resolvedTitle}</dt>\n {entries.map((entry) => (\n <dd key={entry.href} className=\"references__item\">\n <a href={entry.href}>{entry.title || entry.href}</a>\n </dd>\n ))}\n </div>\n </dl>\n );\n}\n", "import React from \"react\";\nimport slugify from \"slugify\";\nimport metadataIndexHelpers from \"../../../lib/components/metadata-index.js\";\n\nconst metadataModule =\n metadataIndexHelpers && typeof metadataIndexHelpers === \"object\"\n ? metadataIndexHelpers\n : null;\n\nconst SLUG_OPTIONS = {lower: true, strict: true, trim: true};\n\nfunction readGlobalIndex() {\n if (!metadataModule || typeof metadataModule.getMetadataIndex !== \"function\") {\n return [];\n }\n try {\n const data = metadataModule.getMetadataIndex();\n return Array.isArray(data) ? data : [];\n } catch (_) {\n return [];\n }\n}\n\nfunction normalizeEntries(entries) {\n const list = Array.isArray(entries) ? entries : [];\n const normalized = [];\n list.forEach((entry) => {\n if (!entry) return;\n const label = typeof entry.label === \"string\" ? entry.label.trim() : \"\";\n if (!label) return;\n const labelSlug = normalizeSlug(entry.slug, label);\n const valuesSource = Array.isArray(entry.values) ? entry.values : [];\n const seen = new Set();\n const values = [];\n valuesSource.forEach((valueEntry) => {\n let valueText = \"\";\n let valueSlug = \"\";\n if (valueEntry && typeof valueEntry === \"object\") {\n if (typeof valueEntry.value === \"string\") valueText = valueEntry.value;\n else if (valueEntry.value != null) valueText = String(valueEntry.value);\n if (typeof valueEntry.slug === \"string\") valueSlug = valueEntry.slug;\n } else if (valueEntry != null) {\n valueText = String(valueEntry);\n }\n const trimmed = valueText.trim();\n if (!trimmed) return;\n const slug = normalizeSlug(valueSlug, trimmed);\n const dedupeKey = `${labelSlug}__${slug}`;\n if (seen.has(dedupeKey)) return;\n seen.add(dedupeKey);\n values.push({value: trimmed, slug});\n });\n if (!values.length) return;\n normalized.push({label, slug: labelSlug, values});\n });\n return normalized;\n}\n\nfunction normalizeSlug(rawSlug, fallback) {\n const candidate = typeof rawSlug === \"string\" ? rawSlug.trim() : \"\";\n if (candidate) return candidate;\n try {\n const slug = slugify(fallback, SLUG_OPTIONS);\n if (slug) return slug;\n } catch (_) {}\n return String(fallback || \"\")\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n || String(fallback || \"\");\n}\n\nfunction filterByLabel(entries, label) {\n if (!label) return entries;\n const normalized = String(label || \"\").trim().toLowerCase();\n if (!normalized) return entries;\n return entries.filter((entry) => {\n const l = String(entry.label || \"\").trim().toLowerCase();\n const slug = String(entry.slug || \"\").trim().toLowerCase();\n return l === normalized || slug === normalized;\n });\n}\n\nlet cachedBasePath = null;\nfunction normalizeBasePath(value) {\n if (!value) return \"\";\n const raw = String(value).trim();\n if (!raw) return \"\";\n const prefixed = raw.startsWith(\"/\") ? raw : `/${raw}`;\n const cleaned = prefixed.replace(/\\/+$/, \"\");\n return cleaned === \"/\" ? \"\" : cleaned;\n}\n\nfunction readBasePath() {\n if (cachedBasePath !== null) return cachedBasePath;\n const candidates = [];\n try {\n if (typeof window !== \"undefined\" && window.CANOPY_BASE_PATH != null) {\n candidates.push(window.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n try {\n if (\n typeof globalThis !== \"undefined\" &&\n globalThis.CANOPY_BASE_PATH != null\n ) {\n candidates.push(globalThis.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n try {\n if (typeof process !== \"undefined\" && process.env) {\n candidates.push(process.env.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n for (const candidate of candidates) {\n const normalized = normalizeBasePath(candidate);\n if (normalized !== null) {\n cachedBasePath = normalized || \"\";\n return cachedBasePath;\n }\n }\n cachedBasePath = \"\";\n return cachedBasePath;\n}\n\nfunction withBasePath(href) {\n const base = readBasePath();\n const raw = typeof href === \"string\" ? href.trim() : \"\";\n if (!base) return raw || \"\";\n if (!raw) return base || \"\";\n if (raw.startsWith(\"/\")) return `${base}${raw}`;\n return `${base}/${raw}`;\n}\n\nfunction buildSearchHref(labelSlug, valueSlug) {\n if (!labelSlug || !valueSlug) return \"\";\n try {\n const params = new URLSearchParams();\n params.set(\"type\", \"work\");\n params.set(labelSlug, valueSlug);\n const url = `/search?${params.toString()}`;\n return withBasePath(url);\n } catch (_) {\n return \"\";\n }\n}\n\nconst INLINE_SCRIPT = `(() => {\n if (typeof window === 'undefined') return;\n if (window.__canopyIndexBound) return;\n window.__canopyIndexBound = true;\n document.addEventListener('click', (event) => {\n const btn = event.target && event.target.closest('[data-canopy-index-more]');\n if (!btn) return;\n const group = btn.closest('[data-canopy-index-group]');\n if (!group) return;\n const expanded = group.getAttribute('data-expanded') === '1';\n const nextExpanded = !expanded;\n group.setAttribute('data-expanded', nextExpanded ? '1' : '0');\n const hiddenItems = group.querySelectorAll('[data-canopy-index-hidden]');\n hiddenItems.forEach((node) => {\n node.hidden = !nextExpanded;\n });\n const moreLabel = btn.getAttribute('data-more-label') || 'Show more';\n const lessLabel = btn.getAttribute('data-less-label') || 'Show less';\n btn.textContent = nextExpanded ? lessLabel : moreLabel;\n });\n})()`;\n\nexport default function Index({\n label,\n metadata,\n limit = 15,\n expandLabel = \"Show more\",\n collapseLabel = \"Show less\",\n className = \"\",\n ...rest\n}) {\n const data = metadata ? normalizeEntries(metadata) : readGlobalIndex();\n const entries = filterByLabel(data, label);\n if (!entries.length) return null;\n const containerClass = [\"canopy-index\", className]\n .filter(Boolean)\n .join(\" \");\n return (\n <div className={containerClass} {...rest}>\n {entries.map((entry) => (\n <IndexGroup\n key={entry.slug || entry.label}\n label={entry.label}\n labelSlug={entry.slug}\n values={entry.values}\n limit={limit}\n expandLabel={expandLabel}\n collapseLabel={collapseLabel}\n />\n ))}\n <script\n data-canopy-index-script=\"\"\n dangerouslySetInnerHTML={{__html: INLINE_SCRIPT}}\n />\n </div>\n );\n}\n\nfunction IndexGroup({label, labelSlug, values, limit, expandLabel, collapseLabel}) {\n const parsedLimit = Number(limit);\n const clampedLimit = Number.isFinite(parsedLimit)\n ? Math.max(1, Math.floor(parsedLimit))\n : 15;\n const maxVisible = clampedLimit;\n const hasOverflow = values.length > maxVisible;\n const visibleValues = hasOverflow ? values.slice(0, maxVisible) : values;\n const hiddenValues = hasOverflow ? values.slice(maxVisible) : [];\n const labelCollapsed = typeof expandLabel === \"string\" && expandLabel.trim()\n ? expandLabel.trim()\n : \"Show more\";\n const labelExpanded = typeof collapseLabel === \"string\" && collapseLabel.trim()\n ? collapseLabel.trim()\n : \"Show less\";\n return (\n <dl className=\"canopy-index__group\" data-canopy-index-group=\"\" data-expanded=\"0\">\n <dt>{label}</dt>\n <div className=\"canopy-index__values\">\n {visibleValues.map((value) => {\n const href = buildSearchHref(labelSlug, value.slug);\n const key = `${labelSlug || label}-${value.slug || value.value}`;\n return (\n <dd key={key}>\n {href ? (\n <a\n href={href}\n data-canopy-index-link=\"\"\n data-index-label={labelSlug}\n data-index-value={value.slug}\n >\n {value.value}\n </a>\n ) : (\n value.value\n )}\n </dd>\n );\n })}\n {hiddenValues.map((value) => {\n const href = buildSearchHref(labelSlug, value.slug);\n const key = `${labelSlug || label}-hidden-${value.slug || value.value}`;\n return (\n <dd key={key} data-canopy-index-hidden=\"\" hidden>\n {href ? (\n <a\n href={href}\n data-canopy-index-link=\"\"\n data-index-label={labelSlug}\n data-index-value={value.slug}\n >\n {value.value}\n </a>\n ) : (\n value.value\n )}\n </dd>\n );\n })}\n </div>\n {hasOverflow && (\n <div className=\"canopy-index__more-wrapper\">\n <button\n type=\"button\"\n className=\"canopy-index__more\"\n data-canopy-index-more=\"\"\n data-more-label={labelCollapsed}\n data-less-label={labelExpanded}\n >\n {labelCollapsed}\n </button>\n </div>\n )}\n </dl>\n );\n}\n", "import React from 'react';\nimport bibliography from '../../../lib/components/bibliography.js';\n\nfunction resolveHeadingTag(tag, fallback) {\n if (typeof tag === 'string' && tag.trim()) return tag;\n if (typeof tag === 'function') return tag;\n return fallback;\n}\n\nfunction NoteBody({ note }) {\n if (!note) return null;\n if (note.html) {\n return (\n <div\n className=\"bibliography__note-body\"\n dangerouslySetInnerHTML={{ __html: note.html }}\n />\n );\n }\n if (note.text) {\n return <div className=\"bibliography__note-body\">{note.text}</div>;\n }\n return null;\n}\n\nexport default function Bibliography({\n className = '',\n pageHeadingTag = 'h3',\n} = {}) {\n let entries = [];\n try {\n entries = bibliography?.getBibliographyEntries?.() || [];\n } catch (_) {\n entries = [];\n }\n if (!entries.length) return null;\n\n const PageHeadingTag = resolveHeadingTag(pageHeadingTag, 'h3');\n const rootClass = ['bibliography', className].filter(Boolean).join(' ');\n\n return (\n <section className={rootClass}>\n <div className=\"bibliography__pages\">\n {entries.map((entry) => {\n const key = entry.href || entry.relativePath || entry.title;\n const pageTitle = entry.title || entry.href;\n return (\n <article key={key} className=\"bibliography__page\">\n <header className=\"bibliography__page-header\">\n {pageTitle ? (\n <PageHeadingTag className=\"bibliography__page-title\">\n {pageTitle}\n </PageHeadingTag>\n ) : null}\n {entry.href ? (\n <a className=\"bibliography__page-link\" href={entry.href}>\n {entry.href}\n </a>\n ) : null}\n </header>\n <ol className=\"bibliography__notes\">\n {(entry.footnotes || []).map((note, idx) => {\n const noteKey = `${key || 'entry'}-${note.identifier || idx}`;\n return (\n <li key={noteKey} className=\"bibliography__note\">\n {note.identifier ? (\n <span className=\"bibliography__note-label\">{note.identifier}</span>\n ) : null}\n <NoteBody note={note} />\n </li>\n );\n })}\n </ol>\n </article>\n );\n })}\n </div>\n </section>\n );\n}\n", "import React from \"react\";\nimport ReactDOMServer from \"react-dom/server\";\nimport Timeline from \"./Timeline.jsx\";\nimport TimelinePoint from \"./TimelinePoint.jsx\";\nimport {\n createLocale,\n buildPointMetadata,\n} from \"./date-utils.js\";\nimport {\n useReferencedManifestMap,\n resolveReferencedManifests,\n} from \"../../utils/manifestReferences.js\";\n\nfunction normalizeReactKey(value) {\n if (value == null) return \"\";\n const str = String(value);\n if (/^\\.[0-9]+$/.test(str)) return \"\";\n if (str.startsWith(\".$\")) return str.slice(2);\n if (str.startsWith(\".\")) return str.slice(1);\n return str;\n}\n\nfunction normalizeResource(resource, index) {\n if (!resource) return null;\n const href = resource.href || resource.id || \"\";\n const label = resource.label || resource.title || href || `Resource ${index + 1}`;\n return {\n id: resource.id || href || `timeline-resource-${index}`,\n href,\n label,\n type: resource.type || \"IIIF\",\n thumbnail: resource.thumbnail || null,\n summary: resource.summary || null,\n };\n}\n\nfunction normalizePoint(child, index, options) {\n if (!React.isValidElement(child)) return null;\n if (child.type !== TimelinePoint && child.type?.displayName !== \"TimelinePoint\")\n return null;\n const props = child.props || {};\n const id = props.id || `timeline-point-${index}`;\n const normalizedNodeKey = normalizeReactKey(child.key);\n const keyValueProp =\n props.timelineKey ??\n props.pointKey ??\n props.keyValue ??\n props.group ??\n props.category ??\n null;\n const normalizedKeyValue =\n keyValueProp != null && keyValueProp !== \"\"\n ? String(keyValueProp).trim()\n : normalizedNodeKey;\n const granularity =\n props.precision ||\n props.granularity ||\n (options && options.range && options.range.granularity) ||\n \"year\";\n const value =\n props.date ??\n props.value ??\n props.timestamp ??\n props.year ??\n props.label ??\n props.title;\n const meta = buildPointMetadata({\n value,\n granularity,\n locale: options.locale,\n });\n let detailsHtml = \"\";\n try {\n if (props.children) {\n detailsHtml = ReactDOMServer.renderToStaticMarkup(\n React.createElement(React.Fragment, null, props.children)\n );\n }\n } catch (_) {\n detailsHtml = \"\";\n }\n const resources = Array.isArray(props.iiifResources)\n ? props.iiifResources.map(normalizeResource).filter(Boolean)\n : [];\n const manifestValues = Array.isArray(props.referencedManifests)\n ? props.referencedManifests\n : props.manifest\n ? [props.manifest]\n : Array.isArray(props.manifests)\n ? props.manifests\n : [];\n const manifests = resolveReferencedManifests(manifestValues, options.manifestMap);\n return {\n id,\n title: props.title || props.label || `Point ${index + 1}`,\n summary: props.summary || props.description || \"\",\n description: props.description || \"\",\n highlight: props.highlight === true || props.highlight === \"true\",\n side: props.side || props.align || props.alignment || null,\n meta: {\n label: meta.label,\n timestamp: meta.timestamp,\n },\n detailsHtml,\n resources,\n manifests,\n keyValue: normalizedKeyValue,\n };\n}\n\nfunction serializeProps(props, payload, locale) {\n const clone = {};\n Object.keys(props || {}).forEach((key) => {\n if (key === \"children\") return;\n const value = props[key];\n if (typeof value === \"function\" || typeof value === \"symbol\") return;\n clone[key] = value;\n });\n clone.locale = locale;\n clone.__canopyTimeline = payload;\n return clone;\n}\n\nfunction serializeForScript(data) {\n try {\n return JSON.stringify(data).replace(/</g, \"\\\\u003c\");\n } catch (_) {\n return \"{}\";\n }\n}\n\nexport default function MdxTimeline({ children, ...rest }) {\n const localeValue = rest.locale || \"en-US\";\n const localeObj = createLocale(localeValue);\n const localeBase =\n typeof localeObj === \"string\" ? localeObj : localeObj.baseName || \"en-US\";\n const manifestMap = useReferencedManifestMap();\n const childArray = React.Children.toArray(children);\n const points = childArray\n .map((child, index) =>\n normalizePoint(child, index, {\n range: rest.range || {},\n locale: localeObj,\n manifestMap,\n })\n )\n .filter(Boolean);\n const payload = {\n points,\n locale: localeBase,\n range: rest.range || null,\n threshold: rest.threshold != null ? rest.threshold : null,\n steps: rest.steps != null ? rest.steps : null,\n };\n const json = serializeForScript(serializeProps(rest, payload, localeBase));\n return (\n <div data-canopy-timeline=\"1\">\n <Timeline {...rest} __canopyTimeline={payload} />\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{ __html: json }}\n />\n </div>\n );\n}\n", "import React from \"react\";\nimport {\n createLocale,\n normalizeRange,\n clampProgress,\n formatDateLabel,\n} from \"./date-utils.js\";\nimport TeaserCard from \"../../layout/TeaserCard.jsx\";\nimport ReferencedManifestCard from \"../../layout/ReferencedManifestCard.jsx\";\nimport {\n buildKeyLegend,\n normalizeKeyLegendEntries,\n} from \"../../utils/keyLegend.js\";\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\nconst DEFAULT_TRACK_HEIGHT = 640;\nconst MIN_HEIGHT_PER_POINT = 220;\nconst SCALE_MODES = {\n TIME: \"time\",\n UNIFORM: \"uniform\",\n};\n\nconst ALIGN_OPTIONS = {\n CENTER: \"center\",\n LEFT: \"left\",\n RIGHT: \"right\",\n};\n\nfunction getThresholdMs(threshold, granularity) {\n const value = Number(threshold);\n if (!Number.isFinite(value) || value <= 0) return 0;\n if (granularity === \"day\") return value * DAY_MS;\n if (granularity === \"month\") return value * 30 * DAY_MS;\n return value * 365 * DAY_MS;\n}\n\nfunction buildGroupedEntries(points, thresholdMs, options) {\n if (!Array.isArray(points) || !points.length) return [];\n if (!thresholdMs) return points.map((point) => ({type: \"point\", point}));\n\n const entries = [];\n let currentGroup = null;\n let groupCounter = 0;\n\n function flush() {\n if (!currentGroup) return;\n if (currentGroup.points.length > 1) {\n const firstPoint = currentGroup.points[0];\n entries.push({\n type: \"group\",\n id: `canopy-timeline-group-${groupCounter}-${currentGroup.start}`,\n points: currentGroup.points,\n progress: firstPoint.progress,\n side: firstPoint.side,\n label: formatGroupLabel(currentGroup.start, currentGroup.end, options),\n count: currentGroup.points.length,\n });\n groupCounter += 1;\n } else {\n entries.push({type: \"point\", point: currentGroup.points[0]});\n }\n currentGroup = null;\n }\n\n points.forEach((point) => {\n const timestamp = point && point.meta ? point.meta.timestamp : null;\n if (!Number.isFinite(timestamp)) {\n flush();\n if (point) entries.push({type: \"point\", point});\n return;\n }\n if (!currentGroup) {\n currentGroup = {\n points: [point],\n start: timestamp,\n end: timestamp,\n last: timestamp,\n };\n return;\n }\n const diff = Math.abs(timestamp - currentGroup.last);\n if (diff <= thresholdMs) {\n currentGroup.points.push(point);\n currentGroup.last = timestamp;\n if (timestamp < currentGroup.start) currentGroup.start = timestamp;\n if (timestamp > currentGroup.end) currentGroup.end = timestamp;\n } else {\n flush();\n currentGroup = {\n points: [point],\n start: timestamp,\n end: timestamp,\n last: timestamp,\n };\n }\n });\n\n flush();\n return entries;\n}\n\nfunction formatGroupLabel(startTs, endTs, options) {\n if (!Number.isFinite(startTs) || !Number.isFinite(endTs)) return \"\";\n const startLabel = formatDateLabel(new Date(startTs), options);\n const endLabel = formatDateLabel(new Date(endTs), options);\n if (!startLabel || !endLabel) return \"\";\n return startLabel === endLabel ? startLabel : `${startLabel} \u2013 ${endLabel}`;\n}\n\nfunction deriveRangeOverrides(points, range) {\n const timestamps = points\n .map((point) => (point && point.meta ? point.meta.timestamp : null))\n .filter((timestamp) => Number.isFinite(timestamp));\n if (!timestamps.length) return range || {};\n const earliest = Math.min(...timestamps);\n const latest = Math.max(...timestamps);\n return {\n ...range,\n start: range && range.start ? range.start : new Date(earliest),\n end: range && range.end ? range.end : new Date(latest),\n };\n}\n\nfunction getActivePointId(points) {\n const highlighted = points.find((point) => point && point.highlight);\n if (highlighted) return highlighted.id;\n return points.length ? points[0].id : null;\n}\n\nfunction formatRangeLabel(rangeInfo) {\n if (!rangeInfo) return \"\";\n const startLabel = formatDateLabel(rangeInfo.startDate, {\n granularity: rangeInfo.granularity,\n locale: rangeInfo.locale,\n });\n const endLabel = formatDateLabel(rangeInfo.endDate, {\n granularity: rangeInfo.granularity,\n locale: rangeInfo.locale,\n });\n if (!startLabel || !endLabel) return \"\";\n if (startLabel === endLabel) return startLabel;\n return `${startLabel} \u2013 ${endLabel}`;\n}\n\nfunction sanitizePoints(points) {\n if (!Array.isArray(points)) return [];\n return points\n .map((point, index) => {\n if (!point) return null;\n const meta = point.meta || {};\n const timestamp = Number(meta.timestamp);\n const manifests = Array.isArray(point.manifests)\n ? point.manifests\n .map((manifest) => (manifest ? {...manifest} : null))\n .filter(Boolean)\n : [];\n const resources = Array.isArray(point.resources)\n ? point.resources.filter(Boolean)\n : [];\n return {\n ...point,\n id: point.id || `timeline-point-${index}`,\n title: point.title || point.label || `Point ${index + 1}`,\n summary: point.summary || point.description || \"\",\n detailsHtml: point.detailsHtml || \"\",\n highlight: !!point.highlight,\n side:\n point.side === \"left\" || point.side === \"right\" ? point.side : null,\n meta: {\n label: meta.label || \"\",\n timestamp: Number.isFinite(timestamp) ? timestamp : null,\n },\n keyValue: point.keyValue ? String(point.keyValue).trim() : \"\",\n manifests,\n resources,\n };\n })\n .filter(Boolean);\n}\n\nfunction resolveTrackHeight(height, pointCount) {\n const minimumPx = Math.max(\n DEFAULT_TRACK_HEIGHT,\n pointCount * MIN_HEIGHT_PER_POINT\n );\n const fallback = `${minimumPx}px`;\n if (height == null) return fallback;\n if (typeof height === \"number\") {\n const numeric = Number(height);\n if (Number.isFinite(numeric)) {\n return `${Math.max(numeric, pointCount * MIN_HEIGHT_PER_POINT)}px`;\n }\n return fallback;\n }\n if (typeof height === \"string\") {\n const trimmed = height.trim();\n if (!trimmed) return fallback;\n const numeric = Number(trimmed);\n if (Number.isFinite(numeric)) {\n return `${Math.max(numeric, pointCount * MIN_HEIGHT_PER_POINT)}px`;\n }\n return trimmed;\n }\n return fallback;\n}\n\nfunction TimelineConnector({side, isActive, highlight, color}) {\n const connectorClasses = [\n \"canopy-timeline__connector\",\n side === \"left\"\n ? \"canopy-timeline__connector--left\"\n : \"canopy-timeline__connector--right\",\n ]\n .filter(Boolean)\n .join(\" \");\n const dotClasses = [\n \"canopy-timeline__connector-dot\",\n highlight || isActive ? \"is-active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n const connectorStyle = color\n ? {\"--canopy-timeline-point-color\": color}\n : undefined;\n return (\n <span className={connectorClasses} aria-hidden=\"true\" style={connectorStyle}>\n {side === \"left\" ? (\n <>\n <span className=\"canopy-timeline__connector-line\" />\n <span className={dotClasses} />\n </>\n ) : (\n <>\n <span className={dotClasses} />\n <span className=\"canopy-timeline__connector-line\" />\n </>\n )}\n </span>\n );\n}\n\nfunction renderResourceSection(point) {\n if (!point) return null;\n const manifestCards = Array.isArray(point.manifests)\n ? point.manifests.filter(Boolean)\n : [];\n const legacyResources = Array.isArray(point.resources)\n ? point.resources.filter(Boolean)\n : [];\n if (!manifestCards.length && !legacyResources.length) return null;\n return (\n <div className=\"canopy-timeline__resources\">\n <div className=\"canopy-timeline__resources-list\">\n {manifestCards.map((manifest) => (\n <div key={manifest.id || manifest.href}>\n <ReferencedManifestCard manifest={manifest} />\n </div>\n ))}\n {legacyResources.map((resource, idx) => (\n <div key={resource.id || resource.href || `legacy-${idx}`}>\n <TeaserCard\n href={resource.href}\n title={resource.label || resource.title || resource.href}\n summary={resource.summary}\n thumbnail={resource.thumbnail}\n type={resource.type || \"resource\"}\n />\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nexport default function Timeline({\n className = \"\",\n title,\n description,\n range: rangeProp,\n locale: localeProp = \"en-US\",\n height = DEFAULT_TRACK_HEIGHT,\n threshold: thresholdProp = null,\n scale = SCALE_MODES.TIME,\n align = ALIGN_OPTIONS.CENTER,\n steps = null,\n points: pointsProp,\n keyConfig = [],\n timelineKey = [],\n legend = [],\n __canopyTimeline: payload = null,\n ...rest\n}) {\n const payloadPoints =\n payload && Array.isArray(payload.points) ? payload.points : null;\n const rawPoints = React.useMemo(() => {\n if (Array.isArray(pointsProp) && pointsProp.length) return pointsProp;\n if (payloadPoints && payloadPoints.length) return payloadPoints;\n return [];\n }, [pointsProp, payloadPoints]);\n\n const sanitizedPoints = React.useMemo(\n () => sanitizePoints(rawPoints),\n [rawPoints]\n );\n\n const resolvedKeyInput = React.useMemo(() => {\n if (Array.isArray(keyConfig) && keyConfig.length) return keyConfig;\n if (Array.isArray(timelineKey) && timelineKey.length) return timelineKey;\n if (Array.isArray(legend) && legend.length) return legend;\n return [];\n }, [keyConfig, timelineKey, legend]);\n\n const normalizedLegendConfig = React.useMemo(\n () => normalizeKeyLegendEntries(resolvedKeyInput),\n [resolvedKeyInput]\n );\n\n const timelineKeyData = React.useMemo(\n () => buildKeyLegend(normalizedLegendConfig),\n [normalizedLegendConfig]\n );\n const timelineKeyGroups = timelineKeyData.groups;\n const timelineKeyLookup = timelineKeyData.lookup;\n\n const getLegendMeta = React.useCallback(\n (value) => {\n if (!value || !timelineKeyLookup || typeof timelineKeyLookup.get !== \"function\") {\n return null;\n }\n try {\n return timelineKeyLookup.get(value) || null;\n } catch (_) {\n return null;\n }\n },\n [timelineKeyLookup]\n );\n\n const localeValue = payload && payload.locale ? payload.locale : localeProp;\n const baseLocale = React.useMemo(\n () => createLocale(localeValue),\n [localeValue]\n );\n\n const rangeInput = payload && payload.range ? payload.range : rangeProp || {};\n const rangeOverrides = React.useMemo(\n () => deriveRangeOverrides(sanitizedPoints, rangeInput),\n [sanitizedPoints, rangeInput]\n );\n const effectiveRange = React.useMemo(\n () =>\n normalizeRange({\n ...rangeOverrides,\n locale: baseLocale,\n }),\n [rangeOverrides, baseLocale]\n );\n\n const spanStart = effectiveRange.startDate.getTime();\n const span = effectiveRange.span;\n const scaleValue =\n scale === SCALE_MODES.UNIFORM ? SCALE_MODES.UNIFORM : SCALE_MODES.TIME;\n const useUniformSpacing = scaleValue === SCALE_MODES.UNIFORM;\n const alignValue =\n align === ALIGN_OPTIONS.LEFT\n ? ALIGN_OPTIONS.LEFT\n : align === ALIGN_OPTIONS.RIGHT\n ? ALIGN_OPTIONS.RIGHT\n : ALIGN_OPTIONS.CENTER;\n const enforcedSide =\n alignValue === ALIGN_OPTIONS.LEFT\n ? \"right\"\n : alignValue === ALIGN_OPTIONS.RIGHT\n ? \"left\"\n : null;\n\n const pointsWithPosition = React.useMemo(() => {\n if (!sanitizedPoints.length) return [];\n return sanitizedPoints.map((point, index) => {\n const timestamp = point.meta.timestamp;\n const fallbackProgress =\n sanitizedPoints.length > 1 ? index / (sanitizedPoints.length - 1) : 0;\n const progress = useUniformSpacing\n ? fallbackProgress\n : Number.isFinite(timestamp)\n ? clampProgress((timestamp - spanStart) / span)\n : fallbackProgress;\n const side =\n enforcedSide || point.side || (index % 2 === 0 ? \"left\" : \"right\");\n const keyMeta = point.keyValue ? getLegendMeta(point.keyValue) : null;\n return {\n ...point,\n progress,\n side,\n keyMeta,\n };\n });\n }, [\n sanitizedPoints,\n spanStart,\n span,\n useUniformSpacing,\n enforcedSide,\n getLegendMeta,\n ]);\n\n const [activeId, setActiveId] = React.useState(() =>\n getActivePointId(pointsWithPosition)\n );\n\n React.useEffect(() => {\n setActiveId(getActivePointId(pointsWithPosition));\n }, [pointsWithPosition]);\n\n const thresholdValue =\n typeof thresholdProp === \"number\"\n ? thresholdProp\n : payload && payload.threshold != null\n ? payload.threshold\n : null;\n const stepsValue =\n typeof steps === \"number\"\n ? Number(steps)\n : payload && typeof payload.steps === \"number\"\n ? Number(payload.steps)\n : null;\n\n const thresholdMs = React.useMemo(\n () => getThresholdMs(thresholdValue, effectiveRange.granularity),\n [thresholdValue, effectiveRange.granularity]\n );\n\n const groupedEntries = React.useMemo(\n () =>\n buildGroupedEntries(pointsWithPosition, thresholdMs, {\n granularity: effectiveRange.granularity,\n locale: baseLocale,\n }),\n [pointsWithPosition, thresholdMs, effectiveRange.granularity, baseLocale]\n );\n\n const [expandedGroupIds, setExpandedGroupIds] = React.useState(\n () => new Set()\n );\n\n React.useEffect(() => {\n setExpandedGroupIds((prev) => {\n if (!prev || prev.size === 0) return prev;\n const validIds = new Set(\n groupedEntries\n .filter((entry) => entry.type === \"group\")\n .map((entry) => entry.id)\n );\n const next = new Set();\n let changed = false;\n prev.forEach((id) => {\n if (validIds.has(id)) next.add(id);\n else changed = true;\n });\n return changed ? next : prev;\n });\n }, [groupedEntries]);\n\n const toggleGroup = React.useCallback((groupId) => {\n setExpandedGroupIds((prev) => {\n const next = new Set(prev || []);\n if (next.has(groupId)) next.delete(groupId);\n else next.add(groupId);\n return next;\n });\n }, []);\n\n const trackHeight = resolveTrackHeight(height, pointsWithPosition.length);\n const containerClasses = [\n \"canopy-timeline\",\n alignValue ? `canopy-timeline--align-${alignValue}` : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n const rangeLabel = formatRangeLabel(effectiveRange);\n const hasKeyLegend = timelineKeyGroups.length > 0;\n\n function renderPointEntry(point) {\n if (!point) return null;\n const wrapperClasses = [\n \"canopy-timeline__point-wrapper\",\n point.side === \"left\"\n ? \"canopy-timeline__point-wrapper--left\"\n : \"canopy-timeline__point-wrapper--right\",\n ]\n .filter(Boolean)\n .join(\" \");\n const wrapperStyle = {top: `${point.progress * 100}%`};\n const cardClasses = [\n \"canopy-timeline__point\",\n point.id === activeId ? \"is-active\" : \"\",\n point.highlight ? \"is-highlighted\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n const pointColor = point.keyMeta && point.keyMeta.color ? point.keyMeta.color : null;\n const connector = (\n <TimelineConnector\n side={point.side}\n isActive={point.id === activeId}\n highlight={point.highlight}\n color={pointColor}\n />\n );\n\n const body = (\n <div className=\"canopy-timeline__point-body\">\n <span className=\"canopy-timeline__point-date\">{point.meta.label}</span>\n <span className=\"canopy-timeline__point-title\">{point.title}</span>\n {point.summary ? (\n <span className=\"canopy-timeline__point-summary\">\n {point.summary}\n </span>\n ) : null}\n </div>\n );\n const resourceSection = renderResourceSection(point);\n\n return (\n <div\n key={point.id}\n className={wrapperClasses}\n style={wrapperStyle}\n role=\"listitem\"\n >\n {point.side === \"left\" ? (\n <>\n <div className={cardClasses}>\n {body}\n {resourceSection}\n </div>\n {connector}\n </>\n ) : (\n <>\n {connector}\n <div className={cardClasses}>\n {body}\n {resourceSection}\n </div>\n </>\n )}\n </div>\n );\n }\n\n function renderGroupEntry(entry) {\n const wrapperClasses = [\n \"canopy-timeline__point-wrapper\",\n entry.side === \"left\"\n ? \"canopy-timeline__point-wrapper--left\"\n : \"canopy-timeline__point-wrapper--right\",\n ]\n .filter(Boolean)\n .join(\" \");\n const wrapperStyle = {top: `${entry.progress * 100}%`};\n const isExpanded = expandedGroupIds.has(entry.id);\n const hasActivePoint = entry.points.some((point) => point.id === activeId);\n const groupKeyMeta = (() => {\n if (!entry.points || !entry.points.length) return null;\n const firstPoint = entry.points[0];\n if (!firstPoint || !firstPoint.keyValue) return null;\n const sameKey = entry.points.every(\n (point) => point && point.keyValue === firstPoint.keyValue\n );\n if (!sameKey) return null;\n return firstPoint.keyMeta || getLegendMeta(firstPoint.keyValue);\n })();\n const groupColor = groupKeyMeta && groupKeyMeta.color ? groupKeyMeta.color : null;\n const connector = (\n <TimelineConnector\n side={entry.side}\n isActive={hasActivePoint}\n highlight={hasActivePoint}\n color={groupColor}\n />\n );\n const groupClasses = [\n \"canopy-timeline__group\",\n isExpanded ? \"is-expanded\" : \"\",\n hasActivePoint ? \"is-active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n const countLabel = `${entry.count} event${entry.count > 1 ? \"s\" : \"\"}`;\n\n const header = (\n <div className=\"canopy-timeline__group-header\">\n <div className=\"canopy-timeline__group-summary\">\n <span className=\"canopy-timeline__point-date\">{entry.label}</span>\n <span className=\"canopy-timeline__group-count\">{countLabel}</span>\n </div>\n <button\n type=\"button\"\n className=\"canopy-timeline__group-toggle\"\n aria-expanded={isExpanded ? \"true\" : \"false\"}\n onClick={() => toggleGroup(entry.id)}\n >\n {isExpanded ? \"Hide details\" : \"Show details\"}\n </button>\n </div>\n );\n\n const groupPoints = isExpanded ? (\n <div className=\"canopy-timeline__group-points\">\n {entry.points.map((point) => (\n <button\n key={point.id}\n type=\"button\"\n className={[\n \"canopy-timeline__group-point\",\n point.id === activeId ? \"is-active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => setActiveId(point.id)}\n >\n <span className=\"canopy-timeline__point-date\">\n {point.meta.label}\n </span>\n <span className=\"canopy-timeline__group-point-title\">\n {point.title}\n </span>\n </button>\n ))}\n </div>\n ) : null;\n\n const groupCard = (\n <div className={groupClasses}>\n {header}\n {groupPoints}\n </div>\n );\n\n return (\n <div\n key={entry.id}\n className={wrapperClasses}\n style={wrapperStyle}\n role=\"listitem\"\n >\n {entry.side === \"left\" ? (\n <>\n {groupCard}\n {connector}\n </>\n ) : (\n <>\n {connector}\n {groupCard}\n </>\n )}\n </div>\n );\n }\n\n return (\n <section className={containerClasses} {...rest}>\n {title ? <h2 className=\"canopy-timeline__title\">{title}</h2> : null}\n {description ? (\n <p className=\"canopy-timeline__description\">{description}</p>\n ) : null}\n {rangeLabel ? (\n <p className=\"canopy-timeline__range\" aria-live=\"polite\">\n {rangeLabel}\n </p>\n ) : null}\n <div className=\"canopy-timeline__body\">\n <div\n className=\"canopy-timeline__list\"\n role=\"list\"\n style={{minHeight: trackHeight}}\n >\n <div className=\"canopy-timeline__spine\" aria-hidden=\"true\" />\n {renderSteps(stepsValue, effectiveRange)}\n {groupedEntries.map((entry) => {\n if (entry.type === \"group\") return renderGroupEntry(entry);\n return renderPointEntry(entry.point);\n })}\n </div>\n </div>\n {hasKeyLegend ? (\n <div className=\"canopy-timeline__key\" aria-label=\"Timeline key\">\n <ul className=\"canopy-timeline__key-list\">\n {timelineKeyGroups.map((group) => (\n <li\n key={group.keyValue || group.label}\n className=\"canopy-timeline__key-item\"\n >\n <span\n className=\"canopy-timeline__key-dot\"\n aria-hidden=\"true\"\n style={{backgroundColor: group.color || undefined}}\n />\n <span className=\"canopy-timeline__key-label\">{group.label}</span>\n </li>\n ))}\n </ul>\n </div>\n ) : null}\n </section>\n );\n}\n\nfunction renderSteps(stepSize, range) {\n if (!Number.isFinite(stepSize) || stepSize <= 0 || !range) return null;\n const startYear = range.startDate.getUTCFullYear();\n const endYear = range.endDate.getUTCFullYear();\n const markers = [];\n if (startYear < endYear) {\n markers.push(\n <span\n key=\"timeline-step-start\"\n className=\"canopy-timeline__step canopy-timeline__step--start\"\n style={{top: \"0%\"}}\n aria-hidden=\"true\"\n >\n <span className=\"canopy-timeline__step-line\" />\n <span className=\"canopy-timeline__step-label\">{startYear}</span>\n </span>\n );\n markers.push(\n <span\n key=\"timeline-step-end\"\n className=\"canopy-timeline__step canopy-timeline__step--end\"\n style={{top: \"100%\"}}\n aria-hidden=\"true\"\n >\n <span className=\"canopy-timeline__step-line\" />\n <span className=\"canopy-timeline__step-label\">{endYear}</span>\n </span>\n );\n }\n const baseYear = Math.ceil(startYear / stepSize) * stepSize;\n for (let year = baseYear; year <= endYear; year += stepSize) {\n const timestamp = Date.UTC(year, 0, 1);\n const progress = (timestamp - range.startDate.getTime()) / range.span;\n if (progress <= 0 || progress >= 1) continue;\n markers.push(\n <span\n key={`timeline-step-${year}`}\n className=\"canopy-timeline__step\"\n style={{top: `calc(${progress * 100}% - 0.5px)`}}\n aria-hidden=\"true\"\n >\n <span className=\"canopy-timeline__step-line\" />\n <span className=\"canopy-timeline__step-label\">{year}</span>\n </span>\n );\n }\n return markers.length ? markers : null;\n}\n", "const FALLBACK_LOCALE = (() => {\n try {\n return new Intl.Locale(\"en-US\");\n } catch (_) {\n return \"en-US\";\n }\n})();\n\nexport function createLocale(localeValue) {\n if (!localeValue) return FALLBACK_LOCALE;\n if (typeof Intl !== \"undefined\" && localeValue instanceof Intl.Locale)\n return localeValue;\n try {\n return new Intl.Locale(localeValue);\n } catch (_) {\n return FALLBACK_LOCALE;\n }\n}\n\nfunction parseMonthIndex(name = \"\", locale = FALLBACK_LOCALE) {\n const localeId =\n typeof locale === \"string\" ? locale : locale && locale.baseName\n ? locale.baseName\n : \"en-US\";\n const normalized = String(name || \"\")\n .trim()\n .toLocaleLowerCase(localeId);\n if (!normalized) return 0;\n const months = [\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"may\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n ];\n const idx = months.indexOf(normalized);\n return idx === -1 ? 0 : idx;\n}\n\nfunction parseStructuredInput(value) {\n if (!value || typeof value !== \"object\") return null;\n const {year, month, day} = value;\n if (!Number.isFinite(Number(year))) return null;\n const y = Number(year);\n const m = Number.isFinite(Number(month)) ? Number(month) - 1 : 0;\n const d = Number.isFinite(Number(day)) ? Number(day) : 1;\n return new Date(Date.UTC(y, Math.max(0, Math.min(11, m)), Math.max(1, Math.min(31, d))));\n}\n\nexport function createDateFromInput(value, {locale} = {}) {\n const loc = createLocale(locale);\n if (value instanceof Date) return new Date(value.getTime());\n if (Number.isFinite(Number(value))) {\n const year = Number(value);\n return new Date(Date.UTC(year, 0, 1));\n }\n if (value && typeof value === \"object\") {\n const structured = parseStructuredInput(value);\n if (structured) return structured;\n }\n const text = typeof value === \"string\" ? value.trim() : \"\";\n if (!text) return null;\n const isoYear = text.match(/^(\\d{4})$/);\n if (isoYear) {\n return new Date(Date.UTC(Number(isoYear[1]), 0, 1));\n }\n const isoYearMonth = text.match(/^(\\d{4})-(\\d{2})$/);\n if (isoYearMonth) {\n return new Date(\n Date.UTC(Number(isoYearMonth[1]), Number(isoYearMonth[2]) - 1, 1)\n );\n }\n const isoDate = text.match(/^(\\d{4})-(\\d{2})-(\\d{2})$/);\n if (isoDate) {\n return new Date(\n Date.UTC(\n Number(isoDate[1]),\n Number(isoDate[2]) - 1,\n Number(isoDate[3])\n )\n );\n }\n const monthDayYear = text.match(/^([A-Za-z]+)\\s+(\\d{1,2})(?:,)?\\s*(\\d{4})$/);\n if (monthDayYear) {\n const month = parseMonthIndex(monthDayYear[1], loc);\n const day = Number(monthDayYear[2]);\n const year = Number(monthDayYear[3]);\n return new Date(Date.UTC(year, month, day));\n }\n const monthYear = text.match(/^([A-Za-z]+)\\s+(\\d{4})$/);\n if (monthYear) {\n const month = parseMonthIndex(monthYear[1], loc);\n const year = Number(monthYear[2]);\n return new Date(Date.UTC(year, month, 1));\n }\n const fallback = new Date(text);\n if (!Number.isNaN(fallback.getTime())) return fallback;\n const alt = new Date(Date.parse(text));\n if (!Number.isNaN(alt.getTime())) return alt;\n return null;\n}\n\nexport function formatDateLabel(date, {granularity = \"day\", locale} = {}) {\n if (!(date instanceof Date) || Number.isNaN(date.getTime())) return \"\";\n const loc = createLocale(locale);\n const baseName = typeof loc === \"string\" ? loc : loc.baseName || \"en-US\";\n const options = {year: \"numeric\"};\n if (granularity === \"month\" || granularity === \"day\") {\n options.month = \"long\";\n }\n if (granularity === \"day\") {\n options.day = \"numeric\";\n }\n options.timeZone = \"UTC\";\n try {\n const formatter = new Intl.DateTimeFormat(baseName, options);\n return formatter.format(date);\n } catch (_) {\n return date.toISOString().slice(0, 10);\n }\n}\n\nexport function normalizeRange(range = {}) {\n const {start, end, granularity = \"year\", locale} = range || {};\n const loc = createLocale(locale);\n const startDate = createDateFromInput(start || new Date(), {locale: loc}) ||\n new Date(Date.UTC(0, 0, 1));\n let endDate = createDateFromInput(end, {locale: loc});\n if (!endDate) {\n const copy = new Date(startDate.getTime());\n copy.setUTCFullYear(copy.getUTCFullYear() + 1);\n endDate = copy;\n }\n if (endDate <= startDate) {\n const nextDay = new Date(startDate.getTime());\n nextDay.setUTCDate(nextDay.getUTCDate() + 1);\n endDate = nextDay;\n }\n const span = Math.max(1, endDate - startDate);\n return {\n startDate,\n endDate,\n span,\n granularity: granularity === \"month\" || granularity === \"day\" ? granularity : \"year\",\n locale: loc,\n };\n}\n\nexport function buildPointMetadata({value, granularity, locale}) {\n const date = createDateFromInput(value, {locale});\n return {\n date,\n label: formatDateLabel(date, {granularity, locale}),\n timestamp: date ? date.getTime() : null,\n };\n}\n\nexport function clampProgress(value) {\n if (!Number.isFinite(value)) return 0;\n if (value < 0) return 0;\n if (value > 1) return 1;\n return value;\n}\n", "import React from \"react\";\nimport TeaserCard from \"./TeaserCard.jsx\";\n\nfunction normalizeMetadata(metadata, summary) {\n if (Array.isArray(metadata) && metadata.length) {\n return metadata.filter(Boolean);\n }\n if (summary) return [summary];\n return [];\n}\n\nexport default function ReferencedManifestCard({\n manifest = null,\n href,\n title,\n summary,\n metadata,\n thumbnail,\n type,\n className = \"\",\n ...rest\n}) {\n const record = manifest || {};\n const resolvedHref = href ?? record.href ?? \"\";\n const resolvedTitle = title ?? record.title ?? record.href ?? \"\";\n const resolvedSummary = summary ?? record.summary ?? \"\";\n const resolvedMetadata = normalizeMetadata(\n metadata ?? record.metadata,\n resolvedSummary\n );\n const resolvedThumbnail = thumbnail ?? record.thumbnail ?? null;\n const resolvedType = type ?? record.type ?? \"work\";\n const classes = [\n \"canopy-referenced-manifest-card\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <TeaserCard\n href={resolvedHref || undefined}\n title={resolvedTitle || resolvedHref || \"\"}\n summary={resolvedSummary}\n metadata={resolvedMetadata}\n thumbnail={resolvedThumbnail}\n type={resolvedType}\n className={classes}\n {...rest}\n />\n );\n}\n", "const DEFAULT_ACCENT_HEX = '#2563eb';\n\nfunction normalizeHex(value) {\n if (!value) return '';\n let input = String(value).trim();\n if (!input) return '';\n if (input.startsWith('var(')) return input;\n if (/^#[0-9a-f]{3}$/i.test(input)) {\n return (\n '#' +\n input\n .replace(/^#/, '')\n .split('')\n .map((ch) => ch + ch)\n .join('')\n .toLowerCase()\n );\n }\n if (/^#[0-9a-f]{6}$/i.test(input)) return input.toLowerCase();\n return '';\n}\n\nfunction hexToRgb(hex) {\n if (!hex) return null;\n const normalized = normalizeHex(hex);\n if (!normalized || normalized.startsWith('var(')) return null;\n const int = parseInt(normalized.slice(1), 16);\n if (Number.isNaN(int)) return null;\n return {\n r: (int >> 16) & 255,\n g: (int >> 8) & 255,\n b: int & 255,\n };\n}\n\nfunction rgbToHsl({r, g, b}) {\n const rn = r / 255;\n const gn = g / 255;\n const bn = b / 255;\n const max = Math.max(rn, gn, bn);\n const min = Math.min(rn, gn, bn);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n const delta = max - min;\n if (delta !== 0) {\n s = l > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n switch (max) {\n case rn:\n h = (gn - bn) / delta + (gn < bn ? 6 : 0);\n break;\n case gn:\n h = (bn - rn) / delta + 2;\n break;\n case bn:\n h = (rn - gn) / delta + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return {h: h * 360, s: s * 100, l: l * 100};\n}\n\nfunction hslToHex(h, s, l) {\n const sat = s / 100;\n const light = l / 100;\n const c = (1 - Math.abs(2 * light - 1)) * sat;\n const hh = h / 60;\n const x = c * (1 - Math.abs((hh % 2) - 1));\n let r = 0;\n let g = 0;\n let b = 0;\n if (hh >= 0 && hh < 1) {\n r = c;\n g = x;\n } else if (hh >= 1 && hh < 2) {\n r = x;\n g = c;\n } else if (hh >= 2 && hh < 3) {\n g = c;\n b = x;\n } else if (hh >= 3 && hh < 4) {\n g = x;\n b = c;\n } else if (hh >= 4 && hh < 5) {\n r = x;\n b = c;\n } else {\n r = c;\n b = x;\n }\n const m = light - c / 2;\n const rn = Math.round((r + m) * 255);\n const gn = Math.round((g + m) * 255);\n const bn = Math.round((b + m) * 255);\n const toHex = (value) => value.toString(16).padStart(2, '0');\n return `#${toHex(rn)}${toHex(gn)}${toHex(bn)}`;\n}\n\nfunction rotateHue(baseHue, degrees) {\n return (baseHue + degrees + 360) % 360;\n}\n\nfunction resolveAccentHex() {\n let value = '';\n try {\n if (typeof window !== 'undefined') {\n const styles = window.getComputedStyle(document.documentElement);\n value = styles.getPropertyValue('--color-accent-default');\n }\n } catch (_) {}\n const normalized = normalizeHex(value);\n return normalized && !normalized.startsWith('var(')\n ? normalized\n : DEFAULT_ACCENT_HEX;\n}\n\nfunction generateLegendColors(count) {\n if (!count || count <= 0) return [];\n const colors = [];\n const baseHex = resolveAccentHex();\n const accentVar = `var(--color-accent-default, ${baseHex})`;\n colors.push(accentVar);\n if (count === 1) return colors;\n const rgb = hexToRgb(baseHex);\n const baseHsl = rgb ? rgbToHsl(rgb) : {h: 220, s: 85, l: 56};\n const rotations = [180, 120, -120, 60, -60, 90, -90, 30, -30];\n const needed = count - 1;\n for (let i = 0; i < needed; i += 1) {\n const angle = rotations[i] != null ? rotations[i] : (360 / (needed + 1)) * (i + 1);\n const rotatedHue = rotateHue(baseHsl.h, angle);\n const hex = hslToHex(rotatedHue, baseHsl.s, baseHsl.l);\n colors.push(hex);\n }\n return colors;\n}\n\nfunction createLookupStore() {\n try {\n if (typeof globalThis !== 'undefined' && typeof globalThis.Map === 'function') {\n return new globalThis.Map();\n }\n } catch (_) {}\n try {\n if (typeof window !== 'undefined' && typeof window.Map === 'function') {\n return new window.Map();\n }\n } catch (_) {}\n const store = Object.create(null);\n return {\n has(key) {\n return Object.prototype.hasOwnProperty.call(store, key);\n },\n get(key) {\n return store[key];\n },\n set(key, value) {\n store[key] = value;\n return this;\n },\n };\n}\n\nfunction normalizeText(value) {\n if (value == null) return '';\n try {\n return String(value).trim();\n } catch (_) {\n return '';\n }\n}\n\nfunction normalizeKeyValue(entry) {\n if (!entry) return '';\n const value = entry.id ?? entry.value ?? entry.key ?? entry.slug;\n return normalizeText(value);\n}\n\nfunction normalizeKeyLabel(entry) {\n if (!entry) return '';\n const label = entry.label ?? entry.name ?? entry.title ?? entry.text;\n return normalizeText(label);\n}\n\nfunction normalizeKeyLegendEntries(entries, options = {}) {\n if (!Array.isArray(entries)) return [];\n const resolveVariant = typeof options.resolveVariant === 'function' ? options.resolveVariant : null;\n const variantProp = options.variantProp || 'variant';\n return entries\n .map((entry) => {\n if (!entry) return null;\n const keyValue = normalizeKeyValue(entry);\n const label = normalizeKeyLabel(entry);\n if (!keyValue || !label) return null;\n const normalized = {\n keyValue,\n label,\n };\n if (resolveVariant) {\n const variant = resolveVariant(entry);\n if (variant) normalized[variantProp] = variant;\n }\n return normalized;\n })\n .filter(Boolean);\n}\n\nfunction buildKeyLegend(entries) {\n if (!Array.isArray(entries) || !entries.length) {\n return {groups: [], lookup: null};\n }\n const lookup = createLookupStore();\n const palette = generateLegendColors(entries.length);\n const groups = entries.map((entry, index) => {\n const color = palette[index] || palette[0] || DEFAULT_ACCENT_HEX;\n const group = {\n ...entry,\n color,\n };\n lookup.set(entry.keyValue, group);\n return group;\n });\n return {groups, lookup};\n}\n\nexport {DEFAULT_ACCENT_HEX, normalizeKeyLegendEntries, buildKeyLegend};\n", "export default function TimelinePoint() {\n return null;\n}\n\nTimelinePoint.displayName = \"TimelinePoint\";\n", "import React from \"react\";\n\nconst CONTEXT_KEY =\n typeof Symbol === \"function\" ? Symbol.for(\"__CANOPY_PAGE_CONTEXT__\") : \"__CANOPY_PAGE_CONTEXT__\";\n\nfunction getGlobalRoot() {\n if (typeof globalThis !== \"undefined\") return globalThis;\n if (typeof global !== \"undefined\") return global;\n if (typeof window !== \"undefined\") return window;\n return {};\n}\n\nfunction getPageContext() {\n const root = getGlobalRoot();\n if (root && root[CONTEXT_KEY]) return root[CONTEXT_KEY];\n const ctx = React.createContext({\n navigation: null,\n page: null,\n site: null,\n primaryNavigation: [],\n });\n if (root) root[CONTEXT_KEY] = ctx;\n return ctx;\n}\n\nexport function normalizeManifestId(raw) {\n if (!raw) return \"\";\n try {\n const url = new URL(String(raw));\n url.hash = \"\";\n const params = Array.from(url.searchParams.entries()).sort((a, b) =>\n a[0].localeCompare(b[0]) || a[1].localeCompare(b[1])\n );\n url.search = \"\";\n params.forEach(([key, value]) => url.searchParams.append(key, value));\n return url.toString();\n } catch (_) {\n return String(raw || \"\").trim();\n }\n}\n\nconst PageContextFallback = React.createContext(null);\nlet referencedModule = null;\nconst REFERENCED_SPEC = '@canopy-iiif/app/lib/components/referenced.js';\n\nfunction getReferencedModule() {\n if (typeof window !== 'undefined') return null;\n if (referencedModule) return referencedModule;\n try {\n const globalReq =\n (typeof globalThis !== 'undefined' && globalThis.__canopyRequire) || null;\n if (typeof globalReq === 'function') {\n let target = REFERENCED_SPEC;\n if (typeof globalReq.resolve === 'function') {\n try {\n target = globalReq.resolve(REFERENCED_SPEC);\n } catch (_) {}\n }\n referencedModule = globalReq(target);\n return referencedModule;\n }\n } catch (_) {\n referencedModule = null;\n }\n return referencedModule;\n}\n\nexport function useReferencedManifestMap() {\n const PageContext = getPageContext() || PageContextFallback;\n const pageContext = React.useContext(PageContext);\n const referencedItems =\n pageContext && pageContext.page && Array.isArray(pageContext.page.referencedItems)\n ? pageContext.page.referencedItems\n : [];\n return React.useMemo(() => {\n const map = new Map();\n referencedItems.forEach((item) => {\n if (!item) return;\n const id = item.id || item.href;\n if (!id) return;\n const normalized = normalizeManifestId(id);\n if (normalized) map.set(normalized, item);\n map.set(String(id), item);\n });\n return map;\n }, [referencedItems]);\n}\n\nexport function resolveManifestReferences(ids, manifestMap) {\n if (!Array.isArray(ids) || !ids.length || !manifestMap) return [];\n const seen = new Set();\n const out = [];\n ids.forEach((value) => {\n if (!value) return;\n const normalized = normalizeManifestId(value);\n if (!normalized || seen.has(normalized)) return;\n seen.add(normalized);\n const record = manifestMap.get(normalized) || manifestMap.get(String(value));\n if (!record) return;\n out.push({\n id: record.id || record.href || value,\n href: record.href || null,\n title: record.title || record.label || record.href || value,\n summary: record.summary || \"\",\n thumbnail: record.thumbnail || null,\n thumbnailWidth: record.thumbnailWidth,\n thumbnailHeight: record.thumbnailHeight,\n type: record.type || \"work\",\n metadata:\n Array.isArray(record.metadata) && record.metadata.length\n ? record.metadata\n : record.summary\n ? [record.summary]\n : [],\n });\n });\n return out;\n}\n\nexport function resolveReferencedManifests(ids, manifestMap) {\n if (!Array.isArray(ids) || !ids.length) return [];\n const order = [];\n const seen = new Set();\n ids.forEach((value) => {\n const normalized = normalizeManifestId(value);\n if (!normalized || seen.has(normalized)) return;\n seen.add(normalized);\n order.push(normalized);\n });\n if (!order.length) return [];\n const manifestRecords = new Map();\n if (manifestMap) {\n const resolved = resolveManifestReferences(ids, manifestMap);\n resolved.forEach((entry) => {\n const key = normalizeManifestId(entry && (entry.id || entry.href));\n if (key && !manifestRecords.has(key)) {\n manifestRecords.set(key, entry);\n }\n });\n }\n const missing = order.filter((key) => key && !manifestRecords.has(key));\n if (missing.length) {\n const referencedHelpers = getReferencedModule();\n const buildReferencedItems = referencedHelpers?.buildReferencedItems;\n const normalizeList = referencedHelpers?.normalizeReferencedManifestList;\n if (typeof buildReferencedItems === 'function') {\n let fallbackItems = [];\n try {\n const normalizedMissing =\n typeof normalizeList === 'function' ? normalizeList(missing) : missing;\n if (normalizedMissing && normalizedMissing.length) {\n fallbackItems = buildReferencedItems(normalizedMissing) || [];\n }\n } catch (_) {\n fallbackItems = [];\n }\n fallbackItems.forEach((item) => {\n if (!item) return;\n const fallbackKey = normalizeManifestId(item.id || item.href);\n if (!fallbackKey || manifestRecords.has(fallbackKey)) return;\n manifestRecords.set(fallbackKey, {\n id: item.id || item.href || fallbackKey,\n href: item.href || null,\n title: item.title || item.href || '',\n summary: item.summary || '',\n thumbnail: item.thumbnail || null,\n thumbnailWidth: item.thumbnailWidth,\n thumbnailHeight: item.thumbnailHeight,\n type: item.type || 'work',\n metadata:\n Array.isArray(item.metadata) && item.metadata.length\n ? item.metadata\n : item.summary\n ? [item.summary]\n : [],\n });\n });\n }\n }\n return order\n .map((key) => manifestRecords.get(key))\n .filter(Boolean);\n}\n", "import React from \"react\";\nimport ReactDOMServer from \"react-dom/server\";\nimport MapPoint from \"./MapPoint.jsx\";\nimport navPlaceHelpers from \"../../../../lib/components/nav-place.js\";\nimport {\n useReferencedManifestMap,\n resolveReferencedManifests,\n} from \"../../utils/manifestReferences.js\";\n\nfunction normalizeNumber(value) {\n if (value == null) return null;\n const num = Number(value);\n return Number.isFinite(num) ? num : null;\n}\n\nfunction normalizeReactKey(value) {\n if (value == null) return \"\";\n const str = String(value);\n if (/^\\.[0-9]+$/.test(str)) return \"\";\n if (str.startsWith(\".$\")) return str.slice(2);\n if (str.startsWith(\".\")) return str.slice(1);\n return str;\n}\n\nfunction normalizeCoordinates(props = {}) {\n const lat =\n normalizeNumber(props.lat) ??\n normalizeNumber(props.latitude) ??\n normalizeNumber(props.y);\n const lng =\n normalizeNumber(props.lng) ??\n normalizeNumber(props.lon) ??\n normalizeNumber(props.long) ??\n normalizeNumber(props.longitude) ??\n normalizeNumber(props.x);\n if (lat == null || lng == null) return null;\n return {lat, lng};\n}\n\nfunction renderDetailsHtml(children) {\n if (!children) return \"\";\n try {\n return ReactDOMServer.renderToStaticMarkup(\n React.createElement(React.Fragment, null, children)\n );\n } catch (_) {\n return \"\";\n }\n}\n\nfunction normalizeKeyLabel(value) {\n if (value == null) return \"\";\n try {\n const label = String(value).trim();\n return label;\n } catch (_) {\n return \"\";\n }\n}\n\nfunction pickManifestSummary(manifest) {\n if (!manifest) return \"\";\n if (manifest.summary && typeof manifest.summary === \"string\") {\n const trimmedSummary = manifest.summary.trim();\n if (trimmedSummary) return trimmedSummary;\n }\n if (!Array.isArray(manifest.metadata)) return \"\";\n for (const entry of manifest.metadata) {\n if (entry == null) continue;\n const value = typeof entry === \"string\"\n ? entry\n : typeof entry === \"object\"\n ? entry.value || entry.label || entry.title || \"\"\n : \"\";\n if (!value) continue;\n const trimmed = String(value).trim();\n if (trimmed) return trimmed;\n }\n return \"\";\n}\n\nfunction normalizeCustomPoint(child, index, manifestMap) {\n if (!React.isValidElement(child)) return null;\n if (child.type !== MapPoint && child.type?.displayName !== \"MapPoint\") return null;\n const coords = normalizeCoordinates(child.props || {});\n if (!coords) return null;\n const props = child.props || {};\n const id = props.id || `map-point-${index + 1}`;\n let title = props.title || props.label || \"\";\n let summary = props.summary || props.description || \"\";\n let href = props.href || props.link || \"\";\n let thumbnail = props.thumbnail || props.image || \"\";\n let thumbnailWidth = normalizeNumber(props.thumbnailWidth);\n let thumbnailHeight = normalizeNumber(props.thumbnailHeight);\n const rawNodeKey = child && child.key != null ? child.key : null;\n const normalizedNodeKey = normalizeReactKey(rawNodeKey);\n const keyValue = props.mapKey || props.group || props.key || normalizedNodeKey;\n const keyLabelFromProps = normalizeKeyLabel(props.keyLabel || props.legend || props.groupLabel);\n const detailsHtml = renderDetailsHtml(props.children);\n const manifestValues = Array.isArray(props.referencedManifests)\n ? props.referencedManifests\n : props.manifest\n ? [props.manifest]\n : Array.isArray(props.manifests)\n ? props.manifests\n : [];\n const manifests = resolveReferencedManifests(manifestValues, manifestMap);\n const manifestFallback = manifests.length ? manifests[0] : null;\n if (!title) {\n const manifestTitle = manifestFallback?.title || manifestFallback?.href || \"\";\n title = manifestTitle || `Point ${index + 1}`;\n }\n if (!summary && manifestFallback) {\n const manifestSummary = pickManifestSummary(manifestFallback);\n if (manifestSummary) summary = manifestSummary;\n }\n if (!href && manifestFallback && manifestFallback.href) {\n href = manifestFallback.href;\n }\n if (!thumbnail && manifests.length) {\n const manifestWithThumb = manifests.find(\n (manifest) => manifest && manifest.thumbnail\n );\n if (manifestWithThumb) {\n thumbnail = manifestWithThumb.thumbnail || \"\";\n if (\n thumbnail &&\n thumbnailWidth == null &&\n typeof manifestWithThumb.thumbnailWidth === \"number\"\n ) {\n thumbnailWidth = manifestWithThumb.thumbnailWidth;\n }\n if (\n thumbnail &&\n thumbnailHeight == null &&\n typeof manifestWithThumb.thumbnailHeight === \"number\"\n ) {\n thumbnailHeight = manifestWithThumb.thumbnailHeight;\n }\n }\n }\n return {\n id,\n title,\n summary,\n href,\n thumbnail,\n thumbnailWidth,\n thumbnailHeight,\n lat: coords.lat,\n lng: coords.lng,\n detailsHtml,\n manifests,\n type: \"custom\",\n keyValue: keyValue ? String(keyValue).trim() : \"\",\n keyLabel: keyLabelFromProps,\n };\n}\n\nfunction normalizeCustomPoints(children, manifestMap) {\n return React.Children.toArray(children)\n .map((child, index) => normalizeCustomPoint(child, index, manifestMap))\n .filter(Boolean);\n}\n\nfunction normalizeHeight(value) {\n if (value == null) return \"600px\";\n if (typeof value === \"number\") {\n return `${value}px`;\n }\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) return \"600px\";\n if (/^[0-9.]+$/.test(trimmed)) {\n return `${trimmed}px`;\n }\n return trimmed;\n }\n return \"600px\";\n}\n\nfunction normalizeTileLayer(entry, index) {\n if (!entry) return null;\n if (typeof entry === \"string\") {\n const url = entry.trim();\n if (!url) return null;\n return {\n name: `Layer ${index + 1}`,\n url,\n attribution: \"\",\n };\n }\n if (typeof entry === \"object\") {\n const url = entry.url || entry.href;\n if (!url) return null;\n const layer = {\n name: entry.name || entry.title || `Layer ${index + 1}`,\n url: String(url),\n attribution: entry.attribution || entry.credit || \"\",\n };\n const minZoom = normalizeNumber(entry.minZoom);\n const maxZoom = normalizeNumber(entry.maxZoom);\n if (Number.isFinite(minZoom)) layer.minZoom = minZoom;\n if (Number.isFinite(maxZoom)) layer.maxZoom = maxZoom;\n if (entry.subdomains) layer.subdomains = entry.subdomains;\n return layer;\n }\n return null;\n}\n\nfunction normalizeTileLayers(value) {\n const list = Array.isArray(value) ? value : value ? [value] : [];\n return list\n .map((entry, index) => normalizeTileLayer(entry, index))\n .filter(Boolean);\n}\n\nconst TILE_LAYER_DISABLE_TOKENS = new Set([\n \"false\",\n \"0\",\n \"off\",\n \"no\",\n \"none\",\n \"transparent\",\n \"disable\",\n \"disabled\",\n]);\n\nfunction shouldDisableTileLayers(value) {\n if (value === false) return true;\n if (typeof value === \"string\") {\n const normalized = value.trim().toLowerCase();\n if (normalized && TILE_LAYER_DISABLE_TOKENS.has(normalized)) return true;\n }\n return false;\n}\n\nfunction parseBoolean(value, fallback) {\n if (value === undefined) return fallback;\n if (typeof value === \"boolean\") return value;\n const normalized = String(value).trim().toLowerCase();\n if (!normalized) return fallback;\n if ([\"false\", \"0\", \"no\", \"off\"].includes(normalized)) return false;\n if ([\"true\", \"1\", \"yes\", \"on\"].includes(normalized)) return true;\n return fallback;\n}\n\nfunction normalizeCenter(value) {\n if (!value) return null;\n if (typeof value === \"string\") {\n const parts = value.split(/[,\\s]+/).filter(Boolean);\n if (parts.length >= 2) {\n const coords = normalizeCoordinates({lat: parts[0], lng: parts[1]});\n if (coords) return coords;\n }\n return null;\n }\n if (typeof value === \"object\") {\n const coords = normalizeCoordinates(value);\n if (coords) return coords;\n }\n return null;\n}\n\nfunction serializeProps(props, payload) {\n const clone = {};\n Object.keys(props || {}).forEach((key) => {\n if (key === \"children\") return;\n const value = props[key];\n if (typeof value === \"function\" || typeof value === \"symbol\") return;\n clone[key] = value;\n });\n return {...clone, ...payload};\n}\n\nfunction serializeForScript(data) {\n try {\n return JSON.stringify(data).replace(/</g, \"\\\\u003c\");\n } catch (_) {\n return \"{}\";\n }\n}\n\nfunction getDatasetInfo() {\n if (!navPlaceHelpers) {\n return {hasFeatures: false, version: null, href: \"/api/navplace.json\"};\n }\n try {\n return navPlaceHelpers.getNavPlaceDatasetInfo();\n } catch (_) {\n return {\n hasFeatures: false,\n version: null,\n href: navPlaceHelpers.NAVPLACE_PUBLIC_HREF || \"/api/navplace.json\",\n };\n }\n}\n\nexport default function MdxMap({children, ...rest}) {\n const manifestMap = useReferencedManifestMap();\n const customPoints = normalizeCustomPoints(children, manifestMap);\n const datasetInfo = getDatasetInfo();\n const navDataset = {\n hasFeatures: Boolean(datasetInfo && datasetInfo.hasFeatures),\n href: (datasetInfo && datasetInfo.href) || \"/api/navplace.json\",\n version: datasetInfo && datasetInfo.version ? datasetInfo.version : null,\n };\n const height = normalizeHeight(rest.height);\n const tileLayersInput =\n rest.tileLayers !== undefined && rest.tileLayers !== null\n ? rest.tileLayers\n : rest.tileLayer !== undefined\n ? rest.tileLayer\n : undefined;\n const disableTileLayersInput =\n rest.disableTileLayers ?? rest.disableBasemap ?? rest.hideTileLayers;\n const showTileLayersOverride =\n rest.showTileLayers ?? rest.showBasemap ?? rest.basemap ?? rest.basemapVisible;\n let disableTileLayers = false;\n if (disableTileLayersInput !== undefined) {\n disableTileLayers = parseBoolean(disableTileLayersInput, false);\n } else if (showTileLayersOverride !== undefined) {\n const showLayers = parseBoolean(showTileLayersOverride, true);\n disableTileLayers = !showLayers;\n } else {\n disableTileLayers = shouldDisableTileLayers(tileLayersInput);\n }\n const tileLayers = disableTileLayers ? [] : normalizeTileLayers(tileLayersInput);\n const scrollWheelZoom = parseBoolean(rest.scrollWheelZoom, false);\n const cluster = parseBoolean(rest.cluster, true);\n const maxClusterRadius = normalizeNumber(\n rest.maxClusterRadius ?? rest.clusterRadius ?? rest.markerClusterRadius\n );\n const defaultCenter = normalizeCenter(rest.defaultCenter || rest.center);\n const defaultZoom = normalizeNumber(rest.defaultZoom || rest.zoom);\n const rawKeyConfig =\n rest.key ?? rest.mapKey ?? rest.keys ?? rest.legend ?? rest.keyConfig ?? null;\n const mapKeyConfig = Array.isArray(rawKeyConfig)\n ? rawKeyConfig\n : rawKeyConfig && typeof rawKeyConfig === \"object\"\n ? [rawKeyConfig]\n : [];\n const payload = serializeProps(rest, {\n className: rest.className || \"\",\n id: rest.id || null,\n height,\n tileLayers,\n disableTileLayers,\n scrollWheelZoom,\n cluster,\n maxClusterRadius: Number.isFinite(maxClusterRadius) ? maxClusterRadius : null,\n customPoints,\n navDataset,\n defaultCenter,\n defaultZoom: Number.isFinite(defaultZoom) ? defaultZoom : null,\n keyConfig: mapKeyConfig,\n });\n const json = serializeForScript(payload);\n const placeholderClass = [\"canopy-map\", rest.className]\n .filter(Boolean)\n .join(\" \");\n const placeholderProps = {};\n if (placeholderClass) placeholderProps.className = placeholderClass;\n if (rest.id) placeholderProps.id = rest.id;\n if (rest.style) placeholderProps.style = rest.style;\n return (\n <div data-canopy-map=\"1\">\n <div {...placeholderProps} aria-live=\"polite\">\n <div className=\"canopy-map__status\">Loading map\u2026</div>\n </div>\n <script type=\"application/json\" dangerouslySetInnerHTML={{__html: json}} />\n </div>\n );\n}\n", "export default function MapPoint() {\n return null;\n}\n\nMapPoint.displayName = \"MapPoint\";\n", "import React from \"react\";\nimport Button from \"../../layout/Button.jsx\";\nimport {useLocale} from \"../../locale/index.js\";\nimport {\n useReferencedManifestMap,\n resolveReferencedManifests,\n} from \"../../utils/manifestReferences.js\";\n\nconst INLINE_SCRIPT = `(() => {\n if (typeof window === 'undefined') return;\n if (window.__canopyGalleryBound) return;\n window.__canopyGalleryBound = true;\n const focusableSelector =\n 'a[href],area[href],button:not([disabled]),input:not([disabled]):not([type=\"hidden\"]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex=\"-1\"])';\n const raf =\n (window.requestAnimationFrame && window.requestAnimationFrame.bind(window)) ||\n function (cb) {\n return window.setTimeout(cb, 0);\n };\n let activeModal = null;\n const NAV_SELECTOR = '[data-canopy-gallery-nav]';\n const NAV_OPTION_SELECTOR = '[data-canopy-gallery-nav-option]';\n const NAV_ITEM_SELECTOR = '[data-canopy-gallery-nav-item]';\n\n function emitModalState(modal, state) {\n if (!modal || typeof window === 'undefined') return;\n const detail = { modalId: modal.id || '', modal, state };\n try {\n const EventCtor = window.CustomEvent || CustomEvent;\n if (typeof EventCtor === 'function') {\n window.dispatchEvent(new EventCtor('canopy:gallery:modal-change', { detail }));\n return;\n }\n } catch (_) {}\n try {\n const fallback = document.createEvent('CustomEvent');\n fallback.initCustomEvent('canopy:gallery:modal-change', true, true, detail);\n window.dispatchEvent(fallback);\n } catch (_) {}\n }\n\n function isVisible(node) {\n return !!(node && (node.offsetWidth || node.offsetHeight || node.getClientRects().length));\n }\n\n function getFocusable(modal) {\n if (!modal) return [];\n return Array.prototype.slice\n .call(modal.querySelectorAll(focusableSelector))\n .filter((node) => !node.hasAttribute('disabled') && node.getAttribute('aria-hidden') !== 'true' && isVisible(node));\n }\n\n function escapeSelector(value) {\n if (window.CSS && typeof window.CSS.escape === 'function') {\n return window.CSS.escape(value);\n }\n return value.replace(/\"/g, '\\\\\"');\n }\n\n function findTrigger(modal) {\n if (!modal || !modal.id) return null;\n try {\n return document.querySelector('[data-canopy-gallery-trigger=\"' + escapeSelector(modal.id) + '\"]');\n } catch (_) {\n return null;\n }\n }\n\n function resetModalScroll(modal) {\n if (!modal) return;\n const panel = modal.querySelector('.canopy-gallery__modal-panel');\n if (panel) {\n panel.scrollTop = 0;\n panel.scrollLeft = 0;\n }\n }\n\n function getOptionItem(option) {\n if (!option || typeof option.closest !== 'function') return null;\n return option.closest(NAV_ITEM_SELECTOR);\n }\n\n function focusActiveNav(modal) {\n if (!modal) return false;\n const nav = modal.querySelector(NAV_SELECTOR);\n if (!nav) return false;\n const activeOption =\n nav.querySelector(NAV_OPTION_SELECTOR + ':checked') ||\n nav.querySelector(NAV_OPTION_SELECTOR);\n if (!activeOption) return false;\n raf(() => {\n try {\n activeOption.focus({preventScroll: true});\n } catch (_) {\n try {\n activeOption.focus();\n } catch (err) {}\n }\n });\n return true;\n }\n\n function focusInitial(modal) {\n if (!modal) return;\n const focusables = getFocusable(modal);\n const target = focusables[0] || modal;\n raf(() => {\n try {\n target.focus({preventScroll: true});\n } catch (_) {\n try {\n target.focus();\n } catch (err) {}\n }\n });\n }\n\n function lockScroll() {\n document.body && document.body.setAttribute('data-canopy-gallery-locked', '1');\n }\n\n function unlockScroll() {\n document.body && document.body.removeAttribute('data-canopy-gallery-locked');\n }\n\n function handleKeydown(event) {\n if (!activeModal) return;\n if (event.key === 'Escape' || event.key === 'Esc') {\n event.preventDefault();\n const closeId = activeModal.getAttribute('data-canopy-gallery-close');\n if (closeId) {\n const targetHash = '#' + closeId;\n if (window.location.hash !== targetHash) {\n window.location.hash = targetHash;\n } else {\n window.location.hash = targetHash;\n }\n } else {\n window.location.hash = '';\n }\n return;\n }\n if (event.key !== 'Tab') return;\n const focusables = getFocusable(activeModal);\n if (!focusables.length) {\n event.preventDefault();\n activeModal.focus();\n return;\n }\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n const current = document.activeElement;\n if (event.shiftKey) {\n if (current === first || !activeModal.contains(current)) {\n event.preventDefault();\n last.focus();\n }\n return;\n }\n if (current === last || !activeModal.contains(current)) {\n event.preventDefault();\n first.focus();\n }\n }\n\n function setActiveModal(modal) {\n if (modal) {\n if (!activeModal) {\n lockScroll();\n document.addEventListener('keydown', handleKeydown, true);\n } else if (activeModal !== modal) {\n emitModalState(activeModal, 'close');\n activeModal.removeAttribute('data-canopy-gallery-active');\n }\n activeModal = modal;\n modal.setAttribute('data-canopy-gallery-active', '1');\n resetModalScroll(modal);\n if (!focusActiveNav(modal)) {\n focusInitial(modal);\n }\n emitModalState(modal, 'open');\n return;\n }\n if (!activeModal) return;\n const previous = activeModal;\n activeModal = null;\n previous.removeAttribute('data-canopy-gallery-active');\n unlockScroll();\n document.removeEventListener('keydown', handleKeydown, true);\n const closeTarget = previous.getAttribute('data-canopy-gallery-close');\n if (closeTarget) {\n const closeHash = '#' + closeTarget;\n if (window.location.hash === closeHash) {\n try {\n if (window.history && typeof window.history.replaceState === 'function') {\n window.history.replaceState('', document.title, window.location.pathname + window.location.search);\n } else {\n window.location.hash = '';\n }\n } catch (_) {}\n }\n }\n const trigger = findTrigger(previous);\n if (trigger && typeof trigger.focus === 'function') {\n raf(() => {\n try {\n trigger.focus({preventScroll: true});\n } catch (_) {\n try {\n trigger.focus();\n } catch (err) {}\n }\n });\n }\n emitModalState(previous, 'close');\n }\n\n function closeModalFromBackground(modal) {\n if (!modal) return;\n const closeId = modal.getAttribute('data-canopy-gallery-close');\n const targetHash = closeId ? '#' + closeId : '';\n if (targetHash) {\n if (window.location.hash === targetHash) {\n try {\n window.location.hash = targetHash;\n } catch (_) {}\n } else {\n window.location.hash = targetHash;\n }\n } else {\n window.location.hash = '';\n }\n }\n\n function shouldCloseFromBackground(event, modal) {\n if (!event || !modal) return false;\n const target = event.target;\n if (!target) return false;\n const panel = modal.querySelector('.canopy-gallery__modal-panel');\n if (panel && panel.contains(target)) return false;\n const actions = modal.querySelector('.canopy-gallery__modal-actions');\n if (actions && actions.contains(target)) return false;\n if (target === modal) return true;\n const scrim = modal.querySelector('.canopy-gallery__modal-scrim');\n if (scrim && scrim.contains(target)) return true;\n return false;\n }\n\n function bindModalDismissal(modal) {\n if (!modal || modal.getAttribute('data-canopy-gallery-dismiss-bound') === '1') {\n return;\n }\n modal.setAttribute('data-canopy-gallery-dismiss-bound', '1');\n modal.addEventListener('click', function (event) {\n if (!shouldCloseFromBackground(event, modal)) return;\n event.preventDefault();\n closeModalFromBackground(modal);\n });\n }\n\n function bindModalDismissals() {\n const modals = document.querySelectorAll('[data-canopy-gallery-modal]');\n if (!modals || !modals.length) return;\n Array.prototype.forEach.call(modals, bindModalDismissal);\n }\n\n function modalFromHash() {\n const id = window.location.hash.replace(/^#/, '');\n if (!id) return null;\n const candidate = document.getElementById(id);\n if (!candidate) return null;\n return candidate.hasAttribute('data-canopy-gallery-modal') ? candidate : null;\n }\n\n function syncFromHash() {\n const modal = modalFromHash();\n if (modal) {\n setActiveModal(modal);\n } else {\n setActiveModal(null);\n }\n }\n\n function initGalleryNav(nav) {\n if (!nav || nav.getAttribute('data-canopy-gallery-nav-bound') === '1') {\n return;\n }\n const viewport =\n nav.querySelector('[data-canopy-gallery-nav-viewport]') ||\n nav.querySelector('[data-canopy-gallery-nav-track]');\n if (!viewport) return;\n const optionNodes = nav.querySelectorAll(NAV_OPTION_SELECTOR);\n const navOptions = optionNodes ? Array.prototype.slice.call(optionNodes) : [];\n if (!navOptions.length) return;\n nav.setAttribute('data-canopy-gallery-nav-bound', '1');\n const navModal = nav.closest('[data-canopy-gallery-modal]');\n const prevBtn =\n nav.querySelector('[data-canopy-gallery-nav-prev]') ||\n (navModal &&\n navModal.querySelector(\n '.canopy-gallery__modal-panel [data-canopy-gallery-nav-prev]'\n ));\n const nextBtn =\n nav.querySelector('[data-canopy-gallery-nav-next]') ||\n (navModal &&\n navModal.querySelector(\n '.canopy-gallery__modal-panel [data-canopy-gallery-nav-next]'\n ));\n\n function updateButtons() {\n if (prevBtn) prevBtn.disabled = false;\n if (nextBtn) nextBtn.disabled = false;\n }\n\n function getOptionLabel(option) {\n if (!option) return null;\n let label = option.nextElementSibling;\n if (label && label.tagName && label.tagName.toLowerCase() === 'label') {\n return label;\n }\n if (option.id) {\n try {\n label = nav.querySelector('label[for=\"' + escapeSelector(option.id) + '\"]');\n if (label) return label;\n } catch (_) {}\n }\n return null;\n }\n\n function getTargetIdFromOption(option) {\n if (!option) return '';\n const dataId = option.getAttribute('data-canopy-gallery-nav-modal');\n if (dataId) return String(dataId);\n const value = option.value || option.getAttribute('value') || '';\n return String(value);\n }\n\n function focusOption(option) {\n if (!option) return;\n try {\n option.focus({preventScroll: true});\n } catch (_) {\n try {\n option.focus();\n } catch (err) {}\n }\n }\n\n function getActiveIndex() {\n const currentId = window.location.hash.replace(/^#/, '');\n if (!currentId) return 0;\n for (let i = 0; i < navOptions.length; i += 1) {\n if (getTargetIdFromOption(navOptions[i]) === currentId) {\n return i;\n }\n }\n return 0;\n }\n\n function scrollOptionIntoView(option) {\n const label = getOptionLabel(option);\n const target = label || option;\n if (!target) return;\n try {\n target.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'center'});\n } catch (_) {\n try {\n target.scrollIntoView();\n } catch (err) {}\n }\n }\n\n function activateOption(option, opts = {}) {\n if (!option) return;\n const targetId = getTargetIdFromOption(option);\n if (!targetId) return;\n const targetHash = '#' + targetId;\n syncActiveState({targetHash, reveal: true, focus: !!opts.focus});\n if (window.location.hash === targetHash) {\n try {\n window.location.hash = targetHash;\n } catch (_) {}\n } else {\n window.location.hash = targetHash;\n }\n }\n\n function openByOffset(direction) {\n const total = navOptions.length;\n if (!total) return;\n const currentIndex = getActiveIndex();\n const nextIndex = (currentIndex + direction + total) % total;\n const nextOption = navOptions[nextIndex];\n if (!nextOption) return;\n activateOption(nextOption, {focus: true});\n }\n\n function syncActiveState(options) {\n const targetHash =\n (options && options.targetHash) || window.location.hash || '';\n const normalized = String(targetHash)\n .split('#')\n .pop()\n .replace(/^#/, '');\n let activeIndex = -1;\n let activeOption = null;\n navOptions.forEach((option, index) => {\n const linkTarget = getTargetIdFromOption(option);\n const isActive = normalized && linkTarget === normalized;\n const label = getOptionLabel(option);\n const navItem = getOptionItem(option);\n if (isActive) {\n activeIndex = index;\n activeOption = option;\n option.checked = true;\n option.setAttribute('checked', 'checked');\n option.setAttribute('data-canopy-gallery-nav-active', '1');\n option.setAttribute('data-canopy-gallery-nav-selected', '1');\n option.tabIndex = 0;\n if (label) {\n label.setAttribute('data-canopy-gallery-nav-active', '1');\n }\n if (navItem) {\n navItem.setAttribute('data-canopy-gallery-nav-selected', '1');\n }\n } else {\n option.checked = false;\n option.removeAttribute('checked');\n option.removeAttribute('data-canopy-gallery-nav-active');\n option.removeAttribute('data-canopy-gallery-nav-selected');\n option.tabIndex = -1;\n if (label) {\n label.removeAttribute('data-canopy-gallery-nav-active');\n }\n if (navItem) {\n navItem.removeAttribute('data-canopy-gallery-nav-selected');\n }\n }\n });\n if (options && options.reveal && activeIndex >= 0) {\n scrollOptionIntoView(navOptions[activeIndex]);\n }\n if (options && options.focus && activeIndex >= 0) {\n focusOption(activeOption);\n }\n }\n\n if (prevBtn) {\n prevBtn.addEventListener('click', function (event) {\n event.preventDefault();\n openByOffset(-1);\n });\n }\n if (nextBtn) {\n nextBtn.addEventListener('click', function (event) {\n event.preventDefault();\n openByOffset(1);\n });\n }\n\n viewport.addEventListener('scroll', function () {\n raf(updateButtons);\n });\n window.addEventListener('resize', function () {\n raf(updateButtons);\n });\n\n nav.addEventListener('keydown', function (event) {\n const target = event.target || event.srcElement;\n const isOption =\n target && target.hasAttribute && target.hasAttribute('data-canopy-gallery-nav-option');\n if (!isOption) return;\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n event.preventDefault();\n openByOffset(1);\n return;\n }\n if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n event.preventDefault();\n openByOffset(-1);\n return;\n }\n if (event.key === 'Tab' && !event.shiftKey) {\n const actions = nav.closest('.canopy-gallery__modal-actions');\n const closeBtn = actions && actions.querySelector('.canopy-gallery__modal-close');\n if (closeBtn) {\n event.preventDefault();\n try {\n closeBtn.focus({preventScroll: true});\n } catch (_) {\n try {\n closeBtn.focus();\n } catch (err) {}\n }\n }\n }\n });\n\n nav.addEventListener('change', function (event) {\n const target = event.target || event.srcElement;\n if (!target || typeof target.matches !== 'function') return;\n if (!target.matches(NAV_OPTION_SELECTOR)) return;\n activateOption(target, {focus: true});\n });\n\n updateButtons();\n syncActiveState({reveal: true});\n nav.__canopyGalleryNavUpdate = updateButtons;\n nav.__canopyGalleryNavRefresh = function (options) {\n syncActiveState({\n reveal: options && options.reveal,\n focus: options && options.focus,\n });\n };\n }\n\n function bindGalleryNavs() {\n const navs = document.querySelectorAll('[data-canopy-gallery-nav]');\n if (!navs || !navs.length) return;\n Array.prototype.forEach.call(navs, initGalleryNav);\n refreshGalleryNavs({reveal: true});\n }\n\n function refreshGalleryNavs(options) {\n const opts = options || {};\n const navs = document.querySelectorAll('[data-canopy-gallery-nav-bound=\"1\"]');\n if (!navs || !navs.length) return;\n Array.prototype.forEach.call(navs, function (nav) {\n if (typeof nav.__canopyGalleryNavUpdate === 'function') {\n raf(nav.__canopyGalleryNavUpdate);\n }\n if (typeof nav.__canopyGalleryNavRefresh === 'function') {\n raf(function () {\n nav.__canopyGalleryNavRefresh({\n reveal: !!opts.reveal,\n focus: !!opts.focus,\n });\n });\n }\n });\n }\n\n window.addEventListener('hashchange', function () {\n syncFromHash();\n refreshGalleryNavs({reveal: true});\n });\n window.addEventListener('pageshow', function () {\n syncFromHash();\n bindGalleryNavs();\n bindModalDismissals();\n refreshGalleryNavs({reveal: true});\n });\n syncFromHash();\n bindGalleryNavs();\n bindModalDismissals();\n refreshGalleryNavs({reveal: true});\n})()`;\n\nlet galleryInstanceCounter = 0;\n\nfunction nextGalleryInstanceId() {\n galleryInstanceCounter += 1;\n return `canopy-gallery-${galleryInstanceCounter}`;\n}\n\nfunction slugify(value, fallback) {\n if (!value) return fallback;\n const normalized = String(value)\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .trim();\n if (!normalized) return fallback;\n return normalized;\n}\n\nfunction ensureArray(value) {\n if (!value && value !== 0) return [];\n return Array.isArray(value) ? value : [value];\n}\n\nfunction normalizeOrder(value) {\n const normalized = String(value || \"default\").toLowerCase();\n return normalized === \"random\" ? \"random\" : \"default\";\n}\n\nfunction shuffleItems(list) {\n const copy = list.slice();\n for (let i = copy.length - 1; i > 0; i -= 1) {\n const j = Math.floor(Math.random() * (i + 1));\n const temp = copy[i];\n copy[i] = copy[j];\n copy[j] = temp;\n }\n return copy;\n}\n\nfunction renderMetaList(meta, className) {\n const entries = ensureArray(meta).filter((entry) => entry || entry === 0);\n if (!entries.length) return null;\n return (\n <ul className={className} role=\"list\">\n {entries.map((entry, index) => (\n <li key={`meta-${index}`}>{entry}</li>\n ))}\n </ul>\n );\n}\n\nfunction renderPreview(props = {}) {\n const source =\n (typeof props.media === \"string\" && props.media) ||\n props.thumbnail ||\n props.src ||\n (props.image && props.image.src) ||\n props.image;\n if (source) {\n const alt =\n props.thumbnailAlt || props.imageAlt || props.alt || props.title || \"\";\n const width = props.thumbnailWidth || props.imageWidth || props.width;\n const height = props.thumbnailHeight || props.imageHeight || props.height;\n return (\n <img\n src={source}\n alt={alt}\n width={width}\n height={height}\n loading=\"lazy\"\n />\n );\n }\n return <div className=\"canopy-gallery__placeholder\" aria-hidden=\"true\" />;\n}\n\nfunction renderFlexibleContent(content, options = {}) {\n const {\n inlineTag: InlineTag = \"span\",\n blockTag: BlockTag = \"div\",\n className,\n id,\n } = options;\n if (content == null || content === false) return null;\n const isPrimitive =\n typeof content === \"string\" ||\n typeof content === \"number\" ||\n typeof content === \"bigint\";\n if (isPrimitive) {\n return (\n <InlineTag className={className} id={id}>\n {content}\n </InlineTag>\n );\n }\n if (React.isValidElement(content)) {\n if (content.type === React.Fragment) {\n return (\n <BlockTag className={className} id={id}>\n {content}\n </BlockTag>\n );\n }\n const mergedClassName = [content.props?.className, className]\n .filter(Boolean)\n .join(\" \");\n return React.cloneElement(content, {\n ...content.props,\n className: mergedClassName || undefined,\n id: content.props?.id || id,\n });\n }\n const FallbackTag = BlockTag;\n return (\n <FallbackTag className={className} id={id}>\n {content}\n </FallbackTag>\n );\n}\n\nfunction normalizeItem(child, index, galleryId, manifestMap) {\n if (!React.isValidElement(child)) return null;\n if (child.type !== GalleryItem && child.type?.displayName !== \"GalleryItem\")\n return null;\n const props = child.props || {};\n const manifestValues = props.referencedManifests\n ? ensureArray(props.referencedManifests)\n : props.manifest\n ? [props.manifest]\n : props.manifests\n ? ensureArray(props.manifests)\n : [];\n const manifests = resolveReferencedManifests(manifestValues, manifestMap);\n const normalizedProps = {...props};\n if (!normalizedProps.title) {\n const manifestWithTitle = manifests.find(\n (manifest) => manifest && manifest.title,\n );\n if (manifestWithTitle && manifestWithTitle.title) {\n normalizedProps.title = manifestWithTitle.title;\n }\n }\n if (!normalizedProps.summary || !normalizedProps.description) {\n const manifestWithSummary = manifests.find(\n (manifest) => manifest && manifest.summary,\n );\n if (manifestWithSummary && manifestWithSummary.summary) {\n if (!normalizedProps.summary) {\n normalizedProps.summary = manifestWithSummary.summary;\n }\n if (!normalizedProps.description) {\n normalizedProps.description = manifestWithSummary.summary;\n }\n }\n }\n if (\n !normalizedProps.thumbnail &&\n !normalizedProps.media &&\n !normalizedProps.image\n ) {\n const manifestWithThumb = manifests.find(\n (manifest) => manifest && manifest.thumbnail,\n );\n if (manifestWithThumb && manifestWithThumb.thumbnail) {\n normalizedProps.thumbnail = manifestWithThumb.thumbnail;\n if (\n manifestWithThumb.thumbnailWidth != null &&\n normalizedProps.thumbnailWidth == null &&\n normalizedProps.imageWidth == null &&\n normalizedProps.width == null\n ) {\n normalizedProps.thumbnailWidth = manifestWithThumb.thumbnailWidth;\n }\n if (\n manifestWithThumb.thumbnailHeight != null &&\n normalizedProps.thumbnailHeight == null &&\n normalizedProps.imageHeight == null &&\n normalizedProps.height == null\n ) {\n normalizedProps.thumbnailHeight = manifestWithThumb.thumbnailHeight;\n }\n }\n }\n const rawSlug =\n normalizedProps.slug ||\n normalizedProps.id ||\n normalizedProps.title ||\n `item-${index + 1}`;\n const slug = slugify(rawSlug, `item-${index + 1}`);\n const modalId = `${galleryId}-modal-${slug}-${index + 1}`;\n const triggerLabel =\n normalizedProps.triggerLabel ||\n normalizedProps.buttonLabel ||\n normalizedProps.linkLabel ||\n `Open popup for ${normalizedProps.title || `item ${index + 1}`}`;\n const modalTitleId = `${modalId}-title`;\n const needsDescriptionId =\n normalizedProps.popupDescription ||\n normalizedProps.modalDescription ||\n normalizedProps.description ||\n normalizedProps.summary;\n const modalDescriptionId = needsDescriptionId\n ? `${modalId}-description`\n : null;\n const manifestLinks = manifests\n .map((manifest) => {\n if (!manifest) return null;\n const href = manifest.href || manifest.id || manifest.slug;\n if (!href) return null;\n return {\n id: manifest.id || manifest.slug || href,\n href,\n title: manifest.title || manifest.label || href,\n };\n })\n .filter(Boolean);\n\n return {\n index,\n key: child.key != null ? child.key : `${galleryId}-item-${index}`,\n props: normalizedProps,\n modalId,\n slug,\n modalTitleId,\n modalDescriptionId,\n triggerLabel,\n manifests: manifestLinks,\n };\n}\n\nfunction buildCaptionContent(itemProps) {\n if (itemProps.caption) return itemProps.caption;\n const kicker = itemProps.kicker || itemProps.label || itemProps.eyebrow;\n const summary = itemProps.summary || itemProps.description;\n return (\n <>\n {kicker ? <span className=\"canopy-gallery__kicker\">{kicker}</span> : null}\n {itemProps.title ? (\n <span className=\"canopy-gallery__title-text\">{itemProps.title}</span>\n ) : null}\n {renderFlexibleContent(summary, {\n inlineTag: \"span\",\n blockTag: \"div\",\n className: \"canopy-gallery__summary\",\n })}\n {renderMetaList(\n itemProps.meta,\n \"canopy-gallery__meta canopy-gallery__meta--caption\",\n )}\n </>\n );\n}\n\nfunction GalleryModal({item, closeTargetId, navItems, navGroupName}) {\n const {getString, formatString} = useLocale();\n const {\n props,\n modalId,\n modalTitleId,\n modalDescriptionId,\n triggerLabel,\n index,\n manifests,\n } = item;\n const kicker = props.kicker || props.label || props.eyebrow;\n const summary =\n props.popupDescription ||\n props.modalDescription ||\n props.description ||\n props.summary ||\n null;\n const modalTitle =\n props.popupTitle || props.modalTitle || props.title || `Item ${index + 1}`;\n const closeButtonText = getString(\"common.actions.close\", \"Close\");\n const closeButtonLabel = formatString(\n \"common.phrases.close_content\",\n \"Close {content}\",\n {content: modalTitle},\n );\n return (\n <div\n id={modalId}\n className=\"canopy-gallery__modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={modalTitleId}\n aria-describedby={modalDescriptionId || undefined}\n tabIndex={-1}\n data-canopy-gallery-modal=\"true\"\n data-canopy-gallery-close={closeTargetId}\n >\n <div className=\"canopy-gallery__modal-scrim\">\n <div className=\"canopy-gallery__modal-actions\">\n <GalleryThumbnailNav\n items={navItems}\n activeModalId={modalId}\n groupName={`${navGroupName || \"canopy-gallery\"}-${modalId}`}\n />\n <Button\n className=\"canopy-gallery__modal-close\"\n href={`#${closeTargetId}`}\n label={closeButtonText}\n aria-label={closeButtonLabel}\n variant=\"secondary\"\n />\n </div>\n <div className=\"canopy-gallery__modal-panel\">\n <button\n type=\"button\"\n className=\"canopy-gallery__nav-button canopy-gallery__nav-button--prev\"\n aria-label=\"Scroll left through gallery thumbnails\"\n data-canopy-gallery-nav-prev=\"true\"\n >\n <span\n className=\"canopy-gallery__nav-button-icon\"\n aria-hidden=\"true\"\n role=\"presentation\"\n >\n {\"<\"}\n </span>\n <span className=\"canopy-gallery__visually-hidden\">\n Previous item\n </span>\n </button>\n <button\n type=\"button\"\n className=\"canopy-gallery__nav-button canopy-gallery__nav-button--next\"\n aria-label=\"Scroll right through gallery thumbnails\"\n data-canopy-gallery-nav-next=\"true\"\n >\n <span\n className=\"canopy-gallery__nav-button-icon\"\n aria-hidden=\"true\"\n role=\"presentation\"\n >\n {\">\"}\n </span>\n <span className=\"canopy-gallery__visually-hidden\">Next item</span>\n </button>\n <header className=\"canopy-gallery__modal-header\">\n <div className=\"canopy-gallery__modal-text\">\n {kicker ? (\n <p className=\"canopy-gallery__modal-kicker\">{kicker}</p>\n ) : null}\n <h3 id={modalTitleId} className=\"canopy-gallery__modal-title\">\n {modalTitle}\n </h3>\n {renderFlexibleContent(summary, {\n inlineTag: \"p\",\n blockTag: \"div\",\n className: \"canopy-gallery__modal-summary\",\n id: modalDescriptionId || undefined,\n })}\n {renderMetaList(\n props.meta,\n \"canopy-gallery__meta canopy-gallery__meta--modal\",\n )}\n {manifests && manifests.length\n ? manifests.map((manifest) => (\n <a key={manifest.id || manifest.href} href={manifest.href}>\n {manifest.title || manifest.href}\n </a>\n ))\n : null}\n </div>\n </header>\n <div className=\"canopy-gallery__modal-body\">{props.children}</div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction GalleryFigure({item}) {\n const {props, modalId, triggerLabel} = item;\n return (\n <figure\n className=\"canopy-gallery__item\"\n data-gallery-item-index={item.index}\n >\n <div className=\"canopy-gallery__media\">{renderPreview(props)}</div>\n <figcaption className=\"canopy-gallery__caption\">\n {buildCaptionContent(props)}\n </figcaption>\n <a\n className=\"canopy-gallery__trigger\"\n href={`#${modalId}`}\n aria-haspopup=\"dialog\"\n aria-controls={modalId}\n aria-label={triggerLabel}\n data-canopy-gallery-trigger={modalId}\n >\n <span className=\"canopy-gallery__trigger-label\">{triggerLabel}</span>\n </a>\n </figure>\n );\n}\n\nfunction GalleryThumbnailNav({items, activeModalId, groupName}) {\n if (!items || items.length < 2) return null;\n const radioGroup = groupName || \"canopy-gallery-nav\";\n return (\n <nav\n className=\"canopy-gallery__nav\"\n aria-label=\"Gallery navigation\"\n data-canopy-gallery-nav=\"true\"\n >\n <div\n className=\"canopy-gallery__nav-viewport\"\n data-canopy-gallery-nav-viewport=\"true\"\n >\n <ul\n className=\"canopy-gallery__nav-list\"\n role=\"list\"\n data-canopy-gallery-nav-track=\"true\"\n >\n {items.map((item, index) => {\n const optionId = `${radioGroup}-${item.modalId || index}`;\n const isActive = item.modalId === activeModalId;\n return (\n <li\n key={`${item.key}-nav`}\n className=\"canopy-gallery__nav-item\"\n data-canopy-gallery-nav-item=\"true\"\n data-canopy-gallery-nav-selected={isActive ? \"1\" : undefined}\n >\n <input\n type=\"radio\"\n className=\"canopy-gallery__nav-radio\"\n id={optionId}\n name={radioGroup}\n value={item.modalId}\n checked={isActive ? true : undefined}\n readOnly\n data-canopy-gallery-nav-option=\"true\"\n data-canopy-gallery-nav-modal={item.modalId}\n tabIndex={isActive ? 0 : -1}\n data-canopy-gallery-nav-selected={isActive ? \"1\" : undefined}\n />\n <label\n className=\"canopy-gallery__nav-link\"\n htmlFor={optionId}\n data-canopy-gallery-nav-active={isActive ? \"1\" : undefined}\n >\n <span className=\"canopy-gallery__nav-thumb\">\n {renderPreview(item.props)}\n </span>\n <span className=\"canopy-gallery__nav-label\">\n {item.props.title || `Item ${item.index + 1}`}\n </span>\n </label>\n </li>\n );\n })}\n </ul>\n </div>\n </nav>\n );\n}\n\nexport function GalleryContent({children, flex = false}) {\n const contentClassName = [\n \"canopy-gallery-item__content\",\n flex ? \"canopy-gallery-item__content_flex\" : null,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return <div className={contentClassName}>{children}</div>;\n}\n\nexport function GalleryItem() {\n return null;\n}\n\nGalleryItem.displayName = \"GalleryItem\";\n\nfunction normalizePopupSize(value) {\n const normalized = String(value || \"full\").toLowerCase();\n return normalized === \"window\" ? \"window\" : \"full\";\n}\n\nexport default function Gallery({\n children,\n id,\n title,\n description,\n popupSize = \"full\",\n order = \"default\",\n className = \"\",\n style = {},\n}) {\n const manifestMap = useReferencedManifestMap();\n const galleryId = id ? String(id) : nextGalleryInstanceId();\n const HeadingTag = \"h3\";\n const closeTargetId = `${galleryId}-close`;\n const childArray = React.Children.toArray(children);\n const items = childArray\n .map((child, index) => normalizeItem(child, index, galleryId, manifestMap))\n .filter(Boolean);\n\n if (!items.length) return null;\n\n const popupMode = normalizePopupSize(popupSize);\n const orderMode = normalizeOrder(order);\n const orderedItems = orderMode === \"random\" ? shuffleItems(items) : items;\n const rootClassName = [\n \"canopy-gallery\",\n popupMode === \"window\"\n ? \"canopy-gallery--popup-window\"\n : \"canopy-gallery--popup-full\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const navGroupName = `${galleryId}-nav`;\n\n return (\n <section className={rootClassName} style={style} data-canopy-gallery=\"true\">\n <div\n id={closeTargetId}\n className=\"canopy-gallery__close-anchor\"\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n {(title || description) && (\n <div className=\"canopy-gallery__header\">\n {title ? (\n <HeadingTag className=\"canopy-gallery__heading\">{title}</HeadingTag>\n ) : null}\n {description ? (\n <p className=\"canopy-gallery__description\">{description}</p>\n ) : null}\n </div>\n )}\n <div className=\"canopy-gallery__grid\">\n {orderedItems.map((item) => (\n <GalleryFigure key={item.key} item={item} />\n ))}\n </div>\n <div className=\"canopy-gallery__modals\">\n {orderedItems.map((item) => (\n <GalleryModal\n key={`${item.modalId}-modal`}\n item={item}\n closeTargetId={closeTargetId}\n navItems={orderedItems}\n navGroupName={navGroupName}\n />\n ))}\n </div>\n <script\n data-canopy-gallery-script=\"true\"\n dangerouslySetInnerHTML={{__html: INLINE_SCRIPT}}\n />\n </section>\n );\n}\n\nGallery.Item = GalleryItem;\nGallery.Content = GalleryContent;\n", "import React from 'react';\n\nexport default function MdxSearchResults(props) {\n let json = '{}';\n try { json = JSON.stringify(props || {}); } catch (_) { json = '{}'; }\n return (\n <div data-canopy-search-results=\"1\">\n <script type=\"application/json\" dangerouslySetInnerHTML={{ __html: json }} />\n </div>\n );\n}\n\n", "import React from 'react';\n\nexport default function SearchSummary(props) {\n let json = '{}';\n try { json = JSON.stringify(props || {}); } catch (_) { json = '{}'; }\n return (\n <div data-canopy-search-summary=\"1\">\n <script type=\"application/json\" dangerouslySetInnerHTML={{ __html: json }} />\n </div>\n );\n}\n\n", "import React from 'react';\n\nexport default function MdxSearchTabs(props) {\n let json = '{}';\n try { json = JSON.stringify(props || {}); } catch (_) { json = '{}'; }\n return (\n <div data-canopy-search-tabs=\"1\">\n <script type=\"application/json\" dangerouslySetInnerHTML={{ __html: json }} />\n </div>\n );\n}\n\n", "import React from 'react';\nimport SearchSummary from './SearchSummary.jsx';\nimport SearchTabs from './MdxSearchTabs.jsx';\nimport SearchResults from './MdxSearchResults.jsx';\n\nexport default function MdxSearch(props = {}) {\n const {\n layout,\n tabsProps = {},\n summaryProps = {},\n resultsProps = {},\n className = '',\n showTabs = true,\n showSummary = true,\n showResults = true,\n children,\n } = props || {};\n const resultsPayload =\n resultsProps && typeof resultsProps === 'object'\n ? { ...resultsProps }\n : {};\n if (typeof layout !== 'undefined' && layout !== null && !resultsPayload.layout) {\n resultsPayload.layout = layout;\n }\n const classes = ['canopy-search', className].filter(Boolean).join(' ');\n\n return (\n <section className={classes} data-canopy-search=\"1\">\n {showTabs ? <SearchTabs {...tabsProps} /> : null}\n {showSummary ? <SearchSummary {...summaryProps} /> : null}\n {showResults ? <SearchResults {...resultsPayload} /> : null}\n {children || null}\n </section>\n );\n}\n", "import React from 'react';\nimport SearchPanelForm, { resolveSearchPath } from '../search/SearchPanelForm.jsx';\nimport SearchPanelTeaserResults from '../search/SearchPanelTeaserResults.jsx';\nimport {useLocale} from \"../locale/index.js\";\n\n// SSR-safe placeholder for the search form modal, composed from SearchPanel parts.\n// This ensures a single JSX source of truth for form/panel markup.\nexport default function MdxSearchFormModal(props = {}) {\n const {\n placeholder: placeholderProp,\n hotkey = 'mod+k',\n maxResults = 8,\n groupOrder = ['work', 'page'],\n button = true, // kept for backward compat; ignored by teaser form\n buttonLabel: buttonLabelProp,\n label,\n searchPath = '/search/index.html',\n } = props || {};\n const {getString} = useLocale();\n const placeholder =\n placeholderProp != null\n ? placeholderProp\n : getString('common.phrases.placeholder_search', 'Search\u2026');\n const resolvedButtonLabel =\n buttonLabelProp != null\n ? buttonLabelProp\n : getString('common.nouns.search', 'Search');\n const text =\n typeof label === 'string' && label.trim() ? label.trim() : resolvedButtonLabel;\n const resolvedSearchPath = resolveSearchPath(searchPath);\n const data = { placeholder, hotkey, maxResults, groupOrder, label: text, searchPath: resolvedSearchPath };\n return (\n <div data-canopy-search-form className=\"flex-1 min-w-0\">\n <div className=\"relative w-full\">\n <SearchPanelForm placeholder={placeholder} buttonLabel={resolvedButtonLabel} label={label} searchPath={resolvedSearchPath} />\n <SearchPanelTeaserResults />\n </div>\n <script type=\"application/json\" dangerouslySetInnerHTML={{ __html: JSON.stringify(data) }} />\n </div>\n );\n}\n", "import React from \"react\";\nimport slugify from \"slugify\";\nimport {\n Label as CloverLabel,\n Metadata as CloverMetadata,\n RequiredStatement as CloverRequiredStatement,\n Summary as CloverSummary,\n} from \"@samvera/clover-iiif/primitives\";\n\nfunction hasInternationalValue(value) {\n if (!value || typeof value !== \"object\") return false;\n return Object.keys(value).some((key) => {\n const entries = value[key];\n return (\n Array.isArray(entries) &&\n entries.some((entry) => String(entry || \"\").trim().length > 0)\n );\n });\n}\n\nfunction ensureMetadata(items) {\n if (!Array.isArray(items)) return [];\n return items.filter((item) => {\n if (!item || typeof item !== \"object\") return false;\n const { label, value } = item;\n return hasInternationalValue(label) && hasInternationalValue(value);\n });\n}\n\nfunction getFirstIntlValue(value) {\n if (!value) return \"\";\n if (typeof value === \"string\") return value;\n try {\n const keys = Object.keys(value || {});\n for (const key of keys) {\n const arr = Array.isArray(value[key]) ? value[key] : [];\n for (const entry of arr) {\n if (entry == null) continue;\n const str = typeof entry === \"string\" ? entry : String(entry);\n if (str) return str;\n }\n }\n } catch (_) {}\n return \"\";\n}\n\nfunction normalizeMetadataLabelText(label) {\n if (!label) return \"\";\n return label.trim().replace(/[:\\s]+$/g, \"\").toLowerCase();\n}\n\nfunction normalizeMetadataLabelValue(value) {\n const raw = getFirstIntlValue(value);\n if (!raw) return \"\";\n return normalizeMetadataLabelText(String(raw));\n}\n\nfunction buildFacetLabelMap(manifest) {\n const source =\n manifest && Array.isArray(manifest.__canopyMetadataFacets)\n ? manifest.__canopyMetadataFacets\n : null;\n if (!source || !source.length) return null;\n const map = new Map();\n for (const entry of source) {\n if (!entry || !entry.normalized) continue;\n map.set(entry.normalized, entry);\n }\n return map.size ? map : null;\n}\n\nconst SLUG_OPTIONS = {lower: true, strict: true, trim: true};\n\nfunction toValueSlug(value) {\n if (value == null) return \"\";\n try {\n const raw = typeof value === \"string\" ? value : String(value);\n return slugify(raw, SLUG_OPTIONS);\n } catch (_) {\n return \"\";\n }\n}\n\nfunction normalizeBasePath(value) {\n if (value == null) return \"\";\n const raw = String(value).trim();\n if (!raw) return \"\";\n const prefixed = raw.startsWith(\"/\") ? raw : `/${raw}`;\n const cleaned = prefixed.replace(/\\/+$/, \"\");\n return cleaned === \"/\" ? \"\" : cleaned;\n}\n\nlet cachedBasePath = null;\nfunction readBasePath() {\n if (cachedBasePath !== null) return cachedBasePath;\n const candidates = [];\n try {\n if (typeof window !== \"undefined\" && window.CANOPY_BASE_PATH != null) {\n candidates.push(window.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n try {\n if (\n typeof globalThis !== \"undefined\" &&\n globalThis.CANOPY_BASE_PATH != null\n ) {\n candidates.push(globalThis.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n try {\n if (typeof process !== \"undefined\" && process.env) {\n candidates.push(process.env.CANOPY_BASE_PATH);\n }\n } catch (_) {}\n for (const candidate of candidates) {\n const normalized = normalizeBasePath(candidate);\n if (normalized) {\n cachedBasePath = normalized;\n return cachedBasePath;\n }\n }\n cachedBasePath = \"\";\n return cachedBasePath;\n}\n\nfunction withBasePath(href) {\n try {\n const raw = typeof href === \"string\" ? href.trim() : \"\";\n if (!raw) return href;\n if (/^(?:[a-z][a-z0-9+.-]*:|\\/\\/|#)/i.test(raw)) return raw;\n if (!raw.startsWith(\"/\")) return raw;\n const base = readBasePath();\n if (!base) return raw;\n if (raw === base || raw.startsWith(`${base}/`)) return raw;\n return `${base}${raw}`;\n } catch (_) {\n return href;\n }\n}\n\nfunction buildFacetSearchHref(labelSlug, valueSlug) {\n if (!labelSlug || !valueSlug) return \"\";\n try {\n const params = new URLSearchParams();\n params.set(\"type\", \"work\");\n params.set(labelSlug, valueSlug);\n const path = `/search?${params.toString()}`;\n return withBasePath(path);\n } catch (_) {\n return \"\";\n }\n}\n\nfunction MetadataFacetLink(props) {\n const {value, facetSlug} = props;\n const text = value == null ? \"\" : String(value);\n if (!text) return null;\n const valueSlug = facetSlug ? toValueSlug(text) : \"\";\n const href = facetSlug && valueSlug ? buildFacetSearchHref(facetSlug, valueSlug) : \"\";\n if (!href) return text;\n return (\n <a\n href={href}\n data-canopy-facet-link=\"\"\n data-facet-label={facetSlug}\n data-facet-value={valueSlug}\n >\n {text}\n </a>\n );\n}\n\nfunction buildFacetCustomValueContent(items, manifest) {\n if (!Array.isArray(items) || !items.length || !manifest) return [];\n const facetMap = buildFacetLabelMap(manifest);\n if (!facetMap) return [];\n const seen = new Set();\n const custom = [];\n for (const item of items) {\n if (!item || !item.label) continue;\n const normalized = normalizeMetadataLabelValue(item.label);\n if (!normalized || seen.has(normalized)) continue;\n if (!facetMap.has(normalized)) continue;\n const facet = facetMap.get(normalized);\n seen.add(normalized);\n custom.push({\n matchingLabel: item.label,\n Content: <MetadataFacetLink facetSlug={facet.slug} />,\n });\n }\n return custom;\n}\n\nfunction normalizeMatchingLabel(label) {\n if (!label) return \"\";\n return normalizeMetadataLabelValue(label);\n}\n\nfunction mergeCustomValueContent(userContent, autoContent) {\n const merged = [];\n const seen = new Set();\n const addEntry = (entry, track = false) => {\n if (!entry || !entry.matchingLabel || !entry.Content) return;\n merged.push(entry);\n if (!track) return;\n const normalized = normalizeMatchingLabel(entry.matchingLabel);\n if (normalized) seen.add(normalized);\n };\n const userList = Array.isArray(userContent) ? userContent : [];\n userList.forEach((entry) => addEntry(entry, true));\n const autoList = Array.isArray(autoContent) ? autoContent : [];\n autoList.forEach((entry) => {\n const normalized = normalizeMatchingLabel(entry.matchingLabel);\n if (normalized && seen.has(normalized)) return;\n addEntry(entry, false);\n });\n return merged.length ? merged : undefined;\n}\n\nexport function Label({ manifest, label, ...rest }) {\n const intl = label || (manifest && manifest.label);\n if (!hasInternationalValue(intl)) return null;\n return <CloverLabel label={intl} {...rest} />;\n}\n\nexport function Summary({ manifest, summary, ...rest }) {\n const intl = summary || (manifest && manifest.summary);\n if (!hasInternationalValue(intl)) return null;\n return <CloverSummary summary={intl} {...rest} />;\n}\n\nexport function Metadata({ manifest, metadata, customValueContent, ...rest }) {\n const items = ensureMetadata(metadata || (manifest && manifest.metadata));\n if (!items.length) return null;\n const autoCustomContent = buildFacetCustomValueContent(items, manifest);\n const mergedCustomContent = mergeCustomValueContent(\n customValueContent,\n autoCustomContent\n );\n return (\n <CloverMetadata\n metadata={items}\n customValueContent={mergedCustomContent}\n {...rest}\n />\n );\n}\n\nexport function RequiredStatement({ manifest, requiredStatement, ...rest }) {\n const stmt = requiredStatement || (manifest && manifest.requiredStatement);\n if (\n !stmt ||\n !hasInternationalValue(stmt.label) ||\n !hasInternationalValue(stmt.value)\n ) {\n return null;\n }\n return <CloverRequiredStatement requiredStatement={stmt} {...rest} />;\n}\n\nexport const Primitives = {\n Label,\n Summary,\n Metadata,\n RequiredStatement,\n};\n\nexport default Primitives;\n", "import React from \"react\";\n\nexport function Id({title = \"IIIF Manifest\", id, ...props}) {\n return (\n <dl>\n <dt>{title}</dt>\n <dd>\n <a href={id}>{id}</a>\n </dd>\n </dl>\n );\n}\n", "import React from \"react\";\n\nfunction parseHighlightAttr(attr) {\n if (!attr) return new Set();\n const cleaned = String(attr || \"\").trim();\n if (!cleaned) return new Set();\n const segments = cleaned\n .split(\",\")\n .map((segment) => segment.trim())\n .filter(Boolean);\n const lines = new Set();\n for (const segment of segments) {\n if (!segment) continue;\n if (/^\\d+-\\d+$/.test(segment)) {\n const [startRaw, endRaw] = segment.split(\"-\");\n const start = Number(startRaw);\n const end = Number(endRaw);\n if (Number.isFinite(start) && Number.isFinite(end) && end >= start) {\n for (let i = start; i <= end; i += 1) {\n lines.add(i);\n }\n }\n } else if (/^\\d+$/.test(segment)) {\n const value = Number(segment);\n if (Number.isFinite(value)) lines.add(value);\n }\n }\n return lines;\n}\n\nfunction normaliseCode(children) {\n if (children == null) return \"\";\n if (typeof children === \"string\") return children;\n if (Array.isArray(children)) {\n return children\n .map((child) => (typeof child === \"string\" ? child : \"\"))\n .join(\"\");\n }\n if (typeof children === \"object\" && typeof children.toString === \"function\") {\n return children.toString();\n }\n return \"\";\n}\n\nconst baseLineStyle = {\n display: \"block\",\n padding: \"0.125rem 1.25rem\",\n boxSizing: \"border-box\",\n};\n\nconst highlightBaseStyle = {\n background:\n \"linear-gradient(to right, var(--color-accent-200, #bfdbfe), var(--color-accent-100, #bfdbfe))\",\n};\n\nexport default function DocsCodeBlock(props = {}) {\n const {children, ...rest} = props;\n const childArray = React.Children.toArray(children);\n const codeElement = childArray.find((el) => React.isValidElement(el));\n if (!codeElement || !codeElement.props) {\n return React.createElement(\"pre\", props);\n }\n\n const {\n className = \"\",\n children: codeChildren,\n ...codeProps\n } = codeElement.props;\n const rawCode = normaliseCode(codeChildren);\n const trimmedCode = rawCode.endsWith(\"\\n\") ? rawCode.slice(0, -1) : rawCode;\n const lines = trimmedCode.split(\"\\n\");\n const filename = codeProps[\"data-filename\"] || \"\";\n const highlightAttr = codeProps[\"data-highlight\"] || \"\";\n const highlightSet = parseHighlightAttr(highlightAttr);\n const copyAttr = codeProps[\"data-copy\"];\n const enableCopy =\n copyAttr !== undefined\n ? copyAttr === true || copyAttr === \"true\" || copyAttr === \"\"\n : false;\n\n const [copied, setCopied] = React.useState(false);\n const buttonRef = React.useRef(null);\n\n const handleCopy = React.useCallback(async () => {\n const text = trimmedCode;\n try {\n if (\n typeof navigator !== \"undefined\" &&\n navigator.clipboard &&\n navigator.clipboard.writeText\n ) {\n await navigator.clipboard.writeText(text);\n } else {\n const textarea = document.createElement(\"textarea\");\n textarea.value = text;\n textarea.setAttribute(\"readonly\", \"\");\n textarea.style.position = \"absolute\";\n textarea.style.left = \"-9999px\";\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textarea);\n }\n setCopied(true);\n setTimeout(() => setCopied(false), 5000);\n } catch (_) {\n setCopied(false);\n }\n }, [trimmedCode]);\n\n React.useEffect(() => {\n if (buttonRef.current) {\n buttonRef.current.setAttribute(\"data-docs-copy-hydrated\", \"true\");\n }\n }, []);\n\n React.useEffect(() => {\n if (!buttonRef.current) return;\n if (copied) buttonRef.current.setAttribute(\"data-docs-copy-active\", \"true\");\n else buttonRef.current.removeAttribute(\"data-docs-copy-active\");\n }, [copied]);\n\n const containerStyle = {\n borderRadius: \"12px\",\n overflow: \"hidden\",\n margin: \"1.5rem 0\",\n background: \"var(--color-accent-100)\",\n fontFamily: \"var(--font-mono)\",\n fontSize: \"0.8333rem\",\n };\n\n const headerStyle = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"1rem 1.25rem\",\n fontWeight: 700,\n background: \"var(--color-accent-100)\",\n borderBottom: \"1px solid var(--color-accent-200)\",\n color: \"var(--color-gray-900)\",\n };\n\n const preStyle = {\n margin: 0,\n background: \"var(--color-accent-100)\",\n color: \"var(--color-accent-800)\",\n lineHeight: 1.55,\n padding: \"1rem 0\",\n overflowX: \"auto\",\n };\n\n const buttonStyle = {\n border: \"1px solid var(--color-accent-200, )\",\n borderRadius: \"6px\",\n padding: \"0.25rem 0.65rem\",\n fontSize: \"0.7rem\",\n fontWeight: 600,\n color: \"var(--color-accent-default)\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0.3rem\",\n background: \"var(--docs-copy-bg, rgba(255,255,255,0.08))\",\n transform: \"var(--docs-copy-transform, scale(1))\",\n transition:\n \"transform 150ms ease, background-color 150ms ease, color 150ms ease\",\n };\n\n const codeStyle = {\n display: \"block\",\n padding: 0,\n };\n\n const lineContentStyle = {\n whiteSpace: \"pre\",\n display: \"inline\",\n };\n\n const showFilename = Boolean(filename);\n const showHeader = showFilename || enableCopy;\n\n const {style: preStyleOverride, className: preClassName, ...preRest} = rest;\n const mergedPreStyle = Object.assign({}, preStyle, preStyleOverride || {});\n\n const lineElements = lines.map((line, index) => {\n const lineNumber = index + 1;\n const highlight = highlightSet.has(lineNumber);\n const style = highlight\n ? {...baseLineStyle, ...highlightBaseStyle}\n : baseLineStyle;\n const displayLine = line === \"\" ? \" \" : line;\n return React.createElement(\n \"span\",\n {\n key: lineNumber,\n style,\n \"data-docs-code-line\": line,\n },\n React.createElement(\"span\", {style: lineContentStyle}, displayLine),\n );\n });\n\n return React.createElement(\n \"div\",\n {\n style: containerStyle,\n \"data-docs-code-block\": \"true\",\n },\n showHeader\n ? React.createElement(\n \"div\",\n {style: headerStyle},\n React.createElement(\"span\", null, showFilename ? filename : null),\n enableCopy\n ? React.createElement(\n \"button\",\n {\n ref: buttonRef,\n type: \"button\",\n onClick: handleCopy,\n \"aria-live\": \"polite\",\n \"aria-label\": copied\n ? \"Copied to clipboard\"\n : \"Copy code to clipboard\",\n \"data-docs-copy-button\": \"true\",\n style: buttonStyle,\n },\n React.createElement(\"span\", null, \"Copy\"),\n React.createElement(\n \"span\",\n {\n \"aria-hidden\": \"true\",\n \"data-docs-copy-icon\": \"true\",\n },\n \"\\u2713\",\n ),\n )\n : null,\n )\n : null,\n enableCopy\n ? React.createElement(\"textarea\", {\n \"data-docs-copy-source\": \"true\",\n tabIndex: -1,\n readOnly: true,\n \"aria-hidden\": \"true\",\n defaultValue: trimmedCode,\n style: {\n position: \"absolute\",\n left: \"-9999px\",\n width: 1,\n height: 1,\n opacity: 0,\n pointerEvents: \"none\",\n },\n })\n : null,\n React.createElement(\n \"pre\",\n {...preRest, className: preClassName, style: mergedPreStyle},\n React.createElement(\"code\", {style: codeStyle}, lineElements),\n ),\n );\n}\n", "import React from 'react';\n\nexport default function MarkdownTable({ className = '', ...rest }) {\n const merged = ['markdown-table', className].filter(Boolean).join(' ');\n return (\n <div className=\"markdown-table__frame\">\n <table className={merged} {...rest} />\n </div>\n );\n}\n", "import React from \"react\";\n\nexport function CanopyDiagram() {\n return (\n <div className=\"canopy-diagram\">\n <section className=\"canopy-diagram__section canopy-diagram__section--collections\">\n <h3>IIIF Providers</h3>\n <span className=\"canopy-diagram__section-summary\">\n Source collections contribute 45 manifests while 5 manifests are\n directly retrieved as-is via IIIF endpoints.\n </span>\n <div className=\"canopy-diagram__grid\">\n <article>\n <h4>Collection A</h4>\n <ul>\n <li>30 Manifests</li>\n <li>\n <em>Manuscripts</em>\n </li>\n </ul>\n </article>\n <article>\n <h4>Collection B</h4>\n <ul>\n <li>15 Manifests</li>\n <li>\n <em>Portraits</em>\n </li>\n </ul>\n </article>\n <article>\n <h4>Manifests (direct)</h4>\n <ul>\n <li>5 Manifests</li>\n <li>\n <em>Scrapbooks</em>\n </li>\n </ul>\n </article>\n </div>\n </section>\n\n <div className=\"canopy-diagram__arrow\" aria-hidden=\"true\">\n <span className=\"canopy-diagram__arrow-line\" />\n <span className=\"canopy-diagram__arrow-head\" />\n </div>\n\n <section className=\"canopy-diagram__section canopy-diagram__section--build\">\n <h3>Canopy Build Process</h3>\n <span className=\"canopy-diagram__section-summary\">\n Canopy retrieves collections and syncs all manifests, page content,\n and annotations before bundling the site.\n </span>\n <div className=\"canopy-diagram__grid\">\n <article>\n <h4>Automated content</h4>\n <ul>\n <li>50 manifests \u2192 50 work pages</li>\n <li>One page per manifest</li>\n <li>Customize page layout</li>\n </ul>\n </article>\n <article>\n <h4>Contextual content</h4>\n <ul>\n <li>Markdown & MDX pages</li>\n <li>Author narratives</li>\n <li>Reference manifests inline</li>\n </ul>\n </article>\n <article>\n <h4>Search index</h4>\n <ul>\n <li>Combines works + pages</li>\n <li>Customize result layout</li>\n <li>Optional annotations</li>\n </ul>\n </article>\n </div>\n </section>\n\n <div className=\"canopy-diagram__arrow\" aria-hidden=\"true\">\n <span className=\"canopy-diagram__arrow-line\" />\n <span className=\"canopy-diagram__arrow-head\" />\n </div>\n\n <section className=\"canopy-diagram__section canopy-diagram__section--output\">\n <h3>Static Digital Project</h3>\n <span className=\"canopy-diagram__section-summary\">\n The output is a lightweight bundle of HTML, CSS, JS, and JSON assets\n that can deploy anywhere.\n </span>\n <div className=\"canopy-diagram__grid\">\n <article>\n <h4>Work pages</h4>\n <ul>\n <li>50 generated HTML pages</li>\n <li>Each links back to source manifests</li>\n <li>Styled with Canopy components</li>\n </ul>\n </article>\n <article>\n <h4>Custom pages</h4>\n <ul>\n <li>Markdown & MDX-authored content</li>\n <li>Reusable layouts for narratives</li>\n <li>Embed IIIF media & interstitials</li>\n </ul>\n </article>\n <article>\n <h4>Search bundle</h4>\n <ul>\n <li>Static FlexSearch index</li>\n <li>Works + pages share records</li>\n <li>Optional annotation dataset</li>\n </ul>\n </article>\n </div>\n </section>\n </div>\n );\n}\n", "/* eslint-disable import/namespace */\nimport React from \"react\";\nimport * as radixColors from \"@radix-ui/colors\";\n\nconst COLOR_SCALES = [\n {label: \"Accent\", prefix: \"--color-accent\"},\n {label: \"Gray\", prefix: \"--color-gray\"},\n];\n\nconst COLOR_STOPS = [\n \"50\",\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\",\n];\n\nconst ACCENT_COLOR_NAMES = [\n \"gray\",\n \"gold\",\n \"bronze\",\n \"brown\",\n \"yellow\",\n \"amber\",\n \"orange\",\n \"tomato\",\n \"red\",\n \"ruby\",\n \"crimson\",\n \"pink\",\n \"plum\",\n \"purple\",\n \"violet\",\n \"iris\",\n \"indigo\",\n \"blue\",\n \"cyan\",\n \"teal\",\n \"jade\",\n \"green\",\n \"grass\",\n \"lime\",\n \"mint\",\n \"sky\",\n];\n\nconst GRAY_COLOR_NAMES = [\"gray\", \"mauve\", \"slate\", \"sage\", \"olive\", \"sand\"];\nconst APPEARANCES = [\"light\", \"dark\"];\nconst DEFAULTS = {\n appearance: \"light\",\n accentColor: \"indigo\",\n grayColor: \"slate\",\n};\nconst LEVELS = COLOR_STOPS;\nconst STEP_MAP = {\n 50: 1,\n 100: 3,\n 200: 4,\n 300: 6,\n 400: 7,\n 500: 8,\n 600: 9,\n 700: 10,\n 800: 11,\n 900: 12,\n};\n\nconst Section = ({title, description, children}) => (\n <div className=\"canopy-theme-showcase__section\">\n <h3 className=\"canopy-theme-showcase__section-title\">{title}</h3>\n {description ? (\n <p className=\"canopy-theme-showcase__section-description\">\n {description}\n </p>\n ) : null}\n {children}\n </div>\n);\n\nconst ColorScaleRow = ({label, prefix}) => (\n <div className=\"canopy-theme-showcase__scale-row\">\n <div className=\"canopy-theme-showcase__scale-label\">\n <strong>{label}</strong>\n </div>\n <div className=\"canopy-theme-showcase__scale-track\">\n {COLOR_STOPS.map((stop) => (\n <div\n key={`${label}-${stop}`}\n className=\"canopy-theme-showcase__scale-stop\"\n >\n <span\n className=\"canopy-theme-showcase__scale-chip\"\n style={{backgroundColor: `var(${prefix}-${stop})`}}\n />\n <span className=\"canopy-theme-showcase__scale-token\">{stop}</span>\n </div>\n ))}\n </div>\n </div>\n);\n\nconst AVAILABLE = new Set(\n Object.keys(radixColors).filter(\n (key) =>\n /^[a-z]+$/i.test(key) && radixColors[key] && radixColors[key][`${key}1`]\n )\n);\n\nfunction normalizeAppearance(raw) {\n if (!raw) return \"light\";\n return String(raw).trim().toLowerCase() === \"dark\" ? \"dark\" : \"light\";\n}\n\nfunction darkenHex(hex, amount = 0.15) {\n if (!hex) return hex;\n const normalized = hex.replace(\"#\", \"\");\n if (!/^[0-9a-fA-F]{6}$/.test(normalized)) return hex;\n const num = parseInt(normalized, 16);\n const r = (num >> 16) & 255;\n const g = (num >> 8) & 255;\n const b = num & 255;\n const clamp = (value) => Math.max(0, Math.min(255, Math.round(value)));\n const toHex = (value) => clamp(value).toString(16).padStart(2, \"0\");\n const factor = 1 - amount;\n return `#${toHex(r * factor)}${toHex(g * factor)}${toHex(b * factor)}`;\n}\n\nfunction lightenHex(hex, amount = 0.15) {\n if (!hex) return hex;\n const normalized = hex.replace(\"#\", \"\");\n if (!/^[0-9a-fA-F]{6}$/.test(normalized)) return hex;\n const num = parseInt(normalized, 16);\n const r = (num >> 16) & 255;\n const g = (num >> 8) & 255;\n const b = num & 255;\n const clamp = (value) => Math.max(0, Math.min(255, Math.round(value)));\n const toHex = (value) => clamp(value).toString(16).padStart(2, \"0\");\n const adjust = (value) => value + (255 - value) * amount;\n return `#${toHex(adjust(r))}${toHex(adjust(g))}${toHex(adjust(b))}`;\n}\n\nfunction adjustSaturation(hex, amount = 0.15) {\n if (!hex) return hex;\n const normalized = hex.replace(\"#\", \"\");\n if (!/^[0-9a-fA-F]{6}$/.test(normalized)) return hex;\n const num = parseInt(normalized, 16);\n let r = ((num >> 16) & 255) / 255;\n let g = ((num >> 8) & 255) / 255;\n let b = (num & 255) / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n default:\n h = (r - g) / d + 4;\n }\n h /= 6;\n }\n const delta = Number(amount);\n if (!Number.isFinite(delta) || delta === 0) return hex;\n s = Math.max(0, Math.min(1, s + delta));\n const hueToRgb = (p, q, t) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n let rOut;\n let gOut;\n let bOut;\n if (s === 0) {\n rOut = gOut = bOut = l;\n } else {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n rOut = hueToRgb(p, q, h + 1 / 3);\n gOut = hueToRgb(p, q, h);\n bOut = hueToRgb(p, q, h - 1 / 3);\n }\n const toHex = (value) =>\n Math.round(Math.max(0, Math.min(1, value)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n return `#${toHex(rOut)}${toHex(gOut)}${toHex(bOut)}`;\n}\n\nfunction mixHexColors(colorA, colorB, amount = 0.5) {\n const normalize = (hex) =>\n hex && /^[0-9a-fA-F]{6}$/.test(hex.replace(\"#\", \"\"))\n ? hex.replace(\"#\", \"\")\n : null;\n const first = normalize(colorA);\n const second = normalize(colorB);\n if (!first || !second) return colorA || colorB || null;\n const a = parseInt(first, 16);\n const b = parseInt(second, 16);\n const clampAmount = Math.max(0, Math.min(1, Number(amount) || 0));\n const mixChannel = (shift) =>\n Math.round(\n ((a >> shift) & 255) +\n (((b >> shift) & 255) - ((a >> shift) & 255)) * clampAmount\n );\n const toHex = (value) => value.toString(16).padStart(2, \"0\");\n const r = mixChannel(16);\n const g = mixChannel(8);\n const bl = mixChannel(0);\n return `#${toHex(r)}${toHex(g)}${toHex(bl)}`;\n}\n\nfunction normalizeDarkenAmount(raw) {\n const value = Number(raw);\n if (!Number.isFinite(value)) return null;\n return Math.min(0.95, Math.max(0, value));\n}\n\nfunction resolveRadixPalette(name, appearance) {\n if (!name || !AVAILABLE.has(name)) return null;\n const paletteKey = appearance === \"dark\" ? `${name}Dark` : name;\n const palette = radixColors[paletteKey];\n if (palette && palette[`${name}1`]) return palette;\n const fallback = radixColors[name];\n return fallback && fallback[`${name}1`] ? fallback : null;\n}\n\nfunction toTailwindScale(name, options = {}) {\n if (!name || !AVAILABLE.has(name)) return null;\n const appearance = normalizeAppearance(options.appearance);\n const palette = resolveRadixPalette(name, appearance);\n if (!palette) return null;\n const scale = {};\n for (const lvl of LEVELS) {\n const radixStep = STEP_MAP[lvl];\n const key = `${name}${radixStep}`;\n const value = palette[key];\n if (!value) return null;\n scale[lvl] = value;\n }\n return scale;\n}\n\nfunction buildPreviewData() {\n const data = {\n appearances: APPEARANCES,\n accentColors: ACCENT_COLOR_NAMES,\n grayColors: GRAY_COLOR_NAMES,\n defaults: DEFAULTS,\n scales: {},\n };\n for (const appearance of APPEARANCES) {\n const accentScales = {};\n const grayScales = {};\n for (const accent of ACCENT_COLOR_NAMES) {\n const scale = toTailwindScale(accent, {appearance});\n if (scale) accentScales[accent] = scale;\n }\n for (const gray of GRAY_COLOR_NAMES) {\n const scale = toTailwindScale(gray, {\n appearance,\n darken900Amount: 0.4,\n saturate700: false,\n });\n if (scale) grayScales[gray] = scale;\n }\n data.scales[appearance] = {accent: accentScales, gray: grayScales};\n }\n return data;\n}\n\nconst PREVIEW_DATA = buildPreviewData();\n\nfunction encodeJson(value) {\n return JSON.stringify(value).replace(/</g, \"\\\\u003c\");\n}\n\nconst ColorsLabeled = ({colors, type, getRadixSwatch}) => (\n <div className=\"canopy-theme-showcase__swatch-grid\">\n {colors.map((name) => {\n const colorValue = getRadixSwatch(name);\n return (\n <button\n key={`${type}-${name}`}\n type=\"button\"\n className=\"canopy-theme-showcase__swatch\"\n data-theme-swatch\n data-theme-swatch-type={type}\n data-theme-swatch-value={name}\n aria-pressed=\"false\"\n >\n <span\n className=\"canopy-theme-showcase__swatch-chip\"\n style={{background: colorValue || \"var(--color-gray-200)\"}}\n />\n <span className=\"canopy-theme-showcase__swatch-label\">{name}</span>\n </button>\n );\n })}\n </div>\n);\n\nexport default function ThemeShowcase() {\n const accentColors = ACCENT_COLOR_NAMES;\n const grayColors = GRAY_COLOR_NAMES;\n\n const getRadixSwatch = (name) => {\n if (!name) return null;\n const scale = radixColors[name];\n if (!scale) return null;\n return scale[`${name}9`] || Object.values(scale)[8];\n };\n\n const styles = `\n .canopy-theme-showcase {\n margin: 2.618rem 0;\n }\n .canopy-theme-showcase__appearance-buttons {\n display: inline-flex;\n gap: 0.35rem;\n flex-wrap: wrap;\n }\n .canopy-theme-showcase__appearance-button {\n border-radius: 999px;\n border: 1px solid var(--color-gray-300);\n background: var(--color-gray-50);\n color: var(--color-gray-900);\n padding: 0.3rem 0.9rem;\n font-size: 0.85rem;\n cursor: pointer;\n transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;\n }\n .canopy-theme-showcase__appearance-button.is-active {\n border-color: var(--color-accent-default);\n color: var(--color-accent-default);\n background: color-mix(in srgb, var(--color-accent-100) 65%, transparent);\n }\n .canopy-theme-showcase__reset {\n border-radius: 999px;\n border: 1px solid var(--color-gray-400);\n background: transparent;\n padding: 0.35rem 1.2rem;\n font-size: 0.85rem;\n cursor: pointer;\n color: var(--color-gray-900);\n }\n .canopy-theme-showcase__section {\n margin: 2.618rem 0;\n }\n .canopy-theme-showcase__section:first-of-type {\n margin-top: 0;\n }\n .canopy-theme-showcase__section:last-of-type {\n margin-bottom: 0;\n }\n .canopy-theme-showcase__section-title {\n margin: 0 0 0.382rem;\n font-size: 1.382rem;\n }\n .canopy-theme-showcase__section-description {\n margin: 0 0 1rem;\n color: var(--color-gray-muted);\n line-height: 1.5;\n }\n .canopy-theme-showcase__scale-group {\n display: flex;\n flex-direction: column;\n gap: 1.618rem;\n }\n .canopy-theme-showcase__scale-row {\n display: flex;\n gap: 1rem;\n align-items: center;\n flex-wrap: wrap;\n }\n .canopy-theme-showcase__scale-label {\n min-width: 90px;\n font-size: 0.9222rem;\n }\n .canopy-theme-showcase__scale-track {\n display: flex;\n flex: 1;\n overflow: auto;\n }\n .canopy-theme-showcase__scale-stop {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.382rem;\n overflow: hidden;\n\n &:first-child {\n .canopy-theme-showcase__scale-chip {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n }\n }\n\n &:last-child {\n .canopy-theme-showcase__scale-chip {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n }\n }\n }\n .canopy-theme-showcase__scale-chip {\n display: block;\n width: 100%;\n min-height: 2.618rem;\n }\n .canopy-theme-showcase__scale-token {\n font-size: 0.8333rem;\n }\n .canopy-theme-showcase__swatch-grid {\n display: flex;\n flex-wrap: wrap;\n gap: 1rem;\n }\n .canopy-theme-showcase__swatch {\n width: 5.5rem;\n border: 1px solid var(--color-gray-200);\n border-radius: 0.75rem;\n background: var(--color-gray-50);\n padding: 0.5rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.35rem;\n cursor: pointer;\n transition: border-color 0.2s ease, box-shadow 0.2s ease background 0.2s ease, color 0.2s ease;\n font-weight: 300;\n }\n .canopy-theme-showcase__swatch:focus-visible {\n outline: 2px solid var(--color-accent-default);\n outline-offset: 3px;\n }\n .canopy-theme-showcase__swatch[data-swatch-active=\"true\"] {\n border-color: var(--color-accent-default);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-accent-200) 70%, transparent);\n background: linear-gradient(135deg, var(--color-accent-50), var(--color-accent-100));\n color: var(--color-gray-900);\n font-weight: 400;\n }\n .canopy-theme-showcase__swatch[data-swatch-active=\"true\"][data-theme-swatch-type=\"gray\"] {\n border-color: var(--color-gray-default);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-gray-200) 70%, transparent);\n background: linear-gradient(135deg, var(--color-gray-50), var(--color-gray-100));\n }\n .canopy-theme-showcase__swatch-chip {\n width: 100%;\n height: 2.618rem;\n border-radius: 0.5rem;\n }\n .canopy-theme-showcase__swatch-label {\n font-size: 0.9222rem;\n margin-top: 0.1rem;\n }\n .canopy-theme-showcase__swatch-controls { display: none; }\n .canopy-theme-showcase__clear-button { display: none; }\n `;\n\n return (\n <div className=\"canopy-theme-showcase\" data-theme-showcase>\n <style dangerouslySetInnerHTML={{__html: styles}} />\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n gap: \"1rem\",\n marginBottom: \"1rem\",\n }}\n >\n <Section\n title=\"Appearance\"\n description=\"Pick the base light or dark mode for the theme preview.\"\n >\n <div className=\"canopy-theme-showcase__appearance-buttons\">\n {[\"light\", \"dark\"].map((mode) => {\n const label = `${mode.charAt(0).toUpperCase()}${mode.slice(1)}`;\n const baseClass = \"canopy-theme-showcase__appearance-button\";\n const isDefault = mode === DEFAULTS.appearance;\n const className = isDefault\n ? `${baseClass} is-active`\n : baseClass;\n return (\n <button\n key={mode}\n type=\"button\"\n className={className}\n data-theme-appearance={mode}\n >\n {label}\n </button>\n );\n })}\n </div>\n </Section>\n <button\n type=\"button\"\n className=\"canopy-theme-showcase__reset\"\n data-theme-reset\n >\n Reset\n </button>\n </div>\n <Section\n title=\"Color scales\"\n description=\"Accent and gray ramps from the active theme.\"\n >\n <div style={{display: \"flex\", flexDirection: \"column\", gap: \"1.5rem\"}}>\n {COLOR_SCALES.map((scale) => (\n <ColorScaleRow\n key={scale.label}\n label={scale.label}\n prefix={scale.prefix}\n />\n ))}\n </div>\n </Section>\n <Section\n title=\"Accent color palette options\"\n description=\"Click a swatch to temporarily override the accent palette.\"\n >\n <ColorsLabeled\n colors={accentColors}\n type=\"accent\"\n getRadixSwatch={getRadixSwatch}\n />\n </Section>\n <Section\n title=\"Gray color palette options\"\n description=\"Click a swatch to preview the neutral ramp for surfaces and text.\"\n >\n <ColorsLabeled\n colors={grayColors}\n type=\"gray\"\n getRadixSwatch={getRadixSwatch}\n />\n </Section>\n <script\n type=\"application/json\"\n data-theme-showcase-values\n dangerouslySetInnerHTML={{__html: encodeJson(PREVIEW_DATA)}}\n />\n </div>\n );\n}\n", "const grayDark = {\n gray1: \"#111111\",\n gray2: \"#191919\",\n gray3: \"#222222\",\n gray4: \"#2a2a2a\",\n gray5: \"#313131\",\n gray6: \"#3a3a3a\",\n gray7: \"#484848\",\n gray8: \"#606060\",\n gray9: \"#6e6e6e\",\n gray10: \"#7b7b7b\",\n gray11: \"#b4b4b4\",\n gray12: \"#eeeeee\",\n};\nconst grayDarkA = {\n grayA1: \"#00000000\",\n grayA2: \"#ffffff09\",\n grayA3: \"#ffffff12\",\n grayA4: \"#ffffff1b\",\n grayA5: \"#ffffff22\",\n grayA6: \"#ffffff2c\",\n grayA7: \"#ffffff3b\",\n grayA8: \"#ffffff55\",\n grayA9: \"#ffffff64\",\n grayA10: \"#ffffff72\",\n grayA11: \"#ffffffaf\",\n grayA12: \"#ffffffed\",\n};\nconst grayDarkP3 = {\n gray1: \"color(display-p3 0.067 0.067 0.067)\",\n gray2: \"color(display-p3 0.098 0.098 0.098)\",\n gray3: \"color(display-p3 0.135 0.135 0.135)\",\n gray4: \"color(display-p3 0.163 0.163 0.163)\",\n gray5: \"color(display-p3 0.192 0.192 0.192)\",\n gray6: \"color(display-p3 0.228 0.228 0.228)\",\n gray7: \"color(display-p3 0.283 0.283 0.283)\",\n gray8: \"color(display-p3 0.375 0.375 0.375)\",\n gray9: \"color(display-p3 0.431 0.431 0.431)\",\n gray10: \"color(display-p3 0.484 0.484 0.484)\",\n gray11: \"color(display-p3 0.706 0.706 0.706)\",\n gray12: \"color(display-p3 0.933 0.933 0.933)\",\n};\nconst grayDarkP3A = {\n grayA1: \"color(display-p3 0 0 0 / 0)\",\n grayA2: \"color(display-p3 1 1 1 / 0.034)\",\n grayA3: \"color(display-p3 1 1 1 / 0.071)\",\n grayA4: \"color(display-p3 1 1 1 / 0.105)\",\n grayA5: \"color(display-p3 1 1 1 / 0.134)\",\n grayA6: \"color(display-p3 1 1 1 / 0.172)\",\n grayA7: \"color(display-p3 1 1 1 / 0.231)\",\n grayA8: \"color(display-p3 1 1 1 / 0.332)\",\n grayA9: \"color(display-p3 1 1 1 / 0.391)\",\n grayA10: \"color(display-p3 1 1 1 / 0.445)\",\n grayA11: \"color(display-p3 1 1 1 / 0.685)\",\n grayA12: \"color(display-p3 1 1 1 / 0.929)\",\n};\nconst mauveDark = {\n mauve1: \"#121113\",\n mauve2: \"#1a191b\",\n mauve3: \"#232225\",\n mauve4: \"#2b292d\",\n mauve5: \"#323035\",\n mauve6: \"#3c393f\",\n mauve7: \"#49474e\",\n mauve8: \"#625f69\",\n mauve9: \"#6f6d78\",\n mauve10: \"#7c7a85\",\n mauve11: \"#b5b2bc\",\n mauve12: \"#eeeef0\",\n};\nconst mauveDarkA = {\n mauveA1: \"#00000000\",\n mauveA2: \"#f5f4f609\",\n mauveA3: \"#ebeaf814\",\n mauveA4: \"#eee5f81d\",\n mauveA5: \"#efe6fe25\",\n mauveA6: \"#f1e6fd30\",\n mauveA7: \"#eee9ff40\",\n mauveA8: \"#eee7ff5d\",\n mauveA9: \"#eae6fd6e\",\n mauveA10: \"#ece9fd7c\",\n mauveA11: \"#f5f1ffb7\",\n mauveA12: \"#fdfdffef\",\n};\nconst mauveDarkP3 = {\n mauve1: \"color(display-p3 0.07 0.067 0.074)\",\n mauve2: \"color(display-p3 0.101 0.098 0.105)\",\n mauve3: \"color(display-p3 0.138 0.134 0.144)\",\n mauve4: \"color(display-p3 0.167 0.161 0.175)\",\n mauve5: \"color(display-p3 0.196 0.189 0.206)\",\n mauve6: \"color(display-p3 0.232 0.225 0.245)\",\n mauve7: \"color(display-p3 0.286 0.277 0.302)\",\n mauve8: \"color(display-p3 0.383 0.373 0.408)\",\n mauve9: \"color(display-p3 0.434 0.428 0.467)\",\n mauve10: \"color(display-p3 0.487 0.48 0.519)\",\n mauve11: \"color(display-p3 0.707 0.7 0.735)\",\n mauve12: \"color(display-p3 0.933 0.933 0.94)\",\n};\nconst mauveDarkP3A = {\n mauveA1: \"color(display-p3 0 0 0 / 0)\",\n mauveA2: \"color(display-p3 0.996 0.992 1 / 0.034)\",\n mauveA3: \"color(display-p3 0.937 0.933 0.992 / 0.077)\",\n mauveA4: \"color(display-p3 0.957 0.918 0.996 / 0.111)\",\n mauveA5: \"color(display-p3 0.937 0.906 0.996 / 0.145)\",\n mauveA6: \"color(display-p3 0.953 0.925 0.996 / 0.183)\",\n mauveA7: \"color(display-p3 0.945 0.929 1 / 0.246)\",\n mauveA8: \"color(display-p3 0.937 0.918 1 / 0.361)\",\n mauveA9: \"color(display-p3 0.933 0.918 1 / 0.424)\",\n mauveA10: \"color(display-p3 0.941 0.925 1 / 0.479)\",\n mauveA11: \"color(display-p3 0.965 0.961 1 / 0.712)\",\n mauveA12: \"color(display-p3 0.992 0.992 1 / 0.937)\",\n};\nconst slateDark = {\n slate1: \"#111113\",\n slate2: \"#18191b\",\n slate3: \"#212225\",\n slate4: \"#272a2d\",\n slate5: \"#2e3135\",\n slate6: \"#363a3f\",\n slate7: \"#43484e\",\n slate8: \"#5a6169\",\n slate9: \"#696e77\",\n slate10: \"#777b84\",\n slate11: \"#b0b4ba\",\n slate12: \"#edeef0\",\n};\nconst slateDarkA = {\n slateA1: \"#00000000\",\n slateA2: \"#d8f4f609\",\n slateA3: \"#ddeaf814\",\n slateA4: \"#d3edf81d\",\n slateA5: \"#d9edfe25\",\n slateA6: \"#d6ebfd30\",\n slateA7: \"#d9edff40\",\n slateA8: \"#d9edff5d\",\n slateA9: \"#dfebfd6d\",\n slateA10: \"#e5edfd7b\",\n slateA11: \"#f1f7feb5\",\n slateA12: \"#fcfdffef\",\n};\nconst slateDarkP3 = {\n slate1: \"color(display-p3 0.067 0.067 0.074)\",\n slate2: \"color(display-p3 0.095 0.098 0.105)\",\n slate3: \"color(display-p3 0.13 0.135 0.145)\",\n slate4: \"color(display-p3 0.156 0.163 0.176)\",\n slate5: \"color(display-p3 0.183 0.191 0.206)\",\n slate6: \"color(display-p3 0.215 0.226 0.244)\",\n slate7: \"color(display-p3 0.265 0.28 0.302)\",\n slate8: \"color(display-p3 0.357 0.381 0.409)\",\n slate9: \"color(display-p3 0.415 0.431 0.463)\",\n slate10: \"color(display-p3 0.469 0.483 0.514)\",\n slate11: \"color(display-p3 0.692 0.704 0.728)\",\n slate12: \"color(display-p3 0.93 0.933 0.94)\",\n};\nconst slateDarkP3A = {\n slateA1: \"color(display-p3 0 0 0 / 0)\",\n slateA2: \"color(display-p3 0.875 0.992 1 / 0.034)\",\n slateA3: \"color(display-p3 0.882 0.933 0.992 / 0.077)\",\n slateA4: \"color(display-p3 0.882 0.953 0.996 / 0.111)\",\n slateA5: \"color(display-p3 0.878 0.929 0.996 / 0.145)\",\n slateA6: \"color(display-p3 0.882 0.949 0.996 / 0.183)\",\n slateA7: \"color(display-p3 0.882 0.929 1 / 0.246)\",\n slateA8: \"color(display-p3 0.871 0.937 1 / 0.361)\",\n slateA9: \"color(display-p3 0.898 0.937 1 / 0.42)\",\n slateA10: \"color(display-p3 0.918 0.945 1 / 0.475)\",\n slateA11: \"color(display-p3 0.949 0.969 0.996 / 0.708)\",\n slateA12: \"color(display-p3 0.988 0.992 1 / 0.937)\",\n};\nconst sageDark = {\n sage1: \"#101211\",\n sage2: \"#171918\",\n sage3: \"#202221\",\n sage4: \"#272a29\",\n sage5: \"#2e3130\",\n sage6: \"#373b39\",\n sage7: \"#444947\",\n sage8: \"#5b625f\",\n sage9: \"#63706b\",\n sage10: \"#717d79\",\n sage11: \"#adb5b2\",\n sage12: \"#eceeed\",\n};\nconst sageDarkA = {\n sageA1: \"#00000000\",\n sageA2: \"#f0f2f108\",\n sageA3: \"#f3f5f412\",\n sageA4: \"#f2fefd1a\",\n sageA5: \"#f1fbfa22\",\n sageA6: \"#edfbf42d\",\n sageA7: \"#edfcf73c\",\n sageA8: \"#ebfdf657\",\n sageA9: \"#dffdf266\",\n sageA10: \"#e5fdf674\",\n sageA11: \"#f4fefbb0\",\n sageA12: \"#fdfffeed\",\n};\nconst sageDarkP3 = {\n sage1: \"color(display-p3 0.064 0.07 0.067)\",\n sage2: \"color(display-p3 0.092 0.098 0.094)\",\n sage3: \"color(display-p3 0.128 0.135 0.131)\",\n sage4: \"color(display-p3 0.155 0.164 0.159)\",\n sage5: \"color(display-p3 0.183 0.193 0.188)\",\n sage6: \"color(display-p3 0.218 0.23 0.224)\",\n sage7: \"color(display-p3 0.269 0.285 0.277)\",\n sage8: \"color(display-p3 0.362 0.382 0.373)\",\n sage9: \"color(display-p3 0.398 0.438 0.421)\",\n sage10: \"color(display-p3 0.453 0.49 0.474)\",\n sage11: \"color(display-p3 0.685 0.709 0.697)\",\n sage12: \"color(display-p3 0.927 0.933 0.93)\",\n};\nconst sageDarkP3A = {\n sageA1: \"color(display-p3 0 0 0 / 0)\",\n sageA2: \"color(display-p3 0.976 0.988 0.984 / 0.03)\",\n sageA3: \"color(display-p3 0.992 0.945 0.941 / 0.072)\",\n sageA4: \"color(display-p3 0.988 0.996 0.992 / 0.102)\",\n sageA5: \"color(display-p3 0.992 1 0.996 / 0.131)\",\n sageA6: \"color(display-p3 0.973 1 0.976 / 0.173)\",\n sageA7: \"color(display-p3 0.957 1 0.976 / 0.233)\",\n sageA8: \"color(display-p3 0.957 1 0.984 / 0.334)\",\n sageA9: \"color(display-p3 0.902 1 0.957 / 0.397)\",\n sageA10: \"color(display-p3 0.929 1 0.973 / 0.452)\",\n sageA11: \"color(display-p3 0.969 1 0.988 / 0.688)\",\n sageA12: \"color(display-p3 0.992 1 0.996 / 0.929)\",\n};\nconst oliveDark = {\n olive1: \"#111210\",\n olive2: \"#181917\",\n olive3: \"#212220\",\n olive4: \"#282a27\",\n olive5: \"#2f312e\",\n olive6: \"#383a36\",\n olive7: \"#454843\",\n olive8: \"#5c625b\",\n olive9: \"#687066\",\n olive10: \"#767d74\",\n olive11: \"#afb5ad\",\n olive12: \"#eceeec\",\n};\nconst oliveDarkA = {\n oliveA1: \"#00000000\",\n oliveA2: \"#f1f2f008\",\n oliveA3: \"#f4f5f312\",\n oliveA4: \"#f3fef21a\",\n oliveA5: \"#f2fbf122\",\n oliveA6: \"#f4faed2c\",\n oliveA7: \"#f2fced3b\",\n oliveA8: \"#edfdeb57\",\n oliveA9: \"#ebfde766\",\n oliveA10: \"#f0fdec74\",\n oliveA11: \"#f6fef4b0\",\n oliveA12: \"#fdfffded\",\n};\nconst oliveDarkP3 = {\n olive1: \"color(display-p3 0.067 0.07 0.063)\",\n olive2: \"color(display-p3 0.095 0.098 0.091)\",\n olive3: \"color(display-p3 0.131 0.135 0.126)\",\n olive4: \"color(display-p3 0.158 0.163 0.153)\",\n olive5: \"color(display-p3 0.186 0.192 0.18)\",\n olive6: \"color(display-p3 0.221 0.229 0.215)\",\n olive7: \"color(display-p3 0.273 0.284 0.266)\",\n olive8: \"color(display-p3 0.365 0.382 0.359)\",\n olive9: \"color(display-p3 0.414 0.438 0.404)\",\n olive10: \"color(display-p3 0.467 0.49 0.458)\",\n olive11: \"color(display-p3 0.69 0.709 0.682)\",\n olive12: \"color(display-p3 0.927 0.933 0.926)\",\n};\nconst oliveDarkP3A = {\n oliveA1: \"color(display-p3 0 0 0 / 0)\",\n oliveA2: \"color(display-p3 0.984 0.988 0.976 / 0.03)\",\n oliveA3: \"color(display-p3 0.992 0.996 0.988 / 0.068)\",\n oliveA4: \"color(display-p3 0.953 0.996 0.949 / 0.102)\",\n oliveA5: \"color(display-p3 0.969 1 0.965 / 0.131)\",\n oliveA6: \"color(display-p3 0.973 1 0.969 / 0.169)\",\n oliveA7: \"color(display-p3 0.98 1 0.961 / 0.228)\",\n oliveA8: \"color(display-p3 0.961 1 0.957 / 0.334)\",\n oliveA9: \"color(display-p3 0.949 1 0.922 / 0.397)\",\n oliveA10: \"color(display-p3 0.953 1 0.941 / 0.452)\",\n oliveA11: \"color(display-p3 0.976 1 0.965 / 0.688)\",\n oliveA12: \"color(display-p3 0.992 1 0.992 / 0.929)\",\n};\nconst sandDark = {\n sand1: \"#111110\",\n sand2: \"#191918\",\n sand3: \"#222221\",\n sand4: \"#2a2a28\",\n sand5: \"#31312e\",\n sand6: \"#3b3a37\",\n sand7: \"#494844\",\n sand8: \"#62605b\",\n sand9: \"#6f6d66\",\n sand10: \"#7c7b74\",\n sand11: \"#b5b3ad\",\n sand12: \"#eeeeec\",\n};\nconst sandDarkA = {\n sandA1: \"#00000000\",\n sandA2: \"#f4f4f309\",\n sandA3: \"#f6f6f513\",\n sandA4: \"#fefef31b\",\n sandA5: \"#fbfbeb23\",\n sandA6: \"#fffaed2d\",\n sandA7: \"#fffbed3c\",\n sandA8: \"#fff9eb57\",\n sandA9: \"#fffae965\",\n sandA10: \"#fffdee73\",\n sandA11: \"#fffcf4b0\",\n sandA12: \"#fffffded\",\n};\nconst sandDarkP3 = {\n sand1: \"color(display-p3 0.067 0.067 0.063)\",\n sand2: \"color(display-p3 0.098 0.098 0.094)\",\n sand3: \"color(display-p3 0.135 0.135 0.129)\",\n sand4: \"color(display-p3 0.164 0.163 0.156)\",\n sand5: \"color(display-p3 0.193 0.192 0.183)\",\n sand6: \"color(display-p3 0.23 0.229 0.217)\",\n sand7: \"color(display-p3 0.285 0.282 0.267)\",\n sand8: \"color(display-p3 0.384 0.378 0.357)\",\n sand9: \"color(display-p3 0.434 0.428 0.403)\",\n sand10: \"color(display-p3 0.487 0.481 0.456)\",\n sand11: \"color(display-p3 0.707 0.703 0.68)\",\n sand12: \"color(display-p3 0.933 0.933 0.926)\",\n};\nconst sandDarkP3A = {\n sandA1: \"color(display-p3 0 0 0 / 0)\",\n sandA2: \"color(display-p3 0.992 0.992 0.988 / 0.034)\",\n sandA3: \"color(display-p3 0.996 0.996 0.992 / 0.072)\",\n sandA4: \"color(display-p3 0.992 0.992 0.953 / 0.106)\",\n sandA5: \"color(display-p3 1 1 0.965 / 0.135)\",\n sandA6: \"color(display-p3 1 0.976 0.929 / 0.177)\",\n sandA7: \"color(display-p3 1 0.984 0.929 / 0.236)\",\n sandA8: \"color(display-p3 1 0.976 0.925 / 0.341)\",\n sandA9: \"color(display-p3 1 0.98 0.925 / 0.395)\",\n sandA10: \"color(display-p3 1 0.992 0.933 / 0.45)\",\n sandA11: \"color(display-p3 1 0.996 0.961 / 0.685)\",\n sandA12: \"color(display-p3 1 1 0.992 / 0.929)\",\n};\nconst tomatoDark = {\n tomato1: \"#181111\",\n tomato2: \"#1f1513\",\n tomato3: \"#391714\",\n tomato4: \"#4e1511\",\n tomato5: \"#5e1c16\",\n tomato6: \"#6e2920\",\n tomato7: \"#853a2d\",\n tomato8: \"#ac4d39\",\n tomato9: \"#e54d2e\",\n tomato10: \"#ec6142\",\n tomato11: \"#ff977d\",\n tomato12: \"#fbd3cb\",\n};\nconst tomatoDarkA = {\n tomatoA1: \"#f1121208\",\n tomatoA2: \"#ff55330f\",\n tomatoA3: \"#ff35232b\",\n tomatoA4: \"#fd201142\",\n tomatoA5: \"#fe332153\",\n tomatoA6: \"#ff4f3864\",\n tomatoA7: \"#fd644a7d\",\n tomatoA8: \"#fe6d4ea7\",\n tomatoA9: \"#fe5431e4\",\n tomatoA10: \"#ff6847eb\",\n tomatoA11: \"#ff977d\",\n tomatoA12: \"#ffd6cefb\",\n};\nconst tomatoDarkP3 = {\n tomato1: \"color(display-p3 0.09 0.068 0.067)\",\n tomato2: \"color(display-p3 0.115 0.084 0.076)\",\n tomato3: \"color(display-p3 0.205 0.097 0.083)\",\n tomato4: \"color(display-p3 0.282 0.099 0.077)\",\n tomato5: \"color(display-p3 0.339 0.129 0.101)\",\n tomato6: \"color(display-p3 0.398 0.179 0.141)\",\n tomato7: \"color(display-p3 0.487 0.245 0.194)\",\n tomato8: \"color(display-p3 0.629 0.322 0.248)\",\n tomato9: \"color(display-p3 0.831 0.345 0.231)\",\n tomato10: \"color(display-p3 0.862 0.415 0.298)\",\n tomato11: \"color(display-p3 1 0.585 0.455)\",\n tomato12: \"color(display-p3 0.959 0.833 0.802)\",\n};\nconst tomatoDarkP3A = {\n tomatoA1: \"color(display-p3 0.973 0.071 0.071 / 0.026)\",\n tomatoA2: \"color(display-p3 0.992 0.376 0.224 / 0.051)\",\n tomatoA3: \"color(display-p3 0.996 0.282 0.176 / 0.148)\",\n tomatoA4: \"color(display-p3 1 0.204 0.118 / 0.232)\",\n tomatoA5: \"color(display-p3 1 0.286 0.192 / 0.29)\",\n tomatoA6: \"color(display-p3 1 0.392 0.278 / 0.353)\",\n tomatoA7: \"color(display-p3 1 0.459 0.349 / 0.45)\",\n tomatoA8: \"color(display-p3 1 0.49 0.369 / 0.601)\",\n tomatoA9: \"color(display-p3 1 0.408 0.267 / 0.82)\",\n tomatoA10: \"color(display-p3 1 0.478 0.341 / 0.853)\",\n tomatoA11: \"color(display-p3 1 0.585 0.455)\",\n tomatoA12: \"color(display-p3 0.959 0.833 0.802)\",\n};\nconst redDark = {\n red1: \"#191111\",\n red2: \"#201314\",\n red3: \"#3b1219\",\n red4: \"#500f1c\",\n red5: \"#611623\",\n red6: \"#72232d\",\n red7: \"#8c333a\",\n red8: \"#b54548\",\n red9: \"#e5484d\",\n red10: \"#ec5d5e\",\n red11: \"#ff9592\",\n red12: \"#ffd1d9\",\n};\nconst redDarkA = {\n redA1: \"#f4121209\",\n redA2: \"#f22f3e11\",\n redA3: \"#ff173f2d\",\n redA4: \"#fe0a3b44\",\n redA5: \"#ff204756\",\n redA6: \"#ff3e5668\",\n redA7: \"#ff536184\",\n redA8: \"#ff5d61b0\",\n redA9: \"#fe4e54e4\",\n redA10: \"#ff6465eb\",\n redA11: \"#ff9592\",\n redA12: \"#ffd1d9\",\n};\nconst redDarkP3 = {\n red1: \"color(display-p3 0.093 0.068 0.067)\",\n red2: \"color(display-p3 0.118 0.077 0.079)\",\n red3: \"color(display-p3 0.211 0.081 0.099)\",\n red4: \"color(display-p3 0.287 0.079 0.113)\",\n red5: \"color(display-p3 0.348 0.11 0.142)\",\n red6: \"color(display-p3 0.414 0.16 0.183)\",\n red7: \"color(display-p3 0.508 0.224 0.236)\",\n red8: \"color(display-p3 0.659 0.298 0.297)\",\n red9: \"color(display-p3 0.83 0.329 0.324)\",\n red10: \"color(display-p3 0.861 0.403 0.387)\",\n red11: \"color(display-p3 1 0.57 0.55)\",\n red12: \"color(display-p3 0.971 0.826 0.852)\",\n};\nconst redDarkP3A = {\n redA1: \"color(display-p3 0.984 0.071 0.071 / 0.03)\",\n redA2: \"color(display-p3 0.996 0.282 0.282 / 0.055)\",\n redA3: \"color(display-p3 1 0.169 0.271 / 0.156)\",\n redA4: \"color(display-p3 1 0.118 0.267 / 0.236)\",\n redA5: \"color(display-p3 1 0.212 0.314 / 0.303)\",\n redA6: \"color(display-p3 1 0.318 0.38 / 0.374)\",\n redA7: \"color(display-p3 1 0.4 0.424 / 0.475)\",\n redA8: \"color(display-p3 1 0.431 0.431 / 0.635)\",\n redA9: \"color(display-p3 1 0.388 0.384 / 0.82)\",\n redA10: \"color(display-p3 1 0.463 0.447 / 0.853)\",\n redA11: \"color(display-p3 1 0.57 0.55)\",\n redA12: \"color(display-p3 0.971 0.826 0.852)\",\n};\nconst rubyDark = {\n ruby1: \"#191113\",\n ruby2: \"#1e1517\",\n ruby3: \"#3a141e\",\n ruby4: \"#4e1325\",\n ruby5: \"#5e1a2e\",\n ruby6: \"#6f2539\",\n ruby7: \"#883447\",\n ruby8: \"#b3445a\",\n ruby9: \"#e54666\",\n ruby10: \"#ec5a72\",\n ruby11: \"#ff949d\",\n ruby12: \"#fed2e1\",\n};\nconst rubyDarkA = {\n rubyA1: \"#f4124a09\",\n rubyA2: \"#fe5a7f0e\",\n rubyA3: \"#ff235d2c\",\n rubyA4: \"#fd195e42\",\n rubyA5: \"#fe2d6b53\",\n rubyA6: \"#ff447665\",\n rubyA7: \"#ff577d80\",\n rubyA8: \"#ff5c7cae\",\n rubyA9: \"#fe4c70e4\",\n rubyA10: \"#ff617beb\",\n rubyA11: \"#ff949d\",\n rubyA12: \"#ffd3e2fe\",\n};\nconst rubyDarkP3 = {\n ruby1: \"color(display-p3 0.093 0.068 0.074)\",\n ruby2: \"color(display-p3 0.113 0.083 0.089)\",\n ruby3: \"color(display-p3 0.208 0.088 0.117)\",\n ruby4: \"color(display-p3 0.279 0.092 0.147)\",\n ruby5: \"color(display-p3 0.337 0.12 0.18)\",\n ruby6: \"color(display-p3 0.401 0.166 0.223)\",\n ruby7: \"color(display-p3 0.495 0.224 0.281)\",\n ruby8: \"color(display-p3 0.652 0.295 0.359)\",\n ruby9: \"color(display-p3 0.83 0.323 0.408)\",\n ruby10: \"color(display-p3 0.857 0.392 0.455)\",\n ruby11: \"color(display-p3 1 0.57 0.59)\",\n ruby12: \"color(display-p3 0.968 0.83 0.88)\",\n};\nconst rubyDarkP3A = {\n rubyA1: \"color(display-p3 0.984 0.071 0.329 / 0.03)\",\n rubyA2: \"color(display-p3 0.992 0.376 0.529 / 0.051)\",\n rubyA3: \"color(display-p3 0.996 0.196 0.404 / 0.152)\",\n rubyA4: \"color(display-p3 1 0.173 0.416 / 0.227)\",\n rubyA5: \"color(display-p3 1 0.259 0.459 / 0.29)\",\n rubyA6: \"color(display-p3 1 0.341 0.506 / 0.358)\",\n rubyA7: \"color(display-p3 1 0.412 0.541 / 0.458)\",\n rubyA8: \"color(display-p3 1 0.431 0.537 / 0.627)\",\n rubyA9: \"color(display-p3 1 0.376 0.482 / 0.82)\",\n rubyA10: \"color(display-p3 1 0.447 0.522 / 0.849)\",\n rubyA11: \"color(display-p3 1 0.57 0.59)\",\n rubyA12: \"color(display-p3 0.968 0.83 0.88)\",\n};\nconst crimsonDark = {\n crimson1: \"#191114\",\n crimson2: \"#201318\",\n crimson3: \"#381525\",\n crimson4: \"#4d122f\",\n crimson5: \"#5c1839\",\n crimson6: \"#6d2545\",\n crimson7: \"#873356\",\n crimson8: \"#b0436e\",\n crimson9: \"#e93d82\",\n crimson10: \"#ee518a\",\n crimson11: \"#ff92ad\",\n crimson12: \"#fdd3e8\",\n};\nconst crimsonDarkA = {\n crimsonA1: \"#f4126709\",\n crimsonA2: \"#f22f7a11\",\n crimsonA3: \"#fe2a8b2a\",\n crimsonA4: \"#fd158741\",\n crimsonA5: \"#fd278f51\",\n crimsonA6: \"#fe459763\",\n crimsonA7: \"#fd559b7f\",\n crimsonA8: \"#fe5b9bab\",\n crimsonA9: \"#fe418de8\",\n crimsonA10: \"#ff5693ed\",\n crimsonA11: \"#ff92ad\",\n crimsonA12: \"#ffd5eafd\",\n};\nconst crimsonDarkP3 = {\n crimson1: \"color(display-p3 0.093 0.068 0.078)\",\n crimson2: \"color(display-p3 0.117 0.078 0.095)\",\n crimson3: \"color(display-p3 0.203 0.091 0.143)\",\n crimson4: \"color(display-p3 0.277 0.087 0.182)\",\n crimson5: \"color(display-p3 0.332 0.115 0.22)\",\n crimson6: \"color(display-p3 0.394 0.162 0.268)\",\n crimson7: \"color(display-p3 0.489 0.222 0.336)\",\n crimson8: \"color(display-p3 0.638 0.289 0.429)\",\n crimson9: \"color(display-p3 0.843 0.298 0.507)\",\n crimson10: \"color(display-p3 0.864 0.364 0.539)\",\n crimson11: \"color(display-p3 1 0.56 0.66)\",\n crimson12: \"color(display-p3 0.966 0.834 0.906)\",\n};\nconst crimsonDarkP3A = {\n crimsonA1: \"color(display-p3 0.984 0.071 0.463 / 0.03)\",\n crimsonA2: \"color(display-p3 0.996 0.282 0.569 / 0.055)\",\n crimsonA3: \"color(display-p3 0.996 0.227 0.573 / 0.148)\",\n crimsonA4: \"color(display-p3 1 0.157 0.569 / 0.227)\",\n crimsonA5: \"color(display-p3 1 0.231 0.604 / 0.286)\",\n crimsonA6: \"color(display-p3 1 0.337 0.643 / 0.349)\",\n crimsonA7: \"color(display-p3 1 0.416 0.663 / 0.454)\",\n crimsonA8: \"color(display-p3 0.996 0.427 0.651 / 0.614)\",\n crimsonA9: \"color(display-p3 1 0.345 0.596 / 0.832)\",\n crimsonA10: \"color(display-p3 1 0.42 0.62 / 0.853)\",\n crimsonA11: \"color(display-p3 1 0.56 0.66)\",\n crimsonA12: \"color(display-p3 0.966 0.834 0.906)\",\n};\nconst pinkDark = {\n pink1: \"#191117\",\n pink2: \"#21121d\",\n pink3: \"#37172f\",\n pink4: \"#4b143d\",\n pink5: \"#591c47\",\n pink6: \"#692955\",\n pink7: \"#833869\",\n pink8: \"#a84885\",\n pink9: \"#d6409f\",\n pink10: \"#de51a8\",\n pink11: \"#ff8dcc\",\n pink12: \"#fdd1ea\",\n};\nconst pinkDarkA = {\n pinkA1: \"#f412bc09\",\n pinkA2: \"#f420bb12\",\n pinkA3: \"#fe37cc29\",\n pinkA4: \"#fc1ec43f\",\n pinkA5: \"#fd35c24e\",\n pinkA6: \"#fd51c75f\",\n pinkA7: \"#fd62c87b\",\n pinkA8: \"#ff68c8a2\",\n pinkA9: \"#fe49bcd4\",\n pinkA10: \"#ff5cc0dc\",\n pinkA11: \"#ff8dcc\",\n pinkA12: \"#ffd3ecfd\",\n};\nconst pinkDarkP3 = {\n pink1: \"color(display-p3 0.093 0.068 0.089)\",\n pink2: \"color(display-p3 0.121 0.073 0.11)\",\n pink3: \"color(display-p3 0.198 0.098 0.179)\",\n pink4: \"color(display-p3 0.271 0.095 0.231)\",\n pink5: \"color(display-p3 0.32 0.127 0.273)\",\n pink6: \"color(display-p3 0.382 0.177 0.326)\",\n pink7: \"color(display-p3 0.477 0.238 0.405)\",\n pink8: \"color(display-p3 0.612 0.304 0.51)\",\n pink9: \"color(display-p3 0.775 0.297 0.61)\",\n pink10: \"color(display-p3 0.808 0.356 0.645)\",\n pink11: \"color(display-p3 1 0.535 0.78)\",\n pink12: \"color(display-p3 0.964 0.826 0.912)\",\n};\nconst pinkDarkP3A = {\n pinkA1: \"color(display-p3 0.984 0.071 0.855 / 0.03)\",\n pinkA2: \"color(display-p3 1 0.2 0.8 / 0.059)\",\n pinkA3: \"color(display-p3 1 0.294 0.886 / 0.139)\",\n pinkA4: \"color(display-p3 1 0.192 0.82 / 0.219)\",\n pinkA5: \"color(display-p3 1 0.282 0.827 / 0.274)\",\n pinkA6: \"color(display-p3 1 0.396 0.835 / 0.337)\",\n pinkA7: \"color(display-p3 1 0.459 0.831 / 0.442)\",\n pinkA8: \"color(display-p3 1 0.478 0.827 / 0.585)\",\n pinkA9: \"color(display-p3 1 0.373 0.784 / 0.761)\",\n pinkA10: \"color(display-p3 1 0.435 0.792 / 0.795)\",\n pinkA11: \"color(display-p3 1 0.535 0.78)\",\n pinkA12: \"color(display-p3 0.964 0.826 0.912)\",\n};\nconst plumDark = {\n plum1: \"#181118\",\n plum2: \"#201320\",\n plum3: \"#351a35\",\n plum4: \"#451d47\",\n plum5: \"#512454\",\n plum6: \"#5e3061\",\n plum7: \"#734079\",\n plum8: \"#92549c\",\n plum9: \"#ab4aba\",\n plum10: \"#b658c4\",\n plum11: \"#e796f3\",\n plum12: \"#f4d4f4\",\n};\nconst plumDarkA = {\n plumA1: \"#f112f108\",\n plumA2: \"#f22ff211\",\n plumA3: \"#fd4cfd27\",\n plumA4: \"#f646ff3a\",\n plumA5: \"#f455ff48\",\n plumA6: \"#f66dff56\",\n plumA7: \"#f07cfd70\",\n plumA8: \"#ee84ff95\",\n plumA9: \"#e961feb6\",\n plumA10: \"#ed70ffc0\",\n plumA11: \"#f19cfef3\",\n plumA12: \"#feddfef4\",\n};\nconst plumDarkP3 = {\n plum1: \"color(display-p3 0.09 0.068 0.092)\",\n plum2: \"color(display-p3 0.118 0.077 0.121)\",\n plum3: \"color(display-p3 0.192 0.105 0.202)\",\n plum4: \"color(display-p3 0.25 0.121 0.271)\",\n plum5: \"color(display-p3 0.293 0.152 0.319)\",\n plum6: \"color(display-p3 0.343 0.198 0.372)\",\n plum7: \"color(display-p3 0.424 0.262 0.461)\",\n plum8: \"color(display-p3 0.54 0.341 0.595)\",\n plum9: \"color(display-p3 0.624 0.313 0.708)\",\n plum10: \"color(display-p3 0.666 0.365 0.748)\",\n plum11: \"color(display-p3 0.86 0.602 0.933)\",\n plum12: \"color(display-p3 0.936 0.836 0.949)\",\n};\nconst plumDarkP3A = {\n plumA1: \"color(display-p3 0.973 0.071 0.973 / 0.026)\",\n plumA2: \"color(display-p3 0.933 0.267 1 / 0.059)\",\n plumA3: \"color(display-p3 0.918 0.333 0.996 / 0.148)\",\n plumA4: \"color(display-p3 0.91 0.318 1 / 0.219)\",\n plumA5: \"color(display-p3 0.914 0.388 1 / 0.269)\",\n plumA6: \"color(display-p3 0.906 0.463 1 / 0.328)\",\n plumA7: \"color(display-p3 0.906 0.529 1 / 0.425)\",\n plumA8: \"color(display-p3 0.906 0.553 1 / 0.568)\",\n plumA9: \"color(display-p3 0.875 0.427 1 / 0.69)\",\n plumA10: \"color(display-p3 0.886 0.471 0.996 / 0.732)\",\n plumA11: \"color(display-p3 0.86 0.602 0.933)\",\n plumA12: \"color(display-p3 0.936 0.836 0.949)\",\n};\nconst purpleDark = {\n purple1: \"#18111b\",\n purple2: \"#1e1523\",\n purple3: \"#301c3b\",\n purple4: \"#3d224e\",\n purple5: \"#48295c\",\n purple6: \"#54346b\",\n purple7: \"#664282\",\n purple8: \"#8457aa\",\n purple9: \"#8e4ec6\",\n purple10: \"#9a5cd0\",\n purple11: \"#d19dff\",\n purple12: \"#ecd9fa\",\n};\nconst purpleDarkA = {\n purpleA1: \"#b412f90b\",\n purpleA2: \"#b744f714\",\n purpleA3: \"#c150ff2d\",\n purpleA4: \"#bb53fd42\",\n purpleA5: \"#be5cfd51\",\n purpleA6: \"#c16dfd61\",\n purpleA7: \"#c378fd7a\",\n purpleA8: \"#c47effa4\",\n purpleA9: \"#b661ffc2\",\n purpleA10: \"#bc6fffcd\",\n purpleA11: \"#d19dff\",\n purpleA12: \"#f1ddfffa\",\n};\nconst purpleDarkP3 = {\n purple1: \"color(display-p3 0.09 0.068 0.103)\",\n purple2: \"color(display-p3 0.113 0.082 0.134)\",\n purple3: \"color(display-p3 0.175 0.112 0.224)\",\n purple4: \"color(display-p3 0.224 0.137 0.297)\",\n purple5: \"color(display-p3 0.264 0.167 0.349)\",\n purple6: \"color(display-p3 0.311 0.208 0.406)\",\n purple7: \"color(display-p3 0.381 0.266 0.496)\",\n purple8: \"color(display-p3 0.49 0.349 0.649)\",\n purple9: \"color(display-p3 0.523 0.318 0.751)\",\n purple10: \"color(display-p3 0.57 0.373 0.791)\",\n purple11: \"color(display-p3 0.8 0.62 1)\",\n purple12: \"color(display-p3 0.913 0.854 0.971)\",\n};\nconst purpleDarkP3A = {\n purpleA1: \"color(display-p3 0.686 0.071 0.996 / 0.038)\",\n purpleA2: \"color(display-p3 0.722 0.286 0.996 / 0.072)\",\n purpleA3: \"color(display-p3 0.718 0.349 0.996 / 0.169)\",\n purpleA4: \"color(display-p3 0.702 0.353 1 / 0.248)\",\n purpleA5: \"color(display-p3 0.718 0.404 1 / 0.303)\",\n purpleA6: \"color(display-p3 0.733 0.455 1 / 0.366)\",\n purpleA7: \"color(display-p3 0.753 0.506 1 / 0.458)\",\n purpleA8: \"color(display-p3 0.749 0.522 1 / 0.622)\",\n purpleA9: \"color(display-p3 0.686 0.408 1 / 0.736)\",\n purpleA10: \"color(display-p3 0.71 0.459 1 / 0.778)\",\n purpleA11: \"color(display-p3 0.8 0.62 1)\",\n purpleA12: \"color(display-p3 0.913 0.854 0.971)\",\n};\nconst violetDark = {\n violet1: \"#14121f\",\n violet2: \"#1b1525\",\n violet3: \"#291f43\",\n violet4: \"#33255b\",\n violet5: \"#3c2e69\",\n violet6: \"#473876\",\n violet7: \"#56468b\",\n violet8: \"#6958ad\",\n violet9: \"#6e56cf\",\n violet10: \"#7d66d9\",\n violet11: \"#baa7ff\",\n violet12: \"#e2ddfe\",\n};\nconst violetDarkA = {\n violetA1: \"#4422ff0f\",\n violetA2: \"#853ff916\",\n violetA3: \"#8354fe36\",\n violetA4: \"#7d51fd50\",\n violetA5: \"#845ffd5f\",\n violetA6: \"#8f6cfd6d\",\n violetA7: \"#9879ff83\",\n violetA8: \"#977dfea8\",\n violetA9: \"#8668ffcc\",\n violetA10: \"#9176fed7\",\n violetA11: \"#baa7ff\",\n violetA12: \"#e3defffe\",\n};\nconst violetDarkP3 = {\n violet1: \"color(display-p3 0.077 0.071 0.118)\",\n violet2: \"color(display-p3 0.101 0.084 0.141)\",\n violet3: \"color(display-p3 0.154 0.123 0.256)\",\n violet4: \"color(display-p3 0.191 0.148 0.345)\",\n violet5: \"color(display-p3 0.226 0.182 0.396)\",\n violet6: \"color(display-p3 0.269 0.223 0.449)\",\n violet7: \"color(display-p3 0.326 0.277 0.53)\",\n violet8: \"color(display-p3 0.399 0.346 0.656)\",\n violet9: \"color(display-p3 0.417 0.341 0.784)\",\n violet10: \"color(display-p3 0.477 0.402 0.823)\",\n violet11: \"color(display-p3 0.72 0.65 1)\",\n violet12: \"color(display-p3 0.883 0.867 0.986)\",\n};\nconst violetDarkP3A = {\n violetA1: \"color(display-p3 0.282 0.141 0.996 / 0.055)\",\n violetA2: \"color(display-p3 0.51 0.263 1 / 0.08)\",\n violetA3: \"color(display-p3 0.494 0.337 0.996 / 0.202)\",\n violetA4: \"color(display-p3 0.49 0.345 1 / 0.299)\",\n violetA5: \"color(display-p3 0.525 0.392 1 / 0.353)\",\n violetA6: \"color(display-p3 0.569 0.455 1 / 0.408)\",\n violetA7: \"color(display-p3 0.588 0.494 1 / 0.496)\",\n violetA8: \"color(display-p3 0.596 0.51 1 / 0.631)\",\n violetA9: \"color(display-p3 0.522 0.424 1 / 0.769)\",\n violetA10: \"color(display-p3 0.576 0.482 1 / 0.811)\",\n violetA11: \"color(display-p3 0.72 0.65 1)\",\n violetA12: \"color(display-p3 0.883 0.867 0.986)\",\n};\nconst irisDark = {\n iris1: \"#13131e\",\n iris2: \"#171625\",\n iris3: \"#202248\",\n iris4: \"#262a65\",\n iris5: \"#303374\",\n iris6: \"#3d3e82\",\n iris7: \"#4a4a95\",\n iris8: \"#5958b1\",\n iris9: \"#5b5bd6\",\n iris10: \"#6e6ade\",\n iris11: \"#b1a9ff\",\n iris12: \"#e0dffe\",\n};\nconst irisDarkA = {\n irisA1: \"#3636fe0e\",\n irisA2: \"#564bf916\",\n irisA3: \"#525bff3b\",\n irisA4: \"#4d58ff5a\",\n irisA5: \"#5b62fd6b\",\n irisA6: \"#6d6ffd7a\",\n irisA7: \"#7777fe8e\",\n irisA8: \"#7b7afeac\",\n irisA9: \"#6a6afed4\",\n irisA10: \"#7d79ffdc\",\n irisA11: \"#b1a9ff\",\n irisA12: \"#e1e0fffe\",\n};\nconst irisDarkP3 = {\n iris1: \"color(display-p3 0.075 0.075 0.114)\",\n iris2: \"color(display-p3 0.089 0.086 0.14)\",\n iris3: \"color(display-p3 0.128 0.134 0.272)\",\n iris4: \"color(display-p3 0.153 0.165 0.382)\",\n iris5: \"color(display-p3 0.192 0.201 0.44)\",\n iris6: \"color(display-p3 0.239 0.241 0.491)\",\n iris7: \"color(display-p3 0.291 0.289 0.565)\",\n iris8: \"color(display-p3 0.35 0.345 0.673)\",\n iris9: \"color(display-p3 0.357 0.357 0.81)\",\n iris10: \"color(display-p3 0.428 0.416 0.843)\",\n iris11: \"color(display-p3 0.685 0.662 1)\",\n iris12: \"color(display-p3 0.878 0.875 0.986)\",\n};\nconst irisDarkP3A = {\n irisA1: \"color(display-p3 0.224 0.224 0.992 / 0.051)\",\n irisA2: \"color(display-p3 0.361 0.314 1 / 0.08)\",\n irisA3: \"color(display-p3 0.357 0.373 1 / 0.219)\",\n irisA4: \"color(display-p3 0.325 0.361 1 / 0.337)\",\n irisA5: \"color(display-p3 0.38 0.4 1 / 0.4)\",\n irisA6: \"color(display-p3 0.447 0.447 1 / 0.454)\",\n irisA7: \"color(display-p3 0.486 0.486 1 / 0.534)\",\n irisA8: \"color(display-p3 0.502 0.494 1 / 0.652)\",\n irisA9: \"color(display-p3 0.431 0.431 1 / 0.799)\",\n irisA10: \"color(display-p3 0.502 0.486 1 / 0.832)\",\n irisA11: \"color(display-p3 0.685 0.662 1)\",\n irisA12: \"color(display-p3 0.878 0.875 0.986)\",\n};\nconst indigoDark = {\n indigo1: \"#11131f\",\n indigo2: \"#141726\",\n indigo3: \"#182449\",\n indigo4: \"#1d2e62\",\n indigo5: \"#253974\",\n indigo6: \"#304384\",\n indigo7: \"#3a4f97\",\n indigo8: \"#435db1\",\n indigo9: \"#3e63dd\",\n indigo10: \"#5472e4\",\n indigo11: \"#9eb1ff\",\n indigo12: \"#d6e1ff\",\n};\nconst indigoDarkA = {\n indigoA1: \"#1133ff0f\",\n indigoA2: \"#3354fa17\",\n indigoA3: \"#2f62ff3c\",\n indigoA4: \"#3566ff57\",\n indigoA5: \"#4171fd6b\",\n indigoA6: \"#5178fd7c\",\n indigoA7: \"#5a7fff90\",\n indigoA8: \"#5b81feac\",\n indigoA9: \"#4671ffdb\",\n indigoA10: \"#5c7efee3\",\n indigoA11: \"#9eb1ff\",\n indigoA12: \"#d6e1ff\",\n};\nconst indigoDarkP3 = {\n indigo1: \"color(display-p3 0.068 0.074 0.118)\",\n indigo2: \"color(display-p3 0.081 0.089 0.144)\",\n indigo3: \"color(display-p3 0.105 0.141 0.275)\",\n indigo4: \"color(display-p3 0.129 0.18 0.369)\",\n indigo5: \"color(display-p3 0.163 0.22 0.439)\",\n indigo6: \"color(display-p3 0.203 0.262 0.5)\",\n indigo7: \"color(display-p3 0.245 0.309 0.575)\",\n indigo8: \"color(display-p3 0.285 0.362 0.674)\",\n indigo9: \"color(display-p3 0.276 0.384 0.837)\",\n indigo10: \"color(display-p3 0.354 0.445 0.866)\",\n indigo11: \"color(display-p3 0.63 0.69 1)\",\n indigo12: \"color(display-p3 0.848 0.881 0.99)\",\n};\nconst indigoDarkP3A = {\n indigoA1: \"color(display-p3 0.071 0.212 0.996 / 0.055)\",\n indigoA2: \"color(display-p3 0.251 0.345 0.988 / 0.085)\",\n indigoA3: \"color(display-p3 0.243 0.404 1 / 0.223)\",\n indigoA4: \"color(display-p3 0.263 0.42 1 / 0.324)\",\n indigoA5: \"color(display-p3 0.314 0.451 1 / 0.4)\",\n indigoA6: \"color(display-p3 0.361 0.49 1 / 0.467)\",\n indigoA7: \"color(display-p3 0.388 0.51 1 / 0.547)\",\n indigoA8: \"color(display-p3 0.404 0.518 1 / 0.652)\",\n indigoA9: \"color(display-p3 0.318 0.451 1 / 0.824)\",\n indigoA10: \"color(display-p3 0.404 0.506 1 / 0.858)\",\n indigoA11: \"color(display-p3 0.63 0.69 1)\",\n indigoA12: \"color(display-p3 0.848 0.881 0.99)\",\n};\nconst blueDark = {\n blue1: \"#0d1520\",\n blue2: \"#111927\",\n blue3: \"#0d2847\",\n blue4: \"#003362\",\n blue5: \"#004074\",\n blue6: \"#104d87\",\n blue7: \"#205d9e\",\n blue8: \"#2870bd\",\n blue9: \"#0090ff\",\n blue10: \"#3b9eff\",\n blue11: \"#70b8ff\",\n blue12: \"#c2e6ff\",\n};\nconst blueDarkA = {\n blueA1: \"#004df211\",\n blueA2: \"#1166fb18\",\n blueA3: \"#0077ff3a\",\n blueA4: \"#0075ff57\",\n blueA5: \"#0081fd6b\",\n blueA6: \"#0f89fd7f\",\n blueA7: \"#2a91fe98\",\n blueA8: \"#3094feb9\",\n blueA9: \"#0090ff\",\n blueA10: \"#3b9eff\",\n blueA11: \"#70b8ff\",\n blueA12: \"#c2e6ff\",\n};\nconst blueDarkP3 = {\n blue1: \"color(display-p3 0.057 0.081 0.122)\",\n blue2: \"color(display-p3 0.072 0.098 0.147)\",\n blue3: \"color(display-p3 0.078 0.154 0.27)\",\n blue4: \"color(display-p3 0.033 0.197 0.37)\",\n blue5: \"color(display-p3 0.08 0.245 0.441)\",\n blue6: \"color(display-p3 0.14 0.298 0.511)\",\n blue7: \"color(display-p3 0.195 0.361 0.6)\",\n blue8: \"color(display-p3 0.239 0.434 0.72)\",\n blue9: \"color(display-p3 0.247 0.556 0.969)\",\n blue10: \"color(display-p3 0.344 0.612 0.973)\",\n blue11: \"color(display-p3 0.49 0.72 1)\",\n blue12: \"color(display-p3 0.788 0.898 0.99)\",\n};\nconst blueDarkP3A = {\n blueA1: \"color(display-p3 0 0.333 1 / 0.059)\",\n blueA2: \"color(display-p3 0.114 0.435 0.988 / 0.085)\",\n blueA3: \"color(display-p3 0.122 0.463 1 / 0.219)\",\n blueA4: \"color(display-p3 0 0.467 1 / 0.324)\",\n blueA5: \"color(display-p3 0.098 0.51 1 / 0.4)\",\n blueA6: \"color(display-p3 0.224 0.557 1 / 0.475)\",\n blueA7: \"color(display-p3 0.294 0.584 1 / 0.572)\",\n blueA8: \"color(display-p3 0.314 0.592 1 / 0.702)\",\n blueA9: \"color(display-p3 0.251 0.573 0.996 / 0.967)\",\n blueA10: \"color(display-p3 0.357 0.631 1 / 0.971)\",\n blueA11: \"color(display-p3 0.49 0.72 1)\",\n blueA12: \"color(display-p3 0.788 0.898 0.99)\",\n};\nconst cyanDark = {\n cyan1: \"#0b161a\",\n cyan2: \"#101b20\",\n cyan3: \"#082c36\",\n cyan4: \"#003848\",\n cyan5: \"#004558\",\n cyan6: \"#045468\",\n cyan7: \"#12677e\",\n cyan8: \"#11809c\",\n cyan9: \"#00a2c7\",\n cyan10: \"#23afd0\",\n cyan11: \"#4ccce6\",\n cyan12: \"#b6ecf7\",\n};\nconst cyanDarkA = {\n cyanA1: \"#0091f70a\",\n cyanA2: \"#02a7f211\",\n cyanA3: \"#00befd28\",\n cyanA4: \"#00baff3b\",\n cyanA5: \"#00befd4d\",\n cyanA6: \"#00c7fd5e\",\n cyanA7: \"#14cdff75\",\n cyanA8: \"#11cfff95\",\n cyanA9: \"#00cfffc3\",\n cyanA10: \"#28d6ffcd\",\n cyanA11: \"#52e1fee5\",\n cyanA12: \"#bbf3fef7\",\n};\nconst cyanDarkP3 = {\n cyan1: \"color(display-p3 0.053 0.085 0.098)\",\n cyan2: \"color(display-p3 0.072 0.105 0.122)\",\n cyan3: \"color(display-p3 0.073 0.168 0.209)\",\n cyan4: \"color(display-p3 0.063 0.216 0.277)\",\n cyan5: \"color(display-p3 0.091 0.267 0.336)\",\n cyan6: \"color(display-p3 0.137 0.324 0.4)\",\n cyan7: \"color(display-p3 0.186 0.398 0.484)\",\n cyan8: \"color(display-p3 0.23 0.496 0.6)\",\n cyan9: \"color(display-p3 0.282 0.627 0.765)\",\n cyan10: \"color(display-p3 0.331 0.675 0.801)\",\n cyan11: \"color(display-p3 0.446 0.79 0.887)\",\n cyan12: \"color(display-p3 0.757 0.919 0.962)\",\n};\nconst cyanDarkP3A = {\n cyanA1: \"color(display-p3 0 0.647 0.992 / 0.034)\",\n cyanA2: \"color(display-p3 0.133 0.733 1 / 0.059)\",\n cyanA3: \"color(display-p3 0.122 0.741 0.996 / 0.152)\",\n cyanA4: \"color(display-p3 0.051 0.725 1 / 0.227)\",\n cyanA5: \"color(display-p3 0.149 0.757 1 / 0.29)\",\n cyanA6: \"color(display-p3 0.267 0.792 1 / 0.358)\",\n cyanA7: \"color(display-p3 0.333 0.808 1 / 0.446)\",\n cyanA8: \"color(display-p3 0.357 0.816 1 / 0.572)\",\n cyanA9: \"color(display-p3 0.357 0.82 1 / 0.748)\",\n cyanA10: \"color(display-p3 0.4 0.839 1 / 0.786)\",\n cyanA11: \"color(display-p3 0.446 0.79 0.887)\",\n cyanA12: \"color(display-p3 0.757 0.919 0.962)\",\n};\nconst tealDark = {\n teal1: \"#0d1514\",\n teal2: \"#111c1b\",\n teal3: \"#0d2d2a\",\n teal4: \"#023b37\",\n teal5: \"#084843\",\n teal6: \"#145750\",\n teal7: \"#1c6961\",\n teal8: \"#207e73\",\n teal9: \"#12a594\",\n teal10: \"#0eb39e\",\n teal11: \"#0bd8b6\",\n teal12: \"#adf0dd\",\n};\nconst tealDarkA = {\n tealA1: \"#00deab05\",\n tealA2: \"#12fbe60c\",\n tealA3: \"#00ffe61e\",\n tealA4: \"#00ffe92d\",\n tealA5: \"#00ffea3b\",\n tealA6: \"#1cffe84b\",\n tealA7: \"#2efde85f\",\n tealA8: \"#32ffe775\",\n tealA9: \"#13ffe49f\",\n tealA10: \"#0dffe0ae\",\n tealA11: \"#0afed5d6\",\n tealA12: \"#b8ffebef\",\n};\nconst tealDarkP3 = {\n teal1: \"color(display-p3 0.059 0.083 0.079)\",\n teal2: \"color(display-p3 0.075 0.11 0.107)\",\n teal3: \"color(display-p3 0.087 0.175 0.165)\",\n teal4: \"color(display-p3 0.087 0.227 0.214)\",\n teal5: \"color(display-p3 0.12 0.277 0.261)\",\n teal6: \"color(display-p3 0.162 0.335 0.314)\",\n teal7: \"color(display-p3 0.205 0.406 0.379)\",\n teal8: \"color(display-p3 0.245 0.489 0.453)\",\n teal9: \"color(display-p3 0.297 0.637 0.581)\",\n teal10: \"color(display-p3 0.319 0.69 0.62)\",\n teal11: \"color(display-p3 0.388 0.835 0.719)\",\n teal12: \"color(display-p3 0.734 0.934 0.87)\",\n};\nconst tealDarkP3A = {\n tealA1: \"color(display-p3 0 0.992 0.761 / 0.017)\",\n tealA2: \"color(display-p3 0.235 0.988 0.902 / 0.047)\",\n tealA3: \"color(display-p3 0.235 1 0.898 / 0.118)\",\n tealA4: \"color(display-p3 0.18 0.996 0.929 / 0.173)\",\n tealA5: \"color(display-p3 0.31 1 0.933 / 0.227)\",\n tealA6: \"color(display-p3 0.396 1 0.933 / 0.286)\",\n tealA7: \"color(display-p3 0.443 1 0.925 / 0.366)\",\n tealA8: \"color(display-p3 0.459 1 0.925 / 0.454)\",\n tealA9: \"color(display-p3 0.443 0.996 0.906 / 0.61)\",\n tealA10: \"color(display-p3 0.439 0.996 0.89 / 0.669)\",\n tealA11: \"color(display-p3 0.388 0.835 0.719)\",\n tealA12: \"color(display-p3 0.734 0.934 0.87)\",\n};\nconst jadeDark = {\n jade1: \"#0d1512\",\n jade2: \"#121c18\",\n jade3: \"#0f2e22\",\n jade4: \"#0b3b2c\",\n jade5: \"#114837\",\n jade6: \"#1b5745\",\n jade7: \"#246854\",\n jade8: \"#2a7e68\",\n jade9: \"#29a383\",\n jade10: \"#27b08b\",\n jade11: \"#1fd8a4\",\n jade12: \"#adf0d4\",\n};\nconst jadeDarkA = {\n jadeA1: \"#00de4505\",\n jadeA2: \"#27fba60c\",\n jadeA3: \"#02f99920\",\n jadeA4: \"#00ffaa2d\",\n jadeA5: \"#11ffb63b\",\n jadeA6: \"#34ffc24b\",\n jadeA7: \"#45fdc75e\",\n jadeA8: \"#48ffcf75\",\n jadeA9: \"#38feca9d\",\n jadeA10: \"#31fec7ab\",\n jadeA11: \"#21fec0d6\",\n jadeA12: \"#b8ffe1ef\",\n};\nconst jadeDarkP3 = {\n jade1: \"color(display-p3 0.059 0.083 0.071)\",\n jade2: \"color(display-p3 0.078 0.11 0.094)\",\n jade3: \"color(display-p3 0.091 0.176 0.138)\",\n jade4: \"color(display-p3 0.102 0.228 0.177)\",\n jade5: \"color(display-p3 0.133 0.279 0.221)\",\n jade6: \"color(display-p3 0.174 0.334 0.273)\",\n jade7: \"color(display-p3 0.219 0.402 0.335)\",\n jade8: \"color(display-p3 0.263 0.488 0.411)\",\n jade9: \"color(display-p3 0.319 0.63 0.521)\",\n jade10: \"color(display-p3 0.338 0.68 0.555)\",\n jade11: \"color(display-p3 0.4 0.835 0.656)\",\n jade12: \"color(display-p3 0.734 0.934 0.838)\",\n};\nconst jadeDarkP3A = {\n jadeA1: \"color(display-p3 0 0.992 0.298 / 0.017)\",\n jadeA2: \"color(display-p3 0.318 0.988 0.651 / 0.047)\",\n jadeA3: \"color(display-p3 0.267 1 0.667 / 0.118)\",\n jadeA4: \"color(display-p3 0.275 0.996 0.702 / 0.173)\",\n jadeA5: \"color(display-p3 0.361 1 0.741 / 0.227)\",\n jadeA6: \"color(display-p3 0.439 1 0.796 / 0.286)\",\n jadeA7: \"color(display-p3 0.49 1 0.804 / 0.362)\",\n jadeA8: \"color(display-p3 0.506 1 0.835 / 0.45)\",\n jadeA9: \"color(display-p3 0.478 0.996 0.816 / 0.606)\",\n jadeA10: \"color(display-p3 0.478 1 0.816 / 0.656)\",\n jadeA11: \"color(display-p3 0.4 0.835 0.656)\",\n jadeA12: \"color(display-p3 0.734 0.934 0.838)\",\n};\nconst greenDark = {\n green1: \"#0e1512\",\n green2: \"#121b17\",\n green3: \"#132d21\",\n green4: \"#113b29\",\n green5: \"#174933\",\n green6: \"#20573e\",\n green7: \"#28684a\",\n green8: \"#2f7c57\",\n green9: \"#30a46c\",\n green10: \"#33b074\",\n green11: \"#3dd68c\",\n green12: \"#b1f1cb\",\n};\nconst greenDarkA = {\n greenA1: \"#00de4505\",\n greenA2: \"#29f99d0b\",\n greenA3: \"#22ff991e\",\n greenA4: \"#11ff992d\",\n greenA5: \"#2bffa23c\",\n greenA6: \"#44ffaa4b\",\n greenA7: \"#50fdac5e\",\n greenA8: \"#54ffad73\",\n greenA9: \"#44ffa49e\",\n greenA10: \"#43fea4ab\",\n greenA11: \"#46fea5d4\",\n greenA12: \"#bbffd7f0\",\n};\nconst greenDarkP3 = {\n green1: \"color(display-p3 0.062 0.083 0.071)\",\n green2: \"color(display-p3 0.079 0.106 0.09)\",\n green3: \"color(display-p3 0.1 0.173 0.133)\",\n green4: \"color(display-p3 0.115 0.229 0.166)\",\n green5: \"color(display-p3 0.147 0.282 0.206)\",\n green6: \"color(display-p3 0.185 0.338 0.25)\",\n green7: \"color(display-p3 0.227 0.403 0.298)\",\n green8: \"color(display-p3 0.27 0.479 0.351)\",\n green9: \"color(display-p3 0.332 0.634 0.442)\",\n green10: \"color(display-p3 0.357 0.682 0.474)\",\n green11: \"color(display-p3 0.434 0.828 0.573)\",\n green12: \"color(display-p3 0.747 0.938 0.807)\",\n};\nconst greenDarkP3A = {\n greenA1: \"color(display-p3 0 0.992 0.298 / 0.017)\",\n greenA2: \"color(display-p3 0.341 0.98 0.616 / 0.043)\",\n greenA3: \"color(display-p3 0.376 0.996 0.655 / 0.114)\",\n greenA4: \"color(display-p3 0.341 0.996 0.635 / 0.173)\",\n greenA5: \"color(display-p3 0.408 1 0.678 / 0.232)\",\n greenA6: \"color(display-p3 0.475 1 0.706 / 0.29)\",\n greenA7: \"color(display-p3 0.514 1 0.706 / 0.362)\",\n greenA8: \"color(display-p3 0.529 1 0.718 / 0.442)\",\n greenA9: \"color(display-p3 0.502 0.996 0.682 / 0.61)\",\n greenA10: \"color(display-p3 0.506 1 0.682 / 0.66)\",\n greenA11: \"color(display-p3 0.434 0.828 0.573)\",\n greenA12: \"color(display-p3 0.747 0.938 0.807)\",\n};\nconst grassDark = {\n grass1: \"#0e1511\",\n grass2: \"#141a15\",\n grass3: \"#1b2a1e\",\n grass4: \"#1d3a24\",\n grass5: \"#25482d\",\n grass6: \"#2d5736\",\n grass7: \"#366740\",\n grass8: \"#3e7949\",\n grass9: \"#46a758\",\n grass10: \"#53b365\",\n grass11: \"#71d083\",\n grass12: \"#c2f0c2\",\n};\nconst grassDarkA = {\n grassA1: \"#00de1205\",\n grassA2: \"#5ef7780a\",\n grassA3: \"#70fe8c1b\",\n grassA4: \"#57ff802c\",\n grassA5: \"#68ff8b3b\",\n grassA6: \"#71ff8f4b\",\n grassA7: \"#77fd925d\",\n grassA8: \"#77fd9070\",\n grassA9: \"#65ff82a1\",\n grassA10: \"#72ff8dae\",\n grassA11: \"#89ff9fcd\",\n grassA12: \"#ceffceef\",\n};\nconst grassDarkP3 = {\n grass1: \"color(display-p3 0.062 0.083 0.067)\",\n grass2: \"color(display-p3 0.083 0.103 0.085)\",\n grass3: \"color(display-p3 0.118 0.163 0.122)\",\n grass4: \"color(display-p3 0.142 0.225 0.15)\",\n grass5: \"color(display-p3 0.178 0.279 0.186)\",\n grass6: \"color(display-p3 0.217 0.337 0.224)\",\n grass7: \"color(display-p3 0.258 0.4 0.264)\",\n grass8: \"color(display-p3 0.302 0.47 0.305)\",\n grass9: \"color(display-p3 0.38 0.647 0.378)\",\n grass10: \"color(display-p3 0.426 0.694 0.426)\",\n grass11: \"color(display-p3 0.535 0.807 0.542)\",\n grass12: \"color(display-p3 0.797 0.936 0.776)\",\n};\nconst grassDarkP3A = {\n grassA1: \"color(display-p3 0 0.992 0.071 / 0.017)\",\n grassA2: \"color(display-p3 0.482 0.996 0.584 / 0.038)\",\n grassA3: \"color(display-p3 0.549 0.992 0.588 / 0.106)\",\n grassA4: \"color(display-p3 0.51 0.996 0.557 / 0.169)\",\n grassA5: \"color(display-p3 0.553 1 0.588 / 0.227)\",\n grassA6: \"color(display-p3 0.584 1 0.608 / 0.29)\",\n grassA7: \"color(display-p3 0.604 1 0.616 / 0.358)\",\n grassA8: \"color(display-p3 0.608 1 0.62 / 0.433)\",\n grassA9: \"color(display-p3 0.573 1 0.569 / 0.622)\",\n grassA10: \"color(display-p3 0.6 0.996 0.6 / 0.673)\",\n grassA11: \"color(display-p3 0.535 0.807 0.542)\",\n grassA12: \"color(display-p3 0.797 0.936 0.776)\",\n};\nconst brownDark = {\n brown1: \"#12110f\",\n brown2: \"#1c1816\",\n brown3: \"#28211d\",\n brown4: \"#322922\",\n brown5: \"#3e3128\",\n brown6: \"#4d3c2f\",\n brown7: \"#614a39\",\n brown8: \"#7c5f46\",\n brown9: \"#ad7f58\",\n brown10: \"#b88c67\",\n brown11: \"#dbb594\",\n brown12: \"#f2e1ca\",\n};\nconst brownDarkA = {\n brownA1: \"#91110002\",\n brownA2: \"#fba67c0c\",\n brownA3: \"#fcb58c19\",\n brownA4: \"#fbbb8a24\",\n brownA5: \"#fcb88931\",\n brownA6: \"#fdba8741\",\n brownA7: \"#ffbb8856\",\n brownA8: \"#ffbe8773\",\n brownA9: \"#feb87da8\",\n brownA10: \"#ffc18cb3\",\n brownA11: \"#fed1aad9\",\n brownA12: \"#feecd4f2\",\n};\nconst brownDarkP3 = {\n brown1: \"color(display-p3 0.071 0.067 0.059)\",\n brown2: \"color(display-p3 0.107 0.095 0.087)\",\n brown3: \"color(display-p3 0.151 0.13 0.115)\",\n brown4: \"color(display-p3 0.191 0.161 0.138)\",\n brown5: \"color(display-p3 0.235 0.194 0.162)\",\n brown6: \"color(display-p3 0.291 0.237 0.192)\",\n brown7: \"color(display-p3 0.365 0.295 0.232)\",\n brown8: \"color(display-p3 0.469 0.377 0.287)\",\n brown9: \"color(display-p3 0.651 0.505 0.368)\",\n brown10: \"color(display-p3 0.697 0.557 0.423)\",\n brown11: \"color(display-p3 0.835 0.715 0.597)\",\n brown12: \"color(display-p3 0.938 0.885 0.802)\",\n};\nconst brownDarkP3A = {\n brownA1: \"color(display-p3 0.855 0.071 0 / 0.005)\",\n brownA2: \"color(display-p3 0.98 0.706 0.525 / 0.043)\",\n brownA3: \"color(display-p3 0.996 0.745 0.576 / 0.093)\",\n brownA4: \"color(display-p3 1 0.765 0.592 / 0.135)\",\n brownA5: \"color(display-p3 1 0.761 0.588 / 0.181)\",\n brownA6: \"color(display-p3 1 0.773 0.592 / 0.24)\",\n brownA7: \"color(display-p3 0.996 0.776 0.58 / 0.32)\",\n brownA8: \"color(display-p3 1 0.78 0.573 / 0.433)\",\n brownA9: \"color(display-p3 1 0.769 0.549 / 0.627)\",\n brownA10: \"color(display-p3 1 0.792 0.596 / 0.677)\",\n brownA11: \"color(display-p3 0.835 0.715 0.597)\",\n brownA12: \"color(display-p3 0.938 0.885 0.802)\",\n};\nconst bronzeDark = {\n bronze1: \"#141110\",\n bronze2: \"#1c1917\",\n bronze3: \"#262220\",\n bronze4: \"#302a27\",\n bronze5: \"#3b3330\",\n bronze6: \"#493e3a\",\n bronze7: \"#5a4c47\",\n bronze8: \"#6f5f58\",\n bronze9: \"#a18072\",\n bronze10: \"#ae8c7e\",\n bronze11: \"#d4b3a5\",\n bronze12: \"#ede0d9\",\n};\nconst bronzeDarkA = {\n bronzeA1: \"#d1110004\",\n bronzeA2: \"#fbbc910c\",\n bronzeA3: \"#faceb817\",\n bronzeA4: \"#facdb622\",\n bronzeA5: \"#ffd2c12d\",\n bronzeA6: \"#ffd1c03c\",\n bronzeA7: \"#fdd0c04f\",\n bronzeA8: \"#ffd6c565\",\n bronzeA9: \"#fec7b09b\",\n bronzeA10: \"#fecab5a9\",\n bronzeA11: \"#ffd7c6d1\",\n bronzeA12: \"#fff1e9ec\",\n};\nconst bronzeDarkP3 = {\n bronze1: \"color(display-p3 0.076 0.067 0.063)\",\n bronze2: \"color(display-p3 0.106 0.097 0.093)\",\n bronze3: \"color(display-p3 0.147 0.132 0.125)\",\n bronze4: \"color(display-p3 0.185 0.166 0.156)\",\n bronze5: \"color(display-p3 0.227 0.202 0.19)\",\n bronze6: \"color(display-p3 0.278 0.246 0.23)\",\n bronze7: \"color(display-p3 0.343 0.302 0.281)\",\n bronze8: \"color(display-p3 0.426 0.374 0.347)\",\n bronze9: \"color(display-p3 0.611 0.507 0.455)\",\n bronze10: \"color(display-p3 0.66 0.556 0.504)\",\n bronze11: \"color(display-p3 0.81 0.707 0.655)\",\n bronze12: \"color(display-p3 0.921 0.88 0.854)\",\n};\nconst bronzeDarkP3A = {\n bronzeA1: \"color(display-p3 0.941 0.067 0 / 0.009)\",\n bronzeA2: \"color(display-p3 0.98 0.8 0.706 / 0.043)\",\n bronzeA3: \"color(display-p3 0.988 0.851 0.761 / 0.085)\",\n bronzeA4: \"color(display-p3 0.996 0.839 0.78 / 0.127)\",\n bronzeA5: \"color(display-p3 0.996 0.863 0.773 / 0.173)\",\n bronzeA6: \"color(display-p3 1 0.863 0.796 / 0.227)\",\n bronzeA7: \"color(display-p3 1 0.867 0.8 / 0.295)\",\n bronzeA8: \"color(display-p3 1 0.859 0.788 / 0.387)\",\n bronzeA9: \"color(display-p3 1 0.82 0.733 / 0.585)\",\n bronzeA10: \"color(display-p3 1 0.839 0.761 / 0.635)\",\n bronzeA11: \"color(display-p3 0.81 0.707 0.655)\",\n bronzeA12: \"color(display-p3 0.921 0.88 0.854)\",\n};\nconst goldDark = {\n gold1: \"#121211\",\n gold2: \"#1b1a17\",\n gold3: \"#24231f\",\n gold4: \"#2d2b26\",\n gold5: \"#38352e\",\n gold6: \"#444039\",\n gold7: \"#544f46\",\n gold8: \"#696256\",\n gold9: \"#978365\",\n gold10: \"#a39073\",\n gold11: \"#cbb99f\",\n gold12: \"#e8e2d9\",\n};\nconst goldDarkA = {\n goldA1: \"#91911102\",\n goldA2: \"#f9e29d0b\",\n goldA3: \"#f8ecbb15\",\n goldA4: \"#ffeec41e\",\n goldA5: \"#feecc22a\",\n goldA6: \"#feebcb37\",\n goldA7: \"#ffedcd48\",\n goldA8: \"#fdeaca5f\",\n goldA9: \"#ffdba690\",\n goldA10: \"#fedfb09d\",\n goldA11: \"#fee7c6c8\",\n goldA12: \"#fef7ede7\",\n};\nconst goldDarkP3 = {\n gold1: \"color(display-p3 0.071 0.071 0.067)\",\n gold2: \"color(display-p3 0.104 0.101 0.09)\",\n gold3: \"color(display-p3 0.141 0.136 0.122)\",\n gold4: \"color(display-p3 0.177 0.17 0.152)\",\n gold5: \"color(display-p3 0.217 0.207 0.185)\",\n gold6: \"color(display-p3 0.265 0.252 0.225)\",\n gold7: \"color(display-p3 0.327 0.31 0.277)\",\n gold8: \"color(display-p3 0.407 0.384 0.342)\",\n gold9: \"color(display-p3 0.579 0.517 0.41)\",\n gold10: \"color(display-p3 0.628 0.566 0.463)\",\n gold11: \"color(display-p3 0.784 0.728 0.635)\",\n gold12: \"color(display-p3 0.906 0.887 0.855)\",\n};\nconst goldDarkP3A = {\n goldA1: \"color(display-p3 0.855 0.855 0.071 / 0.005)\",\n goldA2: \"color(display-p3 0.98 0.89 0.616 / 0.043)\",\n goldA3: \"color(display-p3 1 0.949 0.753 / 0.08)\",\n goldA4: \"color(display-p3 1 0.933 0.8 / 0.118)\",\n goldA5: \"color(display-p3 1 0.949 0.804 / 0.16)\",\n goldA6: \"color(display-p3 1 0.925 0.8 / 0.215)\",\n goldA7: \"color(display-p3 1 0.945 0.831 / 0.278)\",\n goldA8: \"color(display-p3 1 0.937 0.82 / 0.366)\",\n goldA9: \"color(display-p3 0.996 0.882 0.69 / 0.551)\",\n goldA10: \"color(display-p3 1 0.894 0.725 / 0.601)\",\n goldA11: \"color(display-p3 0.784 0.728 0.635)\",\n goldA12: \"color(display-p3 0.906 0.887 0.855)\",\n};\nconst skyDark = {\n sky1: \"#0d141f\",\n sky2: \"#111a27\",\n sky3: \"#112840\",\n sky4: \"#113555\",\n sky5: \"#154467\",\n sky6: \"#1b537b\",\n sky7: \"#1f6692\",\n sky8: \"#197cae\",\n sky9: \"#7ce2fe\",\n sky10: \"#a8eeff\",\n sky11: \"#75c7f0\",\n sky12: \"#c2f3ff\",\n};\nconst skyDarkA = {\n skyA1: \"#0044ff0f\",\n skyA2: \"#1171fb18\",\n skyA3: \"#1184fc33\",\n skyA4: \"#128fff49\",\n skyA5: \"#1c9dfd5d\",\n skyA6: \"#28a5ff72\",\n skyA7: \"#2badfe8b\",\n skyA8: \"#1db2fea9\",\n skyA9: \"#7ce3fffe\",\n skyA10: \"#a8eeff\",\n skyA11: \"#7cd3ffef\",\n skyA12: \"#c2f3ff\",\n};\nconst skyDarkP3 = {\n sky1: \"color(display-p3 0.056 0.078 0.116)\",\n sky2: \"color(display-p3 0.075 0.101 0.149)\",\n sky3: \"color(display-p3 0.089 0.154 0.244)\",\n sky4: \"color(display-p3 0.106 0.207 0.323)\",\n sky5: \"color(display-p3 0.135 0.261 0.394)\",\n sky6: \"color(display-p3 0.17 0.322 0.469)\",\n sky7: \"color(display-p3 0.205 0.394 0.557)\",\n sky8: \"color(display-p3 0.232 0.48 0.665)\",\n sky9: \"color(display-p3 0.585 0.877 0.983)\",\n sky10: \"color(display-p3 0.718 0.925 0.991)\",\n sky11: \"color(display-p3 0.536 0.772 0.924)\",\n sky12: \"color(display-p3 0.799 0.947 0.993)\",\n};\nconst skyDarkP3A = {\n skyA1: \"color(display-p3 0 0.282 0.996 / 0.055)\",\n skyA2: \"color(display-p3 0.157 0.467 0.992 / 0.089)\",\n skyA3: \"color(display-p3 0.192 0.522 0.996 / 0.19)\",\n skyA4: \"color(display-p3 0.212 0.584 1 / 0.274)\",\n skyA5: \"color(display-p3 0.259 0.631 1 / 0.349)\",\n skyA6: \"color(display-p3 0.302 0.655 1 / 0.433)\",\n skyA7: \"color(display-p3 0.329 0.686 1 / 0.526)\",\n skyA8: \"color(display-p3 0.325 0.71 1 / 0.643)\",\n skyA9: \"color(display-p3 0.592 0.894 1 / 0.984)\",\n skyA10: \"color(display-p3 0.722 0.933 1 / 0.992)\",\n skyA11: \"color(display-p3 0.536 0.772 0.924)\",\n skyA12: \"color(display-p3 0.799 0.947 0.993)\",\n};\nconst mintDark = {\n mint1: \"#0e1515\",\n mint2: \"#0f1b1b\",\n mint3: \"#092c2b\",\n mint4: \"#003a38\",\n mint5: \"#004744\",\n mint6: \"#105650\",\n mint7: \"#1e685f\",\n mint8: \"#277f70\",\n mint9: \"#86ead4\",\n mint10: \"#a8f5e5\",\n mint11: \"#58d5ba\",\n mint12: \"#c4f5e1\",\n};\nconst mintDarkA = {\n mintA1: \"#00dede05\",\n mintA2: \"#00f9f90b\",\n mintA3: \"#00fff61d\",\n mintA4: \"#00fff42c\",\n mintA5: \"#00fff23a\",\n mintA6: \"#0effeb4a\",\n mintA7: \"#34fde55e\",\n mintA8: \"#41ffdf76\",\n mintA9: \"#92ffe7e9\",\n mintA10: \"#aefeedf5\",\n mintA11: \"#67ffded2\",\n mintA12: \"#cbfee9f5\",\n};\nconst mintDarkP3 = {\n mint1: \"color(display-p3 0.059 0.082 0.081)\",\n mint2: \"color(display-p3 0.068 0.104 0.105)\",\n mint3: \"color(display-p3 0.077 0.17 0.168)\",\n mint4: \"color(display-p3 0.068 0.224 0.22)\",\n mint5: \"color(display-p3 0.104 0.275 0.264)\",\n mint6: \"color(display-p3 0.154 0.332 0.313)\",\n mint7: \"color(display-p3 0.207 0.403 0.373)\",\n mint8: \"color(display-p3 0.258 0.49 0.441)\",\n mint9: \"color(display-p3 0.62 0.908 0.834)\",\n mint10: \"color(display-p3 0.725 0.954 0.898)\",\n mint11: \"color(display-p3 0.482 0.825 0.733)\",\n mint12: \"color(display-p3 0.807 0.955 0.887)\",\n};\nconst mintDarkP3A = {\n mintA1: \"color(display-p3 0 0.992 0.992 / 0.017)\",\n mintA2: \"color(display-p3 0.071 0.98 0.98 / 0.043)\",\n mintA3: \"color(display-p3 0.176 0.996 0.996 / 0.11)\",\n mintA4: \"color(display-p3 0.071 0.996 0.973 / 0.169)\",\n mintA5: \"color(display-p3 0.243 1 0.949 / 0.223)\",\n mintA6: \"color(display-p3 0.369 1 0.933 / 0.286)\",\n mintA7: \"color(display-p3 0.459 1 0.914 / 0.362)\",\n mintA8: \"color(display-p3 0.49 1 0.89 / 0.454)\",\n mintA9: \"color(display-p3 0.678 0.996 0.914 / 0.904)\",\n mintA10: \"color(display-p3 0.761 1 0.941 / 0.95)\",\n mintA11: \"color(display-p3 0.482 0.825 0.733)\",\n mintA12: \"color(display-p3 0.807 0.955 0.887)\",\n};\nconst limeDark = {\n lime1: \"#11130c\",\n lime2: \"#151a10\",\n lime3: \"#1f2917\",\n lime4: \"#29371d\",\n lime5: \"#334423\",\n lime6: \"#3d522a\",\n lime7: \"#496231\",\n lime8: \"#577538\",\n lime9: \"#bdee63\",\n lime10: \"#d4ff70\",\n lime11: \"#bde56c\",\n lime12: \"#e3f7ba\",\n};\nconst limeDarkA = {\n limeA1: \"#11bb0003\",\n limeA2: \"#78f7000a\",\n limeA3: \"#9bfd4c1a\",\n limeA4: \"#a7fe5c29\",\n limeA5: \"#affe6537\",\n limeA6: \"#b2fe6d46\",\n limeA7: \"#b6ff6f57\",\n limeA8: \"#b6fd6d6c\",\n limeA9: \"#caff69ed\",\n limeA10: \"#d4ff70\",\n limeA11: \"#d1fe77e4\",\n limeA12: \"#e9febff7\",\n};\nconst limeDarkP3 = {\n lime1: \"color(display-p3 0.067 0.073 0.048)\",\n lime2: \"color(display-p3 0.086 0.1 0.067)\",\n lime3: \"color(display-p3 0.13 0.16 0.099)\",\n lime4: \"color(display-p3 0.172 0.214 0.126)\",\n lime5: \"color(display-p3 0.213 0.266 0.153)\",\n lime6: \"color(display-p3 0.257 0.321 0.182)\",\n lime7: \"color(display-p3 0.307 0.383 0.215)\",\n lime8: \"color(display-p3 0.365 0.456 0.25)\",\n lime9: \"color(display-p3 0.78 0.928 0.466)\",\n lime10: \"color(display-p3 0.865 0.995 0.519)\",\n lime11: \"color(display-p3 0.771 0.893 0.485)\",\n lime12: \"color(display-p3 0.905 0.966 0.753)\",\n};\nconst limeDarkP3A = {\n limeA1: \"color(display-p3 0.067 0.941 0 / 0.009)\",\n limeA2: \"color(display-p3 0.584 0.996 0.071 / 0.038)\",\n limeA3: \"color(display-p3 0.69 1 0.38 / 0.101)\",\n limeA4: \"color(display-p3 0.729 1 0.435 / 0.16)\",\n limeA5: \"color(display-p3 0.745 1 0.471 / 0.215)\",\n limeA6: \"color(display-p3 0.769 1 0.482 / 0.274)\",\n limeA7: \"color(display-p3 0.769 1 0.506 / 0.341)\",\n limeA8: \"color(display-p3 0.784 1 0.51 / 0.416)\",\n limeA9: \"color(display-p3 0.839 1 0.502 / 0.925)\",\n limeA10: \"color(display-p3 0.871 1 0.522 / 0.996)\",\n limeA11: \"color(display-p3 0.771 0.893 0.485)\",\n limeA12: \"color(display-p3 0.905 0.966 0.753)\",\n};\nconst yellowDark = {\n yellow1: \"#14120b\",\n yellow2: \"#1b180f\",\n yellow3: \"#2d2305\",\n yellow4: \"#362b00\",\n yellow5: \"#433500\",\n yellow6: \"#524202\",\n yellow7: \"#665417\",\n yellow8: \"#836a21\",\n yellow9: \"#ffe629\",\n yellow10: \"#ffff57\",\n yellow11: \"#f5e147\",\n yellow12: \"#f6eeb4\",\n};\nconst yellowDarkA = {\n yellowA1: \"#d1510004\",\n yellowA2: \"#f9b4000b\",\n yellowA3: \"#ffaa001e\",\n yellowA4: \"#fdb70028\",\n yellowA5: \"#febb0036\",\n yellowA6: \"#fec40046\",\n yellowA7: \"#fdcb225c\",\n yellowA8: \"#fdca327b\",\n yellowA9: \"#ffe629\",\n yellowA10: \"#ffff57\",\n yellowA11: \"#fee949f5\",\n yellowA12: \"#fef6baf6\",\n};\nconst yellowDarkP3 = {\n yellow1: \"color(display-p3 0.078 0.069 0.047)\",\n yellow2: \"color(display-p3 0.103 0.094 0.063)\",\n yellow3: \"color(display-p3 0.168 0.137 0.039)\",\n yellow4: \"color(display-p3 0.209 0.169 0)\",\n yellow5: \"color(display-p3 0.255 0.209 0)\",\n yellow6: \"color(display-p3 0.31 0.261 0.07)\",\n yellow7: \"color(display-p3 0.389 0.331 0.135)\",\n yellow8: \"color(display-p3 0.497 0.42 0.182)\",\n yellow9: \"color(display-p3 1 0.92 0.22)\",\n yellow10: \"color(display-p3 1 1 0.456)\",\n yellow11: \"color(display-p3 0.948 0.885 0.392)\",\n yellow12: \"color(display-p3 0.959 0.934 0.731)\",\n};\nconst yellowDarkP3A = {\n yellowA1: \"color(display-p3 0.973 0.369 0 / 0.013)\",\n yellowA2: \"color(display-p3 0.996 0.792 0 / 0.038)\",\n yellowA3: \"color(display-p3 0.996 0.71 0 / 0.11)\",\n yellowA4: \"color(display-p3 0.996 0.741 0 / 0.152)\",\n yellowA5: \"color(display-p3 0.996 0.765 0 / 0.202)\",\n yellowA6: \"color(display-p3 0.996 0.816 0.082 / 0.261)\",\n yellowA7: \"color(display-p3 1 0.831 0.263 / 0.345)\",\n yellowA8: \"color(display-p3 1 0.831 0.314 / 0.463)\",\n yellowA9: \"color(display-p3 1 0.922 0.22)\",\n yellowA10: \"color(display-p3 1 1 0.455)\",\n yellowA11: \"color(display-p3 0.948 0.885 0.392)\",\n yellowA12: \"color(display-p3 0.959 0.934 0.731)\",\n};\nconst amberDark = {\n amber1: \"#16120c\",\n amber2: \"#1d180f\",\n amber3: \"#302008\",\n amber4: \"#3f2700\",\n amber5: \"#4d3000\",\n amber6: \"#5c3d05\",\n amber7: \"#714f19\",\n amber8: \"#8f6424\",\n amber9: \"#ffc53d\",\n amber10: \"#ffd60a\",\n amber11: \"#ffca16\",\n amber12: \"#ffe7b3\",\n};\nconst amberDarkA = {\n amberA1: \"#e63c0006\",\n amberA2: \"#fd9b000d\",\n amberA3: \"#fa820022\",\n amberA4: \"#fc820032\",\n amberA5: \"#fd8b0041\",\n amberA6: \"#fd9b0051\",\n amberA7: \"#ffab2567\",\n amberA8: \"#ffae3587\",\n amberA9: \"#ffc53d\",\n amberA10: \"#ffd60a\",\n amberA11: \"#ffca16\",\n amberA12: \"#ffe7b3\",\n};\nconst amberDarkP3 = {\n amber1: \"color(display-p3 0.082 0.07 0.05)\",\n amber2: \"color(display-p3 0.111 0.094 0.064)\",\n amber3: \"color(display-p3 0.178 0.128 0.049)\",\n amber4: \"color(display-p3 0.239 0.156 0)\",\n amber5: \"color(display-p3 0.29 0.193 0)\",\n amber6: \"color(display-p3 0.344 0.245 0.076)\",\n amber7: \"color(display-p3 0.422 0.314 0.141)\",\n amber8: \"color(display-p3 0.535 0.399 0.189)\",\n amber9: \"color(display-p3 1 0.77 0.26)\",\n amber10: \"color(display-p3 1 0.87 0.15)\",\n amber11: \"color(display-p3 1 0.8 0.29)\",\n amber12: \"color(display-p3 0.984 0.909 0.726)\",\n};\nconst amberDarkP3A = {\n amberA1: \"color(display-p3 0.992 0.298 0 / 0.017)\",\n amberA2: \"color(display-p3 0.988 0.651 0 / 0.047)\",\n amberA3: \"color(display-p3 1 0.6 0 / 0.118)\",\n amberA4: \"color(display-p3 1 0.557 0 / 0.185)\",\n amberA5: \"color(display-p3 1 0.592 0 / 0.24)\",\n amberA6: \"color(display-p3 1 0.659 0.094 / 0.299)\",\n amberA7: \"color(display-p3 1 0.714 0.263 / 0.383)\",\n amberA8: \"color(display-p3 0.996 0.729 0.306 / 0.5)\",\n amberA9: \"color(display-p3 1 0.769 0.259)\",\n amberA10: \"color(display-p3 1 0.871 0.149)\",\n amberA11: \"color(display-p3 1 0.8 0.29)\",\n amberA12: \"color(display-p3 0.984 0.909 0.726)\",\n};\nconst orangeDark = {\n orange1: \"#17120e\",\n orange2: \"#1e160f\",\n orange3: \"#331e0b\",\n orange4: \"#462100\",\n orange5: \"#562800\",\n orange6: \"#66350c\",\n orange7: \"#7e451d\",\n orange8: \"#a35829\",\n orange9: \"#f76b15\",\n orange10: \"#ff801f\",\n orange11: \"#ffa057\",\n orange12: \"#ffe0c2\",\n};\nconst orangeDarkA = {\n orangeA1: \"#ec360007\",\n orangeA2: \"#fe6d000e\",\n orangeA3: \"#fb6a0025\",\n orangeA4: \"#ff590039\",\n orangeA5: \"#ff61004a\",\n orangeA6: \"#fd75045c\",\n orangeA7: \"#ff832c75\",\n orangeA8: \"#fe84389d\",\n orangeA9: \"#fe6d15f7\",\n orangeA10: \"#ff801f\",\n orangeA11: \"#ffa057\",\n orangeA12: \"#ffe0c2\",\n};\nconst orangeDarkP3 = {\n orange1: \"color(display-p3 0.088 0.07 0.057)\",\n orange2: \"color(display-p3 0.113 0.089 0.061)\",\n orange3: \"color(display-p3 0.189 0.12 0.056)\",\n orange4: \"color(display-p3 0.262 0.132 0)\",\n orange5: \"color(display-p3 0.315 0.168 0.016)\",\n orange6: \"color(display-p3 0.376 0.219 0.088)\",\n orange7: \"color(display-p3 0.465 0.283 0.147)\",\n orange8: \"color(display-p3 0.601 0.359 0.201)\",\n orange9: \"color(display-p3 0.9 0.45 0.2)\",\n orange10: \"color(display-p3 0.98 0.51 0.23)\",\n orange11: \"color(display-p3 1 0.63 0.38)\",\n orange12: \"color(display-p3 0.98 0.883 0.775)\",\n};\nconst orangeDarkP3A = {\n orangeA1: \"color(display-p3 0.961 0.247 0 / 0.022)\",\n orangeA2: \"color(display-p3 0.992 0.529 0 / 0.051)\",\n orangeA3: \"color(display-p3 0.996 0.486 0 / 0.131)\",\n orangeA4: \"color(display-p3 0.996 0.384 0 / 0.211)\",\n orangeA5: \"color(display-p3 1 0.455 0 / 0.265)\",\n orangeA6: \"color(display-p3 1 0.529 0.129 / 0.332)\",\n orangeA7: \"color(display-p3 1 0.569 0.251 / 0.429)\",\n orangeA8: \"color(display-p3 1 0.584 0.302 / 0.572)\",\n orangeA9: \"color(display-p3 1 0.494 0.216 / 0.895)\",\n orangeA10: \"color(display-p3 1 0.522 0.235 / 0.979)\",\n orangeA11: \"color(display-p3 1 0.63 0.38)\",\n orangeA12: \"color(display-p3 0.98 0.883 0.775)\",\n};\n\nconst gray = {\n gray1: \"#fcfcfc\",\n gray2: \"#f9f9f9\",\n gray3: \"#f0f0f0\",\n gray4: \"#e8e8e8\",\n gray5: \"#e0e0e0\",\n gray6: \"#d9d9d9\",\n gray7: \"#cecece\",\n gray8: \"#bbbbbb\",\n gray9: \"#8d8d8d\",\n gray10: \"#838383\",\n gray11: \"#646464\",\n gray12: \"#202020\",\n};\nconst grayA = {\n grayA1: \"#00000003\",\n grayA2: \"#00000006\",\n grayA3: \"#0000000f\",\n grayA4: \"#00000017\",\n grayA5: \"#0000001f\",\n grayA6: \"#00000026\",\n grayA7: \"#00000031\",\n grayA8: \"#00000044\",\n grayA9: \"#00000072\",\n grayA10: \"#0000007c\",\n grayA11: \"#0000009b\",\n grayA12: \"#000000df\",\n};\nconst grayP3 = {\n gray1: \"color(display-p3 0.988 0.988 0.988)\",\n gray2: \"color(display-p3 0.975 0.975 0.975)\",\n gray3: \"color(display-p3 0.939 0.939 0.939)\",\n gray4: \"color(display-p3 0.908 0.908 0.908)\",\n gray5: \"color(display-p3 0.88 0.88 0.88)\",\n gray6: \"color(display-p3 0.849 0.849 0.849)\",\n gray7: \"color(display-p3 0.807 0.807 0.807)\",\n gray8: \"color(display-p3 0.732 0.732 0.732)\",\n gray9: \"color(display-p3 0.553 0.553 0.553)\",\n gray10: \"color(display-p3 0.512 0.512 0.512)\",\n gray11: \"color(display-p3 0.392 0.392 0.392)\",\n gray12: \"color(display-p3 0.125 0.125 0.125)\",\n};\nconst grayP3A = {\n grayA1: \"color(display-p3 0 0 0 / 0.012)\",\n grayA2: \"color(display-p3 0 0 0 / 0.024)\",\n grayA3: \"color(display-p3 0 0 0 / 0.063)\",\n grayA4: \"color(display-p3 0 0 0 / 0.09)\",\n grayA5: \"color(display-p3 0 0 0 / 0.122)\",\n grayA6: \"color(display-p3 0 0 0 / 0.153)\",\n grayA7: \"color(display-p3 0 0 0 / 0.192)\",\n grayA8: \"color(display-p3 0 0 0 / 0.267)\",\n grayA9: \"color(display-p3 0 0 0 / 0.447)\",\n grayA10: \"color(display-p3 0 0 0 / 0.486)\",\n grayA11: \"color(display-p3 0 0 0 / 0.608)\",\n grayA12: \"color(display-p3 0 0 0 / 0.875)\",\n};\nconst mauve = {\n mauve1: \"#fdfcfd\",\n mauve2: \"#faf9fb\",\n mauve3: \"#f2eff3\",\n mauve4: \"#eae7ec\",\n mauve5: \"#e3dfe6\",\n mauve6: \"#dbd8e0\",\n mauve7: \"#d0cdd7\",\n mauve8: \"#bcbac7\",\n mauve9: \"#8e8c99\",\n mauve10: \"#84828e\",\n mauve11: \"#65636d\",\n mauve12: \"#211f26\",\n};\nconst mauveA = {\n mauveA1: \"#55005503\",\n mauveA2: \"#2b005506\",\n mauveA3: \"#30004010\",\n mauveA4: \"#20003618\",\n mauveA5: \"#20003820\",\n mauveA6: \"#14003527\",\n mauveA7: \"#10003332\",\n mauveA8: \"#08003145\",\n mauveA9: \"#05001d73\",\n mauveA10: \"#0500197d\",\n mauveA11: \"#0400119c\",\n mauveA12: \"#020008e0\",\n};\nconst mauveP3 = {\n mauve1: \"color(display-p3 0.991 0.988 0.992)\",\n mauve2: \"color(display-p3 0.98 0.976 0.984)\",\n mauve3: \"color(display-p3 0.946 0.938 0.952)\",\n mauve4: \"color(display-p3 0.915 0.906 0.925)\",\n mauve5: \"color(display-p3 0.886 0.876 0.901)\",\n mauve6: \"color(display-p3 0.856 0.846 0.875)\",\n mauve7: \"color(display-p3 0.814 0.804 0.84)\",\n mauve8: \"color(display-p3 0.735 0.728 0.777)\",\n mauve9: \"color(display-p3 0.555 0.549 0.596)\",\n mauve10: \"color(display-p3 0.514 0.508 0.552)\",\n mauve11: \"color(display-p3 0.395 0.388 0.424)\",\n mauve12: \"color(display-p3 0.128 0.122 0.147)\",\n};\nconst mauveP3A = {\n mauveA1: \"color(display-p3 0.349 0.024 0.349 / 0.012)\",\n mauveA2: \"color(display-p3 0.184 0.024 0.349 / 0.024)\",\n mauveA3: \"color(display-p3 0.129 0.008 0.255 / 0.063)\",\n mauveA4: \"color(display-p3 0.094 0.012 0.216 / 0.095)\",\n mauveA5: \"color(display-p3 0.098 0.008 0.224 / 0.126)\",\n mauveA6: \"color(display-p3 0.055 0.004 0.18 / 0.153)\",\n mauveA7: \"color(display-p3 0.067 0.008 0.184 / 0.197)\",\n mauveA8: \"color(display-p3 0.02 0.004 0.176 / 0.271)\",\n mauveA9: \"color(display-p3 0.02 0.004 0.106 / 0.451)\",\n mauveA10: \"color(display-p3 0.012 0.004 0.09 / 0.491)\",\n mauveA11: \"color(display-p3 0.016 0 0.059 / 0.612)\",\n mauveA12: \"color(display-p3 0.008 0 0.027 / 0.879)\",\n};\nconst slate = {\n slate1: \"#fcfcfd\",\n slate2: \"#f9f9fb\",\n slate3: \"#f0f0f3\",\n slate4: \"#e8e8ec\",\n slate5: \"#e0e1e6\",\n slate6: \"#d9d9e0\",\n slate7: \"#cdced6\",\n slate8: \"#b9bbc6\",\n slate9: \"#8b8d98\",\n slate10: \"#80838d\",\n slate11: \"#60646c\",\n slate12: \"#1c2024\",\n};\nconst slateA = {\n slateA1: \"#00005503\",\n slateA2: \"#00005506\",\n slateA3: \"#0000330f\",\n slateA4: \"#00002d17\",\n slateA5: \"#0009321f\",\n slateA6: \"#00002f26\",\n slateA7: \"#00062e32\",\n slateA8: \"#00083046\",\n slateA9: \"#00051d74\",\n slateA10: \"#00071b7f\",\n slateA11: \"#0007149f\",\n slateA12: \"#000509e3\",\n};\nconst slateP3 = {\n slate1: \"color(display-p3 0.988 0.988 0.992)\",\n slate2: \"color(display-p3 0.976 0.976 0.984)\",\n slate3: \"color(display-p3 0.94 0.941 0.953)\",\n slate4: \"color(display-p3 0.908 0.909 0.925)\",\n slate5: \"color(display-p3 0.88 0.881 0.901)\",\n slate6: \"color(display-p3 0.85 0.852 0.876)\",\n slate7: \"color(display-p3 0.805 0.808 0.838)\",\n slate8: \"color(display-p3 0.727 0.733 0.773)\",\n slate9: \"color(display-p3 0.547 0.553 0.592)\",\n slate10: \"color(display-p3 0.503 0.512 0.549)\",\n slate11: \"color(display-p3 0.379 0.392 0.421)\",\n slate12: \"color(display-p3 0.113 0.125 0.14)\",\n};\nconst slateP3A = {\n slateA1: \"color(display-p3 0.024 0.024 0.349 / 0.012)\",\n slateA2: \"color(display-p3 0.024 0.024 0.349 / 0.024)\",\n slateA3: \"color(display-p3 0.004 0.004 0.204 / 0.059)\",\n slateA4: \"color(display-p3 0.012 0.012 0.184 / 0.091)\",\n slateA5: \"color(display-p3 0.004 0.039 0.2 / 0.122)\",\n slateA6: \"color(display-p3 0.008 0.008 0.165 / 0.15)\",\n slateA7: \"color(display-p3 0.008 0.027 0.184 / 0.197)\",\n slateA8: \"color(display-p3 0.004 0.031 0.176 / 0.275)\",\n slateA9: \"color(display-p3 0.004 0.02 0.106 / 0.455)\",\n slateA10: \"color(display-p3 0.004 0.027 0.098 / 0.499)\",\n slateA11: \"color(display-p3 0 0.02 0.063 / 0.62)\",\n slateA12: \"color(display-p3 0 0.012 0.031 / 0.887)\",\n};\nconst sage = {\n sage1: \"#fbfdfc\",\n sage2: \"#f7f9f8\",\n sage3: \"#eef1f0\",\n sage4: \"#e6e9e8\",\n sage5: \"#dfe2e0\",\n sage6: \"#d7dad9\",\n sage7: \"#cbcfcd\",\n sage8: \"#b8bcba\",\n sage9: \"#868e8b\",\n sage10: \"#7c8481\",\n sage11: \"#5f6563\",\n sage12: \"#1a211e\",\n};\nconst sageA = {\n sageA1: \"#00804004\",\n sageA2: \"#00402008\",\n sageA3: \"#002d1e11\",\n sageA4: \"#001f1519\",\n sageA5: \"#00180820\",\n sageA6: \"#00140d28\",\n sageA7: \"#00140a34\",\n sageA8: \"#000f0847\",\n sageA9: \"#00110b79\",\n sageA10: \"#00100a83\",\n sageA11: \"#000a07a0\",\n sageA12: \"#000805e5\",\n};\nconst sageP3 = {\n sage1: \"color(display-p3 0.986 0.992 0.988)\",\n sage2: \"color(display-p3 0.97 0.977 0.974)\",\n sage3: \"color(display-p3 0.935 0.944 0.94)\",\n sage4: \"color(display-p3 0.904 0.913 0.909)\",\n sage5: \"color(display-p3 0.875 0.885 0.88)\",\n sage6: \"color(display-p3 0.844 0.854 0.849)\",\n sage7: \"color(display-p3 0.8 0.811 0.806)\",\n sage8: \"color(display-p3 0.725 0.738 0.732)\",\n sage9: \"color(display-p3 0.531 0.556 0.546)\",\n sage10: \"color(display-p3 0.492 0.515 0.506)\",\n sage11: \"color(display-p3 0.377 0.395 0.389)\",\n sage12: \"color(display-p3 0.107 0.129 0.118)\",\n};\nconst sageP3A = {\n sageA1: \"color(display-p3 0.024 0.514 0.267 / 0.016)\",\n sageA2: \"color(display-p3 0.02 0.267 0.145 / 0.032)\",\n sageA3: \"color(display-p3 0.008 0.184 0.125 / 0.067)\",\n sageA4: \"color(display-p3 0.012 0.094 0.051 / 0.095)\",\n sageA5: \"color(display-p3 0.008 0.098 0.035 / 0.126)\",\n sageA6: \"color(display-p3 0.004 0.078 0.027 / 0.157)\",\n sageA7: \"color(display-p3 0 0.059 0.039 / 0.2)\",\n sageA8: \"color(display-p3 0.004 0.047 0.031 / 0.275)\",\n sageA9: \"color(display-p3 0.004 0.059 0.035 / 0.471)\",\n sageA10: \"color(display-p3 0 0.047 0.031 / 0.51)\",\n sageA11: \"color(display-p3 0 0.031 0.02 / 0.624)\",\n sageA12: \"color(display-p3 0 0.027 0.012 / 0.895)\",\n};\nconst olive = {\n olive1: \"#fcfdfc\",\n olive2: \"#f8faf8\",\n olive3: \"#eff1ef\",\n olive4: \"#e7e9e7\",\n olive5: \"#dfe2df\",\n olive6: \"#d7dad7\",\n olive7: \"#cccfcc\",\n olive8: \"#b9bcb8\",\n olive9: \"#898e87\",\n olive10: \"#7f847d\",\n olive11: \"#60655f\",\n olive12: \"#1d211c\",\n};\nconst oliveA = {\n oliveA1: \"#00550003\",\n oliveA2: \"#00490007\",\n oliveA3: \"#00200010\",\n oliveA4: \"#00160018\",\n oliveA5: \"#00180020\",\n oliveA6: \"#00140028\",\n oliveA7: \"#000f0033\",\n oliveA8: \"#040f0047\",\n oliveA9: \"#050f0078\",\n oliveA10: \"#040e0082\",\n oliveA11: \"#020a00a0\",\n oliveA12: \"#010600e3\",\n};\nconst oliveP3 = {\n olive1: \"color(display-p3 0.989 0.992 0.989)\",\n olive2: \"color(display-p3 0.974 0.98 0.973)\",\n olive3: \"color(display-p3 0.939 0.945 0.937)\",\n olive4: \"color(display-p3 0.907 0.914 0.905)\",\n olive5: \"color(display-p3 0.878 0.885 0.875)\",\n olive6: \"color(display-p3 0.846 0.855 0.843)\",\n olive7: \"color(display-p3 0.803 0.812 0.8)\",\n olive8: \"color(display-p3 0.727 0.738 0.723)\",\n olive9: \"color(display-p3 0.541 0.556 0.532)\",\n olive10: \"color(display-p3 0.5 0.515 0.491)\",\n olive11: \"color(display-p3 0.38 0.395 0.374)\",\n olive12: \"color(display-p3 0.117 0.129 0.111)\",\n};\nconst oliveP3A = {\n oliveA1: \"color(display-p3 0.024 0.349 0.024 / 0.012)\",\n oliveA2: \"color(display-p3 0.024 0.302 0.024 / 0.028)\",\n oliveA3: \"color(display-p3 0.008 0.129 0.008 / 0.063)\",\n oliveA4: \"color(display-p3 0.012 0.094 0.012 / 0.095)\",\n oliveA5: \"color(display-p3 0.035 0.098 0.008 / 0.126)\",\n oliveA6: \"color(display-p3 0.027 0.078 0.004 / 0.157)\",\n oliveA7: \"color(display-p3 0.02 0.059 0 / 0.2)\",\n oliveA8: \"color(display-p3 0.02 0.059 0.004 / 0.279)\",\n oliveA9: \"color(display-p3 0.02 0.051 0.004 / 0.467)\",\n oliveA10: \"color(display-p3 0.024 0.047 0 / 0.51)\",\n oliveA11: \"color(display-p3 0.012 0.039 0 / 0.628)\",\n oliveA12: \"color(display-p3 0.008 0.024 0 / 0.891)\",\n};\nconst sand = {\n sand1: \"#fdfdfc\",\n sand2: \"#f9f9f8\",\n sand3: \"#f1f0ef\",\n sand4: \"#e9e8e6\",\n sand5: \"#e2e1de\",\n sand6: \"#dad9d6\",\n sand7: \"#cfceca\",\n sand8: \"#bcbbb5\",\n sand9: \"#8d8d86\",\n sand10: \"#82827c\",\n sand11: \"#63635e\",\n sand12: \"#21201c\",\n};\nconst sandA = {\n sandA1: \"#55550003\",\n sandA2: \"#25250007\",\n sandA3: \"#20100010\",\n sandA4: \"#1f150019\",\n sandA5: \"#1f180021\",\n sandA6: \"#19130029\",\n sandA7: \"#19140035\",\n sandA8: \"#1915014a\",\n sandA9: \"#0f0f0079\",\n sandA10: \"#0c0c0083\",\n sandA11: \"#080800a1\",\n sandA12: \"#060500e3\",\n};\nconst sandP3 = {\n sand1: \"color(display-p3 0.992 0.992 0.989)\",\n sand2: \"color(display-p3 0.977 0.977 0.973)\",\n sand3: \"color(display-p3 0.943 0.942 0.936)\",\n sand4: \"color(display-p3 0.913 0.912 0.903)\",\n sand5: \"color(display-p3 0.885 0.883 0.873)\",\n sand6: \"color(display-p3 0.854 0.852 0.839)\",\n sand7: \"color(display-p3 0.813 0.81 0.794)\",\n sand8: \"color(display-p3 0.738 0.734 0.713)\",\n sand9: \"color(display-p3 0.553 0.553 0.528)\",\n sand10: \"color(display-p3 0.511 0.511 0.488)\",\n sand11: \"color(display-p3 0.388 0.388 0.37)\",\n sand12: \"color(display-p3 0.129 0.126 0.111)\",\n};\nconst sandP3A = {\n sandA1: \"color(display-p3 0.349 0.349 0.024 / 0.012)\",\n sandA2: \"color(display-p3 0.161 0.161 0.024 / 0.028)\",\n sandA3: \"color(display-p3 0.067 0.067 0.008 / 0.063)\",\n sandA4: \"color(display-p3 0.129 0.129 0.012 / 0.099)\",\n sandA5: \"color(display-p3 0.098 0.067 0.008 / 0.126)\",\n sandA6: \"color(display-p3 0.102 0.075 0.004 / 0.161)\",\n sandA7: \"color(display-p3 0.098 0.098 0.004 / 0.208)\",\n sandA8: \"color(display-p3 0.086 0.075 0.004 / 0.287)\",\n sandA9: \"color(display-p3 0.051 0.051 0.004 / 0.471)\",\n sandA10: \"color(display-p3 0.047 0.047 0 / 0.514)\",\n sandA11: \"color(display-p3 0.031 0.031 0 / 0.632)\",\n sandA12: \"color(display-p3 0.024 0.02 0 / 0.891)\",\n};\nconst tomato = {\n tomato1: \"#fffcfc\",\n tomato2: \"#fff8f7\",\n tomato3: \"#feebe7\",\n tomato4: \"#ffdcd3\",\n tomato5: \"#ffcdc2\",\n tomato6: \"#fdbdaf\",\n tomato7: \"#f5a898\",\n tomato8: \"#ec8e7b\",\n tomato9: \"#e54d2e\",\n tomato10: \"#dd4425\",\n tomato11: \"#d13415\",\n tomato12: \"#5c271f\",\n};\nconst tomatoA = {\n tomatoA1: \"#ff000003\",\n tomatoA2: \"#ff200008\",\n tomatoA3: \"#f52b0018\",\n tomatoA4: \"#ff35002c\",\n tomatoA5: \"#ff2e003d\",\n tomatoA6: \"#f92d0050\",\n tomatoA7: \"#e7280067\",\n tomatoA8: \"#db250084\",\n tomatoA9: \"#df2600d1\",\n tomatoA10: \"#d72400da\",\n tomatoA11: \"#cd2200ea\",\n tomatoA12: \"#460900e0\",\n};\nconst tomatoP3 = {\n tomato1: \"color(display-p3 0.998 0.989 0.988)\",\n tomato2: \"color(display-p3 0.994 0.974 0.969)\",\n tomato3: \"color(display-p3 0.985 0.924 0.909)\",\n tomato4: \"color(display-p3 0.996 0.868 0.835)\",\n tomato5: \"color(display-p3 0.98 0.812 0.77)\",\n tomato6: \"color(display-p3 0.953 0.75 0.698)\",\n tomato7: \"color(display-p3 0.917 0.673 0.611)\",\n tomato8: \"color(display-p3 0.875 0.575 0.502)\",\n tomato9: \"color(display-p3 0.831 0.345 0.231)\",\n tomato10: \"color(display-p3 0.802 0.313 0.2)\",\n tomato11: \"color(display-p3 0.755 0.259 0.152)\",\n tomato12: \"color(display-p3 0.335 0.165 0.132)\",\n};\nconst tomatoP3A = {\n tomatoA1: \"color(display-p3 0.675 0.024 0.024 / 0.012)\",\n tomatoA2: \"color(display-p3 0.757 0.145 0.02 / 0.032)\",\n tomatoA3: \"color(display-p3 0.831 0.184 0.012 / 0.091)\",\n tomatoA4: \"color(display-p3 0.976 0.192 0.004 / 0.165)\",\n tomatoA5: \"color(display-p3 0.918 0.192 0.004 / 0.232)\",\n tomatoA6: \"color(display-p3 0.847 0.173 0.004 / 0.302)\",\n tomatoA7: \"color(display-p3 0.788 0.165 0.004 / 0.389)\",\n tomatoA8: \"color(display-p3 0.749 0.153 0.004 / 0.499)\",\n tomatoA9: \"color(display-p3 0.78 0.149 0 / 0.769)\",\n tomatoA10: \"color(display-p3 0.757 0.141 0 / 0.8)\",\n tomatoA11: \"color(display-p3 0.755 0.259 0.152)\",\n tomatoA12: \"color(display-p3 0.335 0.165 0.132)\",\n};\nconst red = {\n red1: \"#fffcfc\",\n red2: \"#fff7f7\",\n red3: \"#feebec\",\n red4: \"#ffdbdc\",\n red5: \"#ffcdce\",\n red6: \"#fdbdbe\",\n red7: \"#f4a9aa\",\n red8: \"#eb8e90\",\n red9: \"#e5484d\",\n red10: \"#dc3e42\",\n red11: \"#ce2c31\",\n red12: \"#641723\",\n};\nconst redA = {\n redA1: \"#ff000003\",\n redA2: \"#ff000008\",\n redA3: \"#f3000d14\",\n redA4: \"#ff000824\",\n redA5: \"#ff000632\",\n redA6: \"#f8000442\",\n redA7: \"#df000356\",\n redA8: \"#d2000571\",\n redA9: \"#db0007b7\",\n redA10: \"#d10005c1\",\n redA11: \"#c40006d3\",\n redA12: \"#55000de8\",\n};\nconst redP3 = {\n red1: \"color(display-p3 0.998 0.989 0.988)\",\n red2: \"color(display-p3 0.995 0.971 0.971)\",\n red3: \"color(display-p3 0.985 0.925 0.925)\",\n red4: \"color(display-p3 0.999 0.866 0.866)\",\n red5: \"color(display-p3 0.984 0.812 0.811)\",\n red6: \"color(display-p3 0.955 0.751 0.749)\",\n red7: \"color(display-p3 0.915 0.675 0.672)\",\n red8: \"color(display-p3 0.872 0.575 0.572)\",\n red9: \"color(display-p3 0.83 0.329 0.324)\",\n red10: \"color(display-p3 0.798 0.294 0.285)\",\n red11: \"color(display-p3 0.744 0.234 0.222)\",\n red12: \"color(display-p3 0.36 0.115 0.143)\",\n};\nconst redP3A = {\n redA1: \"color(display-p3 0.675 0.024 0.024 / 0.012)\",\n redA2: \"color(display-p3 0.863 0.024 0.024 / 0.028)\",\n redA3: \"color(display-p3 0.792 0.008 0.008 / 0.075)\",\n redA4: \"color(display-p3 1 0.008 0.008 / 0.134)\",\n redA5: \"color(display-p3 0.918 0.008 0.008 / 0.189)\",\n redA6: \"color(display-p3 0.831 0.02 0.004 / 0.251)\",\n redA7: \"color(display-p3 0.741 0.016 0.004 / 0.33)\",\n redA8: \"color(display-p3 0.698 0.012 0.004 / 0.428)\",\n redA9: \"color(display-p3 0.749 0.008 0 / 0.675)\",\n redA10: \"color(display-p3 0.714 0.012 0 / 0.714)\",\n redA11: \"color(display-p3 0.744 0.234 0.222)\",\n redA12: \"color(display-p3 0.36 0.115 0.143)\",\n};\nconst ruby = {\n ruby1: \"#fffcfd\",\n ruby2: \"#fff7f8\",\n ruby3: \"#feeaed\",\n ruby4: \"#ffdce1\",\n ruby5: \"#ffced6\",\n ruby6: \"#f8bfc8\",\n ruby7: \"#efacb8\",\n ruby8: \"#e592a3\",\n ruby9: \"#e54666\",\n ruby10: \"#dc3b5d\",\n ruby11: \"#ca244d\",\n ruby12: \"#64172b\",\n};\nconst rubyA = {\n rubyA1: \"#ff005503\",\n rubyA2: \"#ff002008\",\n rubyA3: \"#f3002515\",\n rubyA4: \"#ff002523\",\n rubyA5: \"#ff002a31\",\n rubyA6: \"#e4002440\",\n rubyA7: \"#ce002553\",\n rubyA8: \"#c300286d\",\n rubyA9: \"#db002cb9\",\n rubyA10: \"#d2002cc4\",\n rubyA11: \"#c10030db\",\n rubyA12: \"#550016e8\",\n};\nconst rubyP3 = {\n ruby1: \"color(display-p3 0.998 0.989 0.992)\",\n ruby2: \"color(display-p3 0.995 0.971 0.974)\",\n ruby3: \"color(display-p3 0.983 0.92 0.928)\",\n ruby4: \"color(display-p3 0.987 0.869 0.885)\",\n ruby5: \"color(display-p3 0.968 0.817 0.839)\",\n ruby6: \"color(display-p3 0.937 0.758 0.786)\",\n ruby7: \"color(display-p3 0.897 0.685 0.721)\",\n ruby8: \"color(display-p3 0.851 0.588 0.639)\",\n ruby9: \"color(display-p3 0.83 0.323 0.408)\",\n ruby10: \"color(display-p3 0.795 0.286 0.375)\",\n ruby11: \"color(display-p3 0.728 0.211 0.311)\",\n ruby12: \"color(display-p3 0.36 0.115 0.171)\",\n};\nconst rubyP3A = {\n rubyA1: \"color(display-p3 0.675 0.024 0.349 / 0.012)\",\n rubyA2: \"color(display-p3 0.863 0.024 0.024 / 0.028)\",\n rubyA3: \"color(display-p3 0.804 0.008 0.11 / 0.079)\",\n rubyA4: \"color(display-p3 0.91 0.008 0.125 / 0.13)\",\n rubyA5: \"color(display-p3 0.831 0.004 0.133 / 0.185)\",\n rubyA6: \"color(display-p3 0.745 0.004 0.118 / 0.244)\",\n rubyA7: \"color(display-p3 0.678 0.004 0.114 / 0.314)\",\n rubyA8: \"color(display-p3 0.639 0.004 0.125 / 0.412)\",\n rubyA9: \"color(display-p3 0.753 0 0.129 / 0.679)\",\n rubyA10: \"color(display-p3 0.714 0 0.125 / 0.714)\",\n rubyA11: \"color(display-p3 0.728 0.211 0.311)\",\n rubyA12: \"color(display-p3 0.36 0.115 0.171)\",\n};\nconst crimson = {\n crimson1: \"#fffcfd\",\n crimson2: \"#fef7f9\",\n crimson3: \"#ffe9f0\",\n crimson4: \"#fedce7\",\n crimson5: \"#facedd\",\n crimson6: \"#f3bed1\",\n crimson7: \"#eaacc3\",\n crimson8: \"#e093b2\",\n crimson9: \"#e93d82\",\n crimson10: \"#df3478\",\n crimson11: \"#cb1d63\",\n crimson12: \"#621639\",\n};\nconst crimsonA = {\n crimsonA1: \"#ff005503\",\n crimsonA2: \"#e0004008\",\n crimsonA3: \"#ff005216\",\n crimsonA4: \"#f8005123\",\n crimsonA5: \"#e5004f31\",\n crimsonA6: \"#d0004b41\",\n crimsonA7: \"#bf004753\",\n crimsonA8: \"#b6004a6c\",\n crimsonA9: \"#e2005bc2\",\n crimsonA10: \"#d70056cb\",\n crimsonA11: \"#c4004fe2\",\n crimsonA12: \"#530026e9\",\n};\nconst crimsonP3 = {\n crimson1: \"color(display-p3 0.998 0.989 0.992)\",\n crimson2: \"color(display-p3 0.991 0.969 0.976)\",\n crimson3: \"color(display-p3 0.987 0.917 0.941)\",\n crimson4: \"color(display-p3 0.975 0.866 0.904)\",\n crimson5: \"color(display-p3 0.953 0.813 0.864)\",\n crimson6: \"color(display-p3 0.921 0.755 0.817)\",\n crimson7: \"color(display-p3 0.88 0.683 0.761)\",\n crimson8: \"color(display-p3 0.834 0.592 0.694)\",\n crimson9: \"color(display-p3 0.843 0.298 0.507)\",\n crimson10: \"color(display-p3 0.807 0.266 0.468)\",\n crimson11: \"color(display-p3 0.731 0.195 0.388)\",\n crimson12: \"color(display-p3 0.352 0.111 0.221)\",\n};\nconst crimsonP3A = {\n crimsonA1: \"color(display-p3 0.675 0.024 0.349 / 0.012)\",\n crimsonA2: \"color(display-p3 0.757 0.02 0.267 / 0.032)\",\n crimsonA3: \"color(display-p3 0.859 0.008 0.294 / 0.083)\",\n crimsonA4: \"color(display-p3 0.827 0.008 0.298 / 0.134)\",\n crimsonA5: \"color(display-p3 0.753 0.008 0.275 / 0.189)\",\n crimsonA6: \"color(display-p3 0.682 0.004 0.247 / 0.244)\",\n crimsonA7: \"color(display-p3 0.62 0.004 0.251 / 0.318)\",\n crimsonA8: \"color(display-p3 0.6 0.004 0.251 / 0.408)\",\n crimsonA9: \"color(display-p3 0.776 0 0.298 / 0.702)\",\n crimsonA10: \"color(display-p3 0.737 0 0.275 / 0.734)\",\n crimsonA11: \"color(display-p3 0.731 0.195 0.388)\",\n crimsonA12: \"color(display-p3 0.352 0.111 0.221)\",\n};\nconst pink = {\n pink1: \"#fffcfe\",\n pink2: \"#fef7fb\",\n pink3: \"#fee9f5\",\n pink4: \"#fbdcef\",\n pink5: \"#f6cee7\",\n pink6: \"#efbfdd\",\n pink7: \"#e7acd0\",\n pink8: \"#dd93c2\",\n pink9: \"#d6409f\",\n pink10: \"#cf3897\",\n pink11: \"#c2298a\",\n pink12: \"#651249\",\n};\nconst pinkA = {\n pinkA1: \"#ff00aa03\",\n pinkA2: \"#e0008008\",\n pinkA3: \"#f4008c16\",\n pinkA4: \"#e2008b23\",\n pinkA5: \"#d1008331\",\n pinkA6: \"#c0007840\",\n pinkA7: \"#b6006f53\",\n pinkA8: \"#af006f6c\",\n pinkA9: \"#c8007fbf\",\n pinkA10: \"#c2007ac7\",\n pinkA11: \"#b60074d6\",\n pinkA12: \"#59003bed\",\n};\nconst pinkP3 = {\n pink1: \"color(display-p3 0.998 0.989 0.996)\",\n pink2: \"color(display-p3 0.992 0.97 0.985)\",\n pink3: \"color(display-p3 0.981 0.917 0.96)\",\n pink4: \"color(display-p3 0.963 0.867 0.932)\",\n pink5: \"color(display-p3 0.939 0.815 0.899)\",\n pink6: \"color(display-p3 0.907 0.756 0.859)\",\n pink7: \"color(display-p3 0.869 0.683 0.81)\",\n pink8: \"color(display-p3 0.825 0.59 0.751)\",\n pink9: \"color(display-p3 0.775 0.297 0.61)\",\n pink10: \"color(display-p3 0.748 0.27 0.581)\",\n pink11: \"color(display-p3 0.698 0.219 0.528)\",\n pink12: \"color(display-p3 0.363 0.101 0.279)\",\n};\nconst pinkP3A = {\n pinkA1: \"color(display-p3 0.675 0.024 0.675 / 0.012)\",\n pinkA2: \"color(display-p3 0.757 0.02 0.51 / 0.032)\",\n pinkA3: \"color(display-p3 0.765 0.008 0.529 / 0.083)\",\n pinkA4: \"color(display-p3 0.737 0.008 0.506 / 0.134)\",\n pinkA5: \"color(display-p3 0.663 0.004 0.451 / 0.185)\",\n pinkA6: \"color(display-p3 0.616 0.004 0.424 / 0.244)\",\n pinkA7: \"color(display-p3 0.596 0.004 0.412 / 0.318)\",\n pinkA8: \"color(display-p3 0.573 0.004 0.404 / 0.412)\",\n pinkA9: \"color(display-p3 0.682 0 0.447 / 0.702)\",\n pinkA10: \"color(display-p3 0.655 0 0.424 / 0.73)\",\n pinkA11: \"color(display-p3 0.698 0.219 0.528)\",\n pinkA12: \"color(display-p3 0.363 0.101 0.279)\",\n};\nconst plum = {\n plum1: \"#fefcff\",\n plum2: \"#fdf7fd\",\n plum3: \"#fbebfb\",\n plum4: \"#f7def8\",\n plum5: \"#f2d1f3\",\n plum6: \"#e9c2ec\",\n plum7: \"#deade3\",\n plum8: \"#cf91d8\",\n plum9: \"#ab4aba\",\n plum10: \"#a144af\",\n plum11: \"#953ea3\",\n plum12: \"#53195d\",\n};\nconst plumA = {\n plumA1: \"#aa00ff03\",\n plumA2: \"#c000c008\",\n plumA3: \"#cc00cc14\",\n plumA4: \"#c200c921\",\n plumA5: \"#b700bd2e\",\n plumA6: \"#a400b03d\",\n plumA7: \"#9900a852\",\n plumA8: \"#9000a56e\",\n plumA9: \"#89009eb5\",\n plumA10: \"#7f0092bb\",\n plumA11: \"#730086c1\",\n plumA12: \"#40004be6\",\n};\nconst plumP3 = {\n plum1: \"color(display-p3 0.995 0.988 0.999)\",\n plum2: \"color(display-p3 0.988 0.971 0.99)\",\n plum3: \"color(display-p3 0.973 0.923 0.98)\",\n plum4: \"color(display-p3 0.953 0.875 0.966)\",\n plum5: \"color(display-p3 0.926 0.825 0.945)\",\n plum6: \"color(display-p3 0.89 0.765 0.916)\",\n plum7: \"color(display-p3 0.84 0.686 0.877)\",\n plum8: \"color(display-p3 0.775 0.58 0.832)\",\n plum9: \"color(display-p3 0.624 0.313 0.708)\",\n plum10: \"color(display-p3 0.587 0.29 0.667)\",\n plum11: \"color(display-p3 0.543 0.263 0.619)\",\n plum12: \"color(display-p3 0.299 0.114 0.352)\",\n};\nconst plumP3A = {\n plumA1: \"color(display-p3 0.675 0.024 1 / 0.012)\",\n plumA2: \"color(display-p3 0.58 0.024 0.58 / 0.028)\",\n plumA3: \"color(display-p3 0.655 0.008 0.753 / 0.079)\",\n plumA4: \"color(display-p3 0.627 0.008 0.722 / 0.126)\",\n plumA5: \"color(display-p3 0.58 0.004 0.69 / 0.177)\",\n plumA6: \"color(display-p3 0.537 0.004 0.655 / 0.236)\",\n plumA7: \"color(display-p3 0.49 0.004 0.616 / 0.314)\",\n plumA8: \"color(display-p3 0.471 0.004 0.6 / 0.42)\",\n plumA9: \"color(display-p3 0.451 0 0.576 / 0.687)\",\n plumA10: \"color(display-p3 0.42 0 0.529 / 0.71)\",\n plumA11: \"color(display-p3 0.543 0.263 0.619)\",\n plumA12: \"color(display-p3 0.299 0.114 0.352)\",\n};\nconst purple = {\n purple1: \"#fefcfe\",\n purple2: \"#fbf7fe\",\n purple3: \"#f7edfe\",\n purple4: \"#f2e2fc\",\n purple5: \"#ead5f9\",\n purple6: \"#e0c4f4\",\n purple7: \"#d1afec\",\n purple8: \"#be93e4\",\n purple9: \"#8e4ec6\",\n purple10: \"#8347b9\",\n purple11: \"#8145b5\",\n purple12: \"#402060\",\n};\nconst purpleA = {\n purpleA1: \"#aa00aa03\",\n purpleA2: \"#8000e008\",\n purpleA3: \"#8e00f112\",\n purpleA4: \"#8d00e51d\",\n purpleA5: \"#8000db2a\",\n purpleA6: \"#7a01d03b\",\n purpleA7: \"#6d00c350\",\n purpleA8: \"#6600c06c\",\n purpleA9: \"#5c00adb1\",\n purpleA10: \"#53009eb8\",\n purpleA11: \"#52009aba\",\n purpleA12: \"#250049df\",\n};\nconst purpleP3 = {\n purple1: \"color(display-p3 0.995 0.988 0.996)\",\n purple2: \"color(display-p3 0.983 0.971 0.993)\",\n purple3: \"color(display-p3 0.963 0.931 0.989)\",\n purple4: \"color(display-p3 0.937 0.888 0.981)\",\n purple5: \"color(display-p3 0.904 0.837 0.966)\",\n purple6: \"color(display-p3 0.86 0.774 0.942)\",\n purple7: \"color(display-p3 0.799 0.69 0.91)\",\n purple8: \"color(display-p3 0.719 0.583 0.874)\",\n purple9: \"color(display-p3 0.523 0.318 0.751)\",\n purple10: \"color(display-p3 0.483 0.289 0.7)\",\n purple11: \"color(display-p3 0.473 0.281 0.687)\",\n purple12: \"color(display-p3 0.234 0.132 0.363)\",\n};\nconst purpleP3A = {\n purpleA1: \"color(display-p3 0.675 0.024 0.675 / 0.012)\",\n purpleA2: \"color(display-p3 0.443 0.024 0.722 / 0.028)\",\n purpleA3: \"color(display-p3 0.506 0.008 0.835 / 0.071)\",\n purpleA4: \"color(display-p3 0.451 0.004 0.831 / 0.114)\",\n purpleA5: \"color(display-p3 0.431 0.004 0.788 / 0.165)\",\n purpleA6: \"color(display-p3 0.384 0.004 0.745 / 0.228)\",\n purpleA7: \"color(display-p3 0.357 0.004 0.71 / 0.31)\",\n purpleA8: \"color(display-p3 0.322 0.004 0.702 / 0.416)\",\n purpleA9: \"color(display-p3 0.298 0 0.639 / 0.683)\",\n purpleA10: \"color(display-p3 0.271 0 0.58 / 0.71)\",\n purpleA11: \"color(display-p3 0.473 0.281 0.687)\",\n purpleA12: \"color(display-p3 0.234 0.132 0.363)\",\n};\nconst violet = {\n violet1: \"#fdfcfe\",\n violet2: \"#faf8ff\",\n violet3: \"#f4f0fe\",\n violet4: \"#ebe4ff\",\n violet5: \"#e1d9ff\",\n violet6: \"#d4cafe\",\n violet7: \"#c2b5f5\",\n violet8: \"#aa99ec\",\n violet9: \"#6e56cf\",\n violet10: \"#654dc4\",\n violet11: \"#6550b9\",\n violet12: \"#2f265f\",\n};\nconst violetA = {\n violetA1: \"#5500aa03\",\n violetA2: \"#4900ff07\",\n violetA3: \"#4400ee0f\",\n violetA4: \"#4300ff1b\",\n violetA5: \"#3600ff26\",\n violetA6: \"#3100fb35\",\n violetA7: \"#2d01dd4a\",\n violetA8: \"#2b00d066\",\n violetA9: \"#2400b7a9\",\n violetA10: \"#2300abb2\",\n violetA11: \"#1f0099af\",\n violetA12: \"#0b0043d9\",\n};\nconst violetP3 = {\n violet1: \"color(display-p3 0.991 0.988 0.995)\",\n violet2: \"color(display-p3 0.978 0.974 0.998)\",\n violet3: \"color(display-p3 0.953 0.943 0.993)\",\n violet4: \"color(display-p3 0.916 0.897 1)\",\n violet5: \"color(display-p3 0.876 0.851 1)\",\n violet6: \"color(display-p3 0.825 0.793 0.981)\",\n violet7: \"color(display-p3 0.752 0.712 0.943)\",\n violet8: \"color(display-p3 0.654 0.602 0.902)\",\n violet9: \"color(display-p3 0.417 0.341 0.784)\",\n violet10: \"color(display-p3 0.381 0.306 0.741)\",\n violet11: \"color(display-p3 0.383 0.317 0.702)\",\n violet12: \"color(display-p3 0.179 0.15 0.359)\",\n};\nconst violetP3A = {\n violetA1: \"color(display-p3 0.349 0.024 0.675 / 0.012)\",\n violetA2: \"color(display-p3 0.161 0.024 0.863 / 0.028)\",\n violetA3: \"color(display-p3 0.204 0.004 0.871 / 0.059)\",\n violetA4: \"color(display-p3 0.196 0.004 1 / 0.102)\",\n violetA5: \"color(display-p3 0.165 0.008 1 / 0.15)\",\n violetA6: \"color(display-p3 0.153 0.004 0.906 / 0.208)\",\n violetA7: \"color(display-p3 0.141 0.004 0.796 / 0.287)\",\n violetA8: \"color(display-p3 0.133 0.004 0.753 / 0.397)\",\n violetA9: \"color(display-p3 0.114 0 0.675 / 0.659)\",\n violetA10: \"color(display-p3 0.11 0 0.627 / 0.695)\",\n violetA11: \"color(display-p3 0.383 0.317 0.702)\",\n violetA12: \"color(display-p3 0.179 0.15 0.359)\",\n};\nconst iris = {\n iris1: \"#fdfdff\",\n iris2: \"#f8f8ff\",\n iris3: \"#f0f1fe\",\n iris4: \"#e6e7ff\",\n iris5: \"#dadcff\",\n iris6: \"#cbcdff\",\n iris7: \"#b8baf8\",\n iris8: \"#9b9ef0\",\n iris9: \"#5b5bd6\",\n iris10: \"#5151cd\",\n iris11: \"#5753c6\",\n iris12: \"#272962\",\n};\nconst irisA = {\n irisA1: \"#0000ff02\",\n irisA2: \"#0000ff07\",\n irisA3: \"#0011ee0f\",\n irisA4: \"#000bff19\",\n irisA5: \"#000eff25\",\n irisA6: \"#000aff34\",\n irisA7: \"#0008e647\",\n irisA8: \"#0008d964\",\n irisA9: \"#0000c0a4\",\n irisA10: \"#0000b6ae\",\n irisA11: \"#0600abac\",\n irisA12: \"#000246d8\",\n};\nconst irisP3 = {\n iris1: \"color(display-p3 0.992 0.992 0.999)\",\n iris2: \"color(display-p3 0.972 0.973 0.998)\",\n iris3: \"color(display-p3 0.943 0.945 0.992)\",\n iris4: \"color(display-p3 0.902 0.906 1)\",\n iris5: \"color(display-p3 0.857 0.861 1)\",\n iris6: \"color(display-p3 0.799 0.805 0.987)\",\n iris7: \"color(display-p3 0.721 0.727 0.955)\",\n iris8: \"color(display-p3 0.61 0.619 0.918)\",\n iris9: \"color(display-p3 0.357 0.357 0.81)\",\n iris10: \"color(display-p3 0.318 0.318 0.774)\",\n iris11: \"color(display-p3 0.337 0.326 0.748)\",\n iris12: \"color(display-p3 0.154 0.161 0.371)\",\n};\nconst irisP3A = {\n irisA1: \"color(display-p3 0.02 0.02 1 / 0.008)\",\n irisA2: \"color(display-p3 0.024 0.024 0.863 / 0.028)\",\n irisA3: \"color(display-p3 0.004 0.071 0.871 / 0.059)\",\n irisA4: \"color(display-p3 0.012 0.051 1 / 0.099)\",\n irisA5: \"color(display-p3 0.008 0.035 1 / 0.142)\",\n irisA6: \"color(display-p3 0 0.02 0.941 / 0.2)\",\n irisA7: \"color(display-p3 0.004 0.02 0.847 / 0.279)\",\n irisA8: \"color(display-p3 0.004 0.024 0.788 / 0.389)\",\n irisA9: \"color(display-p3 0 0 0.706 / 0.644)\",\n irisA10: \"color(display-p3 0 0 0.667 / 0.683)\",\n irisA11: \"color(display-p3 0.337 0.326 0.748)\",\n irisA12: \"color(display-p3 0.154 0.161 0.371)\",\n};\nconst indigo = {\n indigo1: \"#fdfdfe\",\n indigo2: \"#f7f9ff\",\n indigo3: \"#edf2fe\",\n indigo4: \"#e1e9ff\",\n indigo5: \"#d2deff\",\n indigo6: \"#c1d0ff\",\n indigo7: \"#abbdf9\",\n indigo8: \"#8da4ef\",\n indigo9: \"#3e63dd\",\n indigo10: \"#3358d4\",\n indigo11: \"#3a5bc7\",\n indigo12: \"#1f2d5c\",\n};\nconst indigoA = {\n indigoA1: \"#00008002\",\n indigoA2: \"#0040ff08\",\n indigoA3: \"#0047f112\",\n indigoA4: \"#0044ff1e\",\n indigoA5: \"#0044ff2d\",\n indigoA6: \"#003eff3e\",\n indigoA7: \"#0037ed54\",\n indigoA8: \"#0034dc72\",\n indigoA9: \"#0031d2c1\",\n indigoA10: \"#002ec9cc\",\n indigoA11: \"#002bb7c5\",\n indigoA12: \"#001046e0\",\n};\nconst indigoP3 = {\n indigo1: \"color(display-p3 0.992 0.992 0.996)\",\n indigo2: \"color(display-p3 0.971 0.977 0.998)\",\n indigo3: \"color(display-p3 0.933 0.948 0.992)\",\n indigo4: \"color(display-p3 0.885 0.914 1)\",\n indigo5: \"color(display-p3 0.831 0.87 1)\",\n indigo6: \"color(display-p3 0.767 0.814 0.995)\",\n indigo7: \"color(display-p3 0.685 0.74 0.957)\",\n indigo8: \"color(display-p3 0.569 0.639 0.916)\",\n indigo9: \"color(display-p3 0.276 0.384 0.837)\",\n indigo10: \"color(display-p3 0.234 0.343 0.801)\",\n indigo11: \"color(display-p3 0.256 0.354 0.755)\",\n indigo12: \"color(display-p3 0.133 0.175 0.348)\",\n};\nconst indigoP3A = {\n indigoA1: \"color(display-p3 0.02 0.02 0.51 / 0.008)\",\n indigoA2: \"color(display-p3 0.024 0.161 0.863 / 0.028)\",\n indigoA3: \"color(display-p3 0.008 0.239 0.886 / 0.067)\",\n indigoA4: \"color(display-p3 0.004 0.247 1 / 0.114)\",\n indigoA5: \"color(display-p3 0.004 0.235 1 / 0.169)\",\n indigoA6: \"color(display-p3 0.004 0.208 0.984 / 0.232)\",\n indigoA7: \"color(display-p3 0.004 0.176 0.863 / 0.314)\",\n indigoA8: \"color(display-p3 0.004 0.165 0.812 / 0.432)\",\n indigoA9: \"color(display-p3 0 0.153 0.773 / 0.726)\",\n indigoA10: \"color(display-p3 0 0.137 0.737 / 0.765)\",\n indigoA11: \"color(display-p3 0.256 0.354 0.755)\",\n indigoA12: \"color(display-p3 0.133 0.175 0.348)\",\n};\nconst blue = {\n blue1: \"#fbfdff\",\n blue2: \"#f4faff\",\n blue3: \"#e6f4fe\",\n blue4: \"#d5efff\",\n blue5: \"#c2e5ff\",\n blue6: \"#acd8fc\",\n blue7: \"#8ec8f6\",\n blue8: \"#5eb1ef\",\n blue9: \"#0090ff\",\n blue10: \"#0588f0\",\n blue11: \"#0d74ce\",\n blue12: \"#113264\",\n};\nconst blueA = {\n blueA1: \"#0080ff04\",\n blueA2: \"#008cff0b\",\n blueA3: \"#008ff519\",\n blueA4: \"#009eff2a\",\n blueA5: \"#0093ff3d\",\n blueA6: \"#0088f653\",\n blueA7: \"#0083eb71\",\n blueA8: \"#0084e6a1\",\n blueA9: \"#0090ff\",\n blueA10: \"#0086f0fa\",\n blueA11: \"#006dcbf2\",\n blueA12: \"#002359ee\",\n};\nconst blueP3 = {\n blue1: \"color(display-p3 0.986 0.992 0.999)\",\n blue2: \"color(display-p3 0.96 0.979 0.998)\",\n blue3: \"color(display-p3 0.912 0.956 0.991)\",\n blue4: \"color(display-p3 0.853 0.932 1)\",\n blue5: \"color(display-p3 0.788 0.894 0.998)\",\n blue6: \"color(display-p3 0.709 0.843 0.976)\",\n blue7: \"color(display-p3 0.606 0.777 0.947)\",\n blue8: \"color(display-p3 0.451 0.688 0.917)\",\n blue9: \"color(display-p3 0.247 0.556 0.969)\",\n blue10: \"color(display-p3 0.234 0.523 0.912)\",\n blue11: \"color(display-p3 0.15 0.44 0.84)\",\n blue12: \"color(display-p3 0.102 0.193 0.379)\",\n};\nconst blueP3A = {\n blueA1: \"color(display-p3 0.024 0.514 1 / 0.016)\",\n blueA2: \"color(display-p3 0.024 0.514 0.906 / 0.04)\",\n blueA3: \"color(display-p3 0.012 0.506 0.914 / 0.087)\",\n blueA4: \"color(display-p3 0.008 0.545 1 / 0.146)\",\n blueA5: \"color(display-p3 0.004 0.502 0.984 / 0.212)\",\n blueA6: \"color(display-p3 0.004 0.463 0.922 / 0.291)\",\n blueA7: \"color(display-p3 0.004 0.431 0.863 / 0.393)\",\n blueA8: \"color(display-p3 0 0.427 0.851 / 0.55)\",\n blueA9: \"color(display-p3 0 0.412 0.961 / 0.753)\",\n blueA10: \"color(display-p3 0 0.376 0.886 / 0.765)\",\n blueA11: \"color(display-p3 0.15 0.44 0.84)\",\n blueA12: \"color(display-p3 0.102 0.193 0.379)\",\n};\nconst cyan = {\n cyan1: \"#fafdfe\",\n cyan2: \"#f2fafb\",\n cyan3: \"#def7f9\",\n cyan4: \"#caf1f6\",\n cyan5: \"#b5e9f0\",\n cyan6: \"#9ddde7\",\n cyan7: \"#7dcedc\",\n cyan8: \"#3db9cf\",\n cyan9: \"#00a2c7\",\n cyan10: \"#0797b9\",\n cyan11: \"#107d98\",\n cyan12: \"#0d3c48\",\n};\nconst cyanA = {\n cyanA1: \"#0099cc05\",\n cyanA2: \"#009db10d\",\n cyanA3: \"#00c2d121\",\n cyanA4: \"#00bcd435\",\n cyanA5: \"#01b4cc4a\",\n cyanA6: \"#00a7c162\",\n cyanA7: \"#009fbb82\",\n cyanA8: \"#00a3c0c2\",\n cyanA9: \"#00a2c7\",\n cyanA10: \"#0094b7f8\",\n cyanA11: \"#007491ef\",\n cyanA12: \"#00323ef2\",\n};\nconst cyanP3 = {\n cyan1: \"color(display-p3 0.982 0.992 0.996)\",\n cyan2: \"color(display-p3 0.955 0.981 0.984)\",\n cyan3: \"color(display-p3 0.888 0.965 0.975)\",\n cyan4: \"color(display-p3 0.821 0.941 0.959)\",\n cyan5: \"color(display-p3 0.751 0.907 0.935)\",\n cyan6: \"color(display-p3 0.671 0.862 0.9)\",\n cyan7: \"color(display-p3 0.564 0.8 0.854)\",\n cyan8: \"color(display-p3 0.388 0.715 0.798)\",\n cyan9: \"color(display-p3 0.282 0.627 0.765)\",\n cyan10: \"color(display-p3 0.264 0.583 0.71)\",\n cyan11: \"color(display-p3 0.08 0.48 0.63)\",\n cyan12: \"color(display-p3 0.108 0.232 0.277)\",\n};\nconst cyanP3A = {\n cyanA1: \"color(display-p3 0.02 0.608 0.804 / 0.02)\",\n cyanA2: \"color(display-p3 0.02 0.557 0.647 / 0.044)\",\n cyanA3: \"color(display-p3 0.004 0.694 0.796 / 0.114)\",\n cyanA4: \"color(display-p3 0.004 0.678 0.784 / 0.181)\",\n cyanA5: \"color(display-p3 0.004 0.624 0.733 / 0.248)\",\n cyanA6: \"color(display-p3 0.004 0.584 0.706 / 0.33)\",\n cyanA7: \"color(display-p3 0.004 0.541 0.667 / 0.436)\",\n cyanA8: \"color(display-p3 0 0.533 0.667 / 0.612)\",\n cyanA9: \"color(display-p3 0 0.482 0.675 / 0.718)\",\n cyanA10: \"color(display-p3 0 0.435 0.608 / 0.738)\",\n cyanA11: \"color(display-p3 0.08 0.48 0.63)\",\n cyanA12: \"color(display-p3 0.108 0.232 0.277)\",\n};\nconst teal = {\n teal1: \"#fafefd\",\n teal2: \"#f3fbf9\",\n teal3: \"#e0f8f3\",\n teal4: \"#ccf3ea\",\n teal5: \"#b8eae0\",\n teal6: \"#a1ded2\",\n teal7: \"#83cdc1\",\n teal8: \"#53b9ab\",\n teal9: \"#12a594\",\n teal10: \"#0d9b8a\",\n teal11: \"#008573\",\n teal12: \"#0d3d38\",\n};\nconst tealA = {\n tealA1: \"#00cc9905\",\n tealA2: \"#00aa800c\",\n tealA3: \"#00c69d1f\",\n tealA4: \"#00c39633\",\n tealA5: \"#00b49047\",\n tealA6: \"#00a6855e\",\n tealA7: \"#0099807c\",\n tealA8: \"#009783ac\",\n tealA9: \"#009e8ced\",\n tealA10: \"#009684f2\",\n tealA11: \"#008573\",\n tealA12: \"#00332df2\",\n};\nconst tealP3 = {\n teal1: \"color(display-p3 0.983 0.996 0.992)\",\n teal2: \"color(display-p3 0.958 0.983 0.976)\",\n teal3: \"color(display-p3 0.895 0.971 0.952)\",\n teal4: \"color(display-p3 0.831 0.949 0.92)\",\n teal5: \"color(display-p3 0.761 0.914 0.878)\",\n teal6: \"color(display-p3 0.682 0.864 0.825)\",\n teal7: \"color(display-p3 0.581 0.798 0.756)\",\n teal8: \"color(display-p3 0.433 0.716 0.671)\",\n teal9: \"color(display-p3 0.297 0.637 0.581)\",\n teal10: \"color(display-p3 0.275 0.599 0.542)\",\n teal11: \"color(display-p3 0.08 0.5 0.43)\",\n teal12: \"color(display-p3 0.11 0.235 0.219)\",\n};\nconst tealP3A = {\n tealA1: \"color(display-p3 0.024 0.757 0.514 / 0.016)\",\n tealA2: \"color(display-p3 0.02 0.647 0.467 / 0.044)\",\n tealA3: \"color(display-p3 0.004 0.741 0.557 / 0.106)\",\n tealA4: \"color(display-p3 0.004 0.702 0.537 / 0.169)\",\n tealA5: \"color(display-p3 0.004 0.643 0.494 / 0.24)\",\n tealA6: \"color(display-p3 0.004 0.569 0.447 / 0.318)\",\n tealA7: \"color(display-p3 0.004 0.518 0.424 / 0.42)\",\n tealA8: \"color(display-p3 0 0.506 0.424 / 0.569)\",\n tealA9: \"color(display-p3 0 0.482 0.404 / 0.702)\",\n tealA10: \"color(display-p3 0 0.451 0.369 / 0.726)\",\n tealA11: \"color(display-p3 0.08 0.5 0.43)\",\n tealA12: \"color(display-p3 0.11 0.235 0.219)\",\n};\nconst jade = {\n jade1: \"#fbfefd\",\n jade2: \"#f4fbf7\",\n jade3: \"#e6f7ed\",\n jade4: \"#d6f1e3\",\n jade5: \"#c3e9d7\",\n jade6: \"#acdec8\",\n jade7: \"#8bceb6\",\n jade8: \"#56ba9f\",\n jade9: \"#29a383\",\n jade10: \"#26997b\",\n jade11: \"#208368\",\n jade12: \"#1d3b31\",\n};\nconst jadeA = {\n jadeA1: \"#00c08004\",\n jadeA2: \"#00a3460b\",\n jadeA3: \"#00ae4819\",\n jadeA4: \"#00a85129\",\n jadeA5: \"#00a2553c\",\n jadeA6: \"#009a5753\",\n jadeA7: \"#00945f74\",\n jadeA8: \"#00976ea9\",\n jadeA9: \"#00916bd6\",\n jadeA10: \"#008764d9\",\n jadeA11: \"#007152df\",\n jadeA12: \"#002217e2\",\n};\nconst jadeP3 = {\n jade1: \"color(display-p3 0.986 0.996 0.992)\",\n jade2: \"color(display-p3 0.962 0.983 0.969)\",\n jade3: \"color(display-p3 0.912 0.965 0.932)\",\n jade4: \"color(display-p3 0.858 0.941 0.893)\",\n jade5: \"color(display-p3 0.795 0.909 0.847)\",\n jade6: \"color(display-p3 0.715 0.864 0.791)\",\n jade7: \"color(display-p3 0.603 0.802 0.718)\",\n jade8: \"color(display-p3 0.44 0.72 0.629)\",\n jade9: \"color(display-p3 0.319 0.63 0.521)\",\n jade10: \"color(display-p3 0.299 0.592 0.488)\",\n jade11: \"color(display-p3 0.15 0.5 0.37)\",\n jade12: \"color(display-p3 0.142 0.229 0.194)\",\n};\nconst jadeP3A = {\n jadeA1: \"color(display-p3 0.024 0.757 0.514 / 0.016)\",\n jadeA2: \"color(display-p3 0.024 0.612 0.22 / 0.04)\",\n jadeA3: \"color(display-p3 0.012 0.596 0.235 / 0.087)\",\n jadeA4: \"color(display-p3 0.008 0.588 0.255 / 0.142)\",\n jadeA5: \"color(display-p3 0.004 0.561 0.251 / 0.204)\",\n jadeA6: \"color(display-p3 0.004 0.525 0.278 / 0.287)\",\n jadeA7: \"color(display-p3 0.004 0.506 0.29 / 0.397)\",\n jadeA8: \"color(display-p3 0 0.506 0.337 / 0.561)\",\n jadeA9: \"color(display-p3 0 0.459 0.298 / 0.683)\",\n jadeA10: \"color(display-p3 0 0.42 0.271 / 0.702)\",\n jadeA11: \"color(display-p3 0.15 0.5 0.37)\",\n jadeA12: \"color(display-p3 0.142 0.229 0.194)\",\n};\nconst green = {\n green1: \"#fbfefc\",\n green2: \"#f4fbf6\",\n green3: \"#e6f6eb\",\n green4: \"#d6f1df\",\n green5: \"#c4e8d1\",\n green6: \"#adddc0\",\n green7: \"#8eceaa\",\n green8: \"#5bb98b\",\n green9: \"#30a46c\",\n green10: \"#2b9a66\",\n green11: \"#218358\",\n green12: \"#193b2d\",\n};\nconst greenA = {\n greenA1: \"#00c04004\",\n greenA2: \"#00a32f0b\",\n greenA3: \"#00a43319\",\n greenA4: \"#00a83829\",\n greenA5: \"#019c393b\",\n greenA6: \"#00963c52\",\n greenA7: \"#00914071\",\n greenA8: \"#00924ba4\",\n greenA9: \"#008f4acf\",\n greenA10: \"#008647d4\",\n greenA11: \"#00713fde\",\n greenA12: \"#002616e6\",\n};\nconst greenP3 = {\n green1: \"color(display-p3 0.986 0.996 0.989)\",\n green2: \"color(display-p3 0.963 0.983 0.967)\",\n green3: \"color(display-p3 0.913 0.964 0.925)\",\n green4: \"color(display-p3 0.859 0.94 0.879)\",\n green5: \"color(display-p3 0.796 0.907 0.826)\",\n green6: \"color(display-p3 0.718 0.863 0.761)\",\n green7: \"color(display-p3 0.61 0.801 0.675)\",\n green8: \"color(display-p3 0.451 0.715 0.559)\",\n green9: \"color(display-p3 0.332 0.634 0.442)\",\n green10: \"color(display-p3 0.308 0.595 0.417)\",\n green11: \"color(display-p3 0.19 0.5 0.32)\",\n green12: \"color(display-p3 0.132 0.228 0.18)\",\n};\nconst greenP3A = {\n greenA1: \"color(display-p3 0.024 0.757 0.267 / 0.016)\",\n greenA2: \"color(display-p3 0.024 0.565 0.129 / 0.036)\",\n greenA3: \"color(display-p3 0.012 0.596 0.145 / 0.087)\",\n greenA4: \"color(display-p3 0.008 0.588 0.145 / 0.142)\",\n greenA5: \"color(display-p3 0.004 0.541 0.157 / 0.204)\",\n greenA6: \"color(display-p3 0.004 0.518 0.157 / 0.283)\",\n greenA7: \"color(display-p3 0.004 0.486 0.165 / 0.389)\",\n greenA8: \"color(display-p3 0 0.478 0.2 / 0.55)\",\n greenA9: \"color(display-p3 0 0.455 0.165 / 0.667)\",\n greenA10: \"color(display-p3 0 0.416 0.153 / 0.691)\",\n greenA11: \"color(display-p3 0.19 0.5 0.32)\",\n greenA12: \"color(display-p3 0.132 0.228 0.18)\",\n};\nconst grass = {\n grass1: \"#fbfefb\",\n grass2: \"#f5fbf5\",\n grass3: \"#e9f6e9\",\n grass4: \"#daf1db\",\n grass5: \"#c9e8ca\",\n grass6: \"#b2ddb5\",\n grass7: \"#94ce9a\",\n grass8: \"#65ba74\",\n grass9: \"#46a758\",\n grass10: \"#3e9b4f\",\n grass11: \"#2a7e3b\",\n grass12: \"#203c25\",\n};\nconst grassA = {\n grassA1: \"#00c00004\",\n grassA2: \"#0099000a\",\n grassA3: \"#00970016\",\n grassA4: \"#009f0725\",\n grassA5: \"#00930536\",\n grassA6: \"#008f0a4d\",\n grassA7: \"#018b0f6b\",\n grassA8: \"#008d199a\",\n grassA9: \"#008619b9\",\n grassA10: \"#007b17c1\",\n grassA11: \"#006514d5\",\n grassA12: \"#002006df\",\n};\nconst grassP3 = {\n grass1: \"color(display-p3 0.986 0.996 0.985)\",\n grass2: \"color(display-p3 0.966 0.983 0.964)\",\n grass3: \"color(display-p3 0.923 0.965 0.917)\",\n grass4: \"color(display-p3 0.872 0.94 0.865)\",\n grass5: \"color(display-p3 0.811 0.908 0.802)\",\n grass6: \"color(display-p3 0.733 0.864 0.724)\",\n grass7: \"color(display-p3 0.628 0.803 0.622)\",\n grass8: \"color(display-p3 0.477 0.72 0.482)\",\n grass9: \"color(display-p3 0.38 0.647 0.378)\",\n grass10: \"color(display-p3 0.344 0.598 0.342)\",\n grass11: \"color(display-p3 0.263 0.488 0.261)\",\n grass12: \"color(display-p3 0.151 0.233 0.153)\",\n};\nconst grassP3A = {\n grassA1: \"color(display-p3 0.024 0.757 0.024 / 0.016)\",\n grassA2: \"color(display-p3 0.024 0.565 0.024 / 0.036)\",\n grassA3: \"color(display-p3 0.059 0.576 0.008 / 0.083)\",\n grassA4: \"color(display-p3 0.035 0.565 0.008 / 0.134)\",\n grassA5: \"color(display-p3 0.047 0.545 0.008 / 0.197)\",\n grassA6: \"color(display-p3 0.031 0.502 0.004 / 0.275)\",\n grassA7: \"color(display-p3 0.012 0.482 0.004 / 0.377)\",\n grassA8: \"color(display-p3 0 0.467 0.008 / 0.522)\",\n grassA9: \"color(display-p3 0.008 0.435 0 / 0.624)\",\n grassA10: \"color(display-p3 0.008 0.388 0 / 0.659)\",\n grassA11: \"color(display-p3 0.263 0.488 0.261)\",\n grassA12: \"color(display-p3 0.151 0.233 0.153)\",\n};\nconst brown = {\n brown1: \"#fefdfc\",\n brown2: \"#fcf9f6\",\n brown3: \"#f6eee7\",\n brown4: \"#f0e4d9\",\n brown5: \"#ebdaca\",\n brown6: \"#e4cdb7\",\n brown7: \"#dcbc9f\",\n brown8: \"#cea37e\",\n brown9: \"#ad7f58\",\n brown10: \"#a07553\",\n brown11: \"#815e46\",\n brown12: \"#3e332e\",\n};\nconst brownA = {\n brownA1: \"#aa550003\",\n brownA2: \"#aa550009\",\n brownA3: \"#a04b0018\",\n brownA4: \"#9b4a0026\",\n brownA5: \"#9f4d0035\",\n brownA6: \"#a04e0048\",\n brownA7: \"#a34e0060\",\n brownA8: \"#9f4a0081\",\n brownA9: \"#823c00a7\",\n brownA10: \"#723300ac\",\n brownA11: \"#522100b9\",\n brownA12: \"#140600d1\",\n};\nconst brownP3 = {\n brown1: \"color(display-p3 0.995 0.992 0.989)\",\n brown2: \"color(display-p3 0.987 0.976 0.964)\",\n brown3: \"color(display-p3 0.959 0.936 0.909)\",\n brown4: \"color(display-p3 0.934 0.897 0.855)\",\n brown5: \"color(display-p3 0.909 0.856 0.798)\",\n brown6: \"color(display-p3 0.88 0.808 0.73)\",\n brown7: \"color(display-p3 0.841 0.742 0.639)\",\n brown8: \"color(display-p3 0.782 0.647 0.514)\",\n brown9: \"color(display-p3 0.651 0.505 0.368)\",\n brown10: \"color(display-p3 0.601 0.465 0.344)\",\n brown11: \"color(display-p3 0.485 0.374 0.288)\",\n brown12: \"color(display-p3 0.236 0.202 0.183)\",\n};\nconst brownP3A = {\n brownA1: \"color(display-p3 0.675 0.349 0.024 / 0.012)\",\n brownA2: \"color(display-p3 0.675 0.349 0.024 / 0.036)\",\n brownA3: \"color(display-p3 0.573 0.314 0.012 / 0.091)\",\n brownA4: \"color(display-p3 0.545 0.302 0.008 / 0.146)\",\n brownA5: \"color(display-p3 0.561 0.29 0.004 / 0.204)\",\n brownA6: \"color(display-p3 0.553 0.294 0.004 / 0.271)\",\n brownA7: \"color(display-p3 0.557 0.286 0.004 / 0.361)\",\n brownA8: \"color(display-p3 0.549 0.275 0.004 / 0.487)\",\n brownA9: \"color(display-p3 0.447 0.22 0 / 0.632)\",\n brownA10: \"color(display-p3 0.388 0.188 0 / 0.655)\",\n brownA11: \"color(display-p3 0.485 0.374 0.288)\",\n brownA12: \"color(display-p3 0.236 0.202 0.183)\",\n};\nconst bronze = {\n bronze1: \"#fdfcfc\",\n bronze2: \"#fdf7f5\",\n bronze3: \"#f6edea\",\n bronze4: \"#efe4df\",\n bronze5: \"#e7d9d3\",\n bronze6: \"#dfcdc5\",\n bronze7: \"#d3bcb3\",\n bronze8: \"#c2a499\",\n bronze9: \"#a18072\",\n bronze10: \"#957468\",\n bronze11: \"#7d5e54\",\n bronze12: \"#43302b\",\n};\nconst bronzeA = {\n bronzeA1: \"#55000003\",\n bronzeA2: \"#cc33000a\",\n bronzeA3: \"#92250015\",\n bronzeA4: \"#80280020\",\n bronzeA5: \"#7423002c\",\n bronzeA6: \"#7324003a\",\n bronzeA7: \"#6c1f004c\",\n bronzeA8: \"#671c0066\",\n bronzeA9: \"#551a008d\",\n bronzeA10: \"#4c150097\",\n bronzeA11: \"#3d0f00ab\",\n bronzeA12: \"#1d0600d4\",\n};\nconst bronzeP3 = {\n bronze1: \"color(display-p3 0.991 0.988 0.988)\",\n bronze2: \"color(display-p3 0.989 0.97 0.961)\",\n bronze3: \"color(display-p3 0.958 0.932 0.919)\",\n bronze4: \"color(display-p3 0.929 0.894 0.877)\",\n bronze5: \"color(display-p3 0.898 0.853 0.832)\",\n bronze6: \"color(display-p3 0.861 0.805 0.778)\",\n bronze7: \"color(display-p3 0.812 0.739 0.706)\",\n bronze8: \"color(display-p3 0.741 0.647 0.606)\",\n bronze9: \"color(display-p3 0.611 0.507 0.455)\",\n bronze10: \"color(display-p3 0.563 0.461 0.414)\",\n bronze11: \"color(display-p3 0.471 0.373 0.336)\",\n bronze12: \"color(display-p3 0.251 0.191 0.172)\",\n};\nconst bronzeP3A = {\n bronzeA1: \"color(display-p3 0.349 0.024 0.024 / 0.012)\",\n bronzeA2: \"color(display-p3 0.71 0.22 0.024 / 0.04)\",\n bronzeA3: \"color(display-p3 0.482 0.2 0.008 / 0.083)\",\n bronzeA4: \"color(display-p3 0.424 0.133 0.004 / 0.122)\",\n bronzeA5: \"color(display-p3 0.4 0.145 0.004 / 0.169)\",\n bronzeA6: \"color(display-p3 0.388 0.125 0.004 / 0.224)\",\n bronzeA7: \"color(display-p3 0.365 0.11 0.004 / 0.295)\",\n bronzeA8: \"color(display-p3 0.341 0.102 0.004 / 0.393)\",\n bronzeA9: \"color(display-p3 0.29 0.094 0 / 0.546)\",\n bronzeA10: \"color(display-p3 0.255 0.082 0 / 0.585)\",\n bronzeA11: \"color(display-p3 0.471 0.373 0.336)\",\n bronzeA12: \"color(display-p3 0.251 0.191 0.172)\",\n};\nconst gold = {\n gold1: \"#fdfdfc\",\n gold2: \"#faf9f2\",\n gold3: \"#f2f0e7\",\n gold4: \"#eae6db\",\n gold5: \"#e1dccf\",\n gold6: \"#d8d0bf\",\n gold7: \"#cbc0aa\",\n gold8: \"#b9a88d\",\n gold9: \"#978365\",\n gold10: \"#8c7a5e\",\n gold11: \"#71624b\",\n gold12: \"#3b352b\",\n};\nconst goldA = {\n goldA1: \"#55550003\",\n goldA2: \"#9d8a000d\",\n goldA3: \"#75600018\",\n goldA4: \"#6b4e0024\",\n goldA5: \"#60460030\",\n goldA6: \"#64440040\",\n goldA7: \"#63420055\",\n goldA8: \"#633d0072\",\n goldA9: \"#5332009a\",\n goldA10: \"#492d00a1\",\n goldA11: \"#362100b4\",\n goldA12: \"#130c00d4\",\n};\nconst goldP3 = {\n gold1: \"color(display-p3 0.992 0.992 0.989)\",\n gold2: \"color(display-p3 0.98 0.976 0.953)\",\n gold3: \"color(display-p3 0.947 0.94 0.909)\",\n gold4: \"color(display-p3 0.914 0.904 0.865)\",\n gold5: \"color(display-p3 0.88 0.865 0.816)\",\n gold6: \"color(display-p3 0.84 0.818 0.756)\",\n gold7: \"color(display-p3 0.788 0.753 0.677)\",\n gold8: \"color(display-p3 0.715 0.66 0.565)\",\n gold9: \"color(display-p3 0.579 0.517 0.41)\",\n gold10: \"color(display-p3 0.538 0.479 0.38)\",\n gold11: \"color(display-p3 0.433 0.386 0.305)\",\n gold12: \"color(display-p3 0.227 0.209 0.173)\",\n};\nconst goldP3A = {\n goldA1: \"color(display-p3 0.349 0.349 0.024 / 0.012)\",\n goldA2: \"color(display-p3 0.592 0.514 0.024 / 0.048)\",\n goldA3: \"color(display-p3 0.4 0.357 0.012 / 0.091)\",\n goldA4: \"color(display-p3 0.357 0.298 0.008 / 0.134)\",\n goldA5: \"color(display-p3 0.345 0.282 0.004 / 0.185)\",\n goldA6: \"color(display-p3 0.341 0.263 0.004 / 0.244)\",\n goldA7: \"color(display-p3 0.345 0.235 0.004 / 0.322)\",\n goldA8: \"color(display-p3 0.345 0.22 0.004 / 0.436)\",\n goldA9: \"color(display-p3 0.286 0.18 0 / 0.589)\",\n goldA10: \"color(display-p3 0.255 0.161 0 / 0.62)\",\n goldA11: \"color(display-p3 0.433 0.386 0.305)\",\n goldA12: \"color(display-p3 0.227 0.209 0.173)\",\n};\nconst sky = {\n sky1: \"#f9feff\",\n sky2: \"#f1fafd\",\n sky3: \"#e1f6fd\",\n sky4: \"#d1f0fa\",\n sky5: \"#bee7f5\",\n sky6: \"#a9daed\",\n sky7: \"#8dcae3\",\n sky8: \"#60b3d7\",\n sky9: \"#7ce2fe\",\n sky10: \"#74daf8\",\n sky11: \"#00749e\",\n sky12: \"#1d3e56\",\n};\nconst skyA = {\n skyA1: \"#00d5ff06\",\n skyA2: \"#00a4db0e\",\n skyA3: \"#00b3ee1e\",\n skyA4: \"#00ace42e\",\n skyA5: \"#00a1d841\",\n skyA6: \"#0092ca56\",\n skyA7: \"#0089c172\",\n skyA8: \"#0085bf9f\",\n skyA9: \"#00c7fe83\",\n skyA10: \"#00bcf38b\",\n skyA11: \"#00749e\",\n skyA12: \"#002540e2\",\n};\nconst skyP3 = {\n sky1: \"color(display-p3 0.98 0.995 0.999)\",\n sky2: \"color(display-p3 0.953 0.98 0.99)\",\n sky3: \"color(display-p3 0.899 0.963 0.989)\",\n sky4: \"color(display-p3 0.842 0.937 0.977)\",\n sky5: \"color(display-p3 0.777 0.9 0.954)\",\n sky6: \"color(display-p3 0.701 0.851 0.921)\",\n sky7: \"color(display-p3 0.604 0.785 0.879)\",\n sky8: \"color(display-p3 0.457 0.696 0.829)\",\n sky9: \"color(display-p3 0.585 0.877 0.983)\",\n sky10: \"color(display-p3 0.555 0.845 0.959)\",\n sky11: \"color(display-p3 0.193 0.448 0.605)\",\n sky12: \"color(display-p3 0.145 0.241 0.329)\",\n};\nconst skyP3A = {\n skyA1: \"color(display-p3 0.02 0.804 1 / 0.02)\",\n skyA2: \"color(display-p3 0.024 0.592 0.757 / 0.048)\",\n skyA3: \"color(display-p3 0.004 0.655 0.886 / 0.102)\",\n skyA4: \"color(display-p3 0.004 0.604 0.851 / 0.157)\",\n skyA5: \"color(display-p3 0.004 0.565 0.792 / 0.224)\",\n skyA6: \"color(display-p3 0.004 0.502 0.737 / 0.299)\",\n skyA7: \"color(display-p3 0.004 0.459 0.694 / 0.397)\",\n skyA8: \"color(display-p3 0 0.435 0.682 / 0.542)\",\n skyA9: \"color(display-p3 0.004 0.71 0.965 / 0.416)\",\n skyA10: \"color(display-p3 0.004 0.647 0.914 / 0.444)\",\n skyA11: \"color(display-p3 0.193 0.448 0.605)\",\n skyA12: \"color(display-p3 0.145 0.241 0.329)\",\n};\nconst mint = {\n mint1: \"#f9fefd\",\n mint2: \"#f2fbf9\",\n mint3: \"#ddf9f2\",\n mint4: \"#c8f4e9\",\n mint5: \"#b3ecde\",\n mint6: \"#9ce0d0\",\n mint7: \"#7ecfbd\",\n mint8: \"#4cbba5\",\n mint9: \"#86ead4\",\n mint10: \"#7de0cb\",\n mint11: \"#027864\",\n mint12: \"#16433c\",\n};\nconst mintA = {\n mintA1: \"#00d5aa06\",\n mintA2: \"#00b18a0d\",\n mintA3: \"#00d29e22\",\n mintA4: \"#00cc9937\",\n mintA5: \"#00c0914c\",\n mintA6: \"#00b08663\",\n mintA7: \"#00a17d81\",\n mintA8: \"#009e7fb3\",\n mintA9: \"#00d3a579\",\n mintA10: \"#00c39982\",\n mintA11: \"#007763fd\",\n mintA12: \"#00312ae9\",\n};\nconst mintP3 = {\n mint1: \"color(display-p3 0.98 0.995 0.992)\",\n mint2: \"color(display-p3 0.957 0.985 0.977)\",\n mint3: \"color(display-p3 0.888 0.972 0.95)\",\n mint4: \"color(display-p3 0.819 0.951 0.916)\",\n mint5: \"color(display-p3 0.747 0.918 0.873)\",\n mint6: \"color(display-p3 0.668 0.87 0.818)\",\n mint7: \"color(display-p3 0.567 0.805 0.744)\",\n mint8: \"color(display-p3 0.42 0.724 0.649)\",\n mint9: \"color(display-p3 0.62 0.908 0.834)\",\n mint10: \"color(display-p3 0.585 0.871 0.797)\",\n mint11: \"color(display-p3 0.203 0.463 0.397)\",\n mint12: \"color(display-p3 0.136 0.259 0.236)\",\n};\nconst mintP3A = {\n mintA1: \"color(display-p3 0.02 0.804 0.608 / 0.02)\",\n mintA2: \"color(display-p3 0.02 0.647 0.467 / 0.044)\",\n mintA3: \"color(display-p3 0.004 0.761 0.553 / 0.114)\",\n mintA4: \"color(display-p3 0.004 0.741 0.545 / 0.181)\",\n mintA5: \"color(display-p3 0.004 0.678 0.51 / 0.255)\",\n mintA6: \"color(display-p3 0.004 0.616 0.463 / 0.334)\",\n mintA7: \"color(display-p3 0.004 0.549 0.412 / 0.432)\",\n mintA8: \"color(display-p3 0 0.529 0.392 / 0.581)\",\n mintA9: \"color(display-p3 0.004 0.765 0.569 / 0.381)\",\n mintA10: \"color(display-p3 0.004 0.69 0.51 / 0.416)\",\n mintA11: \"color(display-p3 0.203 0.463 0.397)\",\n mintA12: \"color(display-p3 0.136 0.259 0.236)\",\n};\nconst lime = {\n lime1: \"#fcfdfa\",\n lime2: \"#f8faf3\",\n lime3: \"#eef6d6\",\n lime4: \"#e2f0bd\",\n lime5: \"#d3e7a6\",\n lime6: \"#c2da91\",\n lime7: \"#abc978\",\n lime8: \"#8db654\",\n lime9: \"#bdee63\",\n lime10: \"#b0e64c\",\n lime11: \"#5c7c2f\",\n lime12: \"#37401c\",\n};\nconst limeA = {\n limeA1: \"#66990005\",\n limeA2: \"#6b95000c\",\n limeA3: \"#96c80029\",\n limeA4: \"#8fc60042\",\n limeA5: \"#81bb0059\",\n limeA6: \"#72aa006e\",\n limeA7: \"#61990087\",\n limeA8: \"#559200ab\",\n limeA9: \"#93e4009c\",\n limeA10: \"#8fdc00b3\",\n limeA11: \"#375f00d0\",\n limeA12: \"#1e2900e3\",\n};\nconst limeP3 = {\n lime1: \"color(display-p3 0.989 0.992 0.981)\",\n lime2: \"color(display-p3 0.975 0.98 0.954)\",\n lime3: \"color(display-p3 0.939 0.965 0.851)\",\n lime4: \"color(display-p3 0.896 0.94 0.76)\",\n lime5: \"color(display-p3 0.843 0.903 0.678)\",\n lime6: \"color(display-p3 0.778 0.852 0.599)\",\n lime7: \"color(display-p3 0.694 0.784 0.508)\",\n lime8: \"color(display-p3 0.585 0.707 0.378)\",\n lime9: \"color(display-p3 0.78 0.928 0.466)\",\n lime10: \"color(display-p3 0.734 0.896 0.397)\",\n lime11: \"color(display-p3 0.386 0.482 0.227)\",\n lime12: \"color(display-p3 0.222 0.25 0.128)\",\n};\nconst limeP3A = {\n limeA1: \"color(display-p3 0.412 0.608 0.02 / 0.02)\",\n limeA2: \"color(display-p3 0.514 0.592 0.024 / 0.048)\",\n limeA3: \"color(display-p3 0.584 0.765 0.008 / 0.15)\",\n limeA4: \"color(display-p3 0.561 0.757 0.004 / 0.24)\",\n limeA5: \"color(display-p3 0.514 0.698 0.004 / 0.322)\",\n limeA6: \"color(display-p3 0.443 0.627 0 / 0.4)\",\n limeA7: \"color(display-p3 0.376 0.561 0.004 / 0.491)\",\n limeA8: \"color(display-p3 0.333 0.529 0 / 0.624)\",\n limeA9: \"color(display-p3 0.588 0.867 0 / 0.534)\",\n limeA10: \"color(display-p3 0.561 0.827 0 / 0.604)\",\n limeA11: \"color(display-p3 0.386 0.482 0.227)\",\n limeA12: \"color(display-p3 0.222 0.25 0.128)\",\n};\nconst yellow = {\n yellow1: \"#fdfdf9\",\n yellow2: \"#fefce9\",\n yellow3: \"#fffab8\",\n yellow4: \"#fff394\",\n yellow5: \"#ffe770\",\n yellow6: \"#f3d768\",\n yellow7: \"#e4c767\",\n yellow8: \"#d5ae39\",\n yellow9: \"#ffe629\",\n yellow10: \"#ffdc00\",\n yellow11: \"#9e6c00\",\n yellow12: \"#473b1f\",\n};\nconst yellowA = {\n yellowA1: \"#aaaa0006\",\n yellowA2: \"#f4dd0016\",\n yellowA3: \"#ffee0047\",\n yellowA4: \"#ffe3016b\",\n yellowA5: \"#ffd5008f\",\n yellowA6: \"#ebbc0097\",\n yellowA7: \"#d2a10098\",\n yellowA8: \"#c99700c6\",\n yellowA9: \"#ffe100d6\",\n yellowA10: \"#ffdc00\",\n yellowA11: \"#9e6c00\",\n yellowA12: \"#2e2000e0\",\n};\nconst yellowP3 = {\n yellow1: \"color(display-p3 0.992 0.992 0.978)\",\n yellow2: \"color(display-p3 0.995 0.99 0.922)\",\n yellow3: \"color(display-p3 0.997 0.982 0.749)\",\n yellow4: \"color(display-p3 0.992 0.953 0.627)\",\n yellow5: \"color(display-p3 0.984 0.91 0.51)\",\n yellow6: \"color(display-p3 0.934 0.847 0.474)\",\n yellow7: \"color(display-p3 0.876 0.785 0.46)\",\n yellow8: \"color(display-p3 0.811 0.689 0.313)\",\n yellow9: \"color(display-p3 1 0.92 0.22)\",\n yellow10: \"color(display-p3 0.977 0.868 0.291)\",\n yellow11: \"color(display-p3 0.6 0.44 0)\",\n yellow12: \"color(display-p3 0.271 0.233 0.137)\",\n};\nconst yellowP3A = {\n yellowA1: \"color(display-p3 0.675 0.675 0.024 / 0.024)\",\n yellowA2: \"color(display-p3 0.953 0.855 0.008 / 0.079)\",\n yellowA3: \"color(display-p3 0.988 0.925 0.004 / 0.251)\",\n yellowA4: \"color(display-p3 0.98 0.875 0.004 / 0.373)\",\n yellowA5: \"color(display-p3 0.969 0.816 0.004 / 0.491)\",\n yellowA6: \"color(display-p3 0.875 0.71 0 / 0.526)\",\n yellowA7: \"color(display-p3 0.769 0.604 0 / 0.542)\",\n yellowA8: \"color(display-p3 0.725 0.549 0 / 0.687)\",\n yellowA9: \"color(display-p3 1 0.898 0 / 0.781)\",\n yellowA10: \"color(display-p3 0.969 0.812 0 / 0.71)\",\n yellowA11: \"color(display-p3 0.6 0.44 0)\",\n yellowA12: \"color(display-p3 0.271 0.233 0.137)\",\n};\nconst amber = {\n amber1: \"#fefdfb\",\n amber2: \"#fefbe9\",\n amber3: \"#fff7c2\",\n amber4: \"#ffee9c\",\n amber5: \"#fbe577\",\n amber6: \"#f3d673\",\n amber7: \"#e9c162\",\n amber8: \"#e2a336\",\n amber9: \"#ffc53d\",\n amber10: \"#ffba18\",\n amber11: \"#ab6400\",\n amber12: \"#4f3422\",\n};\nconst amberA = {\n amberA1: \"#c0800004\",\n amberA2: \"#f4d10016\",\n amberA3: \"#ffde003d\",\n amberA4: \"#ffd40063\",\n amberA5: \"#f8cf0088\",\n amberA6: \"#eab5008c\",\n amberA7: \"#dc9b009d\",\n amberA8: \"#da8a00c9\",\n amberA9: \"#ffb300c2\",\n amberA10: \"#ffb300e7\",\n amberA11: \"#ab6400\",\n amberA12: \"#341500dd\",\n};\nconst amberP3 = {\n amber1: \"color(display-p3 0.995 0.992 0.985)\",\n amber2: \"color(display-p3 0.994 0.986 0.921)\",\n amber3: \"color(display-p3 0.994 0.969 0.782)\",\n amber4: \"color(display-p3 0.989 0.937 0.65)\",\n amber5: \"color(display-p3 0.97 0.902 0.527)\",\n amber6: \"color(display-p3 0.936 0.844 0.506)\",\n amber7: \"color(display-p3 0.89 0.762 0.443)\",\n amber8: \"color(display-p3 0.85 0.65 0.3)\",\n amber9: \"color(display-p3 1 0.77 0.26)\",\n amber10: \"color(display-p3 0.959 0.741 0.274)\",\n amber11: \"color(display-p3 0.64 0.4 0)\",\n amber12: \"color(display-p3 0.294 0.208 0.145)\",\n};\nconst amberP3A = {\n amberA1: \"color(display-p3 0.757 0.514 0.024 / 0.016)\",\n amberA2: \"color(display-p3 0.902 0.804 0.008 / 0.079)\",\n amberA3: \"color(display-p3 0.965 0.859 0.004 / 0.22)\",\n amberA4: \"color(display-p3 0.969 0.82 0.004 / 0.35)\",\n amberA5: \"color(display-p3 0.933 0.796 0.004 / 0.475)\",\n amberA6: \"color(display-p3 0.875 0.682 0.004 / 0.495)\",\n amberA7: \"color(display-p3 0.804 0.573 0 / 0.557)\",\n amberA8: \"color(display-p3 0.788 0.502 0 / 0.699)\",\n amberA9: \"color(display-p3 1 0.686 0 / 0.742)\",\n amberA10: \"color(display-p3 0.945 0.643 0 / 0.726)\",\n amberA11: \"color(display-p3 0.64 0.4 0)\",\n amberA12: \"color(display-p3 0.294 0.208 0.145)\",\n};\nconst orange = {\n orange1: \"#fefcfb\",\n orange2: \"#fff7ed\",\n orange3: \"#ffefd6\",\n orange4: \"#ffdfb5\",\n orange5: \"#ffd19a\",\n orange6: \"#ffc182\",\n orange7: \"#f5ae73\",\n orange8: \"#ec9455\",\n orange9: \"#f76b15\",\n orange10: \"#ef5f00\",\n orange11: \"#cc4e00\",\n orange12: \"#582d1d\",\n};\nconst orangeA = {\n orangeA1: \"#c0400004\",\n orangeA2: \"#ff8e0012\",\n orangeA3: \"#ff9c0029\",\n orangeA4: \"#ff91014a\",\n orangeA5: \"#ff8b0065\",\n orangeA6: \"#ff81007d\",\n orangeA7: \"#ed6c008c\",\n orangeA8: \"#e35f00aa\",\n orangeA9: \"#f65e00ea\",\n orangeA10: \"#ef5f00\",\n orangeA11: \"#cc4e00\",\n orangeA12: \"#431200e2\",\n};\nconst orangeP3 = {\n orange1: \"color(display-p3 0.995 0.988 0.985)\",\n orange2: \"color(display-p3 0.994 0.968 0.934)\",\n orange3: \"color(display-p3 0.989 0.938 0.85)\",\n orange4: \"color(display-p3 1 0.874 0.687)\",\n orange5: \"color(display-p3 1 0.821 0.583)\",\n orange6: \"color(display-p3 0.975 0.767 0.545)\",\n orange7: \"color(display-p3 0.919 0.693 0.486)\",\n orange8: \"color(display-p3 0.877 0.597 0.379)\",\n orange9: \"color(display-p3 0.9 0.45 0.2)\",\n orange10: \"color(display-p3 0.87 0.409 0.164)\",\n orange11: \"color(display-p3 0.76 0.34 0)\",\n orange12: \"color(display-p3 0.323 0.185 0.127)\",\n};\nconst orangeP3A = {\n orangeA1: \"color(display-p3 0.757 0.267 0.024 / 0.016)\",\n orangeA2: \"color(display-p3 0.886 0.533 0.008 / 0.067)\",\n orangeA3: \"color(display-p3 0.922 0.584 0.008 / 0.15)\",\n orangeA4: \"color(display-p3 1 0.604 0.004 / 0.314)\",\n orangeA5: \"color(display-p3 1 0.569 0.004 / 0.416)\",\n orangeA6: \"color(display-p3 0.949 0.494 0.004 / 0.455)\",\n orangeA7: \"color(display-p3 0.839 0.408 0 / 0.514)\",\n orangeA8: \"color(display-p3 0.804 0.349 0 / 0.62)\",\n orangeA9: \"color(display-p3 0.878 0.314 0 / 0.8)\",\n orangeA10: \"color(display-p3 0.843 0.29 0 / 0.836)\",\n orangeA11: \"color(display-p3 0.76 0.34 0)\",\n orangeA12: \"color(display-p3 0.323 0.185 0.127)\",\n};\n\nconst blackA = {\n blackA1: \"rgba(0, 0, 0, 0.05)\",\n blackA2: \"rgba(0, 0, 0, 0.1)\",\n blackA3: \"rgba(0, 0, 0, 0.15)\",\n blackA4: \"rgba(0, 0, 0, 0.2)\",\n blackA5: \"rgba(0, 0, 0, 0.3)\",\n blackA6: \"rgba(0, 0, 0, 0.4)\",\n blackA7: \"rgba(0, 0, 0, 0.5)\",\n blackA8: \"rgba(0, 0, 0, 0.6)\",\n blackA9: \"rgba(0, 0, 0, 0.7)\",\n blackA10: \"rgba(0, 0, 0, 0.8)\",\n blackA11: \"rgba(0, 0, 0, 0.9)\",\n blackA12: \"rgba(0, 0, 0, 0.95)\",\n};\nconst blackP3A = {\n blackA1: \"color(display-p3 0 0 0 / 0.05)\",\n blackA2: \"color(display-p3 0 0 0 / 0.1)\",\n blackA3: \"color(display-p3 0 0 0 / 0.15)\",\n blackA4: \"color(display-p3 0 0 0 / 0.2)\",\n blackA5: \"color(display-p3 0 0 0 / 0.3)\",\n blackA6: \"color(display-p3 0 0 0 / 0.4)\",\n blackA7: \"color(display-p3 0 0 0 / 0.5)\",\n blackA8: \"color(display-p3 0 0 0 / 0.6)\",\n blackA9: \"color(display-p3 0 0 0 / 0.7)\",\n blackA10: \"color(display-p3 0 0 0 / 0.8)\",\n blackA11: \"color(display-p3 0 0 0 / 0.9)\",\n blackA12: \"color(display-p3 0 0 0 / 0.95)\",\n};\n\nconst whiteA = {\n whiteA1: \"rgba(255, 255, 255, 0.05)\",\n whiteA2: \"rgba(255, 255, 255, 0.1)\",\n whiteA3: \"rgba(255, 255, 255, 0.15)\",\n whiteA4: \"rgba(255, 255, 255, 0.2)\",\n whiteA5: \"rgba(255, 255, 255, 0.3)\",\n whiteA6: \"rgba(255, 255, 255, 0.4)\",\n whiteA7: \"rgba(255, 255, 255, 0.5)\",\n whiteA8: \"rgba(255, 255, 255, 0.6)\",\n whiteA9: \"rgba(255, 255, 255, 0.7)\",\n whiteA10: \"rgba(255, 255, 255, 0.8)\",\n whiteA11: \"rgba(255, 255, 255, 0.9)\",\n whiteA12: \"rgba(255, 255, 255, 0.95)\",\n};\nconst whiteP3A = {\n whiteA1: \"color(display-p3 1 1 1 / 0.05)\",\n whiteA2: \"color(display-p3 1 1 1 / 0.1)\",\n whiteA3: \"color(display-p3 1 1 1 / 0.15)\",\n whiteA4: \"color(display-p3 1 1 1 / 0.2)\",\n whiteA5: \"color(display-p3 1 1 1 / 0.3)\",\n whiteA6: \"color(display-p3 1 1 1 / 0.4)\",\n whiteA7: \"color(display-p3 1 1 1 / 0.5)\",\n whiteA8: \"color(display-p3 1 1 1 / 0.6)\",\n whiteA9: \"color(display-p3 1 1 1 / 0.7)\",\n whiteA10: \"color(display-p3 1 1 1 / 0.8)\",\n whiteA11: \"color(display-p3 1 1 1 / 0.9)\",\n whiteA12: \"color(display-p3 1 1 1 / 0.95)\",\n};\n\nexport { amber, amberA, amberDark, amberDarkA, amberDarkP3, amberDarkP3A, amberP3, amberP3A, blackA, blackP3A, blue, blueA, blueDark, blueDarkA, blueDarkP3, blueDarkP3A, blueP3, blueP3A, bronze, bronzeA, bronzeDark, bronzeDarkA, bronzeDarkP3, bronzeDarkP3A, bronzeP3, bronzeP3A, brown, brownA, brownDark, brownDarkA, brownDarkP3, brownDarkP3A, brownP3, brownP3A, crimson, crimsonA, crimsonDark, crimsonDarkA, crimsonDarkP3, crimsonDarkP3A, crimsonP3, crimsonP3A, cyan, cyanA, cyanDark, cyanDarkA, cyanDarkP3, cyanDarkP3A, cyanP3, cyanP3A, gold, goldA, goldDark, goldDarkA, goldDarkP3, goldDarkP3A, goldP3, goldP3A, grass, grassA, grassDark, grassDarkA, grassDarkP3, grassDarkP3A, grassP3, grassP3A, gray, grayA, grayDark, grayDarkA, grayDarkP3, grayDarkP3A, grayP3, grayP3A, green, greenA, greenDark, greenDarkA, greenDarkP3, greenDarkP3A, greenP3, greenP3A, indigo, indigoA, indigoDark, indigoDarkA, indigoDarkP3, indigoDarkP3A, indigoP3, indigoP3A, iris, irisA, irisDark, irisDarkA, irisDarkP3, irisDarkP3A, irisP3, irisP3A, jade, jadeA, jadeDark, jadeDarkA, jadeDarkP3, jadeDarkP3A, jadeP3, jadeP3A, lime, limeA, limeDark, limeDarkA, limeDarkP3, limeDarkP3A, limeP3, limeP3A, mauve, mauveA, mauveDark, mauveDarkA, mauveDarkP3, mauveDarkP3A, mauveP3, mauveP3A, mint, mintA, mintDark, mintDarkA, mintDarkP3, mintDarkP3A, mintP3, mintP3A, olive, oliveA, oliveDark, oliveDarkA, oliveDarkP3, oliveDarkP3A, oliveP3, oliveP3A, orange, orangeA, orangeDark, orangeDarkA, orangeDarkP3, orangeDarkP3A, orangeP3, orangeP3A, pink, pinkA, pinkDark, pinkDarkA, pinkDarkP3, pinkDarkP3A, pinkP3, pinkP3A, plum, plumA, plumDark, plumDarkA, plumDarkP3, plumDarkP3A, plumP3, plumP3A, purple, purpleA, purpleDark, purpleDarkA, purpleDarkP3, purpleDarkP3A, purpleP3, purpleP3A, red, redA, redDark, redDarkA, redDarkP3, redDarkP3A, redP3, redP3A, ruby, rubyA, rubyDark, rubyDarkA, rubyDarkP3, rubyDarkP3A, rubyP3, rubyP3A, sage, sageA, sageDark, sageDarkA, sageDarkP3, sageDarkP3A, sageP3, sageP3A, sand, sandA, sandDark, sandDarkA, sandDarkP3, sandDarkP3A, sandP3, sandP3A, sky, skyA, skyDark, skyDarkA, skyDarkP3, skyDarkP3A, skyP3, skyP3A, slate, slateA, slateDark, slateDarkA, slateDarkP3, slateDarkP3A, slateP3, slateP3A, teal, tealA, tealDark, tealDarkA, tealDarkP3, tealDarkP3A, tealP3, tealP3A, tomato, tomatoA, tomatoDark, tomatoDarkA, tomatoDarkP3, tomatoDarkP3A, tomatoP3, tomatoP3A, violet, violetA, violetDark, violetDarkA, violetDarkP3, violetDarkP3A, violetP3, violetP3A, whiteA, whiteP3A, yellow, yellowA, yellowDark, yellowDarkA, yellowDarkP3, yellowDarkP3A, yellowP3, yellowP3A };\n"],
|
|
5
5
|
"mappings": "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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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",
|
|
6
6
|
"names": ["React", "React", "useEffect", "useState", "useState", "useEffect", "React", "React", "useEffect", "useState", "React", "useEffect", "useState", "React", "useEffect", "useEffect", "height", "React", "React", "React", "React", "React", "React", "React", "defaultMessages", "PageContext", "React", "React", "PageContext", "item", "className", "React", "navigationHelpers", "React", "React", "PageContext", "navigationHelpers", "React", "helpers", "React", "React", "fallbackId", "nodes", "React", "React", "React", "PageContext", "React", "React", "React", "React", "readBasePath", "React", "_", "React", "React", "React", "PageContext", "React", "React", "React", "React", "React", "readBasePath", "withBasePath", "basePath", "PageContext", "React", "React", "PageContext", "React", "React", "React", "React", "React", "useEffect", "useRef", "useState", "React", "navigationHelpers", "PageContext", "navigationHelpers", "React", "React", "navigationHelpers", "navigationHelpers", "PageContext", "React", "React", "slugify", "cachedBasePath", "normalizeBasePath", "readBasePath", "withBasePath", "React", "React", "React", "React", "React", "React", "React", "CONTEXT_KEY", "getPageContext", "PageContext", "React", "React", "ReactDOMServer", "normalizeReactKey", "ReactDOMServer", "React", "normalizeKeyLabel", "serializeProps", "serializeForScript", "React", "INLINE_SCRIPT", "slugify", "ensureArray", "React", "React", "React", "React", "React", "React", "React", "React", "import_slugify", "React", "SLUG_OPTIONS", "slugify", "normalizeBasePath", "cachedBasePath", "readBasePath", "withBasePath", "React", "React", "React", "React", "React", "React", "gray", "React"]
|
|
7
7
|
}
|