213 lines
4.6 KiB
CSS
213 lines
4.6 KiB
CSS
:root {
|
|
color-scheme: light dark;
|
|
--jv-bg: #ffffff;
|
|
--jv-fg: #24292f;
|
|
--jv-muted: #6e7781;
|
|
--jv-border: #d0d7de;
|
|
--jv-guide: #d8dee4;
|
|
--jv-hover: #f3f4f6;
|
|
--jv-control-bg: #f6f8fa;
|
|
--jv-control-hover: #eaeef2;
|
|
--jv-string: #16803a;
|
|
--jv-number: #0969da;
|
|
--jv-boolean: #bc4c00;
|
|
--jv-null: #6e7781;
|
|
--jv-key: #8250df;
|
|
--jv-match: #fff3a3;
|
|
}
|
|
|
|
* { box-sizing: border-box; }
|
|
|
|
html,
|
|
body {
|
|
margin: 0;
|
|
min-height: 100%;
|
|
background: var(--jv-bg);
|
|
color: var(--jv-fg);
|
|
}
|
|
|
|
body.json-viewer-page {
|
|
font-family: Menlo, Consolas, "Liberation Mono", monospace;
|
|
font-size: 14px;
|
|
line-height: 1.55;
|
|
}
|
|
|
|
.json-viewer { min-height: 100vh; }
|
|
|
|
.json-viewer__toolbar {
|
|
position: sticky;
|
|
z-index: 10;
|
|
top: 0;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 10px 14px;
|
|
border-bottom: 1px solid var(--jv-border);
|
|
background: color-mix(in srgb, var(--jv-bg) 94%, transparent);
|
|
box-shadow: 0 1px 4px rgb(0 0 0 / 8%);
|
|
}
|
|
|
|
.json-viewer__title {
|
|
margin-right: auto;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.json-viewer__button,
|
|
.json-viewer__search {
|
|
min-height: 32px;
|
|
border: 1px solid var(--jv-border);
|
|
border-radius: 6px;
|
|
background: var(--jv-control-bg);
|
|
color: var(--jv-fg);
|
|
font: inherit;
|
|
}
|
|
|
|
.json-viewer__button {
|
|
padding: 4px 10px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.json-viewer__button:hover { background: var(--jv-control-hover); }
|
|
.json-viewer__button:focus-visible,
|
|
.json-viewer__search:focus-visible {
|
|
outline: 2px solid var(--jv-number);
|
|
outline-offset: 1px;
|
|
}
|
|
|
|
.json-viewer__helper-apps {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
}
|
|
|
|
.json-viewer__helper-label {
|
|
color: var(--jv-muted);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.json-viewer__helper-link {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.json-viewer__search {
|
|
width: min(280px, 50vw);
|
|
padding: 5px 10px;
|
|
}
|
|
|
|
.json-viewer__status {
|
|
min-width: 9em;
|
|
color: var(--jv-muted);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.json-viewer__tree {
|
|
overflow-x: auto;
|
|
overflow-y: visible;
|
|
padding: 14px 16px 40px;
|
|
}
|
|
|
|
.json-viewer__node { min-width: 0; }
|
|
|
|
.json-viewer__children {
|
|
margin-left: 8px;
|
|
padding-left: 17px;
|
|
border-left: 1px solid var(--jv-guide);
|
|
}
|
|
|
|
.json-viewer__node.is-collapsed > .json-viewer__children { display: none; }
|
|
|
|
.json-viewer__row {
|
|
display: flex;
|
|
align-items: baseline;
|
|
min-height: 23px;
|
|
padding: 1px 7px 1px 2px;
|
|
border-radius: 4px;
|
|
white-space: pre;
|
|
}
|
|
|
|
.json-viewer__row:hover { background: var(--jv-hover); }
|
|
.json-viewer__node.is-filtered-out { display: none; }
|
|
.json-viewer__node.is-match > .json-viewer__row { background: var(--jv-match); }
|
|
|
|
.json-viewer__toggle {
|
|
width: 18px;
|
|
flex: 0 0 18px;
|
|
padding: 0;
|
|
border: 0;
|
|
background: transparent;
|
|
color: var(--jv-muted);
|
|
cursor: pointer;
|
|
font: inherit;
|
|
line-height: 1;
|
|
}
|
|
|
|
.json-viewer__toggle::before { content: "▼"; }
|
|
.json-viewer__node.is-collapsed > .json-viewer__row > .json-viewer__toggle::before { content: "▶"; }
|
|
.json-viewer__toggle--empty { cursor: default; }
|
|
.json-viewer__toggle--empty::before { content: ""; }
|
|
|
|
.json-viewer__key { color: var(--jv-key); }
|
|
.json-viewer__key::after { content: ":"; color: var(--jv-fg); }
|
|
.json-viewer__punctuation { color: var(--jv-fg); }
|
|
.json-viewer__string {
|
|
min-width: 0;
|
|
color: var(--jv-string);
|
|
white-space: pre-wrap;
|
|
word-wrap: break-word;
|
|
overflow-wrap: break-word;
|
|
word-break: break-all;
|
|
}
|
|
.json-viewer__number { color: var(--jv-number); }
|
|
.json-viewer__boolean { color: var(--jv-boolean); font-weight: 600; }
|
|
.json-viewer__null { color: var(--jv-null); font-style: italic; }
|
|
|
|
.json-viewer__badge {
|
|
display: none;
|
|
margin-left: 7px;
|
|
padding: 0 6px;
|
|
border: 1px solid var(--jv-border);
|
|
border-radius: 999px;
|
|
color: var(--jv-muted);
|
|
font-size: 11px;
|
|
line-height: 17px;
|
|
}
|
|
|
|
.json-viewer__node.is-collapsed > .json-viewer__row > .json-viewer__badge { display: inline; }
|
|
|
|
.json-viewer__preview {
|
|
display: none;
|
|
margin-left: 7px;
|
|
color: var(--jv-muted);
|
|
}
|
|
|
|
.json-viewer__node.is-collapsed > .json-viewer__row > .json-viewer__preview { display: inline; }
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:root {
|
|
--jv-bg: #1e1e1e;
|
|
--jv-fg: #d4d4d4;
|
|
--jv-muted: #9b9b9b;
|
|
--jv-border: #454545;
|
|
--jv-guide: #3f3f46;
|
|
--jv-hover: #2a2d2e;
|
|
--jv-control-bg: #2d2d30;
|
|
--jv-control-hover: #3a3d41;
|
|
--jv-string: #6a9955;
|
|
--jv-number: #569cd6;
|
|
--jv-boolean: #ce9178;
|
|
--jv-null: #9b9b9b;
|
|
--jv-key: #9cdcfe;
|
|
--jv-match: #514b20;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 700px) {
|
|
.json-viewer__title { width: 100%; }
|
|
.json-viewer__search { order: 2; width: 100%; }
|
|
.json-viewer__status { order: 3; }
|
|
.json-viewer__helper-apps { width: 100%; flex-wrap: wrap; }
|
|
}
|