Merge version_1 into main #2

Merged
bender merged 2 commits from version_1 into main 2026-03-12 07:00:16 +00:00
2 changed files with 42 additions and 45 deletions

View File

@@ -43,7 +43,7 @@ export default function LandingPage() {
<HeroSplitKpi
title="Professional Garden Construction & Landscaping in Rotterdam"
description="Transform your outdoor space into a stunning modern garden. Expert design, quality craftsmanship, and on-time delivery for homes and businesses throughout Rotterdam."
background={{ variant: "circleGradient" }}
background={{ variant: "glowing-orb" }}
kpis={[
{ value: "⭐ 5.0", label: "Google Rating" },
{ value: "15+", label: "Years Experience" },
@@ -99,11 +99,11 @@ export default function LandingPage() {
features={[
{
id: 1,
title: "Garden Design", description: "Custom garden designs tailored to your vision and outdoor space", imageSrc: "http://img.b2bpic.net/free-photo/old-woman-doing-fitness-exercises_23-2149565535.jpg?_wi=1"
title: "Garden Design", description: "Custom garden designs tailored to your vision and outdoor space", imageSrc: "http://img.b2bpic.net/free-photo/old-woman-doing-fitness-exercises_23-2149565535.jpg"
},
{
id: 2,
title: "Landscape Construction", description: "Professional construction of your new garden from concept to completion", imageSrc: "http://img.b2bpic.net/free-photo/long-corridor-showcase_1127-3442.jpg?_wi=1"
title: "Landscape Construction", description: "Professional construction of your new garden from concept to completion", imageSrc: "http://img.b2bpic.net/free-photo/long-corridor-showcase_1127-3442.jpg"
},
{
id: 3,
@@ -128,15 +128,15 @@ export default function LandingPage() {
features={[
{
id: 1,
title: "Free Consultation", description: "Meet with our landscape specialists to discuss your ideas, budget, and timeline", imageSrc: "http://img.b2bpic.net/free-photo/old-woman-doing-fitness-exercises_23-2149565535.jpg?_wi=2"
title: "Free Consultation", description: "Meet with our landscape specialists to discuss your ideas, budget, and timeline", imageSrc: "http://img.b2bpic.net/free-photo/old-woman-doing-fitness-exercises_23-2149565535.jpg"
},
{
id: 2,
title: "Garden Design & Planning", description: "Detailed design proposal with 3D visualization and material selections", imageSrc: "http://img.b2bpic.net/free-photo/long-corridor-showcase_1127-3442.jpg?_wi=2"
title: "Garden Design & Planning", description: "Detailed design proposal with 3D visualization and material selections", imageSrc: "http://img.b2bpic.net/free-photo/long-corridor-showcase_1127-3442.jpg"
},
{
id: 3,
title: "Professional Construction", description: "Expert team builds your garden with precision and quality craftsmanship", imageSrc: "http://img.b2bpic.net/free-photo/covered-lifestyle-garden-with-indoor-outdoor-living_1127-3424.jpg?_wi=1"
title: "Professional Construction", description: "Expert team builds your garden with precision and quality craftsmanship", imageSrc: "http://img.b2bpic.net/free-photo/covered-lifestyle-garden-with-indoor-outdoor-living_1127-3424.jpg"
}
]}
textboxLayout="default"
@@ -156,7 +156,7 @@ export default function LandingPage() {
blogs={[
{
id: "1", category: ["Modern Design", "Patio Construction"],
title: "Contemporary Garden with Stone Patio", excerpt: "Beautiful modern garden featuring natural stone patio, contemporary plantings, and outdoor living space perfect for entertaining.", imageSrc: "http://img.b2bpic.net/free-photo/covered-lifestyle-garden-with-indoor-outdoor-living_1127-3424.jpg?_wi=2", imageAlt: "Modern garden with stone patio", authorName: "Van der Parre Team", authorAvatar: "http://img.b2bpic.net/free-photo/portrait-professional-elegant-businessman_23-2150917050.jpg", date: "March 2025"
title: "Contemporary Garden with Stone Patio", excerpt: "Beautiful modern garden featuring natural stone patio, contemporary plantings, and outdoor living space perfect for entertaining.", imageSrc: "http://img.b2bpic.net/free-photo/covered-lifestyle-garden-with-indoor-outdoor-living_1127-3424.jpg", imageAlt: "Modern garden with stone patio", authorName: "Van der Parre Team", authorAvatar: "http://img.b2bpic.net/free-photo/portrait-professional-elegant-businessman_23-2150917050.jpg", date: "March 2025"
},
{
id: "2", category: ["Garden Renovation", "Luxury Design"],
@@ -186,7 +186,7 @@ export default function LandingPage() {
animationType="slide-up"
testimonials={[
{
id: "1", name: "Ruben Den Butter", handle: "Rotterdam Homeowner", testimonial: "Delivered exactly the result we expected. Very professional work and delivered even before the deadline. Highly recommended!", imageSrc: "http://img.b2bpic.net/free-photo/portrait-professional-elegant-businessman_23-2150917050.jpg?_wi=1", imageAlt: "Ruben Den Butter"
id: "1", name: "Ruben Den Butter", handle: "Rotterdam Homeowner", testimonial: "Delivered exactly the result we expected. Very professional work and delivered even before the deadline. Highly recommended!", imageSrc: "http://img.b2bpic.net/free-photo/portrait-professional-elegant-businessman_23-2150917050.jpg", imageAlt: "Ruben Den Butter"
},
{
id: "2", name: "Maria van de Berg", handle: "Rotterdam Business Owner", testimonial: "Outstanding service from consultation to final result. The team was professional, punctual, and delivered exceptional quality. Our garden is stunning!", imageSrc: "http://img.b2bpic.net/free-photo/businesswoman-her-desk_23-2147636005.jpg", imageAlt: "Maria van de Berg"
@@ -201,7 +201,7 @@ export default function LandingPage() {
id: "5", name: "Thomas Vermeulen", handle: "Rotterdam Homeowner", testimonial: "From initial consultation through project completion, Van der Parre & Co exceeded expectations. Highly skilled team with genuine passion for landscaping.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-business-man-posing-with-crossed-arms_23-2149206526.jpg", imageAlt: "Thomas Vermeulen"
},
{
id: "6", name: "Anna Hermans", handle: "Capelle aan den IJssel", testimonial: "Outstanding attention to detail and quality materials. Our garden is now our favorite outdoor space. Absolutely fantastic work!", imageSrc: "http://img.b2bpic.net/free-photo/portrait-professional-elegant-businessman_23-2150917050.jpg?_wi=2", imageAlt: "Anna Hermans"
id: "6", name: "Anna Hermans", handle: "Capelle aan den IJssel", testimonial: "Outstanding attention to detail and quality materials. Our garden is now our favorite outdoor space. Absolutely fantastic work!", imageSrc: "http://img.b2bpic.net/free-photo/portrait-professional-elegant-businessman_23-2150917050.jpg", imageAlt: "Anna Hermans"
}
]}
speed={40}
@@ -246,7 +246,7 @@ export default function LandingPage() {
description="Get started today with a free consultation. Our team is ready to help you create the outdoor space of your dreams."
tagIcon={Sparkles}
tagAnimation="slide-up"
background={{ variant: "circleGradient" }}
background={{ variant: "glowing-orb" }}
useInvertedBackground={true}
inputPlaceholder="Your email address"
buttonText="Request Quote"

View File

@@ -1,51 +1,48 @@
"use client";
import { memo } from "react";
import useSvgTextLogo from "./useSvgTextLogo";
import { cls } from "@/lib/utils";
import React from 'react';
interface SvgTextLogoProps {
logoText: string;
adjustHeightFactor?: number;
verticalAlign?: "top" | "center";
text: string;
fontSize?: number;
fontFamily?: string;
fontWeight?: number | string;
fill?: string;
className?: string;
}
const SvgTextLogo = memo<SvgTextLogoProps>(function SvgTextLogo({
logoText,
adjustHeightFactor,
verticalAlign = "top",
className = "",
}) {
const { svgRef, textRef, viewBox, aspectRatio } = useSvgTextLogo(logoText, false, adjustHeightFactor);
const SvgTextLogo: React.FC<SvgTextLogoProps> = ({
text,
fontSize = 24,
fontFamily = 'Arial, sans-serif',
fontWeight = 'bold',
fill = 'currentColor',
className = '',
}) => {
const padding = 8;
const estimatedWidth = text.length * fontSize * 0.6;
const width = estimatedWidth + padding * 2;
const height = fontSize + padding * 2;
return (
<svg
ref={svgRef}
viewBox={viewBox}
className={cls("w-full", className)}
style={{ aspectRatio: aspectRatio }}
preserveAspectRatio="none"
role="img"
aria-label={`${logoText} logo`}
width={width}
height={height}
viewBox={`0 0 ${width} ${height}`}
xmlns="http://www.w3.org/2000/svg"
className={className}
>
<text
ref={textRef}
x="0"
y={verticalAlign === "center" ? "50%" : "0"}
className="font-bold fill-current"
style={{
fontSize: "20px",
letterSpacing: "-0.02em",
dominantBaseline: verticalAlign === "center" ? "middle" : "text-before-edge"
}}
x={padding}
y={fontSize + padding}
fontSize={fontSize}
fontFamily={fontFamily}
fontWeight={fontWeight}
fill={fill}
dominantBaseline="hanging"
>
{logoText}
{text}
</text>
</svg>
);
});
SvgTextLogo.displayName = "SvgTextLogo";
};
export default SvgTextLogo;