- {[
+ {(language === 'sv' ? [
+ { title: "Den Legendariska Buffén", desc: "Vår berömda lunchbuffé har över 20 roterande rätter — curry, biryani, färsk naan och sötsaker." },
+ { title: "Shahi Sötsaker", desc: "Hemgjord mithai dagligen. Från färsk jalebi till rasmalai — det perfekta söta avslutet." },
+ { title: "Varm Gästfrihet", desc: "Oavsett om du är här för en snabb lunch eller familjefest, behandlas du alltid som kunglighet." },
+ ] : [
{ title: "The Legendary Buffet", desc: "Our famous lunch buffet features over 20 rotating dishes — curries, biryanis, fresh naan, and sweets." },
{ title: "Shahi Sweets", desc: "Homemade mithai made daily. From fresh Jalebi to Rasmalai — the perfect sweet ending." },
{ title: "Warm Hospitality", desc: "Whether you're here for a quick lunch or a family celebration, you will always be treated like royalty." },
- ].map((item, index) => (
+ ]).map((item, index) => (
0{index + 1}
{item.title}
diff --git a/components/Footer.tsx b/components/Footer.tsx
index 8e6727e..91cf56d 100644
--- a/components/Footer.tsx
+++ b/components/Footer.tsx
@@ -15,8 +15,12 @@
*/
import Link from "next/link";
+import { useLanguage } from "@/lib/language-context";
+import { getTranslation } from "@/lib/translations";
export default function Footer() {
+ const { language } = useLanguage();
+ const t = getTranslation(language);
return (
@@ -34,13 +38,13 @@ export default function Footer() {
Shahi Kitchen
- Authentic Indian & Pakistani cuisine in Gothenburg since 2016.
+ {t.footer.tagline}
{/* Contact - Both Locations */}
-
OUR LOCATIONS
+
{t.footer.locations}
Shahi Kitchen (Askim / Sisjön)
@@ -63,7 +67,7 @@ export default function Footer() {
{/* Hours */}
-
OPENING HOURS
+
{language === 'sv' ? 'ÖPPETTIDER' : 'OPENING HOURS'}
Askim: Mon–Sun 11:00–21:00
Backaplan: Mon–Sun 11:00–21:00
@@ -72,15 +76,15 @@ export default function Footer() {
{/* Quick Links + Social */}
-
EXPLORE
+
{t.footer.explore}
- Home
- Menu
- Our Experience
- Contact & Reserve
+ {t.nav.home}
+ {t.nav.menu}
+ {language === 'sv' ? 'Vår Upplevelse' : 'Our Experience'}
+ {language === 'sv' ? 'Kontakt & Boka' : 'Contact & Reserve'}
-
FOLLOW US
+
{t.footer.follow}
diff --git a/components/Navbar.tsx b/components/Navbar.tsx
index 7b651c8..87f1948 100644
--- a/components/Navbar.tsx
+++ b/components/Navbar.tsx
@@ -3,11 +3,11 @@
import { useState, useEffect } from "react";
import Link from "next/link";
import { useCart } from "./CartContext";
-import { ShoppingBag, ArrowRight } from "lucide-react";
+import { ShoppingBag, ArrowRight, Home, UtensilsCrossed, MapPin, Star, Phone, X } from "lucide-react";
import LanguageSwitcher from "./LanguageSwitcher";
import { useLanguage } from "@/lib/language-context";
import { getTranslation } from "@/lib/translations";
-import { motion } from "framer-motion";
+import { motion, AnimatePresence } from "framer-motion";
import { usePathname } from "next/navigation";
/**
@@ -147,19 +147,17 @@ export default function Navbar({ variant = "default" }: NavbarProps) {
- {/* Mobile Hamburger */}
-
- {/* MOBILE CART ICON (always visible even when hamburger is closed) */}
+ {/* Mobile Hamburger + Cart (compact, high touch target) */}
+
+ {/* MOBILE CART ICON (always visible) */}
-
-
-
+
{totalItems > 0 && (
-
+
{totalItems}
)}
@@ -167,69 +165,122 @@ export default function Navbar({ variant = "default" }: NavbarProps) {
setIsOpen(!isOpen)}
- className="text-[#B38B4D] p-2 -mr-2"
+ className="text-[#B38B4D] p-2 -mr-1 active:text-[#8C6B3A] transition-colors"
aria-label="Toggle menu"
+ aria-expanded={isOpen}
>
-
-
-
+
+
+
- {/* Mobile Menu - Stunning Elegant Drawer */}
- {isOpen && (
-
-
-
-
-
-
Shahi Kitchen
-
-
- ×
-
-
+ {/* Modern Mobile Menu Drawer (slide-in, animated, high-contrast, touch-friendly) */}
+
+ {isOpen && (
+
+ {/* Backdrop */}
+
-
- {navLinks.map((link) => (
-
+ {/* Header */}
+
+
+
+
+
Shahi Kitchen
+
Gothenburg
+
+
+
- {link.label}
+
+
+
+
+ {/* Primary Nav Links - modern list with icons + active state for visibility */}
+
+ {navLinks.map((link) => {
+ const active = isActive(link.href);
+ const Icon =
+ link.href === '/' ? Home :
+ link.href === '/menu' ? UtensilsCrossed :
+ link.href === '/locations' ? MapPin :
+ link.href.includes('experience') ? Star : Phone;
+
+ return (
+
+
+ {link.label}
+ {active && (
+ CURRENT
+ )}
+
+ );
+ })}
+
+
+ {/* Secondary actions + Language */}
+
+
+
+
+ {t.reserve}
- ))}
-
-
-
+ { openCart(); closeMenu(); }}
+ className="block w-full rounded-2xl border-2 border-[#c99a2e]/40 bg-white py-4 text-[15px] font-semibold text-[#101724] active:bg-[#F5F1E9] active:border-[#c99a2e] transition-all"
+ >
+ {t.cart} {totalItems > 0 && `(${totalItems})`}
+
-
- {t.reserve}
-
- { openCart(); closeMenu(); }}
- className="block w-full rounded-full border border-[#c99a2e]/40 bg-white py-4 text-base font-semibold text-[#101724]"
- >
- {t.cart} {totalItems > 0 && `(${totalItems})`}
-
-
+
Tap to open WhatsApp for orders & bookings
+
+
-
- )}
+ )}
+
);
}
diff --git a/lib/language-context.tsx b/lib/language-context.tsx
index 7891223..d7f710d 100644
--- a/lib/language-context.tsx
+++ b/lib/language-context.tsx
@@ -13,7 +13,7 @@ const LanguageContext = createContext
(undefined
const LANGUAGE_STORAGE_KEY = 'shahi-kitchen-language';
export function LanguageProvider({ children }: { children: ReactNode }) {
- const [language, setLanguageState] = useState('en');
+ const [language, setLanguageState] = useState('sv');
// Load language from localStorage on mount
useEffect(() => {
@@ -21,11 +21,13 @@ export function LanguageProvider({ children }: { children: ReactNode }) {
if (savedLang && ['en', 'sv', 'hi', 'ur'].includes(savedLang)) {
setLanguageState(savedLang);
} else {
- // Optional: Try to detect browser language
+ // Default to Swedish (sv) for the Swedish restaurant audience.
+ // Only auto-switch for strong browser matches on other supported languages.
const browserLang = navigator.language.toLowerCase();
if (browserLang.startsWith('sv')) setLanguageState('sv');
else if (browserLang.startsWith('hi')) setLanguageState('hi');
else if (browserLang.startsWith('ur')) setLanguageState('ur');
+ // else stay 'sv' (no 'en' override — users can manually switch to English)
}
}, []);
diff --git a/lib/translations.ts b/lib/translations.ts
index 202116e..ff21259 100644
--- a/lib/translations.ts
+++ b/lib/translations.ts
@@ -1,8 +1,8 @@
export type Language = 'en' | 'sv' | 'hi' | 'ur';
export const languages: { code: Language; name: string; native: string; flag: string }[] = [
- { code: 'en', name: 'English', native: 'English', flag: '🇬🇧' },
{ code: 'sv', name: 'Swedish', native: 'Svenska', flag: '🇸🇪' },
+ { code: 'en', name: 'English', native: 'English', flag: '🇬🇧' },
{ code: 'hi', name: 'Hindi', native: 'हिंदी', flag: '🇮🇳' },
{ code: 'ur', name: 'Urdu', native: 'اردو', flag: '🇵🇰' },
];
@@ -78,6 +78,18 @@ export const translations = {
// Common
add: 'Add',
viewCart: 'View Cart',
+
+ // Full Menu Page
+ menu: {
+ title: 'Our Menu',
+ subtitle: 'Traditional recipes. Generous portions. Made with heart.',
+ searchPlaceholder: 'Search dishes...',
+ showVegetarian: 'Show Vegetarian',
+ vegetarianOnly: 'Vegetarian Only',
+ clearFilters: 'Clear filters',
+ noResults: 'No dishes found matching your filters.',
+ dishes: 'dishes',
+ },
},
sv: {
@@ -143,6 +155,18 @@ export const translations = {
add: 'Lägg till',
viewCart: 'Visa Varukorg',
+
+ // Full Menu Page
+ menu: {
+ title: 'Vår Meny',
+ subtitle: 'Traditionella recept. Generösa portioner. Tillagade med hjärta.',
+ searchPlaceholder: 'Sök rätter...',
+ showVegetarian: 'Visa vegetariskt',
+ vegetarianOnly: 'Endast vegetariskt',
+ clearFilters: 'Rensa filter',
+ noResults: 'Inga rätter matchar dina filter.',
+ dishes: 'rätter',
+ },
},
hi: {
@@ -177,6 +201,18 @@ export const translations = {
viewFullMenu: 'पूरी मेन्यू देखें — 40+ व्यंजन',
},
+ // Full Menu Page (fallback to English for now)
+ menu: {
+ title: 'Our Menu',
+ subtitle: 'Traditional recipes. Generous portions. Made with heart.',
+ searchPlaceholder: 'Search dishes...',
+ showVegetarian: 'Show Vegetarian',
+ vegetarianOnly: 'Vegetarian Only',
+ clearFilters: 'Clear filters',
+ noResults: 'No dishes found matching your filters.',
+ dishes: 'dishes',
+ },
+
experience: {
badge: 'शाही तरीका',
title: 'दावत जैसी गर्माहट।\nमहल जैसा सुकून।',
@@ -242,6 +278,18 @@ export const translations = {
viewFullMenu: 'مکمل مینو دیکھیں — 40+ پکوان',
},
+ // Full Menu Page (fallback to English for now)
+ menu: {
+ title: 'Our Menu',
+ subtitle: 'Traditional recipes. Generous portions. Made with heart.',
+ searchPlaceholder: 'Search dishes...',
+ showVegetarian: 'Show Vegetarian',
+ vegetarianOnly: 'Vegetarian Only',
+ clearFilters: 'Clear filters',
+ noResults: 'No dishes found matching your filters.',
+ dishes: 'dishes',
+ },
+
experience: {
badge: 'شاہی طریقہ',
title: 'دعوت جیسی گرمی۔\nمحل جیسا سکون۔',
diff --git a/public/images/logo/banner_mobile-optimized.mp4 b/public/images/logo/banner_mobile-optimized.mp4
index 19b34b7..9177d5e 100644
Binary files a/public/images/logo/banner_mobile-optimized.mp4 and b/public/images/logo/banner_mobile-optimized.mp4 differ
diff --git a/public/images/logo/banner_mobile-optimized.webm b/public/images/logo/banner_mobile-optimized.webm
index f7c5879..bb31cde 100644
Binary files a/public/images/logo/banner_mobile-optimized.webm and b/public/images/logo/banner_mobile-optimized.webm differ
diff --git a/public/images/logo/banner_mobile.mp4 b/public/images/logo/banner_mobile.mp4
index 049f5dc..e085c72 100644
Binary files a/public/images/logo/banner_mobile.mp4 and b/public/images/logo/banner_mobile.mp4 differ