@xyd-js/framework 0.1.0-xyd.2 → 0.1.0-xyd.21

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.
Files changed (40) hide show
  1. package/dist/hydration.js +63 -121
  2. package/dist/hydration.js.map +1 -1
  3. package/dist/index.d.ts +3 -1
  4. package/dist/index.js +0 -17
  5. package/dist/index.js.map +1 -1
  6. package/dist/react.js +103 -1437
  7. package/dist/react.js.map +1 -1
  8. package/package.json +19 -18
  9. package/dist/hydration.d.mts +0 -11
  10. package/dist/hydration.mjs +0 -245
  11. package/dist/hydration.mjs.map +0 -1
  12. package/dist/index.d.mts +0 -6
  13. package/dist/index.mjs +0 -1
  14. package/dist/index.mjs.map +0 -1
  15. package/dist/react.d.mts +0 -32
  16. package/dist/react.mjs +0 -1938
  17. package/dist/react.mjs.map +0 -1
  18. package/dist/sidebar-Dwf54qYp.d.mts +0 -15
  19. package/packages/hydration/README.md +0 -3
  20. package/packages/hydration/index.ts +0 -3
  21. package/packages/hydration/settings-to-props.ts +0 -325
  22. package/packages/react/README.md +0 -3
  23. package/packages/react/components/index.tsx +0 -337
  24. package/packages/react/components/sidebar/index.ts +0 -3
  25. package/packages/react/components/sidebar/sidebar-group.tsx +0 -240
  26. package/packages/react/components/sidebar/sidebar.tsx +0 -127
  27. package/packages/react/contexts/framework.tsx +0 -78
  28. package/packages/react/contexts/index.ts +0 -2
  29. package/packages/react/contexts/ui.tsx +0 -6
  30. package/packages/react/hooks/index.ts +0 -3
  31. package/packages/react/hooks/useMatchedNav.tsx +0 -29
  32. package/packages/react/index.ts +0 -12
  33. package/packages/react/utils/manualHydration.ts +0 -25
  34. package/packages/theme/context.tsx +0 -19
  35. package/packages/theme/index.ts +0 -0
  36. package/postcss.config.cjs +0 -5
  37. package/src/index.ts +0 -1
  38. package/src/types.ts +0 -5
  39. package/tsconfig.json +0 -45
  40. package/tsup.config.ts +0 -28
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../packages/react/index.ts","../packages/react/components/index.tsx","../../xyd-components/dist/index-C0sBj-Rt.js","../../xyd-components/dist/tslib.es6-nZyJ5rcw.js","../../xyd-components/dist/writer.js","../../xyd-components/dist/UnderlineNav-rNUvd4IV.js","../../xyd-components/dist/_rollupPluginBabelHelpers-DOmTa7nq.js","../../../node_modules/.pnpm/@radix-ui+react-tabs@1.1.2_@types+react-dom@18.3.5_@types+react@18.3.18__@types+react@18.3.18_qsyrobternj736o5ex7scdd3r4/node_modules/@radix-ui/react-tabs/src/Tabs.tsx","../../../node_modules/.pnpm/@radix-ui+primitive@1.1.1/node_modules/@radix-ui/primitive/src/primitive.tsx","../../../node_modules/.pnpm/@radix-ui+react-context@1.1.1_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-context/src/createContext.tsx","../../../node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.1_@types+react-dom@18.3.5_@types+react@18.3.18__@types+react_bkbd3syfptkiebtjifbhjosaba/node_modules/@radix-ui/react-roving-focus/src/RovingFocusGroup.tsx","../../../node_modules/.pnpm/@radix-ui+react-collection@1.1.1_@types+react-dom@18.3.5_@types+react@18.3.18__@types+react@1_du3umibpgknzrmwryvhzp3lgou/node_modules/@radix-ui/react-collection/src/Collection.tsx","../../../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.1_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-compose-refs/src/composeRefs.tsx","../../../node_modules/.pnpm/@radix-ui+react-slot@1.1.1_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-slot/src/Slot.tsx","../../../node_modules/.pnpm/@radix-ui+react-id@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-id/src/id.tsx","../../../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-use-layout-effect/src/useLayoutEffect.tsx","../../../node_modules/.pnpm/@radix-ui+react-primitive@2.0.1_@types+react-dom@18.3.5_@types+react@18.3.18__@types+react@18_sspjpiczol7qxzbuuyfihuep4u/node_modules/@radix-ui/react-primitive/src/Primitive.tsx","../../../node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-use-callback-ref/src/useCallbackRef.tsx","../../../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-use-controllable-state/src/useControllableState.tsx","../../../node_modules/.pnpm/@radix-ui+react-direction@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-direction/src/Direction.tsx","../../../node_modules/.pnpm/@radix-ui+react-presence@1.1.2_@types+react-dom@18.3.5_@types+react@18.3.18__@types+react@18._pqwkltkxenlrsgmgun6icjiigu/node_modules/@radix-ui/react-presence/src/Presence.tsx","../../../node_modules/.pnpm/@radix-ui+react-presence@1.1.2_@types+react-dom@18.3.5_@types+react@18.3.18__@types+react@18._pqwkltkxenlrsgmgun6icjiigu/node_modules/@radix-ui/react-presence/src/useStateMachine.tsx","../../../node_modules/.pnpm/lucide-react@0.447.0_react@18.3.1/node_modules/shared/src/utils.ts","../../../node_modules/.pnpm/lucide-react@0.447.0_react@18.3.1/node_modules/lucide-react/src/defaultAttributes.ts","../../../node_modules/.pnpm/lucide-react@0.447.0_react@18.3.1/node_modules/lucide-react/src/icons/chevron-left.ts","../../../node_modules/.pnpm/lucide-react@0.447.0_react@18.3.1/node_modules/lucide-react/src/icons/chevron-right.ts","../packages/react/contexts/framework.tsx","../packages/react/components/sidebar/sidebar-group.tsx","../packages/react/contexts/ui.tsx","../packages/react/components/sidebar/sidebar.tsx","../packages/react/utils/manualHydration.ts","../packages/react/hooks/useMatchedNav.tsx"],"sourcesContent":["export * from \"./components\"\n\nexport {Framework} from \"./contexts\"\nexport type {FrameworkProps} from \"./contexts\"\n\nexport {\n useMatchedSubNav\n} from \"./hooks\"\n\nexport type {\n FwSidebarGroupProps\n} from \"./components/sidebar/sidebar\"","import React, {isValidElement} from \"react\";\nimport {useLocation} from \"react-router\";\n\nimport {Toc, SubNav, UISidebar} from \"@xyd-js/ui\"\nimport type {ITOC} from \"@xyd-js/ui\";\nimport {Breadcrumbs, NavLinks} from \"@xyd-js/components/writer\";\n\nimport {useBreadcrumbs, useNavLinks, useSettings, useSidebarGroups, useToC} from \"../contexts\";\nimport {FwSidebarItemGroup, FwSidebarGroupContext, FwSidebarItemProps} from \"./sidebar\";\nimport {Nav} from \"@xyd-js/ui\";\n\nimport {manualHydration} from \"../utils/manualHydration\";\nimport {useMatchedSubNav} from \"../hooks\";\n\nfunction FwNavLogo() {\n const settings = useSettings()\n\n const logo = isValidElement(settings?.styling?.logo) ? settings?.styling?.logo : manualHydration(settings?.styling?.logo)\n\n // TODO: configurable url?\n return <a href=\"/\">\n {logo}\n </a>\n}\n\nfunction FwNav({kind}: { kind?: \"middle\" }) {\n const matchedSubnav = useMatchedSubNav()\n const location = useLocation()\n\n const settings = useSettings()\n\n const headers = matchedSubnav ? matchedSubnav?.items : settings?.structure?.header\n const active = headers?.find(item => location.pathname.startsWith(item.url || \"\"))\n\n return <Nav\n value={active?.url || \"\"}\n kind={kind}\n logo={<FwNavLogo/>}\n onChange={() => {\n }}\n >\n {\n settings?.structure?.header?.map((item, index) => {\n return <Nav.Item\n key={index + (item.url || \"\") + item.name}\n href={item?.url || \"\"}\n value={item.url}\n >\n {item.name}\n </Nav.Item>\n })\n }\n </Nav>\n}\n\nfunction FwSubNav() {\n const matchedSubnav = useMatchedSubNav()\n const location = useLocation()\n\n if (!matchedSubnav) {\n return null\n }\n\n // TODO: in the future routing props from settings like {match: \"/docs/api/browser\"}\n const active = matchedSubnav?.items.findLast(item => location.pathname.startsWith(item.url || \"\"))\n\n // TODO: value\n return <SubNav\n title={matchedSubnav?.name || \"\"}\n value={active?.url || \"\"}\n onChange={() => {\n }}\n >\n {matchedSubnav?.items.map((item, index) => {\n return <SubNav.Item value={item.url || \"\"} href={item.url}>\n {item.name}\n </SubNav.Item>\n })}\n </SubNav>\n\n}\n\nexport interface FwSidebarGroupsProps {\n onePathBehaviour?: boolean\n clientSideRouting?: boolean\n}\n\nfunction recursiveSearch(items: FwSidebarItemProps[], href: string, levels: any[] = []) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n\n if (item.href === href) {\n return [...levels, i]\n }\n\n if (item.items) {\n const result = recursiveSearch(item.items, href, [...levels, i])\n if (result) {\n return result\n }\n }\n }\n return null\n}\n\nfunction FwSidebarGroups(props: FwSidebarGroupsProps) {\n const groups = useSidebarGroups()\n\n const settings = useSettings()\n\n const footerItems = settings.structure?.anchors?.bottom?.map(anchor => {\n let icon\n\n // TODO: refactor this !!!\n if (typeof anchor.icon === \"string\") {\n switch (anchor.icon) {\n case \"icon-cookbook\": {\n icon = <IconCookbook/>\n break\n }\n\n case \"icon-community\": {\n icon = <IconCommunity/>\n break\n }\n\n case \"icon-marketplace\": {\n icon = <IconMarketplace/>\n break\n }\n\n case \"icon-sdk\": {\n icon = <IconSDK/>\n break\n }\n\n default: {\n icon = null\n }\n }\n } else {\n icon = isValidElement(anchor.icon) ? anchor.icon : manualHydration(anchor.icon)\n }\n\n return <UISidebar.FooterItem href={anchor.url} icon={icon}>\n {anchor.name}\n </UISidebar.FooterItem>\n })\n\n const location = useLocation()\n const initialActiveItems: any[] = []\n groups.forEach(group => {\n const activeLevels = recursiveSearch(group.items, location.pathname) || []\n\n activeLevels.reduce((acc, index) => {\n initialActiveItems.push(acc[index])\n acc[index].active = true\n return acc[index].items\n }, group.items)\n\n return group\n })\n\n return <FwSidebarGroupContext\n onePathBehaviour={props.onePathBehaviour}\n clientSideRouting={props.clientSideRouting}\n initialActiveItems={initialActiveItems}\n >\n <UISidebar footerItems={footerItems && footerItems}>\n {\n groups?.map((group, index) => <FwSidebarItemGroup\n key={index + group.group}\n {...group}\n />)\n }\n </UISidebar>\n </FwSidebarGroupContext>\n}\n\ntype FlatTOC = {\n depth: number\n value: string\n}\n\nfunction FwToc() {\n const toc = useToC()\n\n if (!toc) {\n return null\n }\n\n const flatToc: FlatTOC[] = []\n\n const flatten = (toc?: ITOC[]) => {\n if (!toc) {\n return\n }\n\n toc.forEach(item => {\n flatToc.push({\n depth: item.depth,\n value: item.value\n })\n\n flatten(item.children)\n })\n }\n\n flatten(toc)\n\n // TODO: its temporary\n const tocFinal = flatToc.filter(item => item.depth === 2)\n\n const location = useLocation()\n\n // TODO: better in the future\n const defaultValue = location.hash ? location.hash.replace(\"#\", \"\") : tocFinal[0]?.value\n\n return <Toc defaultValue={defaultValue}>\n {\n tocFinal.map((item, index) => <Toc.Item\n key={index + item.value + item.depth}\n value={item.value}\n >\n {item.value}\n </Toc.Item>)\n }\n </Toc>\n}\n\n// TODO: finish\nfunction FwBreadcrumbs() {\n const breadcrumbs = useBreadcrumbs()\n\n return <Breadcrumbs\n items={breadcrumbs || []}\n />\n}\n\n// TDOO: finish\nfunction FwNavLinks() {\n const navlinks = useNavLinks()\n\n // TODO: in the future - because of custom react frontmatter\n if (typeof navlinks?.prev?.title !== \"string\" || typeof navlinks?.next?.title !== \"string\") {\n return null\n }\n\n if (navlinks?.prev || navlinks?.next) {\n return <NavLinks\n prev={navlinks.prev}\n next={navlinks.next}\n />\n }\n\n return null\n}\n\n// TODO: issues with below svgs inside settigns - REFACTOR THIS\nfunction IconCookbook() {\n return <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M14.447 7.106a1 1 0 0 1 .447 1.341l-4 8a1 1 0 1 1-1.788-.894l4-8a1 1 0 0 1 1.341-.447ZM6.6 7.2a1 1 0 0 1 .2 1.4L4.25 12l2.55 3.4a1 1 0 0 1-1.6 1.2l-3-4a1 1 0 0 1 0-1.2l3-4a1 1 0 0 1 1.4-.2Zm10.8 0a1 1 0 0 1 1.4.2l3 4a1 1 0 0 1 0 1.2l-3 4a1 1 0 0 1-1.6-1.2l2.55-3.4-2.55-3.4a1 1 0 0 1 .2-1.4Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n}\n\nfunction IconCommunity() {\n return <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10.5 8.5a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0ZM12 5a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7ZM3 9.5a1 1 0 1 1 2 0 1 1 0 0 1-2 0Zm1-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6Zm16 2a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm-3 1a3 3 0 1 1 6 0 3 3 0 0 1-6 0ZM8 18c0-.974.438-1.684 1.142-2.185C9.876 15.293 10.911 15 12 15c1.09 0 2.124.293 2.858.815.704.5 1.142 1.21 1.142 2.185a1 1 0 1 0 2 0c0-1.692-.812-2.982-1.983-3.815C14.876 13.373 13.411 13 12 13c-1.41 0-2.876.373-4.017 1.185C6.812 15.018 6 16.308 6 18a1 1 0 1 0 2 0Zm-3.016-3.675a1 1 0 0 1-.809 1.16C2.79 15.732 2 16.486 2 17.5a1 1 0 1 1-2 0c0-2.41 1.978-3.655 3.825-3.985a1 1 0 0 1 1.16.81Zm14.84 1.16a1 1 0 1 1 .351-1.97C22.022 13.845 24 15.09 24 17.5a1 1 0 1 1-2 0c0-1.014-.79-1.768-2.175-2.015Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n}\n\n// TODO: but this svg works on settings\nfunction IconMarketplace() {\n return <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n width=\"1em\"\n height=\"1em\"\n >\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M3.78163 3.28449C3.8768 2.96725 4.16879 2.75 4.5 2.75H19.5C19.8312 2.75 20.1232 2.96725 20.2184 3.28449L21.7184 8.28449C21.7393 8.3544 21.75 8.42701 21.75 8.5C21.75 10.5711 20.0711 12.25 18 12.25C16.7733 12.25 15.6842 11.661 15 10.7504C14.3158 11.661 13.2267 12.25 12 12.25C10.7733 12.25 9.68417 11.661 9 10.7504C8.31583 11.661 7.2267 12.25 6 12.25C3.92893 12.25 2.25 10.5711 2.25 8.5C2.25 8.42701 2.26066 8.3544 2.28163 8.28449L3.78163 3.28449ZM9.75 8.5C9.75 9.74264 10.7574 10.75 12 10.75C13.2426 10.75 14.25 9.74264 14.25 8.5C14.25 8.08579 14.5858 7.75 15 7.75C15.4142 7.75 15.75 8.08579 15.75 8.5C15.75 9.74264 16.7574 10.75 18 10.75C19.2083 10.75 20.1942 9.79754 20.2477 8.60244L18.942 4.25H5.05802L3.75229 8.60244C3.80584 9.79753 4.79169 10.75 6 10.75C7.24264 10.75 8.25 9.74264 8.25 8.5C8.25 8.08579 8.58579 7.75 9 7.75C9.41421 7.75 9.75 8.08579 9.75 8.5Z\"\n />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M4 10.25C4.41421 10.25 4.75 10.5858 4.75 11V19.75H6.5C6.91421 19.75 7.25 20.0858 7.25 20.5C7.25 20.9142 6.91421 21.25 6.5 21.25H4C3.58579 21.25 3.25 20.9142 3.25 20.5V11C3.25 10.5858 3.58579 10.25 4 10.25ZM20 10.25C20.4142 10.25 20.75 10.5858 20.75 11V20.5C20.75 20.9142 20.4142 21.25 20 21.25H10.5C10.0858 21.25 9.75 20.9142 9.75 20.5C9.75 20.0858 10.0858 19.75 10.5 19.75H19.25V11C19.25 10.5858 19.5858 10.25 20 10.25Z\"\n />\n <path\n d=\"M12.003 19C11.31 18.9996 10.6384 18.7598 10.102 18.3213C9.56564 17.8829 9.19745 17.2726 9.05983 16.594C8.92222 15.9154 9.02364 15.2101 9.34693 14.5976C9.67022 13.9852 10.1955 13.5032 10.8337 13.2333C11.5673 12.9262 12.393 12.9221 13.1296 13.2222C13.8661 13.5222 14.4536 14.1018 14.7631 14.8338C15.0727 15.5659 15.0791 16.3907 14.7808 17.1274C14.4827 17.8642 13.9042 18.4527 13.1724 18.7641C12.8025 18.9205 12.4047 19.0007 12.003 19ZM11.1458 14.7215C11.1124 14.7215 11.0803 14.7348 11.0567 14.7584C11.0331 14.782 11.0198 14.8141 11.0198 14.8475V17.1923C11.0198 17.2258 11.0331 17.2578 11.0567 17.2814C11.0803 17.305 11.1124 17.3183 11.1458 17.3183C11.1671 17.3183 11.188 17.3128 11.2065 17.3024L13.3399 16.13C13.3597 16.1192 13.3761 16.1032 13.3876 16.0838C13.3991 16.0644 13.4052 16.0423 13.4052 16.0197C13.4052 15.9972 13.3991 15.9751 13.3876 15.9557C13.3761 15.9362 13.3597 15.9203 13.3399 15.9094L11.2063 14.7373C11.1879 14.727 11.1671 14.7215 11.1458 14.7215Z\"\n />\n </svg>\n}\n\nfunction IconSDK() {\n return <svg\n viewBox=\"0 0 15 15\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n >\n <path\n d=\"M7.28856 0.796908C7.42258 0.734364 7.57742 0.734364 7.71144 0.796908L13.7114 3.59691C13.8875 3.67906 14 3.85574 14 4.05V10.95C14 11.1443 13.8875 11.3209 13.7114 11.4031L7.71144 14.2031C7.57742 14.2656 7.42258 14.2656 7.28856 14.2031L1.28856 11.4031C1.11252 11.3209 1 11.1443 1 10.95V4.05C1 3.85574 1.11252 3.67906 1.28856 3.59691L7.28856 0.796908ZM2 4.80578L7 6.93078V12.9649L2 10.6316V4.80578ZM8 12.9649L13 10.6316V4.80578L8 6.93078V12.9649ZM7.5 6.05672L12.2719 4.02866L7.5 1.80176L2.72809 4.02866L7.5 6.05672Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n}\n\nexport {\n FwNav,\n FwSubNav,\n\n FwBreadcrumbs,\n FwToc,\n FwNavLinks,\n\n FwSidebarGroups,\n}\n","import e,{useRef as t}from\"react\";var n=\"hutvd2b\",a=\"hg9oorb\",r=\"h6jev6x\",l=\"i1uvewli\";function c(t){var c=t.children,o=t.size,i=void 0===o?\"sm\":o,s=t.kind,d=void 0===s?\"warning\":s;return e.createElement(\"div\",{className:\"\\n \".concat(n,\"\\n \\n \").concat(\"sm\"===i&&r,\"\\n \\n \").concat(\"warning\"===d&&a,\"\\n \")},e.createElement(\"span\",{className:l},c))}var o=\"h1wifk81\";function i(t){var n=t.children;return e.createElement(\"blockquote\",{className:o},n)}var s=\"hhnegou\",d=\"_1ja9964\",m=\"h1lyih3m\",h=\"h1gzjc3x\",u=\"boe1v8p\";function v(){return e.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"1em\",height:\"1em\",fill:\"currentColor\",viewBox:\"0 0 24 24\"},e.createElement(\"path\",{d:\"M13 12a1 1 0 1 0-2 0v4a1 1 0 1 0 2 0v-4Zm-1-2.5A1.25 1.25 0 1 0 12 7a1.25 1.25 0 0 0 0 2.5Z\"}),e.createElement(\"path\",{fillRule:\"evenodd\",d:\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Z\",clipRule:\"evenodd\"}))}function w(t){var n=t.children;return e.createElement(\"div\",{className:\"\".concat(s,\" \").concat(d)},e.createElement(\"div\",{className:m},e.createElement(v,null)),e.createElement(\"div\",{className:h},e.createElement(\"div\",{className:u},n)))}var k=\"h1w59zdn\";function E(t){var n=t.children;return e.createElement(\"code\",{className:k},n)}var p=\"hwmojve\",g=\"h1an07j0\",L=\"sbneplt\",f=\"s1d31n8s\",x=\"s2p0kpw\",M=\"snk81qf\",b=\"lyq3zec\",C=\"iq0a0s6\",N=\"c1ligx2c\",j=\"c89yndk\";function Z(t){var n=\"\",a=t.children,r=t.label;\"secondary\"===t.kind&&(n=t.title);var l=t.kind||\"primary\";return e.createElement(\"details\",{className:\"\\n \".concat(p,\" \\n \").concat(\"secondary\"===l&&g,\"\\n \")},e.createElement(\"summary\",{className:\"\\n \".concat(L,\" \\n \").concat(\"secondary\"===l&&f,\"\\n \")},\"primary\"===l&&e.createElement(e.Fragment,null,e.createElement(y,null),e.createElement(W,null,r)),\"secondary\"===l&&e.createElement(e.Fragment,null,e.createElement(\"div\",null,e.createElement(\"div\",{className:x},e.createElement(B,null),e.createElement(\"div\",{className:M},n)),e.createElement(W,null,r)),e.createElement(y,null))),e.createElement(\"div\",{className:\"\\n \".concat(N,\"\\n \").concat(\"secondary\"===l&&j,\"\\n \")},a))}function y(){return e.createElement(\"div\",{className:C},e.createElement(\"svg\",{\"data-icon\":\"true\",xmlns:\"http://www.w3.org/2000/svg\",width:\"1em\",height:\"1em\",fill:\"currentColor\",viewBox:\"0 0 24 24\"},e.createElement(\"path\",{fillRule:\"evenodd\",d:\"M8.293 4.293a1 1 0 0 1 1.414 0l7 7a1 1 0 0 1 0 1.414l-7 7a1 1 0 0 1-1.414-1.414L14.586 12 8.293 5.707a1 1 0 0 1 0-1.414Z\",clipRule:\"evenodd\"})))}function B(){return e.createElement(\"svg\",{width:\"1em\",height:\"1em\",viewBox:\"0 0 24 24\",stroke:\"none\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},e.createElement(\"g\",{clipPath:\"url(#clip0_1689_2180)\"},e.createElement(\"path\",{d:\"M4.3 4.3L7.1 7.1M10.6 5.7V1.5M14.8 7.8L17.6 5M5.7 11.3H1.5M7.1 14.8L4.3 17.6M15.5 22.5L9.9 9.9L22.5 14.8L16.9 16.2L15.5 22.5Z\",stroke:\"black\",strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\"})),e.createElement(\"defs\",null,e.createElement(\"clipPath\",{id:\"clip0_1689_2180\"},e.createElement(\"rect\",{width:24,height:24,fill:\"white\"}))))}function W(t){var n=t.children;return e.createElement(\"div\",{className:b},n)}var R=\"h1tn40xd\",z=\"hnf4kng\",_=\"h1vdtsi8\",H=\"hz5xehg\",q=\"hptgzam\",V=\"h11bbv2f\",F=\"hcoksa6\",P=\"l17d6dy1\";function A(n){var a=n.children,r=n.size,l=void 0===r?1:r,c=n.as,o=n.id,i=n.onClick,s=c||\"h\".concat(l);return t(null),e.createElement(s,{className:\"\\n \".concat(R,\"\\n \").concat(1===l&&z,\"\\n \").concat(2===l&&_,\"\\n \").concat(3===l&&H,\"\\n \").concat(4===l&&q,\"\\n \").concat(5===l&&V,\"\\n \").concat(6===l&&F,\"\\n xyd_comp-comp-heading\\n \"),onClick:i},a,o&&e.createElement(D,null))}function D(){return e.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:15,height:15,fill:\"currentColor\",viewBox:\"0 0 24 24\",className:P,role:\"presentation\"},e.createElement(\"path\",{fillRule:\"evenodd\",d:\"M18.293 5.707a4.657 4.657 0 0 0-6.586 0l-1 1a1 1 0 1 1-1.414-1.414l1-1a6.657 6.657 0 1 1 9.414 9.414l-1 1a1 1 0 0 1-1.414-1.414l1-1a4.657 4.657 0 0 0 0-6.586Zm-2.586 2.586a1 1 0 0 1 0 1.414l-6 6a1 1 0 0 1-1.414-1.414l6-6a1 1 0 0 1 1.414 0Zm-9 1a1 1 0 0 1 0 1.414l-1 1a4.657 4.657 0 0 0 6.586 6.586l1-1a1 1 0 0 1 1.414 1.414l-1 1a6.657 6.657 0 1 1-9.414-9.414l1-1a1 1 0 0 1 1.414 0Z\",clipRule:\"evenodd\"}))}var I=\"h1ej4n95\";function S(t){var n=t.children;return e.createElement(\"hr\",{className:I},n)}function G(){return e.createElement(\"svg\",{width:24,height:24,viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},e.createElement(\"path\",{d:\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\",stroke:\"black\",strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\"}),e.createElement(\"path\",{d:\"M10 8L16 12L10 16V8Z\",stroke:\"black\",strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\"}))}function J(){return e.createElement(\"svg\",{width:24,height:24,viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},e.createElement(\"path\",{d:\"M21 7L13.2273 14.9167L9.13636 10.75L3 17\",stroke:\"black\",strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\"}),e.createElement(\"path\",{d:\"M16 7H21V12\",stroke:\"black\",strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\"}))}function K(){return e.createElement(\"svg\",{width:24,height:24,viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},e.createElement(\"path\",{d:\"M12 20L12 10\",stroke:\"black\",strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\"}),e.createElement(\"path\",{d:\"M6 20L6 4\",stroke:\"black\",strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\"}),e.createElement(\"path\",{d:\"M18 20L18 16\",stroke:\"black\",strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\"}))}function O(){return e.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",width:24,height:24},e.createElement(\"path\",{fillRule:\"evenodd\",d:\"M14.447 7.106a1 1 0 0 1 .447 1.341l-4 8a1 1 0 1 1-1.788-.894l4-8a1 1 0 0 1 1.341-.447ZM6.6 7.2a1 1 0 0 1 .2 1.4L4.25 12l2.55 3.4a1 1 0 0 1-1.6 1.2l-3-4a1 1 0 0 1 0-1.2l3-4a1 1 0 0 1 1.4-.2Zm10.8 0a1 1 0 0 1 1.4.2l3 4a1 1 0 0 1 0 1.2l-3 4a1 1 0 0 1-1.6-1.2l2.55-3.4-2.55-3.4a1 1 0 0 1 .2-1.4Z\",clipRule:\"evenodd\"}))}function Q(){return e.createElement(\"svg\",{width:24,height:24,viewBox:\"0 0 16 16\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},e.createElement(\"path\",{d:\"M3.66179 8.03142L6.54954 1.79004C6.63136 1.6132 6.80847 1.5 7.00333 1.5H10.7236C11.0872 1.5 11.3292 1.87581 11.1788 2.20685L9.18871 6.58625C9.03827 6.9173 9.28029 7.2931 9.64391 7.2931L11.589 7.2931C12.0146 7.2931 12.2456 7.79098 11.9708 8.11596L6.77738 14.2573C6.4593 14.6334 5.84636 14.3715 5.89839 13.8816L6.3857 9.2942C6.41708 8.99882 6.18554 8.74138 5.8885 8.74138H4.11558C3.75048 8.74138 3.50848 8.36278 3.66179 8.03142Z\",stroke:\"black\",strokeWidth:1.2,strokeLinejoin:\"round\"}))}export{i as B,E as C,Z as D,A as H,G as I,S as a,w as b,c,J as d,K as e,O as f,Q as g};\n","function t(t,n){var e={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&n.indexOf(r)<0&&(e[r]=t[r]);if(null!=t&&\"function\"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(t);o<r.length;o++)n.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(e[r[o]]=t[r[o]])}return e}function n(t,n,e,r){return new(e||(e=Promise))((function(o,c){function p(t){try{f(r.next(t))}catch(t){c(t)}}function a(t){try{f(r.throw(t))}catch(t){c(t)}}function f(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(p,a)}f((r=r.apply(t,n||[])).next())}))}\"function\"==typeof SuppressedError&&SuppressedError;export{t as _,n as a};\n","export{c as Badge,B as Blockquote,b as Callout,C as Code,D as Details,H as Heading,a as Hr,f as IconCode,g as IconCustomEvent,e as IconFunnels,d as IconMetrics,I as IconSessionReplay}from\"./index-C0sBj-Rt.js\";import{_ as t}from\"./tslib.es6-nZyJ5rcw.js\";import r,{Fragment as n}from\"react\";import{ArrowRightIcon as l,ArrowLeftIcon as s}from\"@radix-ui/react-icons\";export{G as GuideCard,S as Steps,T as Table,a as Tabs,U as UnderlineNav}from\"./UnderlineNav-rNUvd4IV.js\";import\"./_rollupPluginBabelHelpers-DOmTa7nq.js\";import\"@radix-ui/react-tabs\";import\"lucide-react\";var i=\"hwgsk4h\",m=\"i1b95bxl\",o=\"i1a3fa93\",u=\"i1dl7ywj\";function h(e){var a=e.children,n=t(e,[\"children\"]);return r.createElement(\"a\",Object.assign({},n),a)}function p(e){return r.createElement(\"div\",{className:i},e.items.map((function(t,a){var s=a===e.items.length-1;return r.createElement(n,{key:t.href+t.title},a>0&&r.createElement(l,{className:m}),r.createElement(\"div\",{className:\"\\n \".concat(o,\"\\n \").concat(s&&u,\"\\n \"),title:t.title},t.href&&!s?r.createElement(h,{href:t.href},t.title):t.title))})))}var v=\"h1xhrk1\",E=\"l1elq7ab\",x=\"i1mmatje\";function N(e){var a=e.children,n=t(e,[\"children\"]);return r.createElement(\"a\",Object.assign({},n),a)}function j(e){return r.createElement(\"div\",{className:v},e.prev?r.createElement(N,{href:e.prev.href,title:e.prev.title,className:E},r.createElement(s,{className:x}),e.prev.title):r.createElement(\"div\",null),e.next&&r.createElement(N,{href:e.next.href,title:e.next.title,className:E},e.next.title,r.createElement(l,{className:x})))}var k=\"h1vb39qj\";function q(e){var t=e.children;return r.createElement(\"pre\",{className:k},t)}export{p as Breadcrumbs,j as NavLinks,q as Pre};\n","import e,{useState as t,useRef as a,useEffect as n}from\"react\";import{_ as r}from\"./_rollupPluginBabelHelpers-DOmTa7nq.js\";import*as c from\"@radix-ui/react-tabs\";import{ChevronLeft as l,ChevronRight as i}from\"lucide-react\";var s=\"hh34a3o\",m=\"hilz89t\",o=\"h1rnhmpa\",u=\"lajci2p\",d=\"iezrce7\",v=\"i1vhi0b8\",h=\"i1m2lps9\",f=\"r1new93p\",E=\"t1u3d3ty\",N=\"t4udf3g\",p=\"t1icpluq\",b=\"badgd67\",g=\"bcjznmh\",w=\"p13ekkiz\",C=\"h15733ml\";function k(t){var a=t.children,n=t.href,r=t.icon,c=t.title,l=t.kind,i=t.size;return e.createElement(\"div\",{className:\"\\n \".concat(s,\"\\n \").concat(\"secondary\"===l&&m,\"\\n \").concat(\"secondary\"===l&&\"md\"==i&&o,\"\\n \")},e.createElement(\"a\",{className:u,href:n},e.createElement(\"div\",{className:\"\\n \".concat(d,\"\\n \").concat(\"secondary\"===l&&v,\"\\n \")},r&&e.createElement(\"div\",{className:h},r),e.createElement(\"div\",{className:f},e.createElement(\"div\",{className:E},e.createElement(\"div\",{className:\"\\n \".concat(E,\" \\n \").concat(N,\"\\n \").concat(\"md\"==i&&p,\"\\n \")},c),e.createElement(z,null)),e.createElement(\"div\",{className:\"\\n \".concat(b,\"\\n \").concat(\"md\"==i&&g,\"\\n \")},a)))))}function z(){return e.createElement(\"div\",{\"data-pointer\":\"true\",className:w},e.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:24,height:24,fill:\"currentColor\",viewBox:\"0 0 24 24\"},e.createElement(\"path\",{fillRule:\"evenodd\",d:\"M9.293 7.293a1 1 0 0 1 1.414 0l4 4a1 1 0 0 1 0 1.414l-4 4a1 1 0 0 1-1.414-1.414L12.586 12 9.293 8.707a1 1 0 0 1 0-1.414Z\",clipRule:\"evenodd\"})))}k.List=function(t){var a=t.children;return e.createElement(\"div\",{className:C},a)};var x=\"h3kfd8c\",L=\"l1et872q\";function y(t){var a=t.children;return e.createElement(\"ol\",{className:x},a)}y.Item=function(t){var a=t.children;return e.createElement(\"li\",{className:L},a)};var T=\"h14vj3ri\",j=\"t1l6tz9b\",R=\"thzxr0l\",B=\"t1g1altt\";function I(t){var a=t.children;return e.createElement(\"table\",{className:T},a)}I.Th=function(t){var a=t.children;return e.createElement(\"th\",{className:j},a)},I.Tr=function(t){var a=t.children;return e.createElement(\"tr\",{className:R},a)},I.Td=function(t){var a=t.children;return e.createElement(\"td\",{className:B},a)};var q=\"hh8vcxa\",S=\"b2p5907\",V=\"coeb6fw\",W=\"h196u2m6\",_=\"i1hlflsk\",G=\"hownbu8\",H=\"cuwerl2\",M=\"hlivi01\";function P(s){var m=s.children,o=s.items,u=s.tabIndex,d=t(!1),v=r(d,2),h=v[0],f=v[1],E=t(!1),N=r(E,2),p=N[0],b=N[1],g=a(null),w=t(o[u||0]||\"\"),C=r(w,2),k=C[0],z=C[1],x=function(){if(g.current){var e=g.current,t=e.scrollLeft,a=e.scrollWidth,n=e.clientWidth;f(t>0),b(t<a-n)}};n((function(){return x(),window.addEventListener(\"resize\",x),function(){return window.removeEventListener(\"resize\",x)}}),[]);var L=function(e){if(g.current){var t=\"left\"===e?-200:200;g.current.scrollBy({left:t,behavior:\"smooth\"})}};return e.createElement(c.Root,{asChild:!0,value:k,onValueChange:z},e.createElement(\"div\",{className:q},e.createElement(\"div\",{className:S},h&&e.createElement(\"button\",{onClick:function(){return L(\"left\")},className:W},e.createElement(l,{className:_})),e.createElement(\"div\",{ref:g,onScroll:x,className:G},e.createElement(\"div\",{className:H},e.createElement(c.List,null,o.map((function(t,a){return e.createElement(U,{key:a,value:t},t)}))))),p&&e.createElement(\"button\",{onClick:function(){return L(\"right\")},className:W},e.createElement(i,{className:_}))),e.createElement(\"div\",{className:V},m)))}function U(t){var a=t.children,n=t.value;return e.createElement(c.Trigger,{asChild:!0,value:n},e.createElement(\"button\",{className:\"\".concat(M)},a))}P.Content=function(t){var a=t.children,n=t.value;return e.createElement(c.Content,{asChild:!0,value:n},a)};var Z=\"h1bta36o\",A=\"uxs4bf1\",D=\"ifn7ecb\",F=\"i441kmn\";function J(t){var a=t.children,n=t.value,r=t.onChange;return e.createElement(c.Root,{asChild:!0,value:n,onValueChange:r},e.createElement(\"nav\",{className:Z},e.createElement(c.List,{asChild:!0},e.createElement(\"ul\",{className:A},a))))}J.Item=function(t){var a=t.children,n=t.value,r=t.href;return e.createElement(c.Trigger,{asChild:!0,value:n},e.createElement(\"li\",{className:D},e.createElement(\"a\",{href:r,className:\"\".concat(F)},a)))};export{k as G,y as S,I as T,J as U,P as a};\n","function t(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e<r;e++)n[e]=t[e];return n}function r(t){if(Array.isArray(t))return t}function e(t,r,e,n,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void e(t)}u.done?r(c):Promise.resolve(c).then(n,o)}function n(t){return function(){var r=this,n=arguments;return new Promise((function(o,i){var a=t.apply(r,n);function u(t){e(a,o,i,u,c,\"next\",t)}function c(t){e(a,o,i,u,c,\"throw\",t)}u(void 0)}))}}function o(t,r){var e=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!e){if(Array.isArray(t)||(e=d(t))||r){e&&(t=e);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var i,a=!0,u=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==e.return||e.return()}finally{if(u)throw i}}}}function i(t,r,e){return(r=function(t){var r=function(t,r){if(\"object\"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,r||\"default\");if(\"object\"!=typeof n)return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===r?String:Number)(t)}(t,\"string\");return\"symbol\"==typeof r?r:r+\"\"}(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function a(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}function u(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}function c(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,n)}return e}function f(t){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?c(Object(e),!0).forEach((function(r){i(t,r,e[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):c(Object(e)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}))}return t}function l(t,r){if(null==t)return{};var e,n,o=function(t,r){if(null==t)return{};var e={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(r.includes(n))continue;e[n]=t[n]}return e}(t,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)e=i[n],r.includes(e)||{}.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}function s(){s=function(){return r};var t,r={},e=Object.prototype,n=e.hasOwnProperty,o=Object.defineProperty||function(t,r,e){t[r]=e.value},i=\"function\"==typeof Symbol?Symbol:{},a=i.iterator||\"@@iterator\",u=i.asyncIterator||\"@@asyncIterator\",c=i.toStringTag||\"@@toStringTag\";function f(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{f({},\"\")}catch(t){f=function(t,r,e){return t[r]=e}}function l(t,r,e,n){var i=r&&r.prototype instanceof b?r:b,a=Object.create(i.prototype),u=new T(n||[]);return o(a,\"_invoke\",{value:P(t,e,u)}),a}function h(t,r,e){try{return{type:\"normal\",arg:t.call(r,e)}}catch(t){return{type:\"throw\",arg:t}}}r.wrap=l;var y=\"suspendedStart\",p=\"suspendedYield\",v=\"executing\",d=\"completed\",m={};function b(){}function g(){}function w(){}var O={};f(O,a,(function(){return this}));var j=Object.getPrototypeOf,E=j&&j(j(k([])));E&&E!==e&&n.call(E,a)&&(O=E);var x=w.prototype=b.prototype=Object.create(O);function L(t){[\"next\",\"throw\",\"return\"].forEach((function(r){f(t,r,(function(t){return this._invoke(r,t)}))}))}function S(t,r){function e(o,i,a,u){var c=h(t[o],t,i);if(\"throw\"!==c.type){var f=c.arg,l=f.value;return l&&\"object\"==typeof l&&n.call(l,\"__await\")?r.resolve(l.__await).then((function(t){e(\"next\",t,a,u)}),(function(t){e(\"throw\",t,a,u)})):r.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return e(\"throw\",t,a,u)}))}u(c.arg)}var i;o(this,\"_invoke\",{value:function(t,n){function o(){return new r((function(r,o){e(t,n,r,o)}))}return i=i?i.then(o,o):o()}})}function P(r,e,n){var o=y;return function(i,a){if(o===v)throw Error(\"Generator is already running\");if(o===d){if(\"throw\"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var c=_(u,n);if(c){if(c===m)continue;return c}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(o===y)throw o=d,n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);o=v;var f=h(r,e,n);if(\"normal\"===f.type){if(o=n.done?d:p,f.arg===m)continue;return{value:f.arg,done:n.done}}\"throw\"===f.type&&(o=d,n.method=\"throw\",n.arg=f.arg)}}}function _(r,e){var n=e.method,o=r.iterator[n];if(o===t)return e.delegate=null,\"throw\"===n&&r.iterator.return&&(e.method=\"return\",e.arg=t,_(r,e),\"throw\"===e.method)||\"return\"!==n&&(e.method=\"throw\",e.arg=new TypeError(\"The iterator does not provide a '\"+n+\"' method\")),m;var i=h(o,r.iterator,e.arg);if(\"throw\"===i.type)return e.method=\"throw\",e.arg=i.arg,e.delegate=null,m;var a=i.arg;return a?a.done?(e[r.resultName]=a.value,e.next=r.nextLoc,\"return\"!==e.method&&(e.method=\"next\",e.arg=t),e.delegate=null,m):a:(e.method=\"throw\",e.arg=new TypeError(\"iterator result is not an object\"),e.delegate=null,m)}function A(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function I(t){var r=t.completion||{};r.type=\"normal\",delete r.arg,t.completion=r}function T(t){this.tryEntries=[{tryLoc:\"root\"}],t.forEach(A,this),this.reset(!0)}function k(r){if(r||\"\"===r){var e=r[a];if(e)return e.call(r);if(\"function\"==typeof r.next)return r;if(!isNaN(r.length)){var o=-1,i=function e(){for(;++o<r.length;)if(n.call(r,o))return e.value=r[o],e.done=!1,e;return e.value=t,e.done=!0,e};return i.next=i}}throw new TypeError(typeof r+\" is not iterable\")}return g.prototype=w,o(x,\"constructor\",{value:w,configurable:!0}),o(w,\"constructor\",{value:g,configurable:!0}),g.displayName=f(w,c,\"GeneratorFunction\"),r.isGeneratorFunction=function(t){var r=\"function\"==typeof t&&t.constructor;return!!r&&(r===g||\"GeneratorFunction\"===(r.displayName||r.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,f(t,c,\"GeneratorFunction\")),t.prototype=Object.create(x),t},r.awrap=function(t){return{__await:t}},L(S.prototype),f(S.prototype,u,(function(){return this})),r.AsyncIterator=S,r.async=function(t,e,n,o,i){void 0===i&&(i=Promise);var a=new S(l(t,e,n,o),i);return r.isGeneratorFunction(e)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},L(x),f(x,c,\"Generator\"),f(x,a,(function(){return this})),f(x,\"toString\",(function(){return\"[object Generator]\"})),r.keys=function(t){var r=Object(t),e=[];for(var n in r)e.push(n);return e.reverse(),function t(){for(;e.length;){var n=e.pop();if(n in r)return t.value=n,t.done=!1,t}return t.done=!0,t}},r.values=k,T.prototype={constructor:T,reset:function(r){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=t,this.tryEntries.forEach(I),!r)for(var e in this)\"t\"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if(\"throw\"===t.type)throw t.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var e=this;function o(n,o){return u.type=\"throw\",u.arg=r,e.next=n,o&&(e.method=\"next\",e.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],u=a.completion;if(\"root\"===a.tryLoc)return o(\"end\");if(a.tryLoc<=this.prev){var c=n.call(a,\"catchLoc\"),f=n.call(a,\"finallyLoc\");if(c&&f){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!f)throw Error(\"try statement without catch or finally\");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,r){for(var e=this.tryEntries.length-1;e>=0;--e){var o=this.tryEntries[e];if(o.tryLoc<=this.prev&&n.call(o,\"finallyLoc\")&&this.prev<o.finallyLoc){var i=o;break}}i&&(\"break\"===t||\"continue\"===t)&&i.tryLoc<=r&&r<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=r,i?(this.method=\"next\",this.next=i.finallyLoc,m):this.complete(a)},complete:function(t,r){if(\"throw\"===t.type)throw t.arg;return\"break\"===t.type||\"continue\"===t.type?this.next=t.arg:\"return\"===t.type?(this.rval=this.arg=t.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===t.type&&r&&(this.next=r),m},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),I(e),m}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if(\"throw\"===n.type){var o=n.arg;I(e)}return o}}throw Error(\"illegal catch attempt\")},delegateYield:function(r,e,n){return this.delegate={iterator:k(r),resultName:e,nextLoc:n},\"next\"===this.method&&(this.arg=t),m}},r}function h(t,e){return r(t)||function(t,r){var e=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=e){var n,o,i,a,u=[],c=!0,f=!1;try{if(i=(e=e.call(t)).next,0===r){if(Object(e)!==e)return;c=!1}else for(;!(c=(n=i.call(e)).done)&&(u.push(n.value),u.length!==r);c=!0);}catch(t){f=!0,o=t}finally{try{if(!c&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw o}}return u}}(t,e)||d(t,e)||u()}function y(t){return r(t)||a(t)||d(t)||u()}function p(r){return function(r){if(Array.isArray(r))return t(r)}(r)||a(r)||d(r)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function v(t){return v=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},v(t)}function d(r,e){if(r){if(\"string\"==typeof r)return t(r,e);var n={}.toString.call(r).slice(8,-1);return\"Object\"===n&&r.constructor&&(n=r.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(r):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(r,e):void 0}}export{h as _,n as a,s as b,p as c,f as d,o as e,l as f,v as g,y as h};\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useId } from '@radix-ui/react-id';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs\n * -----------------------------------------------------------------------------------------------*/\n\nconst TABS_NAME = 'Tabs';\n\ntype ScopedProps<P> = P & { __scopeTabs?: Scope };\nconst [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\n\ntype TabsContextValue = {\n baseId: string;\n value?: string;\n onValueChange: (value: string) => void;\n orientation?: TabsProps['orientation'];\n dir?: TabsProps['dir'];\n activationMode?: TabsProps['activationMode'];\n};\n\nconst [TabsProvider, useTabsContext] = createTabsContext<TabsContextValue>(TABS_NAME);\n\ntype TabsElement = React.ElementRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = React.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface TabsProps extends PrimitiveDivProps {\n /** The value for the selected tab, if controlled */\n value?: string;\n /** The value of the tab to select by default, if uncontrolled */\n defaultValue?: string;\n /** A function called when a new tab is selected */\n onValueChange?: (value: string) => void;\n /**\n * The orientation the tabs are layed out.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n * @defaultValue horizontal\n */\n orientation?: RovingFocusGroupProps['orientation'];\n /**\n * The direction of navigation between toolbar items.\n */\n dir?: RovingFocusGroupProps['dir'];\n /**\n * Whether a tab is activated automatically or manually.\n * @defaultValue automatic\n * */\n activationMode?: 'automatic' | 'manual';\n}\n\nconst Tabs = React.forwardRef<TabsElement, TabsProps>(\n (props: ScopedProps<TabsProps>, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = 'horizontal',\n dir,\n activationMode = 'automatic',\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue,\n });\n\n return (\n <TabsProvider\n scope={__scopeTabs}\n baseId={useId()}\n value={value}\n onValueChange={setValue}\n orientation={orientation}\n dir={direction}\n activationMode={activationMode}\n >\n <Primitive.div\n dir={direction}\n data-orientation={orientation}\n {...tabsProps}\n ref={forwardedRef}\n />\n </TabsProvider>\n );\n }\n);\n\nTabs.displayName = TABS_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst TAB_LIST_NAME = 'TabsList';\n\ntype TabsListElement = React.ElementRef<typeof Primitive.div>;\ninterface TabsListProps extends PrimitiveDivProps {\n loop?: RovingFocusGroupProps['loop'];\n}\n\nconst TabsList = React.forwardRef<TabsListElement, TabsListProps>(\n (props: ScopedProps<TabsListProps>, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return (\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={context.orientation}\n dir={context.dir}\n loop={loop}\n >\n <Primitive.div\n role=\"tablist\"\n aria-orientation={context.orientation}\n {...listProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n );\n }\n);\n\nTabsList.displayName = TAB_LIST_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'TabsTrigger';\n\ntype TabsTriggerElement = React.ElementRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface TabsTriggerProps extends PrimitiveButtonProps {\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef<TabsTriggerElement, TabsTriggerProps>(\n (props: ScopedProps<TabsTriggerProps>, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled}\n active={isSelected}\n >\n <Primitive.button\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-controls={contentId}\n data-state={isSelected ? 'active' : 'inactive'}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n id={triggerId}\n {...triggerProps}\n ref={forwardedRef}\n onMouseDown={composeEventHandlers(props.onMouseDown, (event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n // prevent focus to avoid accidental activation\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if ([' ', 'Enter'].includes(event.key)) context.onValueChange(value);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n // handle \"automatic\" activation if necessary\n // ie. activate tab following focus\n const isAutomaticActivation = context.activationMode !== 'manual';\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nTabsTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'TabsContent';\n\ntype TabsContentElement = React.ElementRef<typeof Primitive.div>;\ninterface TabsContentProps extends PrimitiveDivProps {\n value: string;\n\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst TabsContent = React.forwardRef<TabsContentElement, TabsContentProps>(\n (props: ScopedProps<TabsContentProps>, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n return (\n <Presence present={forceMount || isSelected}>\n {({ present }) => (\n <Primitive.div\n data-state={isSelected ? 'active' : 'inactive'}\n data-orientation={context.orientation}\n role=\"tabpanel\"\n aria-labelledby={triggerId}\n hidden={!present}\n id={contentId}\n tabIndex={0}\n {...contentProps}\n ref={forwardedRef}\n style={{\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? '0s' : undefined,\n }}\n >\n {present && children}\n </Primitive.div>\n )}\n </Presence>\n );\n }\n);\n\nTabsContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction makeTriggerId(baseId: string, value: string) {\n return `${baseId}-trigger-${value}`;\n}\n\nfunction makeContentId(baseId: string, value: string) {\n return `${baseId}-content-${value}`;\n}\n\nconst Root = Tabs;\nconst List = TabsList;\nconst Trigger = TabsTrigger;\nconst Content = TabsContent;\n\nexport {\n createTabsScope,\n //\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n //\n Root,\n List,\n Trigger,\n Content,\n};\nexport type { TabsProps, TabsListProps, TabsTriggerProps, TabsContentProps };\n","function composeEventHandlers<E>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (checkForDefaultPrevented === false || !(event as unknown as Event).defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\nexport { composeEventHandlers };\n","import * as React from 'react';\n\nfunction createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n) {\n const Context = React.createContext<ContextValueType | undefined>(defaultContext);\n\n const Provider: React.FC<ContextValueType & { children: React.ReactNode }> = (props) => {\n const { children, ...context } = props;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n Provider.displayName = rootComponentName + 'Provider';\n\n function useContext(consumerName: string) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n return [Provider, useContext] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/\n\ntype Scope<C = any> = { [scopeName: string]: React.Context<C>[] } | undefined;\ntype ScopeHook = (scope: Scope) => { [__scopeProp: string]: Scope };\ninterface CreateScope {\n scopeName: string;\n (): ScopeHook;\n}\n\nfunction createContextScope(scopeName: string, createContextScopeDeps: CreateScope[] = []) {\n let defaultContexts: any[] = [];\n\n /* -----------------------------------------------------------------------------------------------\n * createContext\n * ---------------------------------------------------------------------------------------------*/\n\n function createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n ) {\n const BaseContext = React.createContext<ContextValueType | undefined>(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n\n const Provider: React.FC<\n ContextValueType & { scope: Scope<ContextValueType>; children: React.ReactNode }\n > = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n Provider.displayName = rootComponentName + 'Provider';\n\n function useContext(consumerName: string, scope: Scope<ContextValueType | undefined>) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n return [Provider, useContext] as const;\n }\n\n /* -----------------------------------------------------------------------------------------------\n * createScope\n * ---------------------------------------------------------------------------------------------*/\n\n const createScope: CreateScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope: Scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n\n createScope.scopeName = scopeName;\n return [createContext, composeContextScopes(createScope, ...createContextScopeDeps)] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/\n\nfunction composeContextScopes(...scopes: CreateScope[]) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n\n const createScope: CreateScope = () => {\n const scopeHooks = scopes.map((createScope) => ({\n useScope: createScope(),\n scopeName: createScope.scopeName,\n }));\n\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes, { useScope, scopeName }) => {\n // We are calling a hook inside a callback which React warns against to avoid inconsistent\n // renders, however, scoping doesn't have render side effects so we ignore the rule.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes, ...currentScope };\n }, {});\n\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nexport { createContext, createContextScope };\nexport type { CreateScope, Scope };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createCollection } from '@radix-ui/react-collection';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useId } from '@radix-ui/react-id';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\n\nimport type { Scope } from '@radix-ui/react-context';\n\nconst ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus';\nconst EVENT_OPTIONS = { bubbles: false, cancelable: true };\n\n/* -------------------------------------------------------------------------------------------------\n * RovingFocusGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst GROUP_NAME = 'RovingFocusGroup';\n\ntype ItemData = { id: string; focusable: boolean; active: boolean };\nconst [Collection, useCollection, createCollectionScope] = createCollection<\n HTMLSpanElement,\n ItemData\n>(GROUP_NAME);\n\ntype ScopedProps<P> = P & { __scopeRovingFocusGroup?: Scope };\nconst [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\n\ntype Orientation = React.AriaAttributes['aria-orientation'];\ntype Direction = 'ltr' | 'rtl';\n\ninterface RovingFocusGroupOptions {\n /**\n * The orientation of the group.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n */\n orientation?: Orientation;\n /**\n * The direction of navigation between items.\n */\n dir?: Direction;\n /**\n * Whether keyboard navigation should loop around\n * @defaultValue false\n */\n loop?: boolean;\n}\n\ntype RovingContextValue = RovingFocusGroupOptions & {\n currentTabStopId: string | null;\n onItemFocus(tabStopId: string): void;\n onItemShiftTab(): void;\n onFocusableItemAdd(): void;\n onFocusableItemRemove(): void;\n};\n\nconst [RovingFocusProvider, useRovingFocusContext] =\n createRovingFocusGroupContext<RovingContextValue>(GROUP_NAME);\n\ntype RovingFocusGroupElement = RovingFocusGroupImplElement;\ninterface RovingFocusGroupProps extends RovingFocusGroupImplProps {}\n\nconst RovingFocusGroup = React.forwardRef<RovingFocusGroupElement, RovingFocusGroupProps>(\n (props: ScopedProps<RovingFocusGroupProps>, forwardedRef) => {\n return (\n <Collection.Provider scope={props.__scopeRovingFocusGroup}>\n <Collection.Slot scope={props.__scopeRovingFocusGroup}>\n <RovingFocusGroupImpl {...props} ref={forwardedRef} />\n </Collection.Slot>\n </Collection.Provider>\n );\n }\n);\n\nRovingFocusGroup.displayName = GROUP_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype RovingFocusGroupImplElement = React.ElementRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface RovingFocusGroupImplProps\n extends Omit<PrimitiveDivProps, 'dir'>,\n RovingFocusGroupOptions {\n currentTabStopId?: string | null;\n defaultCurrentTabStopId?: string;\n onCurrentTabStopIdChange?: (tabStopId: string | null) => void;\n onEntryFocus?: (event: Event) => void;\n preventScrollOnEntryFocus?: boolean;\n}\n\nconst RovingFocusGroupImpl = React.forwardRef<\n RovingFocusGroupImplElement,\n RovingFocusGroupImplProps\n>((props: ScopedProps<RovingFocusGroupImplProps>, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef<RovingFocusGroupImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId = null, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId,\n onChange: onCurrentTabStopIdChange,\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n\n return (\n <RovingFocusProvider\n scope={__scopeRovingFocusGroup}\n orientation={orientation}\n dir={direction}\n loop={loop}\n currentTabStopId={currentTabStopId}\n onItemFocus={React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n )}\n onItemShiftTab={React.useCallback(() => setIsTabbingBackOut(true), [])}\n onFocusableItemAdd={React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n )}\n onFocusableItemRemove={React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n )}\n >\n <Primitive.div\n tabIndex={isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0}\n data-orientation={orientation}\n {...groupProps}\n ref={composedRefs}\n style={{ outline: 'none', ...props.style }}\n onMouseDown={composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n })}\n onFocus={composeEventHandlers(props.onFocus, (event) => {\n // We normally wouldn't need this check, because we already check\n // that the focus is on the current target and not bubbling to it.\n // We do this because Safari doesn't focus buttons when clicked, and\n // instead, the wrapper will get focused and not through a bubbling event.\n const isKeyboardFocus = !isClickFocusRef.current;\n\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n ) as typeof items;\n const candidateNodes = candidateItems.map((item) => item.ref.current!);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n\n isClickFocusRef.current = false;\n })}\n onBlur={composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))}\n />\n </RovingFocusProvider>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * RovingFocusGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'RovingFocusGroupItem';\n\ntype RovingFocusItemElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface RovingFocusItemProps extends PrimitiveSpanProps {\n tabStopId?: string;\n focusable?: boolean;\n active?: boolean;\n}\n\nconst RovingFocusGroupItem = React.forwardRef<RovingFocusItemElement, RovingFocusItemProps>(\n (props: ScopedProps<RovingFocusItemProps>, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n\n const { onFocusableItemAdd, onFocusableItemRemove } = context;\n\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n\n return (\n <Collection.ItemSlot\n scope={__scopeRovingFocusGroup}\n id={id}\n focusable={focusable}\n active={active}\n >\n <Primitive.span\n tabIndex={isCurrentTabStop ? 0 : -1}\n data-orientation={context.orientation}\n {...itemProps}\n ref={forwardedRef}\n onMouseDown={composeEventHandlers(props.onMouseDown, (event) => {\n // We prevent focusing non-focusable items on `mousedown`.\n // Even though the item has tabIndex={-1}, that only means take it out of the tab order.\n if (!focusable) event.preventDefault();\n // Safari doesn't focus a button when clicked so we run our logic on mousedown also\n else context.onItemFocus(id);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => context.onItemFocus(id))}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'Tab' && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n\n if (event.target !== event.currentTarget) return;\n\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n\n if (focusIntent !== undefined) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current!);\n\n if (focusIntent === 'last') candidateNodes.reverse();\n else if (focusIntent === 'prev' || focusIntent === 'next') {\n if (focusIntent === 'prev') candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop\n ? wrapArray(candidateNodes, currentIndex + 1)\n : candidateNodes.slice(currentIndex + 1);\n }\n\n /**\n * Imperative focus during keydown is risky so we prevent React's batching updates\n * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332\n */\n setTimeout(() => focusFirst(candidateNodes));\n }\n })}\n />\n </Collection.ItemSlot>\n );\n }\n);\n\nRovingFocusGroupItem.displayName = ITEM_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\n// prettier-ignore\nconst MAP_KEY_TO_FOCUS_INTENT: Record<string, FocusIntent> = {\n ArrowLeft: 'prev', ArrowUp: 'prev',\n ArrowRight: 'next', ArrowDown: 'next',\n PageUp: 'first', Home: 'first',\n PageDown: 'last', End: 'last',\n};\n\nfunction getDirectionAwareKey(key: string, dir?: Direction) {\n if (dir !== 'rtl') return key;\n return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key;\n}\n\ntype FocusIntent = 'first' | 'last' | 'prev' | 'next';\n\nfunction getFocusIntent(event: React.KeyboardEvent, orientation?: Orientation, dir?: Direction) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === 'vertical' && ['ArrowLeft', 'ArrowRight'].includes(key)) return undefined;\n if (orientation === 'horizontal' && ['ArrowUp', 'ArrowDown'].includes(key)) return undefined;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\n\nfunction focusFirst(candidates: HTMLElement[], preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n // if focus is already where we want to go, we don't want to keep going through the candidates\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nfunction wrapArray<T>(array: T[], startIndex: number) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\n\nconst Root = RovingFocusGroup;\nconst Item = RovingFocusGroupItem;\n\nexport {\n createRovingFocusGroupScope,\n //\n RovingFocusGroup,\n RovingFocusGroupItem,\n //\n Root,\n Item,\n};\nexport type { RovingFocusGroupProps, RovingFocusItemProps };\n","import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Slot } from '@radix-ui/react-slot';\n\ntype SlotProps = React.ComponentPropsWithoutRef<typeof Slot>;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\n// We have resorted to returning slots directly rather than exposing primitives that can then\n// be slotted like `<CollectionItem as={Slot}>…</CollectionItem>`.\n// This is because we encountered issues with generic types that cannot be statically analysed\n// due to creating them dynamically via createCollection.\n\nfunction createCollection<ItemElement extends HTMLElement, ItemData = {}>(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionRef: React.RefObject<CollectionElement | null>;\n itemMap: Map<\n React.RefObject<ItemElement | null>,\n { ref: React.RefObject<ItemElement | null> } & ItemData\n >;\n };\n\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext<ContextValue>(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: new Map() }\n );\n\n const CollectionProvider: React.FC<{ children?: React.ReactNode; scope: any }> = (props) => {\n const { scope, children } = props;\n const ref = React.useRef<CollectionElement>(null);\n const itemMap = React.useRef<ContextValue['itemMap']>(new Map()).current;\n return (\n <CollectionProviderImpl scope={scope} itemMap={itemMap} collectionRef={ref}>\n {children}\n </CollectionProviderImpl>\n );\n };\n\n CollectionProvider.displayName = PROVIDER_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlot = React.forwardRef<CollectionElement, CollectionProps>(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return <Slot ref={composedRefs}>{children}</Slot>;\n }\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlot = React.forwardRef<ItemElement, CollectionItemSlotProps>(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef<ItemElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...(itemData as unknown as ItemData) });\n return () => void context.itemMap.delete(ref);\n });\n\n return (\n <Slot {...{ [ITEM_DATA_ATTR]: '' }} ref={composedRefs}>\n {children}\n </Slot>\n );\n }\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const context = useCollectionContext(name + 'CollectionConsumer', scope);\n\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current!) - orderedNodes.indexOf(b.ref.current!)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n\n return getItems;\n }\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == 'function') {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == 'function') {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from 'react';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotProps extends React.HTMLAttributes<HTMLElement> {\n children?: React.ReactNode;\n}\n\nconst Slot = React.forwardRef<HTMLElement, SlotProps>((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n\n if (slottable) {\n // the new element to render is the one passed as a child of `Slottable`\n const newElement = slottable.props.children;\n\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n // because the new element will be the one rendered, we are only interested\n // in grabbing its children (`newElement.props.children`)\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement)\n ? (newElement.props as { children: React.ReactNode }).children\n : null;\n } else {\n return child;\n }\n });\n\n return (\n <SlotClone {...slotProps} ref={forwardedRef}>\n {React.isValidElement(newElement)\n ? React.cloneElement(newElement, undefined, newChildren)\n : null}\n </SlotClone>\n );\n }\n\n return (\n <SlotClone {...slotProps} ref={forwardedRef}>\n {children}\n </SlotClone>\n );\n});\n\nSlot.displayName = 'Slot';\n\n/* -------------------------------------------------------------------------------------------------\n * SlotClone\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotCloneProps {\n children: React.ReactNode;\n}\n\nconst SlotClone = React.forwardRef<any, SlotCloneProps>((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n return React.cloneElement(children, {\n ...mergeProps(slotProps, children.props as AnyProps),\n // @ts-ignore\n ref: forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef,\n });\n }\n\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n});\n\nSlotClone.displayName = 'SlotClone';\n\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/\n\nconst Slottable = ({ children }: { children: React.ReactNode }) => {\n return <>{children}</>;\n};\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype AnyProps = Record<string, any>;\n\nfunction isSlottable(\n child: React.ReactNode\n): child is React.ReactElement<React.ComponentProps<typeof Slottable>, typeof Slottable> {\n return React.isValidElement(child) && child.type === Slottable;\n}\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps) {\n // all child props should override\n const overrideProps = { ...childProps };\n\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n // if the handler exists on both, we compose them\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args: unknown[]) => {\n childPropValue(...args);\n slotPropValue(...args);\n };\n }\n // but if it exists only on the slot, we use only this one\n else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n }\n // if it's `style`, we merge them\n else if (propName === 'style') {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === 'className') {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');\n }\n }\n\n return { ...slotProps, ...overrideProps };\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element.props as { ref?: React.Ref<unknown> }).ref;\n }\n\n // Not DEV\n return (element.props as { ref?: React.Ref<unknown> }).ref || (element as any).ref;\n}\n\nconst Root = Slot;\n\nexport {\n Slot,\n Slottable,\n //\n Root,\n};\nexport type { SlotProps };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// We `toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)['useId'.toString()] || (() => undefined);\nlet count = 0;\n\nfunction useId(deterministicId?: string): string {\n const [id, setId] = React.useState<string | undefined>(useReactId());\n // React versions older than 18 will have client-side ids only.\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : '');\n}\n\nexport { useId };\n","import * as React from 'react';\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */\nconst useLayoutEffect = Boolean(globalThis?.document) ? React.useLayoutEffect : () => {};\n\nexport { useLayoutEffect };\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Slot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\ntype Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n if (typeof window !== 'undefined') {\n (window as any)[Symbol.for('radix-ui')] = true;\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { PrimitivePropsWithRef };\n","import * as React from 'react';\n\n/**\n * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a\n * prop or avoid re-executing effects when passed as a dependency\n */\nfunction useCallbackRef<T extends (...args: any[]) => any>(callback: T | undefined): T {\n const callbackRef = React.useRef(callback);\n\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n\n // https://github.com/facebook/react/issues/19240\n return React.useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);\n}\n\nexport { useCallbackRef };\n","import * as React from 'react';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\ntype UseControllableStateParams<T> = {\n prop?: T | undefined;\n defaultProp?: T | undefined;\n onChange?: (state: T) => void;\n};\n\ntype SetStateFn<T> = (prevState?: T) => T;\n\nfunction useControllableState<T>({\n prop,\n defaultProp,\n onChange = () => {},\n}: UseControllableStateParams<T>) {\n const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({ defaultProp, onChange });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n const handleChange = useCallbackRef(onChange);\n\n const setValue: React.Dispatch<React.SetStateAction<T | undefined>> = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const setter = nextValue as SetStateFn<T>;\n const value = typeof nextValue === 'function' ? setter(prop) : nextValue;\n if (value !== prop) handleChange(value as T);\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, handleChange]\n );\n\n return [value, setValue] as const;\n}\n\nfunction useUncontrolledState<T>({\n defaultProp,\n onChange,\n}: Omit<UseControllableStateParams<T>, 'prop'>) {\n const uncontrolledState = React.useState<T | undefined>(defaultProp);\n const [value] = uncontrolledState;\n const prevValueRef = React.useRef(value);\n const handleChange = useCallbackRef(onChange);\n\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n handleChange(value as T);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef, handleChange]);\n\n return uncontrolledState;\n}\n\nexport { useControllableState };\n","import * as React from 'react';\n\ntype Direction = 'ltr' | 'rtl';\nconst DirectionContext = React.createContext<Direction | undefined>(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Direction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DirectionProviderProps {\n children?: React.ReactNode;\n dir: Direction;\n}\nconst DirectionProvider: React.FC<DirectionProviderProps> = (props) => {\n const { dir, children } = props;\n return <DirectionContext.Provider value={dir}>{children}</DirectionContext.Provider>;\n};\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction useDirection(localDir?: Direction) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || 'ltr';\n}\n\nconst Provider = DirectionProvider;\n\nexport {\n useDirection,\n //\n Provider,\n //\n DirectionProvider,\n};\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useStateMachine } from './useStateMachine';\n\ninterface PresenceProps {\n children: React.ReactElement | ((props: { present: boolean }) => React.ReactElement);\n present: boolean;\n}\n\nconst Presence: React.FC<PresenceProps> = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n\n const child = (\n typeof children === 'function'\n ? children({ present: presence.isPresent })\n : React.Children.only(children)\n ) as React.ReactElement<{ ref?: React.Ref<HTMLElement> }>;\n\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === 'function';\n return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;\n};\n\nPresence.displayName = 'Presence';\n\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/\n\nfunction usePresence(present: boolean) {\n const [node, setNode] = React.useState<HTMLElement>();\n const stylesRef = React.useRef<CSSStyleDeclaration>({} as any);\n const prevPresentRef = React.useRef(present);\n const prevAnimationNameRef = React.useRef<string>('none');\n const initialState = present ? 'mounted' : 'unmounted';\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: 'unmounted',\n ANIMATION_OUT: 'unmountSuspended',\n },\n unmountSuspended: {\n MOUNT: 'mounted',\n ANIMATION_END: 'unmounted',\n },\n unmounted: {\n MOUNT: 'mounted',\n },\n });\n\n React.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n }, [state]);\n\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n\n if (present) {\n send('MOUNT');\n } else if (currentAnimationName === 'none' || styles?.display === 'none') {\n // If there is no exit animation or the element is hidden, animations won't run\n // so we unmount instantly\n send('UNMOUNT');\n } else {\n /**\n * When `present` changes to `false`, we check changes to animation-name to\n * determine whether an animation has started. We chose this approach (reading\n * computed styles) because there is no `animationrun` event and `animationstart`\n * fires after `animation-delay` has expired which would be too late.\n */\n const isAnimating = prevAnimationName !== currentAnimationName;\n\n if (wasPresent && isAnimating) {\n send('ANIMATION_OUT');\n } else {\n send('UNMOUNT');\n }\n }\n\n prevPresentRef.current = present;\n }\n }, [present, send]);\n\n useLayoutEffect(() => {\n if (node) {\n let timeoutId: number;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n /**\n * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n * make sure we only trigger ANIMATION_END for the currently active animation.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n if (event.target === node && isCurrentAnimation) {\n // With React 18 concurrency this update is applied a frame after the\n // animation ends, creating a flash of visible content. By setting the\n // animation fill mode to \"forwards\", we force the node to keep the\n // styles of the last keyframe, removing the flash.\n //\n // Previously we flushed the update via ReactDom.flushSync, but with\n // exit animations this resulted in the node being removed from the\n // DOM before the synthetic animationEnd event was dispatched, meaning\n // user-provided event handlers would not be called.\n // https://github.com/radix-ui/primitives/pull/1849\n send('ANIMATION_END');\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = 'forwards';\n // Reset the style after the node had time to unmount (for cases\n // where the component chooses not to unmount). Doing this any\n // sooner than `setTimeout` (e.g. with `requestAnimationFrame`)\n // still causes a flash.\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === 'forwards') {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event: AnimationEvent) => {\n if (event.target === node) {\n // if animation occurred, store its name as the previous animation.\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener('animationstart', handleAnimationStart);\n node.addEventListener('animationcancel', handleAnimationEnd);\n node.addEventListener('animationend', handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener('animationstart', handleAnimationStart);\n node.removeEventListener('animationcancel', handleAnimationEnd);\n node.removeEventListener('animationend', handleAnimationEnd);\n };\n } else {\n // Transition to the unmounted state if the node is removed prematurely.\n // We avoid doing so during cleanup as the node may change but still exist.\n send('ANIMATION_END');\n }\n }, [node, send]);\n\n return {\n isPresent: ['mounted', 'unmountSuspended'].includes(state),\n ref: React.useCallback((node: HTMLElement) => {\n if (node) stylesRef.current = getComputedStyle(node);\n setNode(node);\n }, []),\n };\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getAnimationName(styles?: CSSStyleDeclaration) {\n return styles?.animationName || 'none';\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement<{ ref?: React.Ref<unknown> }>) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n\n // Not DEV\n return element.props.ref || (element as any).ref;\n}\n\nexport { Presence };\nexport type { PresenceProps };\n","import * as React from 'react';\n\ntype Machine<S> = { [k: string]: { [k: string]: S } };\ntype MachineState<T> = keyof T;\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine<M>(\n initialState: MachineState<M>,\n machine: M & Machine<MachineState<M>>\n) {\n return React.useReducer((state: MachineState<M>, event: MachineEvent<M>): MachineState<M> => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n","import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return Boolean(className) && array.indexOf(className) === index;\n })\n .join(' ');\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTUgMTgtNi02IDYtNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('ChevronLeft', [\n ['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }],\n]);\n\nexport default ChevronLeft;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtOSAxOCA2LTYtNi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('ChevronRight', [\n ['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }],\n]);\n\nexport default ChevronRight;\n","import React, {createContext, useContext} from \"react\";\n\nimport {Settings} from \"@xyd-js/core\";\nimport type {ITOC, IBreadcrumb, INavLinks} from \"@xyd-js/ui\";\n\nimport {FwSidebarGroupProps} from \"../components/sidebar\";\n\nexport interface IFramework {\n settings: Settings\n\n sidebarGroups: FwSidebarGroupProps[]\n\n toc?: ITOC[]\n\n breadcrumbs?: IBreadcrumb[]\n\n navlinks?: INavLinks\n}\n\n// TODO: page context + app context?\nconst framework: IFramework = {\n settings: {},\n sidebarGroups: []\n}\nconst FrameworkContext = createContext<IFramework>(framework)\n\nexport interface FrameworkProps {\n children: React.ReactNode\n\n settings: Settings,\n sidebarGroups: FwSidebarGroupProps[],\n toc?: ITOC[],\n breadcrumbs?: IBreadcrumb[],\n navlinks?: INavLinks\n}\n\nexport function Framework(props: FrameworkProps) {\n return <FrameworkContext.Provider value={{\n settings: props.settings,\n sidebarGroups: props.sidebarGroups,\n toc: props.toc,\n breadcrumbs: props.breadcrumbs,\n navlinks: props.navlinks,\n }}>\n {props.children}\n </FrameworkContext.Provider>\n}\n\n\nexport function useSidebarGroups() {\n const ctx = useContext(FrameworkContext)\n\n return ctx.sidebarGroups\n}\n\nexport function useSettings() {\n const ctx = useContext(FrameworkContext)\n\n return ctx.settings\n}\n\nexport function useToC() {\n const ctx = useContext(FrameworkContext)\n\n return ctx.toc\n}\n\nexport function useBreadcrumbs() {\n const ctx = useContext(FrameworkContext)\n\n return ctx.breadcrumbs\n}\n\nexport function useNavLinks() {\n const ctx = useContext(FrameworkContext)\n\n return ctx.navlinks\n}\n","import React, {createContext, useContext, useEffect, useState} from \"react\";\nimport {useLocation, useNavigation, useNavigate} from \"react-router\";\n\nimport {FwSidebarGroupProps, FwSidebarItemProps} from \"./sidebar\";\nimport {UIContext} from \"../../contexts/ui\";\nimport {useSidebarGroups} from \"../../contexts\";\n\n\nexport interface FwGroupContext {\n active: (item: FwSidebarItemProps) => [boolean, () => void],\n onClick?: (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>, item: FwSidebarItemProps) => void,\n}\n\ntype GroupBehaviour = (item: FwSidebarItemProps) => [boolean, () => void]\n\nconst groupContext = createContext<FwGroupContext>({\n active: () => [false, () => {\n }],\n onClick: () => null // TODO: should be deprecated?\n})\n\nexport function FwSidebarGroupContext({\n children,\n onePathBehaviour,\n clientSideRouting,\n initialActiveItems,\n }:\n {\n children: React.ReactNode,\n onePathBehaviour?: boolean,\n clientSideRouting?: boolean // TODO: scrollRouting?,\n initialActiveItems: any[]\n }) {\n\n let groupBehaviour: GroupBehaviour\n\n if (onePathBehaviour) {\n groupBehaviour = useOnePathBehaviour(initialActiveItems)\n } else {\n groupBehaviour = useDefaultBehaviour(initialActiveItems)\n }\n const location = useLocation()\n\n const [href, setHref] = useState(location.pathname)\n\n return <UIContext.Provider value={{\n href: href,\n setHref: (value) => {\n setHref(value)\n }\n }}>\n <groupContext.Provider value={{\n active: groupBehaviour,\n onClick: clientSideRouting ? (event, item) => {\n setHref(item.href)\n scrollToDataSlug(event, item)\n // navigate(item.href)\n } : undefined\n }}>\n {children}\n </groupContext.Provider>\n </UIContext.Provider>\n}\n\nexport function useGroup() {\n return useContext(groupContext)\n}\n\n\n// TODO: !!! better algorithm (JSON.stringify is not good) !!!!!\n// TODO: !!!! use array structure instad! !!!\n\nfunction getLastValue(set) {\n let value;\n for (value of set) ;\n return value;\n}\n\nfunction stringify(item: FwSidebarItemProps) {\n return JSON.stringify({\n title: item.title,\n href: item.href,\n items: item.items?.map((item) => stringify(item)),\n })\n}\n\nfunction recursiveSearch(items: FwSidebarItemProps[], href: string, levels: any[] = []) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n\n if (item.href === href) {\n return [...levels, i]\n }\n\n if (item.items) {\n const result = recursiveSearch(item.items, href, [...levels, i])\n if (result) {\n return result\n }\n }\n }\n return null\n}\n\nfunction calcActive(groups: FwSidebarGroupProps[], url: any) {\n const initialActiveItems: any[] = []\n\n groups.forEach(group => {\n const activeLevels = recursiveSearch(group.items, url) || []\n\n activeLevels.reduce((acc, index) => {\n initialActiveItems.push({\n ...acc[index],\n active: true\n })\n return acc[index].items\n }, group.items)\n\n return group\n })\n\n return initialActiveItems\n}\n\nfunction useDefaultBehaviour(initialActiveItems: any[]) {\n const groups = useSidebarGroups()\n const [weakSet] = useState(() => new Set<string>(initialActiveItems.map((item) => stringify(item))));\n const [, setForceUpdate] = useState(0);\n\n useEffect(() => {\n window.addEventListener('xyd.history.pushState', (event: CustomEvent) => {\n const url = event.detail?.url\n\n if (!url) {\n return\n }\n // TODO: better data structures\n const active = calcActive(groups, url)\n weakSet.clear()\n active.forEach((item) => {\n addItem(item)\n })\n });\n }, [])\n\n const forceUpdate = () => setForceUpdate((prev) => prev + 1);\n\n const addItem = (item: FwSidebarItemProps) => {\n weakSet.add(stringify(item));\n forceUpdate();\n };\n\n const deleteItem = (item: FwSidebarItemProps) => {\n weakSet.delete(stringify(item));\n forceUpdate();\n };\n\n const hasItem = (item: FwSidebarItemProps) => {\n return weakSet.has(stringify(item));\n };\n\n return (item: FwSidebarItemProps): [boolean, () => void] => [\n hasItem(item) || false,\n () => {\n if (hasItem(item)) {\n deleteItem(item);\n } else {\n addItem(item);\n }\n }\n ]\n}\n\nfunction useOnePathBehaviour(initialActiveItems: any[]) {\n const [weakSet] = useState(() => new Set<string>(initialActiveItems.map((item) => stringify(item))));\n const [lastLevel, setLastLevel] = useState<false | number | undefined>(false);\n const [, setForceUpdate] = useState(0);\n\n const forceUpdate = () => setForceUpdate((prev) => prev + 1);\n\n const addItem = (item: FwSidebarItemProps) => {\n weakSet.add(stringify(item));\n forceUpdate();\n };\n\n const deleteItem = (item: FwSidebarItemProps) => {\n weakSet.delete(stringify(item));\n forceUpdate();\n };\n\n const hasItem = (item: FwSidebarItemProps) => {\n return weakSet.has(stringify(item));\n };\n\n const clear = () => {\n weakSet.clear();\n forceUpdate();\n };\n\n return (item: FwSidebarItemProps): [boolean, () => void] => [\n hasItem(item),\n () => {\n setLastLevel(item.level)\n if (hasItem(item) && item.level == 0) {\n setLastLevel(false)\n clear()\n return\n }\n\n if (hasItem(item)) {\n setLastLevel(false)\n deleteItem(item);\n return\n }\n\n\n if (((item.level || 0) > (lastLevel || 0)) || lastLevel == false) {\n addItem(item)\n } else {\n const v = getLastValue(weakSet)\n deleteItem(JSON.parse(v))\n addItem(item)\n }\n }\n ]\n}\n\nfunction scrollToDataSlug(event: React.MouseEvent<HTMLAnchorElement, MouseEvent>, item: FwSidebarItemProps) {\n event.preventDefault()\n\n // TODO: find another solution because data-slug is added by 'atlas'\n\n const dataSlug = document.querySelector(`[data-slug=\"${item.href}\"]`)\n\n if (dataSlug) {\n dataSlug.scrollIntoView({block: \"start\", inline: \"nearest\"})\n }\n}\n\n\n","import {createContext} from 'react';\n\nexport const UIContext = createContext({\n href: '',\n setHref: (v: any) => {}\n});","import React, {} from \"react\"\n\nimport {Badge} from \"@xyd-js/components/writer\"\nimport {UISidebar} from \"@xyd-js/ui\";\n\nimport {useGroup} from \"./sidebar-group\";\n\n// TODO: custom hooks for active onclick handler etc?\n\nexport interface FwSidebarGroupProps {\n group: string\n\n items: FwSidebarItemProps[]\n}\n\nexport function FwSidebarItemGroup(props: FwSidebarGroupProps) {\n return <>\n <UISidebar.ItemHeader>\n {props.group}\n </UISidebar.ItemHeader>\n\n {props.items.map((item, index) => <FwSidebarItem\n key={index + item.href}\n title={item.title}\n href={item.href}\n items={item.items}\n active={item.active}\n level={0}\n />)}\n </>\n}\n\nexport interface FwSidebarItemProps {\n title: string | {\n code: string\n }\n\n href: string\n\n items?: FwSidebarItemProps[]\n\n active?: boolean\n\n // internal\n readonly level?: number\n // internal\n}\n\n// TODO: move to @xyd-js/components/content\nconst components = {\n Frontmatter: {\n // TODO: css\n Title: ({children}) => <div style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n gap: \"10px\",\n }}>\n {children}\n </div>,\n },\n Badge: ({children}) => <Badge>\n {children}\n </Badge>\n}\n\nfunction mdxExport(code: string, components: any) {\n const scope = {\n Fragment: React.Fragment,\n jsxs: React.createElement,\n jsx: React.createElement,\n jsxDEV: React.createElement,\n _jsxs: React.createElement,\n _jsx: React.createElement,\n ...components\n }\n const fn = new Function(...Object.keys(scope), `return ${code}`)\n return fn(...Object.values(scope))\n}\n\nfunction FwSidebarItem(props: FwSidebarItemProps) {\n const {active, onClick} = useGroup()\n const [isActive, setActive] = active(props)\n\n let Title: any\n\n if (typeof props.title === \"object\" && \"code\" in props.title) {\n const code = props.title.code\n\n Title = () => mdxExport(\n // TODO: in the future better mechanism + support props + better components (provider?) - similar to codehik\n code.replace(\"() => \", \"\"),\n components\n )\n } else {\n Title = () => props.title\n }\n\n return <UISidebar.Item\n button={!!props.items?.length}\n href={props.href}\n active={isActive}\n onClick={() => {\n setActive()\n }}\n >\n <Title/>\n\n {\n props.items?.length && <UISidebar.SubTree isOpen={isActive}>\n <>\n {\n props.items?.map((item, index) => <FwSidebarItem\n key={index + item.href}\n title={item.title}\n href={item.href}\n items={item.items}\n active={active(item)[0]}\n level={(props.level || 0) + 1}\n />)\n }\n </>\n </UISidebar.SubTree>\n }\n </UISidebar.Item>\n}\n","import React, {ReactElement} from \"react\";\n\nexport function manualHydration(obj: any, key = 0): ReactElement<any, string | React.JSXElementConstructor<any>> {\n if (typeof obj !== 'object' || obj === null) {\n return React.createElement(React.Fragment, {key});\n }\n\n const {type, props} = obj || {};\n if (typeof type !== 'string' && typeof type !== 'function') {\n return React.createElement(React.Fragment, {key});\n }\n\n let children: ReactElement<any, string | React.JSXElementConstructor<any>>[] = [];\n if (props?.children) {\n if (Array.isArray(props.children)) {\n children = props.children.map((child: any, i) => manualHydration(child, key + i)) || [];\n } else {\n children = [manualHydration(props.children, key)];\n }\n }\n\n const elementProps = {...props, children, key};\n\n return React.createElement(type, elementProps);\n}","import {useLocation} from \"react-router\";\n\nimport {useSettings} from \"../contexts\";\n\nimport {manualHydration} from \"../utils/manualHydration\";\n\nfunction normalizeHref(href: string) {\n if (href.startsWith(\"/\")) {\n return href\n }\n\n return `/${href}`\n}\n\n// TODO: better data structures\nexport function useMatchedSubNav() {\n const settings = useSettings()\n const location = useLocation()\n\n const matchedSubnav = settings.structure?.header\n ?.filter(item => item.sub)\n ?.find(item => normalizeHref(location.pathname).startsWith(normalizeHref(item.sub?.match || \"\")))\n\n if (!matchedSubnav) {\n return null\n }\n\n return matchedSubnav.sub || null\n}\n"],"mappings":"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","names":["import_react","import_react_router","import_ui","t","c","o","i","s","d","e","t","n","e","r","o","import_react","ArrowLeftIcon","React","forwardedRef","color","props","width","height","viewBox","fill","xmlns","ref","d","fillRule","clipRule","ArrowRightIcon","import_react","t","r","e","n","t","e","r","n","o","i","a","u","c","f","r","e","t","n","React","createContext","useContext","createScope","nextScopes","React","import_react","React","i","React","import_jsx_runtime","import_jsx_runtime","createCollectionScope","React","useCollection","a","b","React","React","useLayoutEffect","React","React","import_jsx_runtime","React","React","value","React","import_jsx_runtime","import_jsx_runtime","_","React2","React","getElementRef","node","import_jsx_runtime","Root","u","d","h","t","a","n","r","c","l","i","e","s","m","o","v","f","E","N","p","b","g","w","C","k","z","x","L","i","m","o","u","h","e","a","n","t","r","p","s","v","E","x","N","j","import_react","React","import_react","import_react","v","React","item","i","v","import_react","import_ui","React","components","import_ui","import_react","React","i","import_react_router","_a","React","recursiveSearch","i","toc","p","j"]}
1
+ {"version":3,"sources":["../packages/react/components/index.tsx","../packages/react/contexts/framework.tsx","../packages/react/components/sidebar/sidebar-group.tsx","../packages/react/contexts/ui.tsx","../packages/react/components/sidebar/sidebar.tsx","../packages/react/utils/manualHydration.ts","../packages/react/hooks/useMatchedNav.tsx"],"sourcesContent":["import React, {isValidElement} from \"react\";\nimport {useLocation} from \"react-router\";\n\nimport {Toc, SubNav, UISidebar} from \"@xyd-js/ui\"\nimport type {ITOC} from \"@xyd-js/ui\";\nimport {Breadcrumbs, NavLinks} from \"@xyd-js/components/writer\";\n\nimport {useBreadcrumbs, useNavLinks, useSettings, useSidebarGroups, useToC} from \"../contexts\";\nimport {FwSidebarItemGroup, FwSidebarGroupContext, FwSidebarItemProps} from \"./sidebar\";\nimport {Nav} from \"@xyd-js/ui\";\n\nimport {manualHydration} from \"../utils/manualHydration\";\nimport {useMatchedSubNav} from \"../hooks\";\n\nfunction FwNavLogo() {\n const settings = useSettings()\n\n const logo = isValidElement(settings?.styling?.logo) ? settings?.styling?.logo : manualHydration(settings?.styling?.logo)\n\n // TODO: configurable url?\n return <a href=\"/\">\n {logo}\n </a>\n}\n\nfunction FwNav({kind}: { kind?: \"middle\" }) {\n const matchedSubnav = useMatchedSubNav()\n const location = useLocation()\n\n const settings = useSettings()\n\n const headers = matchedSubnav ? matchedSubnav?.items : settings?.structure?.header\n const active = headers?.find(item => location.pathname.startsWith(item.url || \"\"))\n\n return <Nav\n value={active?.url || \"\"}\n kind={kind}\n logo={<FwNavLogo/>}\n onChange={() => {\n }}\n >\n {\n settings?.structure?.header?.map((item, index) => {\n return <Nav.Item\n key={index + (item.url || \"\") + item.name}\n href={item?.url || \"\"}\n value={item.url}\n >\n {item.name}\n </Nav.Item>\n })\n }\n </Nav>\n}\n\nfunction FwSubNav() {\n const matchedSubnav = useMatchedSubNav()\n const location = useLocation()\n\n if (!matchedSubnav) {\n return null\n }\n\n // TODO: in the future routing props from settings like {match: \"/docs/api/browser\"}\n const active = matchedSubnav?.items.findLast(item => location.pathname.startsWith(item.url || \"\"))\n\n // TODO: value\n return <SubNav\n title={matchedSubnav?.name || \"\"}\n value={active?.url || \"\"}\n onChange={() => {\n }}\n >\n {matchedSubnav?.items.map((item, index) => {\n return <SubNav.Item value={item.url || \"\"} href={item.url}>\n {item.name}\n </SubNav.Item>\n })}\n </SubNav>\n\n}\n\nexport interface FwSidebarGroupsProps {\n onePathBehaviour?: boolean\n clientSideRouting?: boolean\n}\n\nfunction recursiveSearch(items: FwSidebarItemProps[], href: string, levels: any[] = []) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n\n if (item.href === href) {\n return [...levels, i]\n }\n\n if (item.items) {\n const result = recursiveSearch(item.items, href, [...levels, i])\n if (result) {\n return result\n }\n }\n }\n return null\n}\n\nfunction FwSidebarGroups(props: FwSidebarGroupsProps) {\n const groups = useSidebarGroups()\n\n const settings = useSettings()\n\n const footerItems = settings.structure?.anchors?.bottom?.map(anchor => {\n let icon\n\n // TODO: refactor this !!!\n if (typeof anchor.icon === \"string\") {\n switch (anchor.icon) {\n case \"icon-cookbook\": {\n icon = <IconCookbook/>\n break\n }\n\n case \"icon-community\": {\n icon = <IconCommunity/>\n break\n }\n\n case \"icon-marketplace\": {\n icon = <IconMarketplace/>\n break\n }\n\n case \"icon-sdk\": {\n icon = <IconSDK/>\n break\n }\n\n default: {\n icon = null\n }\n }\n } else {\n icon = isValidElement(anchor.icon) ? anchor.icon : manualHydration(anchor.icon)\n }\n\n return <UISidebar.FooterItem href={anchor.url} icon={icon}>\n {anchor.name}\n </UISidebar.FooterItem>\n })\n\n const location = useLocation()\n const initialActiveItems: any[] = []\n groups.forEach(group => {\n const activeLevels = recursiveSearch(group.items, location.pathname) || []\n\n activeLevels.reduce((acc, index) => {\n initialActiveItems.push(acc[index])\n acc[index].active = true\n return acc[index].items\n }, group.items)\n\n return group\n })\n\n return <FwSidebarGroupContext\n onePathBehaviour={props.onePathBehaviour}\n clientSideRouting={props.clientSideRouting}\n initialActiveItems={initialActiveItems}\n >\n <UISidebar footerItems={footerItems && footerItems}>\n {\n groups?.map((group, index) => <FwSidebarItemGroup\n key={index + group.group}\n {...group}\n />)\n }\n </UISidebar>\n </FwSidebarGroupContext>\n}\n\ntype FlatTOC = {\n depth: number\n value: string\n}\n\nfunction FwToc() {\n const toc = useToC()\n\n if (!toc) {\n return null\n }\n\n const flatToc: FlatTOC[] = []\n\n const flatten = (toc?: ITOC[]) => {\n if (!toc) {\n return\n }\n\n toc.forEach(item => {\n flatToc.push({\n depth: item.depth,\n value: item.value\n })\n\n flatten(item.children)\n })\n }\n\n flatten(toc)\n\n // TODO: its temporary\n const tocFinal = flatToc.filter(item => item.depth === 2)\n\n const location = useLocation()\n\n // TODO: better in the future\n const defaultValue = location.hash ? location.hash.replace(\"#\", \"\") : tocFinal[0]?.value\n\n return <Toc defaultValue={defaultValue}>\n {\n tocFinal.map((item, index) => <Toc.Item\n key={index + item.value + item.depth}\n value={item.value}\n >\n {item.value}\n </Toc.Item>)\n }\n </Toc>\n}\n\nfunction FwBreadcrumbs() {\n const breadcrumbs = useBreadcrumbs()\n\n return <Breadcrumbs\n items={breadcrumbs || []}\n />\n}\n\nfunction FwNavLinks() {\n const navlinks = useNavLinks()\n\n if (navlinks?.prev || navlinks?.next) {\n return <NavLinks\n prev={navlinks.prev}\n next={navlinks.next}\n />\n }\n\n return null\n}\n\n// TODO: issues with below svgs inside settigns - REFACTOR THIS\nfunction IconCookbook() {\n return <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M14.447 7.106a1 1 0 0 1 .447 1.341l-4 8a1 1 0 1 1-1.788-.894l4-8a1 1 0 0 1 1.341-.447ZM6.6 7.2a1 1 0 0 1 .2 1.4L4.25 12l2.55 3.4a1 1 0 0 1-1.6 1.2l-3-4a1 1 0 0 1 0-1.2l3-4a1 1 0 0 1 1.4-.2Zm10.8 0a1 1 0 0 1 1.4.2l3 4a1 1 0 0 1 0 1.2l-3 4a1 1 0 0 1-1.6-1.2l2.55-3.4-2.55-3.4a1 1 0 0 1 .2-1.4Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n}\n\nfunction IconCommunity() {\n return <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10.5 8.5a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0ZM12 5a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7ZM3 9.5a1 1 0 1 1 2 0 1 1 0 0 1-2 0Zm1-3a3 3 0 1 0 0 6 3 3 0 0 0 0-6Zm16 2a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm-3 1a3 3 0 1 1 6 0 3 3 0 0 1-6 0ZM8 18c0-.974.438-1.684 1.142-2.185C9.876 15.293 10.911 15 12 15c1.09 0 2.124.293 2.858.815.704.5 1.142 1.21 1.142 2.185a1 1 0 1 0 2 0c0-1.692-.812-2.982-1.983-3.815C14.876 13.373 13.411 13 12 13c-1.41 0-2.876.373-4.017 1.185C6.812 15.018 6 16.308 6 18a1 1 0 1 0 2 0Zm-3.016-3.675a1 1 0 0 1-.809 1.16C2.79 15.732 2 16.486 2 17.5a1 1 0 1 1-2 0c0-2.41 1.978-3.655 3.825-3.985a1 1 0 0 1 1.16.81Zm14.84 1.16a1 1 0 1 1 .351-1.97C22.022 13.845 24 15.09 24 17.5a1 1 0 1 1-2 0c0-1.014-.79-1.768-2.175-2.015Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n}\n\n// TODO: but this svg works on settings\nfunction IconMarketplace() {\n return <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n width=\"1em\"\n height=\"1em\"\n >\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M3.78163 3.28449C3.8768 2.96725 4.16879 2.75 4.5 2.75H19.5C19.8312 2.75 20.1232 2.96725 20.2184 3.28449L21.7184 8.28449C21.7393 8.3544 21.75 8.42701 21.75 8.5C21.75 10.5711 20.0711 12.25 18 12.25C16.7733 12.25 15.6842 11.661 15 10.7504C14.3158 11.661 13.2267 12.25 12 12.25C10.7733 12.25 9.68417 11.661 9 10.7504C8.31583 11.661 7.2267 12.25 6 12.25C3.92893 12.25 2.25 10.5711 2.25 8.5C2.25 8.42701 2.26066 8.3544 2.28163 8.28449L3.78163 3.28449ZM9.75 8.5C9.75 9.74264 10.7574 10.75 12 10.75C13.2426 10.75 14.25 9.74264 14.25 8.5C14.25 8.08579 14.5858 7.75 15 7.75C15.4142 7.75 15.75 8.08579 15.75 8.5C15.75 9.74264 16.7574 10.75 18 10.75C19.2083 10.75 20.1942 9.79754 20.2477 8.60244L18.942 4.25H5.05802L3.75229 8.60244C3.80584 9.79753 4.79169 10.75 6 10.75C7.24264 10.75 8.25 9.74264 8.25 8.5C8.25 8.08579 8.58579 7.75 9 7.75C9.41421 7.75 9.75 8.08579 9.75 8.5Z\"\n />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M4 10.25C4.41421 10.25 4.75 10.5858 4.75 11V19.75H6.5C6.91421 19.75 7.25 20.0858 7.25 20.5C7.25 20.9142 6.91421 21.25 6.5 21.25H4C3.58579 21.25 3.25 20.9142 3.25 20.5V11C3.25 10.5858 3.58579 10.25 4 10.25ZM20 10.25C20.4142 10.25 20.75 10.5858 20.75 11V20.5C20.75 20.9142 20.4142 21.25 20 21.25H10.5C10.0858 21.25 9.75 20.9142 9.75 20.5C9.75 20.0858 10.0858 19.75 10.5 19.75H19.25V11C19.25 10.5858 19.5858 10.25 20 10.25Z\"\n />\n <path\n d=\"M12.003 19C11.31 18.9996 10.6384 18.7598 10.102 18.3213C9.56564 17.8829 9.19745 17.2726 9.05983 16.594C8.92222 15.9154 9.02364 15.2101 9.34693 14.5976C9.67022 13.9852 10.1955 13.5032 10.8337 13.2333C11.5673 12.9262 12.393 12.9221 13.1296 13.2222C13.8661 13.5222 14.4536 14.1018 14.7631 14.8338C15.0727 15.5659 15.0791 16.3907 14.7808 17.1274C14.4827 17.8642 13.9042 18.4527 13.1724 18.7641C12.8025 18.9205 12.4047 19.0007 12.003 19ZM11.1458 14.7215C11.1124 14.7215 11.0803 14.7348 11.0567 14.7584C11.0331 14.782 11.0198 14.8141 11.0198 14.8475V17.1923C11.0198 17.2258 11.0331 17.2578 11.0567 17.2814C11.0803 17.305 11.1124 17.3183 11.1458 17.3183C11.1671 17.3183 11.188 17.3128 11.2065 17.3024L13.3399 16.13C13.3597 16.1192 13.3761 16.1032 13.3876 16.0838C13.3991 16.0644 13.4052 16.0423 13.4052 16.0197C13.4052 15.9972 13.3991 15.9751 13.3876 15.9557C13.3761 15.9362 13.3597 15.9203 13.3399 15.9094L11.2063 14.7373C11.1879 14.727 11.1671 14.7215 11.1458 14.7215Z\"\n />\n </svg>\n}\n\nfunction IconSDK() {\n return <svg\n viewBox=\"0 0 15 15\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n >\n <path\n d=\"M7.28856 0.796908C7.42258 0.734364 7.57742 0.734364 7.71144 0.796908L13.7114 3.59691C13.8875 3.67906 14 3.85574 14 4.05V10.95C14 11.1443 13.8875 11.3209 13.7114 11.4031L7.71144 14.2031C7.57742 14.2656 7.42258 14.2656 7.28856 14.2031L1.28856 11.4031C1.11252 11.3209 1 11.1443 1 10.95V4.05C1 3.85574 1.11252 3.67906 1.28856 3.59691L7.28856 0.796908ZM2 4.80578L7 6.93078V12.9649L2 10.6316V4.80578ZM8 12.9649L13 10.6316V4.80578L8 6.93078V12.9649ZM7.5 6.05672L12.2719 4.02866L7.5 1.80176L2.72809 4.02866L7.5 6.05672Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n}\n\nexport {\n FwNav,\n FwSubNav,\n\n FwBreadcrumbs,\n FwToc,\n FwNavLinks,\n\n FwSidebarGroups,\n}\n","import React, {createContext, useContext} from \"react\";\n\nimport {Settings} from \"@xyd-js/core\";\nimport type {ITOC, IBreadcrumb, INavLinks} from \"@xyd-js/ui\";\n\nimport {FwSidebarGroupProps} from \"../components/sidebar\";\n\nexport interface IFramework {\n settings: Settings\n\n sidebarGroups: FwSidebarGroupProps[]\n\n toc?: ITOC[]\n\n breadcrumbs?: IBreadcrumb[]\n\n navlinks?: INavLinks\n}\n\n// TODO: page context + app context?\nconst framework: IFramework = {\n settings: {},\n sidebarGroups: []\n}\nconst FrameworkContext = createContext<IFramework>(framework)\n\nexport interface FrameworkProps {\n children: React.ReactNode\n\n settings: Settings,\n sidebarGroups: FwSidebarGroupProps[],\n toc?: ITOC[],\n breadcrumbs?: IBreadcrumb[],\n navlinks?: INavLinks\n}\n\nexport function Framework(props: FrameworkProps) {\n return <FrameworkContext.Provider value={{\n settings: props.settings,\n sidebarGroups: props.sidebarGroups,\n toc: props.toc,\n breadcrumbs: props.breadcrumbs,\n navlinks: props.navlinks,\n }}>\n {props.children}\n </FrameworkContext.Provider>\n}\n\nexport function useSidebarGroups() {\n const ctx = useContext(FrameworkContext)\n\n return ctx.sidebarGroups\n}\n\nexport function useSettings() {\n const ctx = useContext(FrameworkContext)\n\n return ctx.settings\n}\n\nexport function useToC() {\n const ctx = useContext(FrameworkContext)\n\n return ctx.toc\n}\n\nexport function useBreadcrumbs() {\n const ctx = useContext(FrameworkContext)\n\n return ctx.breadcrumbs\n}\n\nexport function useNavLinks() {\n const ctx = useContext(FrameworkContext)\n\n return ctx.navlinks\n}\n","import React, {createContext, useContext, useEffect, useState} from \"react\";\nimport {useLocation, useNavigation, useNavigate} from \"react-router\";\n\nimport {FwSidebarGroupProps, FwSidebarItemProps} from \"./sidebar\";\nimport {UIContext} from \"../../contexts/ui\";\nimport {useSidebarGroups} from \"../../contexts\";\n\n\nexport interface FwGroupContext {\n active: (item: FwSidebarItemProps) => [boolean, () => void],\n onClick?: (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>, item: FwSidebarItemProps) => void,\n}\n\ntype GroupBehaviour = (item: FwSidebarItemProps) => [boolean, () => void]\n\nconst groupContext = createContext<FwGroupContext>({\n active: () => [false, () => {\n }],\n onClick: () => null // TODO: should be deprecated?\n})\n\nexport function FwSidebarGroupContext({\n children,\n onePathBehaviour,\n clientSideRouting,\n initialActiveItems,\n }:\n {\n children: React.ReactNode,\n onePathBehaviour?: boolean,\n clientSideRouting?: boolean // TODO: scrollRouting?,\n initialActiveItems: any[]\n }) {\n\n let groupBehaviour: GroupBehaviour\n\n if (onePathBehaviour) {\n groupBehaviour = useOnePathBehaviour(initialActiveItems)\n } else {\n groupBehaviour = useDefaultBehaviour(initialActiveItems)\n }\n const location = useLocation()\n\n const [href, setHref] = useState(location.pathname)\n\n return <UIContext.Provider value={{\n href: href,\n setHref: (value) => {\n setHref(value)\n }\n }}>\n <groupContext.Provider value={{\n active: groupBehaviour,\n onClick: clientSideRouting ? (event, item) => {\n setHref(item.href)\n scrollToDataSlug(event, item)\n // navigate(item.href)\n } : undefined\n }}>\n {children}\n </groupContext.Provider>\n </UIContext.Provider>\n}\n\nexport function useGroup() {\n return useContext(groupContext)\n}\n\n\n// TODO: !!! better algorithm (JSON.stringify is not good) !!!!!\n// TODO: !!!! use array structure instad! !!!\n\nfunction getLastValue(set) {\n let value;\n for (value of set) ;\n return value;\n}\n\nfunction stringify(item: FwSidebarItemProps) {\n return JSON.stringify({\n title: item.title,\n href: item.href,\n items: item.items?.map((item) => stringify(item)),\n })\n}\n\nfunction recursiveSearch(items: FwSidebarItemProps[], href: string, levels: any[] = []) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n\n if (item.href === href) {\n return [...levels, i]\n }\n\n if (item.items) {\n const result = recursiveSearch(item.items, href, [...levels, i])\n if (result) {\n return result\n }\n }\n }\n return null\n}\n\nfunction calcActive(groups: FwSidebarGroupProps[], url: any) {\n const initialActiveItems: any[] = []\n\n groups.forEach(group => {\n const activeLevels = recursiveSearch(group.items, url) || []\n\n activeLevels.reduce((acc, index) => {\n initialActiveItems.push({\n ...acc[index],\n active: true\n })\n return acc[index].items\n }, group.items)\n\n return group\n })\n\n return initialActiveItems\n}\n\nfunction useDefaultBehaviour(initialActiveItems: any[]) {\n const groups = useSidebarGroups()\n const [weakSet] = useState(() => new Set<string>(initialActiveItems.map((item) => stringify(item))));\n const [, setForceUpdate] = useState(0);\n\n useEffect(() => {\n window.addEventListener('xyd.history.pushState', (event: CustomEvent) => {\n const url = event.detail?.url\n\n if (!url) {\n return\n }\n // TODO: better data structures\n const active = calcActive(groups, url)\n weakSet.clear()\n active.forEach((item) => {\n addItem(item)\n })\n });\n }, [])\n\n const forceUpdate = () => setForceUpdate((prev) => prev + 1);\n\n const addItem = (item: FwSidebarItemProps) => {\n weakSet.add(stringify(item));\n forceUpdate();\n };\n\n const deleteItem = (item: FwSidebarItemProps) => {\n weakSet.delete(stringify(item));\n forceUpdate();\n };\n\n const hasItem = (item: FwSidebarItemProps) => {\n return weakSet.has(stringify(item));\n };\n\n return (item: FwSidebarItemProps): [boolean, () => void] => [\n hasItem(item) || false,\n () => {\n if (hasItem(item)) {\n deleteItem(item);\n } else {\n addItem(item);\n }\n }\n ]\n}\n\nfunction useOnePathBehaviour(initialActiveItems: any[]) {\n const [weakSet] = useState(() => new Set<string>(initialActiveItems.map((item) => stringify(item))));\n const [lastLevel, setLastLevel] = useState<false | number | undefined>(false);\n const [, setForceUpdate] = useState(0);\n\n const forceUpdate = () => setForceUpdate((prev) => prev + 1);\n\n const addItem = (item: FwSidebarItemProps) => {\n weakSet.add(stringify(item));\n forceUpdate();\n };\n\n const deleteItem = (item: FwSidebarItemProps) => {\n weakSet.delete(stringify(item));\n forceUpdate();\n };\n\n const hasItem = (item: FwSidebarItemProps) => {\n return weakSet.has(stringify(item));\n };\n\n const clear = () => {\n weakSet.clear();\n forceUpdate();\n };\n\n return (item: FwSidebarItemProps): [boolean, () => void] => [\n hasItem(item),\n () => {\n setLastLevel(item.level)\n if (hasItem(item) && item.level == 0) {\n setLastLevel(false)\n clear()\n return\n }\n\n if (hasItem(item)) {\n setLastLevel(false)\n deleteItem(item);\n return\n }\n\n\n if (((item.level || 0) > (lastLevel || 0)) || lastLevel == false) {\n addItem(item)\n } else {\n const v = getLastValue(weakSet)\n deleteItem(JSON.parse(v))\n addItem(item)\n }\n }\n ]\n}\n\nfunction scrollToDataSlug(event: React.MouseEvent<HTMLAnchorElement, MouseEvent>, item: FwSidebarItemProps) {\n event.preventDefault()\n\n // TODO: find another solution because data-slug is added by 'atlas'\n\n const dataSlug = document.querySelector(`[data-slug=\"${item.href}\"]`)\n\n if (dataSlug) {\n dataSlug.scrollIntoView({block: \"start\", inline: \"nearest\"})\n }\n}\n\n\n","import {createContext} from 'react';\n\nexport const UIContext = createContext({\n href: '',\n setHref: (v: any) => {}\n});","import React, {} from \"react\"\n\nimport {Badge} from \"@xyd-js/components/writer\"\nimport {UISidebar} from \"@xyd-js/ui\";\n\nimport {useGroup} from \"./sidebar-group\";\n\n// TODO: custom hooks for active onclick handler etc?\n\nexport interface FwSidebarGroupProps {\n group: string\n\n items: FwSidebarItemProps[]\n}\n\nexport function FwSidebarItemGroup(props: FwSidebarGroupProps) {\n return <>\n <UISidebar.ItemHeader>\n {props.group}\n </UISidebar.ItemHeader>\n\n {props.items.map((item, index) => <FwSidebarItem\n key={index + item.href}\n title={item.title}\n href={item.href}\n items={item.items}\n active={item.active}\n level={0}\n />)}\n </>\n}\n\nexport interface FwSidebarItemProps {\n title: string | {\n code: string\n }\n\n href: string\n\n items?: FwSidebarItemProps[]\n\n active?: boolean\n\n // internal\n readonly level?: number\n // internal\n}\n\n// TODO: move to @xyd-js/components/content\nconst components = {\n Frontmatter: {\n // TODO: css\n Title: ({children}) => <div style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n gap: \"10px\",\n }}>\n {children}\n </div>,\n },\n Badge: ({children, ...rest}) => <Badge {...rest}>\n {children}\n </Badge>\n}\n\nfunction mdxExport(code: string, components: any) {\n const scope = {\n Fragment: React.Fragment,\n jsxs: React.createElement,\n jsx: React.createElement,\n jsxDEV: React.createElement,\n _jsxs: React.createElement,\n _jsx: React.createElement,\n ...components\n }\n const fn = new Function(...Object.keys(scope), `return ${code}`)\n return fn(...Object.values(scope))\n}\n\nfunction FwSidebarItem(props: FwSidebarItemProps) {\n const {active, onClick} = useGroup()\n const [isActive, setActive] = active(props)\n\n let Title: any\n\n if (typeof props.title === \"object\" && \"code\" in props.title) {\n const code = props.title.code\n\n Title = () => mdxExport(\n // TODO: in the future better mechanism + support props + better components (provider?) - similar to codehik\n code.replace(\"() => \", \"\"),\n components\n )\n } else {\n Title = () => props.title\n }\n\n return <UISidebar.Item\n button={!!props.items?.length}\n href={props.href}\n active={isActive}\n onClick={() => {\n setActive()\n }}\n >\n <Title/>\n\n {\n props.items?.length && <UISidebar.SubTree isOpen={isActive}>\n <>\n {\n props.items?.map((item, index) => <FwSidebarItem\n key={index + item.href}\n title={item.title}\n href={item.href}\n items={item.items}\n active={active(item)[0]}\n level={(props.level || 0) + 1}\n />)\n }\n </>\n </UISidebar.SubTree>\n }\n </UISidebar.Item>\n}\n","import React, {ReactElement} from \"react\";\n\nexport function manualHydration(obj: any, key = 0): ReactElement<any, string | React.JSXElementConstructor<any>> {\n if (typeof obj !== 'object' || obj === null) {\n return React.createElement(React.Fragment, {key});\n }\n\n const {type, props} = obj || {};\n if (typeof type !== 'string' && typeof type !== 'function') {\n return React.createElement(React.Fragment, {key});\n }\n\n let children: ReactElement<any, string | React.JSXElementConstructor<any>>[] = [];\n if (props?.children) {\n if (Array.isArray(props.children)) {\n children = props.children.map((child: any, i) => manualHydration(child, key + i)) || [];\n } else {\n children = [manualHydration(props.children, key)];\n }\n }\n\n const elementProps = {...props, children, key};\n\n return React.createElement(type, elementProps);\n}","import {useLocation} from \"react-router\";\n\nimport {useSettings} from \"../contexts\";\n\nfunction normalizeHref(href: string) {\n if (href.startsWith(\"/\")) {\n return href\n }\n\n return `/${href}`\n}\n\n// TODO: better data structures\nexport function useMatchedSubNav() {\n const settings = useSettings()\n const location = useLocation()\n\n const matchedSubnav = settings.structure?.header\n ?.filter(item => item.sub)\n ?.find(item => normalizeHref(location.pathname).startsWith(normalizeHref(item.sub?.match || \"\")))\n\n if (!matchedSubnav) {\n return null\n }\n\n return matchedSubnav.sub || null\n}\n"],"mappings":";AAAA,OAAOA,UAAQ,sBAAqB;AACpC,SAAQ,eAAAC,oBAAkB;AAE1B,SAAQ,KAAK,QAAQ,aAAAC,kBAAgB;AAErC,SAAQ,aAAa,gBAAe;;;ACLpC,OAAO,SAAQ,eAAe,kBAAiB;AAoB/C,IAAM,YAAwB;AAAA,EAC1B,UAAU,CAAC;AAAA,EACX,eAAe,CAAC;AACpB;AACA,IAAM,mBAAmB,cAA0B,SAAS;AAYrD,SAAS,UAAU,OAAuB;AAC7C,SAAO,oCAAC,iBAAiB,UAAjB,EAA0B,OAAO;AAAA,IACrC,UAAU,MAAM;AAAA,IAChB,eAAe,MAAM;AAAA,IACrB,KAAK,MAAM;AAAA,IACX,aAAa,MAAM;AAAA,IACnB,UAAU,MAAM;AAAA,EACpB,KACK,MAAM,QACX;AACJ;AAEO,SAAS,mBAAmB;AAC/B,QAAM,MAAM,WAAW,gBAAgB;AAEvC,SAAO,IAAI;AACf;AAEO,SAAS,cAAc;AAC1B,QAAM,MAAM,WAAW,gBAAgB;AAEvC,SAAO,IAAI;AACf;AAEO,SAAS,SAAS;AACrB,QAAM,MAAM,WAAW,gBAAgB;AAEvC,SAAO,IAAI;AACf;AAEO,SAAS,iBAAiB;AAC7B,QAAM,MAAM,WAAW,gBAAgB;AAEvC,SAAO,IAAI;AACf;AAEO,SAAS,cAAc;AAC1B,QAAM,MAAM,WAAW,gBAAgB;AAEvC,SAAO,IAAI;AACf;;;AC5EA,OAAOC,UAAQ,iBAAAC,gBAAe,cAAAC,aAAY,WAAW,gBAAe;AACpE,SAAQ,mBAA8C;;;ACDtD,SAAQ,iBAAAC,sBAAoB;AAErB,IAAM,YAAYA,eAAc;AAAA,EACnC,MAAM;AAAA,EACN,SAAS,CAAC,MAAW;AAAA,EAAC;AAC1B,CAAC;;;ADUD,IAAM,eAAeC,eAA8B;AAAA,EAC/C,QAAQ,MAAM,CAAC,OAAO,MAAM;AAAA,EAC5B,CAAC;AAAA,EACD,SAAS,MAAM;AAAA;AACnB,CAAC;AAEM,SAAS,sBAAsB;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAMG;AAErC,MAAI;AAEJ,MAAI,kBAAkB;AAClB,qBAAiB,oBAAoB,kBAAkB;AAAA,EAC3D,OAAO;AACH,qBAAiB,oBAAoB,kBAAkB;AAAA,EAC3D;AACA,QAAM,WAAW,YAAY;AAE7B,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,SAAS,QAAQ;AAElD,SAAO,gBAAAC,OAAA,cAAC,UAAU,UAAV,EAAmB,OAAO;AAAA,IAC9B;AAAA,IACA,SAAS,CAAC,UAAU;AAChB,cAAQ,KAAK;AAAA,IACjB;AAAA,EACJ,KACI,gBAAAA,OAAA,cAAC,aAAa,UAAb,EAAsB,OAAO;AAAA,IAC1B,QAAQ;AAAA,IACR,SAAS,oBAAoB,CAAC,OAAO,SAAS;AAC1C,cAAQ,KAAK,IAAI;AACjB,uBAAiB,OAAO,IAAI;AAAA,IAEhC,IAAI;AAAA,EACR,KACK,QACL,CACJ;AACJ;AAEO,SAAS,WAAW;AACvB,SAAOC,YAAW,YAAY;AAClC;AAMA,SAAS,aAAa,KAAK;AACvB,MAAI;AACJ,OAAK,SAAS,IAAK;AACnB,SAAO;AACX;AAEA,SAAS,UAAU,MAA0B;AA9E7C;AA+EI,SAAO,KAAK,UAAU;AAAA,IAClB,OAAO,KAAK;AAAA,IACZ,MAAM,KAAK;AAAA,IACX,QAAO,UAAK,UAAL,mBAAY,IAAI,CAACC,UAAS,UAAUA,KAAI;AAAA,EACnD,CAAC;AACL;AAEA,SAAS,gBAAgB,OAA6B,MAAc,SAAgB,CAAC,GAAG;AACpF,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,UAAM,OAAO,MAAM,CAAC;AAEpB,QAAI,KAAK,SAAS,MAAM;AACpB,aAAO,CAAC,GAAG,QAAQ,CAAC;AAAA,IACxB;AAEA,QAAI,KAAK,OAAO;AACZ,YAAM,SAAS,gBAAgB,KAAK,OAAO,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC/D,UAAI,QAAQ;AACR,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AAEA,SAAS,WAAW,QAA+B,KAAU;AACzD,QAAM,qBAA4B,CAAC;AAEnC,SAAO,QAAQ,WAAS;AACpB,UAAM,eAAe,gBAAgB,MAAM,OAAO,GAAG,KAAK,CAAC;AAE3D,iBAAa,OAAO,CAAC,KAAK,UAAU;AAChC,yBAAmB,KAAK;AAAA,QACpB,GAAG,IAAI,KAAK;AAAA,QACZ,QAAQ;AAAA,MACZ,CAAC;AACD,aAAO,IAAI,KAAK,EAAE;AAAA,IACtB,GAAG,MAAM,KAAK;AAEd,WAAO;AAAA,EACX,CAAC;AAED,SAAO;AACX;AAEA,SAAS,oBAAoB,oBAA2B;AACpD,QAAM,SAAS,iBAAiB;AAChC,QAAM,CAAC,OAAO,IAAI,SAAS,MAAM,IAAI,IAAY,mBAAmB,IAAI,CAAC,SAAS,UAAU,IAAI,CAAC,CAAC,CAAC;AACnG,QAAM,CAAC,EAAE,cAAc,IAAI,SAAS,CAAC;AAErC,YAAU,MAAM;AACZ,WAAO,iBAAiB,yBAAyB,CAAC,UAAuB;AAlIjF;AAmIY,YAAM,OAAM,WAAM,WAAN,mBAAc;AAE1B,UAAI,CAAC,KAAK;AACN;AAAA,MACJ;AAEA,YAAM,SAAS,WAAW,QAAQ,GAAG;AACrC,cAAQ,MAAM;AACd,aAAO,QAAQ,CAAC,SAAS;AACrB,gBAAQ,IAAI;AAAA,MAChB,CAAC;AAAA,IACL,CAAC;AAAA,EACL,GAAG,CAAC,CAAC;AAEL,QAAM,cAAc,MAAM,eAAe,CAAC,SAAS,OAAO,CAAC;AAE3D,QAAM,UAAU,CAAC,SAA6B;AAC1C,YAAQ,IAAI,UAAU,IAAI,CAAC;AAC3B,gBAAY;AAAA,EAChB;AAEA,QAAM,aAAa,CAAC,SAA6B;AAC7C,YAAQ,OAAO,UAAU,IAAI,CAAC;AAC9B,gBAAY;AAAA,EAChB;AAEA,QAAM,UAAU,CAAC,SAA6B;AAC1C,WAAO,QAAQ,IAAI,UAAU,IAAI,CAAC;AAAA,EACtC;AAEA,SAAO,CAAC,SAAoD;AAAA,IACxD,QAAQ,IAAI,KAAK;AAAA,IACjB,MAAM;AACF,UAAI,QAAQ,IAAI,GAAG;AACf,mBAAW,IAAI;AAAA,MACnB,OAAO;AACH,gBAAQ,IAAI;AAAA,MAChB;AAAA,IACJ;AAAA,EACJ;AACJ;AAEA,SAAS,oBAAoB,oBAA2B;AACpD,QAAM,CAAC,OAAO,IAAI,SAAS,MAAM,IAAI,IAAY,mBAAmB,IAAI,CAAC,SAAS,UAAU,IAAI,CAAC,CAAC,CAAC;AACnG,QAAM,CAAC,WAAW,YAAY,IAAI,SAAqC,KAAK;AAC5E,QAAM,CAAC,EAAE,cAAc,IAAI,SAAS,CAAC;AAErC,QAAM,cAAc,MAAM,eAAe,CAAC,SAAS,OAAO,CAAC;AAE3D,QAAM,UAAU,CAAC,SAA6B;AAC1C,YAAQ,IAAI,UAAU,IAAI,CAAC;AAC3B,gBAAY;AAAA,EAChB;AAEA,QAAM,aAAa,CAAC,SAA6B;AAC7C,YAAQ,OAAO,UAAU,IAAI,CAAC;AAC9B,gBAAY;AAAA,EAChB;AAEA,QAAM,UAAU,CAAC,SAA6B;AAC1C,WAAO,QAAQ,IAAI,UAAU,IAAI,CAAC;AAAA,EACtC;AAEA,QAAM,QAAQ,MAAM;AAChB,YAAQ,MAAM;AACd,gBAAY;AAAA,EAChB;AAEA,SAAO,CAAC,SAAoD;AAAA,IACxD,QAAQ,IAAI;AAAA,IACZ,MAAM;AACF,mBAAa,KAAK,KAAK;AACvB,UAAI,QAAQ,IAAI,KAAK,KAAK,SAAS,GAAG;AAClC,qBAAa,KAAK;AAClB,cAAM;AACN;AAAA,MACJ;AAEA,UAAI,QAAQ,IAAI,GAAG;AACf,qBAAa,KAAK;AAClB,mBAAW,IAAI;AACf;AAAA,MACJ;AAGA,WAAM,KAAK,SAAS,MAAM,aAAa,MAAO,aAAa,OAAO;AAC9D,gBAAQ,IAAI;AAAA,MAChB,OAAO;AACH,cAAM,IAAI,aAAa,OAAO;AAC9B,mBAAW,KAAK,MAAM,CAAC,CAAC;AACxB,gBAAQ,IAAI;AAAA,MAChB;AAAA,IACJ;AAAA,EACJ;AACJ;AAEA,SAAS,iBAAiB,OAAwD,MAA0B;AACxG,QAAM,eAAe;AAIrB,QAAM,WAAW,SAAS,cAAc,eAAe,KAAK,IAAI,IAAI;AAEpE,MAAI,UAAU;AACV,aAAS,eAAe,EAAC,OAAO,SAAS,QAAQ,UAAS,CAAC;AAAA,EAC/D;AACJ;;;AE7OA,OAAOC,YAAe;AAEtB,SAAQ,aAAY;AACpB,SAAQ,iBAAgB;AAYjB,SAAS,mBAAmB,OAA4B;AAC3D,SAAO,gBAAAC,OAAA,cAAAA,OAAA,gBACH,gBAAAA,OAAA,cAAC,UAAU,YAAV,MACI,MAAM,KACX,GAEC,MAAM,MAAM,IAAI,CAAC,MAAM,UAAU,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MAC/B,KAAK,QAAQ,KAAK;AAAA,MAClB,OAAO,KAAK;AAAA,MACZ,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA;AAAA,EACX,CAAE,CACN;AACJ;AAmBA,IAAM,aAAa;AAAA,EACf,aAAa;AAAA;AAAA,IAET,OAAO,CAAC,EAAC,SAAQ,MAAM,gBAAAA,OAAA,cAAC,SAAI,OAAO;AAAA,MAC/B,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,OAAO;AAAA,MACP,KAAK;AAAA,IACT,KACK,QACL;AAAA,EACJ;AAAA,EACA,OAAO,CAAC,EAAC,UAAU,GAAG,KAAI,MAAM,gBAAAA,OAAA,cAAC,SAAO,GAAG,QACtC,QACL;AACJ;AAEA,SAAS,UAAU,MAAcC,aAAiB;AAC9C,QAAM,QAAQ;AAAA,IACV,UAAUD,OAAM;AAAA,IAChB,MAAMA,OAAM;AAAA,IACZ,KAAKA,OAAM;AAAA,IACX,QAAQA,OAAM;AAAA,IACd,OAAOA,OAAM;AAAA,IACb,MAAMA,OAAM;AAAA,IACZ,GAAGC;AAAA,EACP;AACA,QAAM,KAAK,IAAI,SAAS,GAAG,OAAO,KAAK,KAAK,GAAG,UAAU,IAAI,EAAE;AAC/D,SAAO,GAAG,GAAG,OAAO,OAAO,KAAK,CAAC;AACrC;AAEA,SAAS,cAAc,OAA2B;AAjFlD;AAkFI,QAAM,EAAC,QAAQ,QAAO,IAAI,SAAS;AACnC,QAAM,CAAC,UAAU,SAAS,IAAI,OAAO,KAAK;AAE1C,MAAI;AAEJ,MAAI,OAAO,MAAM,UAAU,YAAY,UAAU,MAAM,OAAO;AAC1D,UAAM,OAAO,MAAM,MAAM;AAEzB,YAAQ,MAAM;AAAA;AAAA,MAEV,KAAK,QAAQ,UAAU,EAAE;AAAA,MACzB;AAAA,IACJ;AAAA,EACJ,OAAO;AACH,YAAQ,MAAM,MAAM;AAAA,EACxB;AAEA,SAAO,gBAAAD,OAAA;AAAA,IAAC,UAAU;AAAA,IAAV;AAAA,MACJ,QAAQ,CAAC,GAAC,WAAM,UAAN,mBAAa;AAAA,MACvB,MAAM,MAAM;AAAA,MACZ,QAAQ;AAAA,MACR,SAAS,MAAM;AACX,kBAAU;AAAA,MACd;AAAA;AAAA,IAEA,gBAAAA,OAAA,cAAC,WAAK;AAAA,MAGF,WAAM,UAAN,mBAAa,WAAU,gBAAAA,OAAA,cAAC,UAAU,SAAV,EAAkB,QAAQ,YAC9C,gBAAAA,OAAA,cAAAA,OAAA,iBAEQ,WAAM,UAAN,mBAAa,IAAI,CAAC,MAAM,UAAU,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QAC/B,KAAK,QAAQ,KAAK;AAAA,QAClB,OAAO,KAAK;AAAA,QACZ,MAAM,KAAK;AAAA,QACX,OAAO,KAAK;AAAA,QACZ,QAAQ,OAAO,IAAI,EAAE,CAAC;AAAA,QACtB,QAAQ,MAAM,SAAS,KAAK;AAAA;AAAA,IAChC,EAER,CACJ;AAAA,EAER;AACJ;;;AJrHA,SAAQ,WAAU;;;AKTlB,OAAOE,YAA2B;AAE3B,SAAS,gBAAgB,KAAU,MAAM,GAAiE;AAC7G,MAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AACzC,WAAOA,OAAM,cAAcA,OAAM,UAAU,EAAC,IAAG,CAAC;AAAA,EACpD;AAEA,QAAM,EAAC,MAAM,MAAK,IAAI,OAAO,CAAC;AAC9B,MAAI,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;AACxD,WAAOA,OAAM,cAAcA,OAAM,UAAU,EAAC,IAAG,CAAC;AAAA,EACpD;AAEA,MAAI,WAA2E,CAAC;AAChF,MAAI,+BAAO,UAAU;AACjB,QAAI,MAAM,QAAQ,MAAM,QAAQ,GAAG;AAC/B,iBAAW,MAAM,SAAS,IAAI,CAAC,OAAY,MAAM,gBAAgB,OAAO,MAAM,CAAC,CAAC,KAAK,CAAC;AAAA,IAC1F,OAAO;AACH,iBAAW,CAAC,gBAAgB,MAAM,UAAU,GAAG,CAAC;AAAA,IACpD;AAAA,EACJ;AAEA,QAAM,eAAe,EAAC,GAAG,OAAO,UAAU,IAAG;AAE7C,SAAOA,OAAM,cAAc,MAAM,YAAY;AACjD;;;ACxBA,SAAQ,eAAAC,oBAAkB;AAI1B,SAAS,cAAc,MAAc;AACjC,MAAI,KAAK,WAAW,GAAG,GAAG;AACtB,WAAO;AAAA,EACX;AAEA,SAAO,IAAI,IAAI;AACnB;AAGO,SAAS,mBAAmB;AAbnC;AAcI,QAAM,WAAW,YAAY;AAC7B,QAAM,WAAWC,aAAY;AAE7B,QAAM,iBAAgB,0BAAS,cAAT,mBAAoB,WAApB,mBAChB,OAAO,UAAQ,KAAK,SADJ,mBAEhB,KAAK,UAAK;AAnBpB,QAAAC;AAmBuB,yBAAc,SAAS,QAAQ,EAAE,WAAW,gBAAcA,MAAA,KAAK,QAAL,gBAAAA,IAAU,UAAS,EAAE,CAAC;AAAA;AAEnG,MAAI,CAAC,eAAe;AAChB,WAAO;AAAA,EACX;AAEA,SAAO,cAAc,OAAO;AAChC;;;ANZA,SAAS,YAAY;AAdrB;AAeI,QAAM,WAAW,YAAY;AAE7B,QAAM,OAAO,gBAAe,0CAAU,YAAV,mBAAmB,IAAI,KAAI,0CAAU,YAAV,mBAAmB,OAAO,iBAAgB,0CAAU,YAAV,mBAAmB,IAAI;AAGxH,SAAO,gBAAAC,OAAA,cAAC,OAAE,MAAK,OACV,IACL;AACJ;AAEA,SAAS,MAAM,EAAC,KAAI,GAAwB;AAzB5C;AA0BI,QAAM,gBAAgB,iBAAiB;AACvC,QAAM,WAAWC,aAAY;AAE7B,QAAM,WAAW,YAAY;AAE7B,QAAM,UAAU,gBAAgB,+CAAe,SAAQ,0CAAU,cAAV,mBAAqB;AAC5E,QAAM,SAAS,mCAAS,KAAK,UAAQ,SAAS,SAAS,WAAW,KAAK,OAAO,EAAE;AAEhF,SAAO,gBAAAD,OAAA;AAAA,IAAC;AAAA;AAAA,MACJ,QAAO,iCAAQ,QAAO;AAAA,MACtB;AAAA,MACA,MAAM,gBAAAA,OAAA,cAAC,eAAS;AAAA,MAChB,UAAU,MAAM;AAAA,MAChB;AAAA;AAAA,KAGI,gDAAU,cAAV,mBAAqB,WAArB,mBAA6B,IAAI,CAAC,MAAM,UAAU;AAC9C,aAAO,gBAAAA,OAAA;AAAA,QAAC,IAAI;AAAA,QAAJ;AAAA,UACJ,KAAK,SAAS,KAAK,OAAO,MAAM,KAAK;AAAA,UACrC,OAAM,6BAAM,QAAO;AAAA,UACnB,OAAO,KAAK;AAAA;AAAA,QAEX,KAAK;AAAA,MACV;AAAA,IACJ;AAAA,EAER;AACJ;AAEA,SAAS,WAAW;AAChB,QAAM,gBAAgB,iBAAiB;AACvC,QAAM,WAAWC,aAAY;AAE7B,MAAI,CAAC,eAAe;AAChB,WAAO;AAAA,EACX;AAGA,QAAM,SAAS,+CAAe,MAAM,SAAS,UAAQ,SAAS,SAAS,WAAW,KAAK,OAAO,EAAE;AAGhG,SAAO,gBAAAD,OAAA;AAAA,IAAC;AAAA;AAAA,MACJ,QAAO,+CAAe,SAAQ;AAAA,MAC9B,QAAO,iCAAQ,QAAO;AAAA,MACtB,UAAU,MAAM;AAAA,MAChB;AAAA;AAAA,IAEC,+CAAe,MAAM,IAAI,CAAC,MAAM,UAAU;AACvC,aAAO,gBAAAA,OAAA,cAAC,OAAO,MAAP,EAAY,OAAO,KAAK,OAAO,IAAI,MAAM,KAAK,OACjD,KAAK,IACV;AAAA,IACJ;AAAA,EACJ;AAEJ;AAOA,SAASE,iBAAgB,OAA6B,MAAc,SAAgB,CAAC,GAAG;AACpF,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,UAAM,OAAO,MAAM,CAAC;AAEpB,QAAI,KAAK,SAAS,MAAM;AACpB,aAAO,CAAC,GAAG,QAAQ,CAAC;AAAA,IACxB;AAEA,QAAI,KAAK,OAAO;AACZ,YAAM,SAASA,iBAAgB,KAAK,OAAO,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC/D,UAAI,QAAQ;AACR,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AAEA,SAAS,gBAAgB,OAA6B;AAzGtD;AA0GI,QAAM,SAAS,iBAAiB;AAEhC,QAAM,WAAW,YAAY;AAE7B,QAAM,eAAc,0BAAS,cAAT,mBAAoB,YAApB,mBAA6B,WAA7B,mBAAqC,IAAI,YAAU;AACnE,QAAI;AAGJ,QAAI,OAAO,OAAO,SAAS,UAAU;AACjC,cAAQ,OAAO,MAAM;AAAA,QACjB,KAAK,iBAAiB;AAClB,iBAAO,gBAAAF,OAAA,cAAC,kBAAY;AACpB;AAAA,QACJ;AAAA,QAEA,KAAK,kBAAkB;AACnB,iBAAO,gBAAAA,OAAA,cAAC,mBAAa;AACrB;AAAA,QACJ;AAAA,QAEA,KAAK,oBAAoB;AACrB,iBAAO,gBAAAA,OAAA,cAAC,qBAAe;AACvB;AAAA,QACJ;AAAA,QAEA,KAAK,YAAY;AACb,iBAAO,gBAAAA,OAAA,cAAC,aAAO;AACf;AAAA,QACJ;AAAA,QAEA,SAAS;AACL,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ,OAAO;AACH,aAAO,eAAe,OAAO,IAAI,IAAI,OAAO,OAAO,gBAAgB,OAAO,IAAI;AAAA,IAClF;AAEA,WAAO,gBAAAA,OAAA,cAACG,WAAU,YAAV,EAAqB,MAAM,OAAO,KAAK,QAC1C,OAAO,IACZ;AAAA,EACJ;AAEA,QAAM,WAAWF,aAAY;AAC7B,QAAM,qBAA4B,CAAC;AACnC,SAAO,QAAQ,WAAS;AACpB,UAAM,eAAeC,iBAAgB,MAAM,OAAO,SAAS,QAAQ,KAAK,CAAC;AAEzE,iBAAa,OAAO,CAAC,KAAK,UAAU;AAChC,yBAAmB,KAAK,IAAI,KAAK,CAAC;AAClC,UAAI,KAAK,EAAE,SAAS;AACpB,aAAO,IAAI,KAAK,EAAE;AAAA,IACtB,GAAG,MAAM,KAAK;AAEd,WAAO;AAAA,EACX,CAAC;AAED,SAAO,gBAAAF,OAAA;AAAA,IAAC;AAAA;AAAA,MACJ,kBAAkB,MAAM;AAAA,MACxB,mBAAmB,MAAM;AAAA,MACzB;AAAA;AAAA,IAEA,gBAAAA,OAAA,cAACG,YAAA,EAAU,aAAa,eAAe,eAE/B,iCAAQ,IAAI,CAAC,OAAO,UAAU,gBAAAH,OAAA;AAAA,MAAC;AAAA;AAAA,QAC3B,KAAK,QAAQ,MAAM;AAAA,QAClB,GAAG;AAAA;AAAA,IACR,EAER;AAAA,EACJ;AACJ;AAOA,SAAS,QAAQ;AAxLjB;AAyLI,QAAM,MAAM,OAAO;AAEnB,MAAI,CAAC,KAAK;AACN,WAAO;AAAA,EACX;AAEA,QAAM,UAAqB,CAAC;AAE5B,QAAM,UAAU,CAACI,SAAiB;AAC9B,QAAI,CAACA,MAAK;AACN;AAAA,IACJ;AAEA,IAAAA,KAAI,QAAQ,UAAQ;AAChB,cAAQ,KAAK;AAAA,QACT,OAAO,KAAK;AAAA,QACZ,OAAO,KAAK;AAAA,MAChB,CAAC;AAED,cAAQ,KAAK,QAAQ;AAAA,IACzB,CAAC;AAAA,EACL;AAEA,UAAQ,GAAG;AAGX,QAAM,WAAW,QAAQ,OAAO,UAAQ,KAAK,UAAU,CAAC;AAExD,QAAM,WAAWH,aAAY;AAG7B,QAAM,eAAe,SAAS,OAAO,SAAS,KAAK,QAAQ,KAAK,EAAE,KAAI,cAAS,CAAC,MAAV,mBAAa;AAEnF,SAAO,gBAAAD,OAAA,cAAC,OAAI,gBAEJ,SAAS,IAAI,CAAC,MAAM,UAAU,gBAAAA,OAAA;AAAA,IAAC,IAAI;AAAA,IAAJ;AAAA,MAC3B,KAAK,QAAQ,KAAK,QAAQ,KAAK;AAAA,MAC/B,OAAO,KAAK;AAAA;AAAA,IAEX,KAAK;AAAA,EACV,CAAW,CAEnB;AACJ;AAEA,SAAS,gBAAgB;AACrB,QAAM,cAAc,eAAe;AAEnC,SAAO,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACJ,OAAO,eAAe,CAAC;AAAA;AAAA,EAC3B;AACJ;AAEA,SAAS,aAAa;AAClB,QAAM,WAAW,YAAY;AAE7B,OAAI,qCAAU,UAAQ,qCAAU,OAAM;AAClC,WAAO,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACJ,MAAM,SAAS;AAAA,QACf,MAAM,SAAS;AAAA;AAAA,IACnB;AAAA,EACJ;AAEA,SAAO;AACX;AAGA,SAAS,eAAe;AACpB,SAAO,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACJ,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,QAAO;AAAA;AAAA,IAEP,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACG,UAAS;AAAA,QACT,GAAE;AAAA,QACF,UAAS;AAAA;AAAA,IACb;AAAA,EACJ;AACJ;AAEA,SAAS,gBAAgB;AACrB,SAAO,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACJ,OAAM;AAAA,MACN,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,QAAO;AAAA;AAAA,IAEP,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACG,UAAS;AAAA,QACT,GAAE;AAAA,QACF,UAAS;AAAA;AAAA,IACb;AAAA,EACJ;AACJ;AAGA,SAAS,kBAAkB;AACvB,SAAO,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACJ,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA;AAAA,IAEP,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QAAK,aAAU;AAAA,QAAU,aAAU;AAAA,QAC9B,GAAE;AAAA;AAAA,IACR;AAAA,IACA,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QAAK,aAAU;AAAA,QAAU,aAAU;AAAA,QAC9B,GAAE;AAAA;AAAA,IACR;AAAA,IACA,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACG,GAAE;AAAA;AAAA,IACN;AAAA,EACJ;AACJ;AAEA,SAAS,UAAU;AACf,SAAO,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACJ,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA;AAAA,IAEP,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACG,GAAE;AAAA,QACF,MAAK;AAAA,QACL,UAAS;AAAA,QACT,UAAS;AAAA;AAAA,IACb;AAAA,EACJ;AACJ;","names":["React","useLocation","UISidebar","React","createContext","useContext","createContext","createContext","React","useContext","item","React","React","components","React","useLocation","useLocation","_a","React","useLocation","recursiveSearch","UISidebar","toc"]}
package/package.json CHANGED
@@ -1,42 +1,43 @@
1
1
  {
2
2
  "name": "@xyd-js/framework",
3
- "version": "0.1.0-xyd.2",
3
+ "version": "0.1.0-xyd.21",
4
4
  "description": "",
5
+ "type": "module",
5
6
  "main": "dist/index.js",
6
- "module": "dist/index.mjs",
7
7
  "types": "dist/index.d.ts",
8
8
  "exports": {
9
9
  "./package.json": "./package.json",
10
10
  "./index.css": "./dist/index.css",
11
11
  ".": {
12
- "require": "./dist/index.js",
13
- "import": "./dist/index.mjs"
12
+ "import": "./dist/index.js"
14
13
  },
15
14
  "./hydration": {
16
- "require": "./dist/hydration.js",
17
- "import": "./dist/hydration.mjs"
15
+ "import": "./dist/hydration.js"
18
16
  },
19
17
  "./react": {
20
- "require": "./dist/react.js",
21
- "import": "./dist/react.mjs"
18
+ "import": "./dist/react.js"
22
19
  }
23
20
  },
21
+ "files": [
22
+ "package.json",
23
+ "dist"
24
+ ],
24
25
  "author": "",
25
- "dependencies": {
26
- "isbot": "^4.4.0",
27
- "react": "^18.3.1",
28
- "react-dom": "^18.3.1",
29
- "remark-gfm": "^4.0.0",
30
- "vite-plugin-mdx": "^3.6.0",
31
- "zod": "^3.23.8",
32
- "@xyd-js/content": "0.1.0-xyd.2",
33
- "@xyd-js/core": "0.1.0-xyd.1",
34
- "@xyd-js/ui": "0.1.0-xyd.0"
26
+ "dependencies": {},
27
+ "peerDependencies": {
28
+ "react": "^19.0.0",
29
+ "react-dom": "^19.0.0",
30
+ "react-router": "^7.1.1",
31
+ "@xyd-js/ui": "0.1.0-xyd.7",
32
+ "@xyd-js/components": "0.1.0-xyd.1",
33
+ "@xyd-js/core": "0.1.0-xyd.4",
34
+ "@xyd-js/content": "0.1.0-xyd.5"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@babel/preset-react": "^7.24.7",
38
38
  "@mdx-js/rollup": "^3.0.1",
39
39
  "@types/node": "22.5.5",
40
+ "rimraf": "^3.0.2",
40
41
  "autoprefixer": "^10.4.20",
41
42
  "postcss": "^8.4.47",
42
43
  "rehype-pretty-code": "^0.14.0",
@@ -1,11 +0,0 @@
1
- import { Settings } from '@xyd-js/core';
2
- import { IBreadcrumb, INavLinks } from '@xyd-js/ui';
3
- import { F as FwSidebarGroupProps } from './sidebar-Dwf54qYp.mjs';
4
-
5
- declare function mapSettingsToProps(settings: Settings, slug: string): Promise<{
6
- groups: FwSidebarGroupProps[];
7
- breadcrumbs: IBreadcrumb[];
8
- navlinks?: INavLinks;
9
- }>;
10
-
11
- export { mapSettingsToProps };