Merge version_1 into main #2
@@ -15,7 +15,7 @@ export default function GalleryPage() {
|
||||
borderRadius="rounded"
|
||||
contentWidth="mediumSmall"
|
||||
sizing="mediumLargeSizeMediumTitles"
|
||||
background="floatingGradient"
|
||||
background="circleGradient"
|
||||
cardStyle="subtle-shadow"
|
||||
primaryButtonStyle="double-inset"
|
||||
secondaryButtonStyle="layered"
|
||||
@@ -41,42 +41,26 @@ export default function GalleryPage() {
|
||||
description="Step into BrewHaven and experience our inviting spaces, carefully crafted beverages, and delicious homemade treats. Our gallery showcases the heart and soul of our community café."
|
||||
tag="Gallery Showcase"
|
||||
tagIcon={Coffee}
|
||||
background={{ variant: "floatingGradient" }}
|
||||
background={{ variant: "plain" }}
|
||||
leftCarouselItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-with-cup-tea-teapot-books-candle-candlestick_169016-10127.jpg?_wi=5",
|
||||
imageAlt: "Specialty coffee preparation",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-with-cup-tea-teapot-books-candle-candlestick_169016-10127.jpg", imageAlt: "Specialty coffee preparation"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/ice-cream-sundae-edible-waffle-bowl_1339-2876.jpg?_wi=4",
|
||||
imageAlt: "Delicious desserts",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/ice-cream-sundae-edible-waffle-bowl_1339-2876.jpg", imageAlt: "Delicious desserts"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/best-place-town-meeting-with-friends_329181-2888.jpg?_wi=5",
|
||||
imageAlt: "People working and studying",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/best-place-town-meeting-with-friends_329181-2888.jpg", imageAlt: "People working and studying"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-sitting-chair-by-christmas-tree_1303-12424.jpg?_wi=3",
|
||||
imageAlt: "Cozy café seating",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-sitting-chair-by-christmas-tree_1303-12424.jpg", imageAlt: "Cozy café seating"},
|
||||
]}
|
||||
rightCarouselItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-male-worker-coffee-shop_23-2148366546.jpg?_wi=2",
|
||||
imageAlt: "Fresh coffee drinks",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-male-worker-coffee-shop_23-2148366546.jpg", imageAlt: "Fresh coffee drinks"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/macaroons-plastic-box_23-2147787082.jpg?_wi=5",
|
||||
imageAlt: "Fresh desserts and pastries",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/macaroons-plastic-box_23-2147787082.jpg", imageAlt: "Fresh desserts and pastries"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/non-binary-person-wearing-retro-clothes-enjoying-coffee_23-2148757536.jpg?_wi=2",
|
||||
imageAlt: "Comfortable seating area",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/non-binary-person-wearing-retro-clothes-enjoying-coffee_23-2148757536.jpg", imageAlt: "Comfortable seating area"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-girl-barista-cafe-preparing-cappuccino-coffee-machine-steaming-milk-wearing-uniform_1258-199307.jpg?_wi=4",
|
||||
imageAlt: "Quality café experience",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-girl-barista-cafe-preparing-cappuccino-coffee-machine-steaming-milk-wearing-uniform_1258-199307.jpg", imageAlt: "Quality café experience"},
|
||||
]}
|
||||
buttons={[
|
||||
{ text: "Visit Us", href: "/contact" },
|
||||
@@ -89,24 +73,21 @@ export default function GalleryPage() {
|
||||
<FooterBaseReveal
|
||||
columns={[
|
||||
{
|
||||
title: "Company",
|
||||
items: [
|
||||
title: "Company", items: [
|
||||
{ label: "About Us", href: "/services" },
|
||||
{ label: "Our Story", href: "/" },
|
||||
{ label: "Sustainability", href: "/services" },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Quick Links",
|
||||
items: [
|
||||
title: "Quick Links", items: [
|
||||
{ label: "Menu", href: "/menu" },
|
||||
{ label: "Gallery", href: "/gallery" },
|
||||
{ label: "Book a Table", href: "/contact" },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Contact",
|
||||
items: [
|
||||
title: "Contact", items: [
|
||||
{ label: "Sengipatti, Tamil Nadu", href: "#" },
|
||||
{ label: "Phone: 09677968168", href: "tel:09677968168" },
|
||||
{ label: "Open 5AM - Midnight", href: "#" },
|
||||
|
||||
117
src/app/page.tsx
117
src/app/page.tsx
@@ -8,7 +8,7 @@ import FeatureCardTwentyFour from "@/components/sections/feature/FeatureCardTwen
|
||||
import SplitAbout from "@/components/sections/about/SplitAbout";
|
||||
import TestimonialCardFifteen from "@/components/sections/testimonial/TestimonialCardFifteen";
|
||||
import FooterBaseReveal from "@/components/sections/footer/FooterBaseReveal";
|
||||
import { Coffee, Leaf, Users } from "lucide-react";
|
||||
import { Coffee, Leaf, Users, TreePine } from "lucide-react";
|
||||
|
||||
export default function HomePage() {
|
||||
const navItems = [
|
||||
@@ -21,24 +21,21 @@ export default function HomePage() {
|
||||
|
||||
const footerColumns = [
|
||||
{
|
||||
title: "Company",
|
||||
items: [
|
||||
title: "Company", items: [
|
||||
{ label: "About Us", href: "/services" },
|
||||
{ label: "Our Story", href: "/" },
|
||||
{ label: "Sustainability", href: "/services" },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Quick Links",
|
||||
items: [
|
||||
title: "Quick Links", items: [
|
||||
{ label: "Menu", href: "/menu" },
|
||||
{ label: "Gallery", href: "/gallery" },
|
||||
{ label: "Book a Table", href: "/contact" },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Contact",
|
||||
items: [
|
||||
title: "Contact", items: [
|
||||
{ label: "Sengipatti, Tamil Nadu", href: "#" },
|
||||
{ label: "Phone: 09677968168", href: "tel:09677968168" },
|
||||
{ label: "Open 5AM - Midnight", href: "#" },
|
||||
@@ -53,7 +50,7 @@ export default function HomePage() {
|
||||
borderRadius="rounded"
|
||||
contentWidth="mediumSmall"
|
||||
sizing="mediumLargeSizeMediumTitles"
|
||||
background="floatingGradient"
|
||||
background="circleGradient"
|
||||
cardStyle="subtle-shadow"
|
||||
primaryButtonStyle="double-inset"
|
||||
secondaryButtonStyle="layered"
|
||||
@@ -73,42 +70,26 @@ export default function HomePage() {
|
||||
description="Open from 5AM to Midnight. Experience the perfect blend of great coffee, delicious desserts, and a welcoming atmosphere. Whether you're here to work, study, or just relax – BrewHaven is your second home."
|
||||
tag="Welcome to BrewHaven"
|
||||
tagIcon={Coffee}
|
||||
background={{ variant: "floatingGradient" }}
|
||||
background={{ variant: "plain" }}
|
||||
leftCarouselItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-with-cup-tea-teapot-books-candle-candlestick_169016-10127.jpg?_wi=1",
|
||||
imageAlt: "Specialty coffee preparation",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-with-cup-tea-teapot-books-candle-candlestick_169016-10127.jpg", imageAlt: "Specialty coffee preparation"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/ice-cream-sundae-edible-waffle-bowl_1339-2876.jpg?_wi=1",
|
||||
imageAlt: "Delicious desserts",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/ice-cream-sundae-edible-waffle-bowl_1339-2876.jpg", imageAlt: "Delicious desserts"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/best-place-town-meeting-with-friends_329181-2888.jpg?_wi=1",
|
||||
imageAlt: "People working and studying",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/best-place-town-meeting-with-friends_329181-2888.jpg", imageAlt: "People working and studying"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-sitting-chair-by-christmas-tree_1303-12424.jpg?_wi=1",
|
||||
imageAlt: "Cozy café seating",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-sitting-chair-by-christmas-tree_1303-12424.jpg", imageAlt: "Cozy café seating"},
|
||||
]}
|
||||
rightCarouselItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-male-worker-coffee-shop_23-2148366546.jpg?_wi=1",
|
||||
imageAlt: "Fresh coffee drinks",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-male-worker-coffee-shop_23-2148366546.jpg", imageAlt: "Fresh coffee drinks"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/macaroons-plastic-box_23-2147787082.jpg?_wi=1",
|
||||
imageAlt: "Fresh desserts and pastries",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/macaroons-plastic-box_23-2147787082.jpg", imageAlt: "Fresh desserts and pastries"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/non-binary-person-wearing-retro-clothes-enjoying-coffee_23-2148757536.jpg?_wi=1",
|
||||
imageAlt: "Comfortable seating area",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/non-binary-person-wearing-retro-clothes-enjoying-coffee_23-2148757536.jpg", imageAlt: "Comfortable seating area"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-girl-barista-cafe-preparing-cappuccino-coffee-machine-steaming-milk-wearing-uniform_1258-199307.jpg?_wi=1",
|
||||
imageAlt: "Quality café experience",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-girl-barista-cafe-preparing-cappuccino-coffee-machine-steaming-milk-wearing-uniform_1258-199307.jpg", imageAlt: "Quality café experience"},
|
||||
]}
|
||||
buttons={[
|
||||
{ text: "Order Online", href: "/menu" },
|
||||
@@ -124,41 +105,17 @@ export default function HomePage() {
|
||||
description="Discover what makes our café special and why customers love us"
|
||||
features={[
|
||||
{
|
||||
id: "1",
|
||||
title: "Great Coffee",
|
||||
author: "Crafted Daily",
|
||||
description: "Freshly roasted beans sourced from sustainable farms. Every cup is expertly prepared by our skilled baristas.",
|
||||
tags: ["Premium", "Fresh", "Quality"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-with-cup-tea-teapot-books-candle-candlestick_169016-10127.jpg?_wi=2",
|
||||
imageAlt: "Great Coffee",
|
||||
},
|
||||
id: "1", title: "Great Coffee", author: "Crafted Daily", description: "Freshly roasted beans sourced from sustainable farms. Every cup is expertly prepared by our skilled baristas.", tags: ["Premium", "Fresh", "Quality"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-with-cup-tea-teapot-books-candle-candlestick_169016-10127.jpg", imageAlt: "Great Coffee"},
|
||||
{
|
||||
id: "2",
|
||||
title: "Great Desserts",
|
||||
author: "Homemade Fresh",
|
||||
description: "Delicious cakes, brownies, and pastries baked fresh daily in our kitchen. Perfect pairing with your coffee.",
|
||||
tags: ["Fresh", "Homemade", "Tasty"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/ice-cream-sundae-edible-waffle-bowl_1339-2876.jpg?_wi=2",
|
||||
imageAlt: "Great Desserts",
|
||||
},
|
||||
id: "2", title: "Great Desserts", author: "Homemade Fresh", description: "Delicious cakes, brownies, and pastries baked fresh daily in our kitchen. Perfect pairing with your coffee.", tags: ["Fresh", "Homemade", "Tasty"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/ice-cream-sundae-edible-waffle-bowl_1339-2876.jpg", imageAlt: "Great Desserts"},
|
||||
{
|
||||
id: "3",
|
||||
title: "Vegan & Vegetarian",
|
||||
author: "Health Conscious",
|
||||
description: "Plant-based options for our health-conscious guests. All vegan treats made with care and premium ingredients.",
|
||||
tags: ["Vegan", "Plant-based", "Healthy"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/macaroons-plastic-box_23-2147787082.jpg?_wi=2",
|
||||
imageAlt: "Vegan & Vegetarian",
|
||||
},
|
||||
id: "3", title: "Vegan & Vegetarian", author: "Health Conscious", description: "Plant-based options for our health-conscious guests. All vegan treats made with care and premium ingredients.", tags: ["Vegan", "Plant-based", "Healthy"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/macaroons-plastic-box_23-2147787082.jpg", imageAlt: "Vegan & Vegetarian"},
|
||||
{
|
||||
id: "4",
|
||||
title: "Laptop-Friendly Workspace",
|
||||
author: "Work & Study",
|
||||
description: "High-speed WiFi, comfortable seating, and power outlets everywhere. Perfect for students, freelancers, and remote workers.",
|
||||
tags: ["WiFi", "Workspace", "Productive"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/best-place-town-meeting-with-friends_329181-2888.jpg?_wi=2",
|
||||
imageAlt: "Laptop-Friendly Workspace",
|
||||
},
|
||||
id: "4", title: "Laptop-Friendly Workspace", author: "Work & Study", description: "High-speed WiFi, comfortable seating, and power outlets everywhere. Perfect for students, freelancers, and remote workers.", tags: ["WiFi", "Workspace", "Productive"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/best-place-town-meeting-with-friends_329181-2888.jpg", imageAlt: "Laptop-Friendly Workspace"},
|
||||
]}
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
@@ -174,22 +131,16 @@ export default function HomePage() {
|
||||
tagIcon={Leaf}
|
||||
bulletPoints={[
|
||||
{
|
||||
title: "Quality Coffee",
|
||||
description: "We partner with ethical farmers to source the finest arabica and robusta beans, roasted to perfection.",
|
||||
icon: Coffee,
|
||||
title: "Quality Coffee", description: "We partner with ethical farmers to source the finest arabica and robusta beans, roasted to perfection.", icon: Coffee,
|
||||
},
|
||||
{
|
||||
title: "Sustainable Practices",
|
||||
description: "Eco-friendly packaging, composting program, and support for local suppliers drive our commitment to the environment.",
|
||||
icon: Leaf,
|
||||
title: "Sustainable Practices", description: "Eco-friendly packaging, composting program, and support for local suppliers drive our commitment to the environment.", icon: TreePine,
|
||||
},
|
||||
{
|
||||
title: "Welcoming Community",
|
||||
description: "Whether solo or in groups, everyone finds their place here. We host events, workshops, and community gatherings.",
|
||||
icon: Users,
|
||||
title: "Welcoming Community", description: "Whether solo or in groups, everyone finds their place here. We host events, workshops, and community gatherings.", icon: Users,
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/smiling-girl-barista-cafe-preparing-cappuccino-coffee-machine-steaming-milk-wearing-uniform_1258-199307.jpg?_wi=2"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/smiling-girl-barista-cafe-preparing-cappuccino-coffee-machine-steaming-milk-wearing-uniform_1258-199307.jpg"
|
||||
imageAlt="BrewHaven café team"
|
||||
mediaAnimation="slide-up"
|
||||
imagePosition="right"
|
||||
@@ -205,21 +156,13 @@ export default function HomePage() {
|
||||
author="Sarah Johnson, Student"
|
||||
avatars={[
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/successful-young-man-stylish-hat-relaxing-alone-cozy-cafeteria-lunch-break-looking-with-happy-expression_273609-1935.jpg",
|
||||
alt: "Sarah Johnson",
|
||||
},
|
||||
src: "http://img.b2bpic.net/free-photo/successful-young-man-stylish-hat-relaxing-alone-cozy-cafeteria-lunch-break-looking-with-happy-expression_273609-1935.jpg", alt: "Sarah Johnson"},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/vertical-shot-well-dressed-male-leaning-against-wall-looking-camera_181624-15421.jpg",
|
||||
alt: "Michael Chen",
|
||||
},
|
||||
src: "http://img.b2bpic.net/free-photo/vertical-shot-well-dressed-male-leaning-against-wall-looking-camera_181624-15421.jpg", alt: "Michael Chen"},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/smiley-woman-posing-while-nature-adventure_23-2148647990.jpg",
|
||||
alt: "Emily Rodriguez",
|
||||
},
|
||||
src: "http://img.b2bpic.net/free-photo/smiley-woman-posing-while-nature-adventure_23-2148647990.jpg", alt: "Emily Rodriguez"},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/latin-man-smiling-cheerful-expression-closeup-portrait_53876-128963.jpg",
|
||||
alt: "David Kim",
|
||||
},
|
||||
src: "http://img.b2bpic.net/free-photo/latin-man-smiling-cheerful-expression-closeup-portrait_53876-128963.jpg", alt: "David Kim"},
|
||||
]}
|
||||
ratingAnimation="slide-up"
|
||||
avatarsAnimation="slide-up"
|
||||
|
||||
@@ -1,51 +1,109 @@
|
||||
"use client";
|
||||
|
||||
import { memo } from "react";
|
||||
import useSvgTextLogo from "./useSvgTextLogo";
|
||||
import { cls } from "@/lib/utils";
|
||||
import { useMemo } from "react";
|
||||
import { motion } from "framer-motion";
|
||||
|
||||
interface SvgTextLogoProps {
|
||||
logoText: string;
|
||||
adjustHeightFactor?: number;
|
||||
verticalAlign?: "top" | "center";
|
||||
text: string;
|
||||
fontSize?: number;
|
||||
fontWeight?: string | number;
|
||||
fontFamily?: string;
|
||||
fill?: string;
|
||||
animated?: boolean;
|
||||
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 = ({
|
||||
text,
|
||||
fontSize = 48,
|
||||
fontWeight = "bold", fontFamily = "system-ui, -apple-system, sans-serif", fill = "#000000", animated = false,
|
||||
className = ""}: SvgTextLogoProps) => {
|
||||
const textLength = useMemo(() => {
|
||||
const canvas = typeof document !== "undefined" ? document.createElement("canvas") : null;
|
||||
if (!canvas) return text.length * fontSize * 0.6;
|
||||
const context = canvas.getContext("2d");
|
||||
if (!context) return text.length * fontSize * 0.6;
|
||||
context.font = `${fontWeight} ${fontSize}px ${fontFamily}`;
|
||||
return context.measureText(text).width;
|
||||
}, [text, fontSize, fontWeight, fontFamily]);
|
||||
|
||||
const padding = 20;
|
||||
const width = textLength + padding * 2;
|
||||
const height = fontSize + padding * 2;
|
||||
|
||||
const containerVariants = {
|
||||
hidden: { opacity: 0 },
|
||||
visible: {
|
||||
opacity: 1,
|
||||
transition: {
|
||||
staggerChildren: 0.02,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const letterVariants = {
|
||||
hidden: { opacity: 0, y: 20 },
|
||||
visible: {
|
||||
opacity: 1,
|
||||
y: 0,
|
||||
transition: {
|
||||
duration: 0.5,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
if (!animated) {
|
||||
return (
|
||||
<svg
|
||||
width={width}
|
||||
height={height}
|
||||
viewBox={`0 0 ${width} ${height}`}
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className={className}
|
||||
>
|
||||
<text
|
||||
x={padding}
|
||||
y={padding + fontSize * 0.75}
|
||||
fontSize={fontSize}
|
||||
fontWeight={fontWeight}
|
||||
fontFamily={fontFamily}
|
||||
fill={fill}
|
||||
dominantBaseline="auto"
|
||||
>
|
||||
{text}
|
||||
</text>
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<svg
|
||||
ref={svgRef}
|
||||
viewBox={viewBox}
|
||||
className={cls("w-full", className)}
|
||||
style={{ aspectRatio: aspectRatio }}
|
||||
preserveAspectRatio="none"
|
||||
role="img"
|
||||
aria-label={`${logoText} logo`}
|
||||
<motion.svg
|
||||
width={width}
|
||||
height={height}
|
||||
viewBox={`0 0 ${width} ${height}`}
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className={className}
|
||||
variants={containerVariants}
|
||||
initial="hidden"
|
||||
animate="visible"
|
||||
>
|
||||
<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"
|
||||
}}
|
||||
>
|
||||
{logoText}
|
||||
</text>
|
||||
</svg>
|
||||
{text.split("").map((char, index) => (
|
||||
<motion.text
|
||||
key={index}
|
||||
x={padding + index * (textLength / text.length)}
|
||||
y={padding + fontSize * 0.75}
|
||||
fontSize={fontSize}
|
||||
fontWeight={fontWeight}
|
||||
fontFamily={fontFamily}
|
||||
fill={fill}
|
||||
dominantBaseline="auto"
|
||||
variants={letterVariants}
|
||||
>
|
||||
{char}
|
||||
</motion.text>
|
||||
))}
|
||||
</motion.svg>
|
||||
);
|
||||
});
|
||||
};
|
||||
|
||||
SvgTextLogo.displayName = "SvgTextLogo";
|
||||
|
||||
export default SvgTextLogo;
|
||||
export default SvgTextLogo;
|
||||
Reference in New Issue
Block a user