+
+
System Settings
+
Configure system-wide settings and preferences
+
+
+ {/* Tab Navigation */}
+
+
+
+
+ {/* General Settings Tab */}
+ {activeTab === 'general' && (
+
+
+ Site Configuration
+
+
+
+
+
setGeneralSettings(prev => ({ ...prev, site_url: e.target.value }))}
+ placeholder="https://yourdomain.com"
+ leftIcon={
}
+ />
+
+ Used for generating gallery links in emails
+
+
+
+
+
+
+
+
setGeneralSettings(prev => ({ ...prev, allowed_file_types: e.target.value }))}
+ placeholder="jpg,jpeg,png,gif"
+ />
+
+ Comma-separated list of file extensions
+
+
+
+
+
+
+ Feature Toggles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )}
+
+ {/* Storage Tab */}
+ {activeTab === 'storage' && storageInfo && (
+
+
+ Storage Overview
+
+
+
+
Total Used
+
+ {settingsService.formatBytes(storageInfo.total_used)}
+
+
+
+
Archive Storage
+
+ {settingsService.formatBytes(storageInfo.archive_storage)}
+
+
+
+
Storage Limit
+
+ {settingsService.formatBytes(storageInfo.storage_limit)}
+
+
+
+
+
+
+ Storage Usage
+
+ {Math.round((storageInfo.total_used / storageInfo.storage_limit) * 100)}%
+
+
+
+
+
+
+
Storage by Event
+
+ {storageInfo.storage_by_event.slice(0, 10).map((event) => (
+
+ {event.event_name}
+
+ {settingsService.formatBytes(event.size)}
+
+
+ ))}
+
+
+
+
+
+
+
+
+
Storage Management
+
+ Consider archiving or deleting old events to free up storage space.
+ Archived events are compressed and use less storage than active galleries.
+
+
+
+
+
+ )}
+
+ {/* Security Tab */}
+ {activeTab === 'security' && (
+
+
+ Password Settings
+
+
+
+
+
+ Session & Authentication
+
+
+
+
+
+
+
+
+
+ reCAPTCHA Settings
+
+
+
+
+
+
+
+
+ )}
+
+ );
+};
\ No newline at end of file
diff --git a/frontend/src/pages/admin/index.ts b/frontend/src/pages/admin/index.ts
index c336e0d..17b9a3f 100644
--- a/frontend/src/pages/admin/index.ts
+++ b/frontend/src/pages/admin/index.ts
@@ -6,4 +6,5 @@ export { EventDetailsPage } from './EventDetailsPage';
export { EmailConfigPage } from './EmailConfigPage';
export { ArchivesPage } from './ArchivesPage';
export { AnalyticsPage } from './AnalyticsPage';
-export { BrandingPage } from './BrandingPage';
\ No newline at end of file
+export { BrandingPage } from './BrandingPage';
+export { SettingsPage } from './SettingsPage';
\ No newline at end of file
diff --git a/frontend/src/services/settings.service.ts b/frontend/src/services/settings.service.ts
index 67c1d0d..02f071f 100644
--- a/frontend/src/services/settings.service.ts
+++ b/frontend/src/services/settings.service.ts
@@ -93,5 +93,14 @@ export const settingsService = {
// Format theme settings from raw data
formatThemeSettings(rawSettings: Record