"use client"; import { Features, RightSide, SliderComp } from "@/components/pages/products"; import { useProductPageInfo } from "@/store/useProduct"; import { useQuery } from "@tanstack/react-query"; import httpClient from "@/request/api"; import { endPoints } from "@/request/links"; import { AlertCircle } from "lucide-react"; import { LoadingSkeleton } from "@/components/pages/products/slug/loading"; import { EmptyState } from "@/components/pages/products/slug/empty"; import { useEffect } from "react"; // Types interface ProductImage { id: number; product: number; image: string; is_main: boolean; order: number; } interface ProductDetail { id: number; name: string; articular: string; status: string; description: string; size: number; price: string; features: string[]; images: ProductImage[]; } export default function SlugPage() { const productZustand = useProductPageInfo((state) => state.product); const { data: product, isLoading } = useQuery({ queryKey: ["product", productZustand.id], queryFn: () => httpClient(endPoints.product.detail(productZustand.id)), select: (data) => data?.data?.data as ProductDetail, enabled: !!productZustand.id, }); useEffect(()=>console.log("product detail: ",product)) // Loading State if (isLoading) { return ; } // Empty State if (!product) { return ; } // Extract images const productImages = product.images?.map((img) => img.image) || []; const mainImage = product.images?.find((img) => img.is_main)?.image || productImages[0] || ""; const features = product.features.map((item:any)=>item.name) return (
{/* Main Product Section */}
{/* Left - Image Slider */} {/* Right - Product Info */}
{/* Features Section */} {product.features && product.features.length > 0 && ( )}
); }