Merge version_1 into main #2
192
src/app/page.tsx
192
src/app/page.tsx
@@ -9,7 +9,7 @@ import TestimonialAboutCard from "@/components/sections/about/TestimonialAboutCa
|
||||
import TestimonialCardTwelve from "@/components/sections/testimonial/TestimonialCardTwelve";
|
||||
import ContactFaq from "@/components/sections/contact/ContactFaq";
|
||||
import FooterCard from "@/components/sections/footer/FooterCard";
|
||||
import { Needle, Star, Calendar, Facebook, Instagram, Phone } from "lucide-react";
|
||||
import { Star, Calendar, Facebook, Instagram, Phone } from "lucide-react";
|
||||
|
||||
export default function HomePage() {
|
||||
return (
|
||||
@@ -36,9 +36,7 @@ export default function HomePage() {
|
||||
{ name: "Contact", id: "/contact" },
|
||||
]}
|
||||
button={{
|
||||
text: "Book Appointment",
|
||||
href: "/appointment",
|
||||
}}
|
||||
text: "Book Appointment", href: "/appointment"}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -48,20 +46,16 @@ export default function HomePage() {
|
||||
title="Perfect Fit. Every Time."
|
||||
description="Professional tailoring and alterations for suits, dresses, formalwear, and everyday clothing."
|
||||
tag="Welcome to Excellence"
|
||||
tagIcon={Needle}
|
||||
tagIcon={Star}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/side-view-woman-cutting-fabric_23-2148827137.jpg"
|
||||
imageAlt="Professional tailor working on clothing"
|
||||
showBlur={true}
|
||||
showDimOverlay={false}
|
||||
buttons={[
|
||||
{
|
||||
text: "Book an Appointment",
|
||||
href: "/appointment",
|
||||
},
|
||||
text: "Book an Appointment", href: "/appointment"},
|
||||
{
|
||||
text: "Call Now",
|
||||
href: "tel:+1-555-123-4567",
|
||||
},
|
||||
text: "Call Now", href: "tel:+1-555-123-4567"},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
@@ -76,93 +70,51 @@ export default function HomePage() {
|
||||
animationType="slide-up"
|
||||
features={[
|
||||
{
|
||||
id: "1",
|
||||
title: "Suit Tailoring",
|
||||
description:
|
||||
"Perfect fit for your business wardrobe. Expert jacket, pants, and vest alterations.",
|
||||
tag: "Professional",
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/fashion-designer-taking-measurement-blue-fabric-with-measuring-tape-table_23-2148180320.jpg?_wi=1",
|
||||
buttons: [
|
||||
id: "1", title: "Suit Tailoring", description:
|
||||
"Perfect fit for your business wardrobe. Expert jacket, pants, and vest alterations.", tag: "Professional", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/fashion-designer-taking-measurement-blue-fabric-with-measuring-tape-table_23-2148180320.jpg", buttons: [
|
||||
{
|
||||
text: "Schedule Now",
|
||||
href: "/appointment",
|
||||
},
|
||||
text: "Schedule Now", href: "/appointment"},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
title: "Dress Alterations",
|
||||
description:
|
||||
"Hemming, taking in, letting out, and custom adjustments for any occasion.",
|
||||
tag: "Elegant",
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/close-up-hand-holding-cardboard_23-2148875319.jpg?_wi=1",
|
||||
buttons: [
|
||||
id: "2", title: "Dress Alterations", description:
|
||||
"Hemming, taking in, letting out, and custom adjustments for any occasion.", tag: "Elegant", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/close-up-hand-holding-cardboard_23-2148875319.jpg", buttons: [
|
||||
{
|
||||
text: "Schedule Now",
|
||||
href: "/appointment",
|
||||
},
|
||||
text: "Schedule Now", href: "/appointment"},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
title: "Wedding Dress Alterations",
|
||||
description:
|
||||
"Premium service for your special day. Custom fitting and delicate fabric expertise.",
|
||||
tag: "Special Occasions",
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/women-making-preparations-wedding_23-2149184343.jpg?_wi=1",
|
||||
buttons: [
|
||||
id: "3", title: "Wedding Dress Alterations", description:
|
||||
"Premium service for your special day. Custom fitting and delicate fabric expertise.", tag: "Special Occasions", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/women-making-preparations-wedding_23-2149184343.jpg", buttons: [
|
||||
{
|
||||
text: "Schedule Now",
|
||||
href: "/appointment",
|
||||
},
|
||||
text: "Schedule Now", href: "/appointment"},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: "4",
|
||||
title: "Pants Hemming",
|
||||
description:
|
||||
"Quick turnaround hemming service for all trouser styles and fabrics.",
|
||||
tag: "Fast Service",
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/female-tailor-measuring-male-clients-shirt_23-2148834112.jpg",
|
||||
buttons: [
|
||||
id: "4", title: "Pants Hemming", description:
|
||||
"Quick turnaround hemming service for all trouser styles and fabrics.", tag: "Fast Service", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/female-tailor-measuring-male-clients-shirt_23-2148834112.jpg", buttons: [
|
||||
{
|
||||
text: "Schedule Now",
|
||||
href: "/appointment",
|
||||
},
|
||||
text: "Schedule Now", href: "/appointment"},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: "5",
|
||||
title: "Zipper Repair",
|
||||
description:
|
||||
"Expert repair and replacement for broken zippers on all garment types.",
|
||||
tag: "Repairs",
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/close-up-hands-placing-pin_1157-363.jpg",
|
||||
buttons: [
|
||||
id: "5", title: "Zipper Repair", description:
|
||||
"Expert repair and replacement for broken zippers on all garment types.", tag: "Repairs", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/close-up-hands-placing-pin_1157-363.jpg", buttons: [
|
||||
{
|
||||
text: "Schedule Now",
|
||||
href: "/appointment",
|
||||
},
|
||||
text: "Schedule Now", href: "/appointment"},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: "6",
|
||||
title: "Emergency Alterations",
|
||||
description:
|
||||
"Same-day and rush alterations available. Perfect for last-minute needs.",
|
||||
tag: "Urgent",
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/fashion-designer-taking-measurement-his-customer-s-back-with-yellow-measuring-tape_23-2148180303.jpg",
|
||||
buttons: [
|
||||
id: "6", title: "Emergency Alterations", description:
|
||||
"Same-day and rush alterations available. Perfect for last-minute needs.", tag: "Urgent", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/fashion-designer-taking-measurement-his-customer-s-back-with-yellow-measuring-tape_23-2148180303.jpg", buttons: [
|
||||
{
|
||||
text: "Schedule Now",
|
||||
href: "/appointment",
|
||||
},
|
||||
text: "Schedule Now", href: "/appointment"},
|
||||
],
|
||||
},
|
||||
]}
|
||||
@@ -177,7 +129,7 @@ export default function HomePage() {
|
||||
description="Quality Craftsmanship"
|
||||
subdescription="20+ Years of Experience"
|
||||
icon={Star}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/side-view-young-female-designer-working-sewing-machine_23-2147874998.jpg?_wi=1"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/side-view-young-female-designer-working-sewing-machine_23-2147874998.jpg"
|
||||
imageAlt="professional tailor expertise craftsmanship"
|
||||
mediaAnimation="slide-up"
|
||||
useInvertedBackground={false}
|
||||
@@ -193,40 +145,20 @@ export default function HomePage() {
|
||||
useInvertedBackground={false}
|
||||
testimonials={[
|
||||
{
|
||||
id: "1",
|
||||
name: "Sarah Mitchell",
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/expressive-young-woman-posing_344912-2424.jpg?_wi=1",
|
||||
imageAlt: "professional woman portrait headshot",
|
||||
},
|
||||
id: "1", name: "Sarah Mitchell", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/expressive-young-woman-posing_344912-2424.jpg", imageAlt: "professional woman portrait headshot"},
|
||||
{
|
||||
id: "2",
|
||||
name: "James Chen",
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/portrait-successful-young-businessman-with-his-arms-crossed-looking-camera_23-2148176207.jpg?_wi=1",
|
||||
imageAlt: "professional man portrait headshot",
|
||||
},
|
||||
id: "2", name: "James Chen", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/portrait-successful-young-businessman-with-his-arms-crossed-looking-camera_23-2148176207.jpg", imageAlt: "professional man portrait headshot"},
|
||||
{
|
||||
id: "3",
|
||||
name: "Emma Williams",
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/portrait-young-business-woman-standing-bu-office-building_1303-31732.jpg?_wi=1",
|
||||
imageAlt: "professional woman portrait headshot",
|
||||
},
|
||||
id: "3", name: "Emma Williams", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/portrait-young-business-woman-standing-bu-office-building_1303-31732.jpg", imageAlt: "professional woman portrait headshot"},
|
||||
{
|
||||
id: "4",
|
||||
name: "Michael Rodriguez",
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/close-up-businessman-with-tie_1098-2867.jpg",
|
||||
imageAlt: "professional man portrait headshot",
|
||||
},
|
||||
id: "4", name: "Michael Rodriguez", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/close-up-businessman-with-tie_1098-2867.jpg", imageAlt: "professional man portrait headshot"},
|
||||
{
|
||||
id: "5",
|
||||
name: "Lisa Thompson",
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/business-woman-working-home_23-2148162643.jpg",
|
||||
imageAlt: "professional woman portrait headshot",
|
||||
},
|
||||
id: "5", name: "Lisa Thompson", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/business-woman-working-home_23-2148162643.jpg", imageAlt: "professional woman portrait headshot"},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
@@ -236,36 +168,22 @@ export default function HomePage() {
|
||||
<ContactFaq
|
||||
faqs={[
|
||||
{
|
||||
id: "1",
|
||||
title: "What are your turnaround times?",
|
||||
content:
|
||||
"Standard alterations typically take 5-7 business days. Express service (2-3 days) and same-day emergency alterations are available.",
|
||||
},
|
||||
id: "1", title: "What are your turnaround times?", content:
|
||||
"Standard alterations typically take 5-7 business days. Express service (2-3 days) and same-day emergency alterations are available."},
|
||||
{
|
||||
id: "2",
|
||||
title: "How much do alterations cost?",
|
||||
content:
|
||||
"Pricing varies by garment type and complexity. Hemming typically ranges from $15-$35, suit alterations $40-$100+. Contact us for a free quote.",
|
||||
},
|
||||
id: "2", title: "How much do alterations cost?", content:
|
||||
"Pricing varies by garment type and complexity. Hemming typically ranges from $15-$35, suit alterations $40-$100+. Contact us for a free quote."},
|
||||
{
|
||||
id: "3",
|
||||
title: "Do you handle wedding dress alterations?",
|
||||
content:
|
||||
"Yes! We specialize in delicate fabrics and complex wedding dress alterations. We recommend booking 2-3 months before your event.",
|
||||
},
|
||||
id: "3", title: "Do you handle wedding dress alterations?", content:
|
||||
"Yes! We specialize in delicate fabrics and complex wedding dress alterations. We recommend booking 2-3 months before your event."},
|
||||
{
|
||||
id: "4",
|
||||
title: "What types of fabrics do you work with?",
|
||||
content:
|
||||
"We work with all fabric types including delicate silks, premium wools, cotton, linen, and specialty fabrics. All garments are treated with expert care.",
|
||||
},
|
||||
id: "4", title: "What types of fabrics do you work with?", content:
|
||||
"We work with all fabric types including delicate silks, premium wools, cotton, linen, and specialty fabrics. All garments are treated with expert care."},
|
||||
]}
|
||||
ctaTitle="Ready to Book Your Appointment?"
|
||||
ctaDescription="Contact us today to schedule your tailoring or alterations. We're here to help!"
|
||||
ctaButton={{
|
||||
text: "Book Now",
|
||||
href: "/appointment",
|
||||
}}
|
||||
text: "Book Now", href: "/appointment"}}
|
||||
ctaIcon={Calendar}
|
||||
useInvertedBackground={false}
|
||||
animationType="slide-up"
|
||||
@@ -280,19 +198,13 @@ export default function HomePage() {
|
||||
socialLinks={[
|
||||
{
|
||||
icon: Facebook,
|
||||
href: "https://facebook.com/tailorstouch",
|
||||
ariaLabel: "Facebook",
|
||||
},
|
||||
href: "https://facebook.com/tailorstouch", ariaLabel: "Facebook"},
|
||||
{
|
||||
icon: Instagram,
|
||||
href: "https://instagram.com/tailorstouch",
|
||||
ariaLabel: "Instagram",
|
||||
},
|
||||
href: "https://instagram.com/tailorstouch", ariaLabel: "Instagram"},
|
||||
{
|
||||
icon: Phone,
|
||||
href: "tel:+1-555-123-4567",
|
||||
ariaLabel: "Call Us",
|
||||
},
|
||||
href: "tel:+1-555-123-4567", ariaLabel: "Call Us"},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -1,51 +1,43 @@
|
||||
"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?: number;
|
||||
letterSpacing?: number;
|
||||
textAnchor?: "start" | "middle" | "end";
|
||||
dominantBaseline?: "auto" | "text-top" | "text-bottom" | "middle" | "central" | "hanging" | "mathematical" | "ideographic";
|
||||
}
|
||||
|
||||
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 = 700,
|
||||
letterSpacing = 0,
|
||||
textAnchor = "middle", dominantBaseline = "central"}) => {
|
||||
return (
|
||||
<svg
|
||||
ref={svgRef}
|
||||
viewBox={viewBox}
|
||||
className={cls("w-full", className)}
|
||||
style={{ aspectRatio: aspectRatio }}
|
||||
preserveAspectRatio="none"
|
||||
role="img"
|
||||
aria-label={`${logoText} logo`}
|
||||
width="100%"
|
||||
height="100%"
|
||||
viewBox="0 0 200 100"
|
||||
preserveAspectRatio="xMidYMid meet"
|
||||
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"
|
||||
}}
|
||||
x="100"
|
||||
y="50"
|
||||
fontSize={fontSize}
|
||||
fontWeight={fontWeight}
|
||||
letterSpacing={letterSpacing}
|
||||
textAnchor={textAnchor}
|
||||
dominantBaseline={dominantBaseline}
|
||||
className="fill-current"
|
||||
>
|
||||
{logoText}
|
||||
{text}
|
||||
</text>
|
||||
</svg>
|
||||
);
|
||||
});
|
||||
};
|
||||
|
||||
SvgTextLogo.displayName = "SvgTextLogo";
|
||||
|
||||
export default SvgTextLogo;
|
||||
export default SvgTextLogo;
|
||||
Reference in New Issue
Block a user