-
+
+
+ {/* Left side - Theme Customizer */}
+
+
+
+
+ {/* Right side - Gallery Preview */}
+
+
+ {/* Grid Style Selector */}
+
+
+ {t('branding.previewLayout')}
+
+
+ {(Object.keys(layoutIcons) as GalleryLayoutType[]).map((layout) => (
+
+ ))}
+
+
+
+ {/* Gallery Preview */}
+
+
+ {t('branding.livePreview')}
+
+
+
+
+
+
{/* Footer */}
diff --git a/frontend/src/components/admin/index.ts b/frontend/src/components/admin/index.ts
index a51f9cb..0834b32 100644
--- a/frontend/src/components/admin/index.ts
+++ b/frontend/src/components/admin/index.ts
@@ -20,4 +20,5 @@ export { ThemeCustomizerEnhanced } from './ThemeCustomizerEnhanced';
export { ThemeDisplay } from './ThemeDisplay';
export { ThemeEditorModal } from './ThemeEditorModal';
export { HeroPhotoSelector } from './HeroPhotoSelector';
-export { PhotoUploadModal } from './PhotoUploadModal';
\ No newline at end of file
+export { PhotoUploadModal } from './PhotoUploadModal';
+export { GalleryPreview } from './GalleryPreview';
\ No newline at end of file
diff --git a/frontend/src/i18n/locales/de.json b/frontend/src/i18n/locales/de.json
index bf8da7a..26f76e2 100644
--- a/frontend/src/i18n/locales/de.json
+++ b/frontend/src/i18n/locales/de.json
@@ -375,6 +375,10 @@
"language": "Sprache",
"defaultLanguage": "Standardsprache",
"defaultLanguageHelp": "Sprache, die Gästen vor der Anmeldung angezeigt wird",
+ "defaultWelcomeMessage": "Standard-Begrüßungsnachricht",
+ "welcomeMessage": "Begrüßungsnachricht",
+ "welcomeMessagePlaceholder": "Geben Sie eine Standard-Begrüßungsnachricht ein, die in E-Mails zur Galerieerstellung enthalten sein wird",
+ "welcomeMessageHelp": "Diese Nachricht wird in allen E-Mails zur Galerieerstellung enthalten sein, sofern sie beim Erstellen einer Veranstaltung nicht überschrieben wird",
"saveSettings": "Allgemeine Einstellungen speichern",
"saveGeneralSettings": "Allgemeine Einstellungen speichern",
"dateTimeFormat": "Datums- & Zeitformat",
@@ -579,7 +583,9 @@
"applyTheme": "Theme anwenden",
"customTheme": "Benutzerdefiniertes Design",
"customizeTheme": "Design anpassen",
- "saveTheme": "Design speichern"
+ "saveTheme": "Design speichern",
+ "previewLayout": "Vorschau-Layout",
+ "livePreview": "Live-Vorschau"
},
"admin": {
"title": "Admin-Panel",
diff --git a/frontend/src/i18n/locales/en.json b/frontend/src/i18n/locales/en.json
index ee64daf..466388b 100644
--- a/frontend/src/i18n/locales/en.json
+++ b/frontend/src/i18n/locales/en.json
@@ -396,6 +396,10 @@
"language": "Language",
"defaultLanguage": "Default Language",
"defaultLanguageHelp": "Language shown to guests before login",
+ "defaultWelcomeMessage": "Default Welcome Message",
+ "welcomeMessage": "Welcome Message",
+ "welcomeMessagePlaceholder": "Enter a default welcome message that will be included in gallery creation emails",
+ "welcomeMessageHelp": "This message will be included in all gallery creation emails unless overridden when creating an event",
"saveSettings": "Save General Settings",
"saveGeneralSettings": "Save General Settings",
"dateTimeFormat": "Date & Time Format",
@@ -634,7 +638,9 @@
"applyTheme": "Apply Theme",
"customTheme": "Custom Theme",
"customizeTheme": "Customize Theme",
- "saveTheme": "Save Theme"
+ "saveTheme": "Save Theme",
+ "previewLayout": "Preview Layout",
+ "livePreview": "Live Preview"
},
"admin": {
"title": "Admin Panel",
diff --git a/frontend/src/pages/admin/BrandingPage.tsx b/frontend/src/pages/admin/BrandingPage.tsx
index a8e1194..5418a8c 100644
--- a/frontend/src/pages/admin/BrandingPage.tsx
+++ b/frontend/src/pages/admin/BrandingPage.tsx
@@ -2,7 +2,7 @@ import React, { useState, useEffect, useRef } from 'react';
import { Save, Eye, Palette, Upload } from 'lucide-react';
import { toast } from 'react-toastify';
import { Button, Card, Input, ErrorBoundary, Loading } from '../../components/common';
-import { ThemeCustomizer } from '../../components/admin/ThemeCustomizer';
+import { ThemeCustomizerEnhanced, GalleryPreview } from '../../components/admin';
import { useTheme, type ThemeConfig, GALLERY_THEME_PRESETS } from '../../contexts/ThemeContext';
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { settingsService, type BrandingSettings } from '../../services/settings.service';
@@ -472,12 +472,33 @@ export const BrandingPage: React.FC = () => {
{t('branding.applyLivePreview')}
-