Merge version_1 into main #2

Merged
bender merged 2 commits from version_1 into main 2026-03-11 21:34:58 +00:00
2 changed files with 46 additions and 49 deletions

View File

@@ -20,7 +20,7 @@ export default function LandingPage() {
borderRadius="soft"
contentWidth="small"
sizing="large"
background="floatingGradient"
background="circleGradient"
cardStyle="soft-shadow"
primaryButtonStyle="gradient"
secondaryButtonStyle="radial-glow"
@@ -45,13 +45,13 @@ export default function LandingPage() {
title="Experience Authentic Japanese Teppanyaki Excellence"
description="Discover the art of Japanese steakhouse tradition. Premium wagyu beef, theatrical knife work, and an unforgettable culinary performance."
tag="Premium Steakhouse"
background={{ variant: "floatingGradient" }}
background={{ variant: "sparkles-gradient" }}
mediaItems={[
{ imageSrc: "http://img.b2bpic.net/free-photo/beautiful-candles-restaurant_8353-9527.jpg", imageAlt: "Premium steakhouse interior" },
{ imageSrc: "http://img.b2bpic.net/free-photo/woman-cutting-steak-piece-served-with-sour-sauce_140725-5273.jpg?_wi=1", imageAlt: "Premium wagyu beef" },
{ imageSrc: "http://img.b2bpic.net/free-photo/male-chef-kitchen-cooking_23-2148934670.jpg?_wi=1", imageAlt: "Chef teppanyaki performance" },
{ imageSrc: "http://img.b2bpic.net/free-photo/classic-luxury-style-restaurant-with-tables-chairs_140725-9391.jpg?_wi=1", imageAlt: "Private dining room" },
{ imageSrc: "http://img.b2bpic.net/free-photo/bartender-working-bar-counter-making-cocktail-nightclub_613910-20245.jpg?_wi=1", imageAlt: "Premium sake collection" }
{ imageSrc: "http://img.b2bpic.net/free-photo/woman-cutting-steak-piece-served-with-sour-sauce_140725-5273.jpg", imageAlt: "Premium wagyu beef" },
{ imageSrc: "http://img.b2bpic.net/free-photo/male-chef-kitchen-cooking_23-2148934670.jpg", imageAlt: "Chef teppanyaki performance" },
{ imageSrc: "http://img.b2bpic.net/free-photo/classic-luxury-style-restaurant-with-tables-chairs_140725-9391.jpg", imageAlt: "Private dining room" },
{ imageSrc: "http://img.b2bpic.net/free-photo/bartender-working-bar-counter-making-cocktail-nightclub_613910-20245.jpg", imageAlt: "Premium sake collection" }
]}
buttons={[
{ text: "Reserve Your Table", href: "contact" },
@@ -72,6 +72,7 @@ export default function LandingPage() {
imageSrc="http://img.b2bpic.net/free-photo/chef-holds-two-frying-pans-with-burning-fire_140725-4961.jpg"
imageAlt="Master chef preparing premium dish"
mediaAnimation="slide-up"
metricsAnimation="slide-up"
useInvertedBackground={false}
/>
</div>
@@ -84,15 +85,15 @@ export default function LandingPage() {
products={[
{
id: "1", brand: "KUROGANE", name: "A5 Wagyu Ribeye", price: "$95", rating: 5,
reviewCount: "428", imageSrc: "http://img.b2bpic.net/free-photo/woman-cutting-steak-piece-served-with-sour-sauce_140725-5273.jpg?_wi=2", imageAlt: "A5 Wagyu Ribeye premium cut"
reviewCount: "428", imageSrc: "http://img.b2bpic.net/free-photo/woman-cutting-steak-piece-served-with-sour-sauce_140725-5273.jpg", imageAlt: "A5 Wagyu Ribeye premium cut"
},
{
id: "2", brand: "KUROGANE", name: "Japanese Filet Mignon", price: "$85", rating: 5,
reviewCount: "392", imageSrc: "http://img.b2bpic.net/free-photo/woman-cutting-steak-piece-served-with-sour-sauce_140725-5273.jpg?_wi=3", imageAlt: "Japanese Filet Mignon"
reviewCount: "392", imageSrc: "http://img.b2bpic.net/free-photo/woman-cutting-steak-piece-served-with-sour-sauce_140725-5273.jpg", imageAlt: "Japanese Filet Mignon"
},
{
id: "3", brand: "KUROGANE", name: "Premium Tenderloin Selection", price: "$88", rating: 5,
reviewCount: "315", imageSrc: "http://img.b2bpic.net/free-photo/woman-cutting-steak-piece-served-with-sour-sauce_140725-5273.jpg?_wi=4", imageAlt: "Premium Tenderloin Selection"
reviewCount: "315", imageSrc: "http://img.b2bpic.net/free-photo/woman-cutting-steak-piece-served-with-sour-sauce_140725-5273.jpg", imageAlt: "Premium Tenderloin Selection"
}
]}
gridVariant="three-columns-all-equal-width"
@@ -110,15 +111,15 @@ export default function LandingPage() {
features={[
{
id: 1,
tag: "Live Performance", title: "Interactive Cooking", subtitle: "Watch culinary artistry unfold before your eyes", description: "Our teppanyaki chefs combine knife skills, timing, and showmanship to create an unforgettable dining experience. Each movement is deliberate, each flame is controlled, and every moment brings excitement to your table.", imageSrc: "http://img.b2bpic.net/free-photo/male-chef-kitchen-cooking_23-2148934670.jpg?_wi=2", imageAlt: "Chef teppanyaki cooking performance"
tag: "Live Performance", title: "Interactive Cooking", subtitle: "Watch culinary artistry unfold before your eyes", description: "Our teppanyaki chefs combine knife skills, timing, and showmanship to create an unforgettable dining experience. Each movement is deliberate, each flame is controlled, and every moment brings excitement to your table.", imageSrc: "http://img.b2bpic.net/free-photo/male-chef-kitchen-cooking_23-2148934670.jpg", imageAlt: "Chef teppanyaki cooking performance"
},
{
id: 2,
tag: "Private Spaces", title: "Exclusive Dining", subtitle: "Intimate settings for memorable moments", description: "Designed for celebrations, business dinners, and special occasions. Our private teppanyaki rooms provide an exclusive setting where every guest feels like VIP. Personalized service and dedicated chef attention create memories that last.", imageSrc: "http://img.b2bpic.net/free-photo/classic-luxury-style-restaurant-with-tables-chairs_140725-9391.jpg?_wi=2", imageAlt: "Private dining room setup"
tag: "Private Spaces", title: "Exclusive Dining", subtitle: "Intimate settings for memorable moments", description: "Designed for celebrations, business dinners, and special occasions. Our private teppanyaki rooms provide an exclusive setting where every guest feels like VIP. Personalized service and dedicated chef attention create memories that last.", imageSrc: "http://img.b2bpic.net/free-photo/classic-luxury-style-restaurant-with-tables-chairs_140725-9391.jpg", imageAlt: "Private dining room setup"
},
{
id: 3,
tag: "Sake & Spirits", title: "Curated Beverage Selection", subtitle: "Premium sake pairings from Japan's finest breweries", description: "Our sommelier has personally selected premium sakes and fine wines to complement your teppanyaki experience. From traditional sake varieties to modern craft selections, discover the perfect pairing for your meal.", imageSrc: "http://img.b2bpic.net/free-photo/bartender-working-bar-counter-making-cocktail-nightclub_613910-20245.jpg?_wi=2", imageAlt: "Premium sake collection"
tag: "Sake & Spirits", title: "Curated Beverage Selection", subtitle: "Premium sake pairings from Japan's finest breweries", description: "Our sommelier has personally selected premium sakes and fine wines to complement your teppanyaki experience. From traditional sake varieties to modern craft selections, discover the perfect pairing for your meal.", imageSrc: "http://img.b2bpic.net/free-photo/bartender-working-bar-counter-making-cocktail-nightclub_613910-20245.jpg", imageAlt: "Premium sake collection"
}
]}
textboxLayout="default"
@@ -209,7 +210,7 @@ export default function LandingPage() {
id: "6", title: "What's included in the price?", content: "Our pricing includes premium beef, fresh vegetables, fried rice or noodles prepared tableside, miso soup, and chef service. Beverages, appetizers, and desserts are available separately. We also offer multi-course tasting menus with paired sake selections."
}
]}
imageSrc="http://img.b2bpic.net/free-photo/classic-luxury-style-restaurant-with-tables-chairs_140725-9391.jpg?_wi=3"
imageSrc="http://img.b2bpic.net/free-photo/classic-luxury-style-restaurant-with-tables-chairs_140725-9391.jpg"
imageAlt="Private dining experience"
mediaPosition="left"
mediaAnimation="slide-up"
@@ -224,7 +225,7 @@ export default function LandingPage() {
tag="Reservations"
title="Reserve Your Premium Experience"
description="Secure your table at Kurogane and prepare for an unforgettable evening of authentic Japanese teppanyaki excellence."
background={{ variant: "floatingGradient" }}
background={{ variant: "sparkles-gradient" }}
useInvertedBackground={false}
inputPlaceholder="Your email address"
buttonText="Request Reservation"

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;
fontSize?: number;
fontWeight?: number | string;
letterSpacing?: number;
fill?: string;
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: React.FC<SvgTextLogoProps> = ({
text,
fontSize = 24,
fontWeight = 700,
letterSpacing = 0,
fill = 'currentColor',
className,
}) => {
const textLength = text.length;
const charWidth = fontSize * 0.6;
const totalWidth = textLength * charWidth + (textLength - 1) * letterSpacing + 40;
const viewBoxHeight = fontSize + 20;
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 ${totalWidth} ${viewBoxHeight}`}
className={className}
preserveAspectRatio="xMidYMid meet"
>
<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={totalWidth / 2}
y={fontSize + 5}
fontSize={fontSize}
fontWeight={fontWeight}
letterSpacing={letterSpacing}
fill={fill}
textAnchor="middle"
dominantBaseline="central"
>
{logoText}
{text}
</text>
</svg>
);
});
SvgTextLogo.displayName = "SvgTextLogo";
};
export default SvgTextLogo;