Skip to content

Dark / Light Mode

Vue3 JSON Viewer ships two built-in themes. Switch between them with the darkMode prop.

Basic Usage

vue
<script setup lang="ts">
  import { ref } from 'vue';
  import { JsonViewer } from '@anilkumarthakur/vue3-json-viewer';
  import '@anilkumarthakur/vue3-json-viewer/styles.css';

  const isDarkMode = ref(true);
  const data = { message: 'Hello World', count: 42, active: true };
</script>

<template>
  <button @click="isDarkMode = !isDarkMode">Toggle Theme</button>
  <JsonViewer
    :data="data"
    :dark-mode="isDarkMode"
  />
</template>

Try the toggle:

obj{
"message": "Hello World",
"count": 42,
"active": true,
"nested":obj{
"colors":3[
"green",
"peach",
"yellow"
]
}
}

Dark Mode (Default)

vue
<JsonViewer :data="data" :dark-mode="true" />

A Catppuccin-inspired palette:

  • Background — gradient #1e1e2e → #2d2d3f
  • Text#cdd6f4
  • Strings#a6e3a1 · Numbers#fab387 · Booleans#f9e2af
  • Null#f38ba8

Light Mode

vue
<JsonViewer :data="data" :dark-mode="false" />

A clean, high-contrast palette:

  • Background — gradient #f8f9fa → #e9ecef
  • Text#343a40
  • Strings#2f9e44 · Numbers#e8590c · Booleans#f59f00
  • Null#e03131

Following System Preference

vue
<script setup lang="ts">
  import { ref, onMounted, onUnmounted } from 'vue';
  import { JsonViewer } from '@anilkumarthakur/vue3-json-viewer';
  import '@anilkumarthakur/vue3-json-viewer/styles.css';

  const isDarkMode = ref(true);
  let mq: MediaQueryList | null = null;
  const update = (e: MediaQueryListEvent | MediaQueryList) => {
    isDarkMode.value = e.matches;
  };

  onMounted(() => {
    mq = window.matchMedia('(prefers-color-scheme: dark)');
    update(mq);
    mq.addEventListener('change', update);
  });
  onUnmounted(() => mq?.removeEventListener('change', update));

  const data = { theme: 'follows your OS setting' };
</script>

<template>
  <JsonViewer
    :data="data"
    :dark-mode="isDarkMode"
  />
</template>

Full Color Reference

Dark Mode

Data TypeColorHex
StringGreen#a6e3a1
NumberPeach#fab387
BooleanYellow#f9e2af
NullPink#f38ba8
DateTeal#94e2d5
RegExpPurple#cba6f7
Object KeyPink#f5c2e7
Array KeyBlue#89b4fa

Light Mode

Data TypeColorHex
StringGreen#2f9e44
NumberOrange#e8590c
BooleanAmber#f59f00
NullRed#e03131
DateTeal#0c8599
RegExpPurple#7048e8
Object KeyPink#c2255c
Array KeyBlue#1971c2

Rainbow Nesting

Bracket colors cycle by nesting depth:

  • Dark: Red → Peach → Yellow → Green → Sky → Mauve
  • Light: Red → Orange → Yellow → Green → Cyan → Purple

Custom Colors

There is no color-theme prop yet. To recolor values, override the jv-* classes — see Custom Styling.

Released under the MIT License.