Merge version_2_1781569401267 into main

Merge version_2_1781569401267 into main
This commit was merged in pull request #1.
This commit is contained in:
2026-06-16 00:25:11 +00:00
9 changed files with 426 additions and 271 deletions

View File

@@ -1,283 +1,36 @@
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSimple from '@/components/sections/faq/FaqSimple';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
import HeroOverlayMarquee from '@/components/sections/hero/HeroOverlayMarquee';
import PricingMediaCards from '@/components/sections/pricing/PricingMediaCards';
import TestimonialQuoteCards from '@/components/sections/testimonial/TestimonialQuoteCards';
import { Award, CheckCircle, Heart, Star } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
// AUTO-GENERATED shell by per-section-migrate.
// Section bodies live in ./<PageBase>/sections/<X>.tsx. Edit the section
// files directly. Non-block content (wrappers, non-inlinable sections) is
// preserved inline; extracted section blocks become <XSection/> refs.
export default function HomePage() {
import React from 'react';
import HeroSection from './HomePage/sections/Hero';
import AboutSection from './HomePage/sections/About';
import FeaturesSection from './HomePage/sections/Features';
import ProductsSection from './HomePage/sections/Products';
import TestimonialsSection from './HomePage/sections/Testimonials';
import PricingSection from './HomePage/sections/Pricing';
import FaqSection from './HomePage/sections/Faq';
import ContactSection from './HomePage/sections/Contact';
export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroOverlayMarquee
tag="地域で愛される本格カレー"
title="インドカレー ラッキーへようこそ"
description="本格的なスパイスとモチモチのナン。心温まる接客で、皆さまのご来店をお待ちしております。"
primaryButton={{
text: "メニューを見る",
href: "#products",
}}
secondaryButton={{
text: "店舗情報",
href: "#contact",
}}
items={[
{
text: "バターチキンカレー",
icon: CheckCircle,
},
{
text: "おかわり自由のナン",
icon: CheckCircle,
},
{
text: "フレンドリーな接客",
icon: CheckCircle,
},
]}
imageSrc="http://img.b2bpic.net/free-photo/hot-tendir-bread-table_140725-4758.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutFeaturesSplit
tag="私たちのこだわり"
title="「以前よりおいしく」を追い求めて"
description="私たちは、常に進化し続ける本格カレーをお届けしています。スパイスの調合からナン焼きまで、一つ一つこだわった一皿をご堪能ください。"
items={[
{
icon: Star,
title: "こだわりのスパイス",
description: "本格的なスパイスを使用したコク深いカレー。",
},
{
icon: Award,
title: "モチモチのナン",
description: "おかわり自由。焼きたてのモチモチ食感。",
},
{
icon: Heart,
title: "親切な接客",
description: "笑顔とフレンドリーなサービスを大切に。",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/side-view-friends-enjoying-dinner-party_52683-132612.jpg"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesTaggedCards
tag="当店が選ばれる理由"
title="心地よいひとときを"
description="家族連れにも安心、地域密着の人気店です。"
items={[
{
tag: "家族で楽しめる",
title: "お子様連れ歓迎",
description: "広々とした席で安心してお食事をお楽しみください。",
primaryButton: {
text: "詳しく",
href: "#contact",
},
imageSrc: "http://img.b2bpic.net/free-photo/italian-focaccia-with-rosemary_123827-22230.jpg",
},
{
tag: "定番メニュー",
title: "本格インドカレー",
description: "定番のバターチキンなど多数ご用意。",
primaryButton: {
text: "詳しく",
href: "#products",
},
imageSrc: "http://img.b2bpic.net/free-photo/arrangement-different-pakistan-goodies_23-2148821571.jpg",
},
{
tag: "地域密着",
title: "リピーター続出",
description: "地元のお客様に愛され続けています。",
primaryButton: {
text: "詳しく",
href: "#testimonials",
},
imageSrc: "http://img.b2bpic.net/free-photo/adults-enjoying-mexican-food_23-2149663832.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="products" data-section="products">
<SectionErrorBoundary name="products">
<FeaturesRevealCardsBento
tag="おすすめメニュー"
title="定番から限定まで"
description="リピーター様にも大人気のメニューラインナップ。"
items={[
{
title: "バターチキンカレー",
description: "濃厚でクリーミーな一番人気のカレーです。",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/view-delicious-food-bowl_23-2148728101.jpg",
},
{
title: "ほうれん草チキン",
description: "ヘルシーでスパイス香る絶品の一皿。",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/pork-green-curry-brown-bowl-with-spices-black-cement-background_1150-35206.jpg",
},
{
title: "スパイシーラム",
description: "ラム肉の旨味をスパイスで引き立てます。",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/traditional-georgian-veal-dish-chashushuli-stewed-meat-with-onions-peppers-wooden-table_166373-6563.jpg",
},
{
title: "バスマティライス",
description: "カレーとの相性抜群の香り高いお米。",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/pan-with-rice-near-spices_23-2147894755.jpg",
},
{
title: "タンドリーチキン",
description: "スパイスをじっくり漬け込み焼き上げました。",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/front-close-up-view-fried-chicken-along-with-fresh-vegetables-brown-wooden-desk_140725-14234.jpg",
},
{
title: "サモサ",
description: "サクサクの皮に包まれたスパイシーな逸品。",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-tasty-cooked-rice-with-meatballs-different-seasonings-dark_140725-104448.jpg",
},
{
title: "マンゴーラッシー",
description: "カレーの後にぴったりの甘いデザートドリンク。",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/herbs-with-cup-drink-blue_114579-29048.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<ProductsSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialQuoteCards
tag="お客様の声"
title="皆さまからの評判"
description="地域の皆さまから愛されているお店の理由です。"
testimonials={[
{
name: "佐藤様",
role: "リピーター",
quote: "カレーもナンも最高!店長さんもフレンドリーで居心地がいいです。",
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-woman-smiling_93675-133804.jpg",
},
{
name: "鈴木様",
role: "家族連れ",
quote: "子供連れでも安心して入れるのが嬉しい。味も本格的で大満足です。",
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-friends-dinner-party_23-2150648938.jpg",
},
{
name: "高橋様",
role: "常連さん",
quote: "以前より味がさらに良くなった気がします。いつもありがとうございます。",
imageSrc: "http://img.b2bpic.net/free-photo/woman-retro-vintage-50-s-cafe-sitting-table-drinking-milk-shake-cocktail-black-leather-jacket-wearing-pink-sunglasses_285396-10322.jpg",
},
{
name: "伊藤様",
role: "会社員",
quote: "ランチがとてもお得でおいしいです。ナンのおかわりができるのが最高。",
imageSrc: "http://img.b2bpic.net/free-photo/distracted-student-sitting-class_1153-23.jpg",
},
{
name: "渡辺様",
role: "地域住民",
quote: "とにかくナンがモチモチで大好きです。定期的に通わせてもらっています。",
imageSrc: "http://img.b2bpic.net/free-photo/business-woman-having-lunch-cafe_1303-23874.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingMediaCards
tag="メニュー価格"
title="手頃でボリューミーなランチ"
description="お腹も心も満たされるランチメニューをご用意しています。"
plans={[
{
tag: "ランチ限定",
price: "¥850〜",
period: "ランチセット",
features: [
"お好みのカレー",
"焼きたてナン(おかわり可)",
"サラダ・ドリンク付き",
],
primaryButton: {
text: "予約する",
href: "#contact",
},
imageSrc: "http://img.b2bpic.net/free-photo/chicken-tikka-masala-with-rice-naan_23-2152002828.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<PricingSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSimple
tag="よくある質問"
title="ご不明な点はありますか?"
description="お気軽にご相談ください。"
items={[
{
question: "カードや電子マネーは使えますか?",
answer: "現在は現金のみのご対応となっております。ご不便をおかけしますがご了承ください。",
},
{
question: "辛さの調整はできますか?",
answer: "可能です。注文時にご希望の辛さをお伝えください。",
},
{
question: "駐車場はありますか?",
answer: "店舗周辺に数台分ご用意しております。混雑時は公共交通機関のご利用をおすすめします。",
},
]}
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="ご来店予約"
text="皆さまのご来店を心よりお待ちしております。"
primaryButton={{
text: "電話予約する",
href: "tel:00-0000-0000",
}}
secondaryButton={{
text: "店舗へのアクセス",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,39 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "about" section.
import React from 'react';
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
import { Award, CheckCircle, Heart, Star } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutFeaturesSplit
tag="私たちのこだわり"
title="「以前よりおいしく」を追い求めて"
description="私たちは、常に進化し続ける本格カレーをお届けしています。スパイスの調合からナン焼きまで、一つ一つこだわった一皿をご堪能ください。"
items={[
{
icon: Star,
title: "こだわりのスパイス",
description: "本格的なスパイスを使用したコク深いカレー。",
},
{
icon: Award,
title: "モチモチのナン",
description: "おかわり自由。焼きたてのモチモチ食感。",
},
{
icon: Heart,
title: "親切な接客",
description: "笑顔とフレンドリーなサービスを大切に。",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/side-view-friends-enjoying-dinner-party_52683-132612.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,80 @@
/* eslint-disable */
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
import ScrollReveal from "@/components/ui/ScrollReveal";
import TextAnimation from "@/components/ui/TextAnimation";
import Button from "@/components/ui/Button";
const primaryButton = {
text: "電話予約する",
href: "tel:0176-51-3040"
};
const secondaryButton = {
text: "Googleマップで開く",
href: "https://maps.google.com/?q=青森県十和田市三本木191−5"
};
const ContactInline = () => {
return (
<section aria-label="Contact section" className="py-20">
<div className="w-content-width mx-auto">
<ScrollReveal variant="fade-blur">
<div className="flex flex-col lg:flex-row items-center gap-8 lg:gap-12 py-12 px-8 rounded card">
<div className="flex flex-col items-start gap-4 flex-1 w-full">
<div className="px-3 py-1 mb-1 text-sm bg-background rounded w-fit border border-border">
<p>{"ご来店予約・アクセス"}</p>
</div>
<TextAnimation
text={"皆さまのご来店を心よりお待ちしております。"}
variant="fade-blur"
gradientText={false}
tag="h2"
className="text-3xl md:text-4xl leading-[1.2] font-semibold text-balance text-foreground"
/>
<div className="flex flex-col gap-3 mt-4 text-muted-foreground text-lg">
<p className="flex items-start gap-2">
<span className="font-semibold min-w-[5rem] text-foreground">:</span>
<span>034-0001<br/></span>
</p>
<p className="flex items-center gap-2">
<span className="font-semibold min-w-[5rem] text-foreground">:</span>
<span>0176-51-3040</span>
</p>
<p className="flex items-center gap-2">
<span className="font-semibold min-w-[5rem] text-foreground">:</span>
<span>11:00</span>
</p>
</div>
<div className="flex flex-wrap gap-3 mt-6">
<Button text={primaryButton.text} href={primaryButton.href} variant="primary" />
<Button text={secondaryButton.text} href={secondaryButton.href} variant="secondary" animationDelay={0.1} />
</div>
</div>
<div className="flex-1 w-full h-[350px] lg:h-[450px] rounded-lg overflow-hidden border border-border shadow-sm">
<iframe
src="https://maps.google.com/maps?q=青森県十和田市三本木191−5&t=&z=15&ie=UTF8&iwloc=&output=embed"
width="100%"
height="100%"
style={{ border: 0 }}
allowFullScreen={true}
loading="lazy"
referrerPolicy="no-referrer-when-downgrade"
title="Google Map - インドカレー ラッキー"
></iframe>
</div>
</div>
</ScrollReveal>
</div>
</section>
);
};
export default function ContactSection() {
return (
<div data-webild-section="contact" id="contact">
<ContactInline />
</div>
);
}

View File

@@ -0,0 +1,34 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "faq" section.
import React from 'react';
import FaqSimple from '@/components/sections/faq/FaqSimple';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSimple
tag="よくある質問"
title="ご不明な点はありますか?"
description="お気軽にご相談ください。"
items={[
{
question: "カードや電子マネーは使えますか?",
answer: "現在は現金のみのご対応となっております。ご不便をおかけしますがご了承ください。",
},
{
question: "辛さの調整はできますか?",
answer: "可能です。注文時にご希望の辛さをお伝えください。",
},
{
question: "駐車場はありますか?",
answer: "店舗周辺に数台分ご用意しております。混雑時は公共交通機関のご利用をおすすめします。",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,52 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "features" section.
import React from 'react';
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesTaggedCards
tag="当店が選ばれる理由"
title="心地よいひとときを"
description="家族連れにも安心、地域密着の人気店です。"
items={[
{
tag: "家族で楽しめる",
title: "お子様連れ歓迎",
description: "広々とした席で安心してお食事をお楽しみください。",
primaryButton: {
text: "詳しく",
href: "#contact",
},
imageSrc: "http://img.b2bpic.net/free-photo/italian-focaccia-with-rosemary_123827-22230.jpg",
},
{
tag: "定番メニュー",
title: "本格インドカレー",
description: "定番のバターチキンなど多数ご用意。",
primaryButton: {
text: "詳しく",
href: "#products",
},
imageSrc: "http://img.b2bpic.net/free-photo/arrangement-different-pakistan-goodies_23-2148821571.jpg",
},
{
tag: "地域密着",
title: "リピーター続出",
description: "地元のお客様に愛され続けています。",
primaryButton: {
text: "詳しく",
href: "#testimonials",
},
imageSrc: "http://img.b2bpic.net/free-photo/adults-enjoying-mexican-food_23-2149663832.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,44 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "hero" section.
import React from 'react';
import HeroOverlayMarquee from '@/components/sections/hero/HeroOverlayMarquee';
import { Award, CheckCircle, Heart, Star } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroOverlayMarquee
tag="地域で愛される本格カレー"
title="インドカレー ラッキーへようこそ"
description="本格的なスパイスとモチモチのナン。心温まる接客で、皆さまのご来店をお待ちしております。"
primaryButton={{
text: "メニューを見る",
href: "#products",
}}
secondaryButton={{
text: "店舗情報",
href: "#contact",
}}
items={[
{
text: "バターチキンカレー",
icon: CheckCircle,
},
{
text: "おかわり自由のナン",
icon: CheckCircle,
},
{
text: "フレンドリーな接客",
icon: CheckCircle,
},
]}
imageSrc="http://img.b2bpic.net/free-photo/hot-tendir-bread-table_140725-4758.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,37 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "pricing" section.
import React from 'react';
import PricingMediaCards from '@/components/sections/pricing/PricingMediaCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function PricingSection(): React.JSX.Element {
return (
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingMediaCards
tag="メニュー価格"
title="手頃でボリューミーなランチ"
description="お腹も心も満たされるランチメニューをご用意しています。"
plans={[
{
tag: "ランチ限定",
price: "¥850〜",
period: "ランチセット",
features: [
"お好みのカレー",
"焼きたてナン(おかわり可)",
"サラダ・ドリンク付き",
],
primaryButton: {
text: "予約する",
href: "#contact",
},
imageSrc: "http://img.b2bpic.net/free-photo/chicken-tikka-masala-with-rice-naan_23-2152002828.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,64 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "products" section.
import React from 'react';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ProductsSection(): React.JSX.Element {
return (
<div id="products" data-section="products">
<SectionErrorBoundary name="products">
<FeaturesRevealCardsBento
tag="おすすめメニュー"
title="定番から限定まで"
description="リピーター様にも大人気のメニューラインナップ。"
items={[
{
title: "バターチキンカレー",
description: "濃厚でクリーミーな一番人気のカレーです。",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/view-delicious-food-bowl_23-2148728101.jpg",
},
{
title: "ほうれん草チキン",
description: "ヘルシーでスパイス香る絶品の一皿。",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/pork-green-curry-brown-bowl-with-spices-black-cement-background_1150-35206.jpg",
},
{
title: "スパイシーラム",
description: "ラム肉の旨味をスパイスで引き立てます。",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/traditional-georgian-veal-dish-chashushuli-stewed-meat-with-onions-peppers-wooden-table_166373-6563.jpg",
},
{
title: "バスマティライス",
description: "カレーとの相性抜群の香り高いお米。",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/pan-with-rice-near-spices_23-2147894755.jpg",
},
{
title: "タンドリーチキン",
description: "スパイスをじっくり漬け込み焼き上げました。",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/front-close-up-view-fried-chicken-along-with-fresh-vegetables-brown-wooden-desk_140725-14234.jpg",
},
{
title: "サモサ",
description: "サクサクの皮に包まれたスパイシーな逸品。",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-tasty-cooked-rice-with-meatballs-different-seasonings-dark_140725-104448.jpg",
},
{
title: "マンゴーラッシー",
description: "カレーの後にぴったりの甘いデザートドリンク。",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/herbs-with-cup-drink-blue_114579-29048.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,52 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "testimonials" section.
import React from 'react';
import TestimonialQuoteCards from '@/components/sections/testimonial/TestimonialQuoteCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialQuoteCards
tag="お客様の声"
title="皆さまからの評判"
description="地域の皆さまから愛されているお店の理由です。"
testimonials={[
{
name: "佐藤様",
role: "リピーター",
quote: "カレーもナンも最高!店長さんもフレンドリーで居心地がいいです。",
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-woman-smiling_93675-133804.jpg",
},
{
name: "鈴木様",
role: "家族連れ",
quote: "子供連れでも安心して入れるのが嬉しい。味も本格的で大満足です。",
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-friends-dinner-party_23-2150648938.jpg",
},
{
name: "高橋様",
role: "常連さん",
quote: "以前より味がさらに良くなった気がします。いつもありがとうございます。",
imageSrc: "http://img.b2bpic.net/free-photo/woman-retro-vintage-50-s-cafe-sitting-table-drinking-milk-shake-cocktail-black-leather-jacket-wearing-pink-sunglasses_285396-10322.jpg",
},
{
name: "伊藤様",
role: "会社員",
quote: "ランチがとてもお得でおいしいです。ナンのおかわりができるのが最高。",
imageSrc: "http://img.b2bpic.net/free-photo/distracted-student-sitting-class_1153-23.jpg",
},
{
name: "渡辺様",
role: "地域住民",
quote: "とにかくナンがモチモチで大好きです。定期的に通わせてもらっています。",
imageSrc: "http://img.b2bpic.net/free-photo/business-woman-having-lunch-cafe_1303-23874.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}