Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c5f54a558e | |||
| 49b5ed0ac4 | |||
| ee481ad04c | |||
| 2e1f368521 | |||
| 0bc592730f | |||
| 11ce9966af | |||
| c865208215 | |||
| 11335f42bc | |||
| 606a14d774 | |||
| 41ef43b80e | |||
| ab487a44fb |
@@ -1,12 +1,12 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
|
||||
import HeroSplitDualMedia from '@/components/sections/hero/HeroSplitDualMedia';
|
||||
import MetricSplitMediaAbout from '@/components/sections/about/MetricSplitMediaAbout';
|
||||
import FooterBase from '@/components/sections/footer/FooterBase';
|
||||
import Link from 'next/link';
|
||||
import { Sparkles, MapPin } from 'lucide-react';
|
||||
import NavbarStyleCentered from "@/components/navbar/NavbarStyleCentered/NavbarStyleCentered";
|
||||
import HeroSplitDualMedia from "@/components/sections/hero/HeroSplitDualMedia";
|
||||
import MetricSplitMediaAbout from "@/components/sections/about/MetricSplitMediaAbout";
|
||||
import FooterBase from "@/components/sections/footer/FooterBase";
|
||||
import Link from "next/link";
|
||||
import { Sparkles, MapPin } from "lucide-react";
|
||||
|
||||
export default function ContactPage() {
|
||||
return (
|
||||
@@ -22,21 +22,19 @@ export default function ContactPage() {
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="extrabold"
|
||||
>
|
||||
{/* Navbar */}
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleCentered
|
||||
navItems={[
|
||||
{ name: "Home", id: "home" },
|
||||
{ name: "Menu", id: "menu" },
|
||||
{ name: "About", id: "about" },
|
||||
{ name: "Contact", id: "contact" }
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Menu", id: "/menu" },
|
||||
{ name: "About", id: "#about" },
|
||||
{ name: "Contact", id: "/contact" },
|
||||
]}
|
||||
button={{ text: "Order Online", href: "order" }}
|
||||
button={{ text: "Order Online", href: "/contact" }}
|
||||
brandName="Leavity"
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Contact Hero */}
|
||||
<div id="hero" data-section="hero">
|
||||
<HeroSplitDualMedia
|
||||
title="Get In Touch"
|
||||
@@ -47,24 +45,23 @@ export default function ContactPage() {
|
||||
background={{ variant: "plain" }}
|
||||
mediaItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/hand-mixing-flour_1170-2250.jpg?_wi=4", imageAlt: "Golden sourdough crust and artisan bread baking"
|
||||
},
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/hand-mixing-flour_1170-2250.jpg?_wi=4", imageAlt: "Golden sourdough crust and artisan bread baking"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/assorted-biscuits-candies-cup-tea-gray-surface_114579-20936.jpg?_wi=3", imageAlt: "Specialty coffee with care and precision"
|
||||
}
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/assorted-biscuits-candies-cup-tea-gray-surface_114579-20936.jpg?_wi=3", imageAlt: "Specialty coffee with care and precision"},
|
||||
]}
|
||||
mediaAnimation="slide-up"
|
||||
rating={5}
|
||||
ratingText="Loved by Salt Lake City"
|
||||
buttons={[
|
||||
{ text: "Order Online", href: "#contact" },
|
||||
{ text: "Call Us", href: "#contact" }
|
||||
{ text: "Order Online", href: "/contact" },
|
||||
{ text: "Call Us", href: "/contact" },
|
||||
]}
|
||||
buttonAnimation="slide-up"
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Location & Hours */}
|
||||
<div id="location" data-section="location">
|
||||
<MetricSplitMediaAbout
|
||||
title="Visit Leavity"
|
||||
@@ -74,7 +71,7 @@ export default function ContactPage() {
|
||||
tagAnimation="slide-up"
|
||||
metrics={[
|
||||
{ value: "Mon-Sun", title: "6 AM - 7 PM" },
|
||||
{ value: "365", title: "Days Fresh Bread" }
|
||||
{ value: "365", title: "Days Fresh Bread" },
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/hand-mixing-flour_1170-2250.jpg?_wi=5"
|
||||
imageAlt="Leavity Bread & Coffee location and storefront"
|
||||
@@ -84,7 +81,6 @@ export default function ContactPage() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* CTA */}
|
||||
<div id="cta" data-section="cta">
|
||||
<MetricSplitMediaAbout
|
||||
title="Experience Bread The Way It Was Meant To Be"
|
||||
@@ -94,7 +90,7 @@ export default function ContactPage() {
|
||||
tagAnimation="slide-up"
|
||||
metrics={[
|
||||
{ value: "Salt Lake", title: "City Location" },
|
||||
{ value: "Fresh", title: "Every Morning" }
|
||||
{ value: "Fresh", title: "Every Morning" },
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/donuts-bagels-crackers-bakery-products-belarusian-food-products_132075-13054.jpg?_wi=2"
|
||||
imageAlt="Fresh daily breads and pastries at Leavity"
|
||||
@@ -104,7 +100,6 @@ export default function ContactPage() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Footer */}
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterBase
|
||||
logoText="Leavity Bread & Coffee"
|
||||
@@ -112,25 +107,25 @@ export default function ContactPage() {
|
||||
columns={[
|
||||
{
|
||||
title: "Shop", items: [
|
||||
{ label: "Menu", href: "#menu" },
|
||||
{ label: "Order Online", href: "#contact" },
|
||||
{ label: "Catering", href: "#contact" }
|
||||
]
|
||||
{ label: "Menu", href: "/menu" },
|
||||
{ label: "Order Online", href: "/contact" },
|
||||
{ label: "Catering", href: "/contact" },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Leavity", items: [
|
||||
{ label: "Our Story", href: "#about" },
|
||||
{ label: "Our Philosophy", href: "#about" },
|
||||
{ label: "Careers", href: "#" }
|
||||
]
|
||||
{ label: "Careers", href: "#" },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Connect", items: [
|
||||
{ label: "Contact Us", href: "#contact" },
|
||||
{ label: "Contact Us", href: "/contact" },
|
||||
{ label: "Instagram", href: "https://instagram.com" },
|
||||
{ label: "Privacy Policy", href: "#" }
|
||||
]
|
||||
}
|
||||
{ label: "Privacy Policy", href: "#" },
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -7,52 +7,47 @@ import MetricSplitMediaAbout from "@/components/sections/about/MetricSplitMediaA
|
||||
import FooterBase from "@/components/sections/footer/FooterBase";
|
||||
import { Sparkles, MapPin } from "lucide-react";
|
||||
import Link from "next/link";
|
||||
import { useState } from "react";
|
||||
|
||||
export default function MenuPage() {
|
||||
const menuCategories = [
|
||||
{
|
||||
name: "Artisan Breads", items: [
|
||||
{
|
||||
name: "Country Sourdough", description: "Golden crust, airy interior, deeply fermented flavor. 20 hours of slow fermentation.", price: "$6.50"},
|
||||
{
|
||||
name: "Sesame Baguette", description: "Crispy exterior with sesame seeds, tender interior. Perfect for sharing.", price: "$5.00"},
|
||||
{
|
||||
name: "Garlic Sourdough", description: "Sourdough infused with roasted garlic and herbs. A savory delight.", price: "$7.00"},
|
||||
{
|
||||
name: "Ciabatta", description: "Italian-style with open crumb structure. Ideal for sandwiches and dipping.", price: "$4.50"},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Sandwiches & Toasts", items: [
|
||||
{
|
||||
name: "Pig & Fig", description: "Savory pork paired with sweet figs on freshly baked focaccia.", price: "$12.00"},
|
||||
{
|
||||
name: "Avocado Toast", description: "Creamy avocado, lemon, sea salt on toasted sourdough.", price: "$10.50"},
|
||||
{
|
||||
name: "Jambon Beurre", description: "French-inspired ham and butter on crispy baguette.", price: "$9.00"},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Pastries", items: [
|
||||
{
|
||||
name: "Butter Scones", description: "Flaky, buttery scones baked fresh daily. Pairs perfectly with coffee.", price: "$3.50"},
|
||||
{
|
||||
name: "Seasonal Pastries", description: "Rotating selection of croissants, tarts, and Danish pastries.", price: "$4.00-$6.00"},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Coffee & Drinks", items: [
|
||||
{
|
||||
name: "Cortado", description: "Espresso balanced with steamed milk. A Spanish classic.", price: "$4.50"},
|
||||
{
|
||||
name: "Mexican Mocha", description: "Dark chocolate, espresso, cinnamon, and steamed milk.", price: "$5.50"},
|
||||
{
|
||||
name: "Biscoff Cookie Latte", description: "Warm, cozy espresso drink with delicate caramel spice.", price: "$6.00"},
|
||||
{
|
||||
name: "Pour Over Coffee", description: "Single-origin, freshly brewed pour over. Made with precision.", price: "$5.00"},
|
||||
],
|
||||
},
|
||||
];
|
||||
const [activeTab, setActiveTab] = useState("breads");
|
||||
|
||||
const menuCategories = {
|
||||
breads: [
|
||||
{
|
||||
name: "Country Sourdough", description: "Golden crust, airy interior, deeply fermented flavor. 20 hours of slow fermentation.", price: "$6.50"},
|
||||
{
|
||||
name: "Sesame Baguette", description: "Crispy exterior with sesame seeds, tender interior. Perfect for sharing.", price: "$5.00"},
|
||||
{
|
||||
name: "Garlic Sourdough", description: "Sourdough infused with roasted garlic and herbs. A savory delight.", price: "$7.00"},
|
||||
{
|
||||
name: "Ciabatta", description: "Italian-style with open crumb structure. Ideal for sandwiches and dipping.", price: "$4.50"},
|
||||
],
|
||||
sandwiches: [
|
||||
{
|
||||
name: "Pig & Fig", description: "Savory pork paired with sweet figs on freshly baked focaccia.", price: "$12.00"},
|
||||
{
|
||||
name: "Avocado Toast", description: "Creamy avocado, lemon, sea salt on toasted sourdough.", price: "$10.50"},
|
||||
{
|
||||
name: "Jambon Beurre", description: "French-inspired ham and butter on crispy baguette.", price: "$9.00"},
|
||||
],
|
||||
pastries: [
|
||||
{
|
||||
name: "Butter Scones", description: "Flaky, buttery scones baked fresh daily. Pairs perfectly with coffee.", price: "$3.50"},
|
||||
{
|
||||
name: "Seasonal Pastries", description: "Rotating selection of croissants, tarts, and Danish pastries.", price: "$4.00-$6.00"},
|
||||
],
|
||||
coffee: [
|
||||
{
|
||||
name: "Cortado", description: "Espresso balanced with steamed milk. A Spanish classic.", price: "$4.50"},
|
||||
{
|
||||
name: "Mexican Mocha", description: "Dark chocolate, espresso, cinnamon, and steamed milk.", price: "$5.50"},
|
||||
{
|
||||
name: "Biscoff Cookie Latte", description: "Warm, cozy espresso drink with delicate caramel spice.", price: "$6.00"},
|
||||
{
|
||||
name: "Pour Over Coffee", description: "Single-origin, freshly brewed pour over. Made with precision.", price: "$5.00"},
|
||||
],
|
||||
};
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
@@ -71,13 +66,14 @@ export default function MenuPage() {
|
||||
<NavbarStyleCentered
|
||||
brandName="Leavity"
|
||||
navItems={[
|
||||
{ name: "Home", id: "home" },
|
||||
{ name: "Menu", id: "menu" },
|
||||
{ name: "About", id: "about" },
|
||||
{ name: "Contact", id: "contact" },
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Menu", id: "/menu" },
|
||||
{ name: "About", id: "#about" },
|
||||
{ name: "Contact", id: "/contact" },
|
||||
]}
|
||||
button={{
|
||||
text: "Order Online", href: "order"}}
|
||||
text: "Order Online", href: "/contact"
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -91,38 +87,63 @@ export default function MenuPage() {
|
||||
background={{ variant: "plain" }}
|
||||
mediaItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-view-bread-black-background_23-2148288109.jpg?_wi=2", imageAlt: "Premium artisanal sourdough loaves"},
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/close-up-view-bread-black-background_23-2148288109.jpg?_wi=2", imageAlt: "Premium artisanal sourdough loaves"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/overhead-view-freshly-baked-hot-dogs-fig-slices-almonds-kitchen-counter_23-2147956752.jpg?_wi=2", imageAlt: "Gourmet sandwiches and pastries"},
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/overhead-view-freshly-baked-hot-dogs-fig-slices-almonds-kitchen-counter_23-2147956752.jpg?_wi=2", imageAlt: "Gourmet sandwiches and pastries"},
|
||||
]}
|
||||
mediaAnimation="slide-up"
|
||||
rating={5}
|
||||
ratingText="Crafted with Care"
|
||||
buttons={[
|
||||
{ text: "Order Now", href: "#contact" },
|
||||
]}
|
||||
buttons={[{ text: "Order Now", href: "/contact" }]}
|
||||
buttonAnimation="slide-up"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="menu-categories" data-section="menu-categories" className="mx-auto px-4 md:px-6 py-12 md:py-20 max-w-6xl">
|
||||
<div className="grid gap-12">
|
||||
{menuCategories.map((category, idx) => (
|
||||
<div key={idx} className="space-y-6">
|
||||
<h2 className="text-3xl md:text-4xl font-extrabold text-foreground">{category.name}</h2>
|
||||
<div className="grid gap-4 md:grid-cols-2">
|
||||
{category.items.map((item, itemIdx) => (
|
||||
<div key={itemIdx} className="p-6 rounded-lg bg-card border border-accent/20 hover:border-accent/50 transition-all">
|
||||
<div className="flex justify-between items-start mb-2">
|
||||
<h3 className="text-lg md:text-xl font-bold text-foreground">{item.name}</h3>
|
||||
<span className="text-primary-cta font-semibold text-lg">{item.price}</span>
|
||||
</div>
|
||||
<p className="text-foreground/70 text-sm md:text-base">{item.description}</p>
|
||||
</div>
|
||||
))}
|
||||
<div className="space-y-12">
|
||||
<div className="text-center space-y-3">
|
||||
<h2 className="text-4xl md:text-5xl font-extrabold text-foreground">Browse Our Menu</h2>
|
||||
<p className="text-foreground/70 text-lg">Click tabs to explore different categories</p>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-wrap gap-4 justify-center">
|
||||
{[
|
||||
{ id: "breads", label: "Artisan Breads" },
|
||||
{ id: "sandwiches", label: "Sandwiches & Toasts" },
|
||||
{ id: "pastries", label: "Pastries" },
|
||||
{ id: "coffee", label: "Coffee & Drinks" },
|
||||
].map((tab) => (
|
||||
<button
|
||||
key={tab.id}
|
||||
onClick={() => setActiveTab(tab.id)}
|
||||
className={`px-6 py-3 rounded-lg font-semibold transition-all duration-300 ${
|
||||
activeTab === tab.id
|
||||
? "bg-primary-cta text-primary-cta-text shadow-lg scale-105"
|
||||
: "bg-card text-foreground border border-accent/30 hover:border-accent/60"
|
||||
}`}
|
||||
>
|
||||
{tab.label}
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
|
||||
<div className="grid gap-4 md:grid-cols-2 lg:grid-cols-3 animate-fade-in">
|
||||
{menuCategories[activeTab as keyof typeof menuCategories].map((item, idx) => (
|
||||
<div
|
||||
key={idx}
|
||||
className="p-6 rounded-lg bg-card border border-accent/20 hover:border-accent/50 transition-all hover:shadow-md hover:scale-105 duration-300 cursor-pointer"
|
||||
onClick={() => console.log(`Clicked: ${item.name}`)}
|
||||
>
|
||||
<div className="flex justify-between items-start mb-2">
|
||||
<h3 className="text-lg font-bold text-foreground">{item.name}</h3>
|
||||
<span className="text-primary-cta font-semibold text-lg">{item.price}</span>
|
||||
</div>
|
||||
<p className="text-foreground/70 text-sm">{item.description}</p>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -152,9 +173,9 @@ export default function MenuPage() {
|
||||
columns={[
|
||||
{
|
||||
title: "Shop", items: [
|
||||
{ label: "Menu", href: "#menu" },
|
||||
{ label: "Order Online", href: "#contact" },
|
||||
{ label: "Catering", href: "#contact" },
|
||||
{ label: "Menu", href: "/menu" },
|
||||
{ label: "Order Online", href: "/contact" },
|
||||
{ label: "Catering", href: "/contact" },
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -166,7 +187,7 @@ export default function MenuPage() {
|
||||
},
|
||||
{
|
||||
title: "Connect", items: [
|
||||
{ label: "Contact Us", href: "#contact" },
|
||||
{ label: "Contact Us", href: "/contact" },
|
||||
{ label: "Instagram", href: "https://instagram.com" },
|
||||
{ label: "Privacy Policy", href: "#" },
|
||||
],
|
||||
|
||||
145
src/app/page.tsx
145
src/app/page.tsx
@@ -10,8 +10,34 @@ import MetricSplitMediaAbout from "@/components/sections/about/MetricSplitMediaA
|
||||
import FooterBase from "@/components/sections/footer/FooterBase";
|
||||
import { Sparkles, Award, Heart, Star, MapPin, ArrowRight } from "lucide-react";
|
||||
import Link from "next/link";
|
||||
import { useState } from "react";
|
||||
|
||||
export default function HomePage() {
|
||||
const [activeTab, setActiveTab] = useState("breads");
|
||||
|
||||
const menuData = {
|
||||
breads: [
|
||||
{ name: "Country Sourdough", desc: "20-hour fermented golden crust" },
|
||||
{ name: "Sesame Baguette", desc: "Crispy with sesame seeds" },
|
||||
{ name: "Garlic Sourdough", desc: "Roasted garlic & herbs" },
|
||||
],
|
||||
sandwiches: [
|
||||
{ name: "Pig & Fig", desc: "Savory pork & sweet figs" },
|
||||
{ name: "Avocado Toast", desc: "Creamy avocado on sourdough" },
|
||||
{ name: "Jambon Beurre", desc: "French ham & butter" },
|
||||
],
|
||||
pastries: [
|
||||
{ name: "Butter Scones", desc: "Flaky & buttery" },
|
||||
{ name: "Croissants", desc: "European-style layered" },
|
||||
{ name: "Seasonal Tarts", desc: "Rotating selection" },
|
||||
],
|
||||
coffee: [
|
||||
{ name: "Cortado", desc: "Espresso & steamed milk" },
|
||||
{ name: "Mexican Mocha", desc: "Chocolate, espresso & cinnamon" },
|
||||
{ name: "Biscoff Latte", desc: "Caramel spice warmth" },
|
||||
],
|
||||
};
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="hover-magnetic"
|
||||
@@ -29,13 +55,14 @@ export default function HomePage() {
|
||||
<NavbarStyleCentered
|
||||
brandName="Leavity"
|
||||
navItems={[
|
||||
{ name: "Home", id: "home" },
|
||||
{ name: "Menu", id: "menu" },
|
||||
{ name: "About", id: "about" },
|
||||
{ name: "Contact", id: "contact" },
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Menu", id: "/menu" },
|
||||
{ name: "About", id: "#about" },
|
||||
{ name: "Contact", id: "/contact" },
|
||||
]}
|
||||
button={{
|
||||
text: "Order Online", href: "order"}}
|
||||
text: "Order Online", href: "/contact"
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -49,16 +76,18 @@ export default function HomePage() {
|
||||
background={{ variant: "plain" }}
|
||||
mediaItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/hand-mixing-flour_1170-2250.jpg?_wi=1", imageAlt: "Golden sourdough crust and artisan bread baking"},
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/hand-mixing-flour_1170-2250.jpg?_wi=1", imageAlt: "Golden sourdough crust and artisan bread baking"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/assorted-biscuits-candies-cup-tea-gray-surface_114579-20936.jpg?_wi=1", imageAlt: "Specialty coffee with care and precision"},
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/assorted-biscuits-candies-cup-tea-gray-surface_114579-20936.jpg?_wi=1", imageAlt: "Specialty coffee with care and precision"},
|
||||
]}
|
||||
mediaAnimation="slide-up"
|
||||
rating={5}
|
||||
ratingText="Loved by Salt Lake City"
|
||||
buttons={[
|
||||
{ text: "View Menu", href: "#menu" },
|
||||
{ text: "Order Online", href: "#contact" },
|
||||
{ text: "View Menu", href: "/menu" },
|
||||
{ text: "Order Online", href: "/contact" },
|
||||
]}
|
||||
buttonAnimation="slide-up"
|
||||
/>
|
||||
@@ -73,14 +102,20 @@ export default function HomePage() {
|
||||
tagAnimation="slide-up"
|
||||
features={[
|
||||
{
|
||||
title: "Slow Fermented Sourdough", description: "Fermented for over 20 hours to create rich flavor, perfect texture, and exceptional digestibility.", imageSrc: "http://img.b2bpic.net/free-photo/man-putting-tomato-white-tablecloth-with-bread-slices-eggs-garlic-gloves-around_114579-2649.jpg", imageAlt: "20-hour slow fermented sourdough process", buttonIcon: ArrowRight,
|
||||
buttonHref: "#menu"},
|
||||
title: "Slow Fermented Sourdough", description:
|
||||
"Fermented for over 20 hours to create rich flavor, perfect texture, and exceptional digestibility.", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/man-putting-tomato-white-tablecloth-with-bread-slices-eggs-garlic-gloves-around_114579-2649.jpg", imageAlt: "20-hour slow fermented sourdough process", buttonIcon: ArrowRight,
|
||||
buttonHref: "/menu"},
|
||||
{
|
||||
title: "Craft Coffee", description: "Every cup brewed with precision using high-quality beans roasted with intention and care.", imageSrc: "http://img.b2bpic.net/free-photo/front-view-man-making-coffee_23-2150354568.jpg", imageAlt: "Specialty coffee preparation and pour-over brewing", buttonIcon: ArrowRight,
|
||||
buttonHref: "#menu"},
|
||||
title: "Craft Coffee", description:
|
||||
"Every cup brewed with precision using high-quality beans roasted with intention and care.", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/front-view-man-making-coffee_23-2150354568.jpg", imageAlt: "Specialty coffee preparation and pour-over brewing", buttonIcon: ArrowRight,
|
||||
buttonHref: "/menu"},
|
||||
{
|
||||
title: "Handcrafted Daily", description: "Each loaf and pastry made fresh every morning by skilled artisans dedicated to the craft.", imageSrc: "http://img.b2bpic.net/free-photo/donuts-bagels-crackers-bakery-products-belarusian-food-products_132075-13054.jpg?_wi=1", imageAlt: "Daily handcrafted breads and pastries", buttonIcon: ArrowRight,
|
||||
buttonHref: "#menu"},
|
||||
title: "Handcrafted Daily", description:
|
||||
"Each loaf and pastry made fresh every morning by skilled artisans dedicated to the craft.", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/donuts-bagels-crackers-bakery-products-belarusian-food-products_132075-13054.jpg?_wi=1", imageAlt: "Daily handcrafted breads and pastries", buttonIcon: ArrowRight,
|
||||
buttonHref: "/menu"},
|
||||
]}
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
@@ -88,6 +123,51 @@ export default function HomePage() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="menu" data-section="menu" className="mx-auto px-4 md:px-6 py-12 md:py-20 max-w-6xl">
|
||||
<div className="space-y-8">
|
||||
<div className="text-center space-y-3">
|
||||
<h2 className="text-4xl md:text-5xl font-extrabold text-foreground">Our Menu</h2>
|
||||
<p className="text-foreground/70 text-lg">Explore our carefully curated offerings</p>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-wrap gap-4 justify-center">
|
||||
{[
|
||||
{ id: "breads", label: "Breads" },
|
||||
{ id: "sandwiches", label: "Sandwiches" },
|
||||
{ id: "pastries", label: "Pastries" },
|
||||
{ id: "coffee", label: "Coffee" },
|
||||
].map((tab) => (
|
||||
<button
|
||||
key={tab.id}
|
||||
onClick={() => setActiveTab(tab.id)}
|
||||
className={`px-6 py-3 rounded-lg font-semibold transition-all duration-300 ${
|
||||
activeTab === tab.id
|
||||
? "bg-primary-cta text-primary-cta-text shadow-lg"
|
||||
: "bg-card text-foreground border border-accent/30 hover:border-accent/60"
|
||||
}`}
|
||||
>
|
||||
{tab.label}
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
|
||||
<div className="grid gap-4 md:grid-cols-2 lg:grid-cols-3">
|
||||
{menuData[activeTab as keyof typeof menuData].map((item, idx) => (
|
||||
<div
|
||||
key={idx}
|
||||
className="p-6 rounded-lg bg-card border border-accent/20 hover:border-accent/50 transition-all hover:shadow-md cursor-pointer"
|
||||
onClick={() => console.log(`Clicked: ${item.name}`)}
|
||||
>
|
||||
<h3 className="text-lg font-bold text-foreground mb-2">
|
||||
{item.name}
|
||||
</h3>
|
||||
<p className="text-foreground/70 text-sm">{item.desc}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<ProductCardTwo
|
||||
title="Signature Products"
|
||||
@@ -98,15 +178,18 @@ export default function HomePage() {
|
||||
products={[
|
||||
{
|
||||
id: "1", brand: "Leavity", name: "Country Sourdough", price: "Made Fresh Daily", rating: 5,
|
||||
reviewCount: "127+", imageSrc: "http://img.b2bpic.net/free-photo/close-up-view-bread-black-background_23-2148288109.jpg?_wi=1", imageAlt: "Golden country sourdough loaf", isFavorited: false,
|
||||
reviewCount: "127+", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/close-up-view-bread-black-background_23-2148288109.jpg?_wi=1", imageAlt: "Golden country sourdough loaf", isFavorited: false,
|
||||
},
|
||||
{
|
||||
id: "2", brand: "Leavity", name: "Pig & Fig Sandwich", price: "Made Fresh Daily", rating: 5,
|
||||
reviewCount: "98+", imageSrc: "http://img.b2bpic.net/free-photo/overhead-view-freshly-baked-hot-dogs-fig-slices-almonds-kitchen-counter_23-2147956752.jpg?_wi=1", imageAlt: "Artisanal pork and fig sandwich on focaccia", isFavorited: false,
|
||||
reviewCount: "98+", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/overhead-view-freshly-baked-hot-dogs-fig-slices-almonds-kitchen-counter_23-2147956752.jpg?_wi=1", imageAlt: "Artisanal pork and fig sandwich on focaccia", isFavorited: false,
|
||||
},
|
||||
{
|
||||
id: "3", brand: "Leavity", name: "Biscoff Cookie Latte", price: "Made Fresh Daily", rating: 5,
|
||||
reviewCount: "156+", imageSrc: "http://img.b2bpic.net/free-photo/assorted-biscuits-candies-cup-tea-gray-surface_114579-20936.jpg?_wi=2", imageAlt: "Warm biscoff cookie latte with caramel spice", isFavorited: false,
|
||||
reviewCount: "156+", imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/assorted-biscuits-candies-cup-tea-gray-surface_114579-20936.jpg?_wi=2", imageAlt: "Warm biscoff cookie latte with caramel spice", isFavorited: false,
|
||||
},
|
||||
]}
|
||||
gridVariant="three-columns-all-equal-width"
|
||||
@@ -127,22 +210,28 @@ export default function HomePage() {
|
||||
testimonials={[
|
||||
{
|
||||
id: "1", name: "Sarah Mitchell", role: "Local Regular", company: "Salt Lake City", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-sexy-slim-young-female-jacket-jeans-leani_613910-16189.jpg", imageAlt: "Sarah Mitchell"},
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/portrait-sexy-slim-young-female-jacket-jeans-leani_613910-16189.jpg", imageAlt: "Sarah Mitchell"},
|
||||
{
|
||||
id: "2", name: "James Rodriguez", role: "Food Enthusiast", company: "Salt Lake City", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/handsome-business-man-wearing-suit-loking-camera-confused-with-raised-hands-standing-pink-background_141793-54101.jpg", imageAlt: "James Rodriguez"},
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/handsome-business-man-wearing-suit-loking-camera-confused-with-raised-hands-standing-pink-background_141793-54101.jpg", imageAlt: "James Rodriguez"},
|
||||
{
|
||||
id: "3", name: "Emma Thompson", role: "Wellness Coach", company: "Salt Lake City", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/business-woman-with-crossed-arms-smiling_23-2148095677.jpg", imageAlt: "Emma Thompson"},
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/business-woman-with-crossed-arms-smiling_23-2148095677.jpg", imageAlt: "Emma Thompson"},
|
||||
{
|
||||
id: "4", name: "Michael Chen", role: "Coffee Connoisseur", company: "Salt Lake City", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-handsome-young-businessman-trendy-suit-smiling-standing-against-white-background_1258-170863.jpg", imageAlt: "Michael Chen"},
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/closeup-handsome-young-businessman-trendy-suit-smiling-standing-against-white-background_1258-170863.jpg", imageAlt: "Michael Chen"},
|
||||
{
|
||||
id: "5", name: "Jessica Parker", role: "Bread Lover", company: "Salt Lake City", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-businesswoman-pointing-copy-space_329181-1212.jpg", imageAlt: "Jessica Parker"},
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/smiling-businesswoman-pointing-copy-space_329181-1212.jpg", imageAlt: "Jessica Parker"},
|
||||
{
|
||||
id: "6", name: "David Wilson", role: "Community Member", company: "Salt Lake City", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/emotions-people-concept-headshot-serious-looking-handsome-man-with-beard-looking-confident-determined_1258-26730.jpg", imageAlt: "David Wilson"},
|
||||
imageSrc:
|
||||
"http://img.b2bpic.net/free-photo/emotions-people-concept-headshot-serious-looking-handsome-man-with-beard-looking-confident-determined_1258-26730.jpg", imageAlt: "David Wilson"},
|
||||
]}
|
||||
kpiItems={[
|
||||
{ value: "20+", label: "Years of Baking Excellence" },
|
||||
@@ -182,9 +271,9 @@ export default function HomePage() {
|
||||
columns={[
|
||||
{
|
||||
title: "Shop", items: [
|
||||
{ label: "Menu", href: "#menu" },
|
||||
{ label: "Order Online", href: "#contact" },
|
||||
{ label: "Catering", href: "#contact" },
|
||||
{ label: "Menu", href: "/menu" },
|
||||
{ label: "Order Online", href: "/contact" },
|
||||
{ label: "Catering", href: "/contact" },
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -196,7 +285,7 @@ export default function HomePage() {
|
||||
},
|
||||
{
|
||||
title: "Connect", items: [
|
||||
{ label: "Contact Us", href: "#contact" },
|
||||
{ label: "Contact Us", href: "/contact" },
|
||||
{ label: "Instagram", href: "https://instagram.com" },
|
||||
{ label: "Privacy Policy", href: "#" },
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user