Skip to content

Commit ae2083e

Browse files
authored
add docs (#5)
1 parent e616400 commit ae2083e

File tree

13 files changed

+8099
-1329
lines changed

13 files changed

+8099
-1329
lines changed

.changeset/beige-wombats-live.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'react-json-friendly-viewer': minor
3+
---
4+
5+
Add more documentations

.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@ node_modules/
44
dist/
55
coverage/
66
# Local Netlify folder
7-
.netlify
7+
.netlify
8+
.showroom_cache
9+
showroom/

README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
# react-json-friendly-viewer
22

3-
This is the monorepo for [`react-json-friendly-viewer`](packages/react-json-friendly-viewer/README.md).
3+
Monorepo for [`react-json-friendly-viewer`](packages/react-json-friendly-viewer/README.md).
4+
5+
Refer to [documentations](https://react-json-friendly-viewer.netlify.app/) for more details.

examples/playground/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"react-json-friendly-viewer": "workspace:*"
1616
},
1717
"devDependencies": {
18-
"@types/react": "^18.0.15",
18+
"@types/react": "^18.0.16",
1919
"@types/react-dom": "^18.0.6",
2020
"@vitejs/plugin-react": "^1.3.2",
2121
"typescript": "^4.7.4",

package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@
1212
"scripts": {
1313
"build": "pnpm -r run build",
1414
"dev": "pnpm -r --stream --parallel run dev",
15-
"clean": "pnpm -r run clean"
15+
"clean": "pnpm -r run clean",
16+
"build:docs": "pnpm -r run showroom:build"
1617
},
1718
"devDependencies": {
18-
"@changesets/cli": "^2.24.0",
19+
"@changesets/cli": "^2.24.2",
1920
"netlify-cli": "^10.11.1",
2021
"prettier": "^2.7.1",
2122
"rimraf": "^3.0.2"

packages/react-json-friendly-viewer/README.md

+1-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Beautifully display your JSON data for everyone.
44

5-
[Demo](https://react-json-friendly-viewer.netlify.app/)
5+
[Documentations](https://react-json-friendly-viewer.netlify.app/)
66

77
```bash
88
npm install react-json-friendly-viewer
@@ -40,7 +40,3 @@ import 'react-json-friendly-viewer/style.css';
4040
}}
4141
/>;
4242
```
43-
44-
The following table will be displayed:
45-
46-
![Display result of code above](docs/screenshot.png)
Binary file not shown.

packages/react-json-friendly-viewer/package.json

+8-4
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,24 @@
2929
"dev": "vite build --watch",
3030
"test": "jest",
3131
"test:ci": "jest --runInBand --ci --coverage",
32-
"clean": "rimraf dist coverage"
32+
"clean": "rimraf dist coverage",
33+
"showroom:dev": "react-showroom dev",
34+
"showroom:build": "react-showroom build"
3335
},
3436
"devDependencies": {
3537
"@testing-library/react": "^13.3.0",
3638
"@types/jest": "^28.1.6",
37-
"@types/react": "^18.0.15",
39+
"@types/react": "^18.0.16",
3840
"@vanilla-extract/css": "^1.7.2",
3941
"@vanilla-extract/vite-plugin": "^3.2.1",
42+
"@vanilla-extract/webpack-plugin": "^2.1.11",
4043
"@vitejs/plugin-react": "^1.3.2",
44+
"date-fns": "^2.29.1",
4145
"jest": "^28.1.3",
4246
"jest-environment-jsdom": "^28.1.3",
4347
"react": "^18.2.0",
4448
"react-dom": "^18.2.0",
49+
"react-showroom": "^2.3.0",
4550
"ts-jest": "^28.0.7",
4651
"typescript": "^4.7.4",
4752
"vite": "^2.9.14",
@@ -55,8 +60,7 @@
5560
"access": "public"
5661
},
5762
"files": [
58-
"dist",
59-
"docs"
63+
"dist"
6064
],
6165
"dependencies": {
6266
"@radix-ui/react-id": "^1.0.0",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// @ts-check
2+
const { defineConfig } = require('react-showroom');
3+
const { VanillaExtractPlugin } = require('@vanilla-extract/webpack-plugin');
4+
5+
module.exports = defineConfig({
6+
componentsEntry: {
7+
name: 'react-json-friendly-viewer',
8+
path: './src/react-json-friendly-viewer.ts',
9+
dts: false,
10+
},
11+
components: 'src/json-pretty-viewer/**/*.tsx',
12+
webpackConfig: {
13+
plugins: [new VanillaExtractPlugin()],
14+
},
15+
theme: {
16+
title: 'react-json-friendly-viewer',
17+
},
18+
url: 'https://react-json-friendly-viewer.netlify.app',
19+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
## Basic Example
2+
3+
Pass any javascript json object to `json` props and it will be rendered in a user-friendly table.
4+
5+
```tsx
6+
import { JsonPrettyViewer } from 'react-json-friendly-viewer';
7+
8+
<JsonPrettyViewer
9+
json={{
10+
name: 'react-json-friendly-viewer',
11+
private: false,
12+
changes: 1000,
13+
dependencies: {
14+
react: 'latest',
15+
},
16+
createdAt: '1990-10-13T10:51:05.570Z',
17+
hobbies: ['reading', 'eating'],
18+
experiences: [
19+
{
20+
job: 'janitor',
21+
projects: [
22+
{
23+
venue: 'National Museum',
24+
},
25+
],
26+
},
27+
],
28+
referrer: null,
29+
}}
30+
/>;
31+
```
32+
33+
## Array Example
34+
35+
Array can be displayed as well.
36+
37+
```tsx
38+
import { JsonPrettyViewer } from 'react-json-friendly-viewer';
39+
40+
<JsonPrettyViewer
41+
json={[
42+
{
43+
firstName: 'Malcolm',
44+
isTired: true,
45+
},
46+
{
47+
firstName: 'Steve',
48+
isTired: false,
49+
},
50+
]}
51+
/>;
52+
```
53+
54+
## Playground
55+
56+
Use the panel at the bottom to tweak the props.
57+
58+
```tsx
59+
import { usePropsEditor } from 'react-showroom/client';
60+
61+
const Demo = () => {
62+
const propsEditor = usePropsEditor();
63+
64+
return (
65+
<JsonPrettyViewer
66+
{...propsEditor.props}
67+
json={{
68+
name: 'react-json-friendly-viewer',
69+
private: false,
70+
changes: 1000,
71+
dependencies: {
72+
react: 'latest',
73+
},
74+
createdAt: '1990-10-13T10:51:05.570Z',
75+
hobbies: ['reading', 'eating'],
76+
experiences: [
77+
{
78+
job: 'janitor',
79+
projects: [
80+
{
81+
venue: 'National Museum',
82+
},
83+
],
84+
},
85+
],
86+
referrer: null,
87+
}}
88+
/>
89+
);
90+
};
91+
92+
<Demo />;
93+
```
94+
95+
## Custom Format
96+
97+
Pass `formatter` props to change how values are displayed.
98+
99+
```tsx
100+
import { format as formatDate } from 'date-fns';
101+
import {
102+
JsonPrettyViewer,
103+
Formatter,
104+
prettifyLabel,
105+
} from 'react-json-friendly-viewer';
106+
107+
const datePattern = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
108+
109+
const formatter: Partial<Formatter> = {
110+
string: (value: string) => {
111+
return datePattern.test(value)
112+
? formatDate(new Date(value), 'd MMM yyyy, h:mm a')
113+
: value;
114+
},
115+
arrayItem: (index, parentName) =>
116+
prettifyLabel(`${parentName || 'Item'} ${index + 1}`),
117+
none: () => `(None)`,
118+
};
119+
120+
<JsonPrettyViewer
121+
formatter={formatter}
122+
json={{
123+
name: 'react-json-friendly-viewer',
124+
private: false,
125+
changes: 1000,
126+
dependencies: {
127+
react: 'latest',
128+
},
129+
createdAt: '1990-10-13T10:51:05.570Z',
130+
hobbies: ['reading', 'eating'],
131+
experiences: [
132+
{
133+
job: 'janitor',
134+
projects: [
135+
{
136+
venue: 'National Museum',
137+
},
138+
],
139+
},
140+
],
141+
referrer: null,
142+
}}
143+
/>;
144+
```

packages/react-json-friendly-viewer/src/theme.css.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,13 @@ const fontSize = {
3333
'4xl': '2.25rem',
3434
};
3535

36-
export const [themeClass, vars] = createTheme({
36+
const themeTokens = {
3737
colors,
3838
spacing,
3939
fontSize,
40-
});
40+
};
41+
42+
export const [themeClass, vars] = createTheme(themeTokens);
4143

4244
globalStyle(`${themeClass} *`, {
4345
boxSizing: 'border-box',

packages/react-json-friendly-viewer/tsconfig.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
"esModuleInterop": true,
1616
"noImplicitAny": true,
1717
"noUnusedLocals": true,
18-
"outDir": "dist"
18+
"outDir": "dist",
19+
"declaration": true
1920
},
2021
"include": ["src"]
2122
}

0 commit comments

Comments
 (0)