13 Commits

Author SHA1 Message Date
c3665d8fc6 Merge version_5_1782050522336 into main
Merge version_5_1782050522336 into main
2026-06-21 14:05:00 +00:00
kudinDmitriyUp
94183c2cb9 Bob AI: fix build errors (attempt 1) 2026-06-21 14:04:25 +00:00
kudinDmitriyUp
09fd7ffc07 Bob AI: Populate src/pages/AlShamsRestaurantPage.tsx (snippet builder, 3 sections) 2026-06-21 14:03:35 +00:00
kudinDmitriyUp
f9b7f1d2c4 Bob AI: Add al-shams-restaurant page 2026-06-21 14:02:45 +00:00
a329a73251 Merge version_4_1782050037034 into main
Merge version_4_1782050037034 into main
2026-06-21 13:56:17 +00:00
kudinDmitriyUp
c50f9a2f4c Bob AI: Populate src/pages/AlShamsRestaurantPage.tsx (snippet builder, 3 sections) 2026-06-21 13:55:38 +00:00
kudinDmitriyUp
4940359f9b Bob AI: Add al-shams-restaurant page 2026-06-21 13:54:42 +00:00
bbe2cb7359 Merge version_3_1782049842176 into main
Merge version_3_1782049842176 into main
2026-06-21 13:53:18 +00:00
kudinDmitriyUp
3d4e368514 Bob AI: Populate src/pages/MenuPage.tsx (snippet builder, 6 sections) 2026-06-21 13:52:39 +00:00
kudinDmitriyUp
1fa9e23efd Bob AI: Add menu page 2026-06-21 13:51:30 +00:00
bb11f9d285 Merge version_2_1782044851929 into main
Merge version_2_1782044851929 into main
2026-06-21 12:30:21 +00:00
kudinDmitriyUp
4c267c750f Bob AI: Updated navigation links to remove redundant hero and about 2026-06-21 12:29:35 +00:00
kudinDmitriyUp
f78c454a43 Bob AI: Updated global theme tokens to match futuristic dark mode pa 2026-06-21 12:28:31 +00:00
14 changed files with 263 additions and 217 deletions

View File

@@ -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>
);

View File

@@ -19,22 +19,18 @@ export default function Layout() {
"name": "Training",
"href": "#training"
},
{
"name": "Why NGA",
"href": "#why-nga"
},
{
"name": "Contact",
"href": "#contact"
},
{
"name": "Hero",
"href": "#hero"
},
{
"name": "About",
"href": "#about"
},
{
"name": "Why Nga",
"href": "#why-nga"
}
{ name: "Menu", href: "/menu" },
{ name: "Al Shams Restaurant", href: "/al-shams-restaurant" },
];
return (

View File

@@ -5,15 +5,15 @@
:root {
/* @colorThemes/lightTheme/grayNavyBlue */
--background: #050012;
--card: #040121;
--foreground: #f0e6ff;
--primary-cta: #c89bff;
--primary-cta-text: #050012;
--secondary-cta: #1d123b;
--secondary-cta-text: #f0e6ff;
--accent: #684f7b;
--background-accent: #65417c;
--background: #030305;
--card: #0a0a0f;
--foreground: #ffffff;
--primary-cta: #00e5ff;
--primary-cta-text: #000000;
--secondary-cta: #11111a;
--secondary-cta-text: #ffffff;
--accent: #8a2be2;
--background-accent: #110822;
/* @layout/border-radius/rounded */
--radius: 0.5rem;

View 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>
</>
);
}

View File

@@ -1,207 +1,33 @@
import AboutTestimonial from '@/components/sections/about/AboutTestimonial';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSimple from '@/components/sections/faq/FaqSimple';
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
import { Code, Palette, Sparkles } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
// AUTO-GENERATED shell by per-section-migrate.
// Section bodies live in ./<PageBase>/sections/<X>.tsx. Edit the section
// files directly. Non-block content (wrappers, non-inlinable sections) is
// preserved inline; extracted section blocks become <XSection/> refs.
export default function HomePage() {
import React from 'react';
import HeroSection from './HomePage/sections/Hero';
import AboutSection from './HomePage/sections/About';
import ServicesSection from './HomePage/sections/Services';
import PortfolioSection from './HomePage/sections/Portfolio';
import TrainingSection from './HomePage/sections/Training';
import WhyNgaSection from './HomePage/sections/WhyNga';
import ContactSection from './HomePage/sections/Contact';
export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroSplitMediaGrid
tag="Next Gen AI Digital Solutions"
title="Transform Your Ideas Into Digital Reality"
description="NGA Digital bridges the gap between intelligence and design. We build AI-powered experiences that scale."
primaryButton={{
text: "Get Started",
href: "#contact",
}}
secondaryButton={{
text: "Explore Services",
href: "#services",
}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/3d-data-technology-background-with-flowing-particles_1048-18065.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/still-life-office-desk-mess_23-2150164871.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTestimonial
tag="About Us"
quote="Innovation, intelligence, and creativity. We help businesses harness the power of AI to create impactful digital footprints in an evolving world."
author="NGA Digital Leadership"
role="Next Gen AI Experts"
imageSrc="http://img.b2bpic.net/free-photo/abstract-green-background-from-brilliant-mosaic-pattern-generative-ai_169016-30202.jpg"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="services" data-section="services">
<SectionErrorBoundary name="services">
<FeaturesBentoGrid
tag="Our Expertise"
title="Next Gen Digital Services"
description="Comprehensive solutions powered by cutting-edge AI and human creativity."
features={[
{
title: "AI Digital Solutions",
description: "Leverage machine learning to drive automation and smart business growth.",
imageSrc: "http://img.b2bpic.net/free-photo/blockchain-technology-controls-digital-currency-transactions-online-generated-by-ai_188544-27198.jpg",
},
{
title: "Branding & Design",
description: "Stunning visuals that define your corporate identity and voice.",
imageSrc: "http://img.b2bpic.net/free-vector/graphic-design-element-collection_23-2148098250.jpg",
},
{
title: "Web Development",
description: "High-performance websites designed for speed, security, and conversion.",
imageSrc: "http://img.b2bpic.net/free-vector/creative-coding-app-development-25-flat-icon-pack-such-as-flask-testing-internet-sketching-notepad_1142-21598.jpg",
},
{
title: "Online Training",
description: "Upskill your team with courses designed for the future of digital work.",
imageSrc: "https://storage.googleapis.com/webild/default/no-image.jpg?id=97tgx9",
},
]}
/>
</SectionErrorBoundary>
</div>
<ServicesSection />
<div id="portfolio" data-section="portfolio">
<SectionErrorBoundary name="portfolio">
<FeaturesRevealCardsBento
tag="Portfolio"
title="Selected Projects"
description="A glimpse into our creative and technical capability."
items={[
{
title: "AI Dashboard",
description: "Smart analytics interface for retail.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-vector/flat-electronics-logo-pack_23-2148974940.jpg",
},
{
title: "E-commerce Site",
description: "High-conversion shop platform.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/qwerty-word-gradient-corporate-visiting-cards_23-2148500435.jpg",
},
{
title: "Corporate Branding",
description: "Identity system for new tech start-up.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-vector/linear-web-development-illustration_1257-357.jpg",
},
{
title: "Marketing Social App",
description: "Campaign management platform.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-vector/flat-design-minimal-technology-landing-page_23-2149148966.jpg",
},
{
title: "AI Content Bot",
description: "Automated engagement systems.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-vector/technological-logo_1035-6545.jpg",
},
{
title: "Modern Course Hub",
description: "Platform for digital skill training.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/abstract-luxury-gradient-blue-background-smooth-dark-blue-with-black-vignette-studio-banner_1258-92086.jpg",
},
{
title: "Visual AI Branding",
description: "Identity using generative tech.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-vector/digital-code-coding-from-connecting-dot-line-light-effect-vector-illustration-isolated-transparent-background_587448-324.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<PortfolioSection />
<div id="training" data-section="training">
<SectionErrorBoundary name="training">
<MetricsIconCards
tag="Digital Training"
title="Empowering Future Talent"
description="Courses designed by industry experts to boost your competitive edge."
metrics={[
{
icon: Sparkles,
title: "AI Masterclass",
value: "20+ hrs",
},
{
icon: Palette,
title: "Design Systems",
value: "Expert",
},
{
icon: Code,
title: "Dev Basics",
value: "Applied",
},
]}
/>
</SectionErrorBoundary>
</div>
<TrainingSection />
<div id="why-nga" data-section="why-nga">
<SectionErrorBoundary name="why-nga">
<FaqSimple
tag="Why Choose Us"
title="NGA Digital Advantage"
description="What makes our agency unique in a crowded market."
items={[
{
question: "AI-Powered Creativity",
answer: "We integrate advanced machine learning tools to accelerate the design and development phase without compromising quality.",
},
{
question: "Professional Quality",
answer: "Our team maintains global agency standards, ensuring your project reflects professionalism and innovation.",
},
{
question: "Fast Workflow",
answer: "Through intelligent technologies, we deliver high-end digital solutions faster than traditional agencies.",
},
]}
/>
</SectionErrorBoundary>
</div>
<WhyNgaSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Let's Talk"
text="Ready to launch your project? Lets talk about how NGA Digital can build your future."
primaryButton={{
text: "Start Your Project",
href: "mailto:hello@ngadigital.com",
}}
secondaryButton={{
text: "Email Us",
href: "mailto:hello@ngadigital.com",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,22 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "about" section.
import React from 'react';
import AboutTestimonial from '@/components/sections/about/AboutTestimonial';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTestimonial
tag="About NGA Digital"
quote="Innovation, intelligence, and creativity. We help businesses harness the power of AI to create impactful digital footprints in an evolving world."
author="NGA Digital Leadership"
role="Next Gen AI Experts"
imageSrc="https://picsum.photos/seed/2129599349/1200/800"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "contact" section.
import React from 'react';
import ContactCta from '@/components/sections/contact/ContactCta';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ContactSection(): React.JSX.Element {
return (
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Start Your Project"
text="Ready to launch your project? Let's talk about how NGA Digital can build your future."
primaryButton={{"href":"mailto:hello@ngadigital.com","text":"Let's Build the Future Together"}}
secondaryButton={{"href":"#","text":"Follow on Social"}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,23 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "hero" section.
import React from 'react';
import HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroSplitMediaGrid
tag="Next Generation AI-Powered Digital Solutions"
title="Transform Your Ideas Into Digital Reality"
description="NGA Digital bridges the gap between intelligence and design. We build AI-powered experiences that scale."
primaryButton={{"text":"Start Your Project","href":"#contact"}}
secondaryButton={{"href":"#services","text":"Explore Services"}}
items={[{"imageSrc":"https://images.unsplash.com/photo-1620712943543-bcc4688e7485?q=80&w=1000&auto=format&fit=crop"},{"imageSrc":"https://images.unsplash.com/photo-1677442136019-21780ecad995?q=80&w=1000&auto=format&fit=crop"}]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "portfolio" section.
import React from 'react';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function PortfolioSection(): React.JSX.Element {
return (
<div id="portfolio" data-section="portfolio">
<SectionErrorBoundary name="portfolio">
<FeaturesRevealCardsBento
tag="Portfolio & Case Studies"
title="Selected Projects"
description="A glimpse into our creative and technical capability."
items={[{"imageSrc":"https://images.unsplash.com/photo-1551288049-bebda4e38f71?q=80&w=1000&auto=format&fit=crop","href":"#","description":"Smart analytics interface for retail.","title":"AI Dashboard"},{"title":"E-commerce Site","description":"High-conversion shop platform.","href":"#","imageSrc":"https://images.unsplash.com/photo-1460925895917-afdab827c52f?q=80&w=1000&auto=format&fit=crop"},{"imageSrc":"https://images.unsplash.com/photo-1600132806370-bf17e65e942f?q=80&w=1000&auto=format&fit=crop","href":"#","description":"Identity system for new tech start-up.","title":"Corporate Branding"},{"href":"#","imageSrc":"https://images.unsplash.com/photo-1611162617474-5b21e879e113?q=80&w=1000&auto=format&fit=crop","title":"Marketing Social App","description":"Campaign management platform."},{"title":"AI Content Bot","description":"Automated engagement systems.","href":"#","imageSrc":"https://images.unsplash.com/photo-1677442136019-21780ecad995?q=80&w=1000&auto=format&fit=crop"},{"title":"Modern Course Hub","description":"Platform for digital skill training.","href":"#","imageSrc":"https://images.unsplash.com/photo-1516321318423-f06f85e504b3?q=80&w=1000&auto=format&fit=crop"},{"href":"#","imageSrc":"https://images.unsplash.com/photo-1620712943543-bcc4688e7485?q=80&w=1000&auto=format&fit=crop","title":"Visual AI Branding","description":"Identity using generative tech."}]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "services" section.
import React from 'react';
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ServicesSection(): React.JSX.Element {
return (
<div id="services" data-section="services">
<SectionErrorBoundary name="services">
<FeaturesBentoGrid
tag="Our Expertise"
title="Next Gen Digital Services"
description="Comprehensive solutions powered by cutting-edge AI and human creativity."
features={[{"imageSrc":"https://images.unsplash.com/photo-1677442136019-21780ecad995?q=80&w=1000&auto=format&fit=crop","title":"AI Digital Solutions","description":"Leverage machine learning to drive automation and smart business growth."},{"description":"Stunning visuals that define your corporate identity and voice.","imageSrc":"https://images.unsplash.com/photo-1620712943543-bcc4688e7485?q=80&w=1000&auto=format&fit=crop","title":"Branding & Design"},{"description":"High-performance websites designed for speed, security, and conversion.","title":"Web Development","imageSrc":"https://images.unsplash.com/photo-1451187580459-43490279c0fa?q=80&w=1000&auto=format&fit=crop"},{"imageSrc":"https://images.unsplash.com/photo-1516321318423-f06f85e504b3?q=80&w=1000&auto=format&fit=crop","title":"Online Training","description":"Upskill your team with courses designed for the future of digital work."}]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,22 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "training" section.
import React from 'react';
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
import { Code, Palette, Sparkles } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TrainingSection(): React.JSX.Element {
return (
<div id="training" data-section="training">
<SectionErrorBoundary name="training">
<MetricsIconCards
tag="Training Academy"
title="Empowering Future Talent"
description="Structured courses, learning paths, and certifications designed for the future of digital work."
metrics={[{"value":"Masterclass","icon":"Sparkles","title":"AI Tools Training"},{"value":"Advanced","icon":"Palette","title":"Graphic Design"},{"title":"Digital Skills","icon":"Code","value":"Certified"}]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "why-nga" section.
import React from 'react';
import FaqSimple from '@/components/sections/faq/FaqSimple';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function WhyNgaSection(): React.JSX.Element {
return (
<div id="why-nga" data-section="why-nga">
<SectionErrorBoundary name="why-nga">
<FaqSimple
tag="Why Choose Us"
title="NGA Digital Advantage"
description="What makes our agency unique in a crowded market."
items={[{"answer":"We integrate advanced machine learning tools to accelerate the design and development phase without compromising quality.","question":"AI-Powered Creativity"},{"answer":"Our team maintains global agency standards, ensuring your project reflects professionalism and innovation.","question":"Professional Quality"},{"question":"Fast Workflow","answer":"Through intelligent technologies, we deliver high-end digital solutions faster than traditional agencies."},{"question":"Integrated Services","answer":"We combine agency services with professional education, offering a complete ecosystem for digital growth."}]}
/>
</SectionErrorBoundary>
</div>
);
}

29
src/pages/MenuPage.tsx Normal file
View 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>
</>
);
}

View File

@@ -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' },
];