Compare commits
11 Commits
version_2_
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| c3665d8fc6 | |||
|
|
94183c2cb9 | ||
|
|
09fd7ffc07 | ||
|
|
f9b7f1d2c4 | ||
| a329a73251 | |||
|
|
c50f9a2f4c | ||
|
|
4940359f9b | ||
| bbe2cb7359 | |||
|
|
3d4e368514 | ||
|
|
1fa9e23efd | ||
| bb11f9d285 |
@@ -2,11 +2,15 @@ import { Routes, Route } from 'react-router-dom';
|
||||
import Layout from './components/Layout';
|
||||
import HomePage from './pages/HomePage';
|
||||
|
||||
import MenuPage from "@/pages/MenuPage";
|
||||
import AlShamsRestaurantPage from "@/pages/AlShamsRestaurantPage";
|
||||
export default function App() {
|
||||
return (
|
||||
<Routes>
|
||||
<Route element={<Layout />}>
|
||||
<Route path="/" element={<HomePage />} />
|
||||
<Route path="/menu" element={<MenuPage />} />
|
||||
<Route path="/al-shams-restaurant" element={<AlShamsRestaurantPage />} />
|
||||
</Route>
|
||||
</Routes>
|
||||
);
|
||||
|
||||
@@ -26,7 +26,11 @@ export default function Layout() {
|
||||
{
|
||||
"name": "Contact",
|
||||
"href": "#contact"
|
||||
}
|
||||
},
|
||||
{ name: "Menu", href: "/menu" },
|
||||
{ name: "Al Shams Restaurant", href: "/al-shams-restaurant" },
|
||||
|
||||
|
||||
];
|
||||
|
||||
return (
|
||||
|
||||
38
src/pages/AlShamsRestaurantPage.tsx
Normal file
38
src/pages/AlShamsRestaurantPage.tsx
Normal file
@@ -0,0 +1,38 @@
|
||||
import Button from "@/components/ui/Button";
|
||||
import HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot";
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
import ImageOrVideo from "@/components/ui/ImageOrVideo";
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal";
|
||||
import { cls } from "@/lib/utils";
|
||||
import { Star } from "lucide-react";
|
||||
import GridOrCarousel from "@/components/ui/GridOrCarousel";
|
||||
|
||||
export default function AlShamsRestaurantPage() {
|
||||
return (
|
||||
<>
|
||||
<div data-webild-section="HeroSplit"><section aria-label="Hero section" className="relative flex items-center h-fit md:h-svh md:py-0"><HeroBackgroundSlot /><div className="flex flex-col md:flex-row items-center w-content-width mx-auto"><div className="w-full md:w-1/2"><div className="flex flex-col items-center md:items-start gap-3"><div className="px-3 py-1 mb-1 text-sm card rounded w-fit"><p>Hospitality Project</p></div><TextAnimation text="Al Shams Restaurant: A Digital Transformation" variant="fade" gradientText={true} tag="h1" className="text-7xl 2xl:text-8xl leading-[1.15] font-semibold text-center md:text-left text-balance" /><TextAnimation text="Discover how NGA Digital crafted a sleek, appetizing online presence for Al Shams Restaurant, blending intelligent design with a seamless user experience." variant="fade" gradientText={false} tag="p" className="md:max-w-8/10 text-lg md:text-xl leading-snug text-center md:text-left text-balance" /><div className="flex flex-wrap max-md:justify-center gap-3 mt-2 md:mt-3"><Button text="View Case Study" href="#case-study" variant="primary" /><Button text="Start Your Project" href="/contact" variant="secondary" animationDelay={0.1} /></div></div></div><ScrollReveal variant="fade" delay={0.2} className="w-full md:w-1/2 h-100 md:h-[65vh] md:max-h-[75svh] p-2 xl:p-3 2xl:p-4 card rounded overflow-hidden"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/luxury-restaurant-interior-with-elegant-table-setting_1127-3269.jpg" /></ScrollReveal></div></section></div>
|
||||
<div data-webild-section="FeaturesImageBento"><section aria-label="Features image bento section" className=""><div className="flex flex-col gap-8"><div className="flex flex-col items-center w-content-width mx-auto gap-2"><div className="px-3 py-1 mb-1 text-sm card rounded w-fit"><p>Case Study</p></div><TextAnimation text="Al Shams Restaurant" variant="slide-up" gradientText={true} tag="h2" className="md:max-w-8/10 text-6xl 2xl:text-7xl leading-[1.15] font-semibold text-center text-balance" /><TextAnimation text="A complete digital transformation for a premier dining destination, blending authentic hospitality with modern, AI-powered user experiences." variant="slide-up" gradientText={false} tag="p" className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance" /><div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3"><Button text="View Live Site" href="#" variant="primary" /><Button text="More Projects" href="/work" variant="secondary" animationDelay={0.1} /></div></div><div className="w-content-width mx-auto grid grid-cols-1 md:grid-cols-6 gap-3"><ScrollReveal key={0} variant="slide-up" delay={0} className="col-span-1 group md:col-span-2"><div className="overflow-hidden rounded"></div></ScrollReveal>
|
||||
<ScrollReveal key={1} variant="slide-up" delay={0.1} className="col-span-1 group md:col-span-4"><div className="overflow-hidden rounded"></div></ScrollReveal>
|
||||
<ScrollReveal key={2} variant="slide-up" delay={0} className="col-span-1 group md:col-span-3"><div className="overflow-hidden rounded"></div></ScrollReveal>
|
||||
<ScrollReveal key={3} variant="slide-up" delay={0.1} className="col-span-1 group md:col-span-3"><div className="overflow-hidden rounded"></div></ScrollReveal>
|
||||
<ScrollReveal key={4} variant="slide-up" delay={0} className="col-span-1 group md:col-span-2"><div className="overflow-hidden rounded"></div></ScrollReveal>
|
||||
<ScrollReveal key={5} variant="slide-up" delay={0.1} className="col-span-1 group md:col-span-2"><div className="overflow-hidden rounded"></div></ScrollReveal>
|
||||
<ScrollReveal key={6} variant="slide-up" delay={0.2} className="col-span-1 group md:col-span-2"><div className="overflow-hidden rounded"></div></ScrollReveal></div></div></section></div>
|
||||
<div data-webild-section="TestimonialRatingCards"><section aria-label="Testimonials section" className=""><div className="flex flex-col gap-8"><div className="flex flex-col items-center gap-2 w-content-width mx-auto"><div className="px-3 py-1 mb-1 text-sm card rounded w-fit"><p>Client Success</p></div><TextAnimation text="What Al Shams Says" variant="fade" gradientText={true} tag="h2" className="md:max-w-8/10 text-6xl 2xl:text-7xl leading-[1.15] font-semibold text-center text-balance" /><TextAnimation text="Hear from the team behind Al Shams Restaurant about how our digital transformation elevated their dining experience and online presence." variant="fade" gradientText={false} tag="p" className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance" /><div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3"><Button text="View Case Study" href="#case-study" variant="primary" /><Button text="More Projects" href="/work" variant="secondary" animationDelay={0.1} /></div></div><ScrollReveal variant="fade"><GridOrCarousel><div key="Restaurant Owner" className="flex flex-col justify-between gap-4 xl:gap-5 2xl:gap-6 h-full p-6 xl:p-7 2xl:p-8 rounded card"><div className="flex flex-col items-start gap-4 xl:gap-5 2xl:gap-6"><div className="flex gap-1.5"><Star key={0} className="size-5 text-accent fill-accent" strokeWidth={1.5} />
|
||||
<Star key={1} className="size-5 text-accent fill-accent" strokeWidth={1.5} />
|
||||
<Star key={2} className="size-5 text-accent fill-accent" strokeWidth={1.5} />
|
||||
<Star key={3} className="size-5 text-accent fill-accent" strokeWidth={1.5} />
|
||||
<Star key={4} className="size-5 text-accent fill-accent" strokeWidth={1.5} /></div><p className="text-lg leading-snug">NGA Digital completely transformed our online ordering system. The new website is stunning and incredibly easy for our customers to use.</p></div><div className="flex items-center gap-3"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/portrait-smiling-chef-uniform_329181-675.jpg" className="size-10 md:size-11 2xl:size-12 rounded-full object-cover" /><div className="flex flex-col min-w-0"><span className="text-base text-foreground font-semibold leading-snug truncate">Restaurant Owner</span><span className="text-base text-foreground/75 leading-snug truncate">Al Shams</span></div></div></div>
|
||||
<div key="Marketing Director" className="flex flex-col justify-between gap-4 xl:gap-5 2xl:gap-6 h-full p-6 xl:p-7 2xl:p-8 rounded card"><div className="flex flex-col items-start gap-4 xl:gap-5 2xl:gap-6"><div className="flex gap-1.5"><Star key={0} className="size-5 text-accent fill-accent" strokeWidth={1.5} />
|
||||
<Star key={1} className="size-5 text-accent fill-accent" strokeWidth={1.5} />
|
||||
<Star key={2} className="size-5 text-accent fill-accent" strokeWidth={1.5} />
|
||||
<Star key={3} className="size-5 text-accent fill-accent" strokeWidth={1.5} />
|
||||
<Star key={4} className="size-5 text-accent fill-accent" strokeWidth={1.5} /></div><p className="text-lg leading-snug">The visual identity and digital menu they created perfectly capture the essence of our cuisine. We've seen a wonderful increase in online reservations since launch.</p></div><div className="flex items-center gap-3"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/confident-businesswoman-posing-outside_23-2148767023.jpg" className="size-10 md:size-11 2xl:size-12 rounded-full object-cover" /><div className="flex flex-col min-w-0"><span className="text-base text-foreground font-semibold leading-snug truncate">Marketing Director</span><span className="text-base text-foreground/75 leading-snug truncate">Al Shams</span></div></div></div>
|
||||
<div key="Head Chef" className="flex flex-col justify-between gap-4 xl:gap-5 2xl:gap-6 h-full p-6 xl:p-7 2xl:p-8 rounded card"><div className="flex flex-col items-start gap-4 xl:gap-5 2xl:gap-6"><div className="flex gap-1.5"><Star key={0} className="size-5 text-accent fill-accent" strokeWidth={1.5} />
|
||||
<Star key={1} className="size-5 text-accent fill-accent" strokeWidth={1.5} />
|
||||
<Star key={2} className="size-5 text-accent fill-accent" strokeWidth={1.5} />
|
||||
<Star key={3} className="size-5 text-accent fill-accent" strokeWidth={1.5} />
|
||||
<Star key={4} className="size-5 text-accent fill-accent" strokeWidth={1.5} /></div><p className="text-lg leading-snug">Finally, a website that showcases our dishes as beautifully as they look in person. The NGA team truly understands hospitality.</p></div><div className="flex items-center gap-3"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/handsome-young-chef-uniform-smiling-looking-camera_171337-5343.jpg" className="size-10 md:size-11 2xl:size-12 rounded-full object-cover" /><div className="flex flex-col min-w-0"><span className="text-base text-foreground font-semibold leading-snug truncate">Head Chef</span><span className="text-base text-foreground/75 leading-snug truncate">Al Shams</span></div></div></div></GridOrCarousel></ScrollReveal></div></section></div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
29
src/pages/MenuPage.tsx
Normal file
29
src/pages/MenuPage.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
import Button from "@/components/ui/Button";
|
||||
import HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot";
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
import ImageOrVideo from "@/components/ui/ImageOrVideo";
|
||||
import AvatarGroup from "@/components/ui/AvatarGroup";
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal";
|
||||
import { cls } from "@/lib/utils";
|
||||
import { ArrowUpRight, Loader2 } from "lucide-react";
|
||||
import GridOrCarousel from "@/components/ui/GridOrCarousel";
|
||||
import useProducts from "@/hooks/useProducts";
|
||||
|
||||
export default function MenuPage() {
|
||||
return (
|
||||
<>
|
||||
<div data-webild-section="HeroOverlay"><section aria-label="Hero section" className="relative w-full h-svh overflow-hidden flex flex-col justify-end mb-20"><HeroBackgroundSlot /><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/top-view-arab-food-assortment_23-2148739179.jpg" className="absolute inset-0 w-full h-full object-cover rounded-none" /><div className="absolute z-10 w-[150vw] h-[150vw] left-0 bottom-0 -translate-x-1/2 translate-y-1/2 backdrop-blur mask-[radial-gradient(circle,black_20%,transparent_70%)]" aria-hidden="true" /><div className="relative z-10 w-content-width mx-auto pb-10 md:pb-25"><div className="flex flex-col gap-3 w-full md:w-6/10 lg:w-1/2 xl:w-45/100 2xl:w-4/10"><div className="w-fit px-3 py-1 mb-1 text-sm card rounded"><p>Established 1975</p></div><TextAnimation text="The Al Shams Menu" variant="fade-blur" gradientText={true} tag="h1" className="text-7xl 2xl:text-8xl leading-[1.15] font-semibold text-white text-balance" /><TextAnimation text="From authentic Lebanese mezze to exquisite international plates, explore a culinary journey crafted with passion and the finest ingredients." variant="fade-blur" gradientText={false} tag="p" className="text-lg md:text-xl text-white leading-snug text-balance" /><div className="flex flex-wrap gap-3 mt-2 md:mt-3"><Button text="Reserve Now" href="/reservations" variant="primary" /><Button text="Call Us" href="tel:+1234567890" variant="secondary" animationDelay={0.1} /></div></div></div></section></div>
|
||||
<div data-webild-section="FeaturesImageBento"><section aria-label="Features image bento section" className="py-20"><div className="flex flex-col gap-8 md:gap-10"><div className="flex flex-col items-center w-content-width mx-auto gap-2"><div className="px-3 py-1 mb-1 text-sm card rounded w-fit"><p>Culinary Excellence</p></div><TextAnimation text="A Legacy of Flavor Since 1975" variant="slide-up" gradientText={true} tag="h2" className="md:max-w-8/10 text-6xl 2xl:text-7xl leading-[1.15] font-semibold text-center text-balance" /><TextAnimation text="Explore our extensive menu featuring signature Lebanese dishes, premium meats, and international classics. Crafted with passion and the finest ingredients." variant="slide-up" gradientText={false} tag="p" className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance" /><div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3"><Button text="Book a Table" href="/reservations" variant="primary" /><Button text="Call Now" href="tel:+1234567890" variant="secondary" animationDelay={0.1} /></div></div><div className="w-content-width mx-auto grid grid-cols-1 md:grid-cols-6 gap-3"><ScrollReveal key={0} variant="slide-up" delay={0} className="col-span-1 group md:col-span-2"><div className="overflow-hidden rounded"></div></ScrollReveal>
|
||||
<ScrollReveal key={1} variant="slide-up" delay={0.1} className="col-span-1 group md:col-span-4"><div className="overflow-hidden rounded"></div></ScrollReveal>
|
||||
<ScrollReveal key={2} variant="slide-up" delay={0} className="col-span-1 group md:col-span-3"><div className="overflow-hidden rounded"></div></ScrollReveal>
|
||||
<ScrollReveal key={3} variant="slide-up" delay={0.1} className="col-span-1 group md:col-span-3"><div className="overflow-hidden rounded"></div></ScrollReveal>
|
||||
<ScrollReveal key={4} variant="slide-up" delay={0} className="col-span-1 group md:col-span-2"><div className="overflow-hidden rounded"></div></ScrollReveal>
|
||||
<ScrollReveal key={5} variant="slide-up" delay={0.1} className="col-span-1 group md:col-span-2"><div className="overflow-hidden rounded"></div></ScrollReveal>
|
||||
<ScrollReveal key={6} variant="slide-up" delay={0.2} className="col-span-1 group md:col-span-2"><div className="overflow-hidden rounded"></div></ScrollReveal></div></div></section></div>
|
||||
<div data-webild-section="ProductMediaCards"><section aria-label="Products section" className="py-20"><div className="w-content-width mx-auto flex justify-center"><Loader2 className="size-8 animate-spin text-foreground" strokeWidth={1.5} /></div></section></div>
|
||||
<div data-webild-section="ProductMediaCards"><section aria-label="Products section" className="py-20"><div className="w-content-width mx-auto flex justify-center"><Loader2 className="size-8 animate-spin text-foreground" strokeWidth={1.5} /></div></section></div>
|
||||
<div data-webild-section="ProductMediaCards"><section aria-label="Products section" className="py-20"><div className="w-content-width mx-auto flex justify-center"><Loader2 className="size-8 animate-spin text-foreground" strokeWidth={1.5} /></div></section></div>
|
||||
<div data-webild-section="ContactCta"><section aria-label="Contact section" className="py-20"><div className="w-content-width mx-auto"><ScrollReveal variant="slide-up"><div className="flex flex-col items-center gap-8 md:gap-10 py-20 px-8 rounded card"><div className="flex flex-col items-center gap-2"><div className="px-3 py-1 mb-1 text-sm card rounded w-fit"><p>Dine With Us</p></div><TextAnimation text="Experience a culinary legacy since 1975. Reserve your table or contact us for special arrangements." variant="fade-blur" gradientText={true} tag="h2" className="md:max-w-8/10 text-5xl 2xl:text-6xl leading-[1.15] font-semibold text-center text-balance" /><div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3"><Button text="Book a Table" href="/reservations" variant="primary" /><Button text="Call Now" href="tel:+1234567890" variant="secondary" animationDelay={0.1} /></div></div></div></ScrollReveal></div></section></div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -6,4 +6,6 @@ export interface Route {
|
||||
|
||||
export const routes: Route[] = [
|
||||
{ path: '/', label: 'Home', pageFile: 'HomePage' },
|
||||
{ path: '/menu', label: 'Menu', pageFile: 'MenuPage' },
|
||||
{ path: '/al-shams-restaurant', label: 'Al Shams Restaurant', pageFile: 'AlShamsRestaurantPage' },
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user