diff --git a/docs/src/app/(home)/site-nav.tsx b/docs/src/app/(home)/site-nav.tsx index 57cc809c..b173bc77 100644 --- a/docs/src/app/(home)/site-nav.tsx +++ b/docs/src/app/(home)/site-nav.tsx @@ -1,13 +1,14 @@ 'use client'; -import { Menu, Star, X } from 'lucide-react'; +import { BookOpen, Menu, Star, X } from 'lucide-react'; import Link from 'next/link'; import type { FC, SVGProps } from 'react'; -import { useEffect, useRef, useState } from 'react'; +import { useEffect, useState } from 'react'; import { DiscordIcon } from '@/components/icons/discord'; import { GitHubIcon } from '@/components/icons/github'; import { XIcon } from '@/components/icons/x'; import { OkWordmark } from '@/components/ok-wordmark'; +import { Sheet, SheetClose, SheetContent, SheetTitle, SheetTrigger } from '@/components/ui/sheet'; import { DOWNLOAD_ROUTE } from '@/lib/site'; import { MarketingButton } from './marketing-button'; @@ -17,15 +18,22 @@ type NavLink = { external: boolean; icon?: FC>; iconOnly?: boolean; + desktopIconHidden?: boolean; showStars?: boolean; }; -const docsLink: NavLink = { href: '/docs', label: 'Docs', external: false }; +const docsLink: NavLink = { + href: '/docs', + label: 'Docs', + external: false, + icon: BookOpen, + desktopIconHidden: true, +}; const socialLinks: NavLink[] = [ { href: 'https://x.com/OpenKnowledgeAI', - label: 'X', + label: 'X (Twitter)', external: true, icon: XIcon, iconOnly: true, @@ -49,8 +57,6 @@ const githubLink: NavLink = { const mobileLinks: NavLink[] = [docsLink, ...socialLinks, githubLink]; -const FOCUSABLE_SELECTOR = 'a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])'; - const starFormatter = new Intl.NumberFormat('en-US', { notation: 'compact', maximumFractionDigits: 1, @@ -58,31 +64,44 @@ const starFormatter = new Intl.NumberFormat('en-US', { const fullStarFormatter = new Intl.NumberFormat('en-US'); -function NavLinkContent({ link }: { link: NavLink }) { +function NavLinkContent({ link, surface }: { link: NavLink; surface: 'desktop' | 'mobile' }) { const Icon = link.icon; + const showIcon = !!Icon && (surface === 'mobile' || !link.desktopIconHidden); + const showLabel = surface === 'mobile' || !link.iconOnly; return ( <> - {Icon ?