40 lines
1.9 KiB
JavaScript
40 lines
1.9 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(),
|
|
// 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(),
|
|
});
|
|
//# sourceMappingURL=settings.schemas.js.map
|