import { ComponentType } from 'react'; export interface ResponsiveConfig { xs?: string; mobile?: string; tablet?: string; desktop?: string; xl?: string; } export type ResponsiveConfigNoXs = Omit; export interface ImageHeightConfig { $heightXs?: string; $heightSm?: string; $heightMd?: string; $heightLg?: string; $heightXl?: string; isStaticGrid?: boolean; } export interface TripCardsElement { class?: string; tripcards: string; title?: string; titleurl?: string; description?: string; } export interface TripCardsProps { element: TripCardsElement; useMockData?: boolean; widthContainerConfig?: ResponsiveConfig; widthItemConfig?: ResponsiveConfig; maxWidthItemConfig?: ResponsiveConfig; imgHeight?: ImageHeightConfig; forceStaticGrid?: boolean; hostName?: string; } export interface DecodedTripCard { cruise_id: string; } export interface TripCardApiData { cruise_id: string; image: string; offer_label?: string; gift_banner?: string; headline: string; date: string; duration: string; destination: string; ship: string; original_price?: string; price: string; logo: string; logo_url: string; logo_name: string; cta_url: string; cta_text?: string; } export interface TripCardProps { card: TripCardApiData; isStaticGrid?: boolean; imgHeight?: ImageHeightConfig; } export interface ApiCruiseResult { post_id: number; cruise_id: number; cruise_title: string; cruise_line: { name: string; link: string; logo: string; }; ship: { name: string; link: string; image: string; }; departs: string; ends: string; date_label: string; destination: string[]; duration: number; itinerary: string[]; prices: { cheapest_price: number | string; inside: string | number; outside: string | number; balcony: string | number; suite: string | number; }; was_prices: { inside: number; outside: number; balcony: number; suite: number; }; link: string; campaigns: string[]; extras: { date: string; duration: string; destination: string; info: string; }; } export interface TripCardsLayoutProps { element: TripCardsElement; items: Array<{ id: string | number; data?: TripCardApiData }>; CardComponent: ComponentType; itemsPerPage: number; widthContainerConfig?: ResponsiveConfig; widthItemConfig?: ResponsiveConfig; maxWidthItemConfig?: ResponsiveConfig; imgHeight?: ImageHeightConfig; forceStaticGrid?: boolean; } export type ImageContainerProps = ImageHeightConfig; export type ContainerProps = Partial; export interface CurrentPriceProps { $isEnquire?: boolean; }