126 lines
6.2 KiB
JavaScript
126 lines
6.2 KiB
JavaScript
"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
|