@@ -131,6 +131,88 @@ export default function Demo() {
131131}
132132```
133133
134+ Online custom style example, please check in the [ documentation website] ( https://uiwjs.github.io/react-json-view/ )
135+
136+ ``` tsx mdx:preview
137+ import React , { useState , useRef } from ' react' ;
138+ import Colorful from ' @uiw/react-color-colorful' ;
139+ import JsonView from ' @uiw/react-json-view' ;
140+
141+ const object = {
142+ avatar: ' https://i.imgur.com/MK3eW3As.jpg' ,
143+ string: ' Lorem ipsum dolor sit amet' ,
144+ integer: 42 ,
145+ float: 114.514 ,
146+ bigint: 10086n ,
147+ null: null ,
148+ undefined ,
149+ timer: 0 ,
150+ date: new Date (' Tue Sep 13 2022 14:07:44 GMT-0500 (Central Daylight Time)' ),
151+ array: [19 , 100.86 , ' test' , NaN , Infinity ],
152+ nestedArray: [
153+ [1 , 2 ],
154+ [3 , 4 ],
155+ ],
156+ object: {
157+ ' first-child' : true ,
158+ ' second-child' : false ,
159+ ' last-child' : null ,
160+ },
161+ string_number: ' 1234' ,
162+ }
163+ const customTheme = {
164+ ' --w-rjv-color' : ' #9cdcfe' ,
165+ ' --w-rjv-background-color' : ' #1e1e1e' ,
166+ ' --w-rjv-border-left' : ' 1px solid #323232' ,
167+ ' --w-rjv-arrow-color' : ' var(--w-rjv-color)' ,
168+ ' --w-rjv-info-color' : ' #656565' ,
169+
170+ ' --w-rjv-curlybraces-color' : ' #d4d4d4' ,
171+ ' --w-rjv-brackets-color' : ' #d4d4d4' ,
172+
173+ ' --w-rjv-type-string-color' : ' #ce9178' ,
174+ ' --w-rjv-type-int-color' : ' #268bd2' ,
175+ ' --w-rjv-type-float-color' : ' #859900' ,
176+ ' --w-rjv-type-bigint-color' : ' #268bd2' ,
177+ ' --w-rjv-type-boolean-color' : ' #559bd4' ,
178+ ' --w-rjv-type-date-color' : ' #586e75' ,
179+ ' --w-rjv-type-null-color' : ' #d33682' ,
180+ ' --w-rjv-type-nan-color' : ' #859900' ,
181+ ' --w-rjv-type-undefined-color' : ' #586e75' ,
182+ };
183+
184+ export default function Demo() {
185+ const [cssvar, setCssvar] = useState (' --w-rjv-background-color' );
186+ const [hex, setHex] = useState (" #1e1e1e" );
187+ const [theme, setTheme] = useState (customTheme );
188+ const onChange = ({ hexa }) => {
189+ const value = cssvar === ' --w-rjv-border-left' ? ` 1px solid ${hexa } ` : hexa ;
190+ setHex (hexa );
191+ setTheme ({ ... theme , [cssvar ]: value });
192+ };
193+ return (
194+ <React.Fragment >
195+ <div style = { { display: ' flex' , gap: ' 1rem' }} >
196+ <JsonView value = { object } keyName = " root" style = { { flex: 1 , ... theme }} />
197+ <div >
198+ <Colorful color = { hex } onChange = { onChange } />
199+ <div style = { { display: ' flex' , gap: ' 0.4rem' , flexWrap: ' wrap' }} >
200+ { Object .keys (customTheme ).map ((varname , idx ) => {
201+ const click = () => setCssvar (varname );
202+ const active = cssvar === varname ? ' #a8a8a8' : ' ' ;
203+ return <button key = { idx } style = { { background: active }} onClick = { click } >{ varname } </button >
204+ })}
205+ </div >
206+ </div >
207+ </div >
208+ Copy the theme configuration below into your project.
209+ <pre >
210+ { JSON .stringify (theme , null , 2 )}
211+ </pre >
212+ </React.Fragment >
213+ )
214+ }
215+ ```
134216## Render
135217
136218``` tsx mdx:preview
0 commit comments