28 lines
1.1 KiB
TypeScript
28 lines
1.1 KiB
TypeScript
import { z } from 'zod';
|
|
import { idSchema, optionalEmail, optionalText, optionalUrl, requiredText } from './shared.schema';
|
|
|
|
export const clientCreateSchema = z.object({
|
|
name: requiredText('Client name'),
|
|
type: z.enum(['business', 'sport', 'individual']).default('business'),
|
|
status: z.enum(['active', 'prospect', 'paused']).default('active'),
|
|
website: optionalUrl,
|
|
notes: optionalText(1000)
|
|
});
|
|
|
|
export const clientEditSchema = clientCreateSchema.extend(idSchema.shape);
|
|
|
|
export const clientOnboardingCreateSchema = clientCreateSchema.extend({
|
|
primaryContactName: requiredText('Primary contact name'),
|
|
primaryContactRole: optionalText(120),
|
|
primaryContactEmail: optionalEmail,
|
|
primaryContactPhone: optionalText(80),
|
|
primaryContactNotes: optionalText(1000),
|
|
primaryAddressLabel: requiredText('Address label', 80).default('Primary'),
|
|
primaryAddressLine1: requiredText('Address line 1'),
|
|
primaryAddressLine2: optionalText(160),
|
|
primaryAddressCity: requiredText('City', 100),
|
|
primaryAddressRegion: optionalText(100),
|
|
primaryAddressPostcode: requiredText('Postcode', 24),
|
|
primaryAddressCountry: requiredText('Country', 80).default('United Kingdom')
|
|
});
|