@canopy-iiif/app 0.10.17 → 0.10.18

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/HelloWorld.jsx", "../src/iiif/Viewer.jsx", "../src/iiif/Slider.jsx", "../src/iiif/Scroll.jsx", "../src/iiif/Image.jsx", "../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/layout/SubNavigation.jsx", "../src/layout/Layout.jsx", "../src/layout/ContentNavigation.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/CanopyFooter.jsx", "../src/layout/Container.jsx", "../src/search/MdxSearchResults.jsx", "../src/search/SearchSummary.jsx", "../src/search/MdxSearchTabs.jsx", "../src/search-form/MdxSearchFormModal.jsx", "../src/iiif/ManifestPrimitives.jsx", "../src/docs/CodeBlock.jsx", "../src/docs/MarkdownTable.jsx"],
4
- "sourcesContent": ["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\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\";\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 console.log(mod);\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 if (!CloverSlider) {\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-slider=\"1\" className=\"not-prose\">\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{ __html: json }}\n />\n </div>\n );\n }\n return <CloverSlider {...props} />;\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 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\" className=\"not-prose\">\n <script type=\"application/json\" dangerouslySetInnerHTML={{ __html: json }} />\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 {computeHeroHeightStyle} from \"./hero-utils.js\";\nimport Button from \"../layout/Button.jsx\";\nimport ButtonWrapper from \"../layout/ButtonWrapper.jsx\";\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\nexport default function Hero({\n height = 520,\n item,\n index,\n random = true,\n transition = 'fade',\n headline,\n description,\n links = [],\n className = \"\",\n style = {},\n background = \"theme\",\n ...rest\n}) {\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\n if (!slides.length) return null;\n\n let 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 const heroHeight = computeHeroHeightStyle(height);\n const heroStyles = {...(style || {})};\n if (heroHeight && heroHeight.height) {\n heroStyles[\"--hero-height\"] = heroHeight.height;\n }\n\n const derivedDescription = description ? String(description) : \"\";\n const normalizedLinks = normalizeLinks(links);\n\n const primarySlide = orderedSlides[0] || 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 ];\n\n const normalizedBackground = normalizeBackground(background);\n const backgroundClassName =\n normalizedBackground === \"transparent\"\n ? \"canopy-interstitial--bg-transparent\"\n : \"\";\n\n const containerClassName = [\n \"canopy-interstitial\",\n \"canopy-interstitial--hero\",\n backgroundClassName,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const normalizedTransition = (() => {\n try {\n const raw = transition == null ? '' : String(transition);\n const normalized = raw.trim().toLowerCase();\n return normalized === 'slide' ? 'slide' : 'fade';\n } catch (_) {\n return 'fade';\n }\n })();\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)\n props.sizes = slide.sizes || HERO_DEFAULT_SIZES_ATTR;\n return props;\n };\n\n if (isStaticCaption) {\n return (\n <div className=\"swiper-slide\" key={safeHref || idx}>\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 <a href={safeHref} className=\"canopy-interstitial__caption-link\">\n {slide.title}\n </a>\n </div>\n ) : null}\n </article>\n </div>\n );\n }\n\n return (\n <div className=\"swiper-slide\" key={safeHref || idx}>\n <article className={paneClassName}>\n {slide.thumbnail ? (\n <img\n {...buildImageProps(\"canopy-interstitial__media\")}\n />\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 <a href={safeHref} className=\"canopy-interstitial__caption-link\">\n {slide.title}\n </a>\n </div>\n ) : null}\n </article>\n </div>\n );\n };\n\n const renderSlider = (options = {}) => (\n <div className=\"canopy-interstitial__slider swiper\">\n <div className=\"swiper-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 swiper-button-prev\"\n />\n <button\n type=\"button\"\n aria-label=\"Next slide\"\n className=\"canopy-interstitial__nav-btn canopy-interstitial__nav-btn--next swiper-button-next\"\n />\n </div>\n <div className=\"canopy-interstitial__pagination swiper-pagination\" />\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\">\n {derivedDescription}\n </p>\n ) : null}\n {overlayLinks.length ? (\n <ButtonWrapper className=\"canopy-interstitial__actions\">\n {overlayLinks.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\n return (\n <section\n className={containerClassName}\n data-canopy-hero-slider=\"1\"\n data-transition={normalizedTransition}\n style={heroStyles}\n {...cleanedProps}\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>\n </div>\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 ...rest\n}) {\n const resolvedVariant = VARIANTS.has(variant) ? variant : 'primary';\n const computedRel =\n 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 return (\n <a\n href={href}\n className={classes}\n target={target}\n rel={computedRel}\n {...rest}\n >\n {content}\n </a>\n );\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 navigationHelpers from \"../../../lib/components/navigation.js\";\n\nfunction resolveRelativeCandidate(page, current) {\n if (page && typeof page.relativePath === \"string\" && page.relativePath) 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\nfunction renderNodes(nodes, parentKey = \"node\") {\n if (!Array.isArray(nodes) || !nodes.length) return null;\n return nodes.map((node, index) => {\n if (!node) return null;\n const key = node.slug || node.relativePath || `${parentKey}-${index}`;\n const hasChildren = Array.isArray(node.children) && node.children.length > 0;\n const showChildren = hasChildren && (node.isExpanded || node.depth === 0);\n const depth = typeof node.depth === \"number\" ? Math.max(0, node.depth) : 0;\n const depthClass = `depth-${Math.min(depth, 5)}`;\n const classes = [\n \"canopy-sub-navigation__link\",\n depthClass,\n ];\n if (!node.href) classes.push(\"is-label\");\n if (node.isActive) classes.push(\"is-active\");\n const linkClass = classes.join(\" \");\n const Tag = node.href ? \"a\" : \"span\";\n return (\n <li\n key={key}\n className=\"canopy-sub-navigation__item\"\n data-depth={depth}\n >\n <Tag\n className={linkClass}\n href={node.href || undefined}\n aria-current={node.isActive ? \"page\" : undefined}\n >\n {node.title || node.slug}\n </Tag>\n {showChildren ? (\n <ul className=\"canopy-sub-navigation__list canopy-sub-navigation__list--nested\" role=\"list\">\n {renderNodes(node.children, key)}\n </ul>\n ) : null}\n </li>\n );\n });\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 = navigationHelpers && navigationHelpers.getPageContext\n ? navigationHelpers.getPageContext()\n : null;\n const context = PageContext ? React.useContext(PageContext) : null;\n const contextNavigation = 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) return effectiveNavigation;\n const candidate = resolveRelativeCandidate(effectivePage, current);\n if (!candidate) return effectiveNavigation || null;\n const helpers = navigationHelpers && navigationHelpers.buildNavigationForFile ? navigationHelpers : 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 = ariaLabel || (labelSource ? `${labelSource} navigation` : \"Section navigation\");\n const combinedClassName = [\"canopy-sub-navigation\", className].filter(Boolean).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 className={combinedClassName} style={inlineStyle} aria-label={navLabel}>\n {finalHeading ? (\n <div className=\"canopy-sub-navigation__heading\">{finalHeading}</div>\n ) : null}\n <ul className=\"canopy-sub-navigation__list\" role=\"list\">\n {renderNodes([rootNode], rootNode.slug || \"root\")}\n </ul>\n </nav>\n );\n}\n", "import React from \"react\";\nimport navigationHelpers from \"../../../lib/components/navigation.js\";\nimport SubNavigation from \"./SubNavigation.jsx\";\nimport ContentNavigation from \"./ContentNavigation.jsx\";\n\nfunction 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 =\n 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\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\nfunction 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) nav.classList.toggle('canopy-content-navigation--collapsed', isCollapsed);\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 toggle.textContent = isCollapsed ? showLabel : hideLabel;\n toggle.setAttribute('aria-expanded', isCollapsed ? 'false' : 'true');\n toggle.setAttribute('aria-label', isCollapsed ? showFull : hideFull);\n toggle.setAttribute('title', isCollapsed ? showFull : hideFull);\n }\n }\n\n ready(function () {\n var roots = Array.prototype.slice.call(\n document.querySelectorAll('[data-canopy-content-nav-root]')\n );\n if (!roots.length) return;\n var stored = getStored();\n var collapsed = true;\n 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 roots.forEach(function (root) {\n applyState(root, collapsed);\n });\n setStored(collapsed ? '1' : '0');\n }\n\n sync(collapsed);\n\n roots.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\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 =\n navigationHelpers && typeof navigationHelpers.getPageContext === \"function\"\n ? navigationHelpers.getPageContext()\n : 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 />\n </aside>\n <ContentNavigationScript />\n </>\n ) : null}\n </div>\n );\n}\n", "import React from 'react';\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\nexport default function ContentNavigation({\n items = [],\n className = '',\n style = {},\n heading,\n headingId,\n pageTitle,\n ariaLabel,\n}) {\n const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n const savedDepthsRef = React.useRef(null);\n\n if ((!items || !items.length) && !headingId) return null;\n\n const combinedClassName = [\n 'canopy-sub-navigation canopy-content-navigation',\n 'canopy-content-navigation--collapsed',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const effectiveHeading = heading || pageTitle || null;\n const navLabel = ariaLabel || (effectiveHeading ? `${effectiveHeading} navigation` : 'Section navigation');\n\n const getSavedDepth = React.useCallback(\n (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 );\n\n const headingEntries = React.useMemo(() => {\n const entries = [];\n const seen = new Set();\n if (headingId) {\n const topId = String(headingId);\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(items);\n return entries;\n }, [headingId, items, getSavedDepth]);\n\n const fallbackId = headingEntries.length ? headingEntries[0].id : headingId || null;\n const [activeId, setActiveId] = React.useState(fallbackId);\n const activeIdRef = React.useRef(activeId);\n React.useEffect(() => {\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 let nextId = elements[0].id;\n for (const { id, element } of elements) {\n const rect = element.getBoundingClientRect();\n if (rect.top - offset <= 0) {\n nextId = id;\n } else {\n break;\n }\n }\n if (nextId && nextId !== activeIdRef.current) {\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 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') 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 = targetId && targetId !== 'top'\n ? targetId\n : headingEntries[0]?.id || headingId || 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, headingId, isBrowser]\n );\n\n const renderNodes = React.useCallback(\n (nodes) => {\n if (!nodes || !nodes.length) return null;\n return nodes.map((node) => {\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 idx = depthIndex(depth);\n const isActive = id && activeId === id;\n const childNodes = depth < MAX_HEADING_DEPTH ? renderNodes(node.children) : null;\n return (\n <li key={id || node.title} className=\"canopy-sub-navigation__item\" data-depth={idx}>\n <a\n className={`canopy-sub-navigation__link depth-${idx}${isActive ? ' is-active' : ''}`}\n href={id ? `#${id}` : '#'}\n onClick={(event) => handleAnchorClick(event, id || null)}\n aria-current={isActive ? 'location' : undefined}\n >\n {node.title}\n </a>\n {childNodes ? (\n <ul\n className=\"canopy-sub-navigation__list canopy-sub-navigation__list--nested\"\n role=\"list\"\n >\n {childNodes}\n </ul>\n ) : null}\n </li>\n );\n });\n },\n [handleAnchorClick, activeId, getSavedDepth]\n );\n\n const nestedItems = React.useMemo(() => renderNodes(items), [items, renderNodes]);\n\n const topLink = headingId\n ? (\n <li className=\"canopy-sub-navigation__item\" data-depth={0}>\n <a\n className={`canopy-sub-navigation__link depth-0${activeId === headingId ? ' is-active' : ''}`}\n href={`#${headingId}`}\n onClick={(event) => handleAnchorClick(event, headingId, { scrollToTop: true })}\n aria-current={activeId === headingId ? 'location' : undefined}\n >\n {effectiveHeading || pageTitle || headingId}\n </a>\n {nestedItems ? (\n <ul\n className=\"canopy-sub-navigation__list canopy-sub-navigation__list--nested\"\n role=\"list\"\n >\n {nestedItems}\n </ul>\n ) : null}\n </li>\n )\n : null;\n\n return (\n <nav\n className={combinedClassName}\n style={style}\n aria-label={navLabel}\n data-canopy-content-nav=\"true\"\n >\n <button\n type=\"button\"\n className=\"canopy-content-navigation__toggle\"\n aria-expanded=\"false\"\n aria-label=\"Show section navigation\"\n title=\"Show section navigation\"\n data-canopy-content-nav-toggle=\"true\"\n data-show-label=\"Show\"\n data-hide-label=\"Hide\"\n data-show-full-label=\"Show section navigation\"\n data-hide-full-label=\"Hide section navigation\"\n >\n Show\n </button>\n <ul className=\"canopy-sub-navigation__list\" role=\"list\">\n {topLink || nestedItems}\n </ul>\n </nav>\n );\n}\n", "import React from \"react\";\nimport SearchPanel from \"../search/SearchPanel.jsx\";\nimport CanopyBrand from \"./CanopyBrand.jsx\";\nimport CanopyModal from \"./CanopyModal.jsx\";\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 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\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 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 }\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 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('(min-width: 48rem)');\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 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\nexport default function CanopyHeader(props = {}) {\n const {\n navigation: navLinksProp,\n searchLabel = \"Search\",\n searchHotkey = \"mod+k\",\n searchPlaceholder = \"Search\u2026\",\n brandHref = \"/\",\n title = \"Canopy IIIF\",\n logo: SiteLogo,\n } = props;\n\n const navLinks = ensureArray(navLinksProp);\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={title}\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={searchLabel}\n hotkey={searchHotkey}\n placeholder={searchPlaceholder}\n />\n </div>\n\n <nav\n className=\"canopy-nav-links canopy-header__desktop-nav\"\n aria-label=\"Primary navigation\"\n >\n {navLinks.map((link) => (\n <a key={link.href} href={link.href}>\n {link.label || link.href}\n </a>\n ))}\n </nav>\n\n <div className=\"canopy-header__actions\">\n <button\n type=\"button\"\n className=\"canopy-header__icon-button canopy-header__search-trigger\"\n aria-label=\"Open search\"\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=\"Open navigation\"\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={title}\n logo={SiteLogo}\n href={brandHref}\n closeLabel=\"Close navigation\"\n closeDataAttr=\"nav\"\n >\n <nav\n className=\"canopy-nav-links canopy-modal__nav\"\n aria-label=\"Primary navigation\"\n >\n {navLinks.map((link) => (\n <a key={link.href} href={link.href}>\n {link.label || link.href}\n </a>\n ))}\n </nav>\n </CanopyModal>\n\n <CanopyModal\n id=\"canopy-modal-search\"\n variant=\"search\"\n labelledBy=\"canopy-modal-search-label\"\n label={title}\n logo={SiteLogo}\n href={brandHref}\n closeLabel=\"Close search\"\n closeDataAttr=\"search\"\n bodyClassName=\"canopy-modal__body--search\"\n >\n <SearchPanel\n label={searchLabel}\n hotkey={searchHotkey}\n placeholder={searchPlaceholder}\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';\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 = 'Search\u2026',\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 = 'Search',\n label,\n searchPath = '/search',\n } = props || {};\n\n const text = typeof label === 'string' && label.trim() ? label.trim() : buttonLabel;\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={buttonLabel} 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\" {...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\";\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 = \"Search\u2026\",\n buttonLabel = \"Search\",\n label,\n searchPath = \"/search\",\n inputId: inputIdProp,\n clearLabel = \"Clear search\",\n } = props || {};\n\n const text =\n typeof label === \"string\" && label.trim() ? label.trim() : buttonLabel;\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 <input\n id={inputId}\n type=\"search\"\n name=\"q\"\n inputMode=\"search\"\n data-canopy-search-form-input\n placeholder={placeholder}\n className=\"canopy-search-form__input\"\n aria-label=\"Search\"\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={clearLabel}\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\", className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n data-canopy-search-form-panel\n className={classes || undefined}\n style={style}\n >\n <div id=\"cplist\" />\n </div>\n );\n}\n", "import React from 'react';\n\nexport default function CanopyBrand(props = {}) {\n const {\n labelId,\n label = 'Canopy IIIF',\n href = '/',\n className,\n Logo,\n } = props || {};\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}>{label}</span>\n </a>\n );\n}\n", "import React from 'react';\nimport CanopyBrand from './CanopyBrand.jsx';\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 = 'Close',\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 closeButtonProps = {\n type: 'button',\n className: 'canopy-modal__close',\n 'aria-label': closeLabel,\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\">{closeLabel}</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';\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 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 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 SearchPanelForm, { resolveSearchPath } from '../search/SearchPanelForm.jsx';\nimport SearchPanelTeaserResults from '../search/SearchPanelTeaserResults.jsx';\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 = 'Search\u2026',\n hotkey = 'mod+k',\n maxResults = 8,\n groupOrder = ['work', 'page'],\n button = true, // kept for backward compat; ignored by teaser form\n buttonLabel = 'Search',\n label,\n searchPath = '/search',\n } = props || {};\n\n const text = typeof label === 'string' && label.trim() ? label.trim() : buttonLabel;\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={buttonLabel} 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 {\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\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, ...rest }) {\n const items = ensureMetadata(metadata || (manifest && manifest.metadata));\n if (!items.length) return null;\n return <CloverMetadata metadata={items} {...rest} />;\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\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\n const handleCopy = React.useCallback(async () => {\n const text = rawCode;\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), 1500);\n } catch (_) {\n setCopied(false);\n }\n }, [rawCode]);\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.85rem\",\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-accent-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 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\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 {key: lineNumber, style},\n React.createElement(\"span\", {style: lineContentStyle}, displayLine)\n );\n });\n\n return React.createElement(\n \"div\",\n {style: containerStyle},\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 type: \"button\",\n onClick: handleCopy,\n style: {\n border: \"1px solid var(--color-accent-300, #bfdbfe)\",\n borderRadius: \"6px\",\n padding: \"0.2rem 0.55rem\",\n fontSize: \"0.7rem\",\n fontWeight: 500,\n background:\n \"color-mix(in srgb, var(--color-accent-100, #e0f2ff) 55%, #ffffff)\",\n color: \"var(--color-accent-700, #1d4ed8)\",\n cursor: \"pointer\",\n },\n },\n copied ? \"Copied\" : \"Copy\"\n )\n : null\n ),\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"],
5
- "mappings": "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",
6
- "names": ["React", "React", "useEffect", "useState", "React", "useEffect", "useState", "React", "useEffect", "useState", "React", "React", "React", "React", "item", "className", "React", "React", "helpers", "React", "navigationHelpers", "React", "renderNodes", "React", "navigationHelpers", "React", "React", "React", "React", "_", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React"]
3
+ "sources": ["../src/HelloWorld.jsx", "../src/iiif/Viewer.jsx", "../src/iiif/Slider.jsx", "../src/iiif/Scroll.jsx", "../src/iiif/Image.jsx", "../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/layout/SubNavigation.jsx", "../src/layout/Layout.jsx", "../src/layout/ContentNavigation.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/CanopyFooter.jsx", "../src/layout/Container.jsx", "../src/content/ReferencedItems.jsx", "../src/layout/Card.jsx", "../src/content/References.jsx", "../src/search/MdxSearchResults.jsx", "../src/search/SearchSummary.jsx", "../src/search/MdxSearchTabs.jsx", "../src/search-form/MdxSearchFormModal.jsx", "../src/iiif/ManifestPrimitives.jsx", "../src/docs/CodeBlock.jsx", "../src/docs/MarkdownTable.jsx"],
4
+ "sourcesContent": ["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\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\";\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 console.log(mod);\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 if (!CloverSlider) {\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-slider=\"1\" className=\"not-prose\">\n <script\n type=\"application/json\"\n dangerouslySetInnerHTML={{ __html: json }}\n />\n </div>\n );\n }\n return <CloverSlider {...props} />;\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 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\" className=\"not-prose\">\n <script type=\"application/json\" dangerouslySetInnerHTML={{ __html: json }} />\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 {computeHeroHeightStyle} from \"./hero-utils.js\";\nimport Button from \"../layout/Button.jsx\";\nimport ButtonWrapper from \"../layout/ButtonWrapper.jsx\";\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\nexport default function Hero({\n height = 520,\n item,\n index,\n random = true,\n transition = 'fade',\n headline,\n description,\n links = [],\n className = \"\",\n style = {},\n background = \"theme\",\n ...rest\n}) {\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\n if (!slides.length) return null;\n\n let 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 const heroHeight = computeHeroHeightStyle(height);\n const heroStyles = {...(style || {})};\n if (heroHeight && heroHeight.height) {\n heroStyles[\"--hero-height\"] = heroHeight.height;\n }\n\n const derivedDescription = description ? String(description) : \"\";\n const normalizedLinks = normalizeLinks(links);\n\n const primarySlide = orderedSlides[0] || 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 ];\n\n const normalizedBackground = normalizeBackground(background);\n const backgroundClassName =\n normalizedBackground === \"transparent\"\n ? \"canopy-interstitial--bg-transparent\"\n : \"\";\n\n const containerClassName = [\n \"canopy-interstitial\",\n \"canopy-interstitial--hero\",\n backgroundClassName,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const normalizedTransition = (() => {\n try {\n const raw = transition == null ? '' : String(transition);\n const normalized = raw.trim().toLowerCase();\n return normalized === 'slide' ? 'slide' : 'fade';\n } catch (_) {\n return 'fade';\n }\n })();\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)\n props.sizes = slide.sizes || HERO_DEFAULT_SIZES_ATTR;\n return props;\n };\n\n if (isStaticCaption) {\n return (\n <div className=\"swiper-slide\" key={safeHref || idx}>\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 <a href={safeHref} className=\"canopy-interstitial__caption-link\">\n {slide.title}\n </a>\n </div>\n ) : null}\n </article>\n </div>\n );\n }\n\n return (\n <div className=\"swiper-slide\" key={safeHref || idx}>\n <article className={paneClassName}>\n {slide.thumbnail ? (\n <img\n {...buildImageProps(\"canopy-interstitial__media\")}\n />\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 <a href={safeHref} className=\"canopy-interstitial__caption-link\">\n {slide.title}\n </a>\n </div>\n ) : null}\n </article>\n </div>\n );\n };\n\n const renderSlider = (options = {}) => (\n <div className=\"canopy-interstitial__slider swiper\">\n <div className=\"swiper-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 swiper-button-prev\"\n />\n <button\n type=\"button\"\n aria-label=\"Next slide\"\n className=\"canopy-interstitial__nav-btn canopy-interstitial__nav-btn--next swiper-button-next\"\n />\n </div>\n <div className=\"canopy-interstitial__pagination swiper-pagination\" />\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\">\n {derivedDescription}\n </p>\n ) : null}\n {overlayLinks.length ? (\n <ButtonWrapper className=\"canopy-interstitial__actions\">\n {overlayLinks.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\n return (\n <section\n className={containerClassName}\n data-canopy-hero-slider=\"1\"\n data-transition={normalizedTransition}\n style={heroStyles}\n {...cleanedProps}\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>\n </div>\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 ...rest\n}) {\n const resolvedVariant = VARIANTS.has(variant) ? variant : 'primary';\n const computedRel =\n 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 return (\n <a\n href={href}\n className={classes}\n target={target}\n rel={computedRel}\n {...rest}\n >\n {content}\n </a>\n );\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 navigationHelpers from \"../../../lib/components/navigation.js\";\n\nfunction resolveRelativeCandidate(page, current) {\n if (page && typeof page.relativePath === \"string\" && page.relativePath) 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\nfunction renderNodes(nodes, parentKey = \"node\") {\n if (!Array.isArray(nodes) || !nodes.length) return null;\n return nodes.map((node, index) => {\n if (!node) return null;\n const key = node.slug || node.relativePath || `${parentKey}-${index}`;\n const hasChildren = Array.isArray(node.children) && node.children.length > 0;\n const showChildren = hasChildren && (node.isExpanded || node.depth === 0);\n const depth = typeof node.depth === \"number\" ? Math.max(0, node.depth) : 0;\n const depthClass = `depth-${Math.min(depth, 5)}`;\n const classes = [\n \"canopy-sub-navigation__link\",\n depthClass,\n ];\n if (!node.href) classes.push(\"is-label\");\n if (node.isActive) classes.push(\"is-active\");\n const linkClass = classes.join(\" \");\n const Tag = node.href ? \"a\" : \"span\";\n return (\n <li\n key={key}\n className=\"canopy-sub-navigation__item\"\n data-depth={depth}\n >\n <Tag\n className={linkClass}\n href={node.href || undefined}\n aria-current={node.isActive ? \"page\" : undefined}\n >\n {node.title || node.slug}\n </Tag>\n {showChildren ? (\n <ul className=\"canopy-sub-navigation__list canopy-sub-navigation__list--nested\" role=\"list\">\n {renderNodes(node.children, key)}\n </ul>\n ) : null}\n </li>\n );\n });\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 = navigationHelpers && navigationHelpers.getPageContext\n ? navigationHelpers.getPageContext()\n : null;\n const context = PageContext ? React.useContext(PageContext) : null;\n const contextNavigation = 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) return effectiveNavigation;\n const candidate = resolveRelativeCandidate(effectivePage, current);\n if (!candidate) return effectiveNavigation || null;\n const helpers = navigationHelpers && navigationHelpers.buildNavigationForFile ? navigationHelpers : 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 = ariaLabel || (labelSource ? `${labelSource} navigation` : \"Section navigation\");\n const combinedClassName = [\"canopy-sub-navigation\", className].filter(Boolean).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 className={combinedClassName} style={inlineStyle} aria-label={navLabel}>\n {finalHeading ? (\n <div className=\"canopy-sub-navigation__heading\">{finalHeading}</div>\n ) : null}\n <ul className=\"canopy-sub-navigation__list\" role=\"list\">\n {renderNodes([rootNode], rootNode.slug || \"root\")}\n </ul>\n </nav>\n );\n}\n", "import React from \"react\";\nimport navigationHelpers from \"../../../lib/components/navigation.js\";\nimport SubNavigation from \"./SubNavigation.jsx\";\nimport ContentNavigation from \"./ContentNavigation.jsx\";\n\nfunction 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 =\n 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\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\nfunction 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) nav.classList.toggle('canopy-content-navigation--collapsed', isCollapsed);\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 toggle.textContent = isCollapsed ? showLabel : hideLabel;\n toggle.setAttribute('aria-expanded', isCollapsed ? 'false' : 'true');\n toggle.setAttribute('aria-label', isCollapsed ? showFull : hideFull);\n toggle.setAttribute('title', isCollapsed ? showFull : hideFull);\n }\n }\n\n ready(function () {\n var roots = Array.prototype.slice.call(\n document.querySelectorAll('[data-canopy-content-nav-root]')\n );\n if (!roots.length) return;\n var stored = getStored();\n var collapsed = true;\n 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 roots.forEach(function (root) {\n applyState(root, collapsed);\n });\n setStored(collapsed ? '1' : '0');\n }\n\n sync(collapsed);\n\n roots.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\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 =\n navigationHelpers && typeof navigationHelpers.getPageContext === \"function\"\n ? navigationHelpers.getPageContext()\n : 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 />\n </aside>\n <ContentNavigationScript />\n </>\n ) : null}\n </div>\n );\n}\n", "import React from 'react';\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\nexport default function ContentNavigation({\n items = [],\n className = '',\n style = {},\n heading,\n headingId,\n pageTitle,\n ariaLabel,\n}) {\n const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n const savedDepthsRef = React.useRef(null);\n\n if ((!items || !items.length) && !headingId) return null;\n\n const combinedClassName = [\n 'canopy-sub-navigation canopy-content-navigation',\n 'canopy-content-navigation--collapsed',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const effectiveHeading = heading || pageTitle || null;\n const navLabel = ariaLabel || (effectiveHeading ? `${effectiveHeading} navigation` : 'Section navigation');\n\n const getSavedDepth = React.useCallback(\n (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 );\n\n const headingEntries = React.useMemo(() => {\n const entries = [];\n const seen = new Set();\n if (headingId) {\n const topId = String(headingId);\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(items);\n return entries;\n }, [headingId, items, getSavedDepth]);\n\n const fallbackId = headingEntries.length ? headingEntries[0].id : headingId || null;\n const [activeId, setActiveId] = React.useState(fallbackId);\n const activeIdRef = React.useRef(activeId);\n React.useEffect(() => {\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 let nextId = elements[0].id;\n for (const { id, element } of elements) {\n const rect = element.getBoundingClientRect();\n if (rect.top - offset <= 0) {\n nextId = id;\n } else {\n break;\n }\n }\n if (nextId && nextId !== activeIdRef.current) {\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 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') 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 = targetId && targetId !== 'top'\n ? targetId\n : headingEntries[0]?.id || headingId || 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, headingId, isBrowser]\n );\n\n const renderNodes = React.useCallback(\n (nodes) => {\n if (!nodes || !nodes.length) return null;\n return nodes.map((node) => {\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 idx = depthIndex(depth);\n const isActive = id && activeId === id;\n const childNodes = depth < MAX_HEADING_DEPTH ? renderNodes(node.children) : null;\n return (\n <li key={id || node.title} className=\"canopy-sub-navigation__item\" data-depth={idx}>\n <a\n className={`canopy-sub-navigation__link depth-${idx}${isActive ? ' is-active' : ''}`}\n href={id ? `#${id}` : '#'}\n onClick={(event) => handleAnchorClick(event, id || null)}\n aria-current={isActive ? 'location' : undefined}\n >\n {node.title}\n </a>\n {childNodes ? (\n <ul\n className=\"canopy-sub-navigation__list canopy-sub-navigation__list--nested\"\n role=\"list\"\n >\n {childNodes}\n </ul>\n ) : null}\n </li>\n );\n });\n },\n [handleAnchorClick, activeId, getSavedDepth]\n );\n\n const nestedItems = React.useMemo(() => renderNodes(items), [items, renderNodes]);\n\n const topLink = headingId\n ? (\n <li className=\"canopy-sub-navigation__item\" data-depth={0}>\n <a\n className={`canopy-sub-navigation__link depth-0${activeId === headingId ? ' is-active' : ''}`}\n href={`#${headingId}`}\n onClick={(event) => handleAnchorClick(event, headingId, { scrollToTop: true })}\n aria-current={activeId === headingId ? 'location' : undefined}\n >\n {effectiveHeading || pageTitle || headingId}\n </a>\n {nestedItems ? (\n <ul\n className=\"canopy-sub-navigation__list canopy-sub-navigation__list--nested\"\n role=\"list\"\n >\n {nestedItems}\n </ul>\n ) : null}\n </li>\n )\n : null;\n\n return (\n <nav\n className={combinedClassName}\n style={style}\n aria-label={navLabel}\n data-canopy-content-nav=\"true\"\n >\n <button\n type=\"button\"\n className=\"canopy-content-navigation__toggle\"\n aria-expanded=\"false\"\n aria-label=\"Show section navigation\"\n title=\"Show section navigation\"\n data-canopy-content-nav-toggle=\"true\"\n data-show-label=\"Show\"\n data-hide-label=\"Hide\"\n data-show-full-label=\"Show section navigation\"\n data-hide-full-label=\"Hide section navigation\"\n >\n Show\n </button>\n <ul className=\"canopy-sub-navigation__list\" role=\"list\">\n {topLink || nestedItems}\n </ul>\n </nav>\n );\n}\n", "import React from \"react\";\nimport SearchPanel from \"../search/SearchPanel.jsx\";\nimport CanopyBrand from \"./CanopyBrand.jsx\";\nimport CanopyModal from \"./CanopyModal.jsx\";\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 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\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 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 }\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 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('(min-width: 48rem)');\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 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\nexport default function CanopyHeader(props = {}) {\n const {\n navigation: navLinksProp,\n searchLabel = \"Search\",\n searchHotkey = \"mod+k\",\n searchPlaceholder = \"Search\u2026\",\n brandHref = \"/\",\n title = \"Canopy IIIF\",\n logo: SiteLogo,\n } = props;\n\n const navLinks = ensureArray(navLinksProp);\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={title}\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={searchLabel}\n hotkey={searchHotkey}\n placeholder={searchPlaceholder}\n />\n </div>\n\n <nav\n className=\"canopy-nav-links canopy-header__desktop-nav\"\n aria-label=\"Primary navigation\"\n >\n {navLinks.map((link) => (\n <a key={link.href} href={link.href}>\n {link.label || link.href}\n </a>\n ))}\n </nav>\n\n <div className=\"canopy-header__actions\">\n <button\n type=\"button\"\n className=\"canopy-header__icon-button canopy-header__search-trigger\"\n aria-label=\"Open search\"\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=\"Open navigation\"\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={title}\n logo={SiteLogo}\n href={brandHref}\n closeLabel=\"Close navigation\"\n closeDataAttr=\"nav\"\n >\n <nav\n className=\"canopy-nav-links canopy-modal__nav\"\n aria-label=\"Primary navigation\"\n >\n {navLinks.map((link) => (\n <a key={link.href} href={link.href}>\n {link.label || link.href}\n </a>\n ))}\n </nav>\n </CanopyModal>\n\n <CanopyModal\n id=\"canopy-modal-search\"\n variant=\"search\"\n labelledBy=\"canopy-modal-search-label\"\n label={title}\n logo={SiteLogo}\n href={brandHref}\n closeLabel=\"Close search\"\n closeDataAttr=\"search\"\n bodyClassName=\"canopy-modal__body--search\"\n >\n <SearchPanel\n label={searchLabel}\n hotkey={searchHotkey}\n placeholder={searchPlaceholder}\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';\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 = 'Search\u2026',\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 = 'Search',\n label,\n searchPath = '/search',\n } = props || {};\n\n const text = typeof label === 'string' && label.trim() ? label.trim() : buttonLabel;\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={buttonLabel} 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\" {...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\";\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 = \"Search\u2026\",\n buttonLabel = \"Search\",\n label,\n searchPath = \"/search\",\n inputId: inputIdProp,\n clearLabel = \"Clear search\",\n } = props || {};\n\n const text =\n typeof label === \"string\" && label.trim() ? label.trim() : buttonLabel;\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 <input\n id={inputId}\n type=\"search\"\n name=\"q\"\n inputMode=\"search\"\n data-canopy-search-form-input\n placeholder={placeholder}\n className=\"canopy-search-form__input\"\n aria-label=\"Search\"\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={clearLabel}\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\", className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n data-canopy-search-form-panel\n className={classes || undefined}\n style={style}\n >\n <div id=\"cplist\" />\n </div>\n );\n}\n", "import React from 'react';\n\nexport default function CanopyBrand(props = {}) {\n const {\n labelId,\n label = 'Canopy IIIF',\n href = '/',\n className,\n Logo,\n } = props || {};\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}>{label}</span>\n </a>\n );\n}\n", "import React from 'react';\nimport CanopyBrand from './CanopyBrand.jsx';\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 = 'Close',\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 closeButtonProps = {\n type: 'button',\n className: 'canopy-modal__close',\n 'aria-label': closeLabel,\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\">{closeLabel}</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';\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 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 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, { useEffect, useRef, useState } from \"react\";\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 [inView, setInView] = useState(!lazy);\n const [imageLoaded, setImageLoaded] = useState(!lazy);\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 (typeof IntersectionObserver !== \"function\") {\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]);\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 ratio =\n Number.isFinite(Number(aspectRatio)) && Number(aspectRatio) > 0\n ? Number(aspectRatio)\n : Number.isFinite(w) && w > 0 && Number.isFinite(h) && h > 0\n ? w / h\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 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 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\";\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 = \"Referenced by\",\n emptyLabel = null,\n className = \"\",\n children,\n ...rest\n}) {\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 containerClass = [\"references\", className].filter(Boolean).join(\" \");\n\n const list = references.length ? references : null;\n\n const entries = list && list.length ? list : null;\n return (\n <dl className={containerClass} {...rest}>\n <div className=\"references__group\">\n <dt>{title}</dt>\n {entries\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 : emptyLabel\n ? (\n <dd className=\"references__empty\">\n {typeof emptyLabel === \"function\" ? emptyLabel() : emptyLabel}\n </dd>\n )\n : null}\n </div>\n </dl>\n );\n}\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 SearchPanelForm, { resolveSearchPath } from '../search/SearchPanelForm.jsx';\nimport SearchPanelTeaserResults from '../search/SearchPanelTeaserResults.jsx';\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 = 'Search\u2026',\n hotkey = 'mod+k',\n maxResults = 8,\n groupOrder = ['work', 'page'],\n button = true, // kept for backward compat; ignored by teaser form\n buttonLabel = 'Search',\n label,\n searchPath = '/search',\n } = props || {};\n\n const text = typeof label === 'string' && label.trim() ? label.trim() : buttonLabel;\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={buttonLabel} 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 {\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\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, ...rest }) {\n const items = ensureMetadata(metadata || (manifest && manifest.metadata));\n if (!items.length) return null;\n return <CloverMetadata metadata={items} {...rest} />;\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\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\n const handleCopy = React.useCallback(async () => {\n const text = rawCode;\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), 1500);\n } catch (_) {\n setCopied(false);\n }\n }, [rawCode]);\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.85rem\",\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-accent-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 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\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 {key: lineNumber, style},\n React.createElement(\"span\", {style: lineContentStyle}, displayLine)\n );\n });\n\n return React.createElement(\n \"div\",\n {style: containerStyle},\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 type: \"button\",\n onClick: handleCopy,\n style: {\n border: \"1px solid var(--color-accent-300, #bfdbfe)\",\n borderRadius: \"6px\",\n padding: \"0.2rem 0.55rem\",\n fontSize: \"0.7rem\",\n fontWeight: 500,\n background:\n \"color-mix(in srgb, var(--color-accent-100, #e0f2ff) 55%, #ffffff)\",\n color: \"var(--color-accent-700, #1d4ed8)\",\n cursor: \"pointer\",\n },\n },\n copied ? \"Copied\" : \"Copy\"\n )\n : null\n ),\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"],
5
+ "mappings": "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",
6
+ "names": ["React", "React", "useEffect", "useState", "React", "useEffect", "useState", "React", "useEffect", "useState", "React", "React", "React", "React", "item", "className", "React", "React", "helpers", "React", "navigationHelpers", "React", "renderNodes", "React", "navigationHelpers", "React", "React", "React", "React", "_", "React", "React", "React", "React", "React", "React", "React", "React", "React", "navigationHelpers", "React", "useEffect", "useState", "navigationHelpers", "React", "React", "navigationHelpers", "React", "React", "React", "React", "React", "React", "React", "React"]
7
7
  }