@@ -93,29 +97,21 @@ const UberIntegrationPage = () => {
{/* SECTION 2: DELIVERY PLATFORM INTEGRATION */}
- {/* Left: Illustration Graphic */}
+ {/* Left: Uber Image */}
-
- {/* Central Icon */}
-
-
-
-
- {/* Floating Icons */}
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
{/* Right: Text Content */}
diff --git a/src/app/globals.css b/src/app/globals.css
index d6cf76f..ed2a2b2 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -12,6 +12,12 @@
--font-mono: var(--font-geist-mono);
--color-brand-red: #dc2626;
--color-brand-cream: #f9f9f5;
+ --animate-infinite-scroll: infinite-scroll 40s linear infinite;
+
+ @keyframes infinite-scroll {
+ from { transform: translateX(0); }
+ to { transform: translateX(-50%); }
+ }
}
body {
diff --git a/src/app/restaurant-types/page.tsx b/src/app/restaurant-types/page.tsx
index 25fe62a..f0fabc3 100644
--- a/src/app/restaurant-types/page.tsx
+++ b/src/app/restaurant-types/page.tsx
@@ -2,7 +2,12 @@
import React, { useState } from 'react'
import Image from 'next/image'
-import { ArrowUpRight, Zap, RefreshCw, Clock, Target, Truck, Coffee, Cloud, UtensilsCrossed, ChefHat, Gem, Users } from 'lucide-react'
+import {
+ ArrowUpRight, Zap, RefreshCw, Clock, Target, Truck, Coffee, Cloud,
+ UtensilsCrossed, ChefHat, Gem, Users, Store, Beer, Flame,
+ Pizza, Sandwich, IceCream, Wine, Soup, Beef, Utensils,
+ ChevronLeft, ChevronRight, Layers
+} from 'lucide-react'
import { motion, AnimatePresence } from 'framer-motion'
import Link from 'next/link'
import Navbar from '@/components/Navbar'
@@ -66,6 +71,102 @@ const RESTAURANT_TYPES = [
angle: 315,
href: "/restaurant-types/family-style",
},
+ {
+ label: "Fast Casual",
+ icon: Flame,
+ description: "Combine speed with quality service. Our POS handles unique workflows for restaurants that bridge the gap between fast food and fine dining.",
+ href: "/restaurant-types/fast-casual",
+ },
+ {
+ label: "Diner",
+ icon: Store,
+ description: "Classic desk service meets modern tech. Manage high-turnover seating, complicated breakfast orders, and multi-staff coordination with ease.",
+ href: "/restaurant-types/diner",
+ },
+ {
+ label: "Pub",
+ icon: Beer,
+ description: "Built for busy bars and pubs. Track open tabs, manage age-restricted items, and handle lightning-fast counter rounds flawlessly.",
+ href: "/restaurant-types/pub",
+ },
+ {
+ label: "Italian / Pizza",
+ icon: Pizza,
+ description: "Specialized for modifiers and toppings. Manage ingredient inventory, delivery zones, and custom modifiers with ease.",
+ href: "/restaurant-types/italian-pizza",
+ },
+ {
+ label: "Steakhouse",
+ icon: Beef,
+ description: "Focus on precision. Manage specific meat aging, cooking temperatures, and premium wine pairings for high-ticket service.",
+ href: "/restaurant-types/steakhouse",
+ },
+ {
+ label: "Seafood",
+ icon: Utensils,
+ description: "Handle fresh catch inventory, fluctuating market pricing, and seasonal menu changes with our flexible management system.",
+ href: "/restaurant-types/seafood",
+ },
+ {
+ label: "Buffet",
+ icon: Layers,
+ description: "Optimized for self-service or staff-assisted buffets. Track wastage, manage entry payments, and monitor kitchen refill rates.",
+ href: "/restaurant-types/buffet",
+ },
+ {
+ label: "Bistro",
+ icon: Wine,
+ description: "Small plates, big impact. Manage cozy seating layouts, rotating wine lists, and intimate guest experiences efficiently.",
+ href: "/restaurant-types/bistro",
+ },
+ {
+ label: "Cafeteria",
+ icon: Soup,
+ description: "Built for institutional or corporate cafeterias. Handle meal plans, quick-tap payments, and large-scale bulk ordering.",
+ href: "/restaurant-types/cafeteria",
+ },
+ {
+ label: "Teppanyaki",
+ icon: Flame,
+ description: "Experience-led dining. Sync chef stations with POS orders and manage theater-style seating arrangements.",
+ href: "/restaurant-types/teppanyaki",
+ },
+ {
+ label: "Contemporary Casual",
+ icon: Zap,
+ description: "Modern tech for modern dining. Integrated QR ordering, mobile payments, and tableside service for trend-setting restaurants.",
+ href: "/restaurant-types/contemporary-casual",
+ },
+ {
+ label: "Buffet",
+ icon: UtensilsCrossed,
+ description: "Manage large scale dining with ticket entry systems, kitchen replenishment notifications, and wastage tracking.",
+ href: "/restaurant-types/buffet",
+ },
+ {
+ label: "Ghost Restaurant",
+ icon: Cloud,
+ description: "Virtual brands, real profits. Manage multiple digital storefronts from one kitchen and sync with all major delivery apps.",
+ href: "/restaurant-types/ghost-restaurant",
+ },
+ {
+ label: "Delivery Only",
+ icon: Truck,
+ description: "Focus on the fleet. Optimize dispatching, track delivery times, and manage third-party integration from a single order screen.",
+ href: "/restaurant-types/delivery-only",
+ },
+ {
+ label: "Concession",
+ icon: Sandwich,
+ description: "Built for stadiums and events. Handle extreme peak waves with offline-readiness and high-speed tap-to-pay processing.",
+ href: "/restaurant-types/concession",
+ },
+ {
+ label: "Ice Cream Shop",
+ icon: IceCream,
+ description: "Cold treats, hot sales. Manage complex modifier chains, seasonal flavors, and high-frequency transactions with ease.",
+ href: "/restaurant-types/ice-cream-shop",
+ },
]
const HERO_IMAGES = [
@@ -111,6 +212,28 @@ const RESTAURANT_TYPE_EMOJIS: Record
= {
const RestaurantTypesPage = () => {
const [hoveredIdx, setHoveredIdx] = useState(null)
const [hoveredCardIdx, setHoveredCardIdx] = useState(null)
+ const [currentPage, setCurrentPage] = useState(0)
+ const [direction, setDirection] = useState(1) // 1 for next, -1 for previous
+ const itemsPerPage = 8
+ const totalPages = Math.ceil(RESTAURANT_TYPES.length / itemsPerPage)
+
+ const nextPage = () => {
+ setDirection(1)
+ setCurrentPage((prev) => (prev + 1) % totalPages)
+ }
+
+ const prevPage = () => {
+ setDirection(-1)
+ setCurrentPage((prev) => (prev - 1 + totalPages) % totalPages)
+ }
+
+ const currentItems = RESTAURANT_TYPES.slice(
+ currentPage * itemsPerPage,
+ (currentPage + 1) * itemsPerPage
+ )
+
+ const diagramItems = RESTAURANT_TYPES.slice(0, 8)
+
return (
@@ -468,8 +591,9 @@ const RestaurantTypesPage = () => {
className="absolute inset-0 w-full h-full pointer-events-none"
viewBox="0 0 580 580"
>
- {RESTAURANT_TYPES.map((type, idx) => {
- const rad = (type.angle * Math.PI) / 180
+ {diagramItems.map((type, idx) => {
+ const angle = type.angle ?? (idx * (360 / diagramItems.length))
+ const rad = (angle * Math.PI) / 180
const r = 210
const rInner = 90
const x1 = 290 + rInner * Math.sin(rad)
@@ -525,10 +649,10 @@ const RestaurantTypesPage = () => {
className="flex flex-col items-center gap-2"
>
- {RESTAURANT_TYPES[hoveredIdx].label}
+ {diagramItems[hoveredIdx].label}
- {RESTAURANT_TYPES[hoveredIdx].description}
+ {diagramItems[hoveredIdx].description}
)}
@@ -537,8 +661,9 @@ const RestaurantTypesPage = () => {
{/* Nodes */}
- {RESTAURANT_TYPES.map((type, idx) => {
- const rad = (type.angle * Math.PI) / 180
+ {diagramItems.map((type, idx) => {
+ const angle = type.angle ?? (idx * (360 / diagramItems.length))
+ const rad = (angle * Math.PI) / 180
const r = 210
const cx = 290 + r * Math.sin(rad)
const cy = 290 - r * Math.cos(rad)
@@ -591,82 +716,143 @@ const RestaurantTypesPage = () => {
{/* ─── RESTAURANT TYPES CARD GRID ─────────────────────────────── */}
-
-
+
+ {/* Subtle noise pattern for texture */}
+
+
+
- View All Types
- Built for All Restaurant Types
+ Explore All Models
+ Designed For Every Scale
+
+
+
+
+ {[...Array(totalPages)].map((_, i) => (
+
+
+
+
-
- {RESTAURANT_TYPES.map((type, idx) => {
- const isHovered = hoveredCardIdx === idx
+
+
+
+ {currentItems.map((type, idx) => {
+ const isHovered = hoveredCardIdx === idx
- return (
-
- setHoveredCardIdx(idx)}
- onMouseLeave={() => setHoveredCardIdx(null)}
- >
- {/* Background Glow Effect on Hover - Subtle warm tint */}
-
-
-
-
-
-
-
- {type.label}
-
-
- {type.description}
-
-
-
- Learn More →
-
-
-
- )
- })}
+ setHoveredCardIdx(idx)}
+ onMouseLeave={() => setHoveredCardIdx(null)}
+ >
+ {/* Hover Accent Line */}
+
+
+
+
+
+
+
+ {type.label}
+
+
+
+ {type.description}
+
+
+
+
+
+ )
+ })}
+
+
diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts
index 1cdef63..636be52 100644
--- a/src/app/sitemap.ts
+++ b/src/app/sitemap.ts
@@ -1,5 +1,7 @@
import { MetadataRoute } from 'next'
+export const dynamic = "force-static"
+
export default function sitemap(): MetadataRoute.Sitemap {
const baseUrl = "https://dine360.vercel.app"
diff --git a/src/assets/features/crm/crm-1.webp b/src/assets/features/crm/crm-1.webp
new file mode 100644
index 0000000..b39b806
Binary files /dev/null and b/src/assets/features/crm/crm-1.webp differ
diff --git a/src/assets/features/crm/crm-2.webp b/src/assets/features/crm/crm-2.webp
new file mode 100644
index 0000000..cbee6fe
Binary files /dev/null and b/src/assets/features/crm/crm-2.webp differ
diff --git a/src/assets/features/dashboard/dashboard-1.webp b/src/assets/features/dashboard/dashboard-1.webp
new file mode 100644
index 0000000..30601dc
Binary files /dev/null and b/src/assets/features/dashboard/dashboard-1.webp differ
diff --git a/src/assets/features/dashboard/dashboard-2.webp b/src/assets/features/dashboard/dashboard-2.webp
new file mode 100644
index 0000000..19e48f5
Binary files /dev/null and b/src/assets/features/dashboard/dashboard-2.webp differ
diff --git a/src/assets/features/inventory-management/inventory-management.webp b/src/assets/features/inventory-management/inventory-management.webp
new file mode 100644
index 0000000..625b020
Binary files /dev/null and b/src/assets/features/inventory-management/inventory-management.webp differ
diff --git a/src/assets/features/invoice/invoice.webp b/src/assets/features/invoice/invoice.webp
new file mode 100644
index 0000000..b71e1ce
Binary files /dev/null and b/src/assets/features/invoice/invoice.webp differ
diff --git a/src/assets/features/kds-20260406T072434Z-1-001/kds/kds-1.webp b/src/assets/features/kds-20260406T072434Z-1-001/kds/kds-1.webp
new file mode 100644
index 0000000..d532686
Binary files /dev/null and b/src/assets/features/kds-20260406T072434Z-1-001/kds/kds-1.webp differ
diff --git a/src/assets/features/kds-20260406T072434Z-1-001/kds/kds-2.webp b/src/assets/features/kds-20260406T072434Z-1-001/kds/kds-2.webp
new file mode 100644
index 0000000..2e69fd5
Binary files /dev/null and b/src/assets/features/kds-20260406T072434Z-1-001/kds/kds-2.webp differ
diff --git a/src/assets/logo/dine360.jpeg b/src/assets/features/logo/dine360.jpeg
similarity index 100%
rename from src/assets/logo/dine360.jpeg
rename to src/assets/features/logo/dine360.jpeg
diff --git a/src/assets/features/multi-branch/multi-branch-1.webp b/src/assets/features/multi-branch/multi-branch-1.webp
new file mode 100644
index 0000000..6f245fa
Binary files /dev/null and b/src/assets/features/multi-branch/multi-branch-1.webp differ
diff --git a/src/assets/features/multi-branch/multi-branch-2.webp b/src/assets/features/multi-branch/multi-branch-2.webp
new file mode 100644
index 0000000..5ccc928
Binary files /dev/null and b/src/assets/features/multi-branch/multi-branch-2.webp differ
diff --git a/src/assets/features/online-ordering/online-ordering-1.webp b/src/assets/features/online-ordering/online-ordering-1.webp
new file mode 100644
index 0000000..81f5bbe
Binary files /dev/null and b/src/assets/features/online-ordering/online-ordering-1.webp differ
diff --git a/src/assets/features/online-ordering/online-ordering-2.webp b/src/assets/features/online-ordering/online-ordering-2.webp
new file mode 100644
index 0000000..5355876
Binary files /dev/null and b/src/assets/features/online-ordering/online-ordering-2.webp differ
diff --git a/src/assets/features/pos/pos.webp b/src/assets/features/pos/pos.webp
new file mode 100644
index 0000000..826dd31
Binary files /dev/null and b/src/assets/features/pos/pos.webp differ
diff --git a/src/assets/features/promotions/promotions-1.webp b/src/assets/features/promotions/promotions-1.webp
new file mode 100644
index 0000000..f0d832d
Binary files /dev/null and b/src/assets/features/promotions/promotions-1.webp differ
diff --git a/src/assets/features/promotions/promotions-2.webp b/src/assets/features/promotions/promotions-2.webp
new file mode 100644
index 0000000..cef3f94
Binary files /dev/null and b/src/assets/features/promotions/promotions-2.webp differ
diff --git a/src/assets/features/purchase-promotions/purchase-promotions.webp b/src/assets/features/purchase-promotions/purchase-promotions.webp
new file mode 100644
index 0000000..ee926c5
Binary files /dev/null and b/src/assets/features/purchase-promotions/purchase-promotions.webp differ
diff --git a/src/assets/features/sales/sales-1.webp b/src/assets/features/sales/sales-1.webp
new file mode 100644
index 0000000..72f3703
Binary files /dev/null and b/src/assets/features/sales/sales-1.webp differ
diff --git a/src/assets/features/sales/sales-2.webp b/src/assets/features/sales/sales-2.webp
new file mode 100644
index 0000000..77c61b2
Binary files /dev/null and b/src/assets/features/sales/sales-2.webp differ
diff --git a/src/assets/features/table-reservation/table-reseravtion.webp b/src/assets/features/table-reservation/table-reseravtion.webp
new file mode 100644
index 0000000..38af845
Binary files /dev/null and b/src/assets/features/table-reservation/table-reseravtion.webp differ
diff --git a/src/assets/features/team-communiaction/team-communiaction.webp b/src/assets/features/team-communiaction/team-communiaction.webp
new file mode 100644
index 0000000..1f8e84f
Binary files /dev/null and b/src/assets/features/team-communiaction/team-communiaction.webp differ
diff --git a/src/assets/features/uber/uber.webp b/src/assets/features/uber/uber.webp
new file mode 100644
index 0000000..4cbcd3d
Binary files /dev/null and b/src/assets/features/uber/uber.webp differ
diff --git a/src/components/FeatureQuickNav.tsx b/src/components/FeatureQuickNav.tsx
index 87999e1..628b162 100644
--- a/src/components/FeatureQuickNav.tsx
+++ b/src/components/FeatureQuickNav.tsx
@@ -1,6 +1,7 @@
'use client';
import Link from 'next/link';
+import { motion } from 'framer-motion';
import {
Monitor,
BookOpen,
@@ -9,46 +10,76 @@ import {
Users,
QrCode,
Tag,
- Layers
+ Layers,
+ LayoutDashboard,
+ ChefHat,
+ Heart,
+ FileText,
+ MessageSquare,
+ Bike,
+ TicketPercent
} from 'lucide-react';
const navItems = [
- { name: 'POS', href: '/features/pos-management', icon: Monitor, color: 'bg-emerald-400' },
+ { name: 'DASHBOARD', href: '/features/business-dashboard', icon: LayoutDashboard, color: 'bg-indigo-500' },
+ { name: 'POS', href: '/features/pos', icon: Monitor, color: 'bg-emerald-400' },
{ name: 'MENU', href: '/features/multi-menu-management', icon: BookOpen, color: 'bg-sky-400' },
{ name: 'ORDERS', href: '/features/order-management', icon: ClipboardList, color: 'bg-orange-400' },
+ { name: 'KITCHEN', href: '/features/kitchen-management', icon: ChefHat, color: 'bg-red-500' },
{ name: 'TABLES', href: '/features/table-reservation', icon: Users, color: 'bg-purple-400' },
{ name: 'WEBSITE', href: '/features/restaurant-website', icon: Globe, color: 'bg-emerald-500' },
+ { name: 'LOYALTY', href: '/features/loyalty-management', icon: Heart, color: 'bg-pink-500' },
{ name: 'QR CODE', href: '/features/qr-code-menu', icon: QrCode, color: 'bg-sky-500' },
+ { name: 'INVOICING', href: '/features/invoicing', icon: FileText, color: 'bg-blue-500' },
{ name: 'PROMO', href: '/features/promotion-management', icon: Tag, color: 'bg-orange-500' },
+ { name: 'OFFERS', href: '/features/promotions', icon: TicketPercent, color: 'bg-yellow-500' },
{ name: 'STOCK', href: '/features/inventory-management', icon: Layers, color: 'bg-purple-500' },
+ { name: 'TEAM', href: '/features/team-communication', icon: MessageSquare, color: 'bg-teal-500' },
+ { name: 'UBER', href: '/features/uber-integration', icon: Bike, color: 'bg-black' },
];
const FeatureQuickNav = () => {
+ // Duplicate only once for CSS loop
+ const duplicatedItems = [...navItems, ...navItems];
+
return (
-
-
-
-
Explore More Features
+
+
+
+
+
+ Explore All Features
+
+
-
- {navItems.map((item) => (
+
+
+
+
+ {duplicatedItems.map((item, idx) => (
- {/* Colorful Top Border like the image */}
-
+ {/* Colorful Top Border */}
+
-
-
+
+
-
+
{item.name}
))}
+
+ {/* Gradient Overlays for smooth entry/exit fade */}
+
+
);
diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx
index ae3d4bc..1006c30 100644
--- a/src/components/Footer.tsx
+++ b/src/components/Footer.tsx
@@ -50,13 +50,8 @@ const Footer = () => {
{ name: "Inventory Management", href: "/features/inventory-management" },
{ name: "Purchase & Promotions", href: "/features/promotion-management" },
{ name: "Uber Integration", href: "/features/uber-integration" },
- { name: "Invoicing", href: "/features/invoicing" },
- { name: "POS Management", href: "/features/pos" },
- { name: "Promotions", href: "/features/promotions" },
- { name: "Website & Online Ordering", href: "/features/restaurant-website" },
- { name: "Business Dashboard", href: "/features/business-dashboard" },
- { name: "Multi-Branch Management", href: "/features/multi-menu-management" },
- { name: "Team Communication", href: "/features/team-communication" },
+ { name: "view all pages ", href: "/features " },
+
];
const restaurantTypeLinks = [
@@ -67,23 +62,7 @@ const Footer = () => {
{ name: "Family Style Restaurant", href: "/restaurant-types/family-style" },
{ name: "Fast Food Restaurant", href: "/restaurant-types/fast-food" },
{ name: "Food Truck, Cart, or Stand", href: "/restaurant-types/food-truck" },
- { name: "Cafe", href: "/restaurant-types/cafe-bistro" },
- { name: "Buffet Restaurant", href: "/restaurant-types/buffet" },
- { name: "Pub", href: "/restaurant-types/pub" },
- { name: "Cafeteria", href: "/restaurant-types/cafeteria" },
- { name: "Coffee House", href: "/restaurant-types/coffee-house" },
- { name: "Diner", href: "/restaurant-types/diner" },
- { name: "Pop-Up Restaurant", href: "/restaurant-types/pop-up" },
- { name: "Contemporary Casual Restaurant", href: "/restaurant-types/contemporary-casual" },
- { name: "Bistro", href: "/restaurant-types/bistro" },
- { name: "Destination Restaurant", href: "/restaurant-types/destination" },
- { name: "Teppanyaki Grill", href: "/restaurant-types/teppanyaki" },
- { name: "Mongolian Barbecue", href: "/restaurant-types/mongolian-bbq" },
- { name: "Concession Stand", href: "/restaurant-types/concession" },
- { name: "Digital-Only Restaurant", href: "/restaurant-types/digital-only" },
- { name: "Theme Restaurant", href: "/restaurant-types/theme" },
- { name: "Bakery", href: "/restaurant-types/bakery" },
- { name: "Delivery-Only Restaurant", href: "/restaurant-types/delivery-only" },
+ { name: "view all pages", href: "/restaurant-types" },
];
return (
@@ -147,10 +126,10 @@ const Footer = () => {
initial="hidden"
whileInView="visible"
viewport={{ once: true }}
- className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-12 gap-12"
+ className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-12 lg:gap-8"
>
{/* Column 1: Brand */}
-
+
Dine 360
@@ -181,7 +160,7 @@ const Footer = () => {
{/* Column 2: Quick Links */}
-
+
Quick Links
@@ -190,7 +169,7 @@ const Footer = () => {
{links.map((link, i) => (
-
+
{link.name}
@@ -199,92 +178,41 @@ const Footer = () => {
{/* Column 3: Features */}
-
+
-
+
-
+ {/* Column 4: Restaurant Types */}
+
+
+
+
- {/* 2nd Main Row: Restaurant Types */}
-
-
-
-
-
- {restaurantTypeLinks.slice(0, 6).map((link, i) => (
- -
-
-
- {link.name}
-
-
- ))}
-
-
- {restaurantTypeLinks.slice(6, 12).map((link, i) => (
- -
-
-
- {link.name}
-
-
- ))}
-
-
- {restaurantTypeLinks.slice(12, 18).map((link, i) => (
- -
-
-
- {link.name}
-
-
- ))}
-
-
- {restaurantTypeLinks.slice(18, 24).map((link, i) => (
- -
-
-
- {link.name}
-
-
- ))}
-
-
@@ -292,7 +220,7 @@ const Footer = () => {
- © All Copyright 2024 by Dine 360
+ © All Copyright 2026 by Dine 360
Terms & Condition
diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx
index cc3e78f..7976bda 100644
--- a/src/components/Navbar.tsx
+++ b/src/components/Navbar.tsx
@@ -3,7 +3,7 @@
import { useState, useEffect } from 'react';
import Link from 'next/link';
import Image from 'next/image';
-import Logo from '@/assets/logo/dine360.jpeg';
+import Logo from '../../public/dine360.jpeg';
import { motion, AnimatePresence } from 'framer-motion';
import {
Monitor,