vue-json-pretty
vue-json-pretty copied to clipboard
Dark / Light mode
I found your code very useful and adjusted colors to darkmode. You can use these changes in your library
html.light {
--blue: #1890ff;
--blue-border: #0076e4;
--light-gray: #bfcbd9;
--white: #fff;
--dark-gray: #2e4558;
--light-gray-hover: #e6f7ff;
--undefined: #d55fde;
--number: #1d8ce0;
--string: #13ce66;
}
html.dark {
--blue: #1890ff;
--blue-border: #0076e4;
--light-gray: rgba(191, 203, 217, 0.25);
--white: #fff;
--dark-gray: #2e4558;
--light-gray-hover: rgba(230, 247, 255, 0.09);
--undefined: #d55fde;
--number: #1d8ce0;
--string: #13ce66;
}
.vjs-tree-brackets {
cursor: pointer;
}
.vjs-tree-brackets:hover {
color: var(--blue);
}
.vjs-check-controller {
position: absolute;
left: 0;
}
.vjs-check-controller.is-checked .vjs-check-controller-inner {
background-color: var(--blue);
border-color: var(--blue-border);
}
.vjs-check-controller.is-checked .vjs-check-controller-inner.is-checkbox:after {
transform: rotate(45deg) scaleY(1);
}
.vjs-check-controller.is-checked .vjs-check-controller-inner.is-radio:after {
transform: translate(-50%, -50%) scale(1);
}
.vjs-check-controller .vjs-check-controller-inner {
display: inline-block;
position: relative;
border: 1px solid var(--light-gray);
border-radius: 2px;
vertical-align: middle;
box-sizing: border-box;
width: 16px;
height: 16px;
background-color: var(--white);
z-index: 1;
cursor: pointer;
transition:
border-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46),
background-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46);
}
.vjs-check-controller .vjs-check-controller-inner:after {
box-sizing: content-box;
content: '';
border: 2px solid var(--white);
border-left: 0;
border-top: 0;
height: 8px;
left: 4px;
position: absolute;
top: 1px;
transform: rotate(45deg) scaleY(0);
width: 4px;
transition: transform 0.15s cubic-bezier(0.71, -0.46, 0.88, 0.6) 0.05s;
transform-origin: center;
}
.vjs-check-controller .vjs-check-controller-inner.is-radio {
border-radius: 100%;
}
.vjs-check-controller .vjs-check-controller-inner.is-radio:after {
border-radius: 100%;
height: 4px;
background-color: var(--white);
left: 50%;
top: 50%;
}
.vjs-check-controller .vjs-check-controller-original {
opacity: 0;
outline: none;
position: absolute;
z-index: -1;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: 0;
}
.vjs-carets {
position: absolute;
right: 0;
cursor: pointer;
}
.vjs-carets svg {
transition: transform 0.3s;
}
.vjs-carets:hover {
color: var(--blue);
}
.vjs-carets-close {
transform: rotate(-90deg);
}
.vjs-tree-node {
display: flex;
position: relative;
line-height: 20px;
}
.vjs-tree-node.has-carets {
padding-left: 15px;
}
.vjs-tree-node.has-carets.has-selector,
.vjs-tree-node.has-selector {
padding-left: 30px;
}
.vjs-tree-node.is-highlight,
.vjs-tree-node:hover {
background-color: var(--light-gray-hover);
}
.vjs-tree-node .vjs-indent {
display: flex;
position: relative;
}
.vjs-tree-node .vjs-indent-unit {
width: 1em;
}
.vjs-tree-node .vjs-indent-unit.has-line {
border-left: 1px dashed var(--light-gray);
}
.vjs-tree-node.dark.is-highlight,
.vjs-tree-node.dark:hover {
background-color: var(--dark-gray);
}
.vjs-node-index {
position: absolute;
right: 100%;
margin-right: 4px;
user-select: none;
}
.vjs-colon {
white-space: pre;
}
.vjs-comment {
color: var(--light-gray);
}
.vjs-value {
word-break: break-word;
}
.vjs-value-null,
.vjs-value-undefined {
color: var(--undefined);
}
.vjs-value-boolean,
.vjs-value-number {
color: var(--number);
}
.vjs-value-string {
color: var(--string);
}
.vjs-tree {
font-family:
Monaco,
Menlo,
Consolas,
Bitstream Vera Sans Mono,
monospace;
font-size: 14px;
text-align: left;
}
.vjs-tree.is-virtual {
overflow: auto;
}
.vjs-tree.is-virtual .vjs-tree-node {
white-space: nowrap;
}