feat(tickets): add /tickets route and sidebar nav item
Add Tickets page route to router with lazy loading and code splitting. Add Tickets navigation entry to sidebar in RESOLVE section for both icon rail and pinned layouts. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@ import {
|
|||||||
LayoutGrid, Clock, AlertTriangle, GitBranch, Code2, Wand2,
|
LayoutGrid, Clock, AlertTriangle, GitBranch, Code2, Wand2,
|
||||||
ListChecks, Download, BarChart3,
|
ListChecks, Download, BarChart3,
|
||||||
Settings, Pin, PinOff,
|
Settings, Pin, PinOff,
|
||||||
History, FileText, Network,
|
History, FileText, Network, Ticket,
|
||||||
} from 'lucide-react'
|
} from 'lucide-react'
|
||||||
import { cn } from '@/lib/utils'
|
import { cn } from '@/lib/utils'
|
||||||
import { useUserPreferencesStore } from '@/store/userPreferencesStore'
|
import { useUserPreferencesStore } from '@/store/userPreferencesStore'
|
||||||
@@ -83,6 +83,10 @@ export function Sidebar() {
|
|||||||
{ href: '/escalations', label: 'Escalations', count: stats?.escalation_count || undefined },
|
{ href: '/escalations', label: 'Escalations', count: stats?.escalation_count || undefined },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
href: '/tickets', icon: Ticket, label: 'Tickets', shortLabel: 'Tickets',
|
||||||
|
matchPaths: ['/tickets'],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
href: '/trees', icon: GitBranch, label: 'Flows', shortLabel: 'Flows',
|
href: '/trees', icon: GitBranch, label: 'Flows', shortLabel: 'Flows',
|
||||||
badge: stats?.tree_counts.total || undefined,
|
badge: stats?.tree_counts.total || undefined,
|
||||||
@@ -120,6 +124,7 @@ export function Sidebar() {
|
|||||||
items: [
|
items: [
|
||||||
{ href: '/', icon: LayoutGrid, label: 'Dashboard', shortLabel: 'Dash' },
|
{ href: '/', icon: LayoutGrid, label: 'Dashboard', shortLabel: 'Dash' },
|
||||||
{ href: '/sessions', icon: Clock, label: 'Session History', shortLabel: 'History', badge: stats?.active_count || undefined, matchPaths: ['/sessions'] },
|
{ href: '/sessions', icon: Clock, label: 'Session History', shortLabel: 'History', badge: stats?.active_count || undefined, matchPaths: ['/sessions'] },
|
||||||
|
{ href: '/tickets', icon: Ticket, label: 'Tickets', shortLabel: 'Tickets', matchPaths: ['/tickets'] },
|
||||||
{ href: '/escalations', icon: AlertTriangle, label: 'Escalations', shortLabel: 'Escal', badge: stats?.escalation_count || undefined },
|
{ href: '/escalations', icon: AlertTriangle, label: 'Escalations', shortLabel: 'Escal', badge: stats?.escalation_count || undefined },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ const FlowPilotAnalyticsPage = lazyWithRetry(() => import('@/pages/FlowPilotAnal
|
|||||||
const ScriptBuilderPage = lazyWithRetry(() => import('@/pages/ScriptBuilderPage'))
|
const ScriptBuilderPage = lazyWithRetry(() => import('@/pages/ScriptBuilderPage'))
|
||||||
const KBAcceleratorPage = lazyWithRetry(() => import('@/pages/KBAcceleratorPage'))
|
const KBAcceleratorPage = lazyWithRetry(() => import('@/pages/KBAcceleratorPage'))
|
||||||
const SessionQueuePage = lazyWithRetry(() => import('@/pages/SessionQueuePage'))
|
const SessionQueuePage = lazyWithRetry(() => import('@/pages/SessionQueuePage'))
|
||||||
|
const TicketsPage = lazyWithRetry(() => import('@/pages/TicketsPage'))
|
||||||
const DevBranchingPage = lazyWithRetry(() => import('@/pages/DevBranchingPage'))
|
const DevBranchingPage = lazyWithRetry(() => import('@/pages/DevBranchingPage'))
|
||||||
const GuidesHubPage = lazyWithRetry(() => import('@/pages/GuidesHubPage'))
|
const GuidesHubPage = lazyWithRetry(() => import('@/pages/GuidesHubPage'))
|
||||||
const GuideDetailPage = lazyWithRetry(() => import('@/pages/GuideDetailPage'))
|
const GuideDetailPage = lazyWithRetry(() => import('@/pages/GuideDetailPage'))
|
||||||
@@ -190,6 +191,7 @@ export const router = sentryCreateBrowserRouter([
|
|||||||
{ path: 'trees/:id/navigate', element: page(TreeNavigationPage) },
|
{ path: 'trees/:id/navigate', element: page(TreeNavigationPage) },
|
||||||
{ path: 'sessions', element: page(SessionHistoryPage) },
|
{ path: 'sessions', element: page(SessionHistoryPage) },
|
||||||
{ path: 'sessions/:id', element: page(SessionDetailPage) },
|
{ path: 'sessions/:id', element: page(SessionDetailPage) },
|
||||||
|
{ path: 'tickets', element: page(TicketsPage) },
|
||||||
{ path: 'shares', element: page(MySharesPage) },
|
{ path: 'shares', element: page(MySharesPage) },
|
||||||
{ path: 'analytics', element: page(TeamAnalyticsPage) },
|
{ path: 'analytics', element: page(TeamAnalyticsPage) },
|
||||||
{ path: 'analytics/me', element: page(MyAnalyticsPage) },
|
{ path: 'analytics/me', element: page(MyAnalyticsPage) },
|
||||||
|
|||||||
Reference in New Issue
Block a user