The dark palette lives as a single :root[data-theme='dark'] block in tokens.css; theme.ts and the pre-paint public/theme-init.js (external file because the prod CSP forbids inline scripts) always resolve the stored ui.theme.mode to a concrete data-theme, so 'system' needs no @media duplicate and follows live OS changes via matchMedia. color-scheme flips per theme (native controls/scrollbars), paired theme-color metas track the effective theme, and the new Appearance settings section offers the three-way choice as native radios (device-local, like #170). Label chips gain a chip-outline ring so arbitrary user colors stay separated on the dark canvas; useEffectiveTheme() is exported for the later pond-scoped theming stage (ADR 0018). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QRtCnB3uLdQtFmvp9HXcRX
74 lines
2.4 KiB
JSON
74 lines
2.4 KiB
JSON
{
|
||
"title": "Settings",
|
||
"profile": {
|
||
"title": "Profile",
|
||
"displayName": "Display name",
|
||
"locale": "Language",
|
||
"locales": {
|
||
"de": "Deutsch",
|
||
"en": "English"
|
||
},
|
||
"save": "Save",
|
||
"saved": "Saved."
|
||
},
|
||
"password": {
|
||
"title": "Change password",
|
||
"current": "Current password",
|
||
"new": "New password",
|
||
"submit": "Change password",
|
||
"changed": "Password changed. Other devices were signed out."
|
||
},
|
||
"sessions": {
|
||
"title": "Active sessions",
|
||
"current": "This session",
|
||
"created": "Signed in",
|
||
"lastSeen": "Last active",
|
||
"device": "Device",
|
||
"revoke": "Sign out",
|
||
"revokeAll": "Sign out all other sessions",
|
||
"empty": "No other active sessions."
|
||
},
|
||
"dataExport": {
|
||
"title": "Export my data",
|
||
"description": "Download a ZIP with your profile, a list of your memberships, and the Markdown export of your personal pond and the ponds you own.",
|
||
"request": "Prepare export",
|
||
"preparing": "Preparing your export…",
|
||
"download": "Download export",
|
||
"ready": "Your export is ready.",
|
||
"expiresHint": "The download link expires on {{when}}.",
|
||
"failed": "The export could not be prepared. Please try again.",
|
||
"rateLimited": "You requested an export recently. Please try again later."
|
||
},
|
||
"admin": {
|
||
"title": "Administration",
|
||
"general": "General",
|
||
"instanceName": "Instance name",
|
||
"defaultLocale": "Default language",
|
||
"registrationMode": "Self-registration",
|
||
"registrationOpen": "Open — anyone can register",
|
||
"registrationClosed": "Closed — no new registrations",
|
||
"save": "Save",
|
||
"saved": "Saved."
|
||
},
|
||
"landing": {
|
||
"title": "Landing page",
|
||
"hint": "The public home page (/) content as Markdown. Leave empty to show the built-in welcome text.",
|
||
"label": "Landing page content (Markdown)",
|
||
"save": "Save landing page",
|
||
"saved": "Saved."
|
||
},
|
||
"appearance": {
|
||
"title": "Appearance",
|
||
"legend": "Color scheme",
|
||
"light": "Light",
|
||
"dark": "Dark",
|
||
"system": "System setting",
|
||
"hint": "“System setting” follows the device’s light/dark mode. Applies to this device."
|
||
},
|
||
"interaction": {
|
||
"title": "Interaction",
|
||
"disableSingleKey": "Disable single-key shortcuts",
|
||
"disableSingleKeyHint": "Turns off the “e” (edit) and “/” (search) shortcuts — helpful with speech input. Applies to this device."
|
||
}
|
||
}
|