Merge version_1 into main #2

Merged
bender merged 2 commits from version_1 into main 2026-03-10 19:47:54 +00:00
2 changed files with 52 additions and 51 deletions

View File

@@ -48,7 +48,7 @@ export default function LandingPage() {
description="We've been serving the local community for years with reliable, high-quality service backed by expertise and genuine care for your satisfaction."
tag="Trusted Local Provider"
tagIcon={CheckCircle}
tagAnimation="entrance-slide"
tagAnimation="none"
imageSrc="http://img.b2bpic.net/free-photo/medium-shot-people-looking-jewelry_23-2149726818.jpg"
imageAlt="Professional service team at work"
imagePosition="right"
@@ -58,19 +58,19 @@ export default function LandingPage() {
{ text: "Request Service", href: "#contact" },
{ text: "Learn More", href: "#services" }
]}
buttonAnimation="entrance-slide"
buttonAnimation="none"
testimonials={[
{
name: "Sarah Johnson", handle: "Homeowner", testimonial: "Excellent service! Professional team arrived on time and completed the work perfectly. Highly recommend!", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1626.jpg?_wi=1"
imageSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1626.jpg"
},
{
name: "Michael Chen", handle: "Business Owner", testimonial: "Reliable and trustworthy. They solved our problem quickly with minimal disruption to our operations.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1563.jpg?_wi=1"
imageSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1563.jpg"
},
{
name: "Emily Rodriguez", handle: "Property Manager", testimonial: "Been using their services for 3 years. Consistently professional and fair pricing. Best in the area!", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiley-woman-library_23-2149204737.jpg?_wi=1"
imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiley-woman-library_23-2149204737.jpg"
}
]}
testimonialRotationInterval={5000}
@@ -88,7 +88,7 @@ export default function LandingPage() {
useInvertedBackground={true}
showBorder={true}
buttons={[{ text: "View Our Services", href: "#services" }]}
buttonAnimation="entrance-slide"
buttonAnimation="none"
ariaLabel="About section"
/>
</div>
@@ -99,7 +99,7 @@ export default function LandingPage() {
description="Comprehensive solutions designed to meet all your service needs with professional expertise and reliable support."
tag="What We Offer"
tagIcon={Sparkles}
tagAnimation="entrance-slide"
tagAnimation="none"
features={[
{ icon: Wrench, title: "Expert Repairs", description: "Fast, professional repairs backed by years of expertise and quality craftsmanship." },
{ icon: Shield, title: "Guaranteed Work", description: "All our work comes with comprehensive warranties and ongoing support for your peace of mind." },
@@ -121,7 +121,7 @@ export default function LandingPage() {
description="Join hundreds of satisfied customers who rely on our professional service and commitment to excellence."
tag="Industry Partners"
tagIcon={Award}
tagAnimation="entrance-slide"
tagAnimation="none"
names={[
"Property Management Pro", "Local Home Builders", "Commercial Maintenance Group", "Residential Services Network", "Business Operations Co", "Community Service Alliance", "Quality Assurance Partners", "Customer Care Network"
]}
@@ -129,7 +129,7 @@ export default function LandingPage() {
useInvertedBackground={true}
speed={40}
showCard={true}
buttonAnimation="entrance-slide"
buttonAnimation="none"
ariaLabel="Social proof section"
/>
</div>
@@ -140,7 +140,7 @@ export default function LandingPage() {
description="Real testimonials from satisfied customers who trust us with their most important needs."
tag="Customer Reviews"
tagIcon={Heart}
tagAnimation="entrance-slide"
tagAnimation="none"
textboxLayout="default"
useInvertedBackground={false}
testimonials={[
@@ -154,13 +154,13 @@ export default function LandingPage() {
id: "3", name: "Robert Thompson, Property Manager", date: "Date: January 22, 2024", title: "Professional and reliable every single time", quote: "Managing multiple properties requires a service provider I can depend on. This team has consistently delivered professional, efficient work across all our locations. They're my first call.", tag: "Property Management", avatarSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1702.jpg", imageSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1702.jpg"
},
{
id: "4", name: "Lisa Anderson, Office Manager", date: "Date: December 5, 2023", title: "They solved our biggest challenge!", quote: "We had been struggling with ongoing issues for months. This team came in, diagnosed the problem correctly, and fixed it efficiently. Their expertise and professionalism are unmatched. Highly recommended!", tag: "Corporate Client", avatarSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1626.jpg", imageSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1626.jpg?_wi=2"
id: "4", name: "Lisa Anderson, Office Manager", date: "Date: December 5, 2023", title: "They solved our biggest challenge!", quote: "We had been struggling with ongoing issues for months. This team came in, diagnosed the problem correctly, and fixed it efficiently. Their expertise and professionalism are unmatched. Highly recommended!", tag: "Corporate Client", avatarSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1626.jpg", imageSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1626.jpg"
},
{
id: "5", name: "Marcus Washington, Small Business Owner", date: "Date: November 18, 2023", title: "Outstanding customer care", quote: "What sets them apart is their commitment to customer satisfaction. They go above and beyond, communicate clearly, and stand behind their work. This is a company that truly cares about its clients.", tag: "Small Business", avatarSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1563.jpg", imageSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1563.jpg?_wi=2"
id: "5", name: "Marcus Washington, Small Business Owner", date: "Date: November 18, 2023", title: "Outstanding customer care", quote: "What sets them apart is their commitment to customer satisfaction. They go above and beyond, communicate clearly, and stand behind their work. This is a company that truly cares about its clients.", tag: "Small Business", avatarSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1563.jpg", imageSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1563.jpg"
},
{
id: "6", name: "Patricia Garcia, Building Contractor", date: "Date: October 30, 2023", title: "Reliable partner for ongoing projects", quote: "We've partnered with them on multiple projects and they've never let us down. Consistent quality, professional team, and fair pricing. They're an integral part of our project success.", tag: "Contractor Partnership", avatarSrc: "http://img.b2bpic.net/free-photo/close-up-smiley-woman-library_23-2149204737.jpg", imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiley-woman-library_23-2149204737.jpg?_wi=2"
id: "6", name: "Patricia Garcia, Building Contractor", date: "Date: October 30, 2023", title: "Reliable partner for ongoing projects", quote: "We've partnered with them on multiple projects and they've never let us down. Consistent quality, professional team, and fair pricing. They're an integral part of our project success.", tag: "Contractor Partnership", avatarSrc: "http://img.b2bpic.net/free-photo/close-up-smiley-woman-library_23-2149204737.jpg", imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiley-woman-library_23-2149204737.jpg"
}
]}
ariaLabel="Customer testimonials section"
@@ -173,12 +173,12 @@ export default function LandingPage() {
description="Find answers to common questions about our services, pricing, and how we work."
tag="Help & Support"
tagIcon={HelpCircle}
tagAnimation="entrance-slide"
tagAnimation="none"
imageSrc="http://img.b2bpic.net/free-photo/people-working-call-center_23-2149288183.jpg"
imageAlt="Customer support help desk team"
mediaAnimation="slide-up"
mediaPosition="left"
faqsAnimation="entrance-slide"
faqsAnimation="none"
textboxLayout="default"
useInvertedBackground={true}
animationType="smooth"
@@ -211,14 +211,14 @@ export default function LandingPage() {
<ContactCTA
tag="Ready to Get Started?"
tagIcon={Zap}
tagAnimation="entrance-slide"
tagAnimation="none"
title="Get Your Free Quote Today"
description="Contact us now for a complimentary consultation and detailed estimate. Our team is ready to help solve your service needs with professional expertise and genuine care."
buttons={[
{ text: "Call Us Now", href: "tel:+1-555-123-4567" },
{ text: "Request Service Online", href: "#" }
]}
buttonAnimation="entrance-slide"
buttonAnimation="none"
background={{ variant: "radial-gradient" }}
useInvertedBackground={true}
ariaLabel="Contact us section"

View File

@@ -1,51 +1,52 @@
"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?: 'normal' | 'bold' | 'lighter';
letterSpacing?: number;
fill?: string;
textDecoration?: 'none' | 'underline' | 'overline' | 'line-through';
}
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',
letterSpacing = 0,
fill = 'currentColor',
textDecoration = 'none',
}) => {
// Calculate approximate text width
const charWidth = fontSize * 0.6;
const textWidth = text.length * charWidth + letterSpacing * (text.length - 1);
const padding = fontSize * 0.2;
const width = textWidth + padding * 2;
const height = fontSize * 1.5;
return (
<svg
ref={svgRef}
viewBox={viewBox}
className={cls("w-full", className)}
style={{ aspectRatio: aspectRatio }}
preserveAspectRatio="none"
viewBox={`0 0 ${width} ${height}`}
className={className}
role="img"
aria-label={`${logoText} logo`}
aria-label={text}
>
<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}
fontSize={fontSize}
fontWeight={fontWeight}
letterSpacing={letterSpacing}
fill={fill}
textDecoration={textDecoration}
dominantBaseline="hanging"
>
{logoText}
{text}
</text>
</svg>
);
});
SvgTextLogo.displayName = "SvgTextLogo";
};
export default SvgTextLogo;