From af2ab04148ac680d3fdf196e8c2dddc9567d37b8 Mon Sep 17 00:00:00 2001 From: Nezumi-2711 Date: Sun, 27 Jul 2025 15:38:08 +0700 Subject: [PATCH] feat: add the product list ui --- public/placeholder.png | Bin 0 -> 108631 bytes .../(home)/[category]/[subcategory]/page.tsx | 18 ++-- src/app/(app)/(home)/[category]/page.tsx | 25 +---- .../products/hooks/use-product-filters.ts | 2 +- src/modules/products/server/procedures.ts | 18 +++- .../products/ui/components/product-card.tsx | 79 ++++++++++++++++ .../products/ui/components/product-list.tsx | 87 ++++++++++++++---- .../products/ui/views/product-list-view.tsx | 30 ++++++ 8 files changed, 206 insertions(+), 53 deletions(-) create mode 100644 public/placeholder.png create mode 100644 src/modules/products/ui/components/product-card.tsx create mode 100644 src/modules/products/ui/views/product-list-view.tsx diff --git a/public/placeholder.png b/public/placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..6e5e3ddd8ffd11e7f877fd70a4e2ecac7caf565c GIT binary patch literal 108631 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þSXo=Y~Vsh3~ok>&s&pw*Ckbl)ZB#Gq7=nZoVo% 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 + searchParams: Promise; } -const Page = async ({ params }: Props) => { +const Page = async ({ params, searchParams }: Props) => { const { subcategory } = await params; const queryClient = getQueryClient(); + const filters = await loadProductFilters(searchParams); + void queryClient.prefetchQuery( trpc.products.getMany.queryOptions({ category: subcategory, + ...filters, }) ); return ( - }> - - + ); }; diff --git a/src/app/(app)/(home)/[category]/page.tsx b/src/app/(app)/(home)/[category]/page.tsx index 6944eae..d4fedb2 100644 --- a/src/app/(app)/(home)/[category]/page.tsx +++ b/src/app/(app)/(home)/[category]/page.tsx @@ -1,15 +1,9 @@ import type { SearchParams } from 'nuqs/server'; -import { Suspense } from 'react'; import { dehydrate, HydrationBoundary } from '@tanstack/react-query'; import { getQueryClient, trpc } from '@/trpc/server'; -import { - ProductList, - ProductListSkeleton, -} from '@/modules/products/ui/components/product-list'; -import { ProductFilters } from '@/modules/products/ui/components/product-filters'; import { loadProductFilters } from '@/modules/products/search-params'; -import { ProductSort } from '@/modules/products/ui/components/product-sort'; +import { ProductListView } from '@/modules/products/ui/views/product-list-view'; interface Props { params: Promise<{ @@ -32,22 +26,7 @@ const Page = async ({ params, searchParams }: Props) => { return ( -
-
-

Curated for you

- -
-
-
- -
-
- }> - - -
-
-
+
); }; diff --git a/src/modules/products/hooks/use-product-filters.ts b/src/modules/products/hooks/use-product-filters.ts index 6ae0573..4fcf141 100644 --- a/src/modules/products/hooks/use-product-filters.ts +++ b/src/modules/products/hooks/use-product-filters.ts @@ -1,6 +1,6 @@ import { useQueryStates, parseAsString, parseAsArrayOf, parseAsStringLiteral } from 'nuqs'; -const sortValues = ['curated', 'trending', 'hot_and_new']; +const sortValues = ['curated', 'trending', 'hot_and_new'] as const; const params = { sort: parseAsStringLiteral(sortValues).withDefault('curated'), diff --git a/src/modules/products/server/procedures.ts b/src/modules/products/server/procedures.ts index 7364e05..426d63c 100644 --- a/src/modules/products/server/procedures.ts +++ b/src/modules/products/server/procedures.ts @@ -2,11 +2,15 @@ import type { Sort, Where } from "payload"; import { z } from "zod"; import { baseProcedure, createTRPCRouter } from "@/trpc/init"; -import { Category } from "@/payload-types"; +import { DEFAULT_LIMIT } from "@/constants"; +import { Category, Media } from "@/payload-types"; + import { sortValues } from "../search-params"; export const productsRouter = createTRPCRouter({ getMany: baseProcedure.input(z.object({ + cursor: z.number().default(1), + limit: z.number().default(DEFAULT_LIMIT), category: z.string().nullable().optional(), minPrice: z.string().nullable().optional(), maxPrice: z.string().nullable().optional(), @@ -90,8 +94,18 @@ export const productsRouter = createTRPCRouter({ depth: 1, // Populated "category" & "image" where, sort, + page: input.cursor, + limit: input.limit, }); - return data; + return { + ...data, + docs: data.docs.map((doc) => { + return { + ...doc, + image: doc.images as Media || null, + }; + }), + }; }) }) \ No newline at end of file diff --git a/src/modules/products/ui/components/product-card.tsx b/src/modules/products/ui/components/product-card.tsx new file mode 100644 index 0000000..33bea63 --- /dev/null +++ b/src/modules/products/ui/components/product-card.tsx @@ -0,0 +1,79 @@ +import { StarIcon } from 'lucide-react'; +import Image from 'next/image'; +import Link from 'next/link'; + +interface ProductCardProps { + id: string; + name: string; + imageUrl?: string | null; + authorUsername: string; + authorImageUrl?: string | null; + reviewRating: number; + reviewCount: number; + price: number; +} + +export const ProductCard = ({ + id, + name, + imageUrl, + authorUsername, + authorImageUrl, + reviewRating, + reviewCount, + price, +}: ProductCardProps) => { + return ( + +
+
+ name +
+
+

{name}

+ {/* TODO: Redirect to the user shop */} +
{}}> + {authorImageUrl && ( + {authorUsername} + )} +

{authorUsername}

+
+ {reviewCount > 0 && ( +
+ +

+ {reviewRating} ({reviewCount}) +

+
+ )} +
+
+
+

+ {new Intl.NumberFormat('en-US', { + style: 'currency', + currency: 'USD', + maximumFractionDigits: 0, + }).format(price)} +

+
+
+
+ + ); +}; + +export const ProductCardSkeleton = () => ( +
+); diff --git a/src/modules/products/ui/components/product-list.tsx b/src/modules/products/ui/components/product-list.tsx index cfec877..8acf4ab 100644 --- a/src/modules/products/ui/components/product-list.tsx +++ b/src/modules/products/ui/components/product-list.tsx @@ -1,37 +1,88 @@ 'use client'; -import { useSuspenseQuery } from '@tanstack/react-query'; +import { InboxIcon } from 'lucide-react'; +import { useSuspenseInfiniteQuery } from '@tanstack/react-query'; import { useTRPC } from '@/trpc/client'; +import { DEFAULT_LIMIT } from '@/constants'; +import { Button } from '@/components/ui/button'; + import { useProductFilters } from '../../hooks/use-product-filters'; +import { ProductCard, ProductCardSkeleton } from './product-card'; interface Props { - category: string; + category?: string; } export const ProductList = ({ category }: Props) => { const [filters] = useProductFilters(); - const trpc = useTRPC(); - const { data } = useSuspenseQuery( - trpc.products.getMany.queryOptions({ - category, - ...filters, - }) - ); + const { data, hasNextPage, isFetchingNextPage, fetchNextPage } = + useSuspenseInfiniteQuery( + trpc.products.getMany.infiniteQueryOptions( + { + ...filters, + category, + limit: DEFAULT_LIMIT, + }, + { + getNextPageParam: (lastPage) => { + return lastPage.docs.length > 0 ? lastPage.nextPage : undefined; + }, + } + ) + ); + + if (data?.pages?.[0]?.docs.length === 0) + return ( +
+ +

No products found

+
+ ); return ( -
- {data?.docs.map((product) => ( -
-

{product.name}

-

${product.price}

-
- ))} -
+ <> +
+ {data?.pages + .flatMap((page) => page.docs) + .map((product) => ( + + ))} +
+ +
+ {hasNextPage && ( + + )} +
+ ); }; export const ProductListSkeleton = () => { - return
Loading...
; + return ( +
+ {Array.from({ length: DEFAULT_LIMIT }).map((_, index) => ( + + ))} +
+ ); }; diff --git a/src/modules/products/ui/views/product-list-view.tsx b/src/modules/products/ui/views/product-list-view.tsx new file mode 100644 index 0000000..f44055e --- /dev/null +++ b/src/modules/products/ui/views/product-list-view.tsx @@ -0,0 +1,30 @@ +import { Suspense } from 'react'; + +import { ProductFilters } from '../components/product-filters'; +import { ProductSort } from '../components/product-sort'; +import { ProductList, ProductListSkeleton } from '../components/product-list'; + +interface Props { + category?: string; +}; + +export const ProductListView = ({ category }: Props) => { + return ( +
+
+

Curated for you

+ +
+
+
+ +
+
+ }> + + +
+
+
+ ); +};