@@ -12,6 +12,7 @@ interface JsonViewProps {
12
12
initialExpandDepth ?: number ;
13
13
className ?: string ;
14
14
withCopyButton ?: boolean ;
15
+ isError ?: boolean ;
15
16
}
16
17
17
18
const JsonView = memo (
@@ -21,6 +22,7 @@ const JsonView = memo(
21
22
initialExpandDepth = 3 ,
22
23
className,
23
24
withCopyButton = true ,
25
+ isError = false ,
24
26
} : JsonViewProps ) => {
25
27
const { toast } = useToast ( ) ;
26
28
const [ copied , setCopied ] = useState ( false ) ;
@@ -86,6 +88,7 @@ const JsonView = memo(
86
88
name = { name }
87
89
depth = { 0 }
88
90
initialExpandDepth = { initialExpandDepth }
91
+ isError = { isError }
89
92
/>
90
93
</ div >
91
94
</ div >
@@ -100,17 +103,25 @@ interface JsonNodeProps {
100
103
name ?: string ;
101
104
depth : number ;
102
105
initialExpandDepth : number ;
106
+ isError ?: boolean ;
103
107
}
104
108
105
109
const JsonNode = memo (
106
- ( { data, name, depth = 0 , initialExpandDepth } : JsonNodeProps ) => {
110
+ ( {
111
+ data,
112
+ name,
113
+ depth = 0 ,
114
+ initialExpandDepth,
115
+ isError = false ,
116
+ } : JsonNodeProps ) => {
107
117
const [ isExpanded , setIsExpanded ] = useState ( depth < initialExpandDepth ) ;
108
118
const [ typeStyleMap ] = useState < Record < string , string > > ( {
109
119
number : "text-blue-600" ,
110
120
boolean : "text-amber-600" ,
111
121
null : "text-purple-600" ,
112
122
undefined : "text-gray-600" ,
113
- string : "text-green-600 break-all whitespace-pre-wrap" ,
123
+ string : "text-green-600 group-hover:text-green-500" ,
124
+ error : "text-red-600 group-hover:text-red-500" ,
114
125
default : "text-gray-700" ,
115
126
} ) ;
116
127
const dataType = getDataType ( data ) ;
@@ -214,7 +225,14 @@ const JsonNode = memo(
214
225
{ name } :
215
226
</ span >
216
227
) }
217
- < pre className = { typeStyleMap . string } > "{ value } "</ pre >
228
+ < pre
229
+ className = { clsx (
230
+ typeStyleMap . string ,
231
+ "break-all whitespace-pre-wrap" ,
232
+ ) }
233
+ >
234
+ "{ value } "
235
+ </ pre >
218
236
</ div >
219
237
) ;
220
238
}
@@ -228,8 +246,8 @@ const JsonNode = memo(
228
246
) }
229
247
< pre
230
248
className = { clsx (
231
- typeStyleMap . string ,
232
- "cursor-pointer group-hover:text-green-500 " ,
249
+ isError ? typeStyleMap . error : typeStyleMap . string ,
250
+ "cursor-pointer break-all whitespace-pre-wrap " ,
233
251
) }
234
252
onClick = { ( ) => setIsExpanded ( ! isExpanded ) }
235
253
title = { isExpanded ? "Click to collapse" : "Click to expand" }
0 commit comments