import { __ } from '@wordpress/i18n';
export interface Field {
    key: string;
    label: string;
    type: 'text' | 'textarea' | 'number' | 'checkbox' | 'select' | 'date' | 'time' | 'datetime-local' | 'email' | 'tel';
    nullable?: boolean;
    required?: boolean;
    min?: number;
    maxLength?: number;
    description?: string;
    options?: [
        string,
        string
    ][];
}
export const resourceTypes: [
    string,
    string
][] = [
    ['court', __('Court', 'abece-booking')],
    ['field', __('Field', 'abece-booking')],
    ['wall', __('Wall', 'abece-booking')],
    ['room', __('Room', 'abece-booking')],
    ['other', __('Other', 'abece-booking')],
    ['table', __('Table', 'abece-booking')],
    ['lane', __('Lane', 'abece-booking')],
    ['box', __('Box', 'abece-booking')],
];
export const accessModes: [
    string,
    string
][] = [
    ['public', __('Public', 'abece-booking')],
    ['members_only', __('Members only', 'abece-booking')],
    ['members_priority', __('Members priority', 'abece-booking')],
];
export const commonFields: Field[] = [
    { key: 'name', label: __('Name', 'abece-booking'), type: 'text', required: true },
    { key: 'slug', label: __('Slug', 'abece-booking'), type: 'text' },
    { key: 'description', label: __('Description', 'abece-booking'), type: 'textarea', nullable: true },
    { key: 'is_active', label: __('Active', 'abece-booking'), type: 'checkbox' },
    { key: 'sort_order', label: __('Sort order', 'abece-booking'), type: 'number', required: true },
];
export const resourceFields: Field[] = [
    { key: 'sport_id', label: __('Sport', 'abece-booking'), type: 'select', nullable: true },
    { key: 'resource_type', label: __('Resource type', 'abece-booking'), type: 'text', required: true, maxLength: 50 },
    { key: 'surface', label: __('Surface', 'abece-booking'), type: 'text', nullable: true },
    { key: 'capacity', label: __('Capacity', 'abece-booking'), type: 'number', nullable: true, min: 0 },
    { key: 'is_visible', label: __('Visible', 'abece-booking'), type: 'checkbox' },
    { key: 'is_bookable', label: __('Bookable', 'abece-booking'), type: 'checkbox' },
    { key: 'access_mode', label: __('Access mode', 'abece-booking'), type: 'select', options: accessModes },
    { key: 'member_booking_days', label: __('Members can book up to (days ahead)', 'abece-booking'), type: 'number', nullable: true, min: 1 },
    { key: 'guest_booking_days', label: __('Non-members can book up to (days ahead)', 'abece-booking'), type: 'number', nullable: true, min: 1 },
    { key: 'public_release_hours', label: __('Release to non-members (hours before start)', 'abece-booking'), type: 'number', nullable: true, min: 1 },
    { key: 'min_booking_minutes', label: __('Minimum booking minutes', 'abece-booking'), type: 'number', required: true, min: 1 },
    { key: 'max_booking_minutes', label: __('Maximum client booking duration', 'abece-booking'), type: 'number', required: true, min: 1 },
    { key: 'booking_step_minutes', label: __('Booking step minutes', 'abece-booking'), type: 'number', required: true, min: 1 },
];
