import { z, ZodType } from 'zod'; import { QuestionDefinition } from '../core'; const SegmentedToggle = 'SegmentedToggle' as const; export type SegmentedToggleComponentType = typeof SegmentedToggle; interface PositiveButton { id: 'positive'; displayName?: string; } interface NegativeButton { id: 'negative'; displayName?: string; } export interface SegmentedToggleComponentDefinition extends QuestionDefinition { buttons?: [PositiveButton, NegativeButton] | [NegativeButton, PositiveButton]; } const PositiveButtonSchema = z.object({ id: z.literal('positive'), displayName: z.string().optional(), }) satisfies ZodType; const NegativeButtonSchema = z.object({ id: z.literal('negative'), displayName: z.string().optional(), }) satisfies ZodType; export const SegmentedToggleSchema = z.object({ type: z.literal(SegmentedToggle), questionId: z.string(), label: z.string(), buttons: z .union([ z.tuple([PositiveButtonSchema, NegativeButtonSchema]), z.tuple([NegativeButtonSchema, PositiveButtonSchema]), ]) .optional() .default([{ id: 'positive' }, { id: 'negative' }]), }) satisfies ZodType;