diff --git a/src/app/(lobby)/@modal/(.)product-preview/[productId]/layout.tsx b/src/app/(lobby)/@modal/(.)product-preview/[productId]/layout.tsx
new file mode 100644
index 00000000..2ae2381e
--- /dev/null
+++ b/src/app/(lobby)/@modal/(.)product-preview/[productId]/layout.tsx
@@ -0,0 +1,11 @@
+import { AlertDialog, AlertDialogContent } from "@/components/ui/alert-dialog"
+
+export default function ProductModalLayout({
+ children,
+}: React.PropsWithChildren) {
+ return (
+
+ {children}
+
+ )
+}
diff --git a/src/app/(lobby)/@modal/(.)product-preview/[productId]/page.tsx b/src/app/(lobby)/@modal/(.)product-preview/[productId]/page.tsx
new file mode 100644
index 00000000..9849ccef
--- /dev/null
+++ b/src/app/(lobby)/@modal/(.)product-preview/[productId]/page.tsx
@@ -0,0 +1,15 @@
+interface ProductModalPageProps {
+ params: {
+ productId: string
+ }
+}
+
+export default function ProductModalPage({ params }: ProductModalPageProps) {
+ const productId = Number(params.productId)
+
+ return (
+
+ )
+}
diff --git a/src/app/(lobby)/@modal/default.tsx b/src/app/(lobby)/@modal/default.tsx
new file mode 100644
index 00000000..86b9e9a3
--- /dev/null
+++ b/src/app/(lobby)/@modal/default.tsx
@@ -0,0 +1,3 @@
+export default function Default() {
+ return null
+}
diff --git a/src/app/(lobby)/layout.tsx b/src/app/(lobby)/layout.tsx
index 990d7964..32cd2a75 100644
--- a/src/app/(lobby)/layout.tsx
+++ b/src/app/(lobby)/layout.tsx
@@ -3,15 +3,24 @@ import { currentUser } from "@clerk/nextjs"
import { SiteFooter } from "@/components/layouts/site-footer"
import { SiteHeader } from "@/components/layouts/site-header"
+interface LobbyLayoutProps
+ extends React.PropsWithChildren<{
+ modal: React.ReactNode
+ }> {}
+
export default async function LobbyLayout({
children,
-}: React.PropsWithChildren) {
+ modal,
+}: LobbyLayoutProps) {
const user = await currentUser()
return (
- {children}
+
+ {children}
+ {modal}
+
)
diff --git a/src/app/(lobby)/product/[productId]/loading.tsx b/src/app/(lobby)/product/[productId]/loading.tsx
index 23114b0b..a1596fac 100644
--- a/src/app/(lobby)/product/[productId]/loading.tsx
+++ b/src/app/(lobby)/product/[productId]/loading.tsx
@@ -1,10 +1,10 @@
import { cn } from "@/lib/utils"
-import { AspectRatio } from "@/components/ui/aspect-ratio"
-import { Card, CardContent, CardFooter, CardHeader } from "@/components/ui/card"
+import { ScrollArea } from "@/components/ui/scroll-area"
import { Separator } from "@/components/ui/separator"
import { Skeleton } from "@/components/ui/skeleton"
import { Icons } from "@/components/icons"
import { Shell } from "@/components/shells/shell"
+import { ProductCardSkeleton } from "@/components/skeletons/product-card-skeleton"
export default function ProductLoading() {
return (
@@ -75,36 +75,15 @@ export default function ProductLoading() {
-
-
-
+
+
+
{Array.from({ length: 4 }).map((_, i) => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
))}
-
+
)
diff --git a/src/components/skeletons/product-card-skeleton.tsx b/src/components/skeletons/product-card-skeleton.tsx
index f9f603d9..8ca23ba3 100644
--- a/src/components/skeletons/product-card-skeleton.tsx
+++ b/src/components/skeletons/product-card-skeleton.tsx
@@ -1,11 +1,21 @@
+import { cn } from "@/lib/utils"
import { AspectRatio } from "@/components/ui/aspect-ratio"
import { Card, CardContent, CardFooter, CardHeader } from "@/components/ui/card"
import { Skeleton } from "@/components/ui/skeleton"
import { PlaceholderImage } from "@/components/placeholder-image"
-export function ProductCardSkeleton() {
+interface ProductCardSkeletonProps
+ extends React.ComponentPropsWithoutRef
{}
+
+export function ProductCardSkeleton({
+ className,
+ ...props
+}: ProductCardSkeletonProps) {
return (
-
+