import { createFileRoute, useNavigate } from "@tanstack/react-router" import { LayoutMode, useBookmarkPageStore } from "./-store" import clsx from "clsx" import { fetchApi, useAuthenticatedQuery } from "~/api" import { LoadingSpinner } from "~/components/loading-spinner" import { BookmarkList } from "./-bookmark-list" import { useCallback } from "react" import type { LinkBookmark } from "@markone/core/bookmark" import { ActionBar } from "./-action-bar" export const Route = createFileRoute("/bookmarks/$bookmarkId")({ component: RouteComponent, }) function RouteComponent() { return (
) } function Main({ children }: React.PropsWithChildren) { const layoutMode = useBookmarkPageStore((state) => state.layoutMode) return (
{children}
) } function BookmarkPreviewContainer({ children }: React.PropsWithChildren) { const layoutMode = useBookmarkPageStore((state) => state.layoutMode) return (
{children}
) } function BookmarkListSidebar() { return (

 >  YOUR BOOKMARKS

) } function BookmarkListContainer() { const { bookmarkId } = Route.useParams() const navigate = useNavigate() const { data: bookmarks, status } = useAuthenticatedQuery(["bookmarks"], () => fetchApi("/bookmarks").then((res) => res.json()), ) const handleBookmarkListItemAction = useBookmarkPageStore((state) => state.handleBookmarkListItemAction) const onSelectedBookmarkChange = useCallback( (bookmark: LinkBookmark) => { navigate({ to: `/bookmarks/${bookmark.id}` }) }, [navigate], ) switch (status) { case "success": return ( ) case "pending": return (

Loading

) case "error": return

error loading bookmarks

} } function BookmarkPreview() { const { bookmarkId } = Route.useParams() const { data, status } = useAuthenticatedQuery(["bookmarks", `${bookmarkId}.html`], () => fetchApi(`/bookmark/${bookmarkId}`, { headers: { Accept: "text/html", }, }).then((res) => res.text()), ) switch (status) { case "pending": return (

Loading

) case "success": return