import { z, ZodType } from 'zod'; import { QuestionDefinition } from '../core'; const Thumbnails = 'Thumbnails' as const; export type ThumbnailsComponentType = typeof Thumbnails; interface ThumbnailOption { id: string; label?: string; imageUrl: string; } export interface ThumbnailsComponentDefinition extends QuestionDefinition { options: ThumbnailOption[]; } export const ThumbnailsSchema = z.object({ type: z.literal(Thumbnails), questionId: z.string(), label: z.string(), options: z .array( z.object({ id: z.string(), label: z.string().optional(), imageUrl: z.string(), }), ) .min(2) .max(2) .refine( (val) => { const ids = val.map(({ id }) => id); return ids.length === new Set(ids).size; }, { message: 'Thumbnails options are required to have unique ids', }, ), }) satisfies ZodType;