19 lines
668 B
TypeScript
19 lines
668 B
TypeScript
// The shapes both halves of the branding contract use: the procedures (index.ts) and the stylesheet
|
|
// layer a brand becomes (style.ts). A file of its own so neither imports the other.
|
|
|
|
import { z } from "zod"
|
|
|
|
export const LOGO_VARIANTS = ["light", "dark"] as const
|
|
export type LogoVariant = (typeof LOGO_VARIANTS)[number]
|
|
|
|
/** `null` is "not set": the app's own brand shows through. */
|
|
export const brandViewSchema = z.object({
|
|
displayName: z.string().nullable(),
|
|
primary: z.string().nullable(),
|
|
accent: z.string().nullable(),
|
|
logoLight: z.string().nullable(),
|
|
logoDark: z.string().nullable(),
|
|
})
|
|
|
|
export type BrandView = z.output<typeof brandViewSchema>
|