Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hue Theme logo

Hue Theme

A portable theme design system rooted in the atmosphere and visual culture of Huế, Việt Nam.

One versioned token contract → many hosts. Editor, terminal, and API-client themes are all generated from the same source of truth.


Huế Mưa across Neovim, tmux, and Ghostty

Moods

Mood Appearance Feel
Huế Mưa dark deep charcoal, rain silver, muted jade
Huế Hương dark river green, dusk blue, incense gold
Huế Cung light ivory paper, imperial lacquer, royal purple

Explore them in the interactive gallery: bun run dev (Vite + React, in apps/gallery).

Themes

Every theme below is generated from the token contract, so the three moods stay identical across hosts.

Host Package Get it
Neovim / LazyVim packages/nvim-plugin crafts69guy/hue-nvim · lazy.nvim
tmux packages/tmux-plugin crafts69guy/hue-tmux · TPM
Ghostty packages/terminal-themes theme file (theme = hue-mua)
Fish / Tide packages/fish-themes sourceable Fish theme files
Yaak packages/yaak-plugin sideload / plugin registry
Inkdrop packages/hue-*-theme 3 unified Inkdrop v6 packages with Mermaid colors
herdr + tuicr packages/herdr-plugin herdr plugin install — themes herdr and the tuicr review TUI

How it works

Three layers, each with a single responsibility:

flowchart LR
    P["Primitive tokens<br/>(authored colors)"] --> S["Semantic roles<br/>(stable contract)"]
    S --> A["Adapters"]
    A --> N["Neovim"]
    A --> T["tmux"]
    A --> G["Ghostty"]
    A --> F["Fish / Tide"]
    A --> Y["Yaak"]
Loading
  1. Primitive — authored colors with cultural metadata, per mood, in DTCG format.
  2. Semantic — stable roles (surface.canvas, status.notice, syntax.keyword, …) declared once in a versioned, validated contract.
  3. Adapters — map semantic roles onto a host API without mutating source data. Each adapter declares which contract families it supports or explicitly omits.

The build validates every mood against the contract and WCAG AA contrast, then writes the generated artifacts. See docs/architecture.md for the full picture and docs/cultural-direction.md for the design rationale.

Repository layout

packages/
  tokens/           # source tokens + build — the single source of truth
  nvim-plugin/      # generated Neovim colorscheme   → hue-nvim
  tmux-plugin/      # generated tmux TPM plugin       → hue-tmux
  terminal-themes/  # generated Ghostty theme files
  fish-themes/      # generated Fish/Tide theme files
  yaak-plugin/      # generated Yaak theme plugin
  hue-*-theme/      # generated unified Inkdrop v6 packages
apps/
  gallery/          # interactive mood gallery (Vite + React)

Development

bun install
bun run dev        # build tokens + run the gallery

Quality gates (Biome is the single formatter/linter for TS, React, JS, JSON, CSS, HTML):

bun run format     # apply Biome formatting/import-order fixes before CI
bun run format:check
bun run quality    # biome check + token/gallery check + tests
bun run ci         # the full non-mutating gate, incl. build

bun run ci starts with biome ci ., so formatting or import-order drift fails before typechecks, tests, or builds run. After changing token adapters, run bun run build first so generated artifacts are refreshed, then bun run format and bun run ci.

Publish the generated Inkdrop packages:

bun run publish:inkdrop:dry-run
bun run publish:inkdrop

Inkdrop packages target the v6 unified theme model: one package per mood covers the app UI, editor syntax, rendered Markdown preview, and Mermaid diagram colors.

Source tokens follow the Design Tokens Community Group format. Generated artifacts must not be edited by hand — change the tokens or adapters and rebuild.

Bundled font

The gallery bundles PlemolJP Console NF v3.0.0 in Light (300) through Bold (700), under the SIL Open Font License 1.1. Its full license sits beside the fonts in apps/gallery/public/fonts/PlemolJP-LICENSE.txt.

License

MIT

About

A portable theme design system inspired by Huế, Vietnam—built with design tokens for Neovim, Yaak, and Inkdrop.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages