import { z } from 'zod';

const allowedOriginSchema = z.string().min(1).refine(
  (value) => value === '*' || /^https?:\/\/.+/.test(value),
  { message: 'Must be * or a valid http(s) origin URL' },
);

export const createEmbedConfigSchema = z.object({
  eventTypeId: z.string().uuid(),
  displayMode: z.enum(['inline', 'popup', 'modal']).default('inline'),
  allowedOrigins: z.array(allowedOriginSchema).min(1),
  theme: z
    .object({
      primaryColor: z.string().optional(),
      backgroundColor: z.string().optional(),
      fontFamily: z.string().optional(),
      borderRadius: z.string().optional(),
    })
    .optional(),
  hideBranding: z.boolean().optional(),
});

export const updateEmbedConfigSchema = createEmbedConfigSchema.partial();

export const updateEventTypeEmbedSchema = z.object({
  displayMode: z.enum(['inline', 'popup', 'modal']).optional(),
  allowedOrigins: z.array(allowedOriginSchema).min(1).optional(),
  theme: z
    .object({
      primaryColor: z.string().optional(),
      backgroundColor: z.string().optional(),
      fontFamily: z.string().optional(),
      borderRadius: z.string().optional(),
    })
    .optional(),
  hideBranding: z.boolean().optional(),
});
