adds campaignX as upcoming feature

This commit is contained in:
Mayur Shinde
2026-06-12 16:54:10 +05:30
parent a2c77878ff
commit 46c8933ec7
3 changed files with 182 additions and 11 deletions
+31 -11
View File
@@ -6,7 +6,7 @@ import {
LayoutDashboard, Map, Calendar, LogOut, User, Home, MessageSquare,
ChevronLeft, ChevronRight, Sun, Moon, Trophy, Users, Briefcase,
FileText, Menu, X, Calculator, PlusCircle, ClipboardList, Zap, LayoutGrid, Settings, CloudLightning,
HardHat, ShieldCheck, Sparkles, Megaphone
HardHat, ShieldCheck, Sparkles, Megaphone, Rocket
} from 'lucide-react';
import PageTransition from './PageTransition';
@@ -160,6 +160,8 @@ const Layout = () => {
...commonItems,
{ to: "/estimate-wizard/admin", icon: Settings, label: "Wizard Admin" },
{ to: "/marketing", icon: Megaphone, label: "Ad Engine" },
{ type: "section", label: "Upcoming Features" },
{ to: "/campaignx", icon: Rocket, label: <span>Campaign<span className="text-amber-500">X</span></span> },
];
case 'ADMIN':
return [
@@ -183,6 +185,8 @@ const Layout = () => {
...commonItems,
{ to: "/estimate-wizard/admin", icon: Settings, label: "Wizard Admin" },
{ to: "/marketing", icon: Megaphone, label: "Ad Engine" },
{ type: "section", label: "Upcoming Features" },
{ to: "/campaignx", icon: Rocket, label: <span>Campaign<span className="text-amber-500">X</span></span> },
];
case 'CONTRACTOR':
case 'SUBCONTRACTOR':
@@ -288,16 +292,32 @@ const Layout = () => {
{/* 2. Navigation Items */}
<nav className="flex-1 px-3 py-6 space-y-1 overflow-y-auto custom-scrollbar" role="navigation">
{navItems.map((item) => (
<SidebarItem
key={item.to}
to={item.to}
icon={item.icon}
label={item.label}
isCollapsed={isCollapsed && !isMobileMenuOpen}
onClick={() => setIsMobileMenuOpen(false)}
/>
))}
{navItems.map((item, idx) => {
// Section header — a divider line followed by a small uppercase label.
if (item.type === 'section') {
const collapsed = isCollapsed && !isMobileMenuOpen;
return (
<div key={`section-${idx}`} className="pt-4 pb-1">
<div className="h-px bg-zinc-200 dark:bg-white/10 mb-2" />
{!collapsed && (
<span className="px-3 text-[10px] font-bold uppercase tracking-widest text-zinc-400 dark:text-zinc-500">
{item.label}
</span>
)}
</div>
);
}
return (
<SidebarItem
key={item.to}
to={item.to}
icon={item.icon}
label={item.label}
isCollapsed={isCollapsed && !isMobileMenuOpen}
onClick={() => setIsMobileMenuOpen(false)}
/>
);
})}
</nav>
{/* 3. User Profile & Footer */}