브랜드 컬러 설정 추가 v1.5.36

This commit is contained in:
2026-06-02 15:39:08 +09:00
parent 1bcd2f6898
commit 093d09c8bf
17 changed files with 472 additions and 10 deletions

View File

@@ -4,6 +4,11 @@ import {
isValidAnnouncementBackgroundColor,
normalizeAnnouncementUrl
} from '../../lib/announcement-bar.js'
import {
DEFAULT_BRAND_COLOR,
isValidBrandColor,
normalizeBrandColor
} from '../../lib/brand-color.js'
import {
DEFAULT_SIGNUP_BLOCKED_USERNAMES,
MAX_SIGNUP_BLOCKED_USERNAME_COUNT,
@@ -24,6 +29,7 @@ export const adminSiteSettingsInputSchema = z.object({
homeCoverDarkImageUrl: z.string().trim().max(500).optional().default(''),
homeCoverTitle: z.string().trim().max(120).optional().default(''),
homeCoverText: z.string().trim().max(280).optional().default(''),
brandColor: z.string().trim().optional().default(DEFAULT_BRAND_COLOR),
announcementEnabled: z.boolean().optional().default(false),
announcementText: z.string().trim().max(200).optional().default(''),
announcementUrl: z.string().trim().max(500).optional().default(''),
@@ -43,6 +49,14 @@ export const adminSiteSettingsInputSchema = z.object({
})
}
if (!isValidBrandColor(data.brandColor)) {
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: '브랜드 컬러가 올바르지 않습니다.',
path: ['brandColor']
})
}
if (data.announcementEnabled && !data.announcementText.trim()) {
ctx.addIssue({
code: z.ZodIssueCode.custom,
@@ -52,6 +66,7 @@ export const adminSiteSettingsInputSchema = z.object({
}
}).transform((data) => ({
...data,
brandColor: normalizeBrandColor(data.brandColor),
announcementUrl: normalizeAnnouncementUrl(data.announcementUrl),
signupBlockedUsernames: normalizeSignupBlockedUsernames(data.signupBlockedUsernames)
}))