feat(rhema-code): add the colors setting with four palettes

The stored `colors` key names a palette — rhema (the default,
Jadeite), aquamarine, black-and-white, or dracula — and the
Appearance page of /settings cycles it live, like the theme and
icon toggles beside it. Each palette carries a dark and a light
appearance under the existing `theme` key; dracula's light side is
derived, the official palette ships only dark.

The appearance decision moves off token comparison: Theme now
answers is_dark() from the ground/text luminance, so palettes
beyond the original two get the right per-profile fallback tones.
This commit is contained in:
vhaudiquet committed 2026-10-17 04:28:31 +08:00
commit 81da26b955
159 files changed
+50628

No files matched your search

+34
View File
@@ -0,0 +1,34 @@
<script setup lang="ts">
// One small round state dot with an honest tone: ok, warn, error, or
// idle gray. The only place status color lives at a glance.
defineProps<{
tone: 'ok' | 'warn' | 'error' | 'idle'
}>()
</script>
<template>
<span class="dot" :class="tone" aria-hidden="true" />
</template>
<style scoped>
.dot {
display: inline-block;
flex: none;
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--text3);
}
.dot.ok {
background: var(--ok);
}
.dot.warn {
background: var(--warn);
}
.dot.error {
background: var(--error);
}
</style>