Merge version_2_1782161239988 into main #2

Merged
bender merged 2 commits from version_2_1782161239988 into main 2026-06-22 20:49:15 +00:00
4 changed files with 41 additions and 1 deletions

View File

@@ -2,11 +2,13 @@ import { Routes, Route } from 'react-router-dom';
import Layout from './components/Layout';
import HomePage from './pages/HomePage';
import ProductsPage from "@/pages/ProductsPage";
export default function App() {
return (
<Routes>
<Route element={<Layout />}>
<Route path="/" element={<HomePage />} />
<Route path="/products" element={<ProductsPage />} />
</Route>
</Routes>
);

View File

@@ -27,7 +27,9 @@ export default function Layout() {
},
{
"name": "Faq", "href": "#faq"
}
},
{ name: "Products", href: "/products" },
];
return (

View File

@@ -0,0 +1,35 @@
import { ArrowUpRight, Loader2 } from "lucide-react";
import Button from "@/components/ui/Button";
import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
import GridOrCarousel from "@/components/ui/GridOrCarousel";
import ScrollReveal from "@/components/ui/ScrollReveal";
import useProducts from "@/hooks/useProducts";
export default function ProductsPage() {
return (
<>
<div data-webild-section="ProductMediaCards"><section aria-label="Products section" className="py-20"><div className="w-content-width mx-auto flex justify-center"><Loader2 className="size-8 animate-spin text-foreground" strokeWidth={1.5} /></div></section></div>
<div data-webild-section="SocialProofMarquee"><section aria-label="Social proof section" className="py-20"><div className="flex flex-col gap-8 md:gap-10"><div className="flex flex-col items-center gap-2 w-content-width mx-auto"><div className="px-3 py-1 mb-1 text-sm card rounded w-fit"><p>Accreditations</p></div><TextAnimation text="Recognized Industry Leaders" variant="fade" gradientText={true} tag="h2" className="md:max-w-8/10 text-6xl 2xl:text-7xl leading-[1.15] font-semibold text-center text-balance" /><TextAnimation text="HavenEstate is affiliated with top real estate organizations, guaranteeing ethical practices and expert guidance." variant="fade" gradientText={false} tag="p" className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance" /><div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3"><Button text="Browse Homes" href="#properties" variant="primary" /><Button text="Contact Us" href="/contact" variant="secondary" animationDelay={0.1} /></div></div><ScrollReveal variant="fade-blur" className="w-content-width mx-auto overflow-hidden mask-fade-x"><div className="flex w-max animate-marquee-horizontal" style={{"animationDuration":"45s"}}><div key={0} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">National Association of Realtors</span></div>
<div key={1} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">Certified Residential Specialist</span></div>
<div key={2} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">Accredited Buyer's Representative</span></div>
<div key={3} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">Luxury Home Marketing Guild</span></div>
<div key={4} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">State Real Estate Commission</span></div>
<div key={5} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">National Association of Realtors</span></div>
<div key={6} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">Certified Residential Specialist</span></div>
<div key={7} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">Accredited Buyer's Representative</span></div>
<div key={8} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">Luxury Home Marketing Guild</span></div>
<div key={9} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">State Real Estate Commission</span></div>
<div key={10} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">National Association of Realtors</span></div>
<div key={11} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">Certified Residential Specialist</span></div>
<div key={12} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">Accredited Buyer's Representative</span></div>
<div key={13} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">Luxury Home Marketing Guild</span></div>
<div key={14} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">State Real Estate Commission</span></div>
<div key={15} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">National Association of Realtors</span></div>
<div key={16} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">Certified Residential Specialist</span></div>
<div key={17} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">Accredited Buyer's Representative</span></div>
<div key={18} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">Luxury Home Marketing Guild</span></div>
<div key={19} className="shrink-0 mx-3 px-5 py-3 rounded card"><span className="text-2xl font-semibold whitespace-nowrap opacity-75">State Real Estate Commission</span></div></div></ScrollReveal></div></section></div>
</>
);
}

View File

@@ -6,4 +6,5 @@ export interface Route {
export const routes: Route[] = [
{ path: '/', label: 'Home', pageFile: 'HomePage' },
{ path: '/products', label: 'Products', pageFile: 'ProductsPage' },
];