Merge version_1 into main #2
@@ -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"
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user