diff --git a/src/app/page.tsx b/src/app/page.tsx index 8691f35..75ad04d 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -45,7 +45,7 @@ export default function LandingPage() { { text: "Get a Roof Repair Estimate", href: "contact" }, { text: "Call Now", href: "tel:+1-555-roof-1" } ]} - imageSrc="http://img.b2bpic.net/free-photo/looking-up-through-history-elegant-staircase-old-building_169016-69867.jpg?_wi=1" + imageSrc="http://img.b2bpic.net/free-photo/looking-up-through-history-elegant-staircase-old-building_169016-69867.jpg" imageAlt="Luxury home roof and architecture" showDimOverlay={true} buttonAnimation="slide-up" @@ -63,6 +63,7 @@ export default function LandingPage() { ]} useInvertedBackground={true} mediaAnimation="none" + metricsAnimation="none" /> @@ -76,27 +77,27 @@ export default function LandingPage() { features={[ { id: 1, - title: "Roof Leak Repair", description: "Fast diagnosis and targeted repair for active leaks before they become interior damage.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-with-helmet_23-2149343651.jpg?_wi=1", imageAlt: "Roof leak repair" + title: "Roof Leak Repair", description: "Fast diagnosis and targeted repair for active leaks before they become interior damage.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-with-helmet_23-2149343651.jpg", imageAlt: "Roof leak repair" }, { id: 2, - title: "Shingle Repair", description: "Missing, lifted, cracked, or storm-damaged shingles repaired cleanly and correctly.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-with-protection-helmet_23-2149343636.jpg?_wi=1", imageAlt: "Shingle damage repair" + title: "Shingle Repair", description: "Missing, lifted, cracked, or storm-damaged shingles repaired cleanly and correctly.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-with-protection-helmet_23-2149343636.jpg", imageAlt: "Shingle damage repair" }, { id: 3, - title: "Chimney & Flashing Repair", description: "A lot of leaks start around chimneys and flashing. We fix the problem at the source.", imageSrc: "http://img.b2bpic.net/free-photo/photo-metal-texture-pattern_58702-13502.jpg?_wi=1", imageAlt: "Chimney and flashing repair" + title: "Chimney & Flashing Repair", description: "A lot of leaks start around chimneys and flashing. We fix the problem at the source.", imageSrc: "http://img.b2bpic.net/free-photo/photo-metal-texture-pattern_58702-13502.jpg", imageAlt: "Chimney and flashing repair" }, { id: 4, - title: "Roof Vent Repair", description: "Damaged or aging vents replaced to help prevent leaks and moisture issues.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-with-protection-helmet_23-2149343636.jpg?_wi=2", imageAlt: "Roof vent repair" + title: "Roof Vent Repair", description: "Damaged or aging vents replaced to help prevent leaks and moisture issues.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-with-protection-helmet_23-2149343636.jpg", imageAlt: "Roof vent repair" }, { id: 5, - title: "Gutter Repair & Cleaning", description: "Overflow and drainage problems fixed so water moves away from your home the way it should.", imageSrc: "http://img.b2bpic.net/free-photo/smiling-young-man-talking-mobile-phone-standing-near-window_23-2148137451.jpg?_wi=1", imageAlt: "Gutter repair and cleaning" + title: "Gutter Repair & Cleaning", description: "Overflow and drainage problems fixed so water moves away from your home the way it should.", imageSrc: "http://img.b2bpic.net/free-photo/smiling-young-man-talking-mobile-phone-standing-near-window_23-2148137451.jpg", imageAlt: "Gutter repair and cleaning" }, { id: 6, - title: "Ice Dam & Storm Damage Repair", description: "Urgent repairs after winter weather, wind, or sudden visible roof damage.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-with-protection-helmet_23-2149343636.jpg?_wi=3", imageAlt: "Storm damage repair" + title: "Ice Dam & Storm Damage Repair", description: "Urgent repairs after winter weather, wind, or sudden visible roof damage.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-with-protection-helmet_23-2149343636.jpg", imageAlt: "Storm damage repair" } ]} /> @@ -113,6 +114,7 @@ export default function LandingPage() { ]} useInvertedBackground={false} mediaAnimation="none" + metricsAnimation="none" /> @@ -127,8 +129,8 @@ export default function LandingPage() { { src: "http://img.b2bpic.net/free-photo/portrait-man-drinking-coffee-construction-side_329181-3771.jpg", alt: "Customer testimonial" }, { src: "http://img.b2bpic.net/free-photo/front-view-young-female-dark-jacket-pink-background_179666-14386.jpg", alt: "Customer testimonial" } ]} - ratingAnimation="entrance-slide" - avatarsAnimation="entrance-slide" + ratingAnimation="slide-up" + avatarsAnimation="slide-up" useInvertedBackground={true} /> @@ -156,19 +158,19 @@ export default function LandingPage() { features={[ { id: 1, - title: "Contact Us", description: "Tell us what is happening with your roof. We listen and ask clarifying questions to understand your issue.", imageSrc: "http://img.b2bpic.net/free-photo/looking-up-through-history-elegant-staircase-old-building_169016-69867.jpg?_wi=2", imageAlt: "Initial contact" + title: "Contact Us", description: "Tell us what is happening with your roof. We listen and ask clarifying questions to understand your issue.", imageSrc: "http://img.b2bpic.net/free-photo/looking-up-through-history-elegant-staircase-old-building_169016-69867.jpg", imageAlt: "Initial contact" }, { id: 2, - title: "Schedule Your Visit", description: "We confirm timing clearly and keep communication straightforward. You know exactly when we will arrive.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-with-helmet_23-2149343651.jpg?_wi=2", imageAlt: "Schedule visit" + title: "Schedule Your Visit", description: "We confirm timing clearly and keep communication straightforward. You know exactly when we will arrive.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-with-helmet_23-2149343651.jpg", imageAlt: "Schedule visit" }, { id: 3, - title: "Inspection and Repair Plan", description: "We identify the issue and explain the best fix. No surprises, no pushy sales tactics.", imageSrc: "http://img.b2bpic.net/free-photo/photo-metal-texture-pattern_58702-13502.jpg?_wi=2", imageAlt: "Inspection" + title: "Inspection and Repair Plan", description: "We identify the issue and explain the best fix. No surprises, no pushy sales tactics.", imageSrc: "http://img.b2bpic.net/free-photo/photo-metal-texture-pattern_58702-13502.jpg", imageAlt: "Inspection" }, { id: 4, - title: "Repair Completed", description: "Fast, focused work with the goal of stopping damage and restoring protection to your roof.", imageSrc: "http://img.b2bpic.net/free-photo/smiling-young-man-talking-mobile-phone-standing-near-window_23-2148137451.jpg?_wi=2", imageAlt: "Repair completed" + title: "Repair Completed", description: "Fast, focused work with the goal of stopping damage and restoring protection to your roof.", imageSrc: "http://img.b2bpic.net/free-photo/smiling-young-man-talking-mobile-phone-standing-near-window_23-2148137451.jpg", imageAlt: "Repair completed" } ]} /> diff --git a/src/components/shared/SvgTextLogo/SvgTextLogo.tsx b/src/components/shared/SvgTextLogo/SvgTextLogo.tsx index f214190..a856c05 100644 --- a/src/components/shared/SvgTextLogo/SvgTextLogo.tsx +++ b/src/components/shared/SvgTextLogo/SvgTextLogo.tsx @@ -1,51 +1,39 @@ -"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; + textClassName?: string; + ariaLabel?: string; } -const SvgTextLogo = memo(function SvgTextLogo({ - logoText, - adjustHeightFactor, - verticalAlign = "top", - className = "", -}) { - const { svgRef, textRef, viewBox, aspectRatio } = useSvgTextLogo(logoText, false, adjustHeightFactor); +const SvgTextLogo: React.FC = ({ + text, + className = 'w-full h-auto', + textClassName = 'fill-foreground', + ariaLabel, +}) => { + const estimatedWidth = text.length * 60; + const viewBoxWidth = Math.max(estimatedWidth, 200); return ( - {logoText} + {text} ); -}); +}; -SvgTextLogo.displayName = "SvgTextLogo"; - -export default SvgTextLogo; +export default SvgTextLogo; \ No newline at end of file