import type { Temporal } from 'temporal-polyfill'; import type { CustomFieldWidth } from '@/client'; type CustomFieldDefinitionType = 'checkbox' | 'date' | 'multiselect' | 'number' | 'radio' | 'select' | 'string'; interface BaseCustomFieldDefinitionIndex { uuid: string; isDisplayedOnCreate: boolean; displayName: string; key: string; order: number; type: CustomFieldDefinitionType; width: CustomFieldWidth; } export interface CustomFieldDefinitionMultiSelectIndex extends BaseCustomFieldDefinitionIndex { maxSelections?: number; minSelections?: number; options: { key: string; value: string; }[]; type: 'multiselect'; } export interface CustomFieldDefinitionSelectIndex extends BaseCustomFieldDefinitionIndex { options: { key: string; value: string; }[]; type: 'select'; } export interface CustomFieldDefinitionRadioButtonIndex extends BaseCustomFieldDefinitionIndex { options: { key: string; value: string; }[]; type: 'radio'; } export interface CustomFieldDefinitionCheckboxIndex extends BaseCustomFieldDefinitionIndex { defaultValue?: boolean; type: 'checkbox'; } export interface CustomFieldDefinitionStringIndex extends BaseCustomFieldDefinitionIndex { maxLength?: number; minLength?: number; type: 'string'; } export interface CustomFieldDefinitionDateIndex extends BaseCustomFieldDefinitionIndex { maxDate?: Temporal.PlainDate; minDate?: Temporal.PlainDate; type: 'date'; } export interface CustomFieldDefinitionNumberIndex extends BaseCustomFieldDefinitionIndex { maxValue?: number; minValue?: number; type: 'number'; } export type CustomFieldDefinitionIndex = CustomFieldDefinitionCheckboxIndex | CustomFieldDefinitionDateIndex | CustomFieldDefinitionMultiSelectIndex | CustomFieldDefinitionNumberIndex | CustomFieldDefinitionRadioButtonIndex | CustomFieldDefinitionSelectIndex | CustomFieldDefinitionStringIndex; export {};