chore (SW-834): Upgrade to Next 15 * wip: apply codemod and upgrade swc plugin * wip: design-system to react 19, fix issues from async (search)params * wip: fix remaining issues from codemod serverClient is now async because context use headers() getLang is now async because it uses headers() * Minor cleanup * Inline react-material-symbols package Package is seemingly not maintained any more and doesn't support React 19. This copies the package source into `design-system`, makes the necessary changes for 19 and export it for others to use. * Fix missing awaits * Disable modal exit animations Enabling modal exit animations via isExiting prop is causing modals to be rendered in "hidden" state and never unmount. Seems to be an issue with react-aria-components, see https://github.com/adobe/react-spectrum/issues/7563. Can probably be fixed by rewriting to a solution similar to https://react-spectrum.adobe.com/react-aria/examples/framer-modal-sheet.html * Remove unstable cache implementation and use in memory cache locally * Fix ref type in SelectFilter * Use cloneElement to add key prop to element Approved-by: Linus Flood
Booking flow
The booking flow is the user journey of booking one or more rooms at our hotels. Everything from choosing the date to payment and confirmation is part of the booking flow.
Booking widget
On most of the pages on the website we have a booking widget. This is where the user starts the booking flow, by filling the form and submit. If they entered a city as the destination they will land on the select hotel page and if they entered a specific hotel they will land on the select rate page.
Select hotel
Lists available hotels based on the search criteria. When the user selects a hotel they land on the select rate page.
Select rate, room, breakfast etc
This is a page with an accordion like design, but every accordion is handled as its own page with its own URL.
State management
The state, like search parameters and selected alternatives, is kept throughout the booking flow in the URL.