import { gql, useQuery } from '@apollo/client'; import { WorkingProgressStatusBadge } from '@app/client/components/WorkingProgressStatusBadge'; import { WorkingRatingBadge } from '@app/client/components/WorkingRatingBadge'; import { WorkingReviewsBadge } from '@app/client/components/WorkingReviewsTotalBadge'; import { bookFragment } from '@app/client/fragments'; import { toFormattedDate } from '@app/client/helpers'; import { BookOne } from '@app/client/interfaces'; import { Heading, HStack, Skeleton, SkeletonText, Stack, Text } from '@chakra-ui/react'; import { BookOverviewQuery } from '@generated/types'; import { createFileRoute, Link, Outlet } from '@tanstack/react-router'; export const Route = createFileRoute('/work/book/$bookId/overview')({ component: RouteComponent }); function RouteComponent() { const { bookId: id } = Route.useParams(); const { data: bookData } = useQuery(bookQuery, { variables: { id } }); return ( {bookData != null ? : } ); } function BookOverview({ book }: { readonly book: BookOne }) { return ( {book.title} by: {book.author.username} created at: {toFormattedDate({ value: book.createdAt })} last updated: {toFormattedDate({ value: book.updatedAt })} chapters: {book.chaptersTotal} words: {book.wordsTotal} {book.description} ); } function BookOverviewSkeleton() { return ( ); } export const bookQuery = gql` query BookOverview($id: ID!) { bookOne(id: $id) { ...Book } } ${bookFragment} `;