From c0544251b8223f256647b918e068b878b0297a21 Mon Sep 17 00:00:00 2001 From: AyrisAI Date: Thu, 20 Aug 2026 03:46:41 +0300 Subject: [PATCH] feat(themes): add Eleia Coastal Kitchen Mediterranean Aegean design system --- apps/api/src/routes/restaurants.ts | 1 + .../components/menu/ThemeSelectorSheet.tsx | 12 ++++ apps/web/src/components/PublicMenuClient.tsx | 72 ++++++++++++++++++- apps/web/src/lib/theme.ts | 19 +++++ 4 files changed, 101 insertions(+), 3 deletions(-) diff --git a/apps/api/src/routes/restaurants.ts b/apps/api/src/routes/restaurants.ts index 0771cd9..cfb18cb 100644 --- a/apps/api/src/routes/restaurants.ts +++ b/apps/api/src/routes/restaurants.ts @@ -156,6 +156,7 @@ export const restaurantsRoutes: FastifyPluginAsync = async (app) => { } const THEME_NAMES: Record = { + coastal: "Eleia Coastal Kitchen", neon: "Neon Street Fuze", maison: "La Maison d'Élève", swiss: "Swiss Brutalist", diff --git a/apps/mobile/src/components/menu/ThemeSelectorSheet.tsx b/apps/mobile/src/components/menu/ThemeSelectorSheet.tsx index eb2e855..84f07f2 100644 --- a/apps/mobile/src/components/menu/ThemeSelectorSheet.tsx +++ b/apps/mobile/src/components/menu/ThemeSelectorSheet.tsx @@ -31,6 +31,18 @@ export interface ThemeOption { } export const THEME_OPTIONS: ThemeOption[] = [ + { + key: "coastal", + name: "Eleia Coastal Kitchen", + category: "Akdeniz & Ege / Sahil", + color: "#BF614B", + badgeBg: "#656D4A", + badgeText: "#FFFFFF", + bgPreview: "#F7F3EC", + accent: "Pişmiş Toprak & Zeytin Yeşili", + desc: "Yunan & Roma antik serif tipografi (Cinzel), zeytin dalı kanat çizgileri, yıldız şeritli deniz mahsulleri kartları.", + suitableFor: "Ege ve Akdeniz balıkçıları, sahil bistroları, Yunan meyhaneleri, İtalyan trattorialar", + }, { key: "neon", name: "Neon Street Fuze", diff --git a/apps/web/src/components/PublicMenuClient.tsx b/apps/web/src/components/PublicMenuClient.tsx index d2612ce..c2adae1 100644 --- a/apps/web/src/components/PublicMenuClient.tsx +++ b/apps/web/src/components/PublicMenuClient.tsx @@ -171,6 +171,9 @@ export function PublicMenuClient({ {/* Main Container - Optimized for Mobile First & Desktop Centered */}
+ {/* Top Terracotta Stripe for Coastal theme */} + {theme.key === "coastal" &&
} + {/* Header Hero Banner */}

- Canlı Tema Önizleme (9 Şablon) + Canlı Tema Önizleme (10 Şablon)

-
+
{Object.values(THEME_PRESETS).map((preset) => { const isSelected = selectedThemeKey === preset.key; return ( @@ -427,12 +430,13 @@ export function PublicMenuClient({ const isSwiss = theme.key === "swiss"; const isMaison = theme.key === "maison"; const isNeon = theme.key === "neon"; + const isCoastal = theme.key === "coastal"; return (
{/* Category Heading Banner */} {isSwiss ? ( @@ -473,6 +477,14 @@ export function PublicMenuClient({
+ ) : isCoastal ? ( +
+
+

+ {category.name} +

+
+
) : isNeon ? (
@@ -524,6 +536,8 @@ export function PublicMenuClient({ ? "divide-y-2 divide-black border-b-2 border-black" : isMaison ? "grid grid-cols-1 gap-4" + : isCoastal + ? "grid grid-cols-1 gap-4" : isNeon ? "grid grid-cols-1 gap-3.5" : theme.key === "artisan" @@ -534,6 +548,58 @@ export function PublicMenuClient({ } > {category.menu_items.map((item, itemIndex) => { + if (isCoastal) { + return ( +
setSelectedItem(item)} + className="group bg-[#FCFAF6] border border-[#E4DBCF] rounded-2xl sm:rounded-3xl p-3 sm:p-4 grid grid-cols-12 gap-3 sm:gap-4 items-center relative shadow-sm cursor-pointer hover:shadow-md hover:border-[#BF614B]/40 transition-all duration-300" + > + {/* Image Column with Star Bookmark Ribbon */} +
+
+ ★ +
+ {item.image_url ? ( + {item.name} + ) : ( +
+ 🌿 +
+ )} +
+ + {/* Content Column */} +
+
+
+ ★ Chef's Recommendation +
+

+ {item.name} +

+ {item.description && ( +

+ {item.description} +

+ )} +

+ İçerik: Doğal sızma zeytinyağı, Ege otları, deniz tuzu. +

+
+ +
+ ₺{item.price.toFixed(0)} +
+
+
+ ); + } if (isNeon) { return (
= { + coastal: { + key: "coastal", + name: "Eleia Coastal Kitchen", + fontFamily: "serif", + config: { + primaryColor: "#BF614B", + background: "#F7F3EC", + productLayout: "card", + categoryLayout: "tabs", + }, + cardBg: "#FCFAF6", + cardBorder: "#E4DBCF", + textPrimary: "#1A1615", + textSecondary: "#6B635B", + accentBg: "rgba(101, 109, 74, 0.12)", + headerGradient: "linear-gradient(180deg, #2D231E 0%, #1A1615 100%)", + badgeBg: "#656D4A", + badgeText: "#FFFFFF", + }, neon: { key: "neon", name: "Neon Street Fuze",