Merge version_1 into main #2

Merged
bender merged 2 commits from version_1 into main 2026-03-11 08:20:10 +00:00
2 changed files with 35 additions and 52 deletions

View File

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

View File

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