import React from "react"; import { useMatches } from "react-router"; import { useShallow } from "zustand/react/shallow"; import { useServerListStore } from "~/stores/server-list-store"; import { CreateServerButton } from "./custom-ui/create-server-button"; import { HomeButton } from "./custom-ui/home-button"; import { ServerButton } from "./custom-ui/server-button"; import UserStatus from "./custom-ui/user-status"; import { ScrollArea } from "./ui/scroll-area"; import { Separator } from "./ui/separator"; interface AppLayoutProps { children: React.ReactNode; } export default function AppLayout({ children }: AppLayoutProps) { let servers = Object.values( useServerListStore(useShallow((state) => state.servers)), ); const matches = useMatches(); let list = React.useMemo(() => { return matches .map( (match) => ( match.handle as { listComponent?: React.ReactNode; } )?.listComponent, ) .reverse() .find((component) => !!component); }, [matches]); return (
{list}
{children}
); }