feat(content): add announcements and public news flows
This commit is contained in:
32
packages/content/src/announcements.ts
Normal file
32
packages/content/src/announcements.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import { z } from "zod"
|
||||
|
||||
export const announcementPlacementSchema = z.enum(["global_top", "homepage"])
|
||||
|
||||
export const createAnnouncementInputSchema = z.object({
|
||||
title: z.string().min(1).max(180),
|
||||
message: z.string().min(1).max(500),
|
||||
placement: announcementPlacementSchema.default("global_top"),
|
||||
priority: z.number().int().min(0).default(100),
|
||||
ctaLabel: z.string().max(120).nullable().optional(),
|
||||
ctaHref: z.string().max(500).nullable().optional(),
|
||||
startsAt: z.date().nullable().optional(),
|
||||
endsAt: z.date().nullable().optional(),
|
||||
isVisible: z.boolean().default(true),
|
||||
})
|
||||
|
||||
export const updateAnnouncementInputSchema = z.object({
|
||||
id: z.string().uuid(),
|
||||
title: z.string().min(1).max(180).optional(),
|
||||
message: z.string().min(1).max(500).optional(),
|
||||
placement: announcementPlacementSchema.optional(),
|
||||
priority: z.number().int().min(0).optional(),
|
||||
ctaLabel: z.string().max(120).nullable().optional(),
|
||||
ctaHref: z.string().max(500).nullable().optional(),
|
||||
startsAt: z.date().nullable().optional(),
|
||||
endsAt: z.date().nullable().optional(),
|
||||
isVisible: z.boolean().optional(),
|
||||
})
|
||||
|
||||
export type AnnouncementPlacement = z.infer<typeof announcementPlacementSchema>
|
||||
export type CreateAnnouncementInput = z.infer<typeof createAnnouncementInputSchema>
|
||||
export type UpdateAnnouncementInput = z.infer<typeof updateAnnouncementInputSchema>
|
||||
@@ -1,5 +1,6 @@
|
||||
import { z } from "zod"
|
||||
|
||||
export * from "./announcements"
|
||||
export * from "./commissions"
|
||||
export * from "./media"
|
||||
export * from "./pages-navigation"
|
||||
|
||||
Reference in New Issue
Block a user