Ember, not flame
High-saturation syntax colors burn bright but exhaust your eyes. Hearth keeps all highlight colors at 40–60% saturation — warm like cooling coal, not blinding like fire.
HearthCode.dev / Code by Hearthlight
HearthCode is a warm, low-glare VSCode theme system: code by hearthlight on blackboard dark and parchment light.
HearthCode Philosophy
High-saturation syntax colors burn bright but exhaust your eyes. Hearth keeps all highlight colors at 40–60% saturation — warm like cooling coal, not blinding like fire.
Pure black backgrounds cause halation around white text, blurring edges. Hearth Dark (default) uses #23201c, Dark Soft uses #2a2723, and Hearth Light uses #efe6d8 for a warmer low-glare paper tone.
Brightness maps directly to semantic weight: keywords are brightest, functions next, variables after, and comments deliberately fade into the background.
The entire palette is warm-toned, below 4500K. High blue-light content strains the retina. A warm coding environment is easier on your eyes over long sessions.
Color System
HearthCode Preview
// async data fetching with full type safety
import { createContext, useContext } from 'react'
interface ApiResponse<T> {
data: T
status: number
ok: boolean
}
async function request<T>(
url: string,
options?: RequestInit
): Promise<ApiResponse<T>> {
const res = await fetch(url, options)
const data = await res.json() as T
return { data, status: res.status, ok: res.ok }
}
const BASE = 'https://api.hearthcode.dev'
const TIMEOUT = 5_000// async data fetching with full type safety
import { createContext, useContext } from 'react'
interface ApiResponse<T> {
data: T
status: number
ok: boolean
}
async function request<T>(
url: string,
options?: RequestInit
): Promise<ApiResponse<T>> {
const res = await fetch(url, options)
const data = await res.json() as T
return { data, status: res.status, ok: res.ok }
}
const BASE = 'https://api.hearthcode.dev'
const TIMEOUT = 5_000// async data fetching with full type safety
import { createContext, useContext } from 'react'
interface ApiResponse<T> {
data: T
status: number
ok: boolean
}
async function request<T>(
url: string,
options?: RequestInit
): Promise<ApiResponse<T>> {
const res = await fetch(url, options)
const data = await res.json() as T
return { data, status: res.status, ok: res.ok }
}
const BASE = 'https://api.hearthcode.dev'
const TIMEOUT = 5_000