feat(web): admin area with instance default theme, custom logo/favicon; .theme.json export
- Admin settings tab (admin-only) now holds user management plus a server-wide default theme editor (live preview + discard) and logo/favicon branding. - New singleton InstanceSettings model + /api/instance router (public GET for the login screen; admin-gated theme PUT and logo/favicon upload/delete, reusing the avatar PIL/validation pattern). - Instance default theme is the base users inherit and the target a per-colour "Reset" returns to (baseColor: instance default -> built-in). - Custom favicon overrides the primary-colour tinting; custom logo replaces the top-left glyph+text, hard-capped so it only scales down and never breaks layout. Branding + defaults load before login (public endpoint). - Theme export now uses the recognised .theme.json extension (old .theme still imports); import stays partial/unknown-key aware. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -65,6 +65,21 @@ const translations = {
|
||||
settings_nav_calendars: 'Kalender',
|
||||
settings_nav_google: 'Google Konten',
|
||||
settings_nav_users: 'Benutzerverwaltung',
|
||||
settings_nav_admin: 'Admin',
|
||||
admin_default_theme: 'Standard-Theme',
|
||||
admin_default_theme_desc: 'Gilt für alle Nutzer ohne eigene Farbe. „Zurück" bei einer Farbe springt auf diesen Standard.',
|
||||
admin_theme_save: 'Standard speichern',
|
||||
admin_theme_discard: 'Verwerfen',
|
||||
admin_theme_saved: 'Standard-Theme gespeichert',
|
||||
admin_branding: 'Branding',
|
||||
admin_branding_desc: 'Eigenes Logo (oben links) und Favicon für die ganze Instanz. PNG/JPEG/WebP, max. 5 MB.',
|
||||
admin_logo: 'Logo',
|
||||
admin_favicon: 'Favicon',
|
||||
admin_upload: 'Hochladen',
|
||||
admin_remove: 'Entfernen',
|
||||
admin_brand_default: 'Standard',
|
||||
admin_branding_saved: 'Branding gespeichert',
|
||||
admin_branding_removed: 'Branding entfernt',
|
||||
settings_sync_all: 'Alle synchronisieren',
|
||||
settings_sync_all_desc: 'Diese Einstellungen zwischen deinen Geräten teilen',
|
||||
settings_sync_this: 'Zwischen Geräten synchronisieren',
|
||||
@@ -443,6 +458,21 @@ const translations = {
|
||||
settings_nav_calendars: 'Calendars',
|
||||
settings_nav_google: 'Google Accounts',
|
||||
settings_nav_users: 'User Management',
|
||||
settings_nav_admin: 'Admin',
|
||||
admin_default_theme: 'Default theme',
|
||||
admin_default_theme_desc: 'Applies to all users who have not set their own colour. A colour "Reset" returns to this default.',
|
||||
admin_theme_save: 'Save default',
|
||||
admin_theme_discard: 'Discard',
|
||||
admin_theme_saved: 'Default theme saved',
|
||||
admin_branding: 'Branding',
|
||||
admin_branding_desc: 'Custom logo (top-left) and favicon for the whole instance. PNG/JPEG/WebP, max 5 MB.',
|
||||
admin_logo: 'Logo',
|
||||
admin_favicon: 'Favicon',
|
||||
admin_upload: 'Upload',
|
||||
admin_remove: 'Remove',
|
||||
admin_brand_default: 'Default',
|
||||
admin_branding_saved: 'Branding saved',
|
||||
admin_branding_removed: 'Branding removed',
|
||||
settings_sync_all: 'Sync all',
|
||||
settings_sync_all_desc: 'Share these settings across your devices',
|
||||
settings_sync_this: 'Sync across devices',
|
||||
|
||||
Reference in New Issue
Block a user