import { MetaFunction } from "@remix-run/node";
import { Link, useSearchParams } from "@remix-run/react";
import { useEffect, useState } from "react";
import { ChevronLeft } from "lucide-react";
import HomePageTopBar from "~/components/home/HomePageTopBar";
import { ProductImageCarousel } from "~/components/product";
import {
useGetHomeBanners,
useGetHomeDiscounts,
useGetHomeForYou,
useGetHomeSellerTiles,
} from "~/requestHandler/use-home-hooks";
import { useCollectionsInfiniteQuery } from "~/requestHandler/use-collection-hooks";
import { Skeleton } from "~/components/ui/skeleton";
import MondrianProductList from "~/components/MondrianProductList";
import HorizontalProductList from "~/components/HorizontalProductList";
import HorizontalCollectionsList from "~/components/HorizontalCollectionsList";
import SellerTilesGrid from "~/components/SellerTilesGrid";
import InvoiceModal from "~/components/home/InvoiceModal";
export default function HomePage() {
const [searchParams] = useSearchParams();
const [showInvoiceModal, setShowInvoiceModal] = useState(false);
// Fetch home page data
const { data: banners, isLoading: isLoadingBanners } = useGetHomeBanners();
const {
data: discountsData,
isLoading: isLoadingDiscounts,
isError: isErrorDiscounts,
refetch: refetchDiscounts,
} = useGetHomeDiscounts();
const {
data: forYouData,
isLoading: isLoadingForYou,
isError: isErrorForYou,
refetch: refetchForYou,
fetchNextPage: fetchNextForYou,
hasNextPage: hasNextForYou,
isFetchingNextPage: isFetchingNextForYou,
} = useGetHomeForYou();
const {
data: sellerTilesData,
isLoading: isLoadingSellerTiles,
isError: isErrorSellerTiles,
refetch: refetchSellerTiles,
} = useGetHomeSellerTiles();
const {
data: collectionsData,
isLoading: isLoadingCollections,
isError: isErrorCollections,
refetch: refetchCollections,
} = useCollectionsInfiniteQuery({
pageSize: 10,
});
// Flatten the paginated data - extract results from each page
// For discounts, only get first page
const discounts = discountsData?.pages[0]?.results || [];
const forYouProducts =
forYouData?.pages.flatMap((page) => page?.results || []) || [];
const collections = collectionsData?.pages[0]?.results || [];
useEffect(() => {
// Check if the URL has an invoice parameter
if (searchParams.has("invoice") && searchParams.has("shippinginfo")) {
setShowInvoiceModal(true);
}
}, [searchParams]);
return (
<>
{/* Adding padding to account for fixed header */}
{/* Hero: mobile = full-bleed banner carousel; desktop = main + 2 promos */}
{isLoadingBanners ? (
) : (
banner.imageUrl || "") || []}
hideIndex={true}
borderRadius={0}
/>
)}
{/* Desktop-only side promos */}
تازه رسید
کالکشن جدید
فروش ویژه
تا ۵۰٪ تخفیف
تخفیفها
فرصتهایی محدود برای انتخابهای هوشمندانه
({
id: product?.id || "",
title: product?.title || "",
images: Array.isArray(product?.imageUrls)
? product.imageUrls
: [],
discountPercent: product?.discountPercent || 0,
discountPrice: product?.discountPrice || 0,
basePrice: product?.basePrice || 0,
})) || []
}
isLoading={isLoadingDiscounts}
isError={isErrorDiscounts}
refetch={refetchDiscounts}
/>
برترین فروشگاهها
برگرفته از بالاترین سطح رضایت کاربران
مشاهده همه
کالکشنها
مجموعههای منتخب از بهترین محصولات
({
id: collection?.id || "",
title: collection?.title || "",
description: collection?.description || "",
coverImageUrl: collection?.coverImageUrl || "",
productCount: collection?.productCount || 0,
})) || []
}
isLoading={isLoadingCollections}
isError={isErrorCollections}
refetch={refetchCollections}
showViewAllButton={true}
/>
برای شما
با الهام از انتخابهای شما
({
id: product?.id || "",
title: product?.title || "",
images: Array.isArray(product?.imageUrls)
? product.imageUrls
: [],
discountPercent: product?.discountPercent || 0,
discountPrice: product?.discountPrice || 0,
basePrice: product?.basePrice || 0,
})) || []
}
fetchNextPage={fetchNextForYou}
hasNextPage={hasNextForYou || false}
isFetchingNextPage={isFetchingNextForYou}
isLoading={isLoadingForYou}
isError={isErrorForYou}
refetch={refetchForYou}
emptyState={{}}
/>
>
);
}
export const meta: MetaFunction = () => {
const title = "ویترون | پلتفرم خرید آنلاین - محصولات باکیفیت با بهترین قیمت";
const description =
"ویترون بهترین پلتفرم خرید آنلاین در ایران. محصولات متنوع، قیمت مناسب، تحویل سریع. خرید امن از فروشگاههای معتبر با بالاترین کیفیت خدمات.";
const imageUrl =
"https://vitrownstatics.s3.ir-thr-at1.arvanstorage.ir/SVG-06.svg?versionId=";
const siteUrl = import.meta.env.VITE_SITE_URL || "https://vitrown.com/";
return [
{ title },
{ name: "description", content: description },
{
name: "keywords",
content:
"خرید آنلاین، فروشگاه اینترنتی، ویترون، محصولات باکیفیت، خرید امن، تحویل سریع",
},
{ name: "author", content: "Vitrown" },
{ name: "robots", content: "index, follow" },
// viewport is defined globally in root.tsx (with viewport-fit=cover for
// iOS safe-area handling); don't override it here or the home page loses
// edge-to-edge / notch support.
// Open Graph
{ property: "og:type", content: "website" },
{ property: "og:title", content: title },
{ property: "og:description", content: description },
{ property: "og:image", content: imageUrl },
{ property: "og:url", content: siteUrl },
{ property: "og:site_name", content: "ویترون" },
{ property: "og:locale", content: "fa_IR" },
// Twitter Card
{ name: "twitter:card", content: "summary_large_image" },
{ name: "twitter:title", content: title },
{ name: "twitter:description", content: description },
{ name: "twitter:image", content: imageUrl },
// Additional SEO
{ name: "theme-color", content: "#ffffff" },
{ name: "mobile-web-app-capable", content: "yes" },
{ name: "apple-mobile-web-app-status-bar-style", content: "default" },
{ name: "format-detection", content: "telephone=no" },
// Structured Data
{
"script:ld+json": {
"@context": "https://schema.org",
"@type": "WebSite",
name: "ویترون",
description: description,
url: siteUrl,
potentialAction: {
"@type": "SearchAction",
target: {
"@type": "EntryPoint",
urlTemplate: siteUrl + "/search/{search_term_string}",
},
"query-input": "required name=search_term_string",
},
publisher: {
"@type": "Organization",
name: "ویترون",
url: siteUrl,
},
},
},
];
};