feat: add client workspace management
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
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')
|
||||
});
|
||||
Reference in New Issue
Block a user