Merge version_1 into main #2

Merged
bender merged 2 commits from version_1 into main 2026-03-11 23:08:39 +00:00
2 changed files with 81 additions and 177 deletions

View File

@@ -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>

View File

@@ -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;