@unterberg/nivel 0.2.40 → 0.2.41
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.
|
@@ -270,9 +270,11 @@ var AsideButtons_default = AsideButtons;
|
|
|
270
270
|
// src/runtime/client/components/Navbar/DocsNavbar.tsx
|
|
271
271
|
import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
272
272
|
var StyledNav = cm.nav`
|
|
273
|
-
gap-4
|
|
274
|
-
flex-1 pl-10 items-center justify-end lg:justify-start
|
|
273
|
+
gap-4 flex-1
|
|
275
274
|
hidden lg:flex
|
|
275
|
+
pl-6 xl:pl-12
|
|
276
|
+
items-center
|
|
277
|
+
justify-end lg:justify-start
|
|
276
278
|
`;
|
|
277
279
|
var StyledNavList = cm.ul`
|
|
278
280
|
inline-flex items-center gap-2 font-semibold
|
|
@@ -1558,6 +1560,17 @@ var HeadingLinkCopy = () => {
|
|
|
1558
1560
|
import { cmMerge as cmMerge7 } from "@classmatejs/react";
|
|
1559
1561
|
import { memo as memo3, useEffect as useEffect6, useRef as useRef3 } from "react";
|
|
1560
1562
|
import { usePageContext as usePageContext4 } from "vike-react/usePageContext";
|
|
1563
|
+
|
|
1564
|
+
// src/runtime/client/components/StickyContent.tsx
|
|
1565
|
+
import cm5 from "@classmatejs/react";
|
|
1566
|
+
var StickyContent = cm5.div`
|
|
1567
|
+
relative
|
|
1568
|
+
h-[calc(100svh-14*var(--spacing))]
|
|
1569
|
+
overflow-y-auto overflow-x-hidden
|
|
1570
|
+
`;
|
|
1571
|
+
var StickyContent_default = StickyContent;
|
|
1572
|
+
|
|
1573
|
+
// src/runtime/client/components/Sidebar.tsx
|
|
1561
1574
|
import { Fragment as Fragment5, jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1562
1575
|
var useAutoOpenDetails = (nodeId, isOpenByDefault, hasActiveDescendant) => {
|
|
1563
1576
|
const storedOpen = useDocsSidebarStore((state) => state.openNodes[nodeId]);
|
|
@@ -1711,32 +1724,37 @@ var Sidebar = memo3(
|
|
|
1711
1724
|
const docs = useDocsGlobalContext();
|
|
1712
1725
|
const activeSectionId = activeSectionIdProp || getActiveSectionByPathname(docs, currentHref)?.id || "";
|
|
1713
1726
|
const { sidebarSections } = docs;
|
|
1714
|
-
return /* @__PURE__ */ jsx18("aside", { className: "hidden basis-
|
|
1727
|
+
return /* @__PURE__ */ jsx18("aside", { className: "hidden basis-72 shrink-0 lg:block", children: /* @__PURE__ */ jsxs15("div", { className: "-ml-3 sticky top-14", children: [
|
|
1715
1728
|
/* @__PURE__ */ jsx18("div", { className: "absolute h-full w-px right-0 top-0 bg-linear-to-t to-base-muted-light via-base-muted-light pointer-events-none z-1" }),
|
|
1716
|
-
/* @__PURE__ */ jsx18(
|
|
1717
|
-
|
|
1729
|
+
/* @__PURE__ */ jsx18(StickyContent_default, { ref: scrollContainerRef, className: "pr-4 relative z-10", children: /* @__PURE__ */ jsx18("ul", { className: cmMerge7("menu p-0 m-0 w-full px-0 pt-3 li:last-child:border-0"), children: sidebarSections.map((section) => /* @__PURE__ */ jsx18(
|
|
1730
|
+
SidebarSectionGroup,
|
|
1718
1731
|
{
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
currentHref,
|
|
1726
|
-
activeSectionId
|
|
1727
|
-
},
|
|
1728
|
-
section.id
|
|
1729
|
-
)) })
|
|
1730
|
-
}
|
|
1731
|
-
)
|
|
1732
|
+
section,
|
|
1733
|
+
currentHref,
|
|
1734
|
+
activeSectionId
|
|
1735
|
+
},
|
|
1736
|
+
section.id
|
|
1737
|
+
)) }) })
|
|
1732
1738
|
] }) });
|
|
1733
1739
|
}
|
|
1734
1740
|
);
|
|
1735
1741
|
|
|
1736
1742
|
// src/runtime/client/components/TableOfContents.tsx
|
|
1737
|
-
import
|
|
1743
|
+
import cm6, { cmMerge as cmMerge8 } from "@classmatejs/react";
|
|
1738
1744
|
import { Flame, TableOfContentsIcon } from "lucide-react";
|
|
1739
1745
|
import { Fragment as Fragment6, jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1746
|
+
var getPadLeft = (depth) => {
|
|
1747
|
+
switch (depth) {
|
|
1748
|
+
case 1:
|
|
1749
|
+
return "pl-3";
|
|
1750
|
+
case 2:
|
|
1751
|
+
return "pl-3";
|
|
1752
|
+
case 3:
|
|
1753
|
+
return "pl-5";
|
|
1754
|
+
case 4:
|
|
1755
|
+
return "pl-7";
|
|
1756
|
+
}
|
|
1757
|
+
};
|
|
1740
1758
|
var TableOfContents = ({
|
|
1741
1759
|
headings: headingsProp = [],
|
|
1742
1760
|
tableOfContents: tableOfContentsProp = false,
|
|
@@ -1746,26 +1764,28 @@ var TableOfContents = ({
|
|
|
1746
1764
|
const { partners } = useDocsGlobalContext();
|
|
1747
1765
|
const effectiveHeadings = headingsProp;
|
|
1748
1766
|
const effectiveTableOfContents = tableOfContentsProp;
|
|
1749
|
-
return /* @__PURE__ */ jsx19("aside", { className: cmMerge8(effectiveTableOfContents ? "w-
|
|
1767
|
+
return /* @__PURE__ */ jsx19("aside", { className: cmMerge8(effectiveTableOfContents ? "w-58" : "w-32", "hidden shrink-0 xl:block"), children: /* @__PURE__ */ jsx19("div", { className: "sticky top-14", children: /* @__PURE__ */ jsxs16(StickyContent_default, { className: "pt-10 pb-8", children: [
|
|
1750
1768
|
effectiveTableOfContents ? effectiveHeadings.length > 0 && /* @__PURE__ */ jsxs16(Fragment6, { children: [
|
|
1751
1769
|
/* @__PURE__ */ jsxs16("p", { className: "mb-4 flex items-center gap-2 text-xs font-semibold uppercase tracking-widest text-base-muted", children: [
|
|
1752
1770
|
/* @__PURE__ */ jsx19(TableOfContentsIcon, { className: "size-3" }),
|
|
1753
1771
|
"On this page"
|
|
1754
1772
|
] }),
|
|
1755
|
-
/* @__PURE__ */ jsx19("nav", { "aria-label": "On this page", className: "mb-12", children: /* @__PURE__ */ jsx19("ul", { children: effectiveHeadings.map((heading) =>
|
|
1756
|
-
"
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1773
|
+
/* @__PURE__ */ jsx19("nav", { "aria-label": "On this page", className: "mb-12", children: /* @__PURE__ */ jsx19("ul", { children: effectiveHeadings.map((heading) => {
|
|
1774
|
+
return /* @__PURE__ */ jsx19("li", { children: /* @__PURE__ */ jsx19(
|
|
1775
|
+
"a",
|
|
1776
|
+
{
|
|
1777
|
+
href: `#${heading.id}`,
|
|
1778
|
+
"aria-current": activeHeadingId === heading.id ? "location" : void 0,
|
|
1779
|
+
onClick: () => setActiveHeadingId(heading.id),
|
|
1780
|
+
className: cmMerge8(
|
|
1781
|
+
"cursor-pointer block border-l-2 border-base-muted-light py-1.5 text-base-muted hover:border-primary-muted hover:text-base-content text-xs",
|
|
1782
|
+
getPadLeft(heading.depth),
|
|
1783
|
+
activeHeadingId === heading.id ? "border-primary text-base-content" : ""
|
|
1784
|
+
),
|
|
1785
|
+
children: heading.title
|
|
1786
|
+
}
|
|
1787
|
+
) }, heading.id);
|
|
1788
|
+
}) }) })
|
|
1769
1789
|
] }) : null,
|
|
1770
1790
|
/* @__PURE__ */ jsx19(Adbar, { partners })
|
|
1771
1791
|
] }) }) });
|
|
@@ -1802,7 +1822,7 @@ var PartnerLogo = ({
|
|
|
1802
1822
|
partner.logoDark ? /* @__PURE__ */ jsx19(Image, { src: partner.logoDark, width: 200, height: 200, alt: partner.logoAlt, className: "hidden dark:block" }) : null
|
|
1803
1823
|
] });
|
|
1804
1824
|
};
|
|
1805
|
-
var AdbarItem =
|
|
1825
|
+
var AdbarItem = cm6.li`
|
|
1806
1826
|
list-none
|
|
1807
1827
|
px-5
|
|
1808
1828
|
py-5
|
|
@@ -1813,21 +1833,21 @@ var AdbarItem = cm5.li`
|
|
|
1813
1833
|
justify-center
|
|
1814
1834
|
rounded-field
|
|
1815
1835
|
`;
|
|
1816
|
-
var AdbarLink =
|
|
1836
|
+
var AdbarLink = cm6.a`
|
|
1817
1837
|
block
|
|
1818
1838
|
w-full
|
|
1819
1839
|
transition-opacity
|
|
1820
1840
|
hover:opacity-100
|
|
1821
1841
|
focus-visible:opacity-100
|
|
1822
1842
|
`;
|
|
1823
|
-
var Image =
|
|
1843
|
+
var Image = cm6.img`
|
|
1824
1844
|
mx-auto
|
|
1825
1845
|
w-24
|
|
1826
1846
|
h-auto
|
|
1827
1847
|
`;
|
|
1828
1848
|
|
|
1829
1849
|
// src/runtime/client/components/TableOfContentsMobile.tsx
|
|
1830
|
-
import
|
|
1850
|
+
import cm7 from "@classmatejs/react";
|
|
1831
1851
|
import { TableOfContents as TableOfContents2 } from "lucide-react";
|
|
1832
1852
|
import { useId } from "react";
|
|
1833
1853
|
|
|
@@ -1929,7 +1949,7 @@ var TableOfContentsMobile = ({
|
|
|
1929
1949
|
] });
|
|
1930
1950
|
};
|
|
1931
1951
|
var TableOfContentsMobile_default = TableOfContentsMobile;
|
|
1932
|
-
var StyledTOC =
|
|
1952
|
+
var StyledTOC = cm7.div`
|
|
1933
1953
|
block xl:hidden
|
|
1934
1954
|
fixed
|
|
1935
1955
|
bg-base-100 border-b-base-muted-light
|
|
@@ -1938,7 +1958,7 @@ var StyledTOC = cm6.div`
|
|
|
1938
1958
|
lg:w-[calc(100svw-80*var(--spacing))]
|
|
1939
1959
|
lg:left-80
|
|
1940
1960
|
`;
|
|
1941
|
-
var StyledTOCInner =
|
|
1961
|
+
var StyledTOCInner = cm7.div`
|
|
1942
1962
|
absolute inset-0 flex justify-between items-center
|
|
1943
1963
|
pr-4
|
|
1944
1964
|
px-4 lg:pl-14
|
|
@@ -2099,7 +2119,7 @@ var DocsLayout = ({ children }) => {
|
|
|
2099
2119
|
return /* @__PURE__ */ jsxs19(Fragment8, { children: [
|
|
2100
2120
|
/* @__PURE__ */ jsx22(HeadingLinkCopy, {}),
|
|
2101
2121
|
/* @__PURE__ */ jsx22("div", { className: "absolute top-0 left-0 h-[60svh] w-full bg-radial-[at_65%_-85%] from-primary-muted-light/40 to-65% dark:from-primary-muted-light/60" }),
|
|
2102
|
-
/* @__PURE__ */ jsx22(LayoutComponent, { children: /* @__PURE__ */ jsxs19("div", { className: "lg:flex gap-14", children: [
|
|
2122
|
+
/* @__PURE__ */ jsx22(LayoutComponent, { children: /* @__PURE__ */ jsxs19("div", { className: "lg:flex gap-14 xl:gap-20", children: [
|
|
2103
2123
|
/* @__PURE__ */ jsx22(Sidebar, { currentHref: data.page.href, activeSectionId: data.page.sectionId }),
|
|
2104
2124
|
/* @__PURE__ */ jsxs19("main", { className: "min-w-0 flex-1 basis-auto shrink", children: [
|
|
2105
2125
|
/* @__PURE__ */ jsx22(
|
|
@@ -2155,4 +2175,4 @@ export {
|
|
|
2155
2175
|
DocsLayout,
|
|
2156
2176
|
DocsPage
|
|
2157
2177
|
};
|
|
2158
|
-
//# sourceMappingURL=chunk-
|
|
2178
|
+
//# sourceMappingURL=chunk-JE4QRAKX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/runtime/client/AppLayout.tsx","../src/runtime/client/components/Navbar/index.tsx","../src/runtime/client/components/Search.tsx","../src/runtime/client/components/Navbar/DocsNavbar.tsx","../src/runtime/client/components/Brand.tsx","../src/runtime/client/components/SocialLinks.tsx","../src/runtime/client/components/ThemeSwitch.tsx","../src/runtime/client/store/settings-store.ts","../src/runtime/client/store/settings-storage.ts","../src/runtime/client/theme.ts","../src/runtime/client/components/Navbar/AsideButtons.tsx","../src/runtime/client/components/Navbar/LandingPageNavbar.tsx","../src/runtime/client/components/Navbar/MegaMenu.tsx","../src/runtime/client/components/docsNavigation.ts","../src/runtime/client/components/Navbar/useMegaMenu.ts","../src/runtime/client/components/UserSettingsSync.tsx","../src/runtime/client/getMdxRuntimeValue.tsx","../src/runtime/client/components/MetaHead/FaviconLinks.tsx","../src/runtime/client/components/MetaHead/FontLinks.tsx","../src/runtime/client/components/MetaHead/ThemeBootstrap.tsx","../src/runtime/client/components/MetaHead/index.tsx","../src/runtime/client/components/ProseContainer.tsx","../src/runtime/client/DocsLayout.tsx","../src/runtime/client/components/DocsPagination.tsx","../src/runtime/client/components/DocsBreadcrumbs.tsx","../src/runtime/client/components/Footer.tsx","../src/runtime/client/components/HeadingLinkCopy.tsx","../src/runtime/client/components/Sidebar.tsx","../src/runtime/client/components/StickyContent.tsx","../src/runtime/client/components/TableOfContents.tsx","../src/runtime/client/components/TableOfContentsMobile.tsx","../src/runtime/client/components/BreadcrumbSidebarTrigger.tsx","../src/runtime/client/components/useTableOfContentsState.ts","../src/runtime/client/DocsPage.tsx"],"sourcesContent":["import { cmMerge } from '@classmatejs/react'\nimport type { ReactNode } from 'react'\nimport { usePageContext } from 'vike-react/usePageContext'\nimport { UniversalMdxProvider } from '../../mdx/components/UniversalMdxProvider.js'\nimport NavbarNew from './components/Navbar/index.js'\nimport { UserSettingsSync } from './components/UserSettingsSync.js'\nimport { DocsGlobalContextProvider, type DocsPageContext, getDocsFromGlobalContext } from './docsGlobalContext.js'\nimport { getMdxRuntimeValue } from './getMdxRuntimeValue.js'\nimport { createDocsRuntimeStore, DocsRuntimeStoreProvider } from './store/runtime-store.js'\n\ninterface AppLayoutProps {\n children: ReactNode\n header?: ReactNode\n}\n\nconst runtimeStore = createDocsRuntimeStore()\n\nexport const AppLayout = ({ children, header }: AppLayoutProps) => {\n const { urlPathname } = usePageContext()\n const pageContext = usePageContext()\n\n const docs = getDocsFromGlobalContext(pageContext as DocsPageContext)\n const isLandingPage = urlPathname === '/'\n\n return (\n <DocsRuntimeStoreProvider store={runtimeStore}>\n <DocsGlobalContextProvider docs={docs}>\n <UniversalMdxProvider\n value={getMdxRuntimeValue({\n docs,\n currentPathname: urlPathname,\n })}\n >\n <UserSettingsSync theme={docs.theme} />\n <div className=\"min-h-screen bg-base-100 text-base-content\">\n {header ?? <NavbarNew />}\n <div className={cmMerge(isLandingPage ? '' : 'pt-14')}>{children}</div>\n </div>\n </UniversalMdxProvider>\n </DocsGlobalContextProvider>\n </DocsRuntimeStoreProvider>\n )\n}\n","import cm from '@classmatejs/react'\nimport { usePageContext } from 'vike-react/usePageContext'\nimport { getActiveSectionByPathname } from '../../../../docs/runtime'\nimport { useDocsGlobalContext } from '../../docsGlobalContext'\nimport { useDocsSearchActions } from '../../store/runtime-store'\nimport { LayoutComponent } from '../LayoutComponent'\nimport { Search } from '../Search'\nimport DocsNavbar from './DocsNavbar'\nimport LandingPageNavbar from './LandingPageNavbar'\nimport { MegaMenu } from './MegaMenu'\nimport useMegaMenu from './useMegaMenu'\n\nconst NavbarNew = () => {\n const docs = useDocsGlobalContext()\n const { urlPathname, urlParsed } = usePageContext()\n const isLandingPage = urlParsed.pathname === '/'\n const sections = docs.sidebarSections\n const activeSection = getActiveSectionByPathname(docs, urlPathname)\n const { toggle: toggleSearch } = useDocsSearchActions()\n\n const { closeMegaMenu, hoveredSectionId, isMegaMenuOpen, openMegaMenu, scheduleMegaMenuOpen, scheduleMegaMenuClose } =\n useMegaMenu({\n activeSectionId: activeSection?.id,\n sections,\n })\n\n return (\n <StyledNavbar $border={isLandingPage}>\n <LayoutComponent>\n {isLandingPage ? (\n <LandingPageNavbar\n openMegaMenu={openMegaMenu}\n scheduleMegaMenuOpen={scheduleMegaMenuOpen}\n scheduleMegaMenuClose={scheduleMegaMenuClose}\n toggleSearch={toggleSearch}\n closeMegaMenu={closeMegaMenu}\n hoveredSectionId={hoveredSectionId}\n isMegaMenuOpen={isMegaMenuOpen}\n />\n ) : (\n <DocsNavbar\n openMegaMenu={openMegaMenu}\n scheduleMegaMenuOpen={scheduleMegaMenuOpen}\n scheduleMegaMenuClose={scheduleMegaMenuClose}\n toggleSearch={toggleSearch}\n closeMegaMenu={closeMegaMenu}\n activeSection={activeSection}\n hoveredSectionId={hoveredSectionId}\n isMegaMenuOpen={isMegaMenuOpen}\n />\n )}\n </LayoutComponent>\n <Search />\n <MegaMenu\n sections={sections}\n activeSectionId={activeSection?.id}\n hoveredSectionId={hoveredSectionId}\n isActive={isMegaMenuOpen}\n onOpen={openMegaMenu}\n onClose={scheduleMegaMenuClose}\n isLandingPage={isLandingPage}\n />\n </StyledNavbar>\n )\n}\n\nexport default NavbarNew\n\nconst StyledNavbar = cm.header<{ $border: boolean }>`\n top-0 left-0 z-20 w-full bg-base-100\n pt-0 h-14\n ${({ $border }) => ($border ? 'relative' : 'fixed')}\n`\n","import { useEffect, useState } from 'react'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\nimport { useDocsSearchStore } from '../store/runtime-store.js'\n\ntype SearchModalModule = typeof import('./SearchModal.js')\n\nlet searchModalModulePromise: Promise<SearchModalModule> | null = null\n\nconst loadSearchModalModule = () => {\n searchModalModulePromise ??= import('./SearchModal.js')\n return searchModalModulePromise\n}\n\nexport const Search = () => {\n const docs = useDocsGlobalContext()\n const isOpen = useDocsSearchStore((state) => state.isOpen)\n const [searchModalModule, setSearchModalModule] = useState<SearchModalModule | null>(null)\n\n useEffect(() => {\n if (!docs.algolia || !isOpen || searchModalModule !== null) {\n return\n }\n\n let isMounted = true\n\n loadSearchModalModule().then((module) => {\n if (isMounted) {\n setSearchModalModule(module)\n }\n })\n\n return () => {\n isMounted = false\n }\n }, [docs.algolia, isOpen, searchModalModule])\n\n if (!docs.algolia || searchModalModule === null) {\n return null\n }\n\n const { SearchModal } = searchModalModule\n\n return <SearchModal />\n}\n","import cm, { cmMerge } from '@classmatejs/react'\nimport { ChevronDown, Menu, TextSearch } from 'lucide-react'\nimport { useCallback } from 'react'\nimport { getDocsIconMapKey } from '../../../../docs/iconKeys.js'\nimport type { ResolvedDocsSection } from '../../../../docs/types'\nimport { withSiteBaseUrl } from '../../../../shared/assets'\nimport { renderInlineMarkdown } from '../../../../shared/renderInlineMarkdown'\nimport { useDocsGlobalContext } from '../../docsGlobalContext'\nimport { Brand } from '../Brand'\nimport AsideButtons from './AsideButtons'\n\nconst StyledNav = cm.nav`\n gap-4 flex-1 \n hidden lg:flex\n pl-6 xl:pl-12\n items-center \n justify-end lg:justify-start \n`\n\nconst StyledNavList = cm.ul`\n inline-flex items-center gap-2 font-semibold \n`\n\ninterface DocsNavbarProps {\n scheduleMegaMenuClose?: () => void\n scheduleMegaMenuOpen: (id?: string) => void\n openMegaMenu: (id?: string) => void\n toggleSearch: () => void\n closeMegaMenu?: () => void\n activeSection?: ResolvedDocsSection | null\n hoveredSectionId?: string\n isMegaMenuOpen: boolean\n}\n\nconst DocsNavbar = ({\n closeMegaMenu,\n openMegaMenu,\n scheduleMegaMenuOpen,\n scheduleMegaMenuClose,\n toggleSearch,\n activeSection,\n hoveredSectionId,\n isMegaMenuOpen,\n}: DocsNavbarProps) => {\n const docs = useDocsGlobalContext()\n\n const handleClick = useCallback(() => {\n alert('TODO: Open mobile menu')\n }, [])\n\n return (\n <div className=\"flex flex-1 gap-4 pt-3 justify-between\">\n <div className=\"lg:min-w-76 min-w-none\">\n <Brand brand={docs.brand} />\n </div>\n <StyledNav aria-label=\"Primary\">\n <StyledNavList className=\"\">\n {docs.navbarItems.map((item) => {\n const ItemIcon = docs.docsIconMap[getDocsIconMapKey('section', item.id)]\n const isMegaMenuItemActive = isMegaMenuOpen && hoveredSectionId === item.id\n\n return (\n <li key={item.id}>\n <a\n href={withSiteBaseUrl(item.href)}\n className={'block'}\n onPointerEnter={() => scheduleMegaMenuOpen(item.id)}\n onPointerLeave={scheduleMegaMenuClose}\n onFocus={() => openMegaMenu(item.id)}\n onBlur={scheduleMegaMenuClose}\n onClick={closeMegaMenu}\n >\n <span\n className={cmMerge(\n 'btn text-base btn-sm md:min-w-30 px-2 whitespace-nowrap tracking-tight',\n activeSection?.id === item.id ? 'btn-primary btn-soft' : 'btn-ghost ',\n )}\n >\n {ItemIcon ? <ItemIcon className=\"size-4 shrink-0\" aria-hidden=\"true\" /> : null}\n {renderInlineMarkdown(item.title)}\n <ChevronDown\n className={cmMerge(\n 'size-4 shrink-0 transition-transform duration-200',\n isMegaMenuItemActive ? 'rotate-180' : 'rotate-0',\n )}\n />\n </span>\n </a>\n </li>\n )\n })}\n {docs.algolia ? (\n <li>\n <button\n type=\"button\"\n onClick={toggleSearch}\n className=\"btn btn-ghost btn-sm text-base md:min-w-30 px-2 whitespace-nowrap tracking-tight\"\n >\n Search\n <TextSearch className=\"size-4\" />\n </button>\n </li>\n ) : null}\n </StyledNavList>\n </StyledNav>\n <button type=\"button\" className=\"block lg:hidden\" aria-label=\"Open navigation menu\" onClick={handleClick}>\n <Menu className=\"w-6 h-6\" />\n </button>\n <div className=\"lg:min-w-40 hidden lg:block\">\n <AsideButtons />\n </div>\n </div>\n )\n}\n\nexport default DocsNavbar\n","import { cmMerge } from '@classmatejs/react'\nimport type { ResolvedDocsBrandConfig } from '../../../docs/types.js'\n\ninterface BrandProps {\n brand: ResolvedDocsBrandConfig\n noText?: boolean\n}\n\nexport const Brand = ({ brand, noText = false }: BrandProps) => {\n const defaultLogo = brand.logoLight ?? brand.logoDark\n\n return (\n <a\n href={brand.href}\n className=\"flex items-center gap-3 text-base-content h-full no-underline\"\n aria-label={noText ? `${brand.text} homepage` : undefined}\n >\n {defaultLogo && (\n <span className=\"relative block h-8 w-8 shrink-0\">\n {brand.logoLight && (\n <img\n src={brand.logoLight}\n alt={brand.logoAlt}\n className={cmMerge('h-8 w-8 object-contain', brand.logoDark ? 'block dark:hidden' : 'block')}\n />\n )}\n {brand.logoDark && (\n <img\n src={brand.logoDark}\n alt={brand.logoAlt}\n className={cmMerge('h-8 w-8 object-contain', brand.logoLight ? 'hidden dark:block' : 'block')}\n />\n )}\n </span>\n )}\n {!noText && <span className=\"text-xl font-semibold tracking-tight\">{brand.text}</span>}\n </a>\n )\n}\n","import { memo } from 'react'\nimport { nivelAssetUrl } from '../../../shared/assets.js'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\n\nconst iconAssets = {\n github: nivelAssetUrl('brands/github.svg'),\n discord: nivelAssetUrl(`brands/discord.svg`),\n x: nivelAssetUrl(`brands/x.svg`),\n bluesky: nivelAssetUrl(`brands/bluesky.svg`),\n linkedin: nivelAssetUrl('brands/linkedin.svg'),\n}\n\ntype SocialPlatform = keyof typeof iconAssets\n\nconst SocialIconElement = ({ icon, href }: { icon: SocialPlatform; href: string }) => {\n const socialLabel = icon === 'x' ? 'X' : icon.charAt(0).toUpperCase() + icon.slice(1)\n\n return (\n <li className=\"m-0 p-0\">\n {/** biome-ignore lint/a11y/useAnchorContent: not now */}\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex h-8 w-8 items-center justify-center rounded-full border border-base-muted-light bg-base-200\"\n aria-label={`${socialLabel} profile`}\n title={socialLabel}\n >\n <img src={iconAssets[icon]} alt=\"\" aria-hidden=\"true\" className=\"h-3 w-auto opacity-75 dark:invert\" />\n </a>\n </li>\n )\n}\n\nconst SocialIcons = memo(() => {\n const docs = useDocsGlobalContext()\n const socialEntries = Object.entries(docs.social ?? {}).filter(\n (entry): entry is [SocialPlatform, string] =>\n entry[0] in iconAssets && typeof entry[1] === 'string' && entry[1].length > 0,\n )\n\n if (socialEntries.length === 0) {\n return null\n }\n\n return (\n <ul className=\"flex items-center gap-1\">\n {socialEntries.map(([platform, href]) => (\n <SocialIconElement key={platform} icon={platform} href={href} />\n ))}\n </ul>\n )\n})\n\nexport default SocialIcons\n","import { Moon, Sun } from 'lucide-react'\nimport type { DocsThemeConfig } from '../../../docs/types.js'\nimport { useDocsUserSettingsStore } from '../store/settings-store.js'\nimport { resolveThemePreference } from '../theme.js'\n\nexport const ThemeSwitch = ({ theme }: { theme: Required<DocsThemeConfig> }) => {\n const themePreference = useDocsUserSettingsStore((state) => state.themePreference)\n const setThemePreference = useDocsUserSettingsStore((state) => state.setThemePreference)\n const effectiveThemePreference = resolveThemePreference(themePreference, theme)\n\n return (\n <button\n type=\"button\"\n aria-label=\"Toggle theme\"\n onClick={() => setThemePreference(effectiveThemePreference === 'light' ? 'dark' : 'light')}\n className=\"relative flex h-8 w-8 cursor-pointer items-center justify-center rounded-full border border-base-muted-light bg-base-200\"\n >\n <Sun className=\"size-4 dark:hidden\" />\n <Moon className=\"hidden size-4 dark:block\" />\n </button>\n )\n}\n","import { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport type { UniversalMdxCodeBlockChoiceStore } from '../../../mdx/components/types.js'\nimport type { ThemePreference } from '../../../docs/types.js'\nimport { readLegacyCodeBlockChoice, USER_SETTINGS_STORAGE_KEY } from './settings-storage.js'\n\ntype DocsUserSettingsState = {\n codeBlockChoices: Record<string, string>\n themePreference: ThemePreference | null\n setCodeBlockChoice: (choiceGroupName: string, choice: string) => void\n setThemePreference: (themePreference: ThemePreference) => void\n}\n\nexport const useDocsUserSettingsStore = create<DocsUserSettingsState>()(\n persist(\n (set) => ({\n codeBlockChoices: {},\n themePreference: null,\n setCodeBlockChoice: (choiceGroupName, choice) =>\n set((state) => ({\n codeBlockChoices: {\n ...state.codeBlockChoices,\n [choiceGroupName]: choice,\n },\n })),\n setThemePreference: (themePreference) => set({ themePreference }),\n }),\n {\n name: USER_SETTINGS_STORAGE_KEY,\n storage: createJSONStorage(() => localStorage),\n partialize: ({ codeBlockChoices, themePreference }) => ({\n codeBlockChoices,\n themePreference,\n }),\n },\n ),\n)\n\nexport const docsCodeBlockChoiceStore: UniversalMdxCodeBlockChoiceStore = {\n subscribe: (listener) => useDocsUserSettingsStore.subscribe(listener),\n getChoice: (choiceGroupName) => useDocsUserSettingsStore.getState().codeBlockChoices[choiceGroupName] ?? null,\n setChoice: (choiceGroupName, choice) =>\n useDocsUserSettingsStore.getState().setCodeBlockChoice(choiceGroupName, choice),\n getLegacyChoice: readLegacyCodeBlockChoice,\n}\n","export const USER_SETTINGS_STORAGE_KEY = 'nivel-user-settings'\nconst LEGACY_CODE_BLOCK_CHOICE_STORAGE_KEY_PREFIX = 'vike-docpress:choice:'\n\nexport const readLegacyCodeBlockChoice = (choiceGroupName: string) => {\n if (typeof window === 'undefined') {\n return null\n }\n\n try {\n const value = window.localStorage.getItem(`${LEGACY_CODE_BLOCK_CHOICE_STORAGE_KEY_PREFIX}${choiceGroupName}`)\n return value || null\n } catch {\n return null\n }\n}\n","import type { DocsThemeConfig, ThemePreference } from '../../docs/types.js'\n\nexport const DEFAULT_THEME_PREFERENCE: ThemePreference = 'light'\nexport const DARK_THEME_MEDIA_QUERY = '(prefers-color-scheme: dark)'\n\nconst getDataTheme = (themePreference: ThemePreference, themeConfig: Required<DocsThemeConfig>) => {\n return themePreference === 'dark' ? themeConfig.dark : themeConfig.light\n}\n\nconst isThemePreference = (value: unknown): value is ThemePreference => {\n return value === 'light' || value === 'dark'\n}\n\nconst getSystemThemePreference = (fallbackThemePreference: ThemePreference): ThemePreference => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return fallbackThemePreference\n }\n\n return window.matchMedia(DARK_THEME_MEDIA_QUERY).matches ? 'dark' : 'light'\n}\n\nexport const resolveThemePreference = (\n themePreference: ThemePreference | null | undefined,\n themeConfig: Required<DocsThemeConfig>,\n) => {\n if (isThemePreference(themePreference)) {\n return themePreference\n }\n\n return getSystemThemePreference(themeConfig.defaultPreference)\n}\n\nexport const applyThemePreference = (\n themePreference: ThemePreference | null | undefined,\n themeConfig: Required<DocsThemeConfig>,\n) => {\n if (typeof document === 'undefined') {\n return\n }\n\n document.documentElement.setAttribute(\n 'data-theme',\n getDataTheme(resolveThemePreference(themePreference, themeConfig), themeConfig),\n )\n}\n","import { useDocsGlobalContext } from '../../docsGlobalContext'\nimport SocialIcons from '../SocialLinks'\nimport { ThemeSwitch } from '../ThemeSwitch'\n\nconst AsideButtons = () => {\n const docs = useDocsGlobalContext()\n\n return (\n <div className=\"flex-1 justify-end gap-2 flex\">\n <div className=\"hidden lg:block\">\n <SocialIcons />\n </div>\n <ThemeSwitch theme={docs.theme} />\n </div>\n )\n}\n\nexport default AsideButtons\n","import cm, { cmMerge } from '@classmatejs/react'\nimport { ChevronDown, Menu, TextSearch } from 'lucide-react'\nimport { useCallback } from 'react'\nimport { getDocsIconMapKey } from '../../../../docs/iconKeys.js'\nimport { withSiteBaseUrl } from '../../../../shared/assets'\nimport { renderInlineMarkdown } from '../../../../shared/renderInlineMarkdown'\nimport { useDocsGlobalContext } from '../../docsGlobalContext'\nimport { Brand } from '../Brand'\nimport AsideButtons from './AsideButtons'\n\nconst StyledNav = cm.nav`\n gap-4\n flex-1 items-center justify-center\n`\n\nconst StyledNavList = cm.ul`\n inline-flex items-center gap-2 font-semibold \n`\n\ninterface LandingPageNavbarProps {\n scheduleMegaMenuClose?: () => void\n scheduleMegaMenuOpen: (id?: string) => void\n openMegaMenu: (id?: string) => void\n toggleSearch: () => void\n closeMegaMenu?: () => void\n hoveredSectionId?: string\n isMegaMenuOpen: boolean\n}\n\nconst LandingPageNavbar = ({\n closeMegaMenu,\n openMegaMenu,\n scheduleMegaMenuOpen,\n scheduleMegaMenuClose,\n toggleSearch,\n hoveredSectionId,\n isMegaMenuOpen,\n}: LandingPageNavbarProps) => {\n const docs = useDocsGlobalContext()\n\n const handleClick = useCallback(() => {\n alert('TODO: Open mobile menu')\n }, [])\n\n return (\n <div className=\"flex flex-1 gap-4 pt-3 justify-between\">\n <div className=\"min-w-40\">\n <Brand brand={docs.brand} />\n </div>\n <StyledNav aria-label=\"Primary\" className=\"flex-1 flex hidden lg:flex\">\n <StyledNavList className=\"justify-end \">\n {docs.navbarItems.map((item) => {\n const ItemIcon = docs.docsIconMap[getDocsIconMapKey('section', item.id)]\n const isMegaMenuItemActive = isMegaMenuOpen && hoveredSectionId === item.id\n\n return (\n <li key={item.id}>\n <a\n href={withSiteBaseUrl(item.href)}\n className={'block'}\n onPointerEnter={() => scheduleMegaMenuOpen(item.id)}\n onPointerLeave={scheduleMegaMenuClose}\n onFocus={() => openMegaMenu(item.id)}\n onBlur={scheduleMegaMenuClose}\n onClick={closeMegaMenu}\n >\n <span\n className={cmMerge(\n 'btn btn-ghost text-base btn-sm lg:min-w-30 px-2 whitespace-nowrap tracking-tight',\n )}\n >\n {ItemIcon ? <ItemIcon className=\"size-4 shrink-0\" aria-hidden=\"true\" /> : null}\n {renderInlineMarkdown(item.title)}\n <ChevronDown\n className={cmMerge(\n 'size-4 shrink-0 transition-transform duration-200',\n isMegaMenuItemActive ? 'rotate-180' : 'rotate-0',\n )}\n />\n </span>\n </a>\n </li>\n )\n })}\n {docs.algolia ? (\n <li>\n <button\n type=\"button\"\n onClick={toggleSearch}\n className=\"btn btn-ghost btn-sm text-base lg:min-w-30 px-2 whitespace-nowrap tracking-tight\"\n >\n Search\n <TextSearch className=\"size-4\" />\n </button>\n </li>\n ) : null}\n </StyledNavList>\n </StyledNav>\n <div className=\"min-w-40 hidden lg:block\">\n <AsideButtons />\n </div>\n <button type=\"button\" className=\"block lg:hidden\" aria-label=\"Open navigation menu\" onClick={handleClick}>\n <Menu className=\"w-6 h-6\" />\n </button>\n </div>\n )\n}\n\nexport default LandingPageNavbar\n","import { cmMerge } from '@classmatejs/react'\nimport type { LucideIcon } from 'lucide-react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { usePageContext } from 'vike-react/usePageContext'\nimport { getDocsIconMapKey } from '../../../../docs/iconKeys.js'\nimport type {\n DocsIconMap,\n ResolvedDocsSection,\n ResolvedSidebarGroup,\n ResolvedSidebarNode,\n} from '../../../../docs/types.js'\nimport { withSiteBaseUrl } from '../../../../shared/assets.js'\nimport { renderInlineMarkdown } from '../../../../shared/renderInlineMarkdown.js'\nimport { useDocsGlobalContext } from '../../docsGlobalContext.js'\nimport { containsActiveHref, getGroupHref, getVisibleGroupItems, getVisibleNavItems } from '../docsNavigation.js'\nimport { LayoutComponent } from '../LayoutComponent.js'\n\nconst detailsTransitionDurationMs = 260\n\nconst findActiveItemId = (section: ResolvedDocsSection | undefined, currentHref: string): string | undefined => {\n if (!section) {\n return undefined\n }\n\n const findActiveNodeId = (items: ResolvedSidebarNode[]): string | undefined => {\n for (const item of items) {\n if (item.href === currentHref) {\n return item.id\n }\n\n if (item.kind === 'group') {\n const activeChildId = findActiveNodeId(item.items)\n\n if (activeChildId) {\n return activeChildId\n }\n }\n }\n\n return undefined\n }\n\n return findActiveNodeId(section.items)\n}\n\ninterface MegaMenuNodeLinkProps {\n title?: string\n href?: string\n icon?: LucideIcon\n isActive: boolean\n className?: string\n onClose: () => void\n}\n\nconst MegaMenuNodeLink = ({ title, href, icon: Icon, isActive, className, onClose }: MegaMenuNodeLinkProps) => {\n const content = (\n <span className=\"flex min-w-0 items-center gap-2\">\n {Icon ? <Icon className=\"size-4 shrink-0\" aria-hidden=\"true\" /> : null}\n <span className=\"min-w-0\">{title ? renderInlineMarkdown(title, { codeClassName: 'text-sm!' }) : null}</span>\n </span>\n )\n\n if (href) {\n return (\n <a\n className={cmMerge(\n 'flex min-w-0 items-center text-base-muted hover:text-base-content',\n isActive && 'text-primary! font-semibold',\n className,\n )}\n href={withSiteBaseUrl(href)}\n onClick={onClose}\n >\n {content}\n </a>\n )\n }\n\n return (\n <span\n className={cmMerge(\n 'flex min-w-0 items-center text-base-content',\n isActive && 'text-primary! font-semibold',\n className,\n )}\n >\n {content}\n </span>\n )\n}\n\ninterface MegaMenuNodeListProps {\n items: ResolvedSidebarNode[]\n activeItemId?: string\n currentHref: string\n docsIconMap: DocsIconMap\n onClose: () => void\n onContentHeightChange: (isOpening: boolean) => void\n openGroupId: string | null\n onOpenGroupChange: (groupId: string | null) => void\n depth?: number\n}\n\nconst MegaMenuNodeList = ({\n items,\n activeItemId,\n currentHref,\n docsIconMap,\n onClose,\n onContentHeightChange,\n openGroupId,\n onOpenGroupChange,\n depth = 0,\n}: MegaMenuNodeListProps) => {\n const visibleItems = getVisibleNavItems(items)\n\n if (visibleItems.length === 0) {\n return null\n }\n\n return (\n <ul className={cmMerge('menu menu-sm w-full p-0', depth > 0 && 'mt-1 pl-3')}>\n {visibleItems.map((item) => (\n <MegaMenuNode\n key={item.id}\n item={item}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n depth={depth}\n />\n ))}\n </ul>\n )\n}\n\ninterface MegaMenuNodeProps {\n item: ResolvedSidebarNode\n activeItemId?: string\n currentHref: string\n docsIconMap: DocsIconMap\n onClose: () => void\n onContentHeightChange: (isOpening: boolean) => void\n openGroupId: string | null\n onOpenGroupChange: (groupId: string | null) => void\n depth: number\n}\n\nconst MegaMenuNode = ({\n item,\n activeItemId,\n currentHref,\n docsIconMap,\n onClose,\n onContentHeightChange,\n openGroupId,\n onOpenGroupChange,\n depth,\n}: MegaMenuNodeProps) => {\n if (item.kind === 'page') {\n const PageIcon = docsIconMap[getDocsIconMapKey('page', item.id)]\n\n return (\n <li>\n <MegaMenuNodeLink\n title={item.navTitle || item.title}\n href={item.href}\n icon={PageIcon}\n isActive={activeItemId === item.id}\n className=\"rounded-field px-2 py-1.5 text-sm\"\n onClose={onClose}\n />\n </li>\n )\n }\n\n return (\n <MegaMenuGroup\n group={item}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n depth={depth}\n />\n )\n}\n\ninterface MegaMenuGroupProps {\n group: ResolvedSidebarGroup\n activeItemId?: string\n currentHref: string\n docsIconMap: DocsIconMap\n onClose: () => void\n onContentHeightChange: (isOpening: boolean) => void\n openGroupId: string | null\n onOpenGroupChange: (groupId: string | null) => void\n depth: number\n}\n\nconst MegaMenuGroup = ({\n group,\n activeItemId,\n currentHref,\n docsIconMap,\n onClose,\n onContentHeightChange,\n openGroupId,\n onOpenGroupChange,\n depth,\n}: MegaMenuGroupProps) => {\n const groupHref = getGroupHref(group)\n const visibleItems = getVisibleGroupItems(group)\n const GroupIcon = docsIconMap[getDocsIconMapKey('group', group.id)]\n const isActive = groupHref === currentHref || containsActiveHref(group.items, currentHref)\n const isCollapsible = group.collapsible !== undefined\n const isOpen = openGroupId === group.id\n\n if (!group.title) {\n return (\n <>\n {visibleItems.map((item) => (\n <MegaMenuNode\n key={item.id}\n item={item}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n depth={depth}\n />\n ))}\n </>\n )\n }\n\n const title = (\n <MegaMenuNodeLink\n title={group.title}\n href={groupHref ?? undefined}\n icon={GroupIcon}\n isActive={isActive}\n className={cmMerge(\n depth === 0\n ? cmMerge(!isCollapsible && 'mb-2', 'text-lg font-semibold tracking-tight')\n : cmMerge(!isCollapsible && 'rounded-field px-2 py-1.5', 'text-sm font-semibold'),\n )}\n onClose={onClose}\n />\n )\n const nestedItems =\n visibleItems.length > 0 ? (\n <MegaMenuNodeList\n items={visibleItems}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n depth={depth + 1}\n />\n ) : null\n\n if (isCollapsible) {\n return (\n <li>\n <details\n open={isOpen}\n onToggle={(event) => {\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (!event.nativeEvent.isTrusted) {\n return\n }\n\n const isOpening = event.currentTarget.open\n if (isOpening) {\n onOpenGroupChange(group.id)\n onContentHeightChange(true)\n return\n }\n\n if (openGroupId === group.id) {\n onOpenGroupChange(null)\n onContentHeightChange(false)\n }\n }}\n >\n <summary className={cmMerge('rounded-field flex min-h-0 items-center py-1.5', depth === 0 ? 'px-0' : 'px-2')}>\n {title}\n </summary>\n {nestedItems}\n </details>\n </li>\n )\n }\n\n return (\n <li>\n {title}\n {nestedItems}\n </li>\n )\n}\n\ninterface MegaMenuColumnProps {\n item: ResolvedSidebarNode\n activeItemId?: string\n currentHref: string\n docsIconMap: DocsIconMap\n onClose: () => void\n onContentHeightChange: (isOpening: boolean) => void\n openGroupId: string | null\n onOpenGroupChange: (groupId: string | null) => void\n}\n\nconst MegaMenuPageColumn = ({\n item,\n activeItemId,\n docsIconMap,\n onClose,\n}: MegaMenuColumnProps & { item: Extract<ResolvedSidebarNode, { kind: 'page' }> }) => {\n const PageIcon = docsIconMap[getDocsIconMapKey('page', item.id)]\n\n return (\n <li className=\"mb-6 flex-1 px-4 py-3\">\n <MegaMenuNodeLink\n title={item.navTitle || item.title}\n href={item.href}\n icon={PageIcon}\n isActive={activeItemId === item.id}\n className=\"text-lg font-semibold tracking-tight\"\n onClose={onClose}\n />\n </li>\n )\n}\n\nconst MegaMenuGroupColumn = ({\n item,\n activeItemId,\n currentHref,\n docsIconMap,\n onClose,\n onContentHeightChange,\n openGroupId,\n onOpenGroupChange,\n}: MegaMenuColumnProps & { item: ResolvedSidebarGroup }) => {\n const groupHref = getGroupHref(item)\n const visibleItems = getVisibleGroupItems(item)\n const GroupIcon = docsIconMap[getDocsIconMapKey('group', item.id)]\n const isActive = groupHref === currentHref || containsActiveHref(item.items, currentHref)\n\n if (!item.title) {\n return (\n <>\n {visibleItems.map((child) => (\n <MegaMenuColumn\n key={child.id}\n item={child}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n />\n ))}\n </>\n )\n }\n\n const title = (\n <MegaMenuNodeLink\n title={item.title}\n href={groupHref ?? undefined}\n icon={GroupIcon}\n isActive={isActive}\n className=\"mb-4 text-lg font-semibold tracking-tight\"\n onClose={onClose}\n />\n )\n const nestedItems =\n visibleItems.length > 0 ? (\n <MegaMenuNodeList\n items={visibleItems}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n depth={1}\n />\n ) : null\n\n return (\n <li className=\"mb-6 flex-1 px-4 py-3\">\n {title}\n {nestedItems}\n </li>\n )\n}\n\nconst MegaMenuColumn = ({\n item,\n activeItemId,\n currentHref,\n docsIconMap,\n onClose,\n onContentHeightChange,\n openGroupId,\n onOpenGroupChange,\n}: MegaMenuColumnProps) => {\n if (item.kind === 'page') {\n return (\n <MegaMenuPageColumn\n item={item}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n />\n )\n }\n\n return (\n <MegaMenuGroupColumn\n item={item}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n />\n )\n}\n\nconst hasVisibleItems = (items: ResolvedSidebarNode[]): boolean => {\n return items.some((item) => {\n if (!item.showInNav) {\n return false\n }\n\n if (item.kind === 'group') {\n return Boolean(item.title || item.href || hasVisibleItems(item.items))\n }\n\n return true\n })\n}\n\nexport const MegaMenu = ({\n isActive,\n onOpen,\n onClose,\n sections,\n activeSectionId,\n hoveredSectionId,\n isLandingPage,\n}: {\n isActive: boolean\n onOpen: (sectionId?: string) => void\n onClose: () => void\n sections: ResolvedDocsSection[]\n activeSectionId?: string\n hoveredSectionId?: string\n isLandingPage: boolean\n}) => {\n const docs = useDocsGlobalContext()\n const { urlPathname } = usePageContext()\n const visibleSectionId = hoveredSectionId ?? activeSectionId ?? sections[0]?.id\n const [visibleSectionElement, setVisibleSectionElement] = useState<HTMLDivElement | null>(null)\n const [contentHeight, setContentHeight] = useState(0)\n const [openGroupId, setOpenGroupId] = useState<string | null>(null)\n const contentHeightAnimationFrameRef = useRef<number | null>(null)\n const contentHeightTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const activeItemId = useMemo(\n () =>\n findActiveItemId(\n sections.find((section) => section.id === visibleSectionId),\n urlPathname,\n ),\n [sections, visibleSectionId, urlPathname],\n )\n\n const clearScheduledContentHeightUpdate = useCallback(() => {\n if (contentHeightAnimationFrameRef.current !== null) {\n cancelAnimationFrame(contentHeightAnimationFrameRef.current)\n contentHeightAnimationFrameRef.current = null\n }\n\n if (contentHeightTimeoutRef.current !== null) {\n clearTimeout(contentHeightTimeoutRef.current)\n contentHeightTimeoutRef.current = null\n }\n }, [])\n\n const setContentHeightFromDisplayedHeight = useCallback(() => {\n if (visibleSectionElement === null) {\n return\n }\n\n setContentHeight(Math.ceil(visibleSectionElement.offsetHeight))\n }, [visibleSectionElement])\n\n const setContentHeightFromFullHeight = useCallback(() => {\n if (visibleSectionElement === null) {\n return\n }\n\n setContentHeight(Math.ceil(visibleSectionElement.scrollHeight))\n }, [visibleSectionElement])\n\n const scheduleContentHeightUpdate = useCallback(\n (isOpening: boolean) => {\n clearScheduledContentHeightUpdate()\n\n if (isOpening) {\n contentHeightAnimationFrameRef.current = requestAnimationFrame(() => {\n setContentHeightFromFullHeight()\n contentHeightAnimationFrameRef.current = null\n })\n }\n\n contentHeightTimeoutRef.current = setTimeout(() => {\n setContentHeightFromDisplayedHeight()\n contentHeightTimeoutRef.current = null\n }, detailsTransitionDurationMs)\n },\n [clearScheduledContentHeightUpdate, setContentHeightFromDisplayedHeight, setContentHeightFromFullHeight],\n )\n\n const closeMegaMenu = useCallback(() => {\n setOpenGroupId(null)\n onClose()\n }, [onClose])\n\n useEffect(() => {\n if (!isActive || !visibleSectionId || visibleSectionElement === null) {\n return\n }\n\n contentHeightAnimationFrameRef.current = requestAnimationFrame(() => {\n setContentHeightFromDisplayedHeight()\n contentHeightAnimationFrameRef.current = null\n })\n\n return clearScheduledContentHeightUpdate\n }, [\n clearScheduledContentHeightUpdate,\n isActive,\n setContentHeightFromDisplayedHeight,\n visibleSectionElement,\n visibleSectionId,\n ])\n\n useEffect(() => clearScheduledContentHeightUpdate, [clearScheduledContentHeightUpdate])\n\n useEffect(() => {\n if (!visibleSectionId) {\n return\n }\n\n setOpenGroupId(null)\n }, [visibleSectionId])\n\n useEffect(() => {\n if (!isActive) {\n setOpenGroupId(null)\n }\n }, [isActive])\n\n return (\n <div\n className={cmMerge('fixed top-14 left-0 z-3 w-full', isActive ? 'pointer-events-auto' : 'pointer-events-none')}\n onPointerEnter={() => onOpen(visibleSectionId)}\n onPointerLeave={closeMegaMenu}\n >\n <div\n className={cmMerge(\n isActive ? 'opacity-100' : 'opacity-0',\n 'pointer-events-none absolute top-0 left-0 h-svh w-full bg-linear-to-t from-base-100/60 to-base-100 transition-opacity duration-200 backdrop-blur-md',\n )}\n />\n <div\n className={cmMerge(\n 'relative z-4 overflow-hidden transition-[height] bg-base-100 duration-300 ease-out pointer-events-none',\n isLandingPage && !isActive ? '' : 'pointer-events-auto lg:border-b lg:border-base-muted-light',\n )}\n // biome-ignore lint/nursery/noInlineStyles: needed here\n style={{ height: isActive ? contentHeight : 0 }}\n >\n <LayoutComponent $size=\"sm\">\n <div\n className={cmMerge(\n isActive ? 'translate-y-0 opacity-100' : '-translate-y-10 opacity-0',\n 'relative z-4 transition-all duration-300',\n )}\n >\n {sections.map((section) => (\n <div\n key={section.id}\n ref={section.id === visibleSectionId ? setVisibleSectionElement : undefined}\n className={cmMerge(\n section.id === visibleSectionId ? 'opacity-100' : 'opacity-0 pointer-events-none',\n 'transition-all absolute w-full duration-300',\n )}\n >\n {hasVisibleItems(section.items) && (\n <ul className=\"menu mt-2 flex-row items-start p-0 w-full\">\n {getVisibleNavItems(section.items).map((child) => (\n <MegaMenuColumn\n key={child.id}\n item={child}\n activeItemId={activeItemId}\n currentHref={urlPathname}\n docsIconMap={docs.docsIconMap}\n onClose={closeMegaMenu}\n onContentHeightChange={scheduleContentHeightUpdate}\n openGroupId={openGroupId}\n onOpenGroupChange={setOpenGroupId}\n />\n ))}\n </ul>\n )}\n </div>\n ))}\n </div>\n </LayoutComponent>\n </div>\n </div>\n )\n}\n","import type { ResolvedSidebarGroup, ResolvedSidebarNode } from '../../../docs/types.js'\n\nexport const containsActiveHref = (items: ResolvedSidebarNode[], currentHref: string): boolean => {\n return items.some((item) => {\n if (item.kind === 'page') {\n return item.href === currentHref\n }\n\n return item.href === currentHref || containsActiveHref(item.items, currentHref)\n })\n}\n\nexport const hasActiveItem = (items: ResolvedSidebarNode[], activeHref: string) => containsActiveHref(items, activeHref)\n\nexport const getVisibleNavItems = (items: ResolvedSidebarNode[]) => items.filter((item) => item.showInNav)\n\nexport const getVisibleGroupItems = (group: ResolvedSidebarGroup) => {\n const visibleItems = getVisibleNavItems(group.items)\n\n if (!group.href) {\n return visibleItems\n }\n\n return visibleItems.filter((item): item is ResolvedSidebarNode => {\n if (item.kind !== 'page') {\n return true\n }\n\n return item.href !== group.href\n })\n}\n\nexport const getGroupHref = (group: ResolvedSidebarGroup): string | null => group.href ?? null\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport type { ResolvedDocsSection } from '../../../../docs/types'\n\nconst megaMenuOpenDelayMs = 120\nconst megaMenuCloseDelayMs = 140\n\nconst useMegaMenu = ({ activeSectionId, sections }: { activeSectionId?: string; sections: ResolvedDocsSection[] }) => {\n const [isMegaMenuOpen, setIsMegaMenuOpen] = useState(false)\n const megaMenuOpenTimeoutRef = useRef<number | null>(null)\n const megaMenuCloseTimeoutRef = useRef<number | null>(null)\n const [hoveredSectionId, setHoveredSectionId] = useState<string | undefined>(activeSectionId ?? sections[0]?.id)\n\n const clearMegaMenuOpenTimeout = useCallback(() => {\n if (megaMenuOpenTimeoutRef.current === null) {\n return\n }\n\n window.clearTimeout(megaMenuOpenTimeoutRef.current)\n megaMenuOpenTimeoutRef.current = null\n }, [])\n\n const clearMegaMenuCloseTimeout = useCallback(() => {\n if (megaMenuCloseTimeoutRef.current === null) {\n return\n }\n\n window.clearTimeout(megaMenuCloseTimeoutRef.current)\n megaMenuCloseTimeoutRef.current = null\n }, [])\n\n const openMegaMenu = (currentSectionId?: string) => {\n if (currentSectionId !== undefined) {\n setHoveredSectionId(currentSectionId)\n }\n\n clearMegaMenuOpenTimeout()\n clearMegaMenuCloseTimeout()\n setIsMegaMenuOpen(true)\n }\n\n const scheduleMegaMenuOpen = (currentSectionId?: string) => {\n if (currentSectionId !== undefined) {\n setHoveredSectionId(currentSectionId)\n }\n\n clearMegaMenuOpenTimeout()\n clearMegaMenuCloseTimeout()\n\n if (isMegaMenuOpen) {\n setIsMegaMenuOpen(true)\n return\n }\n\n megaMenuOpenTimeoutRef.current = window.setTimeout(() => {\n setIsMegaMenuOpen(true)\n megaMenuOpenTimeoutRef.current = null\n }, megaMenuOpenDelayMs)\n }\n\n const closeMegaMenu = () => {\n clearMegaMenuOpenTimeout()\n clearMegaMenuCloseTimeout()\n setIsMegaMenuOpen(false)\n }\n\n const scheduleMegaMenuClose = () => {\n clearMegaMenuOpenTimeout()\n clearMegaMenuCloseTimeout()\n megaMenuCloseTimeoutRef.current = window.setTimeout(() => {\n setIsMegaMenuOpen(false)\n megaMenuCloseTimeoutRef.current = null\n }, megaMenuCloseDelayMs)\n }\n\n useEffect(() => {\n return () => {\n clearMegaMenuOpenTimeout()\n clearMegaMenuCloseTimeout()\n }\n }, [clearMegaMenuCloseTimeout, clearMegaMenuOpenTimeout])\n\n useEffect(() => {\n setHoveredSectionId(activeSectionId ?? sections[0]?.id)\n }, [activeSectionId, sections])\n\n return {\n isMegaMenuOpen,\n hoveredSectionId,\n openMegaMenu,\n scheduleMegaMenuOpen,\n closeMegaMenu,\n scheduleMegaMenuClose,\n }\n}\n\nexport default useMegaMenu\n","import { useEffect, useMemo } from 'react'\nimport type { DocsConfig } from '../../../docs/types.js'\nimport { useDocsUserSettingsStore } from '../store/settings-store.js'\nimport { applyThemePreference, resolveThemePreference } from '../theme.js'\n\nexport const UserSettingsSync = ({ theme }: { theme?: DocsConfig['theme'] }) => {\n const themePreference = useDocsUserSettingsStore((state) => state.themePreference)\n const lightTheme = theme?.light ?? 'consumer-light'\n const darkTheme = theme?.dark ?? 'consumer-dark'\n const defaultThemePreference = theme?.defaultPreference ?? 'light'\n const resolvedTheme = useMemo(\n () => ({ light: lightTheme, dark: darkTheme, defaultPreference: defaultThemePreference }),\n [darkTheme, defaultThemePreference, lightTheme],\n )\n\n const effectiveThemePreference = resolveThemePreference(themePreference, resolvedTheme)\n\n useEffect(() => {\n applyThemePreference(effectiveThemePreference, resolvedTheme)\n }, [effectiveThemePreference, resolvedTheme])\n\n return null\n}\n","import type {\n UniversalMdxRuntimeValue,\n UniversalResolvedDocLink,\n UniversalResolvedOverviewItem,\n} from '../../mdx/components/types.js'\nimport { withSiteBaseUrl } from '../../shared/assets.js'\nimport type { DocsGlobalContextData } from '../../docs/types.js'\nimport {\n getActiveSectionByPathname,\n getResolvedPageByPathname,\n getResolvedSectionById,\n isSamePagePathname,\n resolveDocsHref,\n} from '../../docs/runtime.js'\nimport { docsCodeBlockChoiceStore } from './store/settings-store.js'\n\nconst isExternalHref = (href: string) => {\n return /^(?:[a-z]+:)?\\/\\//i.test(href) || href.startsWith('mailto:') || href.startsWith('tel:')\n}\n\nconst splitHref = (href: string) => {\n const [pathname, hash = ''] = href.split('#')\n return {\n pathname,\n hash: hash ? `#${hash}` : '',\n }\n}\n\nconst resolveDocLink = (options: {\n docs: DocsGlobalContextData\n currentPathname: string\n href: string\n}): UniversalResolvedDocLink | null => {\n const { currentPathname, href } = options\n if (href.startsWith('#') || isExternalHref(href)) {\n return null\n }\n\n const { pathname, hash } = splitHref(href)\n const docsPathname = resolveDocsHref(options.docs.basePath, pathname)\n\n if (!docsPathname) {\n return null\n }\n\n const page = getResolvedPageByPathname(options.docs, docsPathname)\n if (!page) {\n return null\n }\n\n const section = getResolvedSectionById(options.docs, page.sectionId)\n\n return {\n href: withSiteBaseUrl(`${page.href}${hash}`),\n title: page.title,\n breadcrumb: section ? [section.navTitle] : [],\n isCurrentPage: isSamePagePathname(page, currentPathname),\n }\n}\n\nconst resolveOverviewItem = (options: {\n docs: DocsGlobalContextData\n id: string\n}): UniversalResolvedOverviewItem | null => {\n const page = options.docs.pages.find((candidate) => candidate.id === options.id)\n\n if (!page) {\n return null\n }\n\n return {\n title: page.title,\n href: withSiteBaseUrl(page.href),\n excerpt: page.description ?? null,\n }\n}\n\nexport const getMdxRuntimeValue = (options: {\n docs: DocsGlobalContextData\n currentPathname: string\n}): UniversalMdxRuntimeValue => {\n const { currentPathname, docs } = options\n const activeSection = getActiveSectionByPathname(docs, currentPathname)\n const currentPage = getResolvedPageByPathname(docs, currentPathname)\n\n return {\n locale: 'en',\n codeBlockChoices: docsCodeBlockChoiceStore,\n localizeHref: (href) => {\n if (href.startsWith('#') || isExternalHref(href)) {\n return href\n }\n\n const { pathname, hash } = splitHref(href)\n const docsPathname = resolveDocsHref(docs.basePath, pathname)\n const page = docsPathname ? getResolvedPageByPathname(docs, docsPathname) : null\n\n if (!page) {\n if (docsPathname && !pathname.startsWith('/')) {\n return withSiteBaseUrl(`${docsPathname}${hash}`)\n }\n\n return withSiteBaseUrl(href)\n }\n\n return withSiteBaseUrl(`${page.href}${hash}`)\n },\n resolveDocLink: ({ href }) =>\n resolveDocLink({\n docs,\n currentPathname,\n href,\n }),\n resolveOverviewItem: (id) =>\n resolveOverviewItem({\n docs,\n id,\n }),\n t: (group, key) => {\n if (group === 'docs' && key === 'onThisPage') {\n return 'On this page'\n }\n\n if (group === 'docs' && key === 'previous') {\n return 'Previous'\n }\n\n if (group === 'docs' && key === 'next') {\n return 'Next'\n }\n\n if (group === 'docs' && key === 'currentSection') {\n return activeSection?.navTitle ?? currentPage?.title ?? 'Docs'\n }\n\n return key\n },\n }\n}\n","import type { ResolvedDocsHeadConfig } from '../../../../docs/types.js'\n\nexport const FaviconLinks = ({ head }: { head: ResolvedDocsHeadConfig }) => {\n const { appleTouchIcon, faviconIco, faviconSvg } = head\n\n return (\n <>\n {appleTouchIcon && <link rel=\"apple-touch-icon\" href={appleTouchIcon} />}\n {faviconSvg && <link rel=\"icon\" type=\"image/svg+xml\" href={faviconSvg} />}\n {faviconIco && (\n <>\n <link rel=\"shortcut icon\" type=\"image/x-icon\" href={faviconIco} />\n <link rel=\"icon\" type=\"image/x-icon\" href={faviconIco} />\n </>\n )}\n </>\n )\n}\n","import { nivelAssetUrl } from '../../../../shared/assets.js'\nimport type { ResolvedDocsHeadConfig } from '../../../../docs/types.js'\n\nconst defaultInterFontStylesheetHref = nivelAssetUrl('fonts/fonts-inter.css')\n\nconst defaultInterFontCss = `\n@font-face {\n font-display: swap;\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n src: url('${nivelAssetUrl('fonts/inter-v20-latin-regular.woff2')}') format('woff2');\n}\n\n@font-face {\n font-display: swap;\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n src: url('${nivelAssetUrl('fonts/inter-v20-latin-600.woff2')}') format('woff2');\n}\n\n@font-face {\n font-display: swap;\n font-family: 'Inter';\n font-style: normal;\n font-weight: 800;\n src: url('${nivelAssetUrl('fonts/inter-v20-latin-800.woff2')}') format('woff2');\n}\n`\n\nexport const FontLinks = ({ head }: { head: ResolvedDocsHeadConfig }) => {\n if (!head.customFonts) {\n return null\n }\n\n const { fontStylesheetHref, fontPreloadHrefs } = head\n const effectivePreloadHrefs = fontPreloadHrefs ?? []\n const shouldInlineDefaultInterFonts = fontStylesheetHref === defaultInterFontStylesheetHref\n\n return (\n <>\n {effectivePreloadHrefs.map((href) => (\n <link key={href} rel=\"preload\" href={href} as=\"font\" type=\"font/woff2\" crossOrigin=\"anonymous\" />\n ))}\n {shouldInlineDefaultInterFonts ? <style dangerouslySetInnerHTML={{ __html: defaultInterFontCss }} /> : null}\n {fontStylesheetHref && !shouldInlineDefaultInterFonts ? (\n <link rel=\"stylesheet\" href={fontStylesheetHref} />\n ) : null}\n </>\n )\n}\n","import type { DocsThemeConfig } from '../../../../docs/types.js'\nimport { USER_SETTINGS_STORAGE_KEY } from '../../store/settings-storage.js'\nimport { DARK_THEME_MEDIA_QUERY } from '../../theme.js'\n\nconst getThemeBootstrapScript = (theme: Required<DocsThemeConfig>) => {\n return `(() => {\n const storageKey = ${JSON.stringify(USER_SETTINGS_STORAGE_KEY)};\n const darkThemeMediaQuery = ${JSON.stringify(DARK_THEME_MEDIA_QUERY)};\n const defaultThemePreference = ${JSON.stringify(theme.defaultPreference)};\n const themes = {\n light: ${JSON.stringify(theme.light)},\n dark: ${JSON.stringify(theme.dark)}\n };\n\n try {\n const persistedValue = window.localStorage.getItem(storageKey);\n const parsedValue = persistedValue ? JSON.parse(persistedValue) : null;\n const storedThemePreference = parsedValue?.state?.themePreference;\n const themePreference =\n storedThemePreference === 'light' || storedThemePreference === 'dark'\n ? storedThemePreference\n : typeof window.matchMedia === 'function'\n ? window.matchMedia(darkThemeMediaQuery).matches\n ? 'dark'\n : 'light'\n : defaultThemePreference;\n\n document.documentElement.setAttribute('data-theme', themes[themePreference]);\n } catch {\n const themePreference =\n typeof window.matchMedia === 'function'\n ? window.matchMedia(darkThemeMediaQuery).matches\n ? 'dark'\n : 'light'\n : defaultThemePreference;\n\n document.documentElement.setAttribute('data-theme', themes[themePreference]);\n }\n})();`\n}\n\nexport const ThemeBootstrap = ({ theme }: { theme: Required<DocsThemeConfig> }) => {\n return (\n <script\n dangerouslySetInnerHTML={{\n __html: getThemeBootstrapScript(theme),\n }}\n />\n )\n}\n","import { useDocsFromPageGlobalContext } from '../../docsGlobalContext.js'\nimport { FaviconLinks } from './FaviconLinks.js'\nimport { FontLinks } from './FontLinks.js'\nimport { ThemeBootstrap } from './ThemeBootstrap.js'\n\nexport const MetaHead = () => {\n const docs = useDocsFromPageGlobalContext()\n const shouldBlockCrawlers = docs.robots === false\n\n return (\n <>\n <ThemeBootstrap theme={docs.theme} />\n <FaviconLinks head={docs.head} />\n <FontLinks head={docs.head} />\n {shouldBlockCrawlers ? <meta name=\"robots\" content=\"noindex, nofollow\" /> : null}\n </>\n )\n}\n","import cm from '@classmatejs/react'\n\n// https://github.com/tailwindlabs/tailwindcss-typography\n// see full styling list in global.css\nexport const ProseContainer = cm.section`\n prose-container\n`\n","import type { ReactNode } from 'react'\nimport { useData } from 'vike-react/useData'\nimport type { DocPageData } from '../../docs/types.js'\nimport { DocsPagination } from './components/DocsPagination.js'\nimport { DocsFooter } from './components/Footer.js'\nimport { HeadingLinkCopy } from './components/HeadingLinkCopy.js'\nimport { LayoutComponent } from './components/LayoutComponent.js'\nimport { Sidebar } from './components/Sidebar.js'\nimport { TableOfContents } from './components/TableOfContents.js'\nimport TableOfContentsMobile from './components/TableOfContentsMobile.js'\nimport { useTableOfContentsState } from './components/useTableOfContentsState.js'\n\ninterface DocsLayoutProps {\n children: ReactNode\n}\n\nexport const DocsLayout = ({ children }: DocsLayoutProps) => {\n const data = useData() as DocPageData\n const { activeHeadingId, effectiveHeadings, setActiveHeadingId } = useTableOfContentsState({\n headings: data.headings,\n })\n\n return (\n <>\n <HeadingLinkCopy />\n <div className=\"absolute top-0 left-0 h-[60svh] w-full bg-radial-[at_65%_-85%] from-primary-muted-light/40 to-65% dark:from-primary-muted-light/60\" />\n <LayoutComponent>\n <div className=\"lg:flex gap-14 xl:gap-20\">\n <Sidebar currentHref={data.page.href} activeSectionId={data.page.sectionId} />\n <main className=\"min-w-0 flex-1 basis-auto shrink\">\n <TableOfContentsMobile\n headings={effectiveHeadings}\n tableOfContents={data.page.tableOfContents && effectiveHeadings.length > 0}\n pageTitle={data.page.title}\n currentHref={data.page.href}\n activeHeadingId={activeHeadingId}\n setActiveHeadingId={setActiveHeadingId}\n />\n <div className=\"mt-10 min-w-0\">{children}</div>\n <DocsPagination previousPage={data.previousPage} nextPage={data.nextPage} />\n <DocsFooter />\n </main>\n <TableOfContents\n headings={effectiveHeadings}\n tableOfContents={data.page.tableOfContents}\n activeHeadingId={activeHeadingId}\n setActiveHeadingId={setActiveHeadingId}\n />\n </div>\n </LayoutComponent>\n </>\n )\n}\n","import { cmMerge } from '@classmatejs/react'\nimport { ChevronLeft, ChevronRight } from 'lucide-react'\nimport type { DocPageData } from '../../../docs/types.js'\nimport { withSiteBaseUrl } from '../../../shared/assets.js'\nimport { renderInlineMarkdown } from '../../../shared/renderInlineMarkdown.js'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\nimport DocsBreadcrumbs from './DocsBreadcrumbs.js'\n\ninterface PaginationCardProps {\n item: NonNullable<DocPageData['previousPage']>\n direction: 'previous' | 'next'\n isOffset?: boolean\n}\n\nconst PaginationCard = ({ item, direction, isOffset }: PaginationCardProps) => {\n const isPrevious = direction === 'previous'\n\n return (\n <a\n href={withSiteBaseUrl(item.href)}\n className={cmMerge(\n 'group rounded-box border border-base-muted-light bg-base-100 p-5 no-underline hover:border-primary-muted-medium hover:bg-base-200',\n isPrevious ? 'text-left' : 'text-right',\n isOffset && 'sm:col-start-2',\n )}\n aria-label={`${isPrevious ? 'Previous' : 'Next'}: ${item.title}`}\n >\n <div className=\"flex flex-col h-full justify-between gap-2\">\n <div className={cmMerge('flex gap-1 text-base-muted', isPrevious ? 'justify-start' : 'justify-end')}>\n <DocsBreadcrumbs currentHref={item.href} />\n </div>\n <p className=\"text-lg font-semibold text-base-content\">{renderInlineMarkdown(item.title)}</p>\n <div\n className={cmMerge(\n 'flex flex-1 items-end gap-1 text-base-muted group-hover:text-base-content',\n isPrevious ? 'justify-start' : 'justify-end',\n )}\n >\n <div className=\"flex items-center\">\n {isPrevious && <ChevronLeft className=\"size-4\" />}\n <span>{isPrevious ? 'Previous' : 'Next'}</span>\n {!isPrevious && <ChevronRight className=\"size-4\" />}\n </div>\n </div>\n </div>\n </a>\n )\n}\n\ninterface DocsPaginationProps {\n previousPage?: DocPageData['previousPage']\n nextPage?: DocPageData['nextPage']\n}\n\nexport const DocsPagination = ({\n previousPage: previousPageProp = null,\n nextPage: nextPageProp = null,\n}: DocsPaginationProps) => {\n const paginationEnabled = useDocsGlobalContext().footer.pagination\n const previousPage = previousPageProp\n const nextPage = nextPageProp\n\n if (!paginationEnabled) {\n return null\n }\n\n if (!previousPage && !nextPage) {\n return null\n }\n\n return (\n <nav className=\"mb-10 mt-16\" aria-label=\"Previous Next\">\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {previousPage && <PaginationCard item={previousPage} direction=\"previous\" />}\n {nextPage && <PaginationCard isOffset={!previousPage} item={nextPage} direction=\"next\" />}\n </div>\n </nav>\n )\n}\n","import { ChevronsRight } from 'lucide-react'\nimport { getDocsIconMapKey } from '../../../docs/iconKeys.js'\nimport { getActiveSectionByPathname } from '../../../docs/runtime.js'\nimport type { ResolvedSidebarNode } from '../../../docs/types.js'\nimport { renderInlineMarkdown } from '../../../shared/renderInlineMarkdown.js'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\n\ntype BreadcrumbItem = {\n id: string\n kind: 'group' | 'page'\n title: string\n}\n\nconst dedupeBreadcrumbs = (items: BreadcrumbItem[]) => {\n return items.filter((item, index) => index === 0 || items[index - 1]?.title !== item.title)\n}\n\nconst getSidebarBreadcrumbs = (items: ResolvedSidebarNode[], currentHref: string): BreadcrumbItem[] | null => {\n for (const item of items) {\n if (item.kind === 'page') {\n if (item.href === currentHref) {\n return [{ id: item.id, kind: item.kind, title: item.navTitle }]\n }\n\n continue\n }\n\n if (item.href === currentHref) {\n return item.title ? [{ id: item.id, kind: item.kind, title: item.title }] : []\n }\n\n const nestedBreadcrumbs = getSidebarBreadcrumbs(item.items, currentHref)\n\n if (!nestedBreadcrumbs) {\n continue\n }\n\n return dedupeBreadcrumbs(item.title ? [{ id: item.id, kind: item.kind, title: item.title }] : nestedBreadcrumbs)\n }\n\n return null\n}\n\nconst DocsBreadcrumbs = ({ currentHref }: { currentHref: string }) => {\n const docs = useDocsGlobalContext()\n const activeSection = getActiveSectionByPathname(docs, currentHref)\n const breadcrumbItems = dedupeBreadcrumbs([\n ...(activeSection ? (getSidebarBreadcrumbs(activeSection.items, currentHref) ?? []) : []),\n ])\n\n return (\n <span className=\"flex items-center text-sm gap-1 min-w-0 overflow-hidden text-primary\">\n {breadcrumbItems.map((item, index) => {\n const Icon = docs.docsIconMap[getDocsIconMapKey(item.kind, item.id)]\n\n return (\n <span key={item.id} className=\"contents\">\n {index > 0 ? <ChevronsRight className=\"size-4 shrink-0 text-base-muted-medium\" /> : null}\n <span className=\"flex min-w-0 items-center gap-1.5\">\n {Icon ? <Icon className=\"size-3 shrink-0\" aria-hidden=\"true\" /> : null}\n <span className=\"truncate\">{renderInlineMarkdown(item.title, { codeClassName: 'text-sm!' })}</span>\n </span>\n </span>\n )\n })}\n </span>\n )\n}\n\nexport default DocsBreadcrumbs\n","import { Bug, Pencil } from 'lucide-react'\nimport { memo } from 'react'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\nimport { Brand } from './Brand.js'\nimport SocialIcons from './SocialLinks.js'\n\nexport const DocsFooter = memo(() => {\n const { brand } = useDocsGlobalContext()\n\n return (\n <footer className=\"mb-8 mt-12 text-sm border-t border-base-muted-light pt-10\">\n <div className=\"mb-16 flex items-center gap-2\">\n <a href=\"edit\" className=\"btn btn-sm btn-primary btn-soft\">\n <Pencil className=\"size-3\" /> Edit this page\n </a>\n <a href=\"edit\" className=\"btn btn-sm btn-primary btn-soft\">\n <Bug className=\"size-3\" /> Report Issue\n </a>\n </div>\n <div className=\"flex justify-between items-center\">\n <SocialIcons />\n <div className=\"flex gap-2 items-center\">{brand && <Brand brand={brand} noText />}</div>\n </div>\n </footer>\n )\n})\n","import { useEffect } from 'react'\n\nconst copyText = async (value: string) => {\n try {\n await navigator.clipboard.writeText(value)\n return\n } catch {\n const textarea = document.createElement('textarea')\n textarea.value = value\n textarea.setAttribute('readonly', 'true')\n textarea.style.position = 'fixed'\n textarea.style.opacity = '0'\n document.body.appendChild(textarea)\n textarea.select()\n document.execCommand('copy')\n document.body.removeChild(textarea)\n }\n}\n\nconst getHeadingLink = (target: EventTarget | null) =>\n target instanceof Element ? target.closest('a[data-copy-heading-link]') : null\n\nexport const HeadingLinkCopy = () => {\n useEffect(() => {\n const handleClick = (event: MouseEvent) => {\n if (event.defaultPrevented || event.button !== 0) {\n return\n }\n\n if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) {\n return\n }\n\n const link = getHeadingLink(event.target)\n if (!link) {\n return\n }\n\n const href = link.getAttribute('href')\n if (!href) {\n return\n }\n\n const nextUrl = new URL(href, window.location.href)\n if (nextUrl.hash && window.location.hash !== nextUrl.hash) {\n history.replaceState(null, '', nextUrl.hash)\n }\n\n void copyText(nextUrl.href)\n }\n\n document.addEventListener('click', handleClick)\n\n return () => {\n document.removeEventListener('click', handleClick)\n }\n }, [])\n\n return null\n}\n","import { cmMerge } from '@classmatejs/react'\nimport type { LucideIcon } from 'lucide-react'\nimport type { ReactNode } from 'react'\nimport { memo, useEffect, useRef } from 'react'\nimport { usePageContext } from 'vike-react/usePageContext'\nimport { getDocsIconMapKey } from '../../../docs/iconKeys.js'\nimport { getActiveSectionByPathname } from '../../../docs/runtime.js'\nimport type {\n DocsIconMap,\n ResolvedDocsSection,\n ResolvedSidebarGroup,\n ResolvedSidebarNode,\n} from '../../../docs/types.js'\nimport { withSiteBaseUrl } from '../../../shared/assets.js'\nimport { renderInlineMarkdown } from '../../../shared/renderInlineMarkdown.js'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\nimport { useDocsSidebarActions, useDocsSidebarStore } from '../store/runtime-store.js'\nimport {\n containsActiveHref,\n getGroupHref,\n getVisibleGroupItems,\n getVisibleNavItems,\n hasActiveItem,\n} from './docsNavigation.js'\nimport StickyContent from './StickyContent.js'\n\nconst useAutoOpenDetails = (nodeId: string, isOpenByDefault: boolean, hasActiveDescendant: boolean) => {\n const storedOpen = useDocsSidebarStore((state) => state.openNodes[nodeId])\n const { setNodeOpen } = useDocsSidebarActions()\n const isOpen = storedOpen === undefined ? isOpenByDefault || hasActiveDescendant : storedOpen || hasActiveDescendant\n\n useEffect(() => {\n if (hasActiveDescendant) {\n setNodeOpen(nodeId, true)\n return\n }\n\n if (storedOpen === undefined && isOpenByDefault) {\n setNodeOpen(nodeId, true)\n }\n }, [hasActiveDescendant, isOpenByDefault, nodeId, setNodeOpen, storedOpen])\n\n return {\n isOpen,\n setIsOpen: (nextOpen: boolean) => setNodeOpen(nodeId, nextOpen),\n }\n}\n\ninterface SidebarPageLinkProps {\n title: string\n href: string\n currentHref: string\n icon?: LucideIcon\n}\n\nconst SidebarPageLink = ({ title, href, currentHref, icon: Icon }: SidebarPageLinkProps) => {\n return (\n <li className=\"rounded-none\">\n <a\n href={withSiteBaseUrl(href)}\n className={cmMerge(\n 'rounded-field py-2 text-base-muted hover:text-base-content justify-start hover:bg-base-200',\n href === currentHref && 'text-primary! bg-base-200',\n )}\n >\n <span className=\"flex items-center gap-2\">\n {Icon ? <Icon className=\"size-4 shrink-0\" aria-hidden=\"true\" /> : null}\n <span>{renderInlineMarkdown(title, { codeClassName: 'text-sm!' })}</span>\n </span>\n </a>\n </li>\n )\n}\n\nconst SidebarGroupDivider = ({ title, icon: Icon }: { title: string; icon?: LucideIcon }) => {\n return (\n <li className=\"ml-3 mt-2 mb-2 border-b border-base-muted-light text-xs text-base-muted-medium pointer-events-none font-semibold\">\n <span className=\"-ml-3 flex items-center gap-2\">\n {Icon ? <Icon className=\"size-4 shrink-0\" aria-hidden=\"true\" /> : null}\n <span>{renderInlineMarkdown(title, { codeClassName: 'text-sm!' })}</span>\n </span>\n </li>\n )\n}\n\ninterface SidebarGroupTitleProps {\n title?: string\n href?: string\n isActive: boolean\n allowNavigation?: boolean\n icon?: LucideIcon\n}\n\nconst SidebarGroupTitle = ({ title, href, isActive, allowNavigation = false, icon: Icon }: SidebarGroupTitleProps) => {\n const content = (\n <span className=\"flex items-center gap-2 font-base\">\n {Icon ? <Icon className=\"size-4 shrink-0\" aria-hidden=\"true\" /> : null}\n <span className={cmMerge(isActive && allowNavigation && 'text-primary!')}>\n {title ? renderInlineMarkdown(title, { codeClassName: 'text-sm!' }) : null}\n </span>\n </span>\n )\n\n if (allowNavigation && href) {\n return (\n <a\n href={withSiteBaseUrl(href)}\n className={cmMerge(\n 'flex items-center gap-2 rounded-field py-2 text-base-muted hover:text-base-content no-underline',\n isActive && 'text-primary!',\n )}\n >\n {content}\n </a>\n )\n }\n\n return <span className=\"flex items-center gap-2 rounded-field py-2 text-base-content\">{content}</span>\n}\n\nconst renderSidebarItems = (\n items: ResolvedSidebarNode[],\n currentHref: string,\n docsIconMap: DocsIconMap,\n): ReactNode[] => {\n return items.map((item) => {\n if (item.kind === 'page') {\n return (\n <SidebarPageLink\n key={item.id}\n title={item.navTitle}\n href={item.href}\n currentHref={currentHref}\n icon={docsIconMap[getDocsIconMapKey('page', item.id)]}\n />\n )\n }\n\n return <SidebarNestedGroup key={item.id} group={item} currentHref={currentHref} docsIconMap={docsIconMap} />\n })\n}\n\ninterface SidebarItemListProps {\n items: ResolvedSidebarNode[]\n currentHref: string\n docsIconMap: DocsIconMap\n}\n\nconst SidebarItemList = ({ items, currentHref, docsIconMap }: SidebarItemListProps) => {\n const visibleItems = getVisibleNavItems(items)\n\n return <ul className=\"menu lg:w-[97%]\">{renderSidebarItems(visibleItems, currentHref, docsIconMap)}</ul>\n}\n\ninterface SidebarNestedGroupProps {\n group: ResolvedSidebarGroup\n currentHref: string\n docsIconMap: DocsIconMap\n}\n\nconst SidebarNestedGroup = ({ group, currentHref, docsIconMap }: SidebarNestedGroupProps) => {\n const groupHref = getGroupHref(group)\n const visibleItems = getVisibleGroupItems(group)\n const isCollapsible = group.collapsible !== undefined\n const isOpenByDefault = group.collapsible?.isDefaultOpen ?? true\n const nestedHasActiveItem = groupHref === currentHref || hasActiveItem(group.items, currentHref)\n const { isOpen, setIsOpen } = useAutoOpenDetails(`group:${group.id}`, isOpenByDefault, nestedHasActiveItem)\n const GroupIcon = docsIconMap[getDocsIconMapKey('group', group.id)]\n\n if (!isCollapsible) {\n if (!group.title) {\n return <>{renderSidebarItems(visibleItems, currentHref, docsIconMap)}</>\n }\n\n return (\n <>\n <SidebarGroupDivider title={group.title} icon={GroupIcon} />\n {renderSidebarItems(visibleItems, currentHref, docsIconMap)}\n </>\n )\n }\n\n return (\n <li>\n <details\n open={isOpen}\n onToggle={(event) => {\n setIsOpen(event.currentTarget.open)\n }}\n >\n <summary className=\"rounded-field max-h-9 flex items-center\">\n <SidebarGroupTitle\n title={group.title}\n href={groupHref ?? undefined}\n isActive={nestedHasActiveItem}\n allowNavigation={Boolean(groupHref)}\n icon={GroupIcon}\n />\n </summary>\n {visibleItems.length > 0 ? (\n <SidebarItemList items={visibleItems} currentHref={currentHref} docsIconMap={docsIconMap} />\n ) : null}\n </details>\n </li>\n )\n}\n\ninterface SidebarSectionGroupProps {\n section: ResolvedDocsSection\n currentHref: string\n activeSectionId: string\n}\n\nconst SidebarSectionGroup = ({ section, currentHref, activeSectionId }: SidebarSectionGroupProps) => {\n const docs = useDocsGlobalContext()\n const SectionIcon = docs.docsIconMap[getDocsIconMapKey('section', section.id)]\n const sectionHasActiveItem = section.id === activeSectionId || containsActiveHref(section.items, currentHref)\n const { isOpen, setIsOpen } = useAutoOpenDetails(\n `section:${section.id}`,\n section.id === activeSectionId,\n sectionHasActiveItem,\n )\n\n return (\n <li className=\"pb-1\">\n <details\n open={isOpen}\n onToggle={(event) => {\n setIsOpen(event.currentTarget.open)\n }}\n >\n <summary className=\"rounded-field max-h-9 flex items-center\">\n <SidebarGroupTitle title={section.title} isActive={sectionHasActiveItem} icon={SectionIcon} />\n </summary>\n <SidebarItemList items={section.items} currentHref={currentHref} docsIconMap={docs.docsIconMap} />\n </details>\n </li>\n )\n}\n\ninterface SidebarProps {\n currentHref?: string\n activeSectionId?: string\n}\n\nexport const Sidebar = memo(\n ({ currentHref: currentHrefProp = '', activeSectionId: activeSectionIdProp = '' }: SidebarProps) => {\n const scrollContainerRef = useRef<HTMLDivElement | null>(null)\n const { urlPathname } = usePageContext()\n const currentHref = currentHrefProp || urlPathname\n const docs = useDocsGlobalContext()\n const activeSectionId = activeSectionIdProp || getActiveSectionByPathname(docs, currentHref)?.id || ''\n const { sidebarSections } = docs\n\n return (\n <aside className=\"hidden basis-72 shrink-0 lg:block\">\n <div className=\"-ml-3 sticky top-14\">\n <div className=\"absolute h-full w-px right-0 top-0 bg-linear-to-t to-base-muted-light via-base-muted-light pointer-events-none z-1\" />\n <StickyContent ref={scrollContainerRef} className=\"pr-4 relative z-10\">\n <ul className={cmMerge('menu p-0 m-0 w-full px-0 pt-3 li:last-child:border-0')}>\n {sidebarSections.map((section) => (\n <SidebarSectionGroup\n key={section.id}\n section={section}\n currentHref={currentHref}\n activeSectionId={activeSectionId}\n />\n ))}\n </ul>\n </StickyContent>\n </div>\n </aside>\n )\n },\n)\n","import cm from '@classmatejs/react'\n\nconst StickyContent = cm.div`\n relative \n h-[calc(100svh-14*var(--spacing))] \n overflow-y-auto overflow-x-hidden\n`\n\nexport default StickyContent\n","import cm, { cmMerge } from '@classmatejs/react'\nimport { Flame, TableOfContentsIcon } from 'lucide-react'\nimport type { Dispatch, SetStateAction } from 'react'\nimport type { DocHeading, ResolvedDocsPartnersConfig } from '../../../docs/types.js'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\nimport StickyContent from './StickyContent.js'\n\nconst getPadLeft = (depth: number) => {\n switch (depth) {\n case 1:\n return 'pl-3'\n case 2:\n return 'pl-3'\n case 3:\n return 'pl-5'\n case 4:\n return 'pl-7'\n }\n}\n\ninterface TableOfContentsProps {\n headings?: DocHeading[]\n tableOfContents?: boolean\n activeHeadingId?: string\n setActiveHeadingId?: Dispatch<SetStateAction<string>>\n}\n\nexport const TableOfContents = ({\n headings: headingsProp = [],\n tableOfContents: tableOfContentsProp = false,\n activeHeadingId = '',\n setActiveHeadingId = () => undefined,\n}: TableOfContentsProps) => {\n const { partners } = useDocsGlobalContext()\n const effectiveHeadings = headingsProp\n const effectiveTableOfContents = tableOfContentsProp\n\n return (\n <aside className={cmMerge(effectiveTableOfContents ? 'w-58' : 'w-32', 'hidden shrink-0 xl:block')}>\n <div className=\"sticky top-14\">\n <StickyContent className=\"pt-10 pb-8\">\n {effectiveTableOfContents\n ? effectiveHeadings.length > 0 && (\n <>\n <p className=\"mb-4 flex items-center gap-2 text-xs font-semibold uppercase tracking-widest text-base-muted\">\n <TableOfContentsIcon className=\"size-3\" />\n On this page\n </p>\n <nav aria-label=\"On this page\" className=\"mb-12\">\n <ul>\n {effectiveHeadings.map((heading) => {\n return (\n <li key={heading.id}>\n <a\n href={`#${heading.id}`}\n aria-current={activeHeadingId === heading.id ? 'location' : undefined}\n onClick={() => setActiveHeadingId(heading.id)}\n className={cmMerge(\n 'cursor-pointer block border-l-2 border-base-muted-light py-1.5 text-base-muted hover:border-primary-muted hover:text-base-content text-xs',\n getPadLeft(heading.depth),\n activeHeadingId === heading.id ? 'border-primary text-base-content' : '',\n )}\n >\n {heading.title}\n </a>\n </li>\n )\n })}\n </ul>\n </nav>\n </>\n )\n : null}\n <Adbar partners={partners} />\n </StickyContent>\n </div>\n </aside>\n )\n}\n\nconst Adbar = ({ partners }: { partners: ResolvedDocsPartnersConfig }) => {\n if (partners.primary.length === 0 && partners.gold.length === 0) {\n return null\n }\n\n return (\n <aside>\n <p className=\"mb-4 flex items-center gap-2 text-xs font-semibold uppercase tracking-widest text-base-muted\">\n <Flame className=\"size-3\" />\n Partners\n </p>\n <ul className=\"grid grid-cols-[repeat(auto-fit,minmax(5.5rem,1fr))] gap-3 opacity-90\">\n {partners.primary.map((partner) => (\n <AdbarItem key={partner.name} className=\"col-span-full\">\n <AdbarLink href={partner.href} title={partner.name}>\n <PartnerLogo partner={partner} />\n </AdbarLink>\n </AdbarItem>\n ))}\n {partners.gold.map((partner) => (\n <AdbarItem key={partner.name}>\n <AdbarLink href={partner.href} title={partner.name}>\n <PartnerLogo partner={partner} />\n </AdbarLink>\n </AdbarItem>\n ))}\n </ul>\n </aside>\n )\n}\n\nconst PartnerLogo = ({\n partner,\n}: {\n partner: ResolvedDocsPartnersConfig['primary'][number] | ResolvedDocsPartnersConfig['gold'][number]\n}) => {\n return (\n <>\n <Image\n src={partner.logoLight}\n width={200}\n height={200}\n alt={partner.logoAlt}\n className={cmMerge('block', partner.logoDark ? 'dark:hidden' : 'dark:invert')}\n />\n {partner.logoDark ? (\n <Image src={partner.logoDark} width={200} height={200} alt={partner.logoAlt} className=\"hidden dark:block\" />\n ) : null}\n </>\n )\n}\n\nconst AdbarItem = cm.li`\n list-none\n px-5\n py-5\n bg-base-200\n text-center\n flex\n items-center\n justify-center\n rounded-field\n`\n\nconst AdbarLink = cm.a`\n block\n w-full\n transition-opacity\n hover:opacity-100\n focus-visible:opacity-100\n`\n\nconst Image = cm.img`\n mx-auto\n w-24\n h-auto\n`\n","import cm from '@classmatejs/react'\nimport { TableOfContents } from 'lucide-react'\nimport { type Dispatch, type SetStateAction, useId } from 'react'\nimport type { DocHeading } from '../../../docs/types'\nimport BreadcrumbSidebarTrigger from './BreadcrumbSidebarTrigger'\n\ninterface TableOfContentsProps {\n headings?: DocHeading[]\n tableOfContents?: boolean\n pageTitle?: string\n currentHref: string\n activeHeadingId?: string\n setActiveHeadingId?: Dispatch<SetStateAction<string>>\n}\n\nconst TableOfContentsMobile = ({\n headings = [],\n tableOfContents = false,\n pageTitle = 'On this page',\n currentHref,\n activeHeadingId = '',\n setActiveHeadingId = () => undefined,\n}: TableOfContentsProps) => {\n const topOptionValue = '__docs-page-top__'\n const selectId = useId()\n const labelId = `${selectId}-label`\n const selectedValue =\n tableOfContents && headings.some((heading) => heading.id === activeHeadingId) ? activeHeadingId : ''\n\n return (\n <>\n <div className=\"h-12 xl:hidden\"></div>\n <StyledTOC>\n <StyledTOCInner>\n <div className=\"hidden md:block\">\n <BreadcrumbSidebarTrigger currentHref={currentHref} />\n </div>\n <label className=\"select select-sm md:w-80 w-full\" htmlFor={selectId}>\n <span id={labelId} className=\"sr-only\">\n {pageTitle}\n </span>\n <span className=\"label flex\" aria-hidden=\"true\">\n <TableOfContents className=\"size-4\" />\n </span>\n <select\n id={selectId}\n aria-labelledby={labelId}\n value={selectedValue || topOptionValue}\n onChange={(e) => {\n const value = e.target.value\n if (value === topOptionValue) {\n setActiveHeadingId('')\n window.history.replaceState(null, '', `${window.location.pathname}${window.location.search}`)\n window.scrollTo({ top: 0, behavior: 'auto' })\n return\n }\n\n setActiveHeadingId(value)\n window.location.hash = encodeURIComponent(value)\n }}\n >\n <option value={topOptionValue}>{pageTitle}</option>\n {tableOfContents &&\n headings.map((heading) => (\n <option key={heading.id} value={heading.id}>\n {heading.title}\n </option>\n ))}\n </select>\n </label>\n </StyledTOCInner>\n </StyledTOC>\n </>\n )\n}\n\nexport default TableOfContentsMobile\n\nconst StyledTOC = cm.div`\n block xl:hidden\n fixed\n bg-base-100 border-b-base-muted-light\n w-full h-14\n top-14 left-0 border-b z-5\n lg:w-[calc(100svw-80*var(--spacing))]\n lg:left-80\n`\n\nconst StyledTOCInner = cm.div`\n absolute inset-0 flex justify-between items-center\n pr-4\n px-4 lg:pl-14\n`\n","import { cmMerge } from '@classmatejs/react'\nimport { ChevronLast, ChevronsRight } from 'lucide-react'\nimport { useCallback } from 'react'\nimport { getActiveSectionByPathname } from '../../../docs/runtime.js'\nimport type { ResolvedSidebarNode } from '../../../docs/types.js'\nimport { renderInlineMarkdown } from '../../../shared/renderInlineMarkdown.js'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\n\ntype BreadcrumbItem = {\n id: string\n title: string\n}\n\nconst dedupeBreadcrumbs = (items: BreadcrumbItem[]) => {\n return items.filter((item, index) => index === 0 || items[index - 1]?.title !== item.title)\n}\n\nconst getSidebarBreadcrumbs = (items: ResolvedSidebarNode[], currentHref: string): BreadcrumbItem[] | null => {\n for (const item of items) {\n if (item.kind === 'page') {\n if (item.href === currentHref) {\n return [{ id: item.id, title: item.navTitle }]\n }\n\n continue\n }\n\n if (item.href === currentHref) {\n return item.title ? [{ id: item.id, title: item.title }] : []\n }\n\n const nestedBreadcrumbs = getSidebarBreadcrumbs(item.items, currentHref)\n\n if (!nestedBreadcrumbs) {\n continue\n }\n\n return dedupeBreadcrumbs(\n item.title ? [{ id: item.id, title: item.title }, ...nestedBreadcrumbs] : nestedBreadcrumbs,\n )\n }\n\n return null\n}\n\nconst BreadcrumbSidebarTrigger = ({ currentHref }: { currentHref: string }) => {\n const docs = useDocsGlobalContext()\n const activeSection = getActiveSectionByPathname(docs, currentHref)\n const breadcrumbItems = dedupeBreadcrumbs([\n ...(activeSection ? [{ id: activeSection.id, title: activeSection.navTitle }] : []),\n ...(activeSection ? (getSidebarBreadcrumbs(activeSection.items, currentHref) ?? []) : []),\n ])\n\n const handleClick = useCallback(() => {\n alert('TODO: Open mobile menu')\n }, [])\n\n return (\n <button className=\"cursor-pointer min-w-0 max-w-full block \" type=\"button\" onClick={handleClick}>\n <span className=\"flex items-center gap-1 min-w-0 overflow-hidden lg:hidden\">\n <ChevronLast className=\"size-4 shrink-0 text-primary\" />\n <span className=\"flex items-center gap-1\">\n {breadcrumbItems.map((item, index) => (\n <span key={item.id} className=\"contents\">\n {index > 0 ? <ChevronsRight className=\"size-4 shrink-0 text-base-muted-medium\" /> : null}\n <span className={cmMerge(index === 0 && 'font-semibold', 'text-sm truncate')}>\n {renderInlineMarkdown(item.title, { codeClassName: 'text-sm!' })}\n </span>\n </span>\n ))}\n </span>\n </span>\n </button>\n )\n}\n\nexport default BreadcrumbSidebarTrigger\n","import type { Dispatch, SetStateAction } from 'react'\nimport { useEffect, useState } from 'react'\nimport { createHeadingSlugger, normalizeHeadingTitle } from '../../../docs/docHeadings.js'\nimport type { DocHeading } from '../../../docs/types.js'\n\nconst getCurrentHash = () => {\n try {\n return decodeURIComponent(window.location.hash)\n } catch {\n return window.location.hash\n }\n}\n\nconst getHeadingElements = () => {\n const root = document.querySelector('[data-doc-content]')\n if (!(root instanceof HTMLElement)) {\n return []\n }\n\n return Array.from(root.querySelectorAll('h2, h3, h4')).filter(\n (element): element is HTMLHeadingElement => element instanceof HTMLHeadingElement,\n )\n}\n\nconst areHeadingsEqual = (left: DocHeading[], right: DocHeading[]) => {\n if (left.length !== right.length) {\n return false\n }\n\n return left.every((heading, index) => {\n const other = right[index]\n return (\n other !== undefined && heading.depth === other.depth && heading.id === other.id && heading.title === other.title\n )\n })\n}\n\nconst syncHeadingsFromDom = (setDomHeadings: Dispatch<SetStateAction<DocHeading[]>>) => {\n const root = document.querySelector('[data-doc-content]')\n if (!(root instanceof HTMLElement)) {\n return\n }\n\n const slugify = createHeadingSlugger()\n const nextHeadings = Array.from(root.querySelectorAll('h2, h3, h4'))\n .map((element) => {\n const title = normalizeHeadingTitle(element.textContent ?? '')\n if (!title) {\n return null\n }\n\n element.classList.add('scroll-mt-32')\n element.classList.add('xl:scroll-mt-22')\n\n const id = element.id || slugify(title)\n if (!element.id) {\n element.id = id\n }\n\n return {\n depth: Number(element.tagName.slice(1)),\n id,\n title,\n } satisfies DocHeading\n })\n .filter((heading): heading is DocHeading => heading !== null)\n\n setDomHeadings((currentHeadings) => {\n if (areHeadingsEqual(currentHeadings, nextHeadings)) {\n return currentHeadings\n }\n\n return nextHeadings\n })\n}\n\nconst updateActiveHeadingFromScroll = (setActiveHeadingId: (value: string) => void) => {\n const headingElements = getHeadingElements()\n if (headingElements.length === 0) {\n return\n }\n\n const activationOffset = 144\n let nextActiveHeadingId = ''\n\n for (const heading of headingElements) {\n if (!heading.id) {\n continue\n }\n\n if (heading.getBoundingClientRect().top <= activationOffset) {\n nextActiveHeadingId = heading.id\n continue\n }\n\n break\n }\n\n const lastHeading = headingElements.at(-1)\n if (lastHeading?.id && window.innerHeight + window.scrollY >= document.documentElement.scrollHeight - 8) {\n nextActiveHeadingId = lastHeading.id\n }\n\n setActiveHeadingId(nextActiveHeadingId)\n}\n\ninterface UseTableOfContentsStateProps {\n headings?: DocHeading[]\n}\n\ninterface UseTableOfContentsStateResult {\n activeHeadingId: string\n effectiveHeadings: DocHeading[]\n setActiveHeadingId: Dispatch<SetStateAction<string>>\n}\n\nexport const useTableOfContentsState = ({\n headings: routeHeadings = [],\n}: UseTableOfContentsStateProps): UseTableOfContentsStateResult => {\n const [activeHeadingId, setActiveHeadingId] = useState('')\n const [domHeadings, setDomHeadings] = useState<DocHeading[]>(routeHeadings)\n const effectiveHeadings = domHeadings.length > 0 ? domHeadings : routeHeadings\n\n useEffect(() => {\n let scrollFrame = 0\n\n const syncActiveHeading = () => {\n if (scrollFrame) {\n return\n }\n\n scrollFrame = window.requestAnimationFrame(() => {\n scrollFrame = 0\n updateActiveHeadingFromScroll(setActiveHeadingId)\n })\n }\n\n const updateHash = () => {\n const currentHash = getCurrentHash().replace(/^#/, '')\n if (currentHash !== '') {\n setActiveHeadingId(currentHash)\n return\n }\n\n syncActiveHeading()\n }\n\n updateHash()\n queueMicrotask(() => {\n syncHeadingsFromDom(setDomHeadings)\n syncActiveHeading()\n })\n\n window.addEventListener('hashchange', updateHash)\n window.addEventListener('scroll', syncActiveHeading, { passive: true })\n window.addEventListener('resize', syncActiveHeading)\n\n return () => {\n if (scrollFrame) {\n window.cancelAnimationFrame(scrollFrame)\n }\n\n window.removeEventListener('hashchange', updateHash)\n window.removeEventListener('scroll', syncActiveHeading)\n window.removeEventListener('resize', syncActiveHeading)\n }\n }, [])\n\n useEffect(() => {\n if (typeof window === 'undefined') {\n return\n }\n\n setDomHeadings((currentHeadings) => {\n if (areHeadingsEqual(currentHeadings, routeHeadings)) {\n return currentHeadings\n }\n\n return routeHeadings\n })\n setActiveHeadingId('')\n\n queueMicrotask(() => {\n syncHeadingsFromDom(setDomHeadings)\n updateActiveHeadingFromScroll(setActiveHeadingId)\n })\n }, [routeHeadings])\n\n return {\n activeHeadingId,\n effectiveHeadings,\n setActiveHeadingId,\n }\n}\n","import type { ComponentType } from 'react'\nimport { useData } from 'vike-react/useData'\nimport type { DocPageData } from '../../docs/types.js'\nimport { renderInlineMarkdown } from '../../shared/renderInlineMarkdown.js'\nimport BreadcrumbSidebarTrigger from './components/BreadcrumbSidebarTrigger.js'\nimport DocsBreadcrumbs from './components/DocsBreadcrumbs.js'\nimport { ProseContainer } from './components/ProseContainer.js'\n\ninterface DocsPageProps {\n Content: ComponentType\n}\n\nexport const DocsPage = ({ Content }: DocsPageProps) => {\n const { page } = useData() as DocPageData\n\n return (\n <ProseContainer data-doc-content=\"\">\n <div className=\"mb-2 md:hidden\">\n <BreadcrumbSidebarTrigger currentHref={page.href} />\n </div>\n <div className=\"mb-2 hidden md:block\">\n <DocsBreadcrumbs currentHref={page.href} />\n </div>\n <h1 className=\"scroll-mt-32 xl:scroll-mt-22\">{renderInlineMarkdown(page.title)}</h1>\n <hr />\n <Content />\n </ProseContainer>\n )\n}\n"],"mappings":"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","names":["cmMerge","usePageContext","cm","usePageContext","cmMerge","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","cmMerge","cm","cmMerge","ChevronDown","Menu","TextSearch","useCallback","jsx","jsxs","StyledNav","cm","StyledNavList","useCallback","cmMerge","ChevronDown","TextSearch","Menu","cmMerge","useCallback","useEffect","useState","jsx","jsxs","cmMerge","useState","useCallback","useEffect","useCallback","useEffect","useRef","useState","jsx","jsxs","usePageContext","cm","useEffect","useMemo","useMemo","useEffect","jsx","jsxs","usePageContext","cmMerge","Fragment","jsx","jsxs","Fragment","jsx","jsxs","jsx","Fragment","jsx","jsxs","cm","cmMerge","jsx","jsxs","jsx","jsxs","cmMerge","memo","jsx","jsxs","memo","useEffect","cmMerge","memo","useEffect","useRef","usePageContext","cm","Fragment","jsx","jsxs","useEffect","cmMerge","memo","useRef","usePageContext","cm","cmMerge","Fragment","jsx","jsxs","cmMerge","cm","cm","TableOfContents","cmMerge","ChevronsRight","useCallback","jsx","jsxs","dedupeBreadcrumbs","getSidebarBreadcrumbs","useCallback","ChevronsRight","cmMerge","Fragment","jsx","jsxs","TableOfContents","cm","useEffect","useState","useState","useEffect","Fragment","jsx","jsxs","useData","jsx","jsxs","useData"]}
|
package/dist/client.js
CHANGED
package/dist/runtime/client.js
CHANGED
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runtime/client/AppLayout.tsx","../src/runtime/client/components/Navbar/index.tsx","../src/runtime/client/components/Search.tsx","../src/runtime/client/components/Navbar/DocsNavbar.tsx","../src/runtime/client/components/Brand.tsx","../src/runtime/client/components/SocialLinks.tsx","../src/runtime/client/components/ThemeSwitch.tsx","../src/runtime/client/store/settings-store.ts","../src/runtime/client/store/settings-storage.ts","../src/runtime/client/theme.ts","../src/runtime/client/components/Navbar/AsideButtons.tsx","../src/runtime/client/components/Navbar/LandingPageNavbar.tsx","../src/runtime/client/components/Navbar/MegaMenu.tsx","../src/runtime/client/components/docsNavigation.ts","../src/runtime/client/components/Navbar/useMegaMenu.ts","../src/runtime/client/components/UserSettingsSync.tsx","../src/runtime/client/getMdxRuntimeValue.tsx","../src/runtime/client/components/MetaHead/FaviconLinks.tsx","../src/runtime/client/components/MetaHead/FontLinks.tsx","../src/runtime/client/components/MetaHead/ThemeBootstrap.tsx","../src/runtime/client/components/MetaHead/index.tsx","../src/runtime/client/components/ProseContainer.tsx","../src/runtime/client/DocsLayout.tsx","../src/runtime/client/components/DocsPagination.tsx","../src/runtime/client/components/DocsBreadcrumbs.tsx","../src/runtime/client/components/Footer.tsx","../src/runtime/client/components/HeadingLinkCopy.tsx","../src/runtime/client/components/Sidebar.tsx","../src/runtime/client/components/TableOfContents.tsx","../src/runtime/client/components/TableOfContentsMobile.tsx","../src/runtime/client/components/BreadcrumbSidebarTrigger.tsx","../src/runtime/client/components/useTableOfContentsState.ts","../src/runtime/client/DocsPage.tsx"],"sourcesContent":["import { cmMerge } from '@classmatejs/react'\nimport type { ReactNode } from 'react'\nimport { usePageContext } from 'vike-react/usePageContext'\nimport { UniversalMdxProvider } from '../../mdx/components/UniversalMdxProvider.js'\nimport NavbarNew from './components/Navbar/index.js'\nimport { UserSettingsSync } from './components/UserSettingsSync.js'\nimport { DocsGlobalContextProvider, type DocsPageContext, getDocsFromGlobalContext } from './docsGlobalContext.js'\nimport { getMdxRuntimeValue } from './getMdxRuntimeValue.js'\nimport { createDocsRuntimeStore, DocsRuntimeStoreProvider } from './store/runtime-store.js'\n\ninterface AppLayoutProps {\n children: ReactNode\n header?: ReactNode\n}\n\nconst runtimeStore = createDocsRuntimeStore()\n\nexport const AppLayout = ({ children, header }: AppLayoutProps) => {\n const { urlPathname } = usePageContext()\n const pageContext = usePageContext()\n\n const docs = getDocsFromGlobalContext(pageContext as DocsPageContext)\n const isLandingPage = urlPathname === '/'\n\n return (\n <DocsRuntimeStoreProvider store={runtimeStore}>\n <DocsGlobalContextProvider docs={docs}>\n <UniversalMdxProvider\n value={getMdxRuntimeValue({\n docs,\n currentPathname: urlPathname,\n })}\n >\n <UserSettingsSync theme={docs.theme} />\n <div className=\"min-h-screen bg-base-100 text-base-content\">\n {header ?? <NavbarNew />}\n <div className={cmMerge(isLandingPage ? '' : 'pt-14')}>{children}</div>\n </div>\n </UniversalMdxProvider>\n </DocsGlobalContextProvider>\n </DocsRuntimeStoreProvider>\n )\n}\n","import cm from '@classmatejs/react'\nimport { usePageContext } from 'vike-react/usePageContext'\nimport { getActiveSectionByPathname } from '../../../../docs/runtime'\nimport { useDocsGlobalContext } from '../../docsGlobalContext'\nimport { useDocsSearchActions } from '../../store/runtime-store'\nimport { LayoutComponent } from '../LayoutComponent'\nimport { Search } from '../Search'\nimport DocsNavbar from './DocsNavbar'\nimport LandingPageNavbar from './LandingPageNavbar'\nimport { MegaMenu } from './MegaMenu'\nimport useMegaMenu from './useMegaMenu'\n\nconst NavbarNew = () => {\n const docs = useDocsGlobalContext()\n const { urlPathname, urlParsed } = usePageContext()\n const isLandingPage = urlParsed.pathname === '/'\n const sections = docs.sidebarSections\n const activeSection = getActiveSectionByPathname(docs, urlPathname)\n const { toggle: toggleSearch } = useDocsSearchActions()\n\n const { closeMegaMenu, hoveredSectionId, isMegaMenuOpen, openMegaMenu, scheduleMegaMenuOpen, scheduleMegaMenuClose } =\n useMegaMenu({\n activeSectionId: activeSection?.id,\n sections,\n })\n\n return (\n <StyledNavbar $border={isLandingPage}>\n <LayoutComponent>\n {isLandingPage ? (\n <LandingPageNavbar\n openMegaMenu={openMegaMenu}\n scheduleMegaMenuOpen={scheduleMegaMenuOpen}\n scheduleMegaMenuClose={scheduleMegaMenuClose}\n toggleSearch={toggleSearch}\n closeMegaMenu={closeMegaMenu}\n hoveredSectionId={hoveredSectionId}\n isMegaMenuOpen={isMegaMenuOpen}\n />\n ) : (\n <DocsNavbar\n openMegaMenu={openMegaMenu}\n scheduleMegaMenuOpen={scheduleMegaMenuOpen}\n scheduleMegaMenuClose={scheduleMegaMenuClose}\n toggleSearch={toggleSearch}\n closeMegaMenu={closeMegaMenu}\n activeSection={activeSection}\n hoveredSectionId={hoveredSectionId}\n isMegaMenuOpen={isMegaMenuOpen}\n />\n )}\n </LayoutComponent>\n <Search />\n <MegaMenu\n sections={sections}\n activeSectionId={activeSection?.id}\n hoveredSectionId={hoveredSectionId}\n isActive={isMegaMenuOpen}\n onOpen={openMegaMenu}\n onClose={scheduleMegaMenuClose}\n isLandingPage={isLandingPage}\n />\n </StyledNavbar>\n )\n}\n\nexport default NavbarNew\n\nconst StyledNavbar = cm.header<{ $border: boolean }>`\n top-0 left-0 z-20 w-full bg-base-100\n pt-0 h-14\n ${({ $border }) => ($border ? 'relative' : 'fixed')}\n`\n","import { useEffect, useState } from 'react'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\nimport { useDocsSearchStore } from '../store/runtime-store.js'\n\ntype SearchModalModule = typeof import('./SearchModal.js')\n\nlet searchModalModulePromise: Promise<SearchModalModule> | null = null\n\nconst loadSearchModalModule = () => {\n searchModalModulePromise ??= import('./SearchModal.js')\n return searchModalModulePromise\n}\n\nexport const Search = () => {\n const docs = useDocsGlobalContext()\n const isOpen = useDocsSearchStore((state) => state.isOpen)\n const [searchModalModule, setSearchModalModule] = useState<SearchModalModule | null>(null)\n\n useEffect(() => {\n if (!docs.algolia || !isOpen || searchModalModule !== null) {\n return\n }\n\n let isMounted = true\n\n loadSearchModalModule().then((module) => {\n if (isMounted) {\n setSearchModalModule(module)\n }\n })\n\n return () => {\n isMounted = false\n }\n }, [docs.algolia, isOpen, searchModalModule])\n\n if (!docs.algolia || searchModalModule === null) {\n return null\n }\n\n const { SearchModal } = searchModalModule\n\n return <SearchModal />\n}\n","import cm, { cmMerge } from '@classmatejs/react'\nimport { ChevronDown, Menu, TextSearch } from 'lucide-react'\nimport { useCallback } from 'react'\nimport { getDocsIconMapKey } from '../../../../docs/iconKeys.js'\nimport type { ResolvedDocsSection } from '../../../../docs/types'\nimport { withSiteBaseUrl } from '../../../../shared/assets'\nimport { renderInlineMarkdown } from '../../../../shared/renderInlineMarkdown'\nimport { useDocsGlobalContext } from '../../docsGlobalContext'\nimport { Brand } from '../Brand'\nimport AsideButtons from './AsideButtons'\n\nconst StyledNav = cm.nav`\n gap-4\n flex-1 pl-10 items-center justify-end lg:justify-start \n hidden lg:flex\n`\n\nconst StyledNavList = cm.ul`\n inline-flex items-center gap-2 font-semibold \n`\n\ninterface DocsNavbarProps {\n scheduleMegaMenuClose?: () => void\n scheduleMegaMenuOpen: (id?: string) => void\n openMegaMenu: (id?: string) => void\n toggleSearch: () => void\n closeMegaMenu?: () => void\n activeSection?: ResolvedDocsSection | null\n hoveredSectionId?: string\n isMegaMenuOpen: boolean\n}\n\nconst DocsNavbar = ({\n closeMegaMenu,\n openMegaMenu,\n scheduleMegaMenuOpen,\n scheduleMegaMenuClose,\n toggleSearch,\n activeSection,\n hoveredSectionId,\n isMegaMenuOpen,\n}: DocsNavbarProps) => {\n const docs = useDocsGlobalContext()\n\n const handleClick = useCallback(() => {\n alert('TODO: Open mobile menu')\n }, [])\n\n return (\n <div className=\"flex flex-1 gap-4 pt-3 justify-between\">\n <div className=\"lg:min-w-76 min-w-none\">\n <Brand brand={docs.brand} />\n </div>\n <StyledNav aria-label=\"Primary\">\n <StyledNavList className=\"\">\n {docs.navbarItems.map((item) => {\n const ItemIcon = docs.docsIconMap[getDocsIconMapKey('section', item.id)]\n const isMegaMenuItemActive = isMegaMenuOpen && hoveredSectionId === item.id\n\n return (\n <li key={item.id}>\n <a\n href={withSiteBaseUrl(item.href)}\n className={'block'}\n onPointerEnter={() => scheduleMegaMenuOpen(item.id)}\n onPointerLeave={scheduleMegaMenuClose}\n onFocus={() => openMegaMenu(item.id)}\n onBlur={scheduleMegaMenuClose}\n onClick={closeMegaMenu}\n >\n <span\n className={cmMerge(\n 'btn text-base btn-sm md:min-w-30 px-2 whitespace-nowrap tracking-tight',\n activeSection?.id === item.id ? 'btn-primary btn-soft' : 'btn-ghost ',\n )}\n >\n {ItemIcon ? <ItemIcon className=\"size-4 shrink-0\" aria-hidden=\"true\" /> : null}\n {renderInlineMarkdown(item.title)}\n <ChevronDown\n className={cmMerge(\n 'size-4 shrink-0 transition-transform duration-200',\n isMegaMenuItemActive ? 'rotate-180' : 'rotate-0',\n )}\n />\n </span>\n </a>\n </li>\n )\n })}\n {docs.algolia ? (\n <li>\n <button\n type=\"button\"\n onClick={toggleSearch}\n className=\"btn btn-ghost btn-sm text-base md:min-w-30 px-2 whitespace-nowrap tracking-tight\"\n >\n Search\n <TextSearch className=\"size-4\" />\n </button>\n </li>\n ) : null}\n </StyledNavList>\n </StyledNav>\n <button type=\"button\" className=\"block lg:hidden\" aria-label=\"Open navigation menu\" onClick={handleClick}>\n <Menu className=\"w-6 h-6\" />\n </button>\n <div className=\"lg:min-w-40 hidden lg:block\">\n <AsideButtons />\n </div>\n </div>\n )\n}\n\nexport default DocsNavbar\n","import { cmMerge } from '@classmatejs/react'\nimport type { ResolvedDocsBrandConfig } from '../../../docs/types.js'\n\ninterface BrandProps {\n brand: ResolvedDocsBrandConfig\n noText?: boolean\n}\n\nexport const Brand = ({ brand, noText = false }: BrandProps) => {\n const defaultLogo = brand.logoLight ?? brand.logoDark\n\n return (\n <a\n href={brand.href}\n className=\"flex items-center gap-3 text-base-content h-full no-underline\"\n aria-label={noText ? `${brand.text} homepage` : undefined}\n >\n {defaultLogo && (\n <span className=\"relative block h-8 w-8 shrink-0\">\n {brand.logoLight && (\n <img\n src={brand.logoLight}\n alt={brand.logoAlt}\n className={cmMerge('h-8 w-8 object-contain', brand.logoDark ? 'block dark:hidden' : 'block')}\n />\n )}\n {brand.logoDark && (\n <img\n src={brand.logoDark}\n alt={brand.logoAlt}\n className={cmMerge('h-8 w-8 object-contain', brand.logoLight ? 'hidden dark:block' : 'block')}\n />\n )}\n </span>\n )}\n {!noText && <span className=\"text-xl font-semibold tracking-tight\">{brand.text}</span>}\n </a>\n )\n}\n","import { memo } from 'react'\nimport { nivelAssetUrl } from '../../../shared/assets.js'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\n\nconst iconAssets = {\n github: nivelAssetUrl('brands/github.svg'),\n discord: nivelAssetUrl(`brands/discord.svg`),\n x: nivelAssetUrl(`brands/x.svg`),\n bluesky: nivelAssetUrl(`brands/bluesky.svg`),\n linkedin: nivelAssetUrl('brands/linkedin.svg'),\n}\n\ntype SocialPlatform = keyof typeof iconAssets\n\nconst SocialIconElement = ({ icon, href }: { icon: SocialPlatform; href: string }) => {\n const socialLabel = icon === 'x' ? 'X' : icon.charAt(0).toUpperCase() + icon.slice(1)\n\n return (\n <li className=\"m-0 p-0\">\n {/** biome-ignore lint/a11y/useAnchorContent: not now */}\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex h-8 w-8 items-center justify-center rounded-full border border-base-muted-light bg-base-200\"\n aria-label={`${socialLabel} profile`}\n title={socialLabel}\n >\n <img src={iconAssets[icon]} alt=\"\" aria-hidden=\"true\" className=\"h-3 w-auto opacity-75 dark:invert\" />\n </a>\n </li>\n )\n}\n\nconst SocialIcons = memo(() => {\n const docs = useDocsGlobalContext()\n const socialEntries = Object.entries(docs.social ?? {}).filter(\n (entry): entry is [SocialPlatform, string] =>\n entry[0] in iconAssets && typeof entry[1] === 'string' && entry[1].length > 0,\n )\n\n if (socialEntries.length === 0) {\n return null\n }\n\n return (\n <ul className=\"flex items-center gap-1\">\n {socialEntries.map(([platform, href]) => (\n <SocialIconElement key={platform} icon={platform} href={href} />\n ))}\n </ul>\n )\n})\n\nexport default SocialIcons\n","import { Moon, Sun } from 'lucide-react'\nimport type { DocsThemeConfig } from '../../../docs/types.js'\nimport { useDocsUserSettingsStore } from '../store/settings-store.js'\nimport { resolveThemePreference } from '../theme.js'\n\nexport const ThemeSwitch = ({ theme }: { theme: Required<DocsThemeConfig> }) => {\n const themePreference = useDocsUserSettingsStore((state) => state.themePreference)\n const setThemePreference = useDocsUserSettingsStore((state) => state.setThemePreference)\n const effectiveThemePreference = resolveThemePreference(themePreference, theme)\n\n return (\n <button\n type=\"button\"\n aria-label=\"Toggle theme\"\n onClick={() => setThemePreference(effectiveThemePreference === 'light' ? 'dark' : 'light')}\n className=\"relative flex h-8 w-8 cursor-pointer items-center justify-center rounded-full border border-base-muted-light bg-base-200\"\n >\n <Sun className=\"size-4 dark:hidden\" />\n <Moon className=\"hidden size-4 dark:block\" />\n </button>\n )\n}\n","import { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport type { UniversalMdxCodeBlockChoiceStore } from '../../../mdx/components/types.js'\nimport type { ThemePreference } from '../../../docs/types.js'\nimport { readLegacyCodeBlockChoice, USER_SETTINGS_STORAGE_KEY } from './settings-storage.js'\n\ntype DocsUserSettingsState = {\n codeBlockChoices: Record<string, string>\n themePreference: ThemePreference | null\n setCodeBlockChoice: (choiceGroupName: string, choice: string) => void\n setThemePreference: (themePreference: ThemePreference) => void\n}\n\nexport const useDocsUserSettingsStore = create<DocsUserSettingsState>()(\n persist(\n (set) => ({\n codeBlockChoices: {},\n themePreference: null,\n setCodeBlockChoice: (choiceGroupName, choice) =>\n set((state) => ({\n codeBlockChoices: {\n ...state.codeBlockChoices,\n [choiceGroupName]: choice,\n },\n })),\n setThemePreference: (themePreference) => set({ themePreference }),\n }),\n {\n name: USER_SETTINGS_STORAGE_KEY,\n storage: createJSONStorage(() => localStorage),\n partialize: ({ codeBlockChoices, themePreference }) => ({\n codeBlockChoices,\n themePreference,\n }),\n },\n ),\n)\n\nexport const docsCodeBlockChoiceStore: UniversalMdxCodeBlockChoiceStore = {\n subscribe: (listener) => useDocsUserSettingsStore.subscribe(listener),\n getChoice: (choiceGroupName) => useDocsUserSettingsStore.getState().codeBlockChoices[choiceGroupName] ?? null,\n setChoice: (choiceGroupName, choice) =>\n useDocsUserSettingsStore.getState().setCodeBlockChoice(choiceGroupName, choice),\n getLegacyChoice: readLegacyCodeBlockChoice,\n}\n","export const USER_SETTINGS_STORAGE_KEY = 'nivel-user-settings'\nconst LEGACY_CODE_BLOCK_CHOICE_STORAGE_KEY_PREFIX = 'vike-docpress:choice:'\n\nexport const readLegacyCodeBlockChoice = (choiceGroupName: string) => {\n if (typeof window === 'undefined') {\n return null\n }\n\n try {\n const value = window.localStorage.getItem(`${LEGACY_CODE_BLOCK_CHOICE_STORAGE_KEY_PREFIX}${choiceGroupName}`)\n return value || null\n } catch {\n return null\n }\n}\n","import type { DocsThemeConfig, ThemePreference } from '../../docs/types.js'\n\nexport const DEFAULT_THEME_PREFERENCE: ThemePreference = 'light'\nexport const DARK_THEME_MEDIA_QUERY = '(prefers-color-scheme: dark)'\n\nconst getDataTheme = (themePreference: ThemePreference, themeConfig: Required<DocsThemeConfig>) => {\n return themePreference === 'dark' ? themeConfig.dark : themeConfig.light\n}\n\nconst isThemePreference = (value: unknown): value is ThemePreference => {\n return value === 'light' || value === 'dark'\n}\n\nconst getSystemThemePreference = (fallbackThemePreference: ThemePreference): ThemePreference => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return fallbackThemePreference\n }\n\n return window.matchMedia(DARK_THEME_MEDIA_QUERY).matches ? 'dark' : 'light'\n}\n\nexport const resolveThemePreference = (\n themePreference: ThemePreference | null | undefined,\n themeConfig: Required<DocsThemeConfig>,\n) => {\n if (isThemePreference(themePreference)) {\n return themePreference\n }\n\n return getSystemThemePreference(themeConfig.defaultPreference)\n}\n\nexport const applyThemePreference = (\n themePreference: ThemePreference | null | undefined,\n themeConfig: Required<DocsThemeConfig>,\n) => {\n if (typeof document === 'undefined') {\n return\n }\n\n document.documentElement.setAttribute(\n 'data-theme',\n getDataTheme(resolveThemePreference(themePreference, themeConfig), themeConfig),\n )\n}\n","import { useDocsGlobalContext } from '../../docsGlobalContext'\nimport SocialIcons from '../SocialLinks'\nimport { ThemeSwitch } from '../ThemeSwitch'\n\nconst AsideButtons = () => {\n const docs = useDocsGlobalContext()\n\n return (\n <div className=\"flex-1 justify-end gap-2 flex\">\n <div className=\"hidden lg:block\">\n <SocialIcons />\n </div>\n <ThemeSwitch theme={docs.theme} />\n </div>\n )\n}\n\nexport default AsideButtons\n","import cm, { cmMerge } from '@classmatejs/react'\nimport { ChevronDown, Menu, TextSearch } from 'lucide-react'\nimport { useCallback } from 'react'\nimport { getDocsIconMapKey } from '../../../../docs/iconKeys.js'\nimport { withSiteBaseUrl } from '../../../../shared/assets'\nimport { renderInlineMarkdown } from '../../../../shared/renderInlineMarkdown'\nimport { useDocsGlobalContext } from '../../docsGlobalContext'\nimport { Brand } from '../Brand'\nimport AsideButtons from './AsideButtons'\n\nconst StyledNav = cm.nav`\n gap-4\n flex-1 items-center justify-center\n`\n\nconst StyledNavList = cm.ul`\n inline-flex items-center gap-2 font-semibold \n`\n\ninterface LandingPageNavbarProps {\n scheduleMegaMenuClose?: () => void\n scheduleMegaMenuOpen: (id?: string) => void\n openMegaMenu: (id?: string) => void\n toggleSearch: () => void\n closeMegaMenu?: () => void\n hoveredSectionId?: string\n isMegaMenuOpen: boolean\n}\n\nconst LandingPageNavbar = ({\n closeMegaMenu,\n openMegaMenu,\n scheduleMegaMenuOpen,\n scheduleMegaMenuClose,\n toggleSearch,\n hoveredSectionId,\n isMegaMenuOpen,\n}: LandingPageNavbarProps) => {\n const docs = useDocsGlobalContext()\n\n const handleClick = useCallback(() => {\n alert('TODO: Open mobile menu')\n }, [])\n\n return (\n <div className=\"flex flex-1 gap-4 pt-3 justify-between\">\n <div className=\"min-w-40\">\n <Brand brand={docs.brand} />\n </div>\n <StyledNav aria-label=\"Primary\" className=\"flex-1 flex hidden lg:flex\">\n <StyledNavList className=\"justify-end \">\n {docs.navbarItems.map((item) => {\n const ItemIcon = docs.docsIconMap[getDocsIconMapKey('section', item.id)]\n const isMegaMenuItemActive = isMegaMenuOpen && hoveredSectionId === item.id\n\n return (\n <li key={item.id}>\n <a\n href={withSiteBaseUrl(item.href)}\n className={'block'}\n onPointerEnter={() => scheduleMegaMenuOpen(item.id)}\n onPointerLeave={scheduleMegaMenuClose}\n onFocus={() => openMegaMenu(item.id)}\n onBlur={scheduleMegaMenuClose}\n onClick={closeMegaMenu}\n >\n <span\n className={cmMerge(\n 'btn btn-ghost text-base btn-sm lg:min-w-30 px-2 whitespace-nowrap tracking-tight',\n )}\n >\n {ItemIcon ? <ItemIcon className=\"size-4 shrink-0\" aria-hidden=\"true\" /> : null}\n {renderInlineMarkdown(item.title)}\n <ChevronDown\n className={cmMerge(\n 'size-4 shrink-0 transition-transform duration-200',\n isMegaMenuItemActive ? 'rotate-180' : 'rotate-0',\n )}\n />\n </span>\n </a>\n </li>\n )\n })}\n {docs.algolia ? (\n <li>\n <button\n type=\"button\"\n onClick={toggleSearch}\n className=\"btn btn-ghost btn-sm text-base lg:min-w-30 px-2 whitespace-nowrap tracking-tight\"\n >\n Search\n <TextSearch className=\"size-4\" />\n </button>\n </li>\n ) : null}\n </StyledNavList>\n </StyledNav>\n <div className=\"min-w-40 hidden lg:block\">\n <AsideButtons />\n </div>\n <button type=\"button\" className=\"block lg:hidden\" aria-label=\"Open navigation menu\" onClick={handleClick}>\n <Menu className=\"w-6 h-6\" />\n </button>\n </div>\n )\n}\n\nexport default LandingPageNavbar\n","import { cmMerge } from '@classmatejs/react'\nimport type { LucideIcon } from 'lucide-react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { usePageContext } from 'vike-react/usePageContext'\nimport { getDocsIconMapKey } from '../../../../docs/iconKeys.js'\nimport type {\n DocsIconMap,\n ResolvedDocsSection,\n ResolvedSidebarGroup,\n ResolvedSidebarNode,\n} from '../../../../docs/types.js'\nimport { withSiteBaseUrl } from '../../../../shared/assets.js'\nimport { renderInlineMarkdown } from '../../../../shared/renderInlineMarkdown.js'\nimport { useDocsGlobalContext } from '../../docsGlobalContext.js'\nimport { containsActiveHref, getGroupHref, getVisibleGroupItems, getVisibleNavItems } from '../docsNavigation.js'\nimport { LayoutComponent } from '../LayoutComponent.js'\n\nconst detailsTransitionDurationMs = 260\n\nconst findActiveItemId = (section: ResolvedDocsSection | undefined, currentHref: string): string | undefined => {\n if (!section) {\n return undefined\n }\n\n const findActiveNodeId = (items: ResolvedSidebarNode[]): string | undefined => {\n for (const item of items) {\n if (item.href === currentHref) {\n return item.id\n }\n\n if (item.kind === 'group') {\n const activeChildId = findActiveNodeId(item.items)\n\n if (activeChildId) {\n return activeChildId\n }\n }\n }\n\n return undefined\n }\n\n return findActiveNodeId(section.items)\n}\n\ninterface MegaMenuNodeLinkProps {\n title?: string\n href?: string\n icon?: LucideIcon\n isActive: boolean\n className?: string\n onClose: () => void\n}\n\nconst MegaMenuNodeLink = ({ title, href, icon: Icon, isActive, className, onClose }: MegaMenuNodeLinkProps) => {\n const content = (\n <span className=\"flex min-w-0 items-center gap-2\">\n {Icon ? <Icon className=\"size-4 shrink-0\" aria-hidden=\"true\" /> : null}\n <span className=\"min-w-0\">{title ? renderInlineMarkdown(title, { codeClassName: 'text-sm!' }) : null}</span>\n </span>\n )\n\n if (href) {\n return (\n <a\n className={cmMerge(\n 'flex min-w-0 items-center text-base-muted hover:text-base-content',\n isActive && 'text-primary! font-semibold',\n className,\n )}\n href={withSiteBaseUrl(href)}\n onClick={onClose}\n >\n {content}\n </a>\n )\n }\n\n return (\n <span\n className={cmMerge(\n 'flex min-w-0 items-center text-base-content',\n isActive && 'text-primary! font-semibold',\n className,\n )}\n >\n {content}\n </span>\n )\n}\n\ninterface MegaMenuNodeListProps {\n items: ResolvedSidebarNode[]\n activeItemId?: string\n currentHref: string\n docsIconMap: DocsIconMap\n onClose: () => void\n onContentHeightChange: (isOpening: boolean) => void\n openGroupId: string | null\n onOpenGroupChange: (groupId: string | null) => void\n depth?: number\n}\n\nconst MegaMenuNodeList = ({\n items,\n activeItemId,\n currentHref,\n docsIconMap,\n onClose,\n onContentHeightChange,\n openGroupId,\n onOpenGroupChange,\n depth = 0,\n}: MegaMenuNodeListProps) => {\n const visibleItems = getVisibleNavItems(items)\n\n if (visibleItems.length === 0) {\n return null\n }\n\n return (\n <ul className={cmMerge('menu menu-sm w-full p-0', depth > 0 && 'mt-1 pl-3')}>\n {visibleItems.map((item) => (\n <MegaMenuNode\n key={item.id}\n item={item}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n depth={depth}\n />\n ))}\n </ul>\n )\n}\n\ninterface MegaMenuNodeProps {\n item: ResolvedSidebarNode\n activeItemId?: string\n currentHref: string\n docsIconMap: DocsIconMap\n onClose: () => void\n onContentHeightChange: (isOpening: boolean) => void\n openGroupId: string | null\n onOpenGroupChange: (groupId: string | null) => void\n depth: number\n}\n\nconst MegaMenuNode = ({\n item,\n activeItemId,\n currentHref,\n docsIconMap,\n onClose,\n onContentHeightChange,\n openGroupId,\n onOpenGroupChange,\n depth,\n}: MegaMenuNodeProps) => {\n if (item.kind === 'page') {\n const PageIcon = docsIconMap[getDocsIconMapKey('page', item.id)]\n\n return (\n <li>\n <MegaMenuNodeLink\n title={item.navTitle || item.title}\n href={item.href}\n icon={PageIcon}\n isActive={activeItemId === item.id}\n className=\"rounded-field px-2 py-1.5 text-sm\"\n onClose={onClose}\n />\n </li>\n )\n }\n\n return (\n <MegaMenuGroup\n group={item}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n depth={depth}\n />\n )\n}\n\ninterface MegaMenuGroupProps {\n group: ResolvedSidebarGroup\n activeItemId?: string\n currentHref: string\n docsIconMap: DocsIconMap\n onClose: () => void\n onContentHeightChange: (isOpening: boolean) => void\n openGroupId: string | null\n onOpenGroupChange: (groupId: string | null) => void\n depth: number\n}\n\nconst MegaMenuGroup = ({\n group,\n activeItemId,\n currentHref,\n docsIconMap,\n onClose,\n onContentHeightChange,\n openGroupId,\n onOpenGroupChange,\n depth,\n}: MegaMenuGroupProps) => {\n const groupHref = getGroupHref(group)\n const visibleItems = getVisibleGroupItems(group)\n const GroupIcon = docsIconMap[getDocsIconMapKey('group', group.id)]\n const isActive = groupHref === currentHref || containsActiveHref(group.items, currentHref)\n const isCollapsible = group.collapsible !== undefined\n const isOpen = openGroupId === group.id\n\n if (!group.title) {\n return (\n <>\n {visibleItems.map((item) => (\n <MegaMenuNode\n key={item.id}\n item={item}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n depth={depth}\n />\n ))}\n </>\n )\n }\n\n const title = (\n <MegaMenuNodeLink\n title={group.title}\n href={groupHref ?? undefined}\n icon={GroupIcon}\n isActive={isActive}\n className={cmMerge(\n depth === 0\n ? cmMerge(!isCollapsible && 'mb-2', 'text-lg font-semibold tracking-tight')\n : cmMerge(!isCollapsible && 'rounded-field px-2 py-1.5', 'text-sm font-semibold'),\n )}\n onClose={onClose}\n />\n )\n const nestedItems =\n visibleItems.length > 0 ? (\n <MegaMenuNodeList\n items={visibleItems}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n depth={depth + 1}\n />\n ) : null\n\n if (isCollapsible) {\n return (\n <li>\n <details\n open={isOpen}\n onToggle={(event) => {\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (!event.nativeEvent.isTrusted) {\n return\n }\n\n const isOpening = event.currentTarget.open\n if (isOpening) {\n onOpenGroupChange(group.id)\n onContentHeightChange(true)\n return\n }\n\n if (openGroupId === group.id) {\n onOpenGroupChange(null)\n onContentHeightChange(false)\n }\n }}\n >\n <summary className={cmMerge('rounded-field flex min-h-0 items-center py-1.5', depth === 0 ? 'px-0' : 'px-2')}>\n {title}\n </summary>\n {nestedItems}\n </details>\n </li>\n )\n }\n\n return (\n <li>\n {title}\n {nestedItems}\n </li>\n )\n}\n\ninterface MegaMenuColumnProps {\n item: ResolvedSidebarNode\n activeItemId?: string\n currentHref: string\n docsIconMap: DocsIconMap\n onClose: () => void\n onContentHeightChange: (isOpening: boolean) => void\n openGroupId: string | null\n onOpenGroupChange: (groupId: string | null) => void\n}\n\nconst MegaMenuPageColumn = ({\n item,\n activeItemId,\n docsIconMap,\n onClose,\n}: MegaMenuColumnProps & { item: Extract<ResolvedSidebarNode, { kind: 'page' }> }) => {\n const PageIcon = docsIconMap[getDocsIconMapKey('page', item.id)]\n\n return (\n <li className=\"mb-6 flex-1 px-4 py-3\">\n <MegaMenuNodeLink\n title={item.navTitle || item.title}\n href={item.href}\n icon={PageIcon}\n isActive={activeItemId === item.id}\n className=\"text-lg font-semibold tracking-tight\"\n onClose={onClose}\n />\n </li>\n )\n}\n\nconst MegaMenuGroupColumn = ({\n item,\n activeItemId,\n currentHref,\n docsIconMap,\n onClose,\n onContentHeightChange,\n openGroupId,\n onOpenGroupChange,\n}: MegaMenuColumnProps & { item: ResolvedSidebarGroup }) => {\n const groupHref = getGroupHref(item)\n const visibleItems = getVisibleGroupItems(item)\n const GroupIcon = docsIconMap[getDocsIconMapKey('group', item.id)]\n const isActive = groupHref === currentHref || containsActiveHref(item.items, currentHref)\n\n if (!item.title) {\n return (\n <>\n {visibleItems.map((child) => (\n <MegaMenuColumn\n key={child.id}\n item={child}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n />\n ))}\n </>\n )\n }\n\n const title = (\n <MegaMenuNodeLink\n title={item.title}\n href={groupHref ?? undefined}\n icon={GroupIcon}\n isActive={isActive}\n className=\"mb-4 text-lg font-semibold tracking-tight\"\n onClose={onClose}\n />\n )\n const nestedItems =\n visibleItems.length > 0 ? (\n <MegaMenuNodeList\n items={visibleItems}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n depth={1}\n />\n ) : null\n\n return (\n <li className=\"mb-6 flex-1 px-4 py-3\">\n {title}\n {nestedItems}\n </li>\n )\n}\n\nconst MegaMenuColumn = ({\n item,\n activeItemId,\n currentHref,\n docsIconMap,\n onClose,\n onContentHeightChange,\n openGroupId,\n onOpenGroupChange,\n}: MegaMenuColumnProps) => {\n if (item.kind === 'page') {\n return (\n <MegaMenuPageColumn\n item={item}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n />\n )\n }\n\n return (\n <MegaMenuGroupColumn\n item={item}\n activeItemId={activeItemId}\n currentHref={currentHref}\n docsIconMap={docsIconMap}\n onClose={onClose}\n onContentHeightChange={onContentHeightChange}\n openGroupId={openGroupId}\n onOpenGroupChange={onOpenGroupChange}\n />\n )\n}\n\nconst hasVisibleItems = (items: ResolvedSidebarNode[]): boolean => {\n return items.some((item) => {\n if (!item.showInNav) {\n return false\n }\n\n if (item.kind === 'group') {\n return Boolean(item.title || item.href || hasVisibleItems(item.items))\n }\n\n return true\n })\n}\n\nexport const MegaMenu = ({\n isActive,\n onOpen,\n onClose,\n sections,\n activeSectionId,\n hoveredSectionId,\n isLandingPage,\n}: {\n isActive: boolean\n onOpen: (sectionId?: string) => void\n onClose: () => void\n sections: ResolvedDocsSection[]\n activeSectionId?: string\n hoveredSectionId?: string\n isLandingPage: boolean\n}) => {\n const docs = useDocsGlobalContext()\n const { urlPathname } = usePageContext()\n const visibleSectionId = hoveredSectionId ?? activeSectionId ?? sections[0]?.id\n const [visibleSectionElement, setVisibleSectionElement] = useState<HTMLDivElement | null>(null)\n const [contentHeight, setContentHeight] = useState(0)\n const [openGroupId, setOpenGroupId] = useState<string | null>(null)\n const contentHeightAnimationFrameRef = useRef<number | null>(null)\n const contentHeightTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const activeItemId = useMemo(\n () =>\n findActiveItemId(\n sections.find((section) => section.id === visibleSectionId),\n urlPathname,\n ),\n [sections, visibleSectionId, urlPathname],\n )\n\n const clearScheduledContentHeightUpdate = useCallback(() => {\n if (contentHeightAnimationFrameRef.current !== null) {\n cancelAnimationFrame(contentHeightAnimationFrameRef.current)\n contentHeightAnimationFrameRef.current = null\n }\n\n if (contentHeightTimeoutRef.current !== null) {\n clearTimeout(contentHeightTimeoutRef.current)\n contentHeightTimeoutRef.current = null\n }\n }, [])\n\n const setContentHeightFromDisplayedHeight = useCallback(() => {\n if (visibleSectionElement === null) {\n return\n }\n\n setContentHeight(Math.ceil(visibleSectionElement.offsetHeight))\n }, [visibleSectionElement])\n\n const setContentHeightFromFullHeight = useCallback(() => {\n if (visibleSectionElement === null) {\n return\n }\n\n setContentHeight(Math.ceil(visibleSectionElement.scrollHeight))\n }, [visibleSectionElement])\n\n const scheduleContentHeightUpdate = useCallback(\n (isOpening: boolean) => {\n clearScheduledContentHeightUpdate()\n\n if (isOpening) {\n contentHeightAnimationFrameRef.current = requestAnimationFrame(() => {\n setContentHeightFromFullHeight()\n contentHeightAnimationFrameRef.current = null\n })\n }\n\n contentHeightTimeoutRef.current = setTimeout(() => {\n setContentHeightFromDisplayedHeight()\n contentHeightTimeoutRef.current = null\n }, detailsTransitionDurationMs)\n },\n [clearScheduledContentHeightUpdate, setContentHeightFromDisplayedHeight, setContentHeightFromFullHeight],\n )\n\n const closeMegaMenu = useCallback(() => {\n setOpenGroupId(null)\n onClose()\n }, [onClose])\n\n useEffect(() => {\n if (!isActive || !visibleSectionId || visibleSectionElement === null) {\n return\n }\n\n contentHeightAnimationFrameRef.current = requestAnimationFrame(() => {\n setContentHeightFromDisplayedHeight()\n contentHeightAnimationFrameRef.current = null\n })\n\n return clearScheduledContentHeightUpdate\n }, [\n clearScheduledContentHeightUpdate,\n isActive,\n setContentHeightFromDisplayedHeight,\n visibleSectionElement,\n visibleSectionId,\n ])\n\n useEffect(() => clearScheduledContentHeightUpdate, [clearScheduledContentHeightUpdate])\n\n useEffect(() => {\n if (!visibleSectionId) {\n return\n }\n\n setOpenGroupId(null)\n }, [visibleSectionId])\n\n useEffect(() => {\n if (!isActive) {\n setOpenGroupId(null)\n }\n }, [isActive])\n\n return (\n <div\n className={cmMerge('fixed top-14 left-0 z-3 w-full', isActive ? 'pointer-events-auto' : 'pointer-events-none')}\n onPointerEnter={() => onOpen(visibleSectionId)}\n onPointerLeave={closeMegaMenu}\n >\n <div\n className={cmMerge(\n isActive ? 'opacity-100' : 'opacity-0',\n 'pointer-events-none absolute top-0 left-0 h-svh w-full bg-linear-to-t from-base-100/60 to-base-100 transition-opacity duration-200 backdrop-blur-md',\n )}\n />\n <div\n className={cmMerge(\n 'relative z-4 overflow-hidden transition-[height] bg-base-100 duration-300 ease-out pointer-events-none',\n isLandingPage && !isActive ? '' : 'pointer-events-auto lg:border-b lg:border-base-muted-light',\n )}\n // biome-ignore lint/nursery/noInlineStyles: needed here\n style={{ height: isActive ? contentHeight : 0 }}\n >\n <LayoutComponent $size=\"sm\">\n <div\n className={cmMerge(\n isActive ? 'translate-y-0 opacity-100' : '-translate-y-10 opacity-0',\n 'relative z-4 transition-all duration-300',\n )}\n >\n {sections.map((section) => (\n <div\n key={section.id}\n ref={section.id === visibleSectionId ? setVisibleSectionElement : undefined}\n className={cmMerge(\n section.id === visibleSectionId ? 'opacity-100' : 'opacity-0 pointer-events-none',\n 'transition-all absolute w-full duration-300',\n )}\n >\n {hasVisibleItems(section.items) && (\n <ul className=\"menu mt-2 flex-row items-start p-0 w-full\">\n {getVisibleNavItems(section.items).map((child) => (\n <MegaMenuColumn\n key={child.id}\n item={child}\n activeItemId={activeItemId}\n currentHref={urlPathname}\n docsIconMap={docs.docsIconMap}\n onClose={closeMegaMenu}\n onContentHeightChange={scheduleContentHeightUpdate}\n openGroupId={openGroupId}\n onOpenGroupChange={setOpenGroupId}\n />\n ))}\n </ul>\n )}\n </div>\n ))}\n </div>\n </LayoutComponent>\n </div>\n </div>\n )\n}\n","import type { ResolvedSidebarGroup, ResolvedSidebarNode } from '../../../docs/types.js'\n\nexport const containsActiveHref = (items: ResolvedSidebarNode[], currentHref: string): boolean => {\n return items.some((item) => {\n if (item.kind === 'page') {\n return item.href === currentHref\n }\n\n return item.href === currentHref || containsActiveHref(item.items, currentHref)\n })\n}\n\nexport const hasActiveItem = (items: ResolvedSidebarNode[], activeHref: string) => containsActiveHref(items, activeHref)\n\nexport const getVisibleNavItems = (items: ResolvedSidebarNode[]) => items.filter((item) => item.showInNav)\n\nexport const getVisibleGroupItems = (group: ResolvedSidebarGroup) => {\n const visibleItems = getVisibleNavItems(group.items)\n\n if (!group.href) {\n return visibleItems\n }\n\n return visibleItems.filter((item): item is ResolvedSidebarNode => {\n if (item.kind !== 'page') {\n return true\n }\n\n return item.href !== group.href\n })\n}\n\nexport const getGroupHref = (group: ResolvedSidebarGroup): string | null => group.href ?? null\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport type { ResolvedDocsSection } from '../../../../docs/types'\n\nconst megaMenuOpenDelayMs = 120\nconst megaMenuCloseDelayMs = 140\n\nconst useMegaMenu = ({ activeSectionId, sections }: { activeSectionId?: string; sections: ResolvedDocsSection[] }) => {\n const [isMegaMenuOpen, setIsMegaMenuOpen] = useState(false)\n const megaMenuOpenTimeoutRef = useRef<number | null>(null)\n const megaMenuCloseTimeoutRef = useRef<number | null>(null)\n const [hoveredSectionId, setHoveredSectionId] = useState<string | undefined>(activeSectionId ?? sections[0]?.id)\n\n const clearMegaMenuOpenTimeout = useCallback(() => {\n if (megaMenuOpenTimeoutRef.current === null) {\n return\n }\n\n window.clearTimeout(megaMenuOpenTimeoutRef.current)\n megaMenuOpenTimeoutRef.current = null\n }, [])\n\n const clearMegaMenuCloseTimeout = useCallback(() => {\n if (megaMenuCloseTimeoutRef.current === null) {\n return\n }\n\n window.clearTimeout(megaMenuCloseTimeoutRef.current)\n megaMenuCloseTimeoutRef.current = null\n }, [])\n\n const openMegaMenu = (currentSectionId?: string) => {\n if (currentSectionId !== undefined) {\n setHoveredSectionId(currentSectionId)\n }\n\n clearMegaMenuOpenTimeout()\n clearMegaMenuCloseTimeout()\n setIsMegaMenuOpen(true)\n }\n\n const scheduleMegaMenuOpen = (currentSectionId?: string) => {\n if (currentSectionId !== undefined) {\n setHoveredSectionId(currentSectionId)\n }\n\n clearMegaMenuOpenTimeout()\n clearMegaMenuCloseTimeout()\n\n if (isMegaMenuOpen) {\n setIsMegaMenuOpen(true)\n return\n }\n\n megaMenuOpenTimeoutRef.current = window.setTimeout(() => {\n setIsMegaMenuOpen(true)\n megaMenuOpenTimeoutRef.current = null\n }, megaMenuOpenDelayMs)\n }\n\n const closeMegaMenu = () => {\n clearMegaMenuOpenTimeout()\n clearMegaMenuCloseTimeout()\n setIsMegaMenuOpen(false)\n }\n\n const scheduleMegaMenuClose = () => {\n clearMegaMenuOpenTimeout()\n clearMegaMenuCloseTimeout()\n megaMenuCloseTimeoutRef.current = window.setTimeout(() => {\n setIsMegaMenuOpen(false)\n megaMenuCloseTimeoutRef.current = null\n }, megaMenuCloseDelayMs)\n }\n\n useEffect(() => {\n return () => {\n clearMegaMenuOpenTimeout()\n clearMegaMenuCloseTimeout()\n }\n }, [clearMegaMenuCloseTimeout, clearMegaMenuOpenTimeout])\n\n useEffect(() => {\n setHoveredSectionId(activeSectionId ?? sections[0]?.id)\n }, [activeSectionId, sections])\n\n return {\n isMegaMenuOpen,\n hoveredSectionId,\n openMegaMenu,\n scheduleMegaMenuOpen,\n closeMegaMenu,\n scheduleMegaMenuClose,\n }\n}\n\nexport default useMegaMenu\n","import { useEffect, useMemo } from 'react'\nimport type { DocsConfig } from '../../../docs/types.js'\nimport { useDocsUserSettingsStore } from '../store/settings-store.js'\nimport { applyThemePreference, resolveThemePreference } from '../theme.js'\n\nexport const UserSettingsSync = ({ theme }: { theme?: DocsConfig['theme'] }) => {\n const themePreference = useDocsUserSettingsStore((state) => state.themePreference)\n const lightTheme = theme?.light ?? 'consumer-light'\n const darkTheme = theme?.dark ?? 'consumer-dark'\n const defaultThemePreference = theme?.defaultPreference ?? 'light'\n const resolvedTheme = useMemo(\n () => ({ light: lightTheme, dark: darkTheme, defaultPreference: defaultThemePreference }),\n [darkTheme, defaultThemePreference, lightTheme],\n )\n\n const effectiveThemePreference = resolveThemePreference(themePreference, resolvedTheme)\n\n useEffect(() => {\n applyThemePreference(effectiveThemePreference, resolvedTheme)\n }, [effectiveThemePreference, resolvedTheme])\n\n return null\n}\n","import type {\n UniversalMdxRuntimeValue,\n UniversalResolvedDocLink,\n UniversalResolvedOverviewItem,\n} from '../../mdx/components/types.js'\nimport { withSiteBaseUrl } from '../../shared/assets.js'\nimport type { DocsGlobalContextData } from '../../docs/types.js'\nimport {\n getActiveSectionByPathname,\n getResolvedPageByPathname,\n getResolvedSectionById,\n isSamePagePathname,\n resolveDocsHref,\n} from '../../docs/runtime.js'\nimport { docsCodeBlockChoiceStore } from './store/settings-store.js'\n\nconst isExternalHref = (href: string) => {\n return /^(?:[a-z]+:)?\\/\\//i.test(href) || href.startsWith('mailto:') || href.startsWith('tel:')\n}\n\nconst splitHref = (href: string) => {\n const [pathname, hash = ''] = href.split('#')\n return {\n pathname,\n hash: hash ? `#${hash}` : '',\n }\n}\n\nconst resolveDocLink = (options: {\n docs: DocsGlobalContextData\n currentPathname: string\n href: string\n}): UniversalResolvedDocLink | null => {\n const { currentPathname, href } = options\n if (href.startsWith('#') || isExternalHref(href)) {\n return null\n }\n\n const { pathname, hash } = splitHref(href)\n const docsPathname = resolveDocsHref(options.docs.basePath, pathname)\n\n if (!docsPathname) {\n return null\n }\n\n const page = getResolvedPageByPathname(options.docs, docsPathname)\n if (!page) {\n return null\n }\n\n const section = getResolvedSectionById(options.docs, page.sectionId)\n\n return {\n href: withSiteBaseUrl(`${page.href}${hash}`),\n title: page.title,\n breadcrumb: section ? [section.navTitle] : [],\n isCurrentPage: isSamePagePathname(page, currentPathname),\n }\n}\n\nconst resolveOverviewItem = (options: {\n docs: DocsGlobalContextData\n id: string\n}): UniversalResolvedOverviewItem | null => {\n const page = options.docs.pages.find((candidate) => candidate.id === options.id)\n\n if (!page) {\n return null\n }\n\n return {\n title: page.title,\n href: withSiteBaseUrl(page.href),\n excerpt: page.description ?? null,\n }\n}\n\nexport const getMdxRuntimeValue = (options: {\n docs: DocsGlobalContextData\n currentPathname: string\n}): UniversalMdxRuntimeValue => {\n const { currentPathname, docs } = options\n const activeSection = getActiveSectionByPathname(docs, currentPathname)\n const currentPage = getResolvedPageByPathname(docs, currentPathname)\n\n return {\n locale: 'en',\n codeBlockChoices: docsCodeBlockChoiceStore,\n localizeHref: (href) => {\n if (href.startsWith('#') || isExternalHref(href)) {\n return href\n }\n\n const { pathname, hash } = splitHref(href)\n const docsPathname = resolveDocsHref(docs.basePath, pathname)\n const page = docsPathname ? getResolvedPageByPathname(docs, docsPathname) : null\n\n if (!page) {\n if (docsPathname && !pathname.startsWith('/')) {\n return withSiteBaseUrl(`${docsPathname}${hash}`)\n }\n\n return withSiteBaseUrl(href)\n }\n\n return withSiteBaseUrl(`${page.href}${hash}`)\n },\n resolveDocLink: ({ href }) =>\n resolveDocLink({\n docs,\n currentPathname,\n href,\n }),\n resolveOverviewItem: (id) =>\n resolveOverviewItem({\n docs,\n id,\n }),\n t: (group, key) => {\n if (group === 'docs' && key === 'onThisPage') {\n return 'On this page'\n }\n\n if (group === 'docs' && key === 'previous') {\n return 'Previous'\n }\n\n if (group === 'docs' && key === 'next') {\n return 'Next'\n }\n\n if (group === 'docs' && key === 'currentSection') {\n return activeSection?.navTitle ?? currentPage?.title ?? 'Docs'\n }\n\n return key\n },\n }\n}\n","import type { ResolvedDocsHeadConfig } from '../../../../docs/types.js'\n\nexport const FaviconLinks = ({ head }: { head: ResolvedDocsHeadConfig }) => {\n const { appleTouchIcon, faviconIco, faviconSvg } = head\n\n return (\n <>\n {appleTouchIcon && <link rel=\"apple-touch-icon\" href={appleTouchIcon} />}\n {faviconSvg && <link rel=\"icon\" type=\"image/svg+xml\" href={faviconSvg} />}\n {faviconIco && (\n <>\n <link rel=\"shortcut icon\" type=\"image/x-icon\" href={faviconIco} />\n <link rel=\"icon\" type=\"image/x-icon\" href={faviconIco} />\n </>\n )}\n </>\n )\n}\n","import { nivelAssetUrl } from '../../../../shared/assets.js'\nimport type { ResolvedDocsHeadConfig } from '../../../../docs/types.js'\n\nconst defaultInterFontStylesheetHref = nivelAssetUrl('fonts/fonts-inter.css')\n\nconst defaultInterFontCss = `\n@font-face {\n font-display: swap;\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n src: url('${nivelAssetUrl('fonts/inter-v20-latin-regular.woff2')}') format('woff2');\n}\n\n@font-face {\n font-display: swap;\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n src: url('${nivelAssetUrl('fonts/inter-v20-latin-600.woff2')}') format('woff2');\n}\n\n@font-face {\n font-display: swap;\n font-family: 'Inter';\n font-style: normal;\n font-weight: 800;\n src: url('${nivelAssetUrl('fonts/inter-v20-latin-800.woff2')}') format('woff2');\n}\n`\n\nexport const FontLinks = ({ head }: { head: ResolvedDocsHeadConfig }) => {\n if (!head.customFonts) {\n return null\n }\n\n const { fontStylesheetHref, fontPreloadHrefs } = head\n const effectivePreloadHrefs = fontPreloadHrefs ?? []\n const shouldInlineDefaultInterFonts = fontStylesheetHref === defaultInterFontStylesheetHref\n\n return (\n <>\n {effectivePreloadHrefs.map((href) => (\n <link key={href} rel=\"preload\" href={href} as=\"font\" type=\"font/woff2\" crossOrigin=\"anonymous\" />\n ))}\n {shouldInlineDefaultInterFonts ? <style dangerouslySetInnerHTML={{ __html: defaultInterFontCss }} /> : null}\n {fontStylesheetHref && !shouldInlineDefaultInterFonts ? (\n <link rel=\"stylesheet\" href={fontStylesheetHref} />\n ) : null}\n </>\n )\n}\n","import type { DocsThemeConfig } from '../../../../docs/types.js'\nimport { USER_SETTINGS_STORAGE_KEY } from '../../store/settings-storage.js'\nimport { DARK_THEME_MEDIA_QUERY } from '../../theme.js'\n\nconst getThemeBootstrapScript = (theme: Required<DocsThemeConfig>) => {\n return `(() => {\n const storageKey = ${JSON.stringify(USER_SETTINGS_STORAGE_KEY)};\n const darkThemeMediaQuery = ${JSON.stringify(DARK_THEME_MEDIA_QUERY)};\n const defaultThemePreference = ${JSON.stringify(theme.defaultPreference)};\n const themes = {\n light: ${JSON.stringify(theme.light)},\n dark: ${JSON.stringify(theme.dark)}\n };\n\n try {\n const persistedValue = window.localStorage.getItem(storageKey);\n const parsedValue = persistedValue ? JSON.parse(persistedValue) : null;\n const storedThemePreference = parsedValue?.state?.themePreference;\n const themePreference =\n storedThemePreference === 'light' || storedThemePreference === 'dark'\n ? storedThemePreference\n : typeof window.matchMedia === 'function'\n ? window.matchMedia(darkThemeMediaQuery).matches\n ? 'dark'\n : 'light'\n : defaultThemePreference;\n\n document.documentElement.setAttribute('data-theme', themes[themePreference]);\n } catch {\n const themePreference =\n typeof window.matchMedia === 'function'\n ? window.matchMedia(darkThemeMediaQuery).matches\n ? 'dark'\n : 'light'\n : defaultThemePreference;\n\n document.documentElement.setAttribute('data-theme', themes[themePreference]);\n }\n})();`\n}\n\nexport const ThemeBootstrap = ({ theme }: { theme: Required<DocsThemeConfig> }) => {\n return (\n <script\n dangerouslySetInnerHTML={{\n __html: getThemeBootstrapScript(theme),\n }}\n />\n )\n}\n","import { useDocsFromPageGlobalContext } from '../../docsGlobalContext.js'\nimport { FaviconLinks } from './FaviconLinks.js'\nimport { FontLinks } from './FontLinks.js'\nimport { ThemeBootstrap } from './ThemeBootstrap.js'\n\nexport const MetaHead = () => {\n const docs = useDocsFromPageGlobalContext()\n const shouldBlockCrawlers = docs.robots === false\n\n return (\n <>\n <ThemeBootstrap theme={docs.theme} />\n <FaviconLinks head={docs.head} />\n <FontLinks head={docs.head} />\n {shouldBlockCrawlers ? <meta name=\"robots\" content=\"noindex, nofollow\" /> : null}\n </>\n )\n}\n","import cm from '@classmatejs/react'\n\n// https://github.com/tailwindlabs/tailwindcss-typography\n// see full styling list in global.css\nexport const ProseContainer = cm.section`\n prose-container\n`\n","import type { ReactNode } from 'react'\nimport { useData } from 'vike-react/useData'\nimport type { DocPageData } from '../../docs/types.js'\nimport { DocsPagination } from './components/DocsPagination.js'\nimport { DocsFooter } from './components/Footer.js'\nimport { HeadingLinkCopy } from './components/HeadingLinkCopy.js'\nimport { LayoutComponent } from './components/LayoutComponent.js'\nimport { Sidebar } from './components/Sidebar.js'\nimport { TableOfContents } from './components/TableOfContents.js'\nimport TableOfContentsMobile from './components/TableOfContentsMobile.js'\nimport { useTableOfContentsState } from './components/useTableOfContentsState.js'\n\ninterface DocsLayoutProps {\n children: ReactNode\n}\n\nexport const DocsLayout = ({ children }: DocsLayoutProps) => {\n const data = useData() as DocPageData\n const { activeHeadingId, effectiveHeadings, setActiveHeadingId } = useTableOfContentsState({\n headings: data.headings,\n })\n\n return (\n <>\n <HeadingLinkCopy />\n <div className=\"absolute top-0 left-0 h-[60svh] w-full bg-radial-[at_65%_-85%] from-primary-muted-light/40 to-65% dark:from-primary-muted-light/60\" />\n <LayoutComponent>\n <div className=\"lg:flex gap-14\">\n <Sidebar currentHref={data.page.href} activeSectionId={data.page.sectionId} />\n <main className=\"min-w-0 flex-1 basis-auto shrink\">\n <TableOfContentsMobile\n headings={effectiveHeadings}\n tableOfContents={data.page.tableOfContents && effectiveHeadings.length > 0}\n pageTitle={data.page.title}\n currentHref={data.page.href}\n activeHeadingId={activeHeadingId}\n setActiveHeadingId={setActiveHeadingId}\n />\n <div className=\"mt-10 min-w-0\">{children}</div>\n <DocsPagination previousPage={data.previousPage} nextPage={data.nextPage} />\n <DocsFooter />\n </main>\n <TableOfContents\n headings={effectiveHeadings}\n tableOfContents={data.page.tableOfContents}\n activeHeadingId={activeHeadingId}\n setActiveHeadingId={setActiveHeadingId}\n />\n </div>\n </LayoutComponent>\n </>\n )\n}\n","import { cmMerge } from '@classmatejs/react'\nimport { ChevronLeft, ChevronRight } from 'lucide-react'\nimport type { DocPageData } from '../../../docs/types.js'\nimport { withSiteBaseUrl } from '../../../shared/assets.js'\nimport { renderInlineMarkdown } from '../../../shared/renderInlineMarkdown.js'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\nimport DocsBreadcrumbs from './DocsBreadcrumbs.js'\n\ninterface PaginationCardProps {\n item: NonNullable<DocPageData['previousPage']>\n direction: 'previous' | 'next'\n isOffset?: boolean\n}\n\nconst PaginationCard = ({ item, direction, isOffset }: PaginationCardProps) => {\n const isPrevious = direction === 'previous'\n\n return (\n <a\n href={withSiteBaseUrl(item.href)}\n className={cmMerge(\n 'group rounded-box border border-base-muted-light bg-base-100 p-5 no-underline hover:border-primary-muted-medium hover:bg-base-200',\n isPrevious ? 'text-left' : 'text-right',\n isOffset && 'sm:col-start-2',\n )}\n aria-label={`${isPrevious ? 'Previous' : 'Next'}: ${item.title}`}\n >\n <div className=\"flex flex-col h-full justify-between gap-2\">\n <div className={cmMerge('flex gap-1 text-base-muted', isPrevious ? 'justify-start' : 'justify-end')}>\n <DocsBreadcrumbs currentHref={item.href} />\n </div>\n <p className=\"text-lg font-semibold text-base-content\">{renderInlineMarkdown(item.title)}</p>\n <div\n className={cmMerge(\n 'flex flex-1 items-end gap-1 text-base-muted group-hover:text-base-content',\n isPrevious ? 'justify-start' : 'justify-end',\n )}\n >\n <div className=\"flex items-center\">\n {isPrevious && <ChevronLeft className=\"size-4\" />}\n <span>{isPrevious ? 'Previous' : 'Next'}</span>\n {!isPrevious && <ChevronRight className=\"size-4\" />}\n </div>\n </div>\n </div>\n </a>\n )\n}\n\ninterface DocsPaginationProps {\n previousPage?: DocPageData['previousPage']\n nextPage?: DocPageData['nextPage']\n}\n\nexport const DocsPagination = ({\n previousPage: previousPageProp = null,\n nextPage: nextPageProp = null,\n}: DocsPaginationProps) => {\n const paginationEnabled = useDocsGlobalContext().footer.pagination\n const previousPage = previousPageProp\n const nextPage = nextPageProp\n\n if (!paginationEnabled) {\n return null\n }\n\n if (!previousPage && !nextPage) {\n return null\n }\n\n return (\n <nav className=\"mb-10 mt-16\" aria-label=\"Previous Next\">\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {previousPage && <PaginationCard item={previousPage} direction=\"previous\" />}\n {nextPage && <PaginationCard isOffset={!previousPage} item={nextPage} direction=\"next\" />}\n </div>\n </nav>\n )\n}\n","import { ChevronsRight } from 'lucide-react'\nimport { getDocsIconMapKey } from '../../../docs/iconKeys.js'\nimport { getActiveSectionByPathname } from '../../../docs/runtime.js'\nimport type { ResolvedSidebarNode } from '../../../docs/types.js'\nimport { renderInlineMarkdown } from '../../../shared/renderInlineMarkdown.js'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\n\ntype BreadcrumbItem = {\n id: string\n kind: 'group' | 'page'\n title: string\n}\n\nconst dedupeBreadcrumbs = (items: BreadcrumbItem[]) => {\n return items.filter((item, index) => index === 0 || items[index - 1]?.title !== item.title)\n}\n\nconst getSidebarBreadcrumbs = (items: ResolvedSidebarNode[], currentHref: string): BreadcrumbItem[] | null => {\n for (const item of items) {\n if (item.kind === 'page') {\n if (item.href === currentHref) {\n return [{ id: item.id, kind: item.kind, title: item.navTitle }]\n }\n\n continue\n }\n\n if (item.href === currentHref) {\n return item.title ? [{ id: item.id, kind: item.kind, title: item.title }] : []\n }\n\n const nestedBreadcrumbs = getSidebarBreadcrumbs(item.items, currentHref)\n\n if (!nestedBreadcrumbs) {\n continue\n }\n\n return dedupeBreadcrumbs(item.title ? [{ id: item.id, kind: item.kind, title: item.title }] : nestedBreadcrumbs)\n }\n\n return null\n}\n\nconst DocsBreadcrumbs = ({ currentHref }: { currentHref: string }) => {\n const docs = useDocsGlobalContext()\n const activeSection = getActiveSectionByPathname(docs, currentHref)\n const breadcrumbItems = dedupeBreadcrumbs([\n ...(activeSection ? (getSidebarBreadcrumbs(activeSection.items, currentHref) ?? []) : []),\n ])\n\n return (\n <span className=\"flex items-center text-sm gap-1 min-w-0 overflow-hidden text-primary\">\n {breadcrumbItems.map((item, index) => {\n const Icon = docs.docsIconMap[getDocsIconMapKey(item.kind, item.id)]\n\n return (\n <span key={item.id} className=\"contents\">\n {index > 0 ? <ChevronsRight className=\"size-4 shrink-0 text-base-muted-medium\" /> : null}\n <span className=\"flex min-w-0 items-center gap-1.5\">\n {Icon ? <Icon className=\"size-3 shrink-0\" aria-hidden=\"true\" /> : null}\n <span className=\"truncate\">{renderInlineMarkdown(item.title, { codeClassName: 'text-sm!' })}</span>\n </span>\n </span>\n )\n })}\n </span>\n )\n}\n\nexport default DocsBreadcrumbs\n","import { Bug, Pencil } from 'lucide-react'\nimport { memo } from 'react'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\nimport { Brand } from './Brand.js'\nimport SocialIcons from './SocialLinks.js'\n\nexport const DocsFooter = memo(() => {\n const { brand } = useDocsGlobalContext()\n\n return (\n <footer className=\"mb-8 mt-12 text-sm border-t border-base-muted-light pt-10\">\n <div className=\"mb-16 flex items-center gap-2\">\n <a href=\"edit\" className=\"btn btn-sm btn-primary btn-soft\">\n <Pencil className=\"size-3\" /> Edit this page\n </a>\n <a href=\"edit\" className=\"btn btn-sm btn-primary btn-soft\">\n <Bug className=\"size-3\" /> Report Issue\n </a>\n </div>\n <div className=\"flex justify-between items-center\">\n <SocialIcons />\n <div className=\"flex gap-2 items-center\">{brand && <Brand brand={brand} noText />}</div>\n </div>\n </footer>\n )\n})\n","import { useEffect } from 'react'\n\nconst copyText = async (value: string) => {\n try {\n await navigator.clipboard.writeText(value)\n return\n } catch {\n const textarea = document.createElement('textarea')\n textarea.value = value\n textarea.setAttribute('readonly', 'true')\n textarea.style.position = 'fixed'\n textarea.style.opacity = '0'\n document.body.appendChild(textarea)\n textarea.select()\n document.execCommand('copy')\n document.body.removeChild(textarea)\n }\n}\n\nconst getHeadingLink = (target: EventTarget | null) =>\n target instanceof Element ? target.closest('a[data-copy-heading-link]') : null\n\nexport const HeadingLinkCopy = () => {\n useEffect(() => {\n const handleClick = (event: MouseEvent) => {\n if (event.defaultPrevented || event.button !== 0) {\n return\n }\n\n if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) {\n return\n }\n\n const link = getHeadingLink(event.target)\n if (!link) {\n return\n }\n\n const href = link.getAttribute('href')\n if (!href) {\n return\n }\n\n const nextUrl = new URL(href, window.location.href)\n if (nextUrl.hash && window.location.hash !== nextUrl.hash) {\n history.replaceState(null, '', nextUrl.hash)\n }\n\n void copyText(nextUrl.href)\n }\n\n document.addEventListener('click', handleClick)\n\n return () => {\n document.removeEventListener('click', handleClick)\n }\n }, [])\n\n return null\n}\n","import { cmMerge } from '@classmatejs/react'\nimport type { LucideIcon } from 'lucide-react'\nimport type { ReactNode } from 'react'\nimport { memo, useEffect, useRef } from 'react'\nimport { usePageContext } from 'vike-react/usePageContext'\nimport { getDocsIconMapKey } from '../../../docs/iconKeys.js'\nimport { getActiveSectionByPathname } from '../../../docs/runtime.js'\nimport type {\n DocsIconMap,\n ResolvedDocsSection,\n ResolvedSidebarGroup,\n ResolvedSidebarNode,\n} from '../../../docs/types.js'\nimport { withSiteBaseUrl } from '../../../shared/assets.js'\nimport { renderInlineMarkdown } from '../../../shared/renderInlineMarkdown.js'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\nimport { useDocsSidebarActions, useDocsSidebarStore } from '../store/runtime-store.js'\nimport {\n containsActiveHref,\n getGroupHref,\n getVisibleGroupItems,\n getVisibleNavItems,\n hasActiveItem,\n} from './docsNavigation.js'\n\nconst useAutoOpenDetails = (nodeId: string, isOpenByDefault: boolean, hasActiveDescendant: boolean) => {\n const storedOpen = useDocsSidebarStore((state) => state.openNodes[nodeId])\n const { setNodeOpen } = useDocsSidebarActions()\n const isOpen = storedOpen === undefined ? isOpenByDefault || hasActiveDescendant : storedOpen || hasActiveDescendant\n\n useEffect(() => {\n if (hasActiveDescendant) {\n setNodeOpen(nodeId, true)\n return\n }\n\n if (storedOpen === undefined && isOpenByDefault) {\n setNodeOpen(nodeId, true)\n }\n }, [hasActiveDescendant, isOpenByDefault, nodeId, setNodeOpen, storedOpen])\n\n return {\n isOpen,\n setIsOpen: (nextOpen: boolean) => setNodeOpen(nodeId, nextOpen),\n }\n}\n\ninterface SidebarPageLinkProps {\n title: string\n href: string\n currentHref: string\n icon?: LucideIcon\n}\n\nconst SidebarPageLink = ({ title, href, currentHref, icon: Icon }: SidebarPageLinkProps) => {\n return (\n <li className=\"rounded-none\">\n <a\n href={withSiteBaseUrl(href)}\n className={cmMerge(\n 'rounded-field py-2 text-base-muted hover:text-base-content justify-start hover:bg-base-200',\n href === currentHref && 'text-primary! bg-base-200',\n )}\n >\n <span className=\"flex items-center gap-2\">\n {Icon ? <Icon className=\"size-4 shrink-0\" aria-hidden=\"true\" /> : null}\n <span>{renderInlineMarkdown(title, { codeClassName: 'text-sm!' })}</span>\n </span>\n </a>\n </li>\n )\n}\n\nconst SidebarGroupDivider = ({ title, icon: Icon }: { title: string; icon?: LucideIcon }) => {\n return (\n <li className=\"ml-3 mt-2 mb-2 border-b border-base-muted-light text-xs text-base-muted-medium pointer-events-none font-semibold\">\n <span className=\"-ml-3 flex items-center gap-2\">\n {Icon ? <Icon className=\"size-4 shrink-0\" aria-hidden=\"true\" /> : null}\n <span>{renderInlineMarkdown(title, { codeClassName: 'text-sm!' })}</span>\n </span>\n </li>\n )\n}\n\ninterface SidebarGroupTitleProps {\n title?: string\n href?: string\n isActive: boolean\n allowNavigation?: boolean\n icon?: LucideIcon\n}\n\nconst SidebarGroupTitle = ({ title, href, isActive, allowNavigation = false, icon: Icon }: SidebarGroupTitleProps) => {\n const content = (\n <span className=\"flex items-center gap-2 font-base\">\n {Icon ? <Icon className=\"size-4 shrink-0\" aria-hidden=\"true\" /> : null}\n <span className={cmMerge(isActive && allowNavigation && 'text-primary!')}>\n {title ? renderInlineMarkdown(title, { codeClassName: 'text-sm!' }) : null}\n </span>\n </span>\n )\n\n if (allowNavigation && href) {\n return (\n <a\n href={withSiteBaseUrl(href)}\n className={cmMerge(\n 'flex items-center gap-2 rounded-field py-2 text-base-muted hover:text-base-content no-underline',\n isActive && 'text-primary!',\n )}\n >\n {content}\n </a>\n )\n }\n\n return <span className=\"flex items-center gap-2 rounded-field py-2 text-base-content\">{content}</span>\n}\n\nconst renderSidebarItems = (\n items: ResolvedSidebarNode[],\n currentHref: string,\n docsIconMap: DocsIconMap,\n): ReactNode[] => {\n return items.map((item) => {\n if (item.kind === 'page') {\n return (\n <SidebarPageLink\n key={item.id}\n title={item.navTitle}\n href={item.href}\n currentHref={currentHref}\n icon={docsIconMap[getDocsIconMapKey('page', item.id)]}\n />\n )\n }\n\n return <SidebarNestedGroup key={item.id} group={item} currentHref={currentHref} docsIconMap={docsIconMap} />\n })\n}\n\ninterface SidebarItemListProps {\n items: ResolvedSidebarNode[]\n currentHref: string\n docsIconMap: DocsIconMap\n}\n\nconst SidebarItemList = ({ items, currentHref, docsIconMap }: SidebarItemListProps) => {\n const visibleItems = getVisibleNavItems(items)\n\n return <ul className=\"menu lg:w-[97%]\">{renderSidebarItems(visibleItems, currentHref, docsIconMap)}</ul>\n}\n\ninterface SidebarNestedGroupProps {\n group: ResolvedSidebarGroup\n currentHref: string\n docsIconMap: DocsIconMap\n}\n\nconst SidebarNestedGroup = ({ group, currentHref, docsIconMap }: SidebarNestedGroupProps) => {\n const groupHref = getGroupHref(group)\n const visibleItems = getVisibleGroupItems(group)\n const isCollapsible = group.collapsible !== undefined\n const isOpenByDefault = group.collapsible?.isDefaultOpen ?? true\n const nestedHasActiveItem = groupHref === currentHref || hasActiveItem(group.items, currentHref)\n const { isOpen, setIsOpen } = useAutoOpenDetails(`group:${group.id}`, isOpenByDefault, nestedHasActiveItem)\n const GroupIcon = docsIconMap[getDocsIconMapKey('group', group.id)]\n\n if (!isCollapsible) {\n if (!group.title) {\n return <>{renderSidebarItems(visibleItems, currentHref, docsIconMap)}</>\n }\n\n return (\n <>\n <SidebarGroupDivider title={group.title} icon={GroupIcon} />\n {renderSidebarItems(visibleItems, currentHref, docsIconMap)}\n </>\n )\n }\n\n return (\n <li>\n <details\n open={isOpen}\n onToggle={(event) => {\n setIsOpen(event.currentTarget.open)\n }}\n >\n <summary className=\"rounded-field max-h-9 flex items-center\">\n <SidebarGroupTitle\n title={group.title}\n href={groupHref ?? undefined}\n isActive={nestedHasActiveItem}\n allowNavigation={Boolean(groupHref)}\n icon={GroupIcon}\n />\n </summary>\n {visibleItems.length > 0 ? (\n <SidebarItemList items={visibleItems} currentHref={currentHref} docsIconMap={docsIconMap} />\n ) : null}\n </details>\n </li>\n )\n}\n\ninterface SidebarSectionGroupProps {\n section: ResolvedDocsSection\n currentHref: string\n activeSectionId: string\n}\n\nconst SidebarSectionGroup = ({ section, currentHref, activeSectionId }: SidebarSectionGroupProps) => {\n const docs = useDocsGlobalContext()\n const SectionIcon = docs.docsIconMap[getDocsIconMapKey('section', section.id)]\n const sectionHasActiveItem = section.id === activeSectionId || containsActiveHref(section.items, currentHref)\n const { isOpen, setIsOpen } = useAutoOpenDetails(\n `section:${section.id}`,\n section.id === activeSectionId,\n sectionHasActiveItem,\n )\n\n return (\n <li className=\"pb-1\">\n <details\n open={isOpen}\n onToggle={(event) => {\n setIsOpen(event.currentTarget.open)\n }}\n >\n <summary className=\"rounded-field max-h-9 flex items-center\">\n <SidebarGroupTitle title={section.title} isActive={sectionHasActiveItem} icon={SectionIcon} />\n </summary>\n <SidebarItemList items={section.items} currentHref={currentHref} docsIconMap={docs.docsIconMap} />\n </details>\n </li>\n )\n}\n\ninterface SidebarProps {\n currentHref?: string\n activeSectionId?: string\n}\n\nexport const Sidebar = memo(\n ({ currentHref: currentHrefProp = '', activeSectionId: activeSectionIdProp = '' }: SidebarProps) => {\n const scrollContainerRef = useRef<HTMLDivElement | null>(null)\n const { urlPathname } = usePageContext()\n const currentHref = currentHrefProp || urlPathname\n const docs = useDocsGlobalContext()\n const activeSectionId = activeSectionIdProp || getActiveSectionByPathname(docs, currentHref)?.id || ''\n const { sidebarSections } = docs\n\n return (\n <aside className=\"hidden basis-76 shrink-0 lg:block\">\n <div className=\"-ml-3 sticky top-14\">\n <div className=\"absolute h-full w-px right-0 top-0 bg-linear-to-t to-base-muted-light via-base-muted-light pointer-events-none z-1\" />\n <div\n ref={scrollContainerRef}\n className=\"pr-4 h-[calc(100svh-14*var(--spacing))] overflow-y-scroll relative z-10\"\n >\n <ul className={cmMerge('menu p-0 m-0 w-full px-0 pt-3 li:last-child:border-0')}>\n {sidebarSections.map((section) => (\n <SidebarSectionGroup\n key={section.id}\n section={section}\n currentHref={currentHref}\n activeSectionId={activeSectionId}\n />\n ))}\n </ul>\n </div>\n </div>\n </aside>\n )\n },\n)\n","import cm, { cmMerge } from '@classmatejs/react'\nimport { Flame, TableOfContentsIcon } from 'lucide-react'\nimport type { Dispatch, SetStateAction } from 'react'\nimport type { DocHeading, ResolvedDocsPartnersConfig } from '../../../docs/types.js'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\n\ninterface TableOfContentsProps {\n headings?: DocHeading[]\n tableOfContents?: boolean\n activeHeadingId?: string\n setActiveHeadingId?: Dispatch<SetStateAction<string>>\n}\n\nexport const TableOfContents = ({\n headings: headingsProp = [],\n tableOfContents: tableOfContentsProp = false,\n activeHeadingId = '',\n setActiveHeadingId = () => undefined,\n}: TableOfContentsProps) => {\n const { partners } = useDocsGlobalContext()\n const effectiveHeadings = headingsProp\n const effectiveTableOfContents = tableOfContentsProp\n\n return (\n <aside className={cmMerge(effectiveTableOfContents ? 'w-64' : 'w-32', 'hidden shrink-0 xl:block')}>\n <div className=\"sticky top-14\">\n <div className=\"relative h-[calc(100svh-14*var(--spacing))] overflow-y-auto overflow-x-hidden pt-10 pb-8\">\n {effectiveTableOfContents\n ? effectiveHeadings.length > 0 && (\n <>\n <p className=\"mb-4 flex items-center gap-2 text-xs font-semibold uppercase tracking-widest text-base-muted\">\n <TableOfContentsIcon className=\"size-3\" />\n On this page\n </p>\n <nav aria-label=\"On this page\" className=\"mb-12\">\n <ul>\n {effectiveHeadings.map((heading) => (\n <li key={heading.id}>\n <a\n href={`#${heading.id}`}\n aria-current={activeHeadingId === heading.id ? 'location' : undefined}\n onClick={() => setActiveHeadingId(heading.id)}\n className={cmMerge(\n 'cursor-pointer block border-l-2 border-base-muted-light py-1.5 text-sm text-base-muted hover:border-primary-muted hover:text-base-content',\n heading.depth > 2 ? 'pl-6' : 'pl-4',\n activeHeadingId === heading.id ? 'border-primary text-base-content' : '',\n )}\n >\n {heading.title}\n </a>\n </li>\n ))}\n </ul>\n </nav>\n </>\n )\n : null}\n <Adbar partners={partners} />\n </div>\n </div>\n </aside>\n )\n}\n\nconst Adbar = ({ partners }: { partners: ResolvedDocsPartnersConfig }) => {\n if (partners.primary.length === 0 && partners.gold.length === 0) {\n return null\n }\n\n return (\n <aside>\n <p className=\"mb-4 flex items-center gap-2 text-xs font-semibold uppercase tracking-widest text-base-muted\">\n <Flame className=\"size-3\" />\n Partners\n </p>\n <ul className=\"grid grid-cols-[repeat(auto-fit,minmax(5.5rem,1fr))] gap-3 opacity-90\">\n {partners.primary.map((partner) => (\n <AdbarItem key={partner.name} className=\"col-span-full\">\n <AdbarLink href={partner.href} title={partner.name}>\n <PartnerLogo partner={partner} />\n </AdbarLink>\n </AdbarItem>\n ))}\n {partners.gold.map((partner) => (\n <AdbarItem key={partner.name}>\n <AdbarLink href={partner.href} title={partner.name}>\n <PartnerLogo partner={partner} />\n </AdbarLink>\n </AdbarItem>\n ))}\n </ul>\n </aside>\n )\n}\n\nconst PartnerLogo = ({\n partner,\n}: {\n partner: ResolvedDocsPartnersConfig['primary'][number] | ResolvedDocsPartnersConfig['gold'][number]\n}) => {\n return (\n <>\n <Image\n src={partner.logoLight}\n width={200}\n height={200}\n alt={partner.logoAlt}\n className={cmMerge('block', partner.logoDark ? 'dark:hidden' : 'dark:invert')}\n />\n {partner.logoDark ? (\n <Image src={partner.logoDark} width={200} height={200} alt={partner.logoAlt} className=\"hidden dark:block\" />\n ) : null}\n </>\n )\n}\n\nconst AdbarItem = cm.li`\n list-none\n px-5\n py-5\n bg-base-200\n text-center\n flex\n items-center\n justify-center\n rounded-field\n`\n\nconst AdbarLink = cm.a`\n block\n w-full\n transition-opacity\n hover:opacity-100\n focus-visible:opacity-100\n`\n\nconst Image = cm.img`\n mx-auto\n w-24\n h-auto\n`\n","import cm from '@classmatejs/react'\nimport { TableOfContents } from 'lucide-react'\nimport { type Dispatch, type SetStateAction, useId } from 'react'\nimport type { DocHeading } from '../../../docs/types'\nimport BreadcrumbSidebarTrigger from './BreadcrumbSidebarTrigger'\n\ninterface TableOfContentsProps {\n headings?: DocHeading[]\n tableOfContents?: boolean\n pageTitle?: string\n currentHref: string\n activeHeadingId?: string\n setActiveHeadingId?: Dispatch<SetStateAction<string>>\n}\n\nconst TableOfContentsMobile = ({\n headings = [],\n tableOfContents = false,\n pageTitle = 'On this page',\n currentHref,\n activeHeadingId = '',\n setActiveHeadingId = () => undefined,\n}: TableOfContentsProps) => {\n const topOptionValue = '__docs-page-top__'\n const selectId = useId()\n const labelId = `${selectId}-label`\n const selectedValue =\n tableOfContents && headings.some((heading) => heading.id === activeHeadingId) ? activeHeadingId : ''\n\n return (\n <>\n <div className=\"h-12 xl:hidden\"></div>\n <StyledTOC>\n <StyledTOCInner>\n <div className=\"hidden md:block\">\n <BreadcrumbSidebarTrigger currentHref={currentHref} />\n </div>\n <label className=\"select select-sm md:w-80 w-full\" htmlFor={selectId}>\n <span id={labelId} className=\"sr-only\">\n {pageTitle}\n </span>\n <span className=\"label flex\" aria-hidden=\"true\">\n <TableOfContents className=\"size-4\" />\n </span>\n <select\n id={selectId}\n aria-labelledby={labelId}\n value={selectedValue || topOptionValue}\n onChange={(e) => {\n const value = e.target.value\n if (value === topOptionValue) {\n setActiveHeadingId('')\n window.history.replaceState(null, '', `${window.location.pathname}${window.location.search}`)\n window.scrollTo({ top: 0, behavior: 'auto' })\n return\n }\n\n setActiveHeadingId(value)\n window.location.hash = encodeURIComponent(value)\n }}\n >\n <option value={topOptionValue}>{pageTitle}</option>\n {tableOfContents &&\n headings.map((heading) => (\n <option key={heading.id} value={heading.id}>\n {heading.title}\n </option>\n ))}\n </select>\n </label>\n </StyledTOCInner>\n </StyledTOC>\n </>\n )\n}\n\nexport default TableOfContentsMobile\n\nconst StyledTOC = cm.div`\n block xl:hidden\n fixed\n bg-base-100 border-b-base-muted-light\n w-full h-14\n top-14 left-0 border-b z-5\n lg:w-[calc(100svw-80*var(--spacing))]\n lg:left-80\n`\n\nconst StyledTOCInner = cm.div`\n absolute inset-0 flex justify-between items-center\n pr-4\n px-4 lg:pl-14\n`\n","import { cmMerge } from '@classmatejs/react'\nimport { ChevronLast, ChevronsRight } from 'lucide-react'\nimport { useCallback } from 'react'\nimport { getActiveSectionByPathname } from '../../../docs/runtime.js'\nimport type { ResolvedSidebarNode } from '../../../docs/types.js'\nimport { renderInlineMarkdown } from '../../../shared/renderInlineMarkdown.js'\nimport { useDocsGlobalContext } from '../docsGlobalContext.js'\n\ntype BreadcrumbItem = {\n id: string\n title: string\n}\n\nconst dedupeBreadcrumbs = (items: BreadcrumbItem[]) => {\n return items.filter((item, index) => index === 0 || items[index - 1]?.title !== item.title)\n}\n\nconst getSidebarBreadcrumbs = (items: ResolvedSidebarNode[], currentHref: string): BreadcrumbItem[] | null => {\n for (const item of items) {\n if (item.kind === 'page') {\n if (item.href === currentHref) {\n return [{ id: item.id, title: item.navTitle }]\n }\n\n continue\n }\n\n if (item.href === currentHref) {\n return item.title ? [{ id: item.id, title: item.title }] : []\n }\n\n const nestedBreadcrumbs = getSidebarBreadcrumbs(item.items, currentHref)\n\n if (!nestedBreadcrumbs) {\n continue\n }\n\n return dedupeBreadcrumbs(\n item.title ? [{ id: item.id, title: item.title }, ...nestedBreadcrumbs] : nestedBreadcrumbs,\n )\n }\n\n return null\n}\n\nconst BreadcrumbSidebarTrigger = ({ currentHref }: { currentHref: string }) => {\n const docs = useDocsGlobalContext()\n const activeSection = getActiveSectionByPathname(docs, currentHref)\n const breadcrumbItems = dedupeBreadcrumbs([\n ...(activeSection ? [{ id: activeSection.id, title: activeSection.navTitle }] : []),\n ...(activeSection ? (getSidebarBreadcrumbs(activeSection.items, currentHref) ?? []) : []),\n ])\n\n const handleClick = useCallback(() => {\n alert('TODO: Open mobile menu')\n }, [])\n\n return (\n <button className=\"cursor-pointer min-w-0 max-w-full block \" type=\"button\" onClick={handleClick}>\n <span className=\"flex items-center gap-1 min-w-0 overflow-hidden lg:hidden\">\n <ChevronLast className=\"size-4 shrink-0 text-primary\" />\n <span className=\"flex items-center gap-1\">\n {breadcrumbItems.map((item, index) => (\n <span key={item.id} className=\"contents\">\n {index > 0 ? <ChevronsRight className=\"size-4 shrink-0 text-base-muted-medium\" /> : null}\n <span className={cmMerge(index === 0 && 'font-semibold', 'text-sm truncate')}>\n {renderInlineMarkdown(item.title, { codeClassName: 'text-sm!' })}\n </span>\n </span>\n ))}\n </span>\n </span>\n </button>\n )\n}\n\nexport default BreadcrumbSidebarTrigger\n","import type { Dispatch, SetStateAction } from 'react'\nimport { useEffect, useState } from 'react'\nimport { createHeadingSlugger, normalizeHeadingTitle } from '../../../docs/docHeadings.js'\nimport type { DocHeading } from '../../../docs/types.js'\n\nconst getCurrentHash = () => {\n try {\n return decodeURIComponent(window.location.hash)\n } catch {\n return window.location.hash\n }\n}\n\nconst getHeadingElements = () => {\n const root = document.querySelector('[data-doc-content]')\n if (!(root instanceof HTMLElement)) {\n return []\n }\n\n return Array.from(root.querySelectorAll('h2, h3, h4')).filter(\n (element): element is HTMLHeadingElement => element instanceof HTMLHeadingElement,\n )\n}\n\nconst areHeadingsEqual = (left: DocHeading[], right: DocHeading[]) => {\n if (left.length !== right.length) {\n return false\n }\n\n return left.every((heading, index) => {\n const other = right[index]\n return (\n other !== undefined && heading.depth === other.depth && heading.id === other.id && heading.title === other.title\n )\n })\n}\n\nconst syncHeadingsFromDom = (setDomHeadings: Dispatch<SetStateAction<DocHeading[]>>) => {\n const root = document.querySelector('[data-doc-content]')\n if (!(root instanceof HTMLElement)) {\n return\n }\n\n const slugify = createHeadingSlugger()\n const nextHeadings = Array.from(root.querySelectorAll('h2, h3, h4'))\n .map((element) => {\n const title = normalizeHeadingTitle(element.textContent ?? '')\n if (!title) {\n return null\n }\n\n element.classList.add('scroll-mt-32')\n element.classList.add('xl:scroll-mt-22')\n\n const id = element.id || slugify(title)\n if (!element.id) {\n element.id = id\n }\n\n return {\n depth: Number(element.tagName.slice(1)),\n id,\n title,\n } satisfies DocHeading\n })\n .filter((heading): heading is DocHeading => heading !== null)\n\n setDomHeadings((currentHeadings) => {\n if (areHeadingsEqual(currentHeadings, nextHeadings)) {\n return currentHeadings\n }\n\n return nextHeadings\n })\n}\n\nconst updateActiveHeadingFromScroll = (setActiveHeadingId: (value: string) => void) => {\n const headingElements = getHeadingElements()\n if (headingElements.length === 0) {\n return\n }\n\n const activationOffset = 144\n let nextActiveHeadingId = ''\n\n for (const heading of headingElements) {\n if (!heading.id) {\n continue\n }\n\n if (heading.getBoundingClientRect().top <= activationOffset) {\n nextActiveHeadingId = heading.id\n continue\n }\n\n break\n }\n\n const lastHeading = headingElements.at(-1)\n if (lastHeading?.id && window.innerHeight + window.scrollY >= document.documentElement.scrollHeight - 8) {\n nextActiveHeadingId = lastHeading.id\n }\n\n setActiveHeadingId(nextActiveHeadingId)\n}\n\ninterface UseTableOfContentsStateProps {\n headings?: DocHeading[]\n}\n\ninterface UseTableOfContentsStateResult {\n activeHeadingId: string\n effectiveHeadings: DocHeading[]\n setActiveHeadingId: Dispatch<SetStateAction<string>>\n}\n\nexport const useTableOfContentsState = ({\n headings: routeHeadings = [],\n}: UseTableOfContentsStateProps): UseTableOfContentsStateResult => {\n const [activeHeadingId, setActiveHeadingId] = useState('')\n const [domHeadings, setDomHeadings] = useState<DocHeading[]>(routeHeadings)\n const effectiveHeadings = domHeadings.length > 0 ? domHeadings : routeHeadings\n\n useEffect(() => {\n let scrollFrame = 0\n\n const syncActiveHeading = () => {\n if (scrollFrame) {\n return\n }\n\n scrollFrame = window.requestAnimationFrame(() => {\n scrollFrame = 0\n updateActiveHeadingFromScroll(setActiveHeadingId)\n })\n }\n\n const updateHash = () => {\n const currentHash = getCurrentHash().replace(/^#/, '')\n if (currentHash !== '') {\n setActiveHeadingId(currentHash)\n return\n }\n\n syncActiveHeading()\n }\n\n updateHash()\n queueMicrotask(() => {\n syncHeadingsFromDom(setDomHeadings)\n syncActiveHeading()\n })\n\n window.addEventListener('hashchange', updateHash)\n window.addEventListener('scroll', syncActiveHeading, { passive: true })\n window.addEventListener('resize', syncActiveHeading)\n\n return () => {\n if (scrollFrame) {\n window.cancelAnimationFrame(scrollFrame)\n }\n\n window.removeEventListener('hashchange', updateHash)\n window.removeEventListener('scroll', syncActiveHeading)\n window.removeEventListener('resize', syncActiveHeading)\n }\n }, [])\n\n useEffect(() => {\n if (typeof window === 'undefined') {\n return\n }\n\n setDomHeadings((currentHeadings) => {\n if (areHeadingsEqual(currentHeadings, routeHeadings)) {\n return currentHeadings\n }\n\n return routeHeadings\n })\n setActiveHeadingId('')\n\n queueMicrotask(() => {\n syncHeadingsFromDom(setDomHeadings)\n updateActiveHeadingFromScroll(setActiveHeadingId)\n })\n }, [routeHeadings])\n\n return {\n activeHeadingId,\n effectiveHeadings,\n setActiveHeadingId,\n }\n}\n","import type { ComponentType } from 'react'\nimport { useData } from 'vike-react/useData'\nimport type { DocPageData } from '../../docs/types.js'\nimport { renderInlineMarkdown } from '../../shared/renderInlineMarkdown.js'\nimport BreadcrumbSidebarTrigger from './components/BreadcrumbSidebarTrigger.js'\nimport DocsBreadcrumbs from './components/DocsBreadcrumbs.js'\nimport { ProseContainer } from './components/ProseContainer.js'\n\ninterface DocsPageProps {\n Content: ComponentType\n}\n\nexport const DocsPage = ({ Content }: DocsPageProps) => {\n const { page } = useData() as DocPageData\n\n return (\n <ProseContainer data-doc-content=\"\">\n <div className=\"mb-2 md:hidden\">\n <BreadcrumbSidebarTrigger currentHref={page.href} />\n </div>\n <div className=\"mb-2 hidden md:block\">\n <DocsBreadcrumbs currentHref={page.href} />\n </div>\n <h1 className=\"scroll-mt-32 xl:scroll-mt-22\">{renderInlineMarkdown(page.title)}</h1>\n <hr />\n <Content />\n </ProseContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,WAAAA,gBAAe;AAExB,SAAS,kBAAAC,uBAAsB;;;ACF/B,OAAOC,SAAQ;AACf,SAAS,kBAAAC,uBAAsB;;;ACD/B,SAAS,WAAW,gBAAgB;AA0C3B;AApCT,IAAI,2BAA8D;AAElE,IAAM,wBAAwB,MAAM;AAClC,+BAA6B,OAAO,2BAAkB;AACtD,SAAO;AACT;AAEO,IAAM,SAAS,MAAM;AAC1B,QAAM,OAAO,qBAAqB;AAClC,QAAM,SAAS,mBAAmB,CAAC,UAAU,MAAM,MAAM;AACzD,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAmC,IAAI;AAEzF,YAAU,MAAM;AACd,QAAI,CAAC,KAAK,WAAW,CAAC,UAAU,sBAAsB,MAAM;AAC1D;AAAA,IACF;AAEA,QAAI,YAAY;AAEhB,0BAAsB,EAAE,KAAK,CAAC,WAAW;AACvC,UAAI,WAAW;AACb,6BAAqB,MAAM;AAAA,MAC7B;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AACX,kBAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAC,KAAK,SAAS,QAAQ,iBAAiB,CAAC;AAE5C,MAAI,CAAC,KAAK,WAAW,sBAAsB,MAAM;AAC/C,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,YAAY,IAAI;AAExB,SAAO,oBAAC,eAAY;AACtB;;;AC3CA,OAAO,MAAM,WAAAC,gBAAe;AAC5B,SAAS,aAAa,MAAM,kBAAkB;AAC9C,SAAS,mBAAmB;;;ACF5B,SAAS,eAAe;AAkBhB,SAEI,OAAAC,MAFJ;AAVD,IAAM,QAAQ,CAAC,EAAE,OAAO,SAAS,MAAM,MAAkB;AAC9D,QAAM,cAAc,MAAM,aAAa,MAAM;AAE7C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,MAAM;AAAA,MACZ,WAAU;AAAA,MACV,cAAY,SAAS,GAAG,MAAM,IAAI,cAAc;AAAA,MAE/C;AAAA,uBACC,qBAAC,UAAK,WAAU,mCACb;AAAA,gBAAM,aACL,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,KAAK,MAAM;AAAA,cACX,KAAK,MAAM;AAAA,cACX,WAAW,QAAQ,0BAA0B,MAAM,WAAW,sBAAsB,OAAO;AAAA;AAAA,UAC7F;AAAA,UAED,MAAM,YACL,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,KAAK,MAAM;AAAA,cACX,KAAK,MAAM;AAAA,cACX,WAAW,QAAQ,0BAA0B,MAAM,YAAY,sBAAsB,OAAO;AAAA;AAAA,UAC9F;AAAA,WAEJ;AAAA,QAED,CAAC,UAAU,gBAAAA,KAAC,UAAK,WAAU,wCAAwC,gBAAM,MAAK;AAAA;AAAA;AAAA,EACjF;AAEJ;;;ACtCA,SAAS,YAAY;AA4Bb,gBAAAC,YAAA;AAxBR,IAAM,aAAa;AAAA,EACjB,QAAQ,cAAc,mBAAmB;AAAA,EACzC,SAAS,cAAc,oBAAoB;AAAA,EAC3C,GAAG,cAAc,cAAc;AAAA,EAC/B,SAAS,cAAc,oBAAoB;AAAA,EAC3C,UAAU,cAAc,qBAAqB;AAC/C;AAIA,IAAM,oBAAoB,CAAC,EAAE,MAAM,KAAK,MAA8C;AACpF,QAAM,cAAc,SAAS,MAAM,MAAM,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AAEpF,SACE,gBAAAA,KAAC,QAAG,WAAU,WAEZ,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,QAAO;AAAA,MACP,KAAI;AAAA,MACJ,WAAU;AAAA,MACV,cAAY,GAAG,WAAW;AAAA,MAC1B,OAAO;AAAA,MAEP,0BAAAA,KAAC,SAAI,KAAK,WAAW,IAAI,GAAG,KAAI,IAAG,eAAY,QAAO,WAAU,qCAAoC;AAAA;AAAA,EACtG,GACF;AAEJ;AAEA,IAAM,cAAc,KAAK,MAAM;AAC7B,QAAM,OAAO,qBAAqB;AAClC,QAAM,gBAAgB,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,EAAE;AAAA,IACtD,CAAC,UACC,MAAM,CAAC,KAAK,cAAc,OAAO,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,EAAE,SAAS;AAAA,EAChF;AAEA,MAAI,cAAc,WAAW,GAAG;AAC9B,WAAO;AAAA,EACT;AAEA,SACE,gBAAAA,KAAC,QAAG,WAAU,2BACX,wBAAc,IAAI,CAAC,CAAC,UAAU,IAAI,MACjC,gBAAAA,KAAC,qBAAiC,MAAM,UAAU,QAA1B,QAAsC,CAC/D,GACH;AAEJ,CAAC;AAED,IAAO,sBAAQ;;;ACtDf,SAAS,MAAM,WAAW;;;ACA1B,SAAS,cAAc;AACvB,SAAS,mBAAmB,eAAe;;;ACDpC,IAAM,4BAA4B;AACzC,IAAM,8CAA8C;AAE7C,IAAM,4BAA4B,CAAC,oBAA4B;AACpE,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,QAAQ,OAAO,aAAa,QAAQ,GAAG,2CAA2C,GAAG,eAAe,EAAE;AAC5G,WAAO,SAAS;AAAA,EAClB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;ADDO,IAAM,2BAA2B,OAA8B;AAAA,EACpE;AAAA,IACE,CAAC,SAAS;AAAA,MACR,kBAAkB,CAAC;AAAA,MACnB,iBAAiB;AAAA,MACjB,oBAAoB,CAAC,iBAAiB,WACpC,IAAI,CAAC,WAAW;AAAA,QACd,kBAAkB;AAAA,UAChB,GAAG,MAAM;AAAA,UACT,CAAC,eAAe,GAAG;AAAA,QACrB;AAAA,MACF,EAAE;AAAA,MACJ,oBAAoB,CAAC,oBAAoB,IAAI,EAAE,gBAAgB,CAAC;AAAA,IAClE;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SAAS,kBAAkB,MAAM,YAAY;AAAA,MAC7C,YAAY,CAAC,EAAE,kBAAkB,gBAAgB,OAAO;AAAA,QACtD;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,2BAA6D;AAAA,EACxE,WAAW,CAAC,aAAa,yBAAyB,UAAU,QAAQ;AAAA,EACpE,WAAW,CAAC,oBAAoB,yBAAyB,SAAS,EAAE,iBAAiB,eAAe,KAAK;AAAA,EACzG,WAAW,CAAC,iBAAiB,WAC3B,yBAAyB,SAAS,EAAE,mBAAmB,iBAAiB,MAAM;AAAA,EAChF,iBAAiB;AACnB;;;AE1CO,IAAM,2BAA4C;AAClD,IAAM,yBAAyB;AAEtC,IAAM,eAAe,CAAC,iBAAkC,gBAA2C;AACjG,SAAO,oBAAoB,SAAS,YAAY,OAAO,YAAY;AACrE;AAEA,IAAM,oBAAoB,CAAC,UAA6C;AACtE,SAAO,UAAU,WAAW,UAAU;AACxC;AAEA,IAAM,2BAA2B,CAAC,4BAA8D;AAC9F,MAAI,OAAO,WAAW,eAAe,OAAO,OAAO,eAAe,YAAY;AAC5E,WAAO;AAAA,EACT;AAEA,SAAO,OAAO,WAAW,sBAAsB,EAAE,UAAU,SAAS;AACtE;AAEO,IAAM,yBAAyB,CACpC,iBACA,gBACG;AACH,MAAI,kBAAkB,eAAe,GAAG;AACtC,WAAO;AAAA,EACT;AAEA,SAAO,yBAAyB,YAAY,iBAAiB;AAC/D;AAEO,IAAM,uBAAuB,CAClC,iBACA,gBACG;AACH,MAAI,OAAO,aAAa,aAAa;AACnC;AAAA,EACF;AAEA,WAAS,gBAAgB;AAAA,IACvB;AAAA,IACA,aAAa,uBAAuB,iBAAiB,WAAW,GAAG,WAAW;AAAA,EAChF;AACF;;;AHjCI,SAME,OAAAC,MANF,QAAAC,aAAA;AANG,IAAM,cAAc,CAAC,EAAE,MAAM,MAA4C;AAC9E,QAAM,kBAAkB,yBAAyB,CAAC,UAAU,MAAM,eAAe;AACjF,QAAM,qBAAqB,yBAAyB,CAAC,UAAU,MAAM,kBAAkB;AACvF,QAAM,2BAA2B,uBAAuB,iBAAiB,KAAK;AAE9E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,SAAS,MAAM,mBAAmB,6BAA6B,UAAU,SAAS,OAAO;AAAA,MACzF,WAAU;AAAA,MAEV;AAAA,wBAAAD,KAAC,OAAI,WAAU,sBAAqB;AAAA,QACpC,gBAAAA,KAAC,QAAK,WAAU,4BAA2B;AAAA;AAAA;AAAA,EAC7C;AAEJ;;;AIbI,SAEI,OAAAE,MAFJ,QAAAC,aAAA;AAJJ,IAAM,eAAe,MAAM;AACzB,QAAM,OAAO,qBAAqB;AAElC,SACE,gBAAAA,MAAC,SAAI,WAAU,iCACb;AAAA,oBAAAD,KAAC,SAAI,WAAU,mBACb,0BAAAA,KAAC,uBAAY,GACf;AAAA,IACA,gBAAAA,KAAC,eAAY,OAAO,KAAK,OAAO;AAAA,KAClC;AAEJ;AAEA,IAAO,uBAAQ;;;APkCP,gBAAAE,MAmBU,QAAAC,aAnBV;AAxCR,IAAM,YAAY,GAAG;AAAA;AAAA;AAAA;AAAA;AAMrB,IAAM,gBAAgB,GAAG;AAAA;AAAA;AAezB,IAAM,aAAa,CAAC;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAuB;AACrB,QAAM,OAAO,qBAAqB;AAElC,QAAM,cAAc,YAAY,MAAM;AACpC,UAAM,wBAAwB;AAAA,EAChC,GAAG,CAAC,CAAC;AAEL,SACE,gBAAAA,MAAC,SAAI,WAAU,0CACb;AAAA,oBAAAD,KAAC,SAAI,WAAU,0BACb,0BAAAA,KAAC,SAAM,OAAO,KAAK,OAAO,GAC5B;AAAA,IACA,gBAAAA,KAAC,aAAU,cAAW,WACpB,0BAAAC,MAAC,iBAAc,WAAU,IACtB;AAAA,WAAK,YAAY,IAAI,CAAC,SAAS;AAC9B,cAAM,WAAW,KAAK,YAAY,kBAAkB,WAAW,KAAK,EAAE,CAAC;AACvE,cAAM,uBAAuB,kBAAkB,qBAAqB,KAAK;AAEzE,eACE,gBAAAD,KAAC,QACC,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,gBAAgB,KAAK,IAAI;AAAA,YAC/B,WAAW;AAAA,YACX,gBAAgB,MAAM,qBAAqB,KAAK,EAAE;AAAA,YAClD,gBAAgB;AAAA,YAChB,SAAS,MAAM,aAAa,KAAK,EAAE;AAAA,YACnC,QAAQ;AAAA,YACR,SAAS;AAAA,YAET,0BAAAC;AAAA,cAAC;AAAA;AAAA,gBACC,WAAWC;AAAA,kBACT;AAAA,kBACA,eAAe,OAAO,KAAK,KAAK,yBAAyB;AAAA,gBAC3D;AAAA,gBAEC;AAAA,6BAAW,gBAAAF,KAAC,YAAS,WAAU,mBAAkB,eAAY,QAAO,IAAK;AAAA,kBACzE,qBAAqB,KAAK,KAAK;AAAA,kBAChC,gBAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,WAAWE;AAAA,wBACT;AAAA,wBACA,uBAAuB,eAAe;AAAA,sBACxC;AAAA;AAAA,kBACF;AAAA;AAAA;AAAA,YACF;AAAA;AAAA,QACF,KAzBO,KAAK,EA0Bd;AAAA,MAEJ,CAAC;AAAA,MACA,KAAK,UACJ,gBAAAF,KAAC,QACC,0BAAAC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UACX;AAAA;AAAA,YAEC,gBAAAD,KAAC,cAAW,WAAU,UAAS;AAAA;AAAA;AAAA,MACjC,GACF,IACE;AAAA,OACN,GACF;AAAA,IACA,gBAAAA,KAAC,YAAO,MAAK,UAAS,WAAU,mBAAkB,cAAW,wBAAuB,SAAS,aAC3F,0BAAAA,KAAC,QAAK,WAAU,WAAU,GAC5B;AAAA,IACA,gBAAAA,KAAC,SAAI,WAAU,+BACb,0BAAAA,KAAC,wBAAa,GAChB;AAAA,KACF;AAEJ;AAEA,IAAO,qBAAQ;;;AQjHf,OAAOG,OAAM,WAAAC,gBAAe;AAC5B,SAAS,eAAAC,cAAa,QAAAC,OAAM,cAAAC,mBAAkB;AAC9C,SAAS,eAAAC,oBAAmB;AA6CpB,gBAAAC,MAmBU,QAAAC,aAnBV;AArCR,IAAMC,aAAYC,IAAG;AAAA;AAAA;AAAA;AAKrB,IAAMC,iBAAgBD,IAAG;AAAA;AAAA;AAczB,IAAM,oBAAoB,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA8B;AAC5B,QAAM,OAAO,qBAAqB;AAElC,QAAM,cAAcE,aAAY,MAAM;AACpC,UAAM,wBAAwB;AAAA,EAChC,GAAG,CAAC,CAAC;AAEL,SACE,gBAAAJ,MAAC,SAAI,WAAU,0CACb;AAAA,oBAAAD,KAAC,SAAI,WAAU,YACb,0BAAAA,KAAC,SAAM,OAAO,KAAK,OAAO,GAC5B;AAAA,IACA,gBAAAA,KAACE,YAAA,EAAU,cAAW,WAAU,WAAU,8BACxC,0BAAAD,MAACG,gBAAA,EAAc,WAAU,gBACtB;AAAA,WAAK,YAAY,IAAI,CAAC,SAAS;AAC9B,cAAM,WAAW,KAAK,YAAY,kBAAkB,WAAW,KAAK,EAAE,CAAC;AACvE,cAAM,uBAAuB,kBAAkB,qBAAqB,KAAK;AAEzE,eACE,gBAAAJ,KAAC,QACC,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,gBAAgB,KAAK,IAAI;AAAA,YAC/B,WAAW;AAAA,YACX,gBAAgB,MAAM,qBAAqB,KAAK,EAAE;AAAA,YAClD,gBAAgB;AAAA,YAChB,SAAS,MAAM,aAAa,KAAK,EAAE;AAAA,YACnC,QAAQ;AAAA,YACR,SAAS;AAAA,YAET,0BAAAC;AAAA,cAAC;AAAA;AAAA,gBACC,WAAWK;AAAA,kBACT;AAAA,gBACF;AAAA,gBAEC;AAAA,6BAAW,gBAAAN,KAAC,YAAS,WAAU,mBAAkB,eAAY,QAAO,IAAK;AAAA,kBACzE,qBAAqB,KAAK,KAAK;AAAA,kBAChC,gBAAAA;AAAA,oBAACO;AAAA,oBAAA;AAAA,sBACC,WAAWD;AAAA,wBACT;AAAA,wBACA,uBAAuB,eAAe;AAAA,sBACxC;AAAA;AAAA,kBACF;AAAA;AAAA;AAAA,YACF;AAAA;AAAA,QACF,KAxBO,KAAK,EAyBd;AAAA,MAEJ,CAAC;AAAA,MACA,KAAK,UACJ,gBAAAN,KAAC,QACC,0BAAAC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UACX;AAAA;AAAA,YAEC,gBAAAD,KAACQ,aAAA,EAAW,WAAU,UAAS;AAAA;AAAA;AAAA,MACjC,GACF,IACE;AAAA,OACN,GACF;AAAA,IACA,gBAAAR,KAAC,SAAI,WAAU,4BACb,0BAAAA,KAAC,wBAAa,GAChB;AAAA,IACA,gBAAAA,KAAC,YAAO,MAAK,UAAS,WAAU,mBAAkB,cAAW,wBAAuB,SAAS,aAC3F,0BAAAA,KAACS,OAAA,EAAK,WAAU,WAAU,GAC5B;AAAA,KACF;AAEJ;AAEA,IAAO,4BAAQ;;;AC5Gf,SAAS,WAAAC,gBAAe;AAExB,SAAS,eAAAC,cAAa,aAAAC,YAAW,SAAS,QAAQ,YAAAC,iBAAgB;AAClE,SAAS,sBAAsB;;;ACDxB,IAAM,qBAAqB,CAAC,OAA8B,gBAAiC;AAChG,SAAO,MAAM,KAAK,CAAC,SAAS;AAC1B,QAAI,KAAK,SAAS,QAAQ;AACxB,aAAO,KAAK,SAAS;AAAA,IACvB;AAEA,WAAO,KAAK,SAAS,eAAe,mBAAmB,KAAK,OAAO,WAAW;AAAA,EAChF,CAAC;AACH;AAEO,IAAM,gBAAgB,CAAC,OAA8B,eAAuB,mBAAmB,OAAO,UAAU;AAEhH,IAAM,qBAAqB,CAAC,UAAiC,MAAM,OAAO,CAAC,SAAS,KAAK,SAAS;AAElG,IAAM,uBAAuB,CAAC,UAAgC;AACnE,QAAM,eAAe,mBAAmB,MAAM,KAAK;AAEnD,MAAI,CAAC,MAAM,MAAM;AACf,WAAO;AAAA,EACT;AAEA,SAAO,aAAa,OAAO,CAAC,SAAsC;AAChE,QAAI,KAAK,SAAS,QAAQ;AACxB,aAAO;AAAA,IACT;AAEA,WAAO,KAAK,SAAS,MAAM;AAAA,EAC7B,CAAC;AACH;AAEO,IAAM,eAAe,CAAC,UAA+C,MAAM,QAAQ;;;ADwBtF,SA2KE,UA1KQ,OAAAC,MADV,QAAAC,aAAA;AAvCJ,IAAM,8BAA8B;AAEpC,IAAM,mBAAmB,CAAC,SAA0C,gBAA4C;AAC9G,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AAEA,QAAM,mBAAmB,CAAC,UAAqD;AAC7E,eAAW,QAAQ,OAAO;AACxB,UAAI,KAAK,SAAS,aAAa;AAC7B,eAAO,KAAK;AAAA,MACd;AAEA,UAAI,KAAK,SAAS,SAAS;AACzB,cAAM,gBAAgB,iBAAiB,KAAK,KAAK;AAEjD,YAAI,eAAe;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,SAAO,iBAAiB,QAAQ,KAAK;AACvC;AAWA,IAAM,mBAAmB,CAAC,EAAE,OAAO,MAAM,MAAM,MAAM,UAAU,WAAW,QAAQ,MAA6B;AAC7G,QAAM,UACJ,gBAAAA,MAAC,UAAK,WAAU,mCACb;AAAA,WAAO,gBAAAD,KAAC,QAAK,WAAU,mBAAkB,eAAY,QAAO,IAAK;AAAA,IAClE,gBAAAA,KAAC,UAAK,WAAU,WAAW,kBAAQ,qBAAqB,OAAO,EAAE,eAAe,WAAW,CAAC,IAAI,MAAK;AAAA,KACvG;AAGF,MAAI,MAAM;AACR,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAWE;AAAA,UACT;AAAA,UACA,YAAY;AAAA,UACZ;AAAA,QACF;AAAA,QACA,MAAM,gBAAgB,IAAI;AAAA,QAC1B,SAAS;AAAA,QAER;AAAA;AAAA,IACH;AAAA,EAEJ;AAEA,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,WAAWE;AAAA,QACT;AAAA,QACA,YAAY;AAAA,QACZ;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAcA,IAAM,mBAAmB,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AACV,MAA6B;AAC3B,QAAM,eAAe,mBAAmB,KAAK;AAE7C,MAAI,aAAa,WAAW,GAAG;AAC7B,WAAO;AAAA,EACT;AAEA,SACE,gBAAAF,KAAC,QAAG,WAAWE,SAAQ,2BAA2B,QAAQ,KAAK,WAAW,GACvE,uBAAa,IAAI,CAAC,SACjB,gBAAAF;AAAA,IAAC;AAAA;AAAA,MAEC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,IATK,KAAK;AAAA,EAUZ,CACD,GACH;AAEJ;AAcA,IAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAyB;AACvB,MAAI,KAAK,SAAS,QAAQ;AACxB,UAAM,WAAW,YAAY,kBAAkB,QAAQ,KAAK,EAAE,CAAC;AAE/D,WACE,gBAAAA,KAAC,QACC,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,KAAK,YAAY,KAAK;AAAA,QAC7B,MAAM,KAAK;AAAA,QACX,MAAM;AAAA,QACN,UAAU,iBAAiB,KAAK;AAAA,QAChC,WAAU;AAAA,QACV;AAAA;AAAA,IACF,GACF;AAAA,EAEJ;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF;AAEJ;AAcA,IAAM,gBAAgB,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA0B;AACxB,QAAM,YAAY,aAAa,KAAK;AACpC,QAAM,eAAe,qBAAqB,KAAK;AAC/C,QAAM,YAAY,YAAY,kBAAkB,SAAS,MAAM,EAAE,CAAC;AAClE,QAAM,WAAW,cAAc,eAAe,mBAAmB,MAAM,OAAO,WAAW;AACzF,QAAM,gBAAgB,MAAM,gBAAgB;AAC5C,QAAM,SAAS,gBAAgB,MAAM;AAErC,MAAI,CAAC,MAAM,OAAO;AAChB,WACE,gBAAAA,KAAA,YACG,uBAAa,IAAI,CAAC,SACjB,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,MATK,KAAK;AAAA,IAUZ,CACD,GACH;AAAA,EAEJ;AAEA,QAAM,QACJ,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,MAAM;AAAA,MACb,MAAM,aAAa;AAAA,MACnB,MAAM;AAAA,MACN;AAAA,MACA,WAAWE;AAAA,QACT,UAAU,IACNA,SAAQ,CAAC,iBAAiB,QAAQ,sCAAsC,IACxEA,SAAQ,CAAC,iBAAiB,6BAA6B,uBAAuB;AAAA,MACpF;AAAA,MACA;AAAA;AAAA,EACF;AAEF,QAAM,cACJ,aAAa,SAAS,IACpB,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,QAAQ;AAAA;AAAA,EACjB,IACE;AAEN,MAAI,eAAe;AACjB,WACE,gBAAAA,KAAC,QACC,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,UAAU,CAAC,UAAU;AACnB,cAAI,MAAM,WAAW,MAAM,eAAe;AACxC;AAAA,UACF;AAEA,cAAI,CAAC,MAAM,YAAY,WAAW;AAChC;AAAA,UACF;AAEA,gBAAM,YAAY,MAAM,cAAc;AACtC,cAAI,WAAW;AACb,8BAAkB,MAAM,EAAE;AAC1B,kCAAsB,IAAI;AAC1B;AAAA,UACF;AAEA,cAAI,gBAAgB,MAAM,IAAI;AAC5B,8BAAkB,IAAI;AACtB,kCAAsB,KAAK;AAAA,UAC7B;AAAA,QACF;AAAA,QAEA;AAAA,0BAAAD,KAAC,aAAQ,WAAWE,SAAQ,kDAAkD,UAAU,IAAI,SAAS,MAAM,GACxG,iBACH;AAAA,UACC;AAAA;AAAA;AAAA,IACH,GACF;AAAA,EAEJ;AAEA,SACE,gBAAAD,MAAC,QACE;AAAA;AAAA,IACA;AAAA,KACH;AAEJ;AAaA,IAAM,qBAAqB,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAsF;AACpF,QAAM,WAAW,YAAY,kBAAkB,QAAQ,KAAK,EAAE,CAAC;AAE/D,SACE,gBAAAD,KAAC,QAAG,WAAU,yBACZ,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,KAAK,YAAY,KAAK;AAAA,MAC7B,MAAM,KAAK;AAAA,MACX,MAAM;AAAA,MACN,UAAU,iBAAiB,KAAK;AAAA,MAChC,WAAU;AAAA,MACV;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,IAAM,sBAAsB,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA4D;AAC1D,QAAM,YAAY,aAAa,IAAI;AACnC,QAAM,eAAe,qBAAqB,IAAI;AAC9C,QAAM,YAAY,YAAY,kBAAkB,SAAS,KAAK,EAAE,CAAC;AACjE,QAAM,WAAW,cAAc,eAAe,mBAAmB,KAAK,OAAO,WAAW;AAExF,MAAI,CAAC,KAAK,OAAO;AACf,WACE,gBAAAA,KAAA,YACG,uBAAa,IAAI,CAAC,UACjB,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,MARK,MAAM;AAAA,IASb,CACD,GACH;AAAA,EAEJ;AAEA,QAAM,QACJ,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,KAAK;AAAA,MACZ,MAAM,aAAa;AAAA,MACnB,MAAM;AAAA,MACN;AAAA,MACA,WAAU;AAAA,MACV;AAAA;AAAA,EACF;AAEF,QAAM,cACJ,aAAa,SAAS,IACpB,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA;AAAA,EACT,IACE;AAEN,SACE,gBAAAC,MAAC,QAAG,WAAU,yBACX;AAAA;AAAA,IACA;AAAA,KACH;AAEJ;AAEA,IAAM,iBAAiB,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA2B;AACzB,MAAI,KAAK,SAAS,QAAQ;AACxB,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,kBAAkB,CAAC,UAA0C;AACjE,SAAO,MAAM,KAAK,CAAC,SAAS;AAC1B,QAAI,CAAC,KAAK,WAAW;AACnB,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,SAAS,SAAS;AACzB,aAAO,QAAQ,KAAK,SAAS,KAAK,QAAQ,gBAAgB,KAAK,KAAK,CAAC;AAAA,IACvE;AAEA,WAAO;AAAA,EACT,CAAC;AACH;AAEO,IAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAQM;AACJ,QAAM,OAAO,qBAAqB;AAClC,QAAM,EAAE,YAAY,IAAI,eAAe;AACvC,QAAM,mBAAmB,oBAAoB,mBAAmB,SAAS,CAAC,GAAG;AAC7E,QAAM,CAAC,uBAAuB,wBAAwB,IAAIG,UAAgC,IAAI;AAC9F,QAAM,CAAC,eAAe,gBAAgB,IAAIA,UAAS,CAAC;AACpD,QAAM,CAAC,aAAa,cAAc,IAAIA,UAAwB,IAAI;AAClE,QAAM,iCAAiC,OAAsB,IAAI;AACjE,QAAM,0BAA0B,OAA6C,IAAI;AAEjF,QAAM,eAAe;AAAA,IACnB,MACE;AAAA,MACE,SAAS,KAAK,CAAC,YAAY,QAAQ,OAAO,gBAAgB;AAAA,MAC1D;AAAA,IACF;AAAA,IACF,CAAC,UAAU,kBAAkB,WAAW;AAAA,EAC1C;AAEA,QAAM,oCAAoCC,aAAY,MAAM;AAC1D,QAAI,+BAA+B,YAAY,MAAM;AACnD,2BAAqB,+BAA+B,OAAO;AAC3D,qCAA+B,UAAU;AAAA,IAC3C;AAEA,QAAI,wBAAwB,YAAY,MAAM;AAC5C,mBAAa,wBAAwB,OAAO;AAC5C,8BAAwB,UAAU;AAAA,IACpC;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,sCAAsCA,aAAY,MAAM;AAC5D,QAAI,0BAA0B,MAAM;AAClC;AAAA,IACF;AAEA,qBAAiB,KAAK,KAAK,sBAAsB,YAAY,CAAC;AAAA,EAChE,GAAG,CAAC,qBAAqB,CAAC;AAE1B,QAAM,iCAAiCA,aAAY,MAAM;AACvD,QAAI,0BAA0B,MAAM;AAClC;AAAA,IACF;AAEA,qBAAiB,KAAK,KAAK,sBAAsB,YAAY,CAAC;AAAA,EAChE,GAAG,CAAC,qBAAqB,CAAC;AAE1B,QAAM,8BAA8BA;AAAA,IAClC,CAAC,cAAuB;AACtB,wCAAkC;AAElC,UAAI,WAAW;AACb,uCAA+B,UAAU,sBAAsB,MAAM;AACnE,yCAA+B;AAC/B,yCAA+B,UAAU;AAAA,QAC3C,CAAC;AAAA,MACH;AAEA,8BAAwB,UAAU,WAAW,MAAM;AACjD,4CAAoC;AACpC,gCAAwB,UAAU;AAAA,MACpC,GAAG,2BAA2B;AAAA,IAChC;AAAA,IACA,CAAC,mCAAmC,qCAAqC,8BAA8B;AAAA,EACzG;AAEA,QAAM,gBAAgBA,aAAY,MAAM;AACtC,mBAAe,IAAI;AACnB,YAAQ;AAAA,EACV,GAAG,CAAC,OAAO,CAAC;AAEZ,EAAAC,WAAU,MAAM;AACd,QAAI,CAAC,YAAY,CAAC,oBAAoB,0BAA0B,MAAM;AACpE;AAAA,IACF;AAEA,mCAA+B,UAAU,sBAAsB,MAAM;AACnE,0CAAoC;AACpC,qCAA+B,UAAU;AAAA,IAC3C,CAAC;AAED,WAAO;AAAA,EACT,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,EAAAA,WAAU,MAAM,mCAAmC,CAAC,iCAAiC,CAAC;AAEtF,EAAAA,WAAU,MAAM;AACd,QAAI,CAAC,kBAAkB;AACrB;AAAA,IACF;AAEA,mBAAe,IAAI;AAAA,EACrB,GAAG,CAAC,gBAAgB,CAAC;AAErB,EAAAA,WAAU,MAAM;AACd,QAAI,CAAC,UAAU;AACb,qBAAe,IAAI;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAEb,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,WAAWC,SAAQ,kCAAkC,WAAW,wBAAwB,qBAAqB;AAAA,MAC7G,gBAAgB,MAAM,OAAO,gBAAgB;AAAA,MAC7C,gBAAgB;AAAA,MAEhB;AAAA,wBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,WAAWE;AAAA,cACT,WAAW,gBAAgB;AAAA,cAC3B;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QACA,gBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,WAAWE;AAAA,cACT;AAAA,cACA,iBAAiB,CAAC,WAAW,KAAK;AAAA,YACpC;AAAA,YAEA,OAAO,EAAE,QAAQ,WAAW,gBAAgB,EAAE;AAAA,YAE9C,0BAAAF,KAAC,mBAAgB,OAAM,MACrB,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAWE;AAAA,kBACT,WAAW,8BAA8B;AAAA,kBACzC;AAAA,gBACF;AAAA,gBAEC,mBAAS,IAAI,CAAC,YACb,gBAAAF;AAAA,kBAAC;AAAA;AAAA,oBAEC,KAAK,QAAQ,OAAO,mBAAmB,2BAA2B;AAAA,oBAClE,WAAWE;AAAA,sBACT,QAAQ,OAAO,mBAAmB,gBAAgB;AAAA,sBAClD;AAAA,oBACF;AAAA,oBAEC,0BAAgB,QAAQ,KAAK,KAC5B,gBAAAF,KAAC,QAAG,WAAU,6CACX,6BAAmB,QAAQ,KAAK,EAAE,IAAI,CAAC,UACtC,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBAEC,MAAM;AAAA,wBACN;AAAA,wBACA,aAAa;AAAA,wBACb,aAAa,KAAK;AAAA,wBAClB,SAAS;AAAA,wBACT,uBAAuB;AAAA,wBACvB;AAAA,wBACA,mBAAmB;AAAA;AAAA,sBARd,MAAM;AAAA,oBASb,CACD,GACH;AAAA;AAAA,kBAtBG,QAAQ;AAAA,gBAwBf,CACD;AAAA;AAAA,YACH,GACF;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;AE/oBA,SAAS,eAAAM,cAAa,aAAAC,YAAW,UAAAC,SAAQ,YAAAC,iBAAgB;AAGzD,IAAM,sBAAsB;AAC5B,IAAM,uBAAuB;AAE7B,IAAM,cAAc,CAAC,EAAE,iBAAiB,SAAS,MAAqE;AACpH,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,UAAS,KAAK;AAC1D,QAAM,yBAAyBD,QAAsB,IAAI;AACzD,QAAM,0BAA0BA,QAAsB,IAAI;AAC1D,QAAM,CAAC,kBAAkB,mBAAmB,IAAIC,UAA6B,mBAAmB,SAAS,CAAC,GAAG,EAAE;AAE/G,QAAM,2BAA2BH,aAAY,MAAM;AACjD,QAAI,uBAAuB,YAAY,MAAM;AAC3C;AAAA,IACF;AAEA,WAAO,aAAa,uBAAuB,OAAO;AAClD,2BAAuB,UAAU;AAAA,EACnC,GAAG,CAAC,CAAC;AAEL,QAAM,4BAA4BA,aAAY,MAAM;AAClD,QAAI,wBAAwB,YAAY,MAAM;AAC5C;AAAA,IACF;AAEA,WAAO,aAAa,wBAAwB,OAAO;AACnD,4BAAwB,UAAU;AAAA,EACpC,GAAG,CAAC,CAAC;AAEL,QAAM,eAAe,CAAC,qBAA8B;AAClD,QAAI,qBAAqB,QAAW;AAClC,0BAAoB,gBAAgB;AAAA,IACtC;AAEA,6BAAyB;AACzB,8BAA0B;AAC1B,sBAAkB,IAAI;AAAA,EACxB;AAEA,QAAM,uBAAuB,CAAC,qBAA8B;AAC1D,QAAI,qBAAqB,QAAW;AAClC,0BAAoB,gBAAgB;AAAA,IACtC;AAEA,6BAAyB;AACzB,8BAA0B;AAE1B,QAAI,gBAAgB;AAClB,wBAAkB,IAAI;AACtB;AAAA,IACF;AAEA,2BAAuB,UAAU,OAAO,WAAW,MAAM;AACvD,wBAAkB,IAAI;AACtB,6BAAuB,UAAU;AAAA,IACnC,GAAG,mBAAmB;AAAA,EACxB;AAEA,QAAM,gBAAgB,MAAM;AAC1B,6BAAyB;AACzB,8BAA0B;AAC1B,sBAAkB,KAAK;AAAA,EACzB;AAEA,QAAM,wBAAwB,MAAM;AAClC,6BAAyB;AACzB,8BAA0B;AAC1B,4BAAwB,UAAU,OAAO,WAAW,MAAM;AACxD,wBAAkB,KAAK;AACvB,8BAAwB,UAAU;AAAA,IACpC,GAAG,oBAAoB;AAAA,EACzB;AAEA,EAAAC,WAAU,MAAM;AACd,WAAO,MAAM;AACX,+BAAyB;AACzB,gCAA0B;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,2BAA2B,wBAAwB,CAAC;AAExD,EAAAA,WAAU,MAAM;AACd,wBAAoB,mBAAmB,SAAS,CAAC,GAAG,EAAE;AAAA,EACxD,GAAG,CAAC,iBAAiB,QAAQ,CAAC;AAE9B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAO,sBAAQ;;;AbpEX,SAGM,OAAAG,MAHN,QAAAC,aAAA;AAfJ,IAAM,YAAY,MAAM;AACtB,QAAM,OAAO,qBAAqB;AAClC,QAAM,EAAE,aAAa,UAAU,IAAIC,gBAAe;AAClD,QAAM,gBAAgB,UAAU,aAAa;AAC7C,QAAM,WAAW,KAAK;AACtB,QAAM,gBAAgB,2BAA2B,MAAM,WAAW;AAClE,QAAM,EAAE,QAAQ,aAAa,IAAI,qBAAqB;AAEtD,QAAM,EAAE,eAAe,kBAAkB,gBAAgB,cAAc,sBAAsB,sBAAsB,IACjH,oBAAY;AAAA,IACV,iBAAiB,eAAe;AAAA,IAChC;AAAA,EACF,CAAC;AAEH,SACE,gBAAAD,MAAC,gBAAa,SAAS,eACrB;AAAA,oBAAAD,KAAC,mBACE,0BACC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF,IAEA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF,GAEJ;AAAA,IACA,gBAAAA,KAAC,UAAO;AAAA,IACR,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,iBAAiB,eAAe;AAAA,QAChC;AAAA,QACA,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,QACT;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,IAAO,iBAAQ;AAEf,IAAM,eAAeG,IAAG;AAAA;AAAA;AAAA,IAGpB,CAAC,EAAE,QAAQ,MAAO,UAAU,aAAa,OAAQ;AAAA;;;AcvErD,SAAS,aAAAC,YAAW,WAAAC,gBAAe;AAK5B,IAAM,mBAAmB,CAAC,EAAE,MAAM,MAAuC;AAC9E,QAAM,kBAAkB,yBAAyB,CAAC,UAAU,MAAM,eAAe;AACjF,QAAM,aAAa,OAAO,SAAS;AACnC,QAAM,YAAY,OAAO,QAAQ;AACjC,QAAM,yBAAyB,OAAO,qBAAqB;AAC3D,QAAM,gBAAgBC;AAAA,IACpB,OAAO,EAAE,OAAO,YAAY,MAAM,WAAW,mBAAmB,uBAAuB;AAAA,IACvF,CAAC,WAAW,wBAAwB,UAAU;AAAA,EAChD;AAEA,QAAM,2BAA2B,uBAAuB,iBAAiB,aAAa;AAEtF,EAAAC,WAAU,MAAM;AACd,yBAAqB,0BAA0B,aAAa;AAAA,EAC9D,GAAG,CAAC,0BAA0B,aAAa,CAAC;AAE5C,SAAO;AACT;;;ACNA,IAAM,iBAAiB,CAAC,SAAiB;AACvC,SAAO,qBAAqB,KAAK,IAAI,KAAK,KAAK,WAAW,SAAS,KAAK,KAAK,WAAW,MAAM;AAChG;AAEA,IAAM,YAAY,CAAC,SAAiB;AAClC,QAAM,CAAC,UAAU,OAAO,EAAE,IAAI,KAAK,MAAM,GAAG;AAC5C,SAAO;AAAA,IACL;AAAA,IACA,MAAM,OAAO,IAAI,IAAI,KAAK;AAAA,EAC5B;AACF;AAEA,IAAM,iBAAiB,CAAC,YAIe;AACrC,QAAM,EAAE,iBAAiB,KAAK,IAAI;AAClC,MAAI,KAAK,WAAW,GAAG,KAAK,eAAe,IAAI,GAAG;AAChD,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,UAAU,KAAK,IAAI,UAAU,IAAI;AACzC,QAAM,eAAe,gBAAgB,QAAQ,KAAK,UAAU,QAAQ;AAEpE,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,0BAA0B,QAAQ,MAAM,YAAY;AACjE,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,uBAAuB,QAAQ,MAAM,KAAK,SAAS;AAEnE,SAAO;AAAA,IACL,MAAM,gBAAgB,GAAG,KAAK,IAAI,GAAG,IAAI,EAAE;AAAA,IAC3C,OAAO,KAAK;AAAA,IACZ,YAAY,UAAU,CAAC,QAAQ,QAAQ,IAAI,CAAC;AAAA,IAC5C,eAAe,mBAAmB,MAAM,eAAe;AAAA,EACzD;AACF;AAEA,IAAM,sBAAsB,CAAC,YAGe;AAC1C,QAAM,OAAO,QAAQ,KAAK,MAAM,KAAK,CAAC,cAAc,UAAU,OAAO,QAAQ,EAAE;AAE/E,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,OAAO,KAAK;AAAA,IACZ,MAAM,gBAAgB,KAAK,IAAI;AAAA,IAC/B,SAAS,KAAK,eAAe;AAAA,EAC/B;AACF;AAEO,IAAM,qBAAqB,CAAC,YAGH;AAC9B,QAAM,EAAE,iBAAiB,KAAK,IAAI;AAClC,QAAM,gBAAgB,2BAA2B,MAAM,eAAe;AACtE,QAAM,cAAc,0BAA0B,MAAM,eAAe;AAEnE,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,cAAc,CAAC,SAAS;AACtB,UAAI,KAAK,WAAW,GAAG,KAAK,eAAe,IAAI,GAAG;AAChD,eAAO;AAAA,MACT;AAEA,YAAM,EAAE,UAAU,KAAK,IAAI,UAAU,IAAI;AACzC,YAAM,eAAe,gBAAgB,KAAK,UAAU,QAAQ;AAC5D,YAAM,OAAO,eAAe,0BAA0B,MAAM,YAAY,IAAI;AAE5E,UAAI,CAAC,MAAM;AACT,YAAI,gBAAgB,CAAC,SAAS,WAAW,GAAG,GAAG;AAC7C,iBAAO,gBAAgB,GAAG,YAAY,GAAG,IAAI,EAAE;AAAA,QACjD;AAEA,eAAO,gBAAgB,IAAI;AAAA,MAC7B;AAEA,aAAO,gBAAgB,GAAG,KAAK,IAAI,GAAG,IAAI,EAAE;AAAA,IAC9C;AAAA,IACA,gBAAgB,CAAC,EAAE,KAAK,MACtB,eAAe;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,qBAAqB,CAAC,OACpB,oBAAoB;AAAA,MAClB;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,GAAG,CAAC,OAAO,QAAQ;AACjB,UAAI,UAAU,UAAU,QAAQ,cAAc;AAC5C,eAAO;AAAA,MACT;AAEA,UAAI,UAAU,UAAU,QAAQ,YAAY;AAC1C,eAAO;AAAA,MACT;AAEA,UAAI,UAAU,UAAU,QAAQ,QAAQ;AACtC,eAAO;AAAA,MACT;AAEA,UAAI,UAAU,UAAU,QAAQ,kBAAkB;AAChD,eAAO,eAAe,YAAY,aAAa,SAAS;AAAA,MAC1D;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;AhBzGU,gBAAAC,OACA,QAAAC,aADA;AAlBV,IAAM,eAAe,uBAAuB;AAErC,IAAM,YAAY,CAAC,EAAE,UAAU,OAAO,MAAsB;AACjE,QAAM,EAAE,YAAY,IAAIC,gBAAe;AACvC,QAAM,cAAcA,gBAAe;AAEnC,QAAM,OAAO,yBAAyB,WAA8B;AACpE,QAAM,gBAAgB,gBAAgB;AAEtC,SACE,gBAAAF,MAAC,4BAAyB,OAAO,cAC/B,0BAAAA,MAAC,6BAA0B,MACzB,0BAAAC;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,mBAAmB;AAAA,QACxB;AAAA,QACA,iBAAiB;AAAA,MACnB,CAAC;AAAA,MAED;AAAA,wBAAAD,MAAC,oBAAiB,OAAO,KAAK,OAAO;AAAA,QACrC,gBAAAC,MAAC,SAAI,WAAU,8CACZ;AAAA,oBAAU,gBAAAD,MAAC,kBAAU;AAAA,UACtB,gBAAAA,MAAC,SAAI,WAAWG,SAAQ,gBAAgB,KAAK,OAAO,GAAI,UAAS;AAAA,WACnE;AAAA;AAAA;AAAA,EACF,GACF,GACF;AAEJ;;;AiBnCyB,SAGjB,YAAAC,WAHiB,OAAAC,OAGjB,QAAAC,aAHiB;AALlB,IAAM,eAAe,CAAC,EAAE,KAAK,MAAwC;AAC1E,QAAM,EAAE,gBAAgB,YAAY,WAAW,IAAI;AAEnD,SACE,gBAAAA,MAAAF,WAAA,EACG;AAAA,sBAAkB,gBAAAC,MAAC,UAAK,KAAI,oBAAmB,MAAM,gBAAgB;AAAA,IACrE,cAAc,gBAAAA,MAAC,UAAK,KAAI,QAAO,MAAK,iBAAgB,MAAM,YAAY;AAAA,IACtE,cACC,gBAAAC,MAAAF,WAAA,EACE;AAAA,sBAAAC,MAAC,UAAK,KAAI,iBAAgB,MAAK,gBAAe,MAAM,YAAY;AAAA,MAChE,gBAAAA,MAAC,UAAK,KAAI,QAAO,MAAK,gBAAe,MAAM,YAAY;AAAA,OACzD;AAAA,KAEJ;AAEJ;;;ACwBI,qBAAAE,WAEI,OAAAC,OAFJ,QAAAC,cAAA;AAtCJ,IAAM,iCAAiC,cAAc,uBAAuB;AAE5E,IAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAMd,cAAc,qCAAqC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQpD,cAAc,iCAAiC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQhD,cAAc,iCAAiC,CAAC;AAAA;AAAA;AAIvD,IAAM,YAAY,CAAC,EAAE,KAAK,MAAwC;AACvE,MAAI,CAAC,KAAK,aAAa;AACrB,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,oBAAoB,iBAAiB,IAAI;AACjD,QAAM,wBAAwB,oBAAoB,CAAC;AACnD,QAAM,gCAAgC,uBAAuB;AAE7D,SACE,gBAAAA,OAAAF,WAAA,EACG;AAAA,0BAAsB,IAAI,CAAC,SAC1B,gBAAAC,MAAC,UAAgB,KAAI,WAAU,MAAY,IAAG,QAAO,MAAK,cAAa,aAAY,eAAxE,IAAoF,CAChG;AAAA,IACA,gCAAgC,gBAAAA,MAAC,WAAM,yBAAyB,EAAE,QAAQ,oBAAoB,GAAG,IAAK;AAAA,IACtG,sBAAsB,CAAC,gCACtB,gBAAAA,MAAC,UAAK,KAAI,cAAa,MAAM,oBAAoB,IAC/C;AAAA,KACN;AAEJ;;;ACRI,gBAAAE,aAAA;AAvCJ,IAAM,0BAA0B,CAAC,UAAqC;AACpE,SAAO;AAAA,uBACc,KAAK,UAAU,yBAAyB,CAAC;AAAA,gCAChC,KAAK,UAAU,sBAAsB,CAAC;AAAA,mCACnC,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAAA;AAAA,aAE7D,KAAK,UAAU,MAAM,KAAK,CAAC;AAAA,YAC5B,KAAK,UAAU,MAAM,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA4BtC;AAEO,IAAM,iBAAiB,CAAC,EAAE,MAAM,MAA4C;AACjF,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,yBAAyB;AAAA,QACvB,QAAQ,wBAAwB,KAAK;AAAA,MACvC;AAAA;AAAA,EACF;AAEJ;;;ACvCI,qBAAAC,WACE,OAAAC,OADF,QAAAC,cAAA;AALG,IAAM,WAAW,MAAM;AAC5B,QAAM,OAAO,6BAA6B;AAC1C,QAAM,sBAAsB,KAAK,WAAW;AAE5C,SACE,gBAAAA,OAAAF,WAAA,EACE;AAAA,oBAAAC,MAAC,kBAAe,OAAO,KAAK,OAAO;AAAA,IACnC,gBAAAA,MAAC,gBAAa,MAAM,KAAK,MAAM;AAAA,IAC/B,gBAAAA,MAAC,aAAU,MAAM,KAAK,MAAM;AAAA,IAC3B,sBAAsB,gBAAAA,MAAC,UAAK,MAAK,UAAS,SAAQ,qBAAoB,IAAK;AAAA,KAC9E;AAEJ;;;ACjBA,OAAOE,SAAQ;AAIR,IAAM,iBAAiBA,IAAG;AAAA;AAAA;;;ACHjC,SAAS,eAAe;;;ACDxB,SAAS,WAAAC,gBAAe;AACxB,SAAS,aAAa,oBAAoB;;;ACD1C,SAAS,qBAAqB;AAyDL,gBAAAC,OACb,QAAAC,cADa;AA5CzB,IAAM,oBAAoB,CAAC,UAA4B;AACrD,SAAO,MAAM,OAAO,CAAC,MAAM,UAAU,UAAU,KAAK,MAAM,QAAQ,CAAC,GAAG,UAAU,KAAK,KAAK;AAC5F;AAEA,IAAM,wBAAwB,CAAC,OAA8B,gBAAiD;AAC5G,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,SAAS,QAAQ;AACxB,UAAI,KAAK,SAAS,aAAa;AAC7B,eAAO,CAAC,EAAE,IAAI,KAAK,IAAI,MAAM,KAAK,MAAM,OAAO,KAAK,SAAS,CAAC;AAAA,MAChE;AAEA;AAAA,IACF;AAEA,QAAI,KAAK,SAAS,aAAa;AAC7B,aAAO,KAAK,QAAQ,CAAC,EAAE,IAAI,KAAK,IAAI,MAAM,KAAK,MAAM,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC;AAAA,IAC/E;AAEA,UAAM,oBAAoB,sBAAsB,KAAK,OAAO,WAAW;AAEvE,QAAI,CAAC,mBAAmB;AACtB;AAAA,IACF;AAEA,WAAO,kBAAkB,KAAK,QAAQ,CAAC,EAAE,IAAI,KAAK,IAAI,MAAM,KAAK,MAAM,OAAO,KAAK,MAAM,CAAC,IAAI,iBAAiB;AAAA,EACjH;AAEA,SAAO;AACT;AAEA,IAAM,kBAAkB,CAAC,EAAE,YAAY,MAA+B;AACpE,QAAM,OAAO,qBAAqB;AAClC,QAAM,gBAAgB,2BAA2B,MAAM,WAAW;AAClE,QAAM,kBAAkB,kBAAkB;AAAA,IACxC,GAAI,gBAAiB,sBAAsB,cAAc,OAAO,WAAW,KAAK,CAAC,IAAK,CAAC;AAAA,EACzF,CAAC;AAED,SACE,gBAAAD,MAAC,UAAK,WAAU,wEACb,0BAAgB,IAAI,CAAC,MAAM,UAAU;AACpC,UAAM,OAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,KAAK,EAAE,CAAC;AAEnE,WACE,gBAAAC,OAAC,UAAmB,WAAU,YAC3B;AAAA,cAAQ,IAAI,gBAAAD,MAAC,iBAAc,WAAU,0CAAyC,IAAK;AAAA,MACpF,gBAAAC,OAAC,UAAK,WAAU,qCACb;AAAA,eAAO,gBAAAD,MAAC,QAAK,WAAU,mBAAkB,eAAY,QAAO,IAAK;AAAA,QAClE,gBAAAA,MAAC,UAAK,WAAU,YAAY,+BAAqB,KAAK,OAAO,EAAE,eAAe,WAAW,CAAC,GAAE;AAAA,SAC9F;AAAA,SALS,KAAK,EAMhB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,IAAO,0BAAQ;;;ADxCL,gBAAAE,OASA,QAAAC,cATA;AAfV,IAAM,iBAAiB,CAAC,EAAE,MAAM,WAAW,SAAS,MAA2B;AAC7E,QAAM,aAAa,cAAc;AAEjC,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,gBAAgB,KAAK,IAAI;AAAA,MAC/B,WAAWE;AAAA,QACT;AAAA,QACA,aAAa,cAAc;AAAA,QAC3B,YAAY;AAAA,MACd;AAAA,MACA,cAAY,GAAG,aAAa,aAAa,MAAM,KAAK,KAAK,KAAK;AAAA,MAE9D,0BAAAD,OAAC,SAAI,WAAU,8CACb;AAAA,wBAAAD,MAAC,SAAI,WAAWE,SAAQ,8BAA8B,aAAa,kBAAkB,aAAa,GAChG,0BAAAF,MAAC,2BAAgB,aAAa,KAAK,MAAM,GAC3C;AAAA,QACA,gBAAAA,MAAC,OAAE,WAAU,2CAA2C,+BAAqB,KAAK,KAAK,GAAE;AAAA,QACzF,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAWE;AAAA,cACT;AAAA,cACA,aAAa,kBAAkB;AAAA,YACjC;AAAA,YAEA,0BAAAD,OAAC,SAAI,WAAU,qBACZ;AAAA,4BAAc,gBAAAD,MAAC,eAAY,WAAU,UAAS;AAAA,cAC/C,gBAAAA,MAAC,UAAM,uBAAa,aAAa,QAAO;AAAA,cACvC,CAAC,cAAc,gBAAAA,MAAC,gBAAa,WAAU,UAAS;AAAA,eACnD;AAAA;AAAA,QACF;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;AAOO,IAAM,iBAAiB,CAAC;AAAA,EAC7B,cAAc,mBAAmB;AAAA,EACjC,UAAU,eAAe;AAC3B,MAA2B;AACzB,QAAM,oBAAoB,qBAAqB,EAAE,OAAO;AACxD,QAAM,eAAe;AACrB,QAAM,WAAW;AAEjB,MAAI,CAAC,mBAAmB;AACtB,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,gBAAgB,CAAC,UAAU;AAC9B,WAAO;AAAA,EACT;AAEA,SACE,gBAAAA,MAAC,SAAI,WAAU,eAAc,cAAW,iBACtC,0BAAAC,OAAC,SAAI,WAAU,6BACZ;AAAA,oBAAgB,gBAAAD,MAAC,kBAAe,MAAM,cAAc,WAAU,YAAW;AAAA,IACzE,YAAY,gBAAAA,MAAC,kBAAe,UAAU,CAAC,cAAc,MAAM,UAAU,WAAU,QAAO;AAAA,KACzF,GACF;AAEJ;;;AE9EA,SAAS,KAAK,cAAc;AAC5B,SAAS,QAAAG,aAAY;AAWb,SACE,OAAAC,OADF,QAAAC,cAAA;AAND,IAAM,aAAaC,MAAK,MAAM;AACnC,QAAM,EAAE,MAAM,IAAI,qBAAqB;AAEvC,SACE,gBAAAD,OAAC,YAAO,WAAU,6DAChB;AAAA,oBAAAA,OAAC,SAAI,WAAU,iCACb;AAAA,sBAAAA,OAAC,OAAE,MAAK,QAAO,WAAU,mCACvB;AAAA,wBAAAD,MAAC,UAAO,WAAU,UAAS;AAAA,QAAE;AAAA,SAC/B;AAAA,MACA,gBAAAC,OAAC,OAAE,MAAK,QAAO,WAAU,mCACvB;AAAA,wBAAAD,MAAC,OAAI,WAAU,UAAS;AAAA,QAAE;AAAA,SAC5B;AAAA,OACF;AAAA,IACA,gBAAAC,OAAC,SAAI,WAAU,qCACb;AAAA,sBAAAD,MAAC,uBAAY;AAAA,MACb,gBAAAA,MAAC,SAAI,WAAU,2BAA2B,mBAAS,gBAAAA,MAAC,SAAM,OAAc,QAAM,MAAC,GAAG;AAAA,OACpF;AAAA,KACF;AAEJ,CAAC;;;ACzBD,SAAS,aAAAG,kBAAiB;AAE1B,IAAM,WAAW,OAAO,UAAkB;AACxC,MAAI;AACF,UAAM,UAAU,UAAU,UAAU,KAAK;AACzC;AAAA,EACF,QAAQ;AACN,UAAM,WAAW,SAAS,cAAc,UAAU;AAClD,aAAS,QAAQ;AACjB,aAAS,aAAa,YAAY,MAAM;AACxC,aAAS,MAAM,WAAW;AAC1B,aAAS,MAAM,UAAU;AACzB,aAAS,KAAK,YAAY,QAAQ;AAClC,aAAS,OAAO;AAChB,aAAS,YAAY,MAAM;AAC3B,aAAS,KAAK,YAAY,QAAQ;AAAA,EACpC;AACF;AAEA,IAAM,iBAAiB,CAAC,WACtB,kBAAkB,UAAU,OAAO,QAAQ,2BAA2B,IAAI;AAErE,IAAM,kBAAkB,MAAM;AACnC,EAAAA,WAAU,MAAM;AACd,UAAM,cAAc,CAAC,UAAsB;AACzC,UAAI,MAAM,oBAAoB,MAAM,WAAW,GAAG;AAChD;AAAA,MACF;AAEA,UAAI,MAAM,WAAW,MAAM,WAAW,MAAM,YAAY,MAAM,QAAQ;AACpE;AAAA,MACF;AAEA,YAAM,OAAO,eAAe,MAAM,MAAM;AACxC,UAAI,CAAC,MAAM;AACT;AAAA,MACF;AAEA,YAAM,OAAO,KAAK,aAAa,MAAM;AACrC,UAAI,CAAC,MAAM;AACT;AAAA,MACF;AAEA,YAAM,UAAU,IAAI,IAAI,MAAM,OAAO,SAAS,IAAI;AAClD,UAAI,QAAQ,QAAQ,OAAO,SAAS,SAAS,QAAQ,MAAM;AACzD,gBAAQ,aAAa,MAAM,IAAI,QAAQ,IAAI;AAAA,MAC7C;AAEA,WAAK,SAAS,QAAQ,IAAI;AAAA,IAC5B;AAEA,aAAS,iBAAiB,SAAS,WAAW;AAE9C,WAAO,MAAM;AACX,eAAS,oBAAoB,SAAS,WAAW;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;;;AC3DA,SAAS,WAAAC,gBAAe;AAGxB,SAAS,QAAAC,OAAM,aAAAC,YAAW,UAAAC,eAAc;AACxC,SAAS,kBAAAC,uBAAsB;AA4DvB,SA0GK,YAAAC,WAzGK,OAAAC,OADV,QAAAC,cAAA;AAvCR,IAAM,qBAAqB,CAAC,QAAgB,iBAA0B,wBAAiC;AACrG,QAAM,aAAa,oBAAoB,CAAC,UAAU,MAAM,UAAU,MAAM,CAAC;AACzE,QAAM,EAAE,YAAY,IAAI,sBAAsB;AAC9C,QAAM,SAAS,eAAe,SAAY,mBAAmB,sBAAsB,cAAc;AAEjG,EAAAC,WAAU,MAAM;AACd,QAAI,qBAAqB;AACvB,kBAAY,QAAQ,IAAI;AACxB;AAAA,IACF;AAEA,QAAI,eAAe,UAAa,iBAAiB;AAC/C,kBAAY,QAAQ,IAAI;AAAA,IAC1B;AAAA,EACF,GAAG,CAAC,qBAAqB,iBAAiB,QAAQ,aAAa,UAAU,CAAC;AAE1E,SAAO;AAAA,IACL;AAAA,IACA,WAAW,CAAC,aAAsB,YAAY,QAAQ,QAAQ;AAAA,EAChE;AACF;AASA,IAAM,kBAAkB,CAAC,EAAE,OAAO,MAAM,aAAa,MAAM,KAAK,MAA4B;AAC1F,SACE,gBAAAF,MAAC,QAAG,WAAU,gBACZ,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,gBAAgB,IAAI;AAAA,MAC1B,WAAWG;AAAA,QACT;AAAA,QACA,SAAS,eAAe;AAAA,MAC1B;AAAA,MAEA,0BAAAF,OAAC,UAAK,WAAU,2BACb;AAAA,eAAO,gBAAAD,MAAC,QAAK,WAAU,mBAAkB,eAAY,QAAO,IAAK;AAAA,QAClE,gBAAAA,MAAC,UAAM,+BAAqB,OAAO,EAAE,eAAe,WAAW,CAAC,GAAE;AAAA,SACpE;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,IAAM,sBAAsB,CAAC,EAAE,OAAO,MAAM,KAAK,MAA4C;AAC3F,SACE,gBAAAA,MAAC,QAAG,WAAU,oHACZ,0BAAAC,OAAC,UAAK,WAAU,iCACb;AAAA,WAAO,gBAAAD,MAAC,QAAK,WAAU,mBAAkB,eAAY,QAAO,IAAK;AAAA,IAClE,gBAAAA,MAAC,UAAM,+BAAqB,OAAO,EAAE,eAAe,WAAW,CAAC,GAAE;AAAA,KACpE,GACF;AAEJ;AAUA,IAAM,oBAAoB,CAAC,EAAE,OAAO,MAAM,UAAU,kBAAkB,OAAO,MAAM,KAAK,MAA8B;AACpH,QAAM,UACJ,gBAAAC,OAAC,UAAK,WAAU,qCACb;AAAA,WAAO,gBAAAD,MAAC,QAAK,WAAU,mBAAkB,eAAY,QAAO,IAAK;AAAA,IAClE,gBAAAA,MAAC,UAAK,WAAWG,SAAQ,YAAY,mBAAmB,eAAe,GACpE,kBAAQ,qBAAqB,OAAO,EAAE,eAAe,WAAW,CAAC,IAAI,MACxE;AAAA,KACF;AAGF,MAAI,mBAAmB,MAAM;AAC3B,WACE,gBAAAH;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,gBAAgB,IAAI;AAAA,QAC1B,WAAWG;AAAA,UACT;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,EAEJ;AAEA,SAAO,gBAAAH,MAAC,UAAK,WAAU,iEAAiE,mBAAQ;AAClG;AAEA,IAAM,qBAAqB,CACzB,OACA,aACA,gBACgB;AAChB,SAAO,MAAM,IAAI,CAAC,SAAS;AACzB,QAAI,KAAK,SAAS,QAAQ;AACxB,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC,OAAO,KAAK;AAAA,UACZ,MAAM,KAAK;AAAA,UACX;AAAA,UACA,MAAM,YAAY,kBAAkB,QAAQ,KAAK,EAAE,CAAC;AAAA;AAAA,QAJ/C,KAAK;AAAA,MAKZ;AAAA,IAEJ;AAEA,WAAO,gBAAAA,MAAC,sBAAiC,OAAO,MAAM,aAA0B,eAAhD,KAAK,EAAqE;AAAA,EAC5G,CAAC;AACH;AAQA,IAAM,kBAAkB,CAAC,EAAE,OAAO,aAAa,YAAY,MAA4B;AACrF,QAAM,eAAe,mBAAmB,KAAK;AAE7C,SAAO,gBAAAA,MAAC,QAAG,WAAU,mBAAmB,6BAAmB,cAAc,aAAa,WAAW,GAAE;AACrG;AAQA,IAAM,qBAAqB,CAAC,EAAE,OAAO,aAAa,YAAY,MAA+B;AAC3F,QAAM,YAAY,aAAa,KAAK;AACpC,QAAM,eAAe,qBAAqB,KAAK;AAC/C,QAAM,gBAAgB,MAAM,gBAAgB;AAC5C,QAAM,kBAAkB,MAAM,aAAa,iBAAiB;AAC5D,QAAM,sBAAsB,cAAc,eAAe,cAAc,MAAM,OAAO,WAAW;AAC/F,QAAM,EAAE,QAAQ,UAAU,IAAI,mBAAmB,SAAS,MAAM,EAAE,IAAI,iBAAiB,mBAAmB;AAC1G,QAAM,YAAY,YAAY,kBAAkB,SAAS,MAAM,EAAE,CAAC;AAElE,MAAI,CAAC,eAAe;AAClB,QAAI,CAAC,MAAM,OAAO;AAChB,aAAO,gBAAAA,MAAAD,WAAA,EAAG,6BAAmB,cAAc,aAAa,WAAW,GAAE;AAAA,IACvE;AAEA,WACE,gBAAAE,OAAAF,WAAA,EACE;AAAA,sBAAAC,MAAC,uBAAoB,OAAO,MAAM,OAAO,MAAM,WAAW;AAAA,MACzD,mBAAmB,cAAc,aAAa,WAAW;AAAA,OAC5D;AAAA,EAEJ;AAEA,SACE,gBAAAA,MAAC,QACC,0BAAAC;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,MACN,UAAU,CAAC,UAAU;AACnB,kBAAU,MAAM,cAAc,IAAI;AAAA,MACpC;AAAA,MAEA;AAAA,wBAAAD,MAAC,aAAQ,WAAU,2CACjB,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,MAAM;AAAA,YACb,MAAM,aAAa;AAAA,YACnB,UAAU;AAAA,YACV,iBAAiB,QAAQ,SAAS;AAAA,YAClC,MAAM;AAAA;AAAA,QACR,GACF;AAAA,QACC,aAAa,SAAS,IACrB,gBAAAA,MAAC,mBAAgB,OAAO,cAAc,aAA0B,aAA0B,IACxF;AAAA;AAAA;AAAA,EACN,GACF;AAEJ;AAQA,IAAM,sBAAsB,CAAC,EAAE,SAAS,aAAa,gBAAgB,MAAgC;AACnG,QAAM,OAAO,qBAAqB;AAClC,QAAM,cAAc,KAAK,YAAY,kBAAkB,WAAW,QAAQ,EAAE,CAAC;AAC7E,QAAM,uBAAuB,QAAQ,OAAO,mBAAmB,mBAAmB,QAAQ,OAAO,WAAW;AAC5G,QAAM,EAAE,QAAQ,UAAU,IAAI;AAAA,IAC5B,WAAW,QAAQ,EAAE;AAAA,IACrB,QAAQ,OAAO;AAAA,IACf;AAAA,EACF;AAEA,SACE,gBAAAA,MAAC,QAAG,WAAU,QACZ,0BAAAC;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,MACN,UAAU,CAAC,UAAU;AACnB,kBAAU,MAAM,cAAc,IAAI;AAAA,MACpC;AAAA,MAEA;AAAA,wBAAAD,MAAC,aAAQ,WAAU,2CACjB,0BAAAA,MAAC,qBAAkB,OAAO,QAAQ,OAAO,UAAU,sBAAsB,MAAM,aAAa,GAC9F;AAAA,QACA,gBAAAA,MAAC,mBAAgB,OAAO,QAAQ,OAAO,aAA0B,aAAa,KAAK,aAAa;AAAA;AAAA;AAAA,EAClG,GACF;AAEJ;AAOO,IAAM,UAAUI;AAAA,EACrB,CAAC,EAAE,aAAa,kBAAkB,IAAI,iBAAiB,sBAAsB,GAAG,MAAoB;AAClG,UAAM,qBAAqBC,QAA8B,IAAI;AAC7D,UAAM,EAAE,YAAY,IAAIC,gBAAe;AACvC,UAAM,cAAc,mBAAmB;AACvC,UAAM,OAAO,qBAAqB;AAClC,UAAM,kBAAkB,uBAAuB,2BAA2B,MAAM,WAAW,GAAG,MAAM;AACpG,UAAM,EAAE,gBAAgB,IAAI;AAE5B,WACE,gBAAAN,MAAC,WAAM,WAAU,qCACf,0BAAAC,OAAC,SAAI,WAAU,uBACb;AAAA,sBAAAD,MAAC,SAAI,WAAU,sHAAqH;AAAA,MACpI,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,WAAU;AAAA,UAEV,0BAAAA,MAAC,QAAG,WAAWG,SAAQ,sDAAsD,GAC1E,0BAAgB,IAAI,CAAC,YACpB,gBAAAH;AAAA,YAAC;AAAA;AAAA,cAEC;AAAA,cACA;AAAA,cACA;AAAA;AAAA,YAHK,QAAQ;AAAA,UAIf,CACD,GACH;AAAA;AAAA,MACF;AAAA,OACF,GACF;AAAA,EAEJ;AACF;;;ACpRA,OAAOO,OAAM,WAAAC,gBAAe;AAC5B,SAAS,OAAO,2BAA2B;AA4B3B,qBAAAC,WAEI,OAAAC,OADF,QAAAC,cADF;AAhBT,IAAM,kBAAkB,CAAC;AAAA,EAC9B,UAAU,eAAe,CAAC;AAAA,EAC1B,iBAAiB,sBAAsB;AAAA,EACvC,kBAAkB;AAAA,EAClB,qBAAqB,MAAM;AAC7B,MAA4B;AAC1B,QAAM,EAAE,SAAS,IAAI,qBAAqB;AAC1C,QAAM,oBAAoB;AAC1B,QAAM,2BAA2B;AAEjC,SACE,gBAAAD,MAAC,WAAM,WAAWE,SAAQ,2BAA2B,SAAS,QAAQ,0BAA0B,GAC9F,0BAAAF,MAAC,SAAI,WAAU,iBACb,0BAAAC,OAAC,SAAI,WAAU,4FACZ;AAAA,+BACG,kBAAkB,SAAS,KACzB,gBAAAA,OAAAF,WAAA,EACE;AAAA,sBAAAE,OAAC,OAAE,WAAU,gGACX;AAAA,wBAAAD,MAAC,uBAAoB,WAAU,UAAS;AAAA,QAAE;AAAA,SAE5C;AAAA,MACA,gBAAAA,MAAC,SAAI,cAAW,gBAAe,WAAU,SACvC,0BAAAA,MAAC,QACE,4BAAkB,IAAI,CAAC,YACtB,gBAAAA,MAAC,QACC,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,IAAI,QAAQ,EAAE;AAAA,UACpB,gBAAc,oBAAoB,QAAQ,KAAK,aAAa;AAAA,UAC5D,SAAS,MAAM,mBAAmB,QAAQ,EAAE;AAAA,UAC5C,WAAWE;AAAA,YACT;AAAA,YACA,QAAQ,QAAQ,IAAI,SAAS;AAAA,YAC7B,oBAAoB,QAAQ,KAAK,qCAAqC;AAAA,UACxE;AAAA,UAEC,kBAAQ;AAAA;AAAA,MACX,KAZO,QAAQ,EAajB,CACD,GACH,GACF;AAAA,OACF,IAEF;AAAA,IACJ,gBAAAF,MAAC,SAAM,UAAoB;AAAA,KAC7B,GACF,GACF;AAEJ;AAEA,IAAM,QAAQ,CAAC,EAAE,SAAS,MAAgD;AACxE,MAAI,SAAS,QAAQ,WAAW,KAAK,SAAS,KAAK,WAAW,GAAG;AAC/D,WAAO;AAAA,EACT;AAEA,SACE,gBAAAC,OAAC,WACC;AAAA,oBAAAA,OAAC,OAAE,WAAU,gGACX;AAAA,sBAAAD,MAAC,SAAM,WAAU,UAAS;AAAA,MAAE;AAAA,OAE9B;AAAA,IACA,gBAAAC,OAAC,QAAG,WAAU,yEACX;AAAA,eAAS,QAAQ,IAAI,CAAC,YACrB,gBAAAD,MAAC,aAA6B,WAAU,iBACtC,0BAAAA,MAAC,aAAU,MAAM,QAAQ,MAAM,OAAO,QAAQ,MAC5C,0BAAAA,MAAC,eAAY,SAAkB,GACjC,KAHc,QAAQ,IAIxB,CACD;AAAA,MACA,SAAS,KAAK,IAAI,CAAC,YAClB,gBAAAA,MAAC,aACC,0BAAAA,MAAC,aAAU,MAAM,QAAQ,MAAM,OAAO,QAAQ,MAC5C,0BAAAA,MAAC,eAAY,SAAkB,GACjC,KAHc,QAAQ,IAIxB,CACD;AAAA,OACH;AAAA,KACF;AAEJ;AAEA,IAAM,cAAc,CAAC;AAAA,EACnB;AACF,MAEM;AACJ,SACE,gBAAAC,OAAAF,WAAA,EACE;AAAA,oBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,QAAQ;AAAA,QACb,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,KAAK,QAAQ;AAAA,QACb,WAAWE,SAAQ,SAAS,QAAQ,WAAW,gBAAgB,aAAa;AAAA;AAAA,IAC9E;AAAA,IACC,QAAQ,WACP,gBAAAF,MAAC,SAAM,KAAK,QAAQ,UAAU,OAAO,KAAK,QAAQ,KAAK,KAAK,QAAQ,SAAS,WAAU,qBAAoB,IACzG;AAAA,KACN;AAEJ;AAEA,IAAM,YAAYG,IAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYrB,IAAM,YAAYA,IAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQrB,IAAM,QAAQA,IAAG;AAAA;AAAA;AAAA;AAAA;;;ACxIjB,OAAOC,SAAQ;AACf,SAAS,mBAAAC,wBAAuB;AAChC,SAA6C,aAAa;;;ACF1D,SAAS,WAAAC,gBAAe;AACxB,SAAS,aAAa,iBAAAC,sBAAqB;AAC3C,SAAS,eAAAC,oBAAmB;AA0DpB,gBAAAC,OAGI,QAAAC,cAHJ;AA/CR,IAAMC,qBAAoB,CAAC,UAA4B;AACrD,SAAO,MAAM,OAAO,CAAC,MAAM,UAAU,UAAU,KAAK,MAAM,QAAQ,CAAC,GAAG,UAAU,KAAK,KAAK;AAC5F;AAEA,IAAMC,yBAAwB,CAAC,OAA8B,gBAAiD;AAC5G,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,SAAS,QAAQ;AACxB,UAAI,KAAK,SAAS,aAAa;AAC7B,eAAO,CAAC,EAAE,IAAI,KAAK,IAAI,OAAO,KAAK,SAAS,CAAC;AAAA,MAC/C;AAEA;AAAA,IACF;AAEA,QAAI,KAAK,SAAS,aAAa;AAC7B,aAAO,KAAK,QAAQ,CAAC,EAAE,IAAI,KAAK,IAAI,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC;AAAA,IAC9D;AAEA,UAAM,oBAAoBA,uBAAsB,KAAK,OAAO,WAAW;AAEvE,QAAI,CAAC,mBAAmB;AACtB;AAAA,IACF;AAEA,WAAOD;AAAA,MACL,KAAK,QAAQ,CAAC,EAAE,IAAI,KAAK,IAAI,OAAO,KAAK,MAAM,GAAG,GAAG,iBAAiB,IAAI;AAAA,IAC5E;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,2BAA2B,CAAC,EAAE,YAAY,MAA+B;AAC7E,QAAM,OAAO,qBAAqB;AAClC,QAAM,gBAAgB,2BAA2B,MAAM,WAAW;AAClE,QAAM,kBAAkBA,mBAAkB;AAAA,IACxC,GAAI,gBAAgB,CAAC,EAAE,IAAI,cAAc,IAAI,OAAO,cAAc,SAAS,CAAC,IAAI,CAAC;AAAA,IACjF,GAAI,gBAAiBC,uBAAsB,cAAc,OAAO,WAAW,KAAK,CAAC,IAAK,CAAC;AAAA,EACzF,CAAC;AAED,QAAM,cAAcC,aAAY,MAAM;AACpC,UAAM,wBAAwB;AAAA,EAChC,GAAG,CAAC,CAAC;AAEL,SACE,gBAAAJ,MAAC,YAAO,WAAU,4CAA2C,MAAK,UAAS,SAAS,aAClF,0BAAAC,OAAC,UAAK,WAAU,6DACd;AAAA,oBAAAD,MAAC,eAAY,WAAU,gCAA+B;AAAA,IACtD,gBAAAA,MAAC,UAAK,WAAU,2BACb,0BAAgB,IAAI,CAAC,MAAM,UAC1B,gBAAAC,OAAC,UAAmB,WAAU,YAC3B;AAAA,cAAQ,IAAI,gBAAAD,MAACK,gBAAA,EAAc,WAAU,0CAAyC,IAAK;AAAA,MACpF,gBAAAL,MAAC,UAAK,WAAWM,SAAQ,UAAU,KAAK,iBAAiB,kBAAkB,GACxE,+BAAqB,KAAK,OAAO,EAAE,eAAe,WAAW,CAAC,GACjE;AAAA,SAJS,KAAK,EAKhB,CACD,GACH;AAAA,KACF,GACF;AAEJ;AAEA,IAAO,mCAAQ;;;AD9CX,qBAAAC,WACE,OAAAC,OAaM,QAAAC,cAdR;AAfJ,IAAM,wBAAwB,CAAC;AAAA,EAC7B,WAAW,CAAC;AAAA,EACZ,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ;AAAA,EACA,kBAAkB;AAAA,EAClB,qBAAqB,MAAM;AAC7B,MAA4B;AAC1B,QAAM,iBAAiB;AACvB,QAAM,WAAW,MAAM;AACvB,QAAM,UAAU,GAAG,QAAQ;AAC3B,QAAM,gBACJ,mBAAmB,SAAS,KAAK,CAAC,YAAY,QAAQ,OAAO,eAAe,IAAI,kBAAkB;AAEpG,SACE,gBAAAA,OAAAF,WAAA,EACE;AAAA,oBAAAC,MAAC,SAAI,WAAU,kBAAiB;AAAA,IAChC,gBAAAA,MAAC,aACC,0BAAAC,OAAC,kBACC;AAAA,sBAAAD,MAAC,SAAI,WAAU,mBACb,0BAAAA,MAAC,oCAAyB,aAA0B,GACtD;AAAA,MACA,gBAAAC,OAAC,WAAM,WAAU,mCAAkC,SAAS,UAC1D;AAAA,wBAAAD,MAAC,UAAK,IAAI,SAAS,WAAU,WAC1B,qBACH;AAAA,QACA,gBAAAA,MAAC,UAAK,WAAU,cAAa,eAAY,QACvC,0BAAAA,MAACE,kBAAA,EAAgB,WAAU,UAAS,GACtC;AAAA,QACA,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ,mBAAiB;AAAA,YACjB,OAAO,iBAAiB;AAAA,YACxB,UAAU,CAAC,MAAM;AACf,oBAAM,QAAQ,EAAE,OAAO;AACvB,kBAAI,UAAU,gBAAgB;AAC5B,mCAAmB,EAAE;AACrB,uBAAO,QAAQ,aAAa,MAAM,IAAI,GAAG,OAAO,SAAS,QAAQ,GAAG,OAAO,SAAS,MAAM,EAAE;AAC5F,uBAAO,SAAS,EAAE,KAAK,GAAG,UAAU,OAAO,CAAC;AAC5C;AAAA,cACF;AAEA,iCAAmB,KAAK;AACxB,qBAAO,SAAS,OAAO,mBAAmB,KAAK;AAAA,YACjD;AAAA,YAEA;AAAA,8BAAAD,MAAC,YAAO,OAAO,gBAAiB,qBAAU;AAAA,cACzC,mBACC,SAAS,IAAI,CAAC,YACZ,gBAAAA,MAAC,YAAwB,OAAO,QAAQ,IACrC,kBAAQ,SADE,QAAQ,EAErB,CACD;AAAA;AAAA;AAAA,QACL;AAAA,SACF;AAAA,OACF,GACF;AAAA,KACF;AAEJ;AAEA,IAAO,gCAAQ;AAEf,IAAM,YAAYG,IAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUrB,IAAM,iBAAiBA,IAAG;AAAA;AAAA;AAAA;AAAA;;;AEvF1B,SAAS,aAAAC,YAAW,YAAAC,iBAAgB;AAIpC,IAAM,iBAAiB,MAAM;AAC3B,MAAI;AACF,WAAO,mBAAmB,OAAO,SAAS,IAAI;AAAA,EAChD,QAAQ;AACN,WAAO,OAAO,SAAS;AAAA,EACzB;AACF;AAEA,IAAM,qBAAqB,MAAM;AAC/B,QAAM,OAAO,SAAS,cAAc,oBAAoB;AACxD,MAAI,EAAE,gBAAgB,cAAc;AAClC,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,MAAM,KAAK,KAAK,iBAAiB,YAAY,CAAC,EAAE;AAAA,IACrD,CAAC,YAA2C,mBAAmB;AAAA,EACjE;AACF;AAEA,IAAM,mBAAmB,CAAC,MAAoB,UAAwB;AACpE,MAAI,KAAK,WAAW,MAAM,QAAQ;AAChC,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,MAAM,CAAC,SAAS,UAAU;AACpC,UAAM,QAAQ,MAAM,KAAK;AACzB,WACE,UAAU,UAAa,QAAQ,UAAU,MAAM,SAAS,QAAQ,OAAO,MAAM,MAAM,QAAQ,UAAU,MAAM;AAAA,EAE/G,CAAC;AACH;AAEA,IAAM,sBAAsB,CAAC,mBAA2D;AACtF,QAAM,OAAO,SAAS,cAAc,oBAAoB;AACxD,MAAI,EAAE,gBAAgB,cAAc;AAClC;AAAA,EACF;AAEA,QAAM,UAAU,qBAAqB;AACrC,QAAM,eAAe,MAAM,KAAK,KAAK,iBAAiB,YAAY,CAAC,EAChE,IAAI,CAAC,YAAY;AAChB,UAAM,QAAQ,sBAAsB,QAAQ,eAAe,EAAE;AAC7D,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,IAAI,cAAc;AACpC,YAAQ,UAAU,IAAI,iBAAiB;AAEvC,UAAM,KAAK,QAAQ,MAAM,QAAQ,KAAK;AACtC,QAAI,CAAC,QAAQ,IAAI;AACf,cAAQ,KAAK;AAAA,IACf;AAEA,WAAO;AAAA,MACL,OAAO,OAAO,QAAQ,QAAQ,MAAM,CAAC,CAAC;AAAA,MACtC;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC,EACA,OAAO,CAAC,YAAmC,YAAY,IAAI;AAE9D,iBAAe,CAAC,oBAAoB;AAClC,QAAI,iBAAiB,iBAAiB,YAAY,GAAG;AACnD,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT,CAAC;AACH;AAEA,IAAM,gCAAgC,CAAC,uBAAgD;AACrF,QAAM,kBAAkB,mBAAmB;AAC3C,MAAI,gBAAgB,WAAW,GAAG;AAChC;AAAA,EACF;AAEA,QAAM,mBAAmB;AACzB,MAAI,sBAAsB;AAE1B,aAAW,WAAW,iBAAiB;AACrC,QAAI,CAAC,QAAQ,IAAI;AACf;AAAA,IACF;AAEA,QAAI,QAAQ,sBAAsB,EAAE,OAAO,kBAAkB;AAC3D,4BAAsB,QAAQ;AAC9B;AAAA,IACF;AAEA;AAAA,EACF;AAEA,QAAM,cAAc,gBAAgB,GAAG,EAAE;AACzC,MAAI,aAAa,MAAM,OAAO,cAAc,OAAO,WAAW,SAAS,gBAAgB,eAAe,GAAG;AACvG,0BAAsB,YAAY;AAAA,EACpC;AAEA,qBAAmB,mBAAmB;AACxC;AAYO,IAAM,0BAA0B,CAAC;AAAA,EACtC,UAAU,gBAAgB,CAAC;AAC7B,MAAmE;AACjE,QAAM,CAAC,iBAAiB,kBAAkB,IAAIC,UAAS,EAAE;AACzD,QAAM,CAAC,aAAa,cAAc,IAAIA,UAAuB,aAAa;AAC1E,QAAM,oBAAoB,YAAY,SAAS,IAAI,cAAc;AAEjE,EAAAC,WAAU,MAAM;AACd,QAAI,cAAc;AAElB,UAAM,oBAAoB,MAAM;AAC9B,UAAI,aAAa;AACf;AAAA,MACF;AAEA,oBAAc,OAAO,sBAAsB,MAAM;AAC/C,sBAAc;AACd,sCAA8B,kBAAkB;AAAA,MAClD,CAAC;AAAA,IACH;AAEA,UAAM,aAAa,MAAM;AACvB,YAAM,cAAc,eAAe,EAAE,QAAQ,MAAM,EAAE;AACrD,UAAI,gBAAgB,IAAI;AACtB,2BAAmB,WAAW;AAC9B;AAAA,MACF;AAEA,wBAAkB;AAAA,IACpB;AAEA,eAAW;AACX,mBAAe,MAAM;AACnB,0BAAoB,cAAc;AAClC,wBAAkB;AAAA,IACpB,CAAC;AAED,WAAO,iBAAiB,cAAc,UAAU;AAChD,WAAO,iBAAiB,UAAU,mBAAmB,EAAE,SAAS,KAAK,CAAC;AACtE,WAAO,iBAAiB,UAAU,iBAAiB;AAEnD,WAAO,MAAM;AACX,UAAI,aAAa;AACf,eAAO,qBAAqB,WAAW;AAAA,MACzC;AAEA,aAAO,oBAAoB,cAAc,UAAU;AACnD,aAAO,oBAAoB,UAAU,iBAAiB;AACtD,aAAO,oBAAoB,UAAU,iBAAiB;AAAA,IACxD;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,EAAAA,WAAU,MAAM;AACd,QAAI,OAAO,WAAW,aAAa;AACjC;AAAA,IACF;AAEA,mBAAe,CAAC,oBAAoB;AAClC,UAAI,iBAAiB,iBAAiB,aAAa,GAAG;AACpD,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT,CAAC;AACD,uBAAmB,EAAE;AAErB,mBAAe,MAAM;AACnB,0BAAoB,cAAc;AAClC,oCAA8B,kBAAkB;AAAA,IAClD,CAAC;AAAA,EACH,GAAG,CAAC,aAAa,CAAC;AAElB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AT1KI,qBAAAC,WACE,OAAAC,OAKI,QAAAC,cANN;AAPG,IAAM,aAAa,CAAC,EAAE,SAAS,MAAuB;AAC3D,QAAM,OAAO,QAAQ;AACrB,QAAM,EAAE,iBAAiB,mBAAmB,mBAAmB,IAAI,wBAAwB;AAAA,IACzF,UAAU,KAAK;AAAA,EACjB,CAAC;AAED,SACE,gBAAAA,OAAAF,WAAA,EACE;AAAA,oBAAAC,MAAC,mBAAgB;AAAA,IACjB,gBAAAA,MAAC,SAAI,WAAU,sIAAqI;AAAA,IACpJ,gBAAAA,MAAC,mBACC,0BAAAC,OAAC,SAAI,WAAU,kBACb;AAAA,sBAAAD,MAAC,WAAQ,aAAa,KAAK,KAAK,MAAM,iBAAiB,KAAK,KAAK,WAAW;AAAA,MAC5E,gBAAAC,OAAC,UAAK,WAAU,oCACd;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,UAAU;AAAA,YACV,iBAAiB,KAAK,KAAK,mBAAmB,kBAAkB,SAAS;AAAA,YACzE,WAAW,KAAK,KAAK;AAAA,YACrB,aAAa,KAAK,KAAK;AAAA,YACvB;AAAA,YACA;AAAA;AAAA,QACF;AAAA,QACA,gBAAAA,MAAC,SAAI,WAAU,iBAAiB,UAAS;AAAA,QACzC,gBAAAA,MAAC,kBAAe,cAAc,KAAK,cAAc,UAAU,KAAK,UAAU;AAAA,QAC1E,gBAAAA,MAAC,cAAW;AAAA,SACd;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,UAAU;AAAA,UACV,iBAAiB,KAAK,KAAK;AAAA,UAC3B;AAAA,UACA;AAAA;AAAA,MACF;AAAA,OACF,GACF;AAAA,KACF;AAEJ;;;AUnDA,SAAS,WAAAE,gBAAe;AAepB,SAEI,OAAAC,OAFJ,QAAAC,cAAA;AAJG,IAAM,WAAW,CAAC,EAAE,QAAQ,MAAqB;AACtD,QAAM,EAAE,KAAK,IAAIC,SAAQ;AAEzB,SACE,gBAAAD,OAAC,kBAAe,oBAAiB,IAC/B;AAAA,oBAAAD,MAAC,SAAI,WAAU,kBACb,0BAAAA,MAAC,oCAAyB,aAAa,KAAK,MAAM,GACpD;AAAA,IACA,gBAAAA,MAAC,SAAI,WAAU,wBACb,0BAAAA,MAAC,2BAAgB,aAAa,KAAK,MAAM,GAC3C;AAAA,IACA,gBAAAA,MAAC,QAAG,WAAU,gCAAgC,+BAAqB,KAAK,KAAK,GAAE;AAAA,IAC/E,gBAAAA,MAAC,QAAG;AAAA,IACJ,gBAAAA,MAAC,WAAQ;AAAA,KACX;AAEJ;","names":["cmMerge","usePageContext","cm","usePageContext","cmMerge","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","cmMerge","cm","cmMerge","ChevronDown","Menu","TextSearch","useCallback","jsx","jsxs","StyledNav","cm","StyledNavList","useCallback","cmMerge","ChevronDown","TextSearch","Menu","cmMerge","useCallback","useEffect","useState","jsx","jsxs","cmMerge","useState","useCallback","useEffect","useCallback","useEffect","useRef","useState","jsx","jsxs","usePageContext","cm","useEffect","useMemo","useMemo","useEffect","jsx","jsxs","usePageContext","cmMerge","Fragment","jsx","jsxs","Fragment","jsx","jsxs","jsx","Fragment","jsx","jsxs","cm","cmMerge","jsx","jsxs","jsx","jsxs","cmMerge","memo","jsx","jsxs","memo","useEffect","cmMerge","memo","useEffect","useRef","usePageContext","Fragment","jsx","jsxs","useEffect","cmMerge","memo","useRef","usePageContext","cm","cmMerge","Fragment","jsx","jsxs","cmMerge","cm","cm","TableOfContents","cmMerge","ChevronsRight","useCallback","jsx","jsxs","dedupeBreadcrumbs","getSidebarBreadcrumbs","useCallback","ChevronsRight","cmMerge","Fragment","jsx","jsxs","TableOfContents","cm","useEffect","useState","useState","useEffect","Fragment","jsx","jsxs","useData","jsx","jsxs","useData"]}
|