import { useState } from 'react' import { Activity, Bell, BookOpen, Bot, Boxes, ChevronDown, CircleDollarSign, Code2, CreditCard, Cpu, FileCheck2, Gauge, KeyRound, LayoutDashboard, LogOut, Menu, MessageSquareText, Network, Phone, Search, Settings, ShieldCheck, SlidersHorizontal, TestTube2, Users, Webhook, X, Zap, } from 'lucide-react' import { NavLink, Outlet, useNavigate } from 'react-router-dom' import { useAuth } from '../features/auth/auth-context' import { ComplianceProvider } from '../features/compliance/ComplianceProvider' import { useCompliance } from '../features/compliance/compliance-context' import { COMPLIANCE_ONLY_PATHS } from '../features/compliance/compliance-context' const groups = [ { label: 'Compliance', links: [ { label: 'KYC', path: '/console/kyc', icon: ShieldCheck }, { label: 'DLT', path: '/console/dlt', icon: FileCheck2 }, { label: 'Message settings', path: '/console/message-settings', icon: SlidersHorizontal }, ]}, { label: 'Workspace', links: [ { label: 'Overview', path: '/console', icon: LayoutDashboard }, { label: 'Activity', path: '/console/activity', icon: Activity }, ]}, { label: 'Agent', links: [ { label: 'UrmiAI', path: '/console/agent/urmiai', icon: Bot }, { label: 'UrmIOT', path: '/console/agent/urmiot', icon: Cpu }, { label: 'UrmiOTP', path: '/console/agent/urmiotp', icon: KeyRound }, ]}, { label: 'Communicate', links: [ { label: 'Messaging', path: '/console/messaging', icon: MessageSquareText }, { label: 'Campaigns', path: '/console/campaigns', icon: Zap }, { label: 'Templates', path: '/console/templates', icon: BookOpen }, ]}, { label: 'Numbers', links: [ { label: 'Voice', path: '/console/voice', icon: Phone }, { label: 'Buy Numbers', path: '/console/numbers/buy', icon: Search }, { label: 'My Numbers', path: '/console/numbers', icon: Network, end: true }, ]}, { label: 'Develop', links: [ { label: 'Webhooks & Sockets', path: '/console/webhooks', icon: Webhook }, { label: 'API Keys', path: '/console/api-keys', icon: KeyRound }, { label: 'API Explorer', path: '/console/api-explorer', icon: Code2 }, ]}, { label: 'Test & observe', links: [ { label: 'Testing Center', path: '/console/testing', icon: TestTube2 }, { label: 'Logs', path: '/console/logs', icon: Boxes }, { label: 'Analytics', path: '/console/analytics', icon: Gauge }, ]}, { label: 'Manage', links: [ { label: 'Billing', path: '/console/billing', icon: CreditCard }, { label: 'Team', path: '/console/team', icon: Users }, { label: 'Settings', path: '/console/settings', icon: Settings }, ]}, ] function AppShellContent() { const [open, setOpen] = useState(false) const [accountOpen, setAccountOpen] = useState(false) const { user, logout } = useAuth() const { status } = useCompliance() const navigate = useNavigate() const unlocked = status?.console_unlocked ?? false const visibleGroups = unlocked ? groups : [{ label: 'Compliance', links: groups[0].links.filter((link) => COMPLIANCE_ONLY_PATHS.includes(link.path)), }] async function signOut() { await logout() navigate('/') } return (