Merge version_3 into main #4
@@ -1,49 +1,16 @@
|
||||
import type { Metadata } from "next";
|
||||
import { Halant } from "next/font/google";
|
||||
import { Inter } from "next/font/google";
|
||||
import { Open_Sans } from "next/font/google";
|
||||
import "./globals.css";
|
||||
import { ServiceWrapper } from "@/components/ServiceWrapper";
|
||||
import Tag from "@/tag/Tag";
|
||||
|
||||
const halant = Halant({
|
||||
variable: "--font-halant", subsets: ["latin"],
|
||||
weight: ["300", "400", "500", "600", "700"],
|
||||
});
|
||||
|
||||
const inter = Inter({
|
||||
variable: "--font-inter", subsets: ["latin"],
|
||||
});
|
||||
|
||||
const openSans = Open_Sans({
|
||||
variable: "--font-open-sans", subsets: ["latin"],
|
||||
});
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "ResellHub - Premium Wholesale Marketplace for Resellers", description: "Access exclusive supplier bundles and curated products for wholesale resellers. Scale your e-commerce business with our trusted wholesale platform.", keywords: "wholesale, reseller, supplier, bulk orders, e-commerce, dropshipping, marketplace", robots: {
|
||||
index: true,
|
||||
follow: true,
|
||||
},
|
||||
openGraph: {
|
||||
title: "ResellHub - Premium Wholesale Marketplace", description: "Join 4,950+ successful resellers. Access exclusive supplier bundles and wholesale products.", siteName: "ResellHub", type: "website"},
|
||||
twitter: {
|
||||
card: "summary_large_image", title: "ResellHub - Premium Wholesale Marketplace", description: "Discover exclusive supplier bundles and wholesale products for resellers"},
|
||||
};
|
||||
title: "ResellHub - Premium Wholesale Marketplace", description: "Access exclusive supplier bundles and products curated for resellers"};
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: Readonly<{
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
}) {
|
||||
return (
|
||||
<html lang="en" suppressHydrationWarning>
|
||||
<ServiceWrapper>
|
||||
<body
|
||||
className={`${halant.variable} ${inter.variable} ${openSans.variable} antialiased`}
|
||||
>
|
||||
<Tag />
|
||||
{children}
|
||||
|
||||
<html lang="en">
|
||||
<body>{children}
|
||||
<script
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: `
|
||||
@@ -1411,7 +1378,6 @@ export default function RootLayout({
|
||||
}}
|
||||
/>
|
||||
</body>
|
||||
</ServiceWrapper>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -8,9 +8,24 @@ import TestimonialCardOne from "@/components/sections/testimonial/TestimonialCar
|
||||
import ContactFaq from "@/components/sections/contact/ContactFaq";
|
||||
import FooterSimple from "@/components/sections/footer/FooterSimple";
|
||||
import SocialProofOne from "@/components/sections/socialProof/SocialProofOne";
|
||||
import { Star, Sparkles, Flame, Heart, BadgeCheck, MessageCircle } from "lucide-react";
|
||||
import { Star, Sparkles, Flame, Heart, BadgeCheck, MessageCircle, Eye, TrendingUp } from "lucide-react";
|
||||
import { useState, useEffect } from "react";
|
||||
|
||||
export default function LandingPage() {
|
||||
const [liveViewers, setLiveViewers] = useState(0);
|
||||
|
||||
useEffect(() => {
|
||||
// Simulate live viewer count
|
||||
const interval = setInterval(() => {
|
||||
setLiveViewers(prev => {
|
||||
const change = Math.floor(Math.random() * 5) - 2; // -2 to +2
|
||||
return Math.max(1, Math.min(prev + change, 150));
|
||||
});
|
||||
}, 3000);
|
||||
|
||||
return () => clearInterval(interval);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="text-shift"
|
||||
@@ -70,6 +85,13 @@ export default function LandingPage() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Live Viewers Indicator */}
|
||||
<div className="flex items-center justify-center py-6 gap-2 bg-foreground/5">
|
||||
<Eye className="w-4 h-4" />
|
||||
<span className="text-sm font-medium">{liveViewers} customers viewing now</span>
|
||||
<div className="w-2 h-2 rounded-full bg-red-500 animate-pulse" />
|
||||
</div>
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<ProductCardOne
|
||||
title="Our Premium Product Collections"
|
||||
|
||||
Reference in New Issue
Block a user