Merge version_1 into main #2

Merged
bender merged 2 commits from version_1 into main 2026-03-12 02:22:53 +00:00
2 changed files with 37 additions and 41 deletions

View File

@@ -72,7 +72,7 @@ export default function LandingPage() {
products={[
{
id: "1", brand: "Bliss Idols", name: "Vitthal Idol 26\"", price: "$4,500", rating: 5,
reviewCount: "87", imageSrc: "http://img.b2bpic.net/free-vector/hand-drawn-ram-navami-festival_23-2148457636.jpg?_wi=1", imageAlt: "Vitthal 26 inch marble idol on pedestal"
reviewCount: "87", imageSrc: "http://img.b2bpic.net/free-vector/hand-drawn-ram-navami-festival_23-2148457636.jpg", imageAlt: "Vitthal 26 inch marble idol on pedestal"
},
{
id: "2", brand: "Bliss Idols", name: "Rukmini Statue 26\"", price: "$4,200", rating: 5,
@@ -80,7 +80,7 @@ export default function LandingPage() {
},
{
id: "3", brand: "Bliss Idols", name: "Ganesha Idol 7\"", price: "$1,800", rating: 5,
reviewCount: "156", imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-golden-statue-buddha-wat-pho-buddhist-temple-complex-thailand_181624-14364.jpg?_wi=1", imageAlt: "Premium 7 inch Ganesha marble idol"
reviewCount: "156", imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-golden-statue-buddha-wat-pho-buddhist-temple-complex-thailand_181624-14364.jpg", imageAlt: "Premium 7 inch Ganesha marble idol"
},
{
id: "4", brand: "Bliss Idols", name: "Ram Mandir Idol", price: "$3,200", rating: 5,
@@ -106,7 +106,7 @@ export default function LandingPage() {
description="Sacred devotional sculptures representing the divine union. Vitthal stands with arms on hips, symbolizing devotion in the Varkari tradition. Rukmini, the divine consort, embodies grace and spiritual partnership. Together, they create a powerful spiritual presence for your sacred space."
tag="Devotional Masterpieces"
tagAnimation="slide-up"
imageSrc="http://img.b2bpic.net/free-vector/hand-drawn-ram-navami-festival_23-2148457636.jpg?_wi=2"
imageSrc="http://img.b2bpic.net/free-vector/hand-drawn-ram-navami-festival_23-2148457636.jpg"
imageAlt="Vitthal and Rukmini idols displayed together in temple setting"
useInvertedBackground={false}
buttons={[{ text: "Shop Vitthal & Rukmini", href: "#" }]}
@@ -120,7 +120,7 @@ export default function LandingPage() {
description="Lord Ganesha represents wisdom, prosperity, and new beginnings. Our collection offers multiple sizes and finishes to suit any sacred space. Each idol is meticulously sculpted and finished with premium materials including gold plating, silver plating, matte black, and PU gold finishes."
tag="Wisdom & Prosperity"
tagAnimation="slide-up"
imageSrc="http://img.b2bpic.net/free-photo/closeup-shot-golden-statue-buddha-wat-pho-buddhist-temple-complex-thailand_181624-14364.jpg?_wi=2"
imageSrc="http://img.b2bpic.net/free-photo/closeup-shot-golden-statue-buddha-wat-pho-buddhist-temple-complex-thailand_181624-14364.jpg"
imageAlt="Ganesha collection displaying multiple sizes and finishes"
mediaAnimation="slide-up"
useInvertedBackground={false}
@@ -243,4 +243,4 @@ export default function LandingPage() {
</div>
</ThemeProvider>
);
}
}

View File

@@ -1,51 +1,47 @@
"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;
width?: number;
height?: number;
}
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 = '',
width = 200,
height = 60,
}) => {
return (
<svg
ref={svgRef}
viewBox={viewBox}
className={cls("w-full", className)}
style={{ aspectRatio: aspectRatio }}
preserveAspectRatio="none"
role="img"
aria-label={`${logoText} logo`}
width={width}
height={height}
viewBox={`0 0 ${width} ${height}`}
xmlns="http://www.w3.org/2000/svg"
className={className}
aria-label={`${text} logo`}
>
<defs>
<linearGradient id="textGradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style={{ stopColor: 'currentColor', stopOpacity: 1 }} />
<stop offset="100%" style={{ stopColor: 'currentColor', stopOpacity: 0.8 }} />
</linearGradient>
</defs>
<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%"
textAnchor="middle"
dominantBaseline="central"
fontSize="24"
fontWeight="bold"
fill="url(#textGradient)"
fontFamily="system-ui, -apple-system, sans-serif"
>
{logoText}
{text}
</text>
</svg>
);
});
SvgTextLogo.displayName = "SvgTextLogo";
};
export default SvgTextLogo;