Merge version_1 into main #2
@@ -12,7 +12,7 @@ import MetricCardTwo from '@/components/sections/metrics/MetricCardTwo';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import ContactText from '@/components/sections/contact/ContactText';
|
||||
import FooterBaseCard from '@/components/sections/footer/FooterBaseCard';
|
||||
import { Heart, Paw, Sparkles } from 'lucide-react';
|
||||
import { Heart, Sparkles } from 'lucide-react';
|
||||
|
||||
export default function LandingPage() {
|
||||
return (
|
||||
@@ -51,7 +51,7 @@ export default function LandingPage() {
|
||||
{ text: "Free Meet & Greet", href: "#contact" }
|
||||
]}
|
||||
layoutOrder="default"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/woman-summer-forest-playing-with-dog_1157-32784.jpg?_wi=1"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/woman-summer-forest-playing-with-dog_1157-32784.jpg"
|
||||
imageAlt="Happy dog on a premium walk"
|
||||
frameStyle="card"
|
||||
mediaAnimation="slide-up"
|
||||
@@ -67,22 +67,22 @@ export default function LandingPage() {
|
||||
animationType="slide-up"
|
||||
testimonials={[
|
||||
{
|
||||
id: "1", name: "Sarah M.", handle: "Golden Retriever Mom", testimonial: "Best dog walker we've ever had. Our golden retriever waits by the door every morning!", imageSrc: "http://img.b2bpic.net/free-photo/young-girl-husky_1328-2395.jpg?_wi=1", imageAlt: "Sarah M."
|
||||
id: "1", name: "Sarah M.", handle: "Golden Retriever Mom", testimonial: "Best dog walker we've ever had. Our golden retriever waits by the door every morning!", imageSrc: "http://img.b2bpic.net/free-photo/young-girl-husky_1328-2395.jpg", imageAlt: "Sarah M."
|
||||
},
|
||||
{
|
||||
id: "2", name: "Jason L.", handle: "Labrador Owner", testimonial: "Super reliable and professional. Our dog comes back happy and tired every time. Highly recommend.", imageSrc: "http://img.b2bpic.net/free-photo/handsome-adult-male-holding-pet-while-working_23-2148694505.jpg?_wi=1", imageAlt: "Jason L."
|
||||
id: "2", name: "Jason L.", handle: "Labrador Owner", testimonial: "Super reliable and professional. Our dog comes back happy and tired every time. Highly recommend.", imageSrc: "http://img.b2bpic.net/free-photo/handsome-adult-male-holding-pet-while-working_23-2148694505.jpg", imageAlt: "Jason L."
|
||||
},
|
||||
{
|
||||
id: "3", name: "Emily R.", handle: "Busy Professional", testimonial: "Peace of mind knowing my pup is in great hands. Professional service, real-time updates, and genuine care.", imageSrc: "http://img.b2bpic.net/free-photo/elegant-stylish-girl-spring-park_1157-23140.jpg", imageAlt: "Emily R."
|
||||
},
|
||||
{
|
||||
id: "4", name: "David K.", handle: "Terrier Enthusiast", testimonial: "Outstanding service. GPS tracking and photo updates keep me connected. Worth every penny for my furry friend.", imageSrc: "http://img.b2bpic.net/free-photo/pretty-woman-with-her-cute-dog-vacation_1303-10614.jpg?_wi=1", imageAlt: "David K."
|
||||
id: "4", name: "David K.", handle: "Terrier Enthusiast", testimonial: "Outstanding service. GPS tracking and photo updates keep me connected. Worth every penny for my furry friend.", imageSrc: "http://img.b2bpic.net/free-photo/pretty-woman-with-her-cute-dog-vacation_1303-10614.jpg", imageAlt: "David K."
|
||||
},
|
||||
{
|
||||
id: "5", name: "Michelle T.", handle: "Poodle Parent", testimonial: "Trustworthy, caring, and professional. My poodle loves her daily walks and comes back relaxed.", imageSrc: "http://img.b2bpic.net/free-photo/young-girl-husky_1328-2395.jpg?_wi=2", imageAlt: "Michelle T."
|
||||
id: "5", name: "Michelle T.", handle: "Poodle Parent", testimonial: "Trustworthy, caring, and professional. My poodle loves her daily walks and comes back relaxed.", imageSrc: "http://img.b2bpic.net/free-photo/young-girl-husky_1328-2395.jpg", imageAlt: "Michelle T."
|
||||
},
|
||||
{
|
||||
id: "6", name: "Robert W.", handle: "German Shepherd Owner", testimonial: "Five-star service consistently. Flexible scheduling and personalized care make a real difference.", imageSrc: "http://img.b2bpic.net/free-photo/handsome-adult-male-holding-pet-while-working_23-2148694505.jpg?_wi=2", imageAlt: "Robert W."
|
||||
id: "6", name: "Robert W.", handle: "German Shepherd Owner", testimonial: "Five-star service consistently. Flexible scheduling and personalized care make a real difference.", imageSrc: "http://img.b2bpic.net/free-photo/handsome-adult-male-holding-pet-while-working_23-2148694505.jpg", imageAlt: "Robert W."
|
||||
}
|
||||
]}
|
||||
/>
|
||||
@@ -97,22 +97,22 @@ export default function LandingPage() {
|
||||
animationType="slide-up"
|
||||
plans={[
|
||||
{
|
||||
id: "standard", badge: "Standard Walk", badgeIcon: Paw,
|
||||
price: "$25", subtitle: "Perfect for daily exercise", buttons: [{ text: "Book Now", href: "#contact" }],
|
||||
id: "standard", badge: "Standard Walk", badgeIcon: undefined,
|
||||
price: 25, subtitle: "Perfect for daily exercise", buttons: [{ text: "Book Now", href: "#contact" }],
|
||||
features: [
|
||||
"30-minute walk", "Local neighborhood routes", "Photo updates", "GPS tracking", "Personalized care notes"
|
||||
]
|
||||
},
|
||||
{
|
||||
id: "adventure", badge: "Adventure Walk", badgeIcon: Sparkles,
|
||||
price: "$40", subtitle: "For the active pup", buttons: [{ text: "Book Now", href: "#contact" }],
|
||||
price: 40, subtitle: "For the active pup", buttons: [{ text: "Book Now", href: "#contact" }],
|
||||
features: [
|
||||
"60-minute walk", "Park or trail exploration", "High-energy activities", "Premium photo updates", "Real-time GPS tracking", "Detailed activity report"
|
||||
]
|
||||
},
|
||||
{
|
||||
id: "puppy", badge: "Puppy Care", badgeIcon: Heart,
|
||||
price: "$30", subtitle: "Extra attention for young dogs", buttons: [{ text: "Book Now", href: "#contact" }],
|
||||
price: 30, subtitle: "Extra attention for young dogs", buttons: [{ text: "Book Now", href: "#contact" }],
|
||||
features: [
|
||||
"30-45 minute walk", "Gentle socialization", "Training reinforcement", "Frequent breaks", "Safe environment focus", "Parent communication"
|
||||
]
|
||||
@@ -130,16 +130,16 @@ export default function LandingPage() {
|
||||
useInvertedBackground={false}
|
||||
features={[
|
||||
{
|
||||
id: "1", title: "GPS-Tracked Walks", description: "Real-time GPS tracking gives you peace of mind knowing exactly where your pup is during every walk.", imageSrc: "http://img.b2bpic.net/free-photo/woman-summer-forest-playing-with-dog_1157-32784.jpg?_wi=2", imageAlt: "GPS tracking technology"
|
||||
id: "1", title: "GPS-Tracked Walks", description: "Real-time GPS tracking gives you peace of mind knowing exactly where your pup is during every walk.", imageSrc: "http://img.b2bpic.net/free-photo/woman-summer-forest-playing-with-dog_1157-32784.jpg", imageAlt: "GPS tracking technology"
|
||||
},
|
||||
{
|
||||
id: "2", title: "Photo Updates", description: "Receive beautiful photos of your dog enjoying their walk. Stay connected throughout the day.", imageSrc: "http://img.b2bpic.net/free-photo/young-girl-husky_1328-2395.jpg?_wi=3", imageAlt: "Photo updates"
|
||||
id: "2", title: "Photo Updates", description: "Receive beautiful photos of your dog enjoying their walk. Stay connected throughout the day.", imageSrc: "http://img.b2bpic.net/free-photo/young-girl-husky_1328-2395.jpg", imageAlt: "Photo updates"
|
||||
},
|
||||
{
|
||||
id: "3", title: "Fully Insured & Bonded", description: "Professional insurance coverage and background verification for complete peace of mind.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-woman-with-her-beautiful-dog_1157-36177.jpg?_wi=1", imageAlt: "Professional certification"
|
||||
id: "3", title: "Fully Insured & Bonded", description: "Professional insurance coverage and background verification for complete peace of mind.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-woman-with-her-beautiful-dog_1157-36177.jpg", imageAlt: "Professional certification"
|
||||
},
|
||||
{
|
||||
id: "4", title: "Flexible Scheduling", description: "Book walks on your schedule. Morning, afternoon, or evening - we adapt to your lifestyle.", imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-cheerful-labrador-standing-two-feet-field-sunlight-daytime_181624-40068.jpg?_wi=1", imageAlt: "Flexible scheduling"
|
||||
id: "4", title: "Flexible Scheduling", description: "Book walks on your schedule. Morning, afternoon, or evening - we adapt to your lifestyle.", imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-cheerful-labrador-standing-two-feet-field-sunlight-daytime_181624-40068.jpg", imageAlt: "Flexible scheduling"
|
||||
}
|
||||
]}
|
||||
/>
|
||||
@@ -164,13 +164,13 @@ export default function LandingPage() {
|
||||
{
|
||||
id: "walkers", groupTitle: "Certified Dog Walkers", members: [
|
||||
{
|
||||
id: "1", title: "Ben Thompson", subtitle: "Lead Dog Walker & Founder", detail: "10+ years experience | Certified Pet Care Professional", imageSrc: "http://img.b2bpic.net/free-photo/portrait-woman-with-her-beautiful-dog_1157-36177.jpg?_wi=2", imageAlt: "Ben Thompson"
|
||||
id: "1", title: "Ben Thompson", subtitle: "Lead Dog Walker & Founder", detail: "10+ years experience | Certified Pet Care Professional", imageSrc: "http://img.b2bpic.net/free-photo/portrait-woman-with-her-beautiful-dog_1157-36177.jpg", imageAlt: "Ben Thompson"
|
||||
},
|
||||
{
|
||||
id: "2", title: "Lisa Chen", subtitle: "Senior Dog Walker", detail: "8 years experience | Specialized in large breeds", imageSrc: "http://img.b2bpic.net/free-photo/handsome-adult-male-holding-pet-while-working_23-2148694505.jpg?_wi=3", imageAlt: "Lisa Chen"
|
||||
id: "2", title: "Lisa Chen", subtitle: "Senior Dog Walker", detail: "8 years experience | Specialized in large breeds", imageSrc: "http://img.b2bpic.net/free-photo/handsome-adult-male-holding-pet-while-working_23-2148694505.jpg", imageAlt: "Lisa Chen"
|
||||
},
|
||||
{
|
||||
id: "3", title: "Marcus Johnson", subtitle: "Adventure Walk Specialist", detail: "6 years experience | Trail and park expert", imageSrc: "http://img.b2bpic.net/free-photo/pretty-woman-with-her-cute-dog-vacation_1303-10614.jpg?_wi=2", imageAlt: "Marcus Johnson"
|
||||
id: "3", title: "Marcus Johnson", subtitle: "Adventure Walk Specialist", detail: "6 years experience | Trail and park expert", imageSrc: "http://img.b2bpic.net/free-photo/pretty-woman-with-her-cute-dog-vacation_1303-10614.jpg", imageAlt: "Marcus Johnson"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -205,7 +205,7 @@ export default function LandingPage() {
|
||||
faqsAnimation="slide-up"
|
||||
mediaAnimation="slide-up"
|
||||
mediaPosition="left"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/closeup-shot-cheerful-labrador-standing-two-feet-field-sunlight-daytime_181624-40068.jpg?_wi=2"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/closeup-shot-cheerful-labrador-standing-two-feet-field-sunlight-daytime_181624-40068.jpg"
|
||||
imageAlt="Dogs enjoying outdoor activities"
|
||||
faqs={[
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
fontSize?: number;
|
||||
fontFamily?: string;
|
||||
fontWeight?: string | number;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
const SvgTextLogo = memo<SvgTextLogoProps>(function SvgTextLogo({
|
||||
logoText,
|
||||
adjustHeightFactor,
|
||||
verticalAlign = "top",
|
||||
className = "",
|
||||
}) {
|
||||
const { svgRef, textRef, viewBox, aspectRatio } = useSvgTextLogo(logoText, false, adjustHeightFactor);
|
||||
|
||||
export const SvgTextLogo: React.FC<SvgTextLogoProps> = ({
|
||||
text,
|
||||
fontSize = 48,
|
||||
fontFamily = 'inherit',
|
||||
fontWeight = 'bold',
|
||||
className = '',
|
||||
}) => {
|
||||
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 * fontSize * 0.6} ${fontSize * 1.2}`}
|
||||
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"
|
||||
}}
|
||||
y={fontSize * 0.8}
|
||||
fontSize={fontSize}
|
||||
fontFamily={fontFamily}
|
||||
fontWeight={fontWeight}
|
||||
fill="currentColor"
|
||||
dominantBaseline="auto"
|
||||
>
|
||||
{logoText}
|
||||
{text}
|
||||
</text>
|
||||
</svg>
|
||||
);
|
||||
});
|
||||
|
||||
SvgTextLogo.displayName = "SvgTextLogo";
|
||||
};
|
||||
|
||||
export default SvgTextLogo;
|
||||
|
||||
Reference in New Issue
Block a user