@@ -12,6 +12,7 @@ interface JsonViewProps {
1212 initialExpandDepth ?: number ;
1313 className ?: string ;
1414 withCopyButton ?: boolean ;
15+ isError ?: boolean ;
1516}
1617
1718const JsonView = memo (
@@ -21,6 +22,7 @@ const JsonView = memo(
2122 initialExpandDepth = 3 ,
2223 className,
2324 withCopyButton = true ,
25+ isError = false ,
2426 } : JsonViewProps ) => {
2527 const { toast } = useToast ( ) ;
2628 const [ copied , setCopied ] = useState ( false ) ;
@@ -86,6 +88,7 @@ const JsonView = memo(
8688 name = { name }
8789 depth = { 0 }
8890 initialExpandDepth = { initialExpandDepth }
91+ isError = { isError }
8992 />
9093 </ div >
9194 </ div >
@@ -100,17 +103,25 @@ interface JsonNodeProps {
100103 name ?: string ;
101104 depth : number ;
102105 initialExpandDepth : number ;
106+ isError ?: boolean ;
103107}
104108
105109const JsonNode = memo (
106- ( { data, name, depth = 0 , initialExpandDepth } : JsonNodeProps ) => {
110+ ( {
111+ data,
112+ name,
113+ depth = 0 ,
114+ initialExpandDepth,
115+ isError = false ,
116+ } : JsonNodeProps ) => {
107117 const [ isExpanded , setIsExpanded ] = useState ( depth < initialExpandDepth ) ;
108118 const [ typeStyleMap ] = useState < Record < string , string > > ( {
109119 number : "text-blue-600" ,
110120 boolean : "text-amber-600" ,
111121 null : "text-purple-600" ,
112122 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" ,
114125 default : "text-gray-700" ,
115126 } ) ;
116127 const dataType = getDataType ( data ) ;
@@ -214,7 +225,14 @@ const JsonNode = memo(
214225 { name } :
215226 </ span >
216227 ) }
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 >
218236 </ div >
219237 ) ;
220238 }
@@ -228,8 +246,8 @@ const JsonNode = memo(
228246 ) }
229247 < pre
230248 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 " ,
233251 ) }
234252 onClick = { ( ) => setIsExpanded ( ! isExpanded ) }
235253 title = { isExpanded ? "Click to collapse" : "Click to expand" }
0 commit comments