import { ReactNode } from 'react'; // import { TravelClass, TravelType } from '../shared/types'; import { WebsiteConfigurationSearchConfiguration, PortalQsmType } from '@qite/tide-client'; import { PickerItem } from '../shared/types'; export interface QSMConfiguration { type?: PortalQsmType; searchConfigurations: WebsiteConfigurationSearchConfiguration[]; askRooms?: boolean; // hotel || roundTrip askTravelType?: boolean; // hotel || roundTrip allowOneWay?: boolean; // flight allowRoundtrip?: boolean; // flight allowOpenJaw?: boolean; // flight allowMultiCity?: boolean; // flight askTravelClass?: boolean; // flight additionalFilters?: AdditionalFilters; // flight askTravelers: boolean; askNationality?: boolean; // Origins and destinations departureAirport?: BaseFieldConfig; destinationAirport?: BaseFieldConfig; returnAirport?: BaseFieldConfig; destination?: BaseFieldConfig; // Travel types travelTypes?: PickerItem[]; travelTypeIcon?: ReactNode; // Travel classes travelClasses?: PickerItem[]; travelClassIcon?: ReactNode; // Date flexibility dateFlexibility?: DateFlexibility[]; minDate?: Date; maxDate?: Date; showReturnDate?: boolean; datesIcon?: ReactNode; // Travelers defaultTravelers?: number; maxTravelers?: number; maxChildAge?: number; maxInfantAge?: number; onSubmit: (data: any) => void; submitIcon: ReactNode; nationalities: PickerItem[]; languageCode?: string; } export interface BaseFieldConfig { fieldKey: string; label: string; placeholder: string; icon: ReactNode; options: TypeaheadOption[]; autoComplete?: boolean; onChange?: (data: any) => void; } export interface TypeaheadOption { key: string; value: string; iataCode?: string; country?: string; type: OptionType; } export type OptionType = 'country' | 'region' | 'oord' | 'location' | 'airport' | 'hotel' | 'other'; export interface SingleFieldConfig extends BaseFieldConfig { type: 'single'; } export interface DoubleFieldConfig { type: 'double'; fieldKey: string; showReverse?: boolean; disableReturnField?: boolean; fields: BaseFieldConfig[]; } export type FieldConfig = SingleFieldConfig | DoubleFieldConfig; export interface AdditionalFilters { showDirectFlights: boolean; includeLuggage: boolean; } export interface DateFlexibility { name: string; before: number; after: number; } export type MobileFilterType = 'search' | 'date' | 'traveler' | null; export type TravelerType = 'adults' | 'kids' | 'babies'; export interface Room { adults: number; kids: number; babies: number; }