import { z } from "zod"; import { COMPANY_STATUSES } from "../constants.js"; const logoAssetIdSchema = z.string().uuid().nullable().optional(); const brandColorSchema = z.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional(); const feedbackDataSharingTermsVersionSchema = z.string().min(1).nullable().optional(); export const createCompanySchema = z.object({ name: z.string().min(1), description: z.string().optional().nullable(), budgetMonthlyCents: z.number().int().nonnegative().optional().default(0), }); export type CreateCompany = z.infer; export const updateCompanySchema = createCompanySchema .partial() .extend({ status: z.enum(COMPANY_STATUSES).optional(), spentMonthlyCents: z.number().int().nonnegative().optional(), requireBoardApprovalForNewAgents: z.boolean().optional(), feedbackDataSharingEnabled: z.boolean().optional(), feedbackDataSharingConsentAt: z.coerce.date().nullable().optional(), feedbackDataSharingConsentByUserId: z.string().min(1).nullable().optional(), feedbackDataSharingTermsVersion: feedbackDataSharingTermsVersionSchema, brandColor: brandColorSchema, logoAssetId: logoAssetIdSchema, }); export type UpdateCompany = z.infer; export const updateCompanyBrandingSchema = z .object({ name: z.string().min(1).optional(), description: z.string().nullable().optional(), brandColor: brandColorSchema, logoAssetId: logoAssetIdSchema, }) .strict() .refine( (value) => value.name !== undefined || value.description !== undefined || value.brandColor !== undefined || value.logoAssetId !== undefined, "At least one branding field must be provided", ); export type UpdateCompanyBranding = z.infer;