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.3
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
)
}