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.
22 lines
589 B
Vue
22 lines
589 B
Vue
<script setup lang="ts">
|
|
// One titled card of setting rows or static facts — the repeating
|
|
// surface of every settings page. The header may carry a meta note on
|
|
// the right ("4 unset — inherit the primary model"-style).
|
|
defineProps<{
|
|
title: string
|
|
meta?: string
|
|
}>()
|
|
</script>
|
|
|
|
<template>
|
|
<section class="card">
|
|
<header class="card-head">
|
|
<span class="title">{{ title }}</span>
|
|
<span v-if="meta || $slots.meta" class="meta"><slot name="meta">{{ meta }}</slot></span>
|
|
</header>
|
|
<div class="card-body">
|
|
<slot />
|
|
</div>
|
|
</section>
|
|
</template>
|