1+ "use client"
2+
3+ import JsonView from "@uiw/react-json-view"
4+
5+ import {
6+ AlertTriangle ,
7+ RotateCcw ,
8+ } from "lucide-react"
9+
10+ import { ReplayPanel } from "./replay-panel"
11+
12+ type Issue = {
13+ provider : string
14+ route : string
15+ error : string
16+ retries : number
17+ severity : string
18+ timestamp : string
19+ }
20+
21+ type Props = {
22+ issue : Issue | null
23+ }
24+
25+ export function IssueInspector ( {
26+ issue,
27+ } : Props ) {
28+
29+ if ( ! issue ) {
30+ return (
31+ < div className = "flex h-full items-center justify-center text-sm text-muted-foreground" >
32+ Select an issue
33+ </ div >
34+ )
35+ }
36+
37+ return (
38+ < div className = "flex h-full flex-col" >
39+
40+ < div className = "border-b border-border p-5" >
41+
42+ < div className = "flex items-center gap-3" >
43+
44+ < div
45+ className = "
46+ flex h-11 w-11 items-center justify-center
47+ rounded-xl border border-rose-500/20
48+ bg-rose-500/10
49+ "
50+ >
51+ < AlertTriangle className = "h-5 w-5 text-rose-400" />
52+ </ div >
53+
54+ < div >
55+
56+ < h2 className = "text-lg font-semibold" >
57+ Issue Inspector
58+ </ h2 >
59+
60+ < p className = "mt-1 text-sm text-muted-foreground" >
61+ delivery failure diagnostics
62+ </ p >
63+
64+ </ div >
65+
66+ </ div >
67+
68+ </ div >
69+
70+ < div className = "space-y-3 border-b border-border p-5 text-sm" >
71+
72+ < div className = "flex justify-between" >
73+ < span className = "text-muted-foreground" >
74+ Provider
75+ </ span >
76+
77+ < span >
78+ { issue . provider }
79+ </ span >
80+ </ div >
81+
82+ < div className = "flex justify-between" >
83+ < span className = "text-muted-foreground" >
84+ Retries
85+ </ span >
86+
87+ < span >
88+ { issue . retries }
89+ </ span >
90+ </ div >
91+
92+ < div className = "flex justify-between" >
93+ < span className = "text-muted-foreground" >
94+ Severity
95+ </ span >
96+
97+ < span className = "text-rose-400" >
98+ { issue . severity }
99+ </ span >
100+ </ div >
101+
102+ </ div >
103+
104+ < div className = "flex-1 overflow-auto p-5" >
105+
106+ < div className = "mb-4 flex items-center gap-2" >
107+
108+ < RotateCcw className = "h-4 w-4 text-orange-400" />
109+
110+ < h3 className = "text-sm font-semibold" >
111+ Failure Payload
112+ </ h3 >
113+
114+ </ div >
115+
116+ < div
117+ className = "
118+ overflow-hidden rounded-xl
119+ border border-border
120+ bg-background/40 p-4
121+ "
122+ >
123+
124+ < JsonView
125+ value = { {
126+ provider : issue . provider ,
127+ route : issue . route ,
128+ error : issue . error ,
129+ retries : issue . retries ,
130+ } }
131+ displayDataTypes = { false }
132+ displayObjectSize = { false }
133+ />
134+
135+ </ div >
136+
137+ </ div >
138+
139+ < ReplayPanel />
140+
141+ </ div >
142+ )
143+ }
0 commit comments