Erscheinungsbild
Der Bereich „Erscheinungsbild“ in den Einstellungen eines KI-Produkts: Theme, Akzent, Hintergrundtönung, Dichte, Chat-Schrift, Textgrößen und Barrierefreiheitsoptionen, alles als Entwurf gehalten, bis gespeichert wird.
Appearance bündelt alles zum Aussehen der App in einem Bereich. Theme-Karten zeigen ein kleines Fenster in jedem Theme, gezeichnet im gewählten Akzent, sodass die Wahl vor dem Speichern klar ist.
System folgt dem Gerät und sagt, welches Theme gerade aktiv ist. Hoher Kontrast verstärkt Kanten und Text und hält Hintergründe neutral, deshalb ist der Tönungsregler deaktiviert, solange er gewählt ist.
Der Akzentfarbton ist eine echte Farbleiste mit acht Schnellwahlen darunter, und die Anzeige nennt die Farbe, etwa Blue 250°. Die Hintergrundtönung mischt diesen Akzent in die Flächen. Karten für Dichte und Chat-Schrift zeigen je ein Beispiel jeder Option, und die zwei Textgrößen sind Stepper mit Grenzen.
Reduce motion und Reduce transparency sagen, wenn das Gerät bereits eines davon verlangt.
Alles ist ein Entwurf, bis es gespeichert wird. Die Speicherleiste aus Settings erscheint, sobald sich etwas unterscheidet, Discard bringt das gespeicherte Aussehen zurück, und Reset setzt jede Option als Entwurf auf den Standard zurück, den du weiterhin verwerfen kannst.
Die Pro-Registry zu components.json hinzufügen
components.json Token hinzufügen
Erstelle auf deiner Kontoseite einen Token und trage ihn in
.env.localalsHEXTAUI_PRO_TOKENein.Den Block hinzufügen
pnpm dlx shadcn@latest add @hextaui-pro/appearance
In deiner API speichern
Übergib die gespeicherten Werte und ein asynchrones onSave. Es wird nichts gesendet, bis jemand in der Leiste auf Save drückt. Wirf einen Fehler, um deine Meldung in der Leiste zu zeigen und die Auswahl zu behalten.
Das gespeicherte Aussehen anwenden
Wende die Werte nach dem Speichern an, wie auch immer deine App ihr Theme umsetzt. normalizeAppearance repariert alles, was eine ältere Version gespeichert hat, sodass ein fehlerhafter Wert nie die Seite zerstört.
Aufbau
Die Teile, die du zusammensetzt, von außen nach innen.
| Part | Beschreibung |
|---|---|
AppearanceSettings | Der Inhalt des Bereichs: die Optionsgruppen, verbunden mit der Speicherleiste der Shell. |
normalizeAppearance | Macht aus gespeicherten oder unvollständigen Werten gültige: begrenzt Größen, lässt den Farbton umlaufen und greift bei unbekannten Namen auf Standards zurück. |
appearanceDefaults | Die Werte, auf die Reset zurückgeht, wenn du keine eigenen übergibst. |
AppearanceSettings
Verwende es in einer SettingsSection. Akzeptiert auch alle div-Props.
| Prop | Typ | Standard |
|---|---|---|
valuesWas jetzt gespeichert ist: { theme, hue, intensity, density, chatFont, interfaceSize, codeSize, reduceMotion, reduceTransparency }. Ungültige Werte werden repariert, und die Reparatur zählt nicht als ungespeicherte Änderung. | AppearanceValues | – |
onSaveSpeichert den Entwurf. Wirf einen Fehler, um die Meldung in der Speicherleiste zu zeigen und den Entwurf zu behalten. | (values) => void | errors | Promise<void | errors> | – |
defaultsWas Reset zurücksetzt. | AppearanceValues | appearanceDefaults |
| Prop | Typ | Standard |
|---|---|---|
themeSystem folgt prefers-color-scheme. | "system" | "light" | "dark" | "contrast" | "system" |
hueDer OKLCH-Farbton des Akzents, 0 bis 359. | number | 250 |
intensityWie stark der Akzent Hintergründe tönt, 0 bis 100. | number | 30 |
densityAbstand zwischen und innerhalb von Nachrichten. | "compact" | "comfortable" | "comfortable" |
chatFontDie Schrift für Nachrichten. | "sans" | "serif" | "mono" | "sans" |
interfaceSizeTextgröße in Pixeln, 12 bis 18. | number | 14 |
codeSizeCodegröße in Pixeln, 11 bis 20. | number | 13 |
reduceMotionStoppt Spinner und gleitende Panels. | boolean | false |
reduceTransparencyDeckende Hintergründe statt unscharfer. | boolean | false |
| Taste | Aktion |
|---|---|
| ←→ | Wählt in den Karten für Theme, Dichte oder Schrift die vorherige oder nächste Karte. Bewegt auf der Farbtonleiste um ein Grad. |
| Shift→ | Bewegt auf der Farbtonleiste um 15 Grad. Bild auf und Bild ab tun dasselbe. |
| HomeEnd | Springt auf der Farbtonleiste zu einem der Enden. |
| ↑↓ | Ändert in einem Textgrößenfeld die Größe um einen Pixel. |
| ⌘S | Speichert, solange etwas ungespeichert ist. Strg+S unter Windows und Linux. |
- Jede Kartengruppe ist eine Radio-Gruppe, benannt nach ihrer Zeile, und jede Karte trägt ihr eigenes Label, sodass Screenreader „Dunkel, Radio, 3 von 4“ vorlesen.
- Die Farbtonleiste liest ihre Farbe mit Namen vor, etwa „Blau, 250 Grad“, und die Schnellwahlen sind Toggle-Buttons, benannt nach der Farbe.
- Reset behält nach der Ausführung den Fokus und sagt an, dass die Standards zurück sind und gespeichert werden müssen.
Gebaut mit
Die kostenlosen HextaUI-Komponenten, aus denen Appearance besteht. Jede lässt sich einzeln installieren.
Code
2 Dateien, hinzugefügt zu components/blocks/appearance.