import Icon from "@mdi/react";
import { BookPlus, Calendar, ChevronsUpDown, Home, Inbox, ListTodo, LogOut, Monitor, Moon, Palette, PanelLeft, Plus, Search, Sun, Waypoints } from "lucide-react";
import { Button } from "~/components/ui/button";
import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarMenu, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, useSidebar } from "~/components/ui/sidebar";
import { type ColorName, colors } from "~/lib/color";
import { type IconName, icons } from "~/lib/icon";
import { NewNoteDialog } from "~/components/note/new_note_dialog";
import { NewCollectionDialog } from "~/components/collection/new_collection_dialog";
import { cn } from "~/lib/utils";
import { useCollectionNotesMetadata, useCollections } from "~/hooks/use-metadata";
import { useIsMobile } from "~/hooks/use-mobile";
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "~/components/ui/dropdown-menu";
import { UserAvatar } from "~/components/user/user_avatar";
import { Link } from "@tanstack/react-router";
import { useTheme } from "~/hooks/use-theme";
import { ToggleGroup, ToggleGroupItem } from "./ui/toggle-group";
export function AppSidebar() {
const collections = useCollections();
return (
} />
} />
} />
} />
} />
Collections
{collections.map((collection) => ())}
);
}
type NavButtonProps = {
href: string;
label: string;
icon?: React.ReactNode;
children?: React.ReactNode;
}
function NavButton(props: NavButtonProps) {
const { setOpenMobile } = useSidebar();
return (
setOpenMobile(false)}>
{props.icon}
{props.label}
{props.children}
);
}
function HeaderButtons(props: { children: React.ReactNode }) {
return (
{props.children}
);
}
type CollectionButtonProps = {
id: string;
name: string;
icon: IconName | "";
color: ColorName | "";
}
function CollectionButton(props: CollectionButtonProps) {
const icon = props.icon && icons[props.icon];
const color = props.color ? colors[props.color] : colors.white;
return (
{icon && }
{props.name}
);
}
function SidebarToggle() {
const isMobile = useIsMobile();
const { toggleSidebar } = useSidebar()
if (isMobile) {
return null;
}
return (
);
}
function InboxButton() {
const notes = useCollectionNotesMetadata("");
const count = notes.length;
return (
}>
{count}
);
}
function NavUser() {
const isMobile = useIsMobile();
const [theme, setTheme] = useTheme();
// const { data: session } = useSession();
// const user = session?.user;
const user = {
name: "Kalle Struik",
email: "kalle@kallestruik.nl"
};
const email = user?.email ?? undefined;
const name = user?.name ?? undefined
function handleSignOut() {
// // End the session
// signOut();
// // Clear all locally stored data
// localStorage.clear();
// indexedDB.databases().then((dbs) => {
// dbs.forEach((db) => {
// db.name && indexedDB.deleteDatabase(db.name);
// });
// });
}
return (
{name}
{email}
setTheme("system")}>
setTheme("light")}>
setTheme("dark")}>
Log out
);
}