feat(BOOK-463): Fetching hotel filters from CMS and using these inside the destination pages and select hotel page

* feat(BOOK-463): Fetching hotel filters from CMS and using these inside the destination pages

* fix(BOOK-698): fetch hotel filters from CMS on select hotel page

Approved-by: Bianca Widstam
This commit is contained in:
Erik Tiekstra
2026-01-12 12:02:25 +00:00
parent b2ca2c2612
commit 0c6a4cf186
40 changed files with 732 additions and 399 deletions

View File

@@ -1,17 +0,0 @@
import type { DestinationCityListItem } from "@scandic-hotels/trpc/types/destinationCityPage"
import type { DestinationFilters } from "@scandic-hotels/trpc/types/destinationsData"
import type {
CategorizedHotelFilters,
HotelListingHotelData,
HotelSortItem,
} from "@scandic-hotels/trpc/types/hotel"
export interface DestinationDataProviderProps extends React.PropsWithChildren {
allHotels: HotelListingHotelData[]
allCities?: DestinationCityListItem[]
hotelFilters: CategorizedHotelFilters
seoFilters: DestinationFilters
filterFromUrl?: string
sortItems: HotelSortItem[]
pathname: string
}

View File

@@ -1,11 +1,11 @@
import type { HotelFilters } from "@scandic-hotels/trpc/routers/hotels/filters/output"
import type {
CategorizedHotelFilters,
HotelListingHotelData,
HotelSortItem,
} from "@scandic-hotels/trpc/types/hotel"
export interface HotelListingDataProviderProps extends React.PropsWithChildren {
allHotels: HotelListingHotelData[]
allFilters: CategorizedHotelFilters
allFilters: HotelFilters
sortItems: HotelSortItem[]
}

View File

@@ -1,11 +1,13 @@
import type {
HotelFilter,
HotelFilters,
} from "@scandic-hotels/trpc/routers/hotels/filters/output"
import type { DestinationCityListItem } from "@scandic-hotels/trpc/types/destinationCityPage"
import type {
DestinationFilter,
DestinationFilters,
} from "@scandic-hotels/trpc/types/destinationsData"
import type {
CategorizedHotelFilters,
HotelFilter,
HotelListingHotelData,
HotelSortItem,
HotelSortOption,
@@ -39,17 +41,20 @@ export interface DestinationDataState {
filterFromUrl: HotelFilter | null
pendingHotelCount: number
pendingCityCount: number
allFilters: CategorizedHotelFilters
allFilters: HotelFilters
filtersWithCount: HotelFilters
activeSeoFilter: DestinationFilter | null
basePathnameWithoutFilters: string
sortItems: HotelSortItem[]
isLoading: boolean
}
export interface InitialState
extends Pick<DestinationDataState, "allHotels" | "allCities" | "sortItems"> {
export interface InitialState extends Pick<
DestinationDataState,
"allHotels" | "allCities" | "sortItems"
> {
pathname: string
searchParams: ReadonlyURLSearchParams
hotelFilters: CategorizedHotelFilters
hotelFilters: HotelFilters
seoFilters: DestinationFilters
}

View File

@@ -1,5 +1,8 @@
import type {
CategorizedHotelFilters,
HotelFilter,
HotelFilters,
} from "@scandic-hotels/trpc/routers/hotels/filters/output"
import type {
HotelListingHotelData,
HotelSortItem,
HotelSortOption,
@@ -9,7 +12,7 @@ import type { ReadonlyURLSearchParams } from "next/navigation"
interface Actions {
updateActiveFiltersAndSort: (filters: string[], sort: string | null) => void
setPendingSort: (sort: HotelSortOption) => void
togglePendingFilter: (filter: string) => void
togglePendingFilter: (filter: HotelFilter) => void
clearPendingFilters: () => void
resetPendingValues: () => void
setIsLoading: (isLoading: boolean) => void
@@ -22,19 +25,19 @@ export interface HotelListingDataState {
pendingSort: HotelSortOption
activeSort: HotelSortOption
defaultSort: HotelSortOption
pendingFilters: string[]
activeFilters: string[]
pendingFilters: HotelFilter[]
activeFilters: HotelFilter[]
pendingHotelCount: number
allFilters: CategorizedHotelFilters
allFilters: HotelFilters
filtersWithCount: HotelFilters
allFilterSlugs: string[]
sortItems: HotelSortItem[]
isLoading: boolean
}
export interface InitialState
extends Pick<
HotelListingDataState,
"allHotels" | "sortItems" | "allFilters"
> {
export interface InitialState extends Pick<
HotelListingDataState,
"allHotels" | "sortItems" | "allFilters"
> {
searchParams: ReadonlyURLSearchParams
}