@php // mode=direct → no submenu (clicking goes to URL) // mode=group → has List + Add New submenu (clicking toggles open/close) $groups = [ 'core' => [ ['mode' => 'direct', 'route' => 'admin.dashboard', 'list' => 'admin.dashboard', 'icon' => 'home', 'label' => __('admin.nav.dashboard')], ['mode' => 'direct', 'route' => 'admin.startups.*', 'list' => 'admin.startups.index', 'icon' => 'startup', 'label' => __('admin.nav.startups')], ['mode' => 'direct', 'route' => 'admin.investors.*', 'list' => 'admin.investors.index', 'icon' => 'users', 'label' => __('admin.nav.investors')], ['mode' => 'direct', 'route' => 'admin.meetings.*', 'list' => 'admin.meetings.index', 'icon' => 'calendar', 'label' => __('admin.nav.meetings')], ['mode' => 'group', 'route' => 'admin.committees.*', 'list' => 'admin.committees.index', 'create' => 'admin.committees.create', 'icon' => 'committee', 'label' => __('admin.nav.committees')], // Demo module — sits directly under Committee per ops // request. Same `group` mode (List + Add New submenu) and // the same icon shape so the relationship reads visually. ['mode' => 'group', 'route' => 'admin.demos.*', 'list' => 'admin.demos.index', 'create' => 'admin.demos.create', 'icon' => 'committee', 'label' => __('admin.nav.demos')], // Actions — central startup/investor action management. Sits in // Core directly under Demos per ops request. ['mode' => 'direct', 'route' => 'admin.actions.*', 'list' => 'admin.actions.index', 'icon' => 'grid', 'label' => __('admin.nav.actions')], ], 'content' => [ ['mode' => 'group', 'route' => 'admin.blogs.*', 'list' => 'admin.blogs.index', 'create' => 'admin.blogs.create', 'icon' => 'doc', 'label' => __('admin.nav.articles')], ['mode' => 'group', 'route' => 'admin.events.*', 'list' => 'admin.events.index', 'create' => 'admin.events.create', 'icon' => 'calendar', 'label' => __('admin.nav.events')], ['mode' => 'group', 'route' => 'admin.announcements.*', 'list' => 'admin.announcements.index', 'create' => 'admin.announcements.create', 'icon' => 'megaphone', 'label' => __('admin.nav.guidelines')], ['mode' => 'group', 'route' => 'admin.assessments.*', 'list' => 'admin.assessments.index', 'create' => 'admin.assessments.create', 'icon' => 'check', 'label' => __('admin.nav.reviews')], ], 'data' => [ ['mode' => 'group', 'route' => 'admin.data-library.*', 'list' => 'admin.data-library.index', 'create' => 'admin.data-library.create', 'icon' => 'folder', 'label' => __('admin.nav.data_library')], ['mode' => 'group', 'route' => 'admin.questions.*', 'list' => 'admin.questions.index', 'create' => 'admin.questions.create', 'icon' => 'help', 'label' => __('admin.nav.questions')], ['mode' => 'group', 'route' => 'admin.groups.*', 'list' => 'admin.groups.index', 'create' => 'admin.groups.create', 'icon' => 'group', 'label' => __('admin.nav.groups')], // Tag catalog browser added 2026-06-11. `direct` mode // because the tag CREATE flow lives on the investor show // page (inline picker), not on a standalone page — there's // no `admin.tags.create` route to link to. ['mode' => 'direct', 'route' => 'admin.tags.*', 'list' => 'admin.tags.index', 'icon' => 'tag', 'label' => __('admin.nav.tags')], ], 'management' => [ ['mode' => 'group', 'route' => 'admin.admins.*', 'list' => 'admin.admins.index', 'create' => 'admin.admins.create', 'icon' => 'users', 'label' => __('admin.nav.admins')], ['mode' => 'group', 'route' => 'admin.notification-templates.*', 'list' => 'admin.notification-templates.index', 'create' => 'admin.notification-templates.create', 'icon' => 'bell', 'label' => __('admin.nav.notification_templates')], ['mode' => 'direct', 'route' => 'admin.automations.*', 'list' => 'admin.automations.index', 'icon' => 'sync', 'label' => __('admin.nav.automations')], ['mode' => 'group', 'route' => 'admin.notification-center.*', 'list' => 'admin.notification-center.index', 'create' => 'admin.notification-center.create', 'icon' => 'megaphone', 'label' => __('admin.nav.notification_center')], ['mode' => 'group', 'route' => 'admin.categories.*', 'list' => 'admin.categories.index', 'create' => 'admin.categories.create', 'icon' => 'grid', 'label' => __('admin.nav.categories')], ['mode' => 'direct', 'route' => 'admin.labels.*', 'list' => 'admin.labels.index', 'icon' => 'grid', 'label' => __('admin.nav.drop_lists')], ['mode' => 'direct', 'route' => 'admin.logs.*', 'list' => 'admin.logs.index', 'icon' => 'list', 'label' => __('admin.nav.logs')], ['mode' => 'direct', 'route' => 'admin.notification-logs.*', 'list' => 'admin.notification-logs.index', 'icon' => 'bell', 'label' => __('admin.nav.notification_logs')], ['mode' => 'direct', 'route' => 'admin.sync.*', 'list' => 'admin.sync.dashboard', 'icon' => 'sync', 'label' => __('admin.nav.sync')], ], // Claude × Numu surfaces — gated by the `ai.dashboard.view` // permission at the route level, so this group only renders // useful links for admins who can actually open them. The // sidebar itself shows them to everyone; permission errors // surface on click. 'ai' => [ ['mode' => 'direct', 'route' => 'admin.approvals.*', 'list' => 'admin.approvals.index', 'icon' => 'check', 'label' => __('admin.nav.approvals')], ['mode' => 'direct', 'route' => 'admin.ai.sessions.*', 'list' => 'admin.ai.sessions.index', 'icon' => 'list', 'label' => __('admin.ai.nav.sessions')], ['mode' => 'direct', 'route' => 'admin.ai.activity.*', 'list' => 'admin.ai.activity.index', 'icon' => 'list', 'label' => __('admin.ai.nav.activity')], ['mode' => 'direct', 'route' => 'admin.ai.tasks.*', 'list' => 'admin.ai.tasks.index', 'icon' => 'sync', 'label' => __('admin.ai.nav.tasks')], ['mode' => 'direct', 'route' => 'admin.ai.change-requests.*', 'list' => 'admin.ai.change-requests.index', 'icon' => 'check', 'label' => __('admin.ai.nav.change_requests')], ['mode' => 'direct', 'route' => 'admin.ai.rollback.*', 'list' => 'admin.ai.rollback.range', 'icon' => 'sync', 'label' => __('admin.ai.nav.rollback')], ['mode' => 'direct', 'route' => 'admin.ai.connectors.*', 'list' => 'admin.ai.connectors.index', 'icon' => 'grid', 'label' => __('admin.ai.nav.connectors')], ], ]; @endphp