/* Copyright (C) 2023-2026 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ import type { ContentSettings } from '../types' import { createSectionRegistry } from '../utils/section-registry' import { AnnouncementsSection } from './announcements-section' import { ApiInfoSection } from './api-info-section' import { ChatSettingsSection } from './chat-settings-section' import { DashboardSection } from './dashboard-section' import { DrawingSettingsSection } from './drawing-settings-section' import { FAQSection } from './faq-section' import { UptimeKumaSection } from './uptime-kuma-section' /** * Validate and coerce DataExportDefaultTime to a safe value */ function validateDataExportDefaultTime(value: string): 'week' | 'hour' | 'day' { if (value === 'week' || value === 'hour' || value === 'day') { return value } // Default to 'hour' if value is unexpected return 'hour' } const CONTENT_SECTIONS = [ { id: 'dashboard', titleKey: 'Data Dashboard', build: (settings: ContentSettings) => ( ), }, { id: 'announcements', titleKey: 'Announcements', build: (settings: ContentSettings) => ( ), }, { id: 'api-info', titleKey: 'API Addresses', build: (settings: ContentSettings) => ( ), }, { id: 'faq', titleKey: 'FAQ', build: (settings: ContentSettings) => ( ), }, { id: 'uptime-kuma', titleKey: 'Uptime Kuma', build: (settings: ContentSettings) => ( ), }, { id: 'chat', titleKey: 'Chat Presets', build: (settings: ContentSettings) => ( ), }, { id: 'drawing', titleKey: 'Drawing', build: (settings: ContentSettings) => ( ), }, ] as const export type ContentSectionId = (typeof CONTENT_SECTIONS)[number]['id'] const contentRegistry = createSectionRegistry< ContentSectionId, ContentSettings >({ sections: CONTENT_SECTIONS, defaultSection: 'dashboard', basePath: '/system-settings/content', urlStyle: 'path', }) export const CONTENT_SECTION_IDS = contentRegistry.sectionIds export const CONTENT_DEFAULT_SECTION = contentRegistry.defaultSection export const getContentSectionNavItems = contentRegistry.getSectionNavItems export const getContentSectionContent = contentRegistry.getSectionContent export const getContentSectionMeta = contentRegistry.getSectionMeta