14 Commits

Author SHA1 Message Date
e0076c6b13 Update src/app/page.tsx 2026-03-06 00:25:20 +00:00
3eed2431ef Update src/app/layout.tsx 2026-03-06 00:25:19 +00:00
3fe25ae0df Merge version_7 into main
Merge version_7 into main
2026-03-06 00:18:04 +00:00
1d9349c15d Update src/app/page.tsx 2026-03-06 00:18:00 +00:00
e92f8bfe99 Update src/app/layout.tsx 2026-03-06 00:18:00 +00:00
51e34f4b29 Merge version_6 into main
Merge version_6 into main
2026-03-06 00:15:00 +00:00
55ed7a7d9f Merge version_6 into main
Merge version_6 into main
2026-03-06 00:13:13 +00:00
87bec05b7e Merge version_6 into main
Merge version_6 into main
2026-03-06 00:11:32 +00:00
4a6a6f1a7f Merge version_6 into main
Merge version_6 into main
2026-03-06 00:09:40 +00:00
52b726e20a Merge version_6 into main
Merge version_6 into main
2026-03-06 00:07:54 +00:00
a3a623d06a Merge version_6 into main
Merge version_6 into main
2026-03-06 00:06:07 +00:00
9dbcf34068 Merge version_6 into main
Merge version_6 into main
2026-03-06 00:04:21 +00:00
203283c134 Merge version_6 into main
Merge version_6 into main
2026-03-06 00:02:25 +00:00
18959feb6a Merge version_6 into main
Merge version_6 into main
2026-03-06 00:00:38 +00:00
2 changed files with 41 additions and 86 deletions

View File

@@ -1,14 +1,11 @@
import type { Metadata } from "next";
import { Manrope } from "next/font/google";
import "./styles/variables.css";
import { Raleway } from "next/font/google";
import "./globals.css";
const manrope = Manrope({
variable: "--font-manrope", subsets: ["latin"],
});
const raleway = Raleway({ subsets: ["latin"] });
export const metadata: Metadata = {
title: "Taishan Construction | Premium Hardscape & Building Services Toronto", description: "Premium interlock driveways, patios, landscaping & construction services across the GTA. Free 3D design, expert installation, luxury results."
title: "Taishan Construction - Premium Hardscape & Construction Services Toronto", description: "Premium landscaping and construction services across the GTA. Free 3D design, professional installation, material showroom."
};
export default function RootLayout({
@@ -18,12 +15,7 @@ export default function RootLayout({
}) {
return (
<html lang="en">
<head>
<link rel="icon" href="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772755165036-dookr298.png" />
</head>
<body className={`${manrope.variable} antialiased`}>
{children}
<body className={raleway.className}>{children}
<script
dangerouslySetInnerHTML={{
__html: `

View File

@@ -208,79 +208,42 @@ export default function LandingPage() {
</div>
<div id="services" data-section="services">
<div className="px-6 lg:px-12 py-16 lg:py-24">
<div className="max-w-7xl mx-auto">
<div className="mb-12">
<p className="text-sm font-semibold uppercase tracking-wider text-primary-cta mb-2">Complete Solutions</p>
<h2 className="text-4xl lg:text-5xl font-bold mb-4">Our Services</h2>
<p className="text-lg text-foreground/80">Premium construction and landscaping services for Toronto and the Greater Toronto Area. Each project is crafted with precision and built to last.</p>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mb-12">
{[
{
id: "interlock", icon: Cog,
title: "Interlock Driveways", description: "Professional interlock paving with premium materials and expert installation"
},
{
id: "patios", icon: Palette,
title: "Backyard Patios", description: "Custom patio designs transforming outdoor living spaces into luxury retreats"
},
{
id: "walkways", icon: Footprints,
title: "Walkways", description: "Decorative and functional pathways connecting your property with style"
},
{
id: "retaining", icon: Building2,
title: "Retaining Walls", description: "Structural and aesthetic walls for landscaping and property management"
},
{
id: "porches", icon: Home,
title: "Natural Stone Porches", description: "Premium stone entry features creating impressive curb appeal"
},
{
id: "lighting", icon: Zap,
title: "Landscape Lighting", description: "Professional outdoor lighting systems enhancing ambiance and security"
}
].map((service) => (
<div
key={service.id}
className="relative group"
onMouseEnter={() => setServicesHoveredCard(service.id)}
onMouseLeave={() => setServicesHoveredCard(null)}
>
<div className="p-6 rounded-lg border border-accent/20 bg-card hover:border-primary-cta/40 transition-all duration-300">
<service.icon className="w-8 h-8 text-primary-cta mb-4" />
<h3 className="text-xl font-semibold mb-2">{service.title}</h3>
<p className="text-foreground/70 text-sm">{service.description}</p>
</div>
{servicesHoveredCard === service.id && (
<div className="absolute inset-0 rounded-lg bg-black/50 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300 pointer-events-none">
<div className="text-center text-white p-4">
<p className="font-semibold">See examples of this service</p>
<p className="text-sm text-white/80">in our project gallery</p>
</div>
</div>
)}
</div>
))}
</div>
<div className="bg-card rounded-lg p-8 border border-accent/20">
<h3 className="text-2xl font-bold mb-6">Interlock Driveway Showcase</h3>
<p className="text-foreground/80 mb-8">Hover over the slider to see our photorealistic 3D renderings compared to actual completed projects:</p>
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{beforeAfterPairs.map((pair, index) => (
<BeforeAfterCard
key={index}
pair={pair}
isHovered={galleryHoveredCard === `service-${index}`}
/>
))}
</div>
</div>
</div>
</div>
<FeatureHoverPattern
title="Our Services"
description="Premium construction and landscaping services for Toronto and the Greater Toronto Area. Each project is crafted with precision and built to last."
tag="Complete Solutions"
tagAnimation="slide-up"
features={[
{
icon: Cog,
title: "Interlock Driveways", description: "Professional interlock paving with premium materials and expert installation"
},
{
icon: Palette,
title: "Backyard Patios", description: "Custom patio designs transforming outdoor living spaces into luxury retreats"
},
{
icon: Footprints,
title: "Walkways", description: "Decorative and functional pathways connecting your property with style"
},
{
icon: Building2,
title: "Retaining Walls", description: "Structural and aesthetic walls for landscaping and property management"
},
{
icon: Home,
title: "Natural Stone Porches", description: "Premium stone entry features creating impressive curb appeal"
},
{
icon: Zap,
title: "Landscape Lighting", description: "Professional outdoor lighting systems enhancing ambiance and security"
}
]}
animationType="slide-up"
textboxLayout="default"
useInvertedBackground={false}
buttonAnimation="slide-up"
/>
</div>
<div id="gallery" data-section="gallery">
@@ -448,7 +411,7 @@ export default function LandingPage() {
<div id="contact" data-section="contact">
<ContactFaq
ctaTitle="Ready to Transform Your Property?"
ctaDescription="Book a consultation and receive a free 3D preview of your project."
ctaDescription="Start your project with a free consultation and photorealistic 3D rendering."
ctaButton={{
text: "Get Free 3D Design", href: "mailto:info@taishanconstruction.com?subject=Free%203D%20Design%20Consultation"
}}