"use client"; import { AsideLink } from "@/components/ui/aside-link"; import { cn } from "@/lib/utils"; import { AnimatePresence, motion, MotionConfig } from "framer-motion"; import { useSearchContext } from "fumadocs-ui/provider"; import { ChevronDownIcon, Search } from "lucide-react"; import { usePathname, useRouter } from "next/navigation"; import { Suspense, useEffect, useState } from "react"; import { contents, examples } from "./sidebar-content"; import { Badge } from "./ui/badge"; import { Select, SelectContent, SelectItem, SelectTrigger } from "./ui/select"; export default function ArticleLayout() { const [currentOpen, setCurrentOpen] = useState(0); const { setOpenSearch } = useSearchContext(); const pathname = usePathname(); function getDefaultValue() { const defaultValue = contents.findIndex((item) => item.list.some((listItem) => listItem.href === pathname), ); return defaultValue === -1 ? 0 : defaultValue; } const [group, setGroup] = useState("docs"); useEffect(() => { const grp = pathname.includes("examples") ? "examples" : "docs"; setGroup(grp); setCurrentOpen(getDefaultValue()); }, [pathname]); const cts = group === "docs" ? contents : examples; return (
); } function NewBadge({ isSelected }: { isSelected?: boolean }) { return (
New
); } const tabs = [ { value: "docs", icon: ( ), title: "Docs", description: "get started, concepts, and plugins", }, { value: "examples", icon: ( ), title: "Examples", description: "examples and guides", }, ]; function SidebarTab({ group, setGroup, }: { group: string; setGroup: (group: string) => void; }) { const router = useRouter(); const selected = tabs.find((tab) => tab.value === group); return ( ); }