diff --git a/resources/js/pages/documentation/show.tsx b/resources/js/pages/documentation/show.tsx index 9e8eab70..28ed14f8 100644 --- a/resources/js/pages/documentation/show.tsx +++ b/resources/js/pages/documentation/show.tsx @@ -1,7 +1,14 @@ +import { + Sheet, + SheetContent, + SheetDescription, + SheetHeader, + SheetTitle, +} from '@/components/ui/sheet'; import { type SharedData } from '@/types'; import { __ } from '@/utils/i18n'; import { Head, Link, usePage } from '@inertiajs/react'; -import { ArrowUpIcon } from 'lucide-react'; +import { ArrowUpIcon, MenuIcon } from 'lucide-react'; import { useEffect, useRef, useState } from 'react'; type DocumentationDocument = { @@ -134,7 +141,7 @@ function MermaidDocumentationArticle({ html }: { html: string }) { return (
); @@ -146,6 +153,26 @@ export default function DocumentationShow({ languages, }: DocumentationShowProps) { const { appUrl } = usePage().props; + const [showScrollTop, setShowScrollTop] = useState(false); + const [mobileMenuOpen, setMobileMenuOpen] = useState(false); + + useEffect(() => { + const updateScrollTopVisibility = () => { + setShowScrollTop(window.scrollY > 480); + }; + + updateScrollTopVisibility(); + window.addEventListener('scroll', updateScrollTopVisibility, { + passive: true, + }); + + return () => + window.removeEventListener('scroll', updateScrollTopVisibility); + }, []); + + const scrollToTop = () => { + window.scrollTo({ top: 0, behavior: 'smooth' }); + }; return ( <> @@ -170,7 +197,7 @@ export default function DocumentationShow({
-
+ + + + + + + {__('Documentation')} + + {__('Choose a page or language.')} + + + +
+ setMobileMenuOpen(false)} + className="text-sm text-[#706f6c] hover:text-[#1b1b18] dark:text-[#A1A09A] dark:hover:text-[#EDEDEC]" + > + {__('\u2190 Back to home')} + + +
+ {languages.map((language) => ( + setMobileMenuOpen(false)} + className={ + language.active + ? 'rounded-full bg-[#1b1b18] px-3 py-1 text-xs font-medium text-white dark:bg-[#EDEDEC] dark:text-[#1b1b18]' + : 'rounded-full border border-black/10 px-3 py-1 text-xs font-medium text-[#706f6c] hover:text-[#1b1b18] dark:border-white/10 dark:text-[#A1A09A] dark:hover:text-[#EDEDEC]' + } + aria-current={ + language.active ? 'true' : undefined + } + > + {language.label} + + ))} +
+ + +
+
+
+ +
);