import { Binoculars, Book, CircleHelp, Database, Gauge, Key, KeyRound, LucideAArrowDown, LucideIcon, Mail, Mailbox, Phone, ScanFace, ShieldCheck, UserCircle, Users2, UserSquare2, } from "lucide-react"; import { ReactNode, SVGProps } from "react"; import { Icons } from "./icons"; import { PageTree } from "fumadocs-core/server"; interface Content { title: string; href?: string; Icon: ((props?: SVGProps) => ReactNode) | LucideIcon; isNew?: boolean; list: { title: string; href: string; icon: ((props?: SVGProps) => ReactNode) | LucideIcon; group?: boolean; isNew?: boolean; }[]; } export function getPageTree(): PageTree.Root { return { $id: "root", name: "docs", children: [ { type: "folder", root: true, name: "Docs", description: "get started, concepts, and plugins.", children: contents.map(contentToPageTree), }, { type: "folder", root: true, name: "Examples", description: "exmaples and guides.", children: examples.map(contentToPageTree), }, ], }; } function contentToPageTree(content: Content): PageTree.Folder { return { type: "folder", icon: , name: content.title, index: content.href ? { icon: , name: content.title, type: "page", url: content.href, } : undefined, children: content.list.map((item) => ({ type: "page", url: item.href, name: item.title, icon: , })), }; } export const contents: Content[] = [ { title: "Get Started", Icon: () => ( ), list: [ { title: "Introduction", href: "/docs/introduction", icon: () => ( ), }, { title: "Comparison", href: "/docs/comparison", icon: () => ( ), }, { title: "Installation", href: "/docs/installation", icon: () => ( ), }, { title: "Basic Usage", href: "/docs/basic-usage", icon: () => ( ), }, ], }, { title: "Concepts", list: [ { href: "/docs/concepts/api", title: "API", icon: () => ( ), }, { title: "CLI", icon: () => ( ), href: "/docs/concepts/cli", }, { title: "Client", href: "/docs/concepts/client", icon: () => ( ), }, { title: "Cookies", href: "/docs/concepts/cookies", icon: () => ( ), }, { title: "Database", icon: (props?: SVGProps) => ( ), href: "/docs/concepts/database", }, { href: "/docs/concepts/email", title: "Email", icon: (props?: SVGProps) => ( ), }, { href: "/docs/concepts/hooks", title: "Hooks", icon: (props?: SVGProps) => ( ), }, { href: "/docs/concepts/plugins", title: "Plugins", icon: (props?: SVGProps) => ( ), }, { title: "OAuth", href: "/docs/concepts/oauth", icon: (props?: SVGProps) => ( ), }, { title: "Rate Limit", icon: () => { return ( ); }, href: "/docs/concepts/rate-limit", }, { title: "Sessions", href: "/docs/concepts/session-management", icon: () => ( ), }, { title: "TypeScript", href: "/docs/concepts/typescript", icon: () => ( ), }, { title: "Users & Accounts", href: "/docs/concepts/users-accounts", icon: () => ( ), }, ], Icon: () => ( ), }, { title: "Authentication", Icon: () => ( ), list: [ { title: "Email & Password", href: "/docs/authentication/email-password", icon: () => ( ), }, { title: "Social Sign-On", group: true, icon: LucideAArrowDown, href: "", }, { title: "Apple", href: "/docs/authentication/apple", icon: () => ( ), }, { title: "Atlassian", href: "/docs/authentication/atlassian", isNew: true, icon: () => ( ), }, { title: "Cognito", href: "/docs/authentication/cognito", isNew: true, icon: () => ( ), }, { title: "Discord", href: "/docs/authentication/discord", icon: () => ( ), }, { title: "Facebook", href: "/docs/authentication/facebook", icon: () => ( ), }, { title: "Figma", href: "/docs/authentication/figma", isNew: true, icon: () => ( ), }, { title: "GitHub", href: "/docs/authentication/github", icon: () => ( ), }, { title: "Google", href: "/docs/authentication/google", icon: () => ( ), }, { title: "LINE", href: "/docs/authentication/line", isNew: true, icon: () => ( ), }, { title: "Hugging Face", href: "/docs/authentication/huggingface", icon: () => ( ), }, { title: "Kakao", isNew: true, href: "/docs/authentication/kakao", icon: (props?: SVGProps) => ( ), }, { title: "Kick", href: "/docs/authentication/kick", icon: () => ( ), }, { title: "Microsoft", href: "/docs/authentication/microsoft", icon: () => ( ), }, { title: "PayPal", href: "/docs/authentication/paypal", isNew: true, icon: () => ( ), }, { title: "Salesforce", href: "/docs/authentication/salesforce", isNew: true, icon: () => ( ), }, { title: "Slack", href: "/docs/authentication/slack", icon: () => ( ), }, { title: "Notion", href: "/docs/authentication/notion", icon: () => ( ), }, { title: "Naver", href: "/docs/authentication/naver", isNew: true, icon: () => ( ), }, { title: "Tiktok", href: "/docs/authentication/tiktok", icon: () => ( ), }, { title: "Twitch", href: "/docs/authentication/twitch", icon: () => ( ), }, { title: "Twitter (X)", href: "/docs/authentication/twitter", icon: () => ( ), }, { title: "Dropbox", href: "/docs/authentication/dropbox", icon: () => ( ), }, { title: "Linear", href: "/docs/authentication/linear", isNew: true, icon: () => ( ), }, { title: "LinkedIn", href: "/docs/authentication/linkedin", icon: () => ( ), }, { title: "GitLab", href: "/docs/authentication/gitlab", icon: () => ( ), }, { title: "Reddit", href: "/docs/authentication/reddit", icon: () => ( ), }, { title: "Roblox", href: "/docs/authentication/roblox", icon: () => ( ), }, { title: "Spotify", href: "/docs/authentication/spotify", icon: () => ( ), }, { title: "VK", href: "/docs/authentication/vk", icon: () => ( ), }, { title: "Zoom", href: "/docs/authentication/zoom", icon: (props?: SVGProps) => ( ), }, { title: "Others", group: true, icon: () => null, href: "", }, { title: "Other Social Providers", href: "/docs/authentication/other-social-providers", icon: () => ( ), }, ], }, { title: "Databases", Icon: () => ( ), list: [ { title: "MySQL", href: "/docs/adapters/mysql", icon: () => ( ), }, { title: "SQLite", href: "/docs/adapters/sqlite", icon: () => ( ), }, { title: "PostgreSQL", href: "/docs/adapters/postgresql", icon: () => ( ), }, { title: "MS SQL", href: "/docs/adapters/mssql", icon: () => ( ), }, { title: "Other Relational Databases", href: "/docs/adapters/other-relational-databases", icon: () => , }, { group: true, title: "Adapters", href: "", icon: () => , }, { title: "Drizzle", href: "/docs/adapters/drizzle", icon: () => ( ), }, { title: "Prisma", href: "/docs/adapters/prisma", icon: () => ( ), }, { title: "MongoDB", href: "/docs/adapters/mongo", icon: () => ( ), }, { group: true, title: "Others", href: "", icon: () => , }, { title: "Community Adapters", href: "/docs/adapters/community-adapters", icon: () => ( ), }, ], }, { title: "Integrations", Icon: () => ( ), list: [ { group: true, title: "Full Stack", href: "", icon: LucideAArrowDown, }, { title: "Astro", icon: Icons.astro, href: "/docs/integrations/astro", }, { title: "Remix", icon: Icons.remix, href: "/docs/integrations/remix", }, { title: "Next", icon: Icons.nextJS, href: "/docs/integrations/next", }, { title: "Nuxt", icon: Icons.nuxt, href: "/docs/integrations/nuxt", }, { title: "SvelteKit", icon: Icons.svelteKit, href: "/docs/integrations/svelte-kit", }, { title: "SolidStart", icon: Icons.solidStart, href: "/docs/integrations/solid-start", }, { title: "TanStack Start", icon: Icons.tanstack, href: "/docs/integrations/tanstack", }, { group: true, title: "Backend", href: "", icon: LucideAArrowDown, }, { title: "Hono", icon: Icons.hono, href: "/docs/integrations/hono", }, { title: "Fastify", icon: Icons.fastify, href: "/docs/integrations/fastify", }, { title: "Express", icon: Icons.express, href: "/docs/integrations/express", }, { title: "Elysia", icon: Icons.elysia, href: "/docs/integrations/elysia", }, { title: "Nitro", icon: Icons.nitro, href: "/docs/integrations/nitro", }, { title: "NestJS", icon: Icons.nestJS, href: "/docs/integrations/nestjs", }, { title: "Convex", icon: Icons.convex, href: "/docs/integrations/convex", }, { group: true, title: "Mobile & Desktop", href: "", icon: LucideAArrowDown, }, { title: "Expo", icon: Icons.expo, href: "/docs/integrations/expo", }, { title: "Lynx", icon: Icons.lynx, href: "/docs/integrations/lynx", }, ], }, { title: "Plugins", Icon: () => ( ), list: [ { title: "Authentication", group: true, href: "", icon: () => , }, { title: "Two Factor", icon: () => , href: "/docs/plugins/2fa", }, { title: "Username", icon: () => , href: "/docs/plugins/username", }, { title: "Anonymous", icon: () => , href: "/docs/plugins/anonymous", }, { title: "Phone Number", icon: () => , href: "/docs/plugins/phone-number", }, { title: "Magic Link", href: "/docs/plugins/magic-link", icon: () => , }, { title: "Email OTP", href: "/docs/plugins/email-otp", icon: () => , }, { title: "Passkey", href: "/docs/plugins/passkey", icon: () => ( ), }, { title: "Generic OAuth", href: "/docs/plugins/generic-oauth", icon: () => ( ), }, { title: "One Tap", href: "/docs/plugins/one-tap", icon: () => ( ), }, { title: "Sign In With Ethereum", href: "/docs/plugins/siwe", icon: () => ( ), }, { title: "Authorization", group: true, href: "", icon: () => , }, { title: "Admin", href: "/docs/plugins/admin", icon: () => ( ), }, { title: "API Key", href: "/docs/plugins/api-key", icon: () => , }, { title: "MCP", icon: () => ( ), href: "/docs/plugins/mcp", }, { title: "Organization", icon: () => , href: "/docs/plugins/organization", }, { title: "Enterprise", group: true, href: "", icon: () => , }, { title: "OIDC Provider", href: "/docs/plugins/oidc-provider", icon: () => ( ), }, { title: "SSO", icon: () => ( ), href: "/docs/plugins/sso", }, { title: "Utility", group: true, href: "", icon: () => , }, { title: "Bearer", icon: () => , href: "/docs/plugins/bearer", }, { title: "Device Authorization", icon: () => ( ), href: "/docs/plugins/device-authorization", isNew: true, }, { title: "Captcha", href: "/docs/plugins/captcha", icon: () => ( ), }, { title: "Have I Been Pwned", href: "/docs/plugins/have-i-been-pwned", icon: () =>

';--

, }, { title: "Last Login Method", href: "/docs/plugins/last-login-method", icon: () => ( ), isNew: true, }, { title: "Multi Session", icon: () => ( ), href: "/docs/plugins/multi-session", }, { title: "OAuth Proxy", href: "/docs/plugins/oauth-proxy", icon: () => ( ), }, { title: "One-Time Token", href: "/docs/plugins/one-time-token", icon: () => ( ), }, { title: "Open API", href: "/docs/plugins/open-api", icon: () => ( ), }, { title: "JWT", icon: () => ( ), href: "/docs/plugins/jwt", }, { title: "3rd party", group: true, href: "", icon: () => , }, { title: "Stripe", href: "/docs/plugins/stripe", icon: () => ( ), }, { title: "Polar", href: "/docs/plugins/polar", icon: () => ( ), }, { title: "Autumn Billing", href: "/docs/plugins/autumn", icon: () => ( ), }, { title: "Dodo Payments", href: "/docs/plugins/dodopayments", icon: () => ( ), }, { title: "Dub", href: "/docs/plugins/dub", icon: () => ( ), }, { title: "Community Plugins", href: "/docs/plugins/community-plugins", icon: () => ( ), }, ], }, { title: "Guides", href: "/docs/guides", Icon: () => ( ), list: [ { title: "Next Auth Migration Guide", href: "/docs/guides/next-auth-migration-guide", icon: () => ( ), }, { title: "Supabase Migration Guide", href: "/docs/guides/supabase-migration-guide", icon: () => ( ), }, { title: "Clerk Migration Guide", href: "/docs/guides/clerk-migration-guide", icon: () => ( ), }, { title: "Auth0 Migration Guide", href: "/docs/guides/auth0-migration-guide", icon: () => ( ), }, { title: "Create Your First Plugin", href: "/docs/guides/your-first-plugin", icon: () => ( ), }, { title: "Create a Database Adapter", href: "/docs/guides/create-a-db-adapter", icon: () => , }, { title: "Browser Extension Guide", href: "/docs/guides/browser-extension-guide", icon: () => ( ), }, { title: "SAML SSO with Okta", href: "/docs/guides/saml-sso-with-okta", icon: () => ( ), }, { title: "Optimize for Performance", href: "/docs/guides/optimizing-for-performance", icon: () => , }, ], }, { title: "Reference", Icon: () => ( ), list: [ { title: "Options", href: "/docs/reference/options", icon: () => ( ), }, { title: "Contributing", href: "/docs/reference/contributing", icon: () => ( ), }, { title: "Resources", href: "/docs/reference/resources", icon: () => , }, { title: "Security", href: "/docs/reference/security", icon: () => , }, { title: "Telemetry", href: "/docs/reference/telemetry", icon: () => , }, { title: "FAQ", href: "/docs/reference/faq", icon: () => , }, ], }, ]; export const examples: Content[] = [ { title: "Examples", href: "/docs/examples/next", Icon: () => ( ), list: [ { title: "Astro + SolidJs", href: "/docs/examples/astro", icon: Icons.astro, }, { title: "Remix", href: "/docs/examples/remix", icon: Icons.remix, }, { title: "Next.js", href: "/docs/examples/next-js", icon: Icons.nextJS, }, { title: "Nuxt", href: "/docs/examples/nuxt", icon: Icons.nuxt, }, { title: "SvelteKit", href: "/docs/examples/svelte-kit", icon: Icons.svelteKit, }, ], }, ];