6 Commits

Author SHA1 Message Date
d425cc3387 Merge version_4 into main
Merge version_4 into main
2026-03-03 10:36:13 +00:00
9f834bd944 Update src/app/styles/variables.css 2026-03-03 10:36:08 +00:00
ddd734de09 Update src/app/page.tsx 2026-03-03 10:36:07 +00:00
90f5228e28 Update src/app/layout.tsx 2026-03-03 10:36:06 +00:00
9cff208892 Merge version_3 into main
Merge version_3 into main
2026-03-03 10:23:14 +00:00
72166807a3 Merge version_3 into main
Merge version_3 into main
2026-03-03 10:20:06 +00:00
3 changed files with 83 additions and 59 deletions

View File

@@ -16,25 +16,28 @@ const dmSans = DM_Sans({
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Crumb & Co. | Premium Artisan Bakery", description: "Handcrafted pastries and European-style breads made daily in our cozy urban bakery. Cold-fermented sourdough, butter croissants, and seasonal specials with locally-sourced ingredients.", keywords: "artisan bakery, croissants, sourdough, pastries, handcrafted bread, premium baked goods", metadataBase: new URL("https://crumbandco.com"), title: "Crumb & Co. | Premium Artisan Bakery", description: "Handcrafted pastries and European-style breads made daily in our cozy urban bakery. Cold-fermented sourdough, butter croissants, and seasonal specials with locally-sourced ingredients.", keywords: "artisan bakery, croissants, sourdough, pastries, handcrafted bread, premium baked goods", metadataBase: new URL("https://crumbandco.com"),
alternates: { alternates: {
canonical: "https://crumbandco.com"}, canonical: "https://crumbandco.com"
},
openGraph: { openGraph: {
title: "Crumb & Co. | Baked With Obsession", description: "Premium artisan bakery featuring cold-fermented sourdough and handcrafted European pastries.", type: "website", siteName: "Crumb & Co.", url: "https://crumbandco.com", images: [ title: "Crumb & Co. | Baked With Obsession", description: "Premium artisan bakery featuring cold-fermented sourdough and handcrafted European pastries.", type: "website", siteName: "Crumb & Co.", url: "https://crumbandco.com", images: [
{ {
url: "http://img.b2bpic.net/free-photo/air-croissant-with-strawberry-syrup-top-glass-milk_140725-9770.jpg", alt: "Golden butter croissant"}, url: "http://img.b2bpic.net/free-photo/air-croissant-with-strawberry-syrup-top-glass-milk_140725-9770.jpg", alt: "Golden butter croissant"
], }
]
}, },
twitter: { twitter: {
card: "summary_large_image", title: "Crumb & Co. | Baked With Obsession", description: "Premium artisan bakery in your neighborhood.", images: [ card: "summary_large_image", title: "Crumb & Co. | Baked With Obsession", description: "Premium artisan bakery in your neighborhood.", images: [
"http://img.b2bpic.net/free-photo/baker-holds-homemade-craft-bread-his-hands_166373-749.jpg"], "http://img.b2bpic.net/free-photo/baker-holds-homemade-craft-bread-his-hands_166373-749.jpg"
]
}, },
robots: { robots: {
index: true, index: true,
follow: true, follow: true
}, }
}; };
export default function RootLayout({ export default function RootLayout({
children, children
}: Readonly<{ }: Readonly<{
children: React.ReactNode; children: React.ReactNode;
}>) { }>) {

View File

@@ -29,16 +29,16 @@ import {
export default function LandingPage() { export default function LandingPage() {
return ( return (
<ThemeProvider <ThemeProvider
defaultButtonVariant="text-stagger" defaultButtonVariant="hover-magnetic"
defaultTextAnimation="entrance-slide" defaultTextAnimation="reveal-blur"
borderRadius="rounded" borderRadius="soft"
contentWidth="mediumLarge" contentWidth="medium"
sizing="largeSizeMediumTitles" sizing="largeSizeMediumTitles"
background="floatingGradient" background="none"
cardStyle="glass-depth" cardStyle="gradient-mesh"
primaryButtonStyle="gradient" primaryButtonStyle="radial-glow"
secondaryButtonStyle="glass" secondaryButtonStyle="glass"
headingFontWeight="semibold" headingFontWeight="bold"
> >
<div id="nav" data-section="nav"> <div id="nav" data-section="nav">
<NavbarLayoutFloatingInline <NavbarLayoutFloatingInline
@@ -64,30 +64,38 @@ export default function LandingPage() {
leftCarouselItems={[ leftCarouselItems={[
{ {
imageSrc: imageSrc:
"http://img.b2bpic.net/free-photo/air-croissant-with-strawberry-syrup-top-glass-milk_140725-9770.jpg", imageAlt: "Layered croissant with butter lamination"}, "http://img.b2bpic.net/free-photo/air-croissant-with-strawberry-syrup-top-glass-milk_140725-9770.jpg", imageAlt: "Layered croissant with butter lamination"
},
{ {
imageSrc: imageSrc:
"http://img.b2bpic.net/free-photo/baker-holds-homemade-craft-bread-his-hands_166373-749.jpg?_wi=1", imageAlt: "Artisan sourdough loaf"}, "http://img.b2bpic.net/free-photo/baker-holds-homemade-craft-bread-his-hands_166373-749.jpg?_wi=1", imageAlt: "Artisan sourdough loaf"
},
{ {
imageSrc: imageSrc:
"http://img.b2bpic.net/free-photo/delicious-slice-pizza-with-vegetables_23-2148753757.jpg?_wi=1", imageAlt: "Herb-infused focaccia"}, "http://img.b2bpic.net/free-photo/delicious-slice-pizza-with-vegetables_23-2148753757.jpg?_wi=1", imageAlt: "Herb-infused focaccia"
},
{ {
imageSrc: imageSrc:
"http://img.b2bpic.net/free-photo/flat-lay-delicious-fruit-pies-with-plums_23-2148834016.jpg?_wi=1", imageAlt: "Seasonal fruit tart"}, "http://img.b2bpic.net/free-photo/flat-lay-delicious-fruit-pies-with-plums_23-2148834016.jpg?_wi=1", imageAlt: "Seasonal fruit tart"
},
]} ]}
rightCarouselItems={[ rightCarouselItems={[
{ {
imageSrc: imageSrc:
"http://img.b2bpic.net/free-photo/baker-forming-dough-sphere-wooden-board_74855-5658.jpg?_wi=1", imageAlt: "Handcrafting in progress"}, "http://img.b2bpic.net/free-photo/baker-forming-dough-sphere-wooden-board_74855-5658.jpg?_wi=1", imageAlt: "Handcrafting in progress"
},
{ {
imageSrc: imageSrc:
"http://img.b2bpic.net/free-photo/close-up-hands-kneading-dough-pastry_53876-13989.jpg?_wi=1", imageAlt: "Mixing premium dough"}, "http://img.b2bpic.net/free-photo/close-up-hands-kneading-dough-pastry_53876-13989.jpg?_wi=1", imageAlt: "Mixing premium dough"
},
{ {
imageSrc: imageSrc:
"http://img.b2bpic.net/free-photo/active-rye-wheat-sourdough-starter-glass-jar-ingredient-flour-freshly-baked-whole-grain-bread-laid-out-table_166373-2177.jpg", imageAlt: "Natural fermentation"}, "http://img.b2bpic.net/free-photo/active-rye-wheat-sourdough-starter-glass-jar-ingredient-flour-freshly-baked-whole-grain-bread-laid-out-table_166373-2177.jpg", imageAlt: "Natural fermentation"
},
{ {
imageSrc: imageSrc:
"http://img.b2bpic.net/free-photo/rollcake-with-eclairs-pie-slices_114579-20806.jpg", imageAlt: "Artful plating and presentation"}, "http://img.b2bpic.net/free-photo/rollcake-with-eclairs-pie-slices_114579-20806.jpg", imageAlt: "Artful plating and presentation"
},
]} ]}
carouselPosition="right" carouselPosition="right"
buttons={[ buttons={[
@@ -111,16 +119,20 @@ export default function LandingPage() {
products={[ products={[
{ {
id: "butter-croissant", name: "Beurre de Normandie Croissant", price: "$6.50", variant: "Classic Laminated", imageSrc: id: "butter-croissant", name: "Beurre de Normandie Croissant", price: "$6.50", variant: "Classic Laminated", imageSrc:
"http://img.b2bpic.net/free-photo/breakfast-set-flat-lay-with-croissant-raspberry-jam-food-photography_53876-108045.jpg", imageAlt: "Golden butter croissant"}, "http://img.b2bpic.net/free-photo/breakfast-set-flat-lay-with-croissant-raspberry-jam-food-photography_53876-108045.jpg", imageAlt: "Golden butter croissant"
},
{ {
id: "sourdough-loaf", name: "48-Hour Cold Ferment Sourdough", price: "$8.00", variant: "Whole Loaf", imageSrc: id: "sourdough-loaf", name: "48-Hour Cold Ferment Sourdough", price: "$8.00", variant: "Whole Loaf", imageSrc:
"http://img.b2bpic.net/free-photo/baker-holds-homemade-craft-bread-his-hands_166373-749.jpg?_wi=2", imageAlt: "Artisan sourdough loaf"}, "http://img.b2bpic.net/free-photo/baker-holds-homemade-craft-bread-his-hands_166373-749.jpg?_wi=2", imageAlt: "Artisan sourdough loaf"
},
{ {
id: "focaccia", name: "Rosemary & Fleur de Sel Focaccia", price: "$7.50", variant: "Half Sheet", imageSrc: id: "focaccia", name: "Rosemary & Fleur de Sel Focaccia", price: "$7.50", variant: "Half Sheet", imageSrc:
"http://img.b2bpic.net/free-photo/delicious-slice-pizza-with-vegetables_23-2148753757.jpg?_wi=2", imageAlt: "Herb-infused focaccia"}, "http://img.b2bpic.net/free-photo/delicious-slice-pizza-with-vegetables_23-2148753757.jpg?_wi=2", imageAlt: "Herb-infused focaccia"
},
{ {
id: "tart", name: "Seasonal Stone Fruit Tart", price: "$9.00", variant: "Individual", imageSrc: id: "tart", name: "Seasonal Stone Fruit Tart", price: "$9.00", variant: "Individual", imageSrc:
"http://img.b2bpic.net/free-photo/flat-lay-delicious-fruit-pies-with-plums_23-2148834016.jpg?_wi=2", imageAlt: "Artfully arranged fruit tart"}, "http://img.b2bpic.net/free-photo/flat-lay-delicious-fruit-pies-with-plums_23-2148834016.jpg?_wi=2", imageAlt: "Artfully arranged fruit tart"
},
]} ]}
gridVariant="two-columns-alternating-heights" gridVariant="two-columns-alternating-heights"
buttons={[{ text: "Full Menu", href: "#" }]} buttons={[{ text: "Full Menu", href: "#" }]}
@@ -175,16 +187,20 @@ export default function LandingPage() {
accordionItems={[ accordionItems={[
{ {
id: "mixing", title: "Mixing & Development", content: id: "mixing", title: "Mixing & Development", content:
"Premium flours from heritage mills are hydrated and mixed using time-honored techniques. The dough develops strength through patience, never rushing the gluten structure that gives our breads their distinctive crumb."}, "Premium flours from heritage mills are hydrated and mixed using time-honored techniques. The dough develops strength through patience, never rushing the gluten structure that gives our breads their distinctive crumb."
},
{ {
id: "proofing", title: "Cold Fermentation (48 Hours)", content: id: "proofing", title: "Cold Fermentation (48 Hours)", content:
"Temperature control is paramount. Our sourdoughs spend 48 hours in climate-controlled chambers at precise temperatures, allowing flavor to deepen and complexity to emerge through natural fermentation."}, "Temperature control is paramount. Our sourdoughs spend 48 hours in climate-controlled chambers at precise temperatures, allowing flavor to deepen and complexity to emerge through natural fermentation."
},
{ {
id: "baking", title: "Oven Spring & Crust", content: id: "baking", title: "Oven Spring & Crust", content:
"Stone-bottom ovens reach 500°F. Steam injection creates the signature crackle and caramelization. Bakers read color and sound—each loaf is unique, requiring intuition and experience."}, "Stone-bottom ovens reach 500°F. Steam injection creates the signature crackle and caramelization. Bakers read color and sound—each loaf is unique, requiring intuition and experience."
},
{ {
id: "finishing", title: "Cooling & Rest", content: id: "finishing", title: "Cooling & Rest", content:
"Fresh bread continues to develop as it cools. We package only when temperature drops to preserve moisture and flavor. Same-day delivery to local restaurants and retail partners."}, "Fresh bread continues to develop as it cools. We package only when temperature drops to preserve moisture and flavor. Same-day delivery to local restaurants and retail partners."
},
]} ]}
buttons={[{ text: "Learn More", href: "#" }]} buttons={[{ text: "Learn More", href: "#" }]}
/> />
@@ -195,22 +211,28 @@ export default function LandingPage() {
testimonials={[ testimonials={[
{ {
id: "1", name: "Sarah Chen", imageSrc: id: "1", name: "Sarah Chen", imageSrc:
"http://img.b2bpic.net/free-photo/positive-confident-businesswoman-wearing-formal-suit-standing-with-arms-folded_74855-10328.jpg?_wi=1", imageAlt: "Sarah Chen"}, "http://img.b2bpic.net/free-photo/positive-confident-businesswoman-wearing-formal-suit-standing-with-arms-folded_74855-10328.jpg?_wi=1", imageAlt: "Sarah Chen"
},
{ {
id: "2", name: "Michael Torres", imageSrc: id: "2", name: "Michael Torres", imageSrc:
"http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=1", imageAlt: "Michael Torres"}, "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=1", imageAlt: "Michael Torres"
},
{ {
id: "3", name: "Elena Russo", imageSrc: id: "3", name: "Elena Russo", imageSrc:
"http://img.b2bpic.net/free-photo/positive-confident-businesswoman-wearing-formal-suit-standing-with-arms-folded_74855-10328.jpg?_wi=2", imageAlt: "Elena Russo"}, "http://img.b2bpic.net/free-photo/positive-confident-businesswoman-wearing-formal-suit-standing-with-arms-folded_74855-10328.jpg?_wi=2", imageAlt: "Elena Russo"
},
{ {
id: "4", name: "James Liu", imageSrc: id: "4", name: "James Liu", imageSrc:
"http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=2", imageAlt: "James Liu"}, "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=2", imageAlt: "James Liu"
},
{ {
id: "5", name: "Grace Williams", imageSrc: id: "5", name: "Grace Williams", imageSrc:
"http://img.b2bpic.net/free-photo/positive-confident-businesswoman-wearing-formal-suit-standing-with-arms-folded_74855-10328.jpg?_wi=3", imageAlt: "Grace Williams"}, "http://img.b2bpic.net/free-photo/positive-confident-businesswoman-wearing-formal-suit-standing-with-arms-folded_74855-10328.jpg?_wi=3", imageAlt: "Grace Williams"
},
{ {
id: "6", name: "David Ahmed", imageSrc: id: "6", name: "David Ahmed", imageSrc:
"http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=3", imageAlt: "David Ahmed"}, "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=3", imageAlt: "David Ahmed"
},
]} ]}
cardTitle="Trusted by thousands of neighborhood coffee lovers, chefs, and bread obsessives who believe excellence matters." cardTitle="Trusted by thousands of neighborhood coffee lovers, chefs, and bread obsessives who believe excellence matters."
cardTag="What They Say" cardTag="What They Say"
@@ -232,12 +254,16 @@ export default function LandingPage() {
{ {
id: "weekday", title: "Weekday Schedule", price: "MonFri", period: "6am 8pm", imageSrc: id: "weekday", title: "Weekday Schedule", price: "MonFri", period: "6am 8pm", imageSrc:
"http://img.b2bpic.net/free-photo/close-up-hands-kneading-dough-pastry_53876-13989.jpg?_wi=3", imageAlt: "Morning baking", features: [ "http://img.b2bpic.net/free-photo/close-up-hands-kneading-dough-pastry_53876-13989.jpg?_wi=3", imageAlt: "Morning baking", features: [
"Full pastry selection", "Fresh sourdough (limited daily)", "Seasonal specials", "Coffee & beverages"], button: { text: "Get Directions", href: "#" }, "Full pastry selection", "Fresh sourdough (limited daily)", "Seasonal specials", "Coffee & beverages"
],
button: { text: "Get Directions", href: "#" },
}, },
{ {
id: "weekend", title: "Weekend Brunch", price: "SatSun", period: "7am 7pm", imageSrc: id: "weekend", title: "Weekend Brunch", price: "SatSun", period: "7am 7pm", imageSrc:
"http://img.b2bpic.net/free-photo/baker-forming-dough-sphere-wooden-board_74855-5658.jpg?_wi=3", imageAlt: "Weekend gathering", features: [ "http://img.b2bpic.net/free-photo/baker-forming-dough-sphere-wooden-board_74855-5658.jpg?_wi=3", imageAlt: "Weekend gathering", features: [
"Extended pastry menu", "Brunch specials", "Family-friendly seating", "Reserve a table ahead"], button: { text: "Reserve Now", href: "#contact-cta" }, "Extended pastry menu", "Brunch specials", "Family-friendly seating", "Reserve a table ahead"
],
button: { text: "Reserve Now", href: "#contact-cta" },
}, },
]} ]}
/> />
@@ -266,13 +292,16 @@ export default function LandingPage() {
socialLinks={[ socialLinks={[
{ {
icon: Instagram, icon: Instagram,
href: "https://instagram.com", ariaLabel: "Follow us on Instagram"}, href: "https://instagram.com", ariaLabel: "Follow us on Instagram"
},
{ {
icon: Facebook, icon: Facebook,
href: "https://facebook.com", ariaLabel: "Follow us on Facebook"}, href: "https://facebook.com", ariaLabel: "Follow us on Facebook"
},
{ {
icon: Twitter, icon: Twitter,
href: "https://twitter.com", ariaLabel: "Follow us on Twitter"}, href: "https://twitter.com", ariaLabel: "Follow us on Twitter"
},
]} ]}
/> />
</div> </div>

View File

@@ -2,23 +2,15 @@
/* Base units */ /* Base units */
/* --vw is set by ThemeProvider */ /* --vw is set by ThemeProvider */
/* --background: #f6f0e9;; --background: #f6f0e9;
--card: #efe7dd;; --card: #efe7dd;
--foreground: #2b180a;; --foreground: #2b180a;
--primary-cta: #8b4513;; --primary-cta: #8b4513;
--secondary-cta: #efe7dd;; --primary-cta-text: #F5ECD7;
--accent: #a0826d;; --secondary-cta: #efe7dd;
--background-accent: #d4a574;; */ --secondary-cta-text: #2C1A0E;
--accent: #a0826d;
--background: #f6f0e9;; --background-accent: #d4a574;
--card: #efe7dd;;
--foreground: #2b180a;;
--primary-cta: #8b4513;;
--primary-cta-text: #F5ECD7;;
--secondary-cta: #efe7dd;;
--secondary-cta-text: #2C1A0E;;
--accent: #a0826d;;
--background-accent: #d4a574;;
/* text sizing - set by ThemeProvider */ /* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem); /* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);