diff --git a/apps/api/src/routes/restaurants.ts b/apps/api/src/routes/restaurants.ts index 84fc4cd..0771cd9 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 = { + neon: "Neon Street Fuze", maison: "La Maison d'Élève", swiss: "Swiss Brutalist", artisan: "Amber Artisan", diff --git a/apps/mobile/src/components/menu/ThemeSelectorSheet.tsx b/apps/mobile/src/components/menu/ThemeSelectorSheet.tsx index 0eb359a..eb2e855 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: "neon", + name: "Neon Street Fuze", + category: "Street Food & Burger / Neon", + color: "#FF2A85", + badgeBg: "#0070F3", + badgeText: "#FFFFFF", + bgPreview: "#0D1117", + accent: "Neon Pembe & Lime Yeşili", + desc: "Grafiti sokak sanatı, neon ışıltılar, krem rengi burger/taco kartları ve açılı fiyat etiketleri.", + suitableFor: "Smash burgerciler, taco barlar, sokak lezzetleri, Asya füzyon & kokteyl barlar", + }, { key: "maison", name: "La Maison d'Élève", diff --git a/apps/web/src/components/PublicMenuClient.tsx b/apps/web/src/components/PublicMenuClient.tsx index fec0018..d2612ce 100644 --- a/apps/web/src/components/PublicMenuClient.tsx +++ b/apps/web/src/components/PublicMenuClient.tsx @@ -315,7 +315,7 @@ export function PublicMenuClient({

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

-
+
{Object.values(THEME_PRESETS).map((preset) => { const isSelected = selectedThemeKey === preset.key; return ( @@ -426,12 +426,13 @@ export function PublicMenuClient({ const chapterNum = String(catIndex + 1).padStart(2, "0"); const isSwiss = theme.key === "swiss"; const isMaison = theme.key === "maison"; + const isNeon = theme.key === "neon"; return (
{/* Category Heading Banner */} {isSwiss ? ( @@ -472,6 +473,20 @@ export function PublicMenuClient({
+ ) : isNeon ? ( +
+
+ + ⚡ DROPS // SECTION + +

+ {category.name} +

+
+ + {category.menu_items.length} DROPS + +
) : (
{category.menu_items.map((item, itemIndex) => { + if (isNeon) { + return ( +
setSelectedItem(item)} + className="group relative bg-[#FCF7EC] rounded-3xl p-4 overflow-hidden border border-white/20 shadow-2xl text-black cursor-pointer hover:scale-[1.02] active:scale-[0.98] transition-all duration-300 flex flex-col sm:flex-row gap-3.5 items-center justify-between" + > + {/* Floating Badges */} +
+ + POPULAR + + + SPICY 🔥 + +
+ + {/* Details */} +
+

+ {item.name} +

+ {item.description && ( +

+ {item.description} +

+ )} +
+ + STREET SPECIAL + + + CRISPY + +
+
+ + {/* Image with Rotated Cloud Price Tag */} + {item.image_url && ( +
+ {item.name} + {/* Angled Price Badge */} +
+
PRICE
+
₺{item.price.toFixed(0)}
+
+
+ )} +
+ ); + } if (isMaison) { return (
= { + neon: { + key: "neon", + name: "Neon Street Fuze", + fontFamily: "heading", + config: { + primaryColor: "#FF2A85", + background: "#0D1117", + productLayout: "card", + categoryLayout: "tabs", + }, + cardBg: "#FCF7EC", + cardBorder: "rgba(255, 42, 133, 0.3)", + textPrimary: "#101419", + textSecondary: "#4B5563", + accentBg: "rgba(0, 255, 135, 0.15)", + headerGradient: "linear-gradient(180deg, #161B22 0%, #0D1117 100%)", + badgeBg: "#0070F3", + badgeText: "#FFFFFF", + }, maison: { key: "maison", name: "La Maison d'Élève",