UNPKG

fumadocs-ui

Version:

The Radix UI version of Fumadocs UI

38 lines (37 loc) 1.37 kB
"use client"; import { isLinkItemActive } from "../../layouts/shared/index.js"; import { usePathname } from "fumadocs-core/framework"; import { jsx, jsxs } from "react/jsx-runtime"; //#region src/components/sidebar/link-item.tsx function createLinkItemRenderer({ SidebarFolder, SidebarFolderContent, SidebarFolderLink, SidebarFolderTrigger, SidebarItem }) { /** * Render sidebar items from page tree */ return function SidebarLinkItem({ item, ...props }) { const pathname = usePathname(); const active = isLinkItemActive(item, pathname); if (item.type === "custom") return /* @__PURE__ */ jsx("div", { ...props, children: item.children }); if (item.type === "menu") return /* @__PURE__ */ jsxs(SidebarFolder, { ...props, children: [item.url ? /* @__PURE__ */ jsxs(SidebarFolderLink, { href: item.url, active, external: item.external, children: [item.icon, item.text] }) : /* @__PURE__ */ jsxs(SidebarFolderTrigger, { children: [item.icon, item.text] }), /* @__PURE__ */ jsx(SidebarFolderContent, { children: item.items.map((child, i) => /* @__PURE__ */ jsx(SidebarLinkItem, { item: child }, i)) })] }); return /* @__PURE__ */ jsx(SidebarItem, { href: item.url, icon: item.icon, external: item.external, active, ...props, children: item.text }); }; } //#endregion export { createLinkItemRenderer };