import { useEffect, useState } from 'react'; import { Link, router, usePage } from '@inertiajs/react'; import { BadgeCheck, ChevronsUpDown, Star, History, ChevronDown, LogOut, Search, Book, TableOfContents, House, HardDriveDownload, Moon, Sun, Layers, SquarePower } from 'lucide-react'; import { Avatar, AvatarFallback } from '@/components/ui/avatar'; import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible'; import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'; import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarMenu, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem } from '@/components/ui/sidebar'; export function AppSidebar({ auth }) { const { tags } = usePage().props; const [search, setSearch] = useState(''); const searchOnSubmitHandler = (e) => { e.preventDefault(); // Visit the search page router.get(route('comics.search', [search])); } const SidebarItem = (props) => { const searchParams = new URL(window.location).searchParams; const isActive = (!searchParams.has(props.query) && props.name === 'All') || (searchParams.has(props.query) && searchParams.get(props.query) === props.path_word); // To current, replace if (searchParams.has(props.query)) { searchParams.set(props.query, props.path_word); } else { searchParams.set(props.query, props.path_word); } return ( setSearch("") }> { props.name } { props.count && { props.count } } ); }; const getTheme = () => { if (localStorage.getItem('theme')) { return localStorage.getItem('theme'); } return 'light'; } const themeButtonOnclickHandler = () => { const t = (theme === 'light') ? 'dark' : 'light'; // Set local storage localStorage.setItem('theme', t); setTheme(t); setThemeInHtml(t); } const setThemeInHtml = (theme) => { const root = window.document.documentElement; root.classList.remove("light", "dark"); root.classList.add(theme); } const [theme, setTheme] = useState(getTheme()); useEffect(() => { setTheme(getTheme()); setThemeInHtml(getTheme()); }, []); return (
Comic 0.1.3A
searchOnSubmitHandler(e) }> setSearch(e.target.value) } id="search" placeholder="Search" className="pl-8" />
Others Index Installation Updates and notes Tags { tags.theme.map(item => ) } Region { tags.top.map(item => ) }
{ auth.user.name.slice(0, 1).toLocaleUpperCase() }
{ auth.user.name }
{ auth.user.name.slice(0, 1).toLocaleUpperCase() }
{ auth.user.name }
History On themeButtonOnclickHandler() }> <>{ theme === 'dark' ? () : () } Toggle theme Queues Profile Favourites History Log out
) }