import { useLocation, useSubmit } from "react-router"; import { useTranslation } from "react-i18next"; import { KnowledgeBaseDto } from "../../dtos/KnowledgeBaseDto"; import { KbCategoryDto } from "../../dtos/KbCategoryDto"; import clsx from "clsx"; import { MobileNav } from "~/components/ui/docs/DocsMobileNav"; import { Fragment } from "react"; import RightIcon from "~/components/ui/icons/RightIcon"; import { ScrollArea } from "~/components/ui/scroll-area"; import { SideBarItem } from "~/application/sidebar/SidebarItem"; import { KbArticleDto } from "../../dtos/KbArticleDto"; import KbArticle from "../articles/KbArticle"; import KnowledgeBaseUtils from "../../utils/KnowledgeBaseUtils"; import KbDocsHeader from "./KbDocsHeader"; import KbFeaturedArticles from "../KbFeaturedArticles"; import KbCategories from "../categories/KbCategories"; import { DocsSidebarNav } from "~/components/ui/docs/DocsSidebarNav"; export default function KbDocsLayout({ kb, categories, featured, article, }: { kb: KnowledgeBaseDto; categories: KbCategoryDto[]; featured?: KbArticleDto[]; article?: { article: KbArticleDto; category: KbCategoryDto; userState: { hasThumbsUp: boolean; hasThumbsDown: boolean; }; } | null; }) { // const outlet = useOutlet(); const location = useLocation(); const { t } = useTranslation(); const items: SideBarItem[] = []; categories.forEach((category) => { const sections = KnowledgeBaseUtils.getCategoryArticlesBySections({ kb, category }); items.push({ title: category.title, path: category.href, items: [{ title: t("shared.overview"), path: category.href }], }); let categoryItem = items[items.length - 1]; sections.forEach((section) => { if (section.articles.length === 0) return; if (section.section) { items.push({ title: section.section.title, path: "", items: [], }); categoryItem = items[items.length - 1]; } section.articles.forEach((article) => { categoryItem.items?.push({ title: article.title, path: article.href, }); }); }); }); const currentItem = () => { const findRecursive = (items: SideBarItem[]): SideBarItem | undefined => { for (const item of items) { if (item.path && item.title && item.path === location.pathname) return item; if (item.items) { const found = findRecursive(item.items); if (found) return found; } } }; return findRecursive(items); }; return (