"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateSiteSettingsSchema = void 0; const zod_1 = require("zod"); const hexColor = zod_1.z.string().regex(/^#[0-9a-fA-F]{6}$/, 'Must be a hex color (e.g. #ff00ff)'); exports.updateSiteSettingsSchema = zod_1.z.object({ // Organization organizationName: zod_1.z.string().min(1).max(100).optional(), organizationShortName: zod_1.z.string().min(1).max(10).optional(), organizationLogoUrl: zod_1.z.string().url().nullable().optional().or(zod_1.z.literal('')), organizationFaviconUrl: zod_1.z.string().url().nullable().optional().or(zod_1.z.literal('')), // Admin theme adminColorPrimary: hexColor.optional(), adminColorBgBase: hexColor.optional(), // Public theme publicColorPrimary: hexColor.optional(), publicColorBgBase: hexColor.optional(), publicColorBgContainer: hexColor.optional(), publicHeaderGradient: zod_1.z.string().max(500).optional(), // Text footerText: zod_1.z.string().max(200).optional(), loginSubtitle: zod_1.z.string().max(50).optional(), // Email branding emailFromName: zod_1.z.string().min(1).max(100).optional(), // SMTP configuration smtpHost: zod_1.z.string().max(255).optional(), smtpPort: zod_1.z.number().int().min(0).max(65535).optional(), smtpUser: zod_1.z.string().max(255).optional(), smtpPass: zod_1.z.string().max(500).optional(), smtpFromAddress: zod_1.z.string().max(255).optional(), smtpActiveProvider: zod_1.z.enum(['mailhog', 'production']).optional(), emailTestMode: zod_1.z.boolean().optional(), testEmailRecipient: zod_1.z.string().max(255).optional(), // Registration settings enablePublicRegistration: zod_1.z.boolean().optional(), enableEmailVerification: zod_1.z.boolean().optional(), autoApproveVerifiedUsers: zod_1.z.boolean().optional(), // Feature toggles enableInfluence: zod_1.z.boolean().optional(), enableMap: zod_1.z.boolean().optional(), enableNewsletter: zod_1.z.boolean().optional(), enableLandingPages: zod_1.z.boolean().optional(), enableMediaFeatures: zod_1.z.boolean().optional(), enablePayments: zod_1.z.boolean().optional(), enableGalleryAds: zod_1.z.boolean().optional(), enableChat: zod_1.z.boolean().optional(), enableEvents: zod_1.z.boolean().optional(), enableDocsComments: zod_1.z.boolean().optional(), enableSms: zod_1.z.boolean().optional(), enablePeople: zod_1.z.boolean().optional(), enableSocial: zod_1.z.boolean().optional(), enableMeet: zod_1.z.boolean().optional(), enableMeetingPlanner: zod_1.z.boolean().optional(), enableTicketedEvents: zod_1.z.boolean().optional(), enableSocialCalendar: zod_1.z.boolean().optional(), enableDocsCollaboration: zod_1.z.boolean().optional(), requireEventApproval: zod_1.z.boolean().optional(), autoSyncPeopleToMap: zod_1.z.boolean().optional(), // SMS connection config smsTermuxApiUrl: zod_1.z.string().max(500).optional(), smsTermuxApiKey: zod_1.z.string().max(500).optional(), smsTailscaleApiKey: zod_1.z.string().max(500).optional(), smsTailscaleTailnet: zod_1.z.string().max(200).optional(), smsTailscaleDeviceId: zod_1.z.string().max(200).optional(), smsTailscaleDeviceName: zod_1.z.string().max(200).optional(), // Gitea Docs Comments giteaApiToken: zod_1.z.string().max(500).optional(), giteaCommentsRepoOwner: zod_1.z.string().max(100).optional(), giteaCommentsRepoName: zod_1.z.string().max(100).optional(), giteaOauthClientId: zod_1.z.string().max(500).optional(), giteaOauthClientSecret: zod_1.z.string().max(500).optional(), // User Provisioning enableUserProvisioning: zod_1.z.boolean().optional(), provisionGitea: zod_1.z.boolean().optional(), provisionGiteaTiming: zod_1.z.enum(['lazy', 'eager']).optional(), provisionVaultwarden: zod_1.z.boolean().optional(), provisionVaultwardenTiming: zod_1.z.enum(['lazy', 'eager']).optional(), provisionListmonk: zod_1.z.boolean().optional(), provisionListmonkTiming: zod_1.z.enum(['lazy', 'eager']).optional(), // Auto-upgrade settings enableAutoUpgrade: zod_1.z.boolean().optional(), autoUpgradeSchedule: zod_1.z.enum([ 'daily-3am', 'daily-4am', 'daily-5am', 'weekly-sun-3am', 'weekly-mon-3am', '12h', '24h', ]).optional(), autoUpgradePullServices: zod_1.z.boolean().optional(), notifyAdminAutoUpgrade: zod_1.z.boolean().optional(), // Navigation configuration (supports one level of nesting via groups) navConfig: zod_1.z.object({ items: zod_1.z.array(zod_1.z.object({ id: zod_1.z.string(), label: zod_1.z.string(), path: zod_1.z.string(), icon: zod_1.z.string(), enabled: zod_1.z.boolean(), order: zod_1.z.number(), type: zod_1.z.enum(['builtin', 'custom', 'group']), featureFlag: zod_1.z.string().optional(), external: zod_1.z.boolean().optional(), children: zod_1.z.array(zod_1.z.object({ id: zod_1.z.string(), label: zod_1.z.string(), path: zod_1.z.string(), icon: zod_1.z.string(), enabled: zod_1.z.boolean(), order: zod_1.z.number(), type: zod_1.z.enum(['builtin', 'custom']), featureFlag: zod_1.z.string().optional(), external: zod_1.z.boolean().optional(), })).optional(), })), }).optional(), // Notification settings notifyAdminShiftSignup: zod_1.z.boolean().optional(), notifyAdminResponseSubmitted: zod_1.z.boolean().optional(), notifyAdminSignRequested: zod_1.z.boolean().optional(), notifyAdminShiftCancellation: zod_1.z.boolean().optional(), notifyVolunteerSessionSummary: zod_1.z.boolean().optional(), notifyVolunteerCancellation: zod_1.z.boolean().optional(), notifyVolunteerShiftReminder: zod_1.z.boolean().optional(), notifyVolunteerShiftThankYou: zod_1.z.boolean().optional(), notifyVolunteerReengagement: zod_1.z.boolean().optional(), reengagementInactiveDays: zod_1.z.number().int().min(1).max(365).optional(), reengagementCooldownDays: zod_1.z.number().int().min(1).max(365).optional(), }); //# sourceMappingURL=settings.schemas.js.map