Merge version_1 into main #2
@@ -120,22 +120,22 @@ export default function LandingPage() {
|
||||
tag="Portfolio"
|
||||
products={[
|
||||
{
|
||||
id: "1", name: "Classic Red Velvet", price: "₹1,200 - ₹3,500", variant: "Celebration Cake • Multiple Sizes", imageSrc: "http://img.b2bpic.net/free-photo/top-view-slices-cake-with-cutlery_23-2148251645.jpg?_wi=1", imageAlt: "Red velvet celebration cake"
|
||||
id: "1", name: "Classic Red Velvet", price: "₹1,200 - ₹3,500", variant: "Celebration Cake • Multiple Sizes", imageSrc: "http://img.b2bpic.net/free-photo/top-view-slices-cake-with-cutlery_23-2148251645.jpg", imageAlt: "Red velvet celebration cake"
|
||||
},
|
||||
{
|
||||
id: "2", name: "Naked Berry Elegance", price: "₹1,500 - ₹4,000", variant: "Fresh Berries • Minimalist Style", imageSrc: "http://img.b2bpic.net/free-photo/close-up-piece-cheesecake-wooden-table_176474-2468.jpg?_wi=1", imageAlt: "Naked cake with fresh berries"
|
||||
id: "2", name: "Naked Berry Elegance", price: "₹1,500 - ₹4,000", variant: "Fresh Berries • Minimalist Style", imageSrc: "http://img.b2bpic.net/free-photo/close-up-piece-cheesecake-wooden-table_176474-2468.jpg", imageAlt: "Naked cake with fresh berries"
|
||||
},
|
||||
{
|
||||
id: "3", name: "Pink Ombre Wedding", price: "₹4,500 - ₹8,000", variant: "Tiered Wedding • Luxury Details", imageSrc: "http://img.b2bpic.net/free-photo/front-view-birthady-cake-with-copy-space_23-2148700507.jpg?_wi=1", imageAlt: "Pink ombre tiered wedding cake"
|
||||
id: "3", name: "Pink Ombre Wedding", price: "₹4,500 - ₹8,000", variant: "Tiered Wedding • Luxury Details", imageSrc: "http://img.b2bpic.net/free-photo/front-view-birthady-cake-with-copy-space_23-2148700507.jpg", imageAlt: "Pink ombre tiered wedding cake"
|
||||
},
|
||||
{
|
||||
id: "4", name: "Chocolate Ganache", price: "₹1,000 - ₹3,000", variant: "Rich Chocolate • Gold Accents", imageSrc: "http://img.b2bpic.net/free-photo/top-view-slices-cake-with-cutlery_23-2148251645.jpg?_wi=2", imageAlt: "Dark chocolate ganache cake"
|
||||
id: "4", name: "Chocolate Ganache", price: "₹1,000 - ₹3,000", variant: "Rich Chocolate • Gold Accents", imageSrc: "http://img.b2bpic.net/free-photo/top-view-slices-cake-with-cutlery_23-2148251645.jpg", imageAlt: "Dark chocolate ganache cake"
|
||||
},
|
||||
{
|
||||
id: "5", name: "Fruit Tart Paradise", price: "₹2,000 - ₹4,500", variant: "Fresh Fruit • Pastry Cream", imageSrc: "http://img.b2bpic.net/free-photo/close-up-piece-cheesecake-wooden-table_176474-2468.jpg?_wi=2", imageAlt: "Colorful fruit tart dessert"
|
||||
id: "5", name: "Fruit Tart Paradise", price: "₹2,000 - ₹4,500", variant: "Fresh Fruit • Pastry Cream", imageSrc: "http://img.b2bpic.net/free-photo/close-up-piece-cheesecake-wooden-table_176474-2468.jpg", imageAlt: "Colorful fruit tart dessert"
|
||||
},
|
||||
{
|
||||
id: "6", name: "Cupcake Collections", price: "₹400 - ₹600 each", variant: "Assorted Flavors • Premium Box", imageSrc: "http://img.b2bpic.net/free-photo/front-view-birthady-cake-with-copy-space_23-2148700507.jpg?_wi=2", imageAlt: "Assorted premium cupcakes"
|
||||
id: "6", name: "Cupcake Collections", price: "₹400 - ₹600 each", variant: "Assorted Flavors • Premium Box", imageSrc: "http://img.b2bpic.net/free-photo/front-view-birthady-cake-with-copy-space_23-2148700507.jpg", imageAlt: "Assorted premium cupcakes"
|
||||
}
|
||||
]}
|
||||
gridVariant="uniform-all-items-equal"
|
||||
@@ -155,7 +155,6 @@ export default function LandingPage() {
|
||||
tag="Artisan Since Day One"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/vertical-shot-freshly-baked-chocolate-hazelnut-cake-being-covered-cocoa-powder_181624-60593.jpg"
|
||||
imageAlt="Premium artisan bakery kitchen"
|
||||
mediaAnimation="opacity"
|
||||
useInvertedBackground={false}
|
||||
buttons={[
|
||||
{ text: "Learn More", href: "#contact" }
|
||||
@@ -171,15 +170,15 @@ export default function LandingPage() {
|
||||
features={[
|
||||
{
|
||||
id: "1", title: "Choose or Customise", author: "Step 1", description: "Pick from our signature cakes or request a fully custom design. Share your theme, flavour preferences, and dietary requirements.", tags: ["Order", "Customize", "Personal"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-slices-cake-with-cutlery_23-2148251645.jpg?_wi=3"
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-slices-cake-with-cutlery_23-2148251645.jpg"
|
||||
},
|
||||
{
|
||||
id: "2", title: "Submit Order Request", author: "Step 2", description: "Fill our quick order form or send a WhatsApp message with your details. Include date needed, delivery/pickup preference, and any special instructions.", tags: ["Submit", "Confirm", "Details"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-piece-cheesecake-wooden-table_176474-2468.jpg?_wi=3"
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-piece-cheesecake-wooden-table_176474-2468.jpg"
|
||||
},
|
||||
{
|
||||
id: "3", title: "Confirm & Enjoy", author: "Step 3", description: "We'll confirm availability and pricing. Pickup at our Zirakpur location or opt for delivery within Chandigarh, Zirakpur, and nearby areas.", tags: ["Confirm", "Deliver", "Enjoy"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-birthady-cake-with-copy-space_23-2148700507.jpg?_wi=3"
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-birthady-cake-with-copy-space_23-2148700507.jpg"
|
||||
}
|
||||
]}
|
||||
animationType="slide-up"
|
||||
@@ -196,11 +195,11 @@ export default function LandingPage() {
|
||||
testimonials={[
|
||||
{
|
||||
id: "1", name: "Priya Sharma", role: "Event Organiser", company: "Elite Events, Chandigarh", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-european-woman-with-positive-smile-face_176532-6995.jpg?_wi=1", imageAlt: "Priya Sharma"
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-european-woman-with-positive-smile-face_176532-6995.jpg", imageAlt: "Priya Sharma"
|
||||
},
|
||||
{
|
||||
id: "2", name: "Rajesh Kumar", role: "Corporate Buyer", company: "Tech Solutions Inc", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-handsome-bearded-african-american-businessman-brown-classic-jacket-isolated-dark-background_613910-6626.jpg?_wi=1", imageAlt: "Rajesh Kumar"
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-handsome-bearded-african-american-businessman-brown-classic-jacket-isolated-dark-background_613910-6626.jpg", imageAlt: "Rajesh Kumar"
|
||||
},
|
||||
{
|
||||
id: "3", name: "Neha Patel", role: "Wedding Planner", company: "Dream Weddings", rating: 5,
|
||||
@@ -212,11 +211,11 @@ export default function LandingPage() {
|
||||
},
|
||||
{
|
||||
id: "5", name: "Anjali Verma", role: "Bride", company: "Zirakpur", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-european-woman-with-positive-smile-face_176532-6995.jpg?_wi=2", imageAlt: "Anjali Verma"
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-european-woman-with-positive-smile-face_176532-6995.jpg", imageAlt: "Anjali Verma"
|
||||
},
|
||||
{
|
||||
id: "6", name: "Vikram Dhawan", role: "Birthday Host", company: "Panchkula", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-handsome-bearded-african-american-businessman-brown-classic-jacket-isolated-dark-background_613910-6626.jpg?_wi=2", imageAlt: "Vikram Dhawan"
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-handsome-bearded-african-american-businessman-brown-classic-jacket-isolated-dark-background_613910-6626.jpg", imageAlt: "Vikram Dhawan"
|
||||
}
|
||||
]}
|
||||
gridVariant="uniform-all-items-equal"
|
||||
@@ -236,7 +235,7 @@ export default function LandingPage() {
|
||||
termsText="We respect your privacy. We'll use your contact info only to confirm your order."
|
||||
background={{ variant: "plain" }}
|
||||
useInvertedBackground={false}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/top-view-slices-cake-with-cutlery_23-2148251645.jpg?_wi=4"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/top-view-slices-cake-with-cutlery_23-2148251645.jpg"
|
||||
imageAlt="Contact us for your custom cake"
|
||||
mediaAnimation="opacity"
|
||||
mediaPosition="right"
|
||||
|
||||
@@ -1,51 +1,35 @@
|
||||
"use client";
|
||||
import React from 'react';
|
||||
|
||||
import { memo } from "react";
|
||||
import useSvgTextLogo from "./useSvgTextLogo";
|
||||
import { cls } from "@/lib/utils";
|
||||
|
||||
interface SvgTextLogoProps {
|
||||
logoText: string;
|
||||
adjustHeightFactor?: number;
|
||||
verticalAlign?: "top" | "center";
|
||||
export interface SvgTextLogoProps {
|
||||
text: string;
|
||||
className?: string;
|
||||
dominantBaseline?: 'auto' | 'middle' | 'hanging' | 'mathematical';
|
||||
textAnchor?: 'start' | 'middle' | 'end';
|
||||
}
|
||||
|
||||
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 = '',
|
||||
dominantBaseline = 'middle',
|
||||
textAnchor = 'middle',
|
||||
}) => {
|
||||
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 400 100"
|
||||
className={`w-full h-auto ${className}`}
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<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="50%"
|
||||
y="50%"
|
||||
dominantBaseline={dominantBaseline}
|
||||
textAnchor={textAnchor}
|
||||
className="text-2xl font-bold fill-current"
|
||||
>
|
||||
{logoText}
|
||||
{text}
|
||||
</text>
|
||||
</svg>
|
||||
);
|
||||
});
|
||||
|
||||
SvgTextLogo.displayName = "SvgTextLogo";
|
||||
};
|
||||
|
||||
export default SvgTextLogo;
|
||||
|
||||
Reference in New Issue
Block a user