Merge version_1 into main #2

Merged
bender merged 2 commits from version_1 into main 2026-03-12 04:33:14 +00:00
2 changed files with 50 additions and 55 deletions

View File

@@ -52,26 +52,27 @@ export default function LandingPage() {
{ text: "Call Now", href: "tel:+1-805-000-0000" }
]}
buttonAnimation="slide-up"
imageSrc="http://img.b2bpic.net/free-photo/builtin-dishwasher-door-slightly-open-smart-kitchen_169016-71056.jpg?_wi=1"
imageSrc="http://img.b2bpic.net/free-photo/builtin-dishwasher-door-slightly-open-smart-kitchen_169016-71056.jpg"
imageAlt="Luxury kitchen remodeling showcase"
imagePosition="right"
mediaAnimation="slide-up"
background={{ variant: "plain" }}
testimonials={[
{
name: "Perry Darcy", handle: "Homeowner", testimonial: "Amazing!!! These guys are real masters of remodeling… imaginative and attentive to our vision.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/blond-businessman-happy-expression_1194-3796.jpg?_wi=1"
imageSrc: "http://img.b2bpic.net/free-photo/blond-businessman-happy-expression_1194-3796.jpg"
},
{
name: "Barbara Konnan", handle: "Homeowner", testimonial: "Steve was honest and straightforward about the cost, so there were no surprises.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/cheerful-young-businesswoman-smiling-camera_74855-4022.jpg?_wi=1"
imageSrc: "http://img.b2bpic.net/free-photo/cheerful-young-businesswoman-smiling-camera_74855-4022.jpg"
},
{
name: "Dylan McLean", handle: "Homeowner", testimonial: "Our entire experience with this company was fantastic from start to finish.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/close-up-excited-person-portrait_23-2151186640.jpg?_wi=1"
imageSrc: "http://img.b2bpic.net/free-photo/close-up-excited-person-portrait_23-2151186640.jpg"
},
{
name: "David Bailey", handle: "Homeowner", testimonial: "Very quick response and very professional remodel.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/business-woman-sitting-table_23-2148095754.jpg?_wi=1"
imageSrc: "http://img.b2bpic.net/free-photo/business-woman-sitting-table_23-2148095754.jpg"
}
]}
testimonialRotationInterval={5000}
@@ -87,16 +88,16 @@ export default function LandingPage() {
useInvertedBackground={false}
testimonials={[
{
id: "1", title: "Master Remodelers with Vision", quote: "Amazing!!! These guys are real masters of remodeling… imaginative and attentive to our vision. They understood exactly what we wanted and made it happen.", name: "Perry Darcy", role: "Homeowner, Thousand Oaks", imageSrc: "http://img.b2bpic.net/free-photo/blond-businessman-happy-expression_1194-3796.jpg?_wi=2"
id: "1", title: "Master Remodelers with Vision", quote: "Amazing!!! These guys are real masters of remodeling… imaginative and attentive to our vision. They understood exactly what we wanted and made it happen.", name: "Perry Darcy", role: "Homeowner, Thousand Oaks", imageSrc: "http://img.b2bpic.net/free-photo/blond-businessman-happy-expression_1194-3796.jpg"
},
{
id: "2", title: "Honest and Transparent", quote: "Steve was honest and straightforward about the cost, so there were no surprises. That kind of transparency is exactly what we needed.", name: "Barbara Konnan", role: "Homeowner, Thousand Oaks", imageSrc: "http://img.b2bpic.net/free-photo/cheerful-young-businesswoman-smiling-camera_74855-4022.jpg?_wi=2"
id: "2", title: "Honest and Transparent", quote: "Steve was honest and straightforward about the cost, so there were no surprises. That kind of transparency is exactly what we needed.", name: "Barbara Konnan", role: "Homeowner, Thousand Oaks", imageSrc: "http://img.b2bpic.net/free-photo/cheerful-young-businesswoman-smiling-camera_74855-4022.jpg"
},
{
id: "3", title: "Fantastic from Start to Finish", quote: "Our entire experience with this company was fantastic from start to finish. The team was professional, responsive, and detail-oriented.", name: "Dylan McLean", role: "Homeowner, Thousand Oaks", imageSrc: "http://img.b2bpic.net/free-photo/close-up-excited-person-portrait_23-2151186640.jpg?_wi=2"
id: "3", title: "Fantastic from Start to Finish", quote: "Our entire experience with this company was fantastic from start to finish. The team was professional, responsive, and detail-oriented.", name: "Dylan McLean", role: "Homeowner, Thousand Oaks", imageSrc: "http://img.b2bpic.net/free-photo/close-up-excited-person-portrait_23-2151186640.jpg"
},
{
id: "4", title: "Quick Response, Professional Work", quote: "Very quick response and very professional remodel. We appreciated how well-organized they kept the project site and how respectful they were.", name: "David Bailey", role: "Homeowner, Thousand Oaks", imageSrc: "http://img.b2bpic.net/free-photo/business-woman-sitting-table_23-2148095754.jpg?_wi=2"
id: "4", title: "Quick Response, Professional Work", quote: "Very quick response and very professional remodel. We appreciated how well-organized they kept the project site and how respectful they were.", name: "David Bailey", role: "Homeowner, Thousand Oaks", imageSrc: "http://img.b2bpic.net/free-photo/business-woman-sitting-table_23-2148095754.jpg"
}
]}
/>
@@ -116,37 +117,37 @@ export default function LandingPage() {
{
id: 1,
title: "Kitchen Remodeling", description: "Transform your kitchen into the centerpiece of your home with custom cabinetry, premium countertops, and elegant layouts designed for both beauty and function.", phoneOne: {
imageSrc: "http://img.b2bpic.net/free-photo/woman-calling-plumber-solve-kitchen-problems_23-2150990676.jpg?_wi=1"
imageSrc: "http://img.b2bpic.net/free-photo/woman-calling-plumber-solve-kitchen-problems_23-2150990676.jpg"
},
phoneTwo: {
imageSrc: "http://img.b2bpic.net/free-photo/woman-calling-plumber-solve-kitchen-problems_23-2150990676.jpg?_wi=2"
imageSrc: "http://img.b2bpic.net/free-photo/woman-calling-plumber-solve-kitchen-problems_23-2150990676.jpg"
}
},
{
id: 2,
title: "Bathroom Remodeling", description: "Luxury bathrooms with walk-in showers, modern vanities, and spa-style finishes that turn your daily routine into a relaxing retreat.", phoneOne: {
imageSrc: "http://img.b2bpic.net/free-photo/blonde-girl-posing-bathroom-with-bath-robe_23-2148147507.jpg?_wi=1"
imageSrc: "http://img.b2bpic.net/free-photo/blonde-girl-posing-bathroom-with-bath-robe_23-2148147507.jpg"
},
phoneTwo: {
imageSrc: "http://img.b2bpic.net/free-photo/blonde-girl-posing-bathroom-with-bath-robe_23-2148147507.jpg?_wi=2"
imageSrc: "http://img.b2bpic.net/free-photo/blonde-girl-posing-bathroom-with-bath-robe_23-2148147507.jpg"
}
},
{
id: 3,
title: "Home Additions", description: "Add space and value to your home with seamless additions designed to match your property's existing architecture and your family's growing needs.", phoneOne: {
imageSrc: "http://img.b2bpic.net/free-photo/bottom-view-shot-white-brown-building-roof-from-inside_181624-10447.jpg?_wi=1"
imageSrc: "http://img.b2bpic.net/free-photo/bottom-view-shot-white-brown-building-roof-from-inside_181624-10447.jpg"
},
phoneTwo: {
imageSrc: "http://img.b2bpic.net/free-photo/bottom-view-shot-white-brown-building-roof-from-inside_181624-10447.jpg?_wi=2"
imageSrc: "http://img.b2bpic.net/free-photo/bottom-view-shot-white-brown-building-roof-from-inside_181624-10447.jpg"
}
},
{
id: 4,
title: "Interior Renovations", description: "From living rooms to full-home makeovers, we create beautiful, functional spaces tailored to your vision and lifestyle.", phoneOne: {
imageSrc: "http://img.b2bpic.net/free-photo/messy-desk-office_23-2147668766.jpg?_wi=1"
imageSrc: "http://img.b2bpic.net/free-photo/messy-desk-office_23-2147668766.jpg"
},
phoneTwo: {
imageSrc: "http://img.b2bpic.net/free-photo/messy-desk-office_23-2147668766.jpg?_wi=2"
imageSrc: "http://img.b2bpic.net/free-photo/messy-desk-office_23-2147668766.jpg"
}
}
]}
@@ -154,7 +155,6 @@ export default function LandingPage() {
textboxLayout="default"
useInvertedBackground={false}
animationType="slide-up"
mediaAnimation="slide-up"
/>
</div>
@@ -167,7 +167,7 @@ export default function LandingPage() {
description="Licensed & Insured | Transparent Pricing | Local Experts | 10+ Years Experience"
subdescription="Based on the trust and praise from hundreds of satisfied homeowners throughout Thousand Oaks and the surrounding communities."
icon={CheckCircle}
imageSrc="http://img.b2bpic.net/free-photo/builtin-dishwasher-door-slightly-open-smart-kitchen_169016-71056.jpg?_wi=2"
imageSrc="http://img.b2bpic.net/free-photo/builtin-dishwasher-door-slightly-open-smart-kitchen_169016-71056.jpg"
imageAlt="Professional remodeling team at work"
mediaAnimation="slide-up"
useInvertedBackground={false}

View File

@@ -1,51 +1,46 @@
"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;
className?: string;
fontSize?: number;
fontWeight?: 'light' | 'normal' | 'medium' | 'semibold' | 'bold' | 'extrabold';
}
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,
className = '',
fontSize = 24,
fontWeight = 'bold',
}) => {
const fontWeightMap = {
light: 300,
normal: 400,
medium: 500,
semibold: 600,
bold: 700,
extrabold: 800,
};
return (
<svg
ref={svgRef}
viewBox={viewBox}
className={cls("w-full", className)}
style={{ aspectRatio: aspectRatio }}
preserveAspectRatio="none"
role="img"
aria-label={`${logoText} logo`}
viewBox={`0 0 ${text.length * 20} 60`}
className={`w-full h-auto ${className}`}
xmlns="http://www.w3.org/2000/svg"
>
<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="50%"
y="50%"
textAnchor="middle"
dominantBaseline="middle"
fontSize={fontSize}
fontWeight={fontWeightMap[fontWeight]}
fill="currentColor"
>
{logoText}
{text}
</text>
</svg>
);
});
};
SvgTextLogo.displayName = "SvgTextLogo";
export default SvgTextLogo;
export default SvgTextLogo;