@hotelcard/ui 0.0.21 → 0.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of @hotelcard/ui might be problematic. Click here for more details.
- package/dist/index.cjs +2 -4684
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +1 -3475
- package/dist/index.d.ts +2714 -2559
- package/dist/index.js +5441 -3716
- package/dist/index.js.map +1 -1
- package/package.json +17 -17
- package/dist/index.css.map +0 -1
- package/dist/index.d.cts +0 -2559
package/dist/index.d.cts
DELETED
|
@@ -1,2559 +0,0 @@
|
|
|
1
|
-
import * as React$1 from 'react';
|
|
2
|
-
import React__default, { ReactNode, ButtonHTMLAttributes } from 'react';
|
|
3
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
-
import * as i18next from 'i18next';
|
|
5
|
-
|
|
6
|
-
var button = {
|
|
7
|
-
order: "Order",
|
|
8
|
-
"order-navigation": "Join",
|
|
9
|
-
"order-hc": "Order HotelCard",
|
|
10
|
-
"my-account": "My account",
|
|
11
|
-
search: "Search",
|
|
12
|
-
"back-to-top": "Back to top"
|
|
13
|
-
};
|
|
14
|
-
var link = {
|
|
15
|
-
"member-benefits": "Member Benefits",
|
|
16
|
-
"view-all-hotels": "View all hotel deals",
|
|
17
|
-
"search-by-map": "Map search",
|
|
18
|
-
"search-by-region": "Hotels by region",
|
|
19
|
-
"search-by-experience": "Hotels by experience",
|
|
20
|
-
"travel-inspiration": "Travel inspiration",
|
|
21
|
-
"booking-tips-and-tricks": "Booking tips",
|
|
22
|
-
home: "Home",
|
|
23
|
-
"all-hotel-deals": "All hotel deals",
|
|
24
|
-
"search-results": "Search results"
|
|
25
|
-
};
|
|
26
|
-
var general = {
|
|
27
|
-
"signed-out": "Log in and book",
|
|
28
|
-
"room-price": "from CHF xxx / room",
|
|
29
|
-
guarantee: "14-day money-back guarantee",
|
|
30
|
-
contact: "More questions? Contact us.",
|
|
31
|
-
"breakfast-included": "Breakfast included",
|
|
32
|
-
"free-cancellation": "Free cancellation",
|
|
33
|
-
"suggested-destinations": "Not sure where to travel next?",
|
|
34
|
-
"when-months": "When do you want to go?",
|
|
35
|
-
"hotel-deals-found": "hotel deals found",
|
|
36
|
-
"no-results": "Explore different destinations, change your dates, or remove some filters.",
|
|
37
|
-
"unavailable-for-selected-days": "Unavailable for selected dates.",
|
|
38
|
-
"cant-accommodate-all": "Hotel can’t accommodate all guests.",
|
|
39
|
-
"reset-destination": "Reset destination search to use region filters."
|
|
40
|
-
};
|
|
41
|
-
var label = {
|
|
42
|
-
"price-from": "from ",
|
|
43
|
-
"price-for": "/ room",
|
|
44
|
-
"per-room-night": "per room & night from",
|
|
45
|
-
"new": "New",
|
|
46
|
-
anytime: "Anytime",
|
|
47
|
-
anywhere: "All destinations",
|
|
48
|
-
dates: "Dates",
|
|
49
|
-
flexible: "Flexible",
|
|
50
|
-
where: "Where",
|
|
51
|
-
when: "When",
|
|
52
|
-
who: "Who",
|
|
53
|
-
nearby: "Nearby",
|
|
54
|
-
hotels: "Hotel",
|
|
55
|
-
filter: "Filter",
|
|
56
|
-
sort: "Sort",
|
|
57
|
-
map: "Map",
|
|
58
|
-
rating: "Rating",
|
|
59
|
-
"rating-excellent": "Excellent",
|
|
60
|
-
"rating-very-good": "Very good",
|
|
61
|
-
"rating-good": "Good",
|
|
62
|
-
"rating-fair": "Fair",
|
|
63
|
-
"rating-none": "No rating",
|
|
64
|
-
clear: "Clear"
|
|
65
|
-
};
|
|
66
|
-
var product = {
|
|
67
|
-
"6m": "6-month subscription",
|
|
68
|
-
"1y": "1-year subscription",
|
|
69
|
-
"2y": "2-year subscription",
|
|
70
|
-
"3y": "3-year subscription",
|
|
71
|
-
"price-6m": "79.-",
|
|
72
|
-
"price-6m-disc": "59.-",
|
|
73
|
-
"price-1y": "99.-",
|
|
74
|
-
"price-1y-disc": "79.-",
|
|
75
|
-
"price-2y": "198.-",
|
|
76
|
-
"price-2y-disc": "173.-",
|
|
77
|
-
"price-3y": "297.-",
|
|
78
|
-
"price-3y-disc": "247.-",
|
|
79
|
-
"price-gift": "99.-",
|
|
80
|
-
"price-gift-disc": "59.-"
|
|
81
|
-
};
|
|
82
|
-
var subheadline = {
|
|
83
|
-
"your-hc": "Your HotelCard",
|
|
84
|
-
"popular-hotels": "Popular hotel deals",
|
|
85
|
-
"no-results": "Explore different destinations, change your dates, or remove some filters.",
|
|
86
|
-
"sort-by": "Sort by"
|
|
87
|
-
};
|
|
88
|
-
var form = {
|
|
89
|
-
guests: "guests",
|
|
90
|
-
guest: "guest",
|
|
91
|
-
adults: "Adults",
|
|
92
|
-
children: "Children",
|
|
93
|
-
pet: "Pet",
|
|
94
|
-
"age-of-child": "Child’s age",
|
|
95
|
-
age: "Age",
|
|
96
|
-
"age-error": "Please select age"
|
|
97
|
-
};
|
|
98
|
-
var filter = {
|
|
99
|
-
filters: "Filters",
|
|
100
|
-
destination: "Destination",
|
|
101
|
-
experience: "Experience",
|
|
102
|
-
"show-all": "Show all",
|
|
103
|
-
price: "Price",
|
|
104
|
-
discount: "Discount",
|
|
105
|
-
services: "Services",
|
|
106
|
-
meals: "Meals",
|
|
107
|
-
"hotel-category": "Hotel category",
|
|
108
|
-
reviews: "Reviews",
|
|
109
|
-
mobility: "Mobility",
|
|
110
|
-
"wellness-spa": "Wellness & Spa",
|
|
111
|
-
"price-high-low": "Price high to low",
|
|
112
|
-
"price-low-high": "Price low to high",
|
|
113
|
-
"best-rating": "Best guest rating",
|
|
114
|
-
"most-popular": "Most popular",
|
|
115
|
-
"newest-hotels": "Newest",
|
|
116
|
-
relevance: "Relevance",
|
|
117
|
-
selected: "Selected:",
|
|
118
|
-
"clear-all": "Clear all",
|
|
119
|
-
options: "Options",
|
|
120
|
-
"hotellerie-suisse": "Classification HotellerieSuisse",
|
|
121
|
-
trustyou: "Reviews from travelers on TrustYou®",
|
|
122
|
-
"select-all": "Select all",
|
|
123
|
-
reset: "Reset",
|
|
124
|
-
"breakfast-included": "Breakfast included"
|
|
125
|
-
};
|
|
126
|
-
var headline = {
|
|
127
|
-
"no-results": "No stays match your search right now"
|
|
128
|
-
};
|
|
129
|
-
var meta_title = "Search Hotels - HotelCard";
|
|
130
|
-
var meta_description = "Search for hotels by city, region, or hotel name";
|
|
131
|
-
var title = "Search";
|
|
132
|
-
var loading = "Loading hotels...";
|
|
133
|
-
var retry = "Retry";
|
|
134
|
-
var close_map = "Close map";
|
|
135
|
-
var seo = {
|
|
136
|
-
default_title: "Search Hotel Deals - HotelCard",
|
|
137
|
-
location_title: "Hotels in {{location}}",
|
|
138
|
-
region_title: "Hotels in {{region}}",
|
|
139
|
-
experience_title: "{{experience}} Hotels",
|
|
140
|
-
default_description: "Discover {{count}} hotels with exclusive HotelCard discounts.",
|
|
141
|
-
location_description: "Find {{count}} hotels in {{location}} with exclusive discounts up to 50% off."
|
|
142
|
-
};
|
|
143
|
-
var modal = {
|
|
144
|
-
close_search: "Close search",
|
|
145
|
-
placeholder_anywhere: "Anywhere",
|
|
146
|
-
recent_searches: "Recent searches",
|
|
147
|
-
remove_recent: "Remove from recent searches",
|
|
148
|
-
all_destinations: "All destinations"
|
|
149
|
-
};
|
|
150
|
-
var map = {
|
|
151
|
-
open_search: "Open search",
|
|
152
|
-
open_filters: "Open filters",
|
|
153
|
-
switch_to_list: "Switch to list view",
|
|
154
|
-
zoom_in: "Zoom in",
|
|
155
|
-
zoom_out: "Zoom out",
|
|
156
|
-
no_location_data: "No hotels with location data available",
|
|
157
|
-
hotels_missing_coordinates: "{{count}} hotels found but missing coordinates",
|
|
158
|
-
no_hotels_in_area: "No hotels found in this area"
|
|
159
|
-
};
|
|
160
|
-
var view = {
|
|
161
|
-
list: "List"
|
|
162
|
-
};
|
|
163
|
-
var breadcrumb = {
|
|
164
|
-
properties_found: "{{count}} properties found",
|
|
165
|
-
properties_found_location: "{{location}}: {{count}} properties found"
|
|
166
|
-
};
|
|
167
|
-
var aria = {
|
|
168
|
-
search_results_breadcrumb: "Search results",
|
|
169
|
-
close: "Close",
|
|
170
|
-
previous_image: "Previous image",
|
|
171
|
-
next_image: "Next image",
|
|
172
|
-
add_to_favorites: "Add to favorites",
|
|
173
|
-
remove_from_favorites: "Remove from favorites",
|
|
174
|
-
list_view: "Switch to list view",
|
|
175
|
-
map_view: "Switch to map view"
|
|
176
|
-
};
|
|
177
|
-
var breadcrumb_nav = {
|
|
178
|
-
home: "Home"
|
|
179
|
-
};
|
|
180
|
-
var guest_selector = {
|
|
181
|
-
adults_description: "Ages 13 or above",
|
|
182
|
-
children_description: "Ages 2-12",
|
|
183
|
-
infants_description: "Under 2",
|
|
184
|
-
decrease_adults: "Decrease adults",
|
|
185
|
-
increase_adults: "Increase adults",
|
|
186
|
-
decrease_children: "Decrease children",
|
|
187
|
-
increase_children: "Increase children",
|
|
188
|
-
decrease_infants: "Decrease infants",
|
|
189
|
-
increase_infants: "Increase infants",
|
|
190
|
-
toggle_infants: "Toggle pet"
|
|
191
|
-
};
|
|
192
|
-
var search_form = {
|
|
193
|
-
location_placeholder: "Search for hotels, cities, regions...",
|
|
194
|
-
distance_any: "- km",
|
|
195
|
-
distance_5: "+ 5 km",
|
|
196
|
-
distance_10: "+ 10 km",
|
|
197
|
-
distance_20: "+ 20 km",
|
|
198
|
-
distance_30: "+ 30 km",
|
|
199
|
-
distance_50: "+ 50 km",
|
|
200
|
-
searching: "Searching...",
|
|
201
|
-
reset_filters: "Reset"
|
|
202
|
-
};
|
|
203
|
-
var dropdown = {
|
|
204
|
-
hotels: "Hotels",
|
|
205
|
-
cities: "Cities",
|
|
206
|
-
regions: "Regions",
|
|
207
|
-
countries: "Countries",
|
|
208
|
-
"no-results": "No results found"
|
|
209
|
-
};
|
|
210
|
-
var filters = {
|
|
211
|
-
show_filters: "Show filters",
|
|
212
|
-
open_filters: "Open filters",
|
|
213
|
-
filter_by: "Filter by:",
|
|
214
|
-
hotel_rating: "Hotel rating",
|
|
215
|
-
show_results: "Show {{count}} results",
|
|
216
|
-
apply_filters: "Apply filters",
|
|
217
|
-
close_filters: "Close filters",
|
|
218
|
-
view_in_map: "View in a Map",
|
|
219
|
-
popular_filters: "Popular filters",
|
|
220
|
-
show_less: "Show less",
|
|
221
|
-
selected: "Selected",
|
|
222
|
-
clear_all: "Clear all",
|
|
223
|
-
options: {
|
|
224
|
-
instant_booking: "Immediately bookable",
|
|
225
|
-
pets_allowed: "Pets allowed",
|
|
226
|
-
free_cancellation: "Free cancellation"
|
|
227
|
-
}
|
|
228
|
-
};
|
|
229
|
-
var date_selector = {
|
|
230
|
-
apply: "Apply",
|
|
231
|
-
months_selected: "{{count}} months"
|
|
232
|
-
};
|
|
233
|
-
var star_rating = {
|
|
234
|
-
"5_stars": "5 stars",
|
|
235
|
-
"4_stars": "4 stars",
|
|
236
|
-
"3_stars": "3 stars",
|
|
237
|
-
"2_stars": "2 stars",
|
|
238
|
-
not_classified: "Not classified",
|
|
239
|
-
swiss_lodge: "Swiss Lodge"
|
|
240
|
-
};
|
|
241
|
-
var results = {
|
|
242
|
-
hotels_found: "{{count}} hotels found",
|
|
243
|
-
load_more: "Load more",
|
|
244
|
-
loading: "Loading...",
|
|
245
|
-
end_of_results: "You've reached the end of results",
|
|
246
|
-
no_results: "No hotels found",
|
|
247
|
-
try_different_search: "Try adjusting your search criteria",
|
|
248
|
-
unavailable_banner_title: "More hotels that might interest you",
|
|
249
|
-
unavailable_banner_description: "These hotels don't currently have availability matching your search criteria."
|
|
250
|
-
};
|
|
251
|
-
var errors = {
|
|
252
|
-
search_failed: "Search failed",
|
|
253
|
-
load_more_failed: "Failed to load more hotels"
|
|
254
|
-
};
|
|
255
|
-
var error = {
|
|
256
|
-
title: "Something went wrong",
|
|
257
|
-
description: "We couldn't load the hotels. Please try again.",
|
|
258
|
-
retry: "Try again"
|
|
259
|
-
};
|
|
260
|
-
var no_results = {
|
|
261
|
-
title: "No stays match your search right now.",
|
|
262
|
-
description: "Explore different destinations, change your dates, or remove some filters.",
|
|
263
|
-
description_with_filters: "Explore different destinations, change your dates, or remove some filters.",
|
|
264
|
-
clear_filters: "Clear all filters"
|
|
265
|
-
};
|
|
266
|
-
var pagination = {
|
|
267
|
-
label: "Pagination",
|
|
268
|
-
previous: "Previous page",
|
|
269
|
-
previous_short: "Previous",
|
|
270
|
-
next: "Next page",
|
|
271
|
-
next_short: "Next",
|
|
272
|
-
page: "Page {{page}}"
|
|
273
|
-
};
|
|
274
|
-
var hotel_card = {
|
|
275
|
-
rating: "Rating",
|
|
276
|
-
price_from: "per room & night from",
|
|
277
|
-
not_available: "Not available for your search criteria"
|
|
278
|
-
};
|
|
279
|
-
var badges = {
|
|
280
|
-
"new": "New"
|
|
281
|
-
};
|
|
282
|
-
var clear_location = "Clear location";
|
|
283
|
-
var clear_date = "Clear date";
|
|
284
|
-
var clear_guests = "Clear guests";
|
|
285
|
-
var en = {
|
|
286
|
-
button: button,
|
|
287
|
-
link: link,
|
|
288
|
-
general: general,
|
|
289
|
-
label: label,
|
|
290
|
-
product: product,
|
|
291
|
-
subheadline: subheadline,
|
|
292
|
-
form: form,
|
|
293
|
-
filter: filter,
|
|
294
|
-
headline: headline,
|
|
295
|
-
meta_title: meta_title,
|
|
296
|
-
meta_description: meta_description,
|
|
297
|
-
title: title,
|
|
298
|
-
loading: loading,
|
|
299
|
-
retry: retry,
|
|
300
|
-
close_map: close_map,
|
|
301
|
-
seo: seo,
|
|
302
|
-
modal: modal,
|
|
303
|
-
map: map,
|
|
304
|
-
view: view,
|
|
305
|
-
breadcrumb: breadcrumb,
|
|
306
|
-
aria: aria,
|
|
307
|
-
breadcrumb_nav: breadcrumb_nav,
|
|
308
|
-
guest_selector: guest_selector,
|
|
309
|
-
search_form: search_form,
|
|
310
|
-
dropdown: dropdown,
|
|
311
|
-
filters: filters,
|
|
312
|
-
date_selector: date_selector,
|
|
313
|
-
star_rating: star_rating,
|
|
314
|
-
results: results,
|
|
315
|
-
errors: errors,
|
|
316
|
-
error: error,
|
|
317
|
-
no_results: no_results,
|
|
318
|
-
pagination: pagination,
|
|
319
|
-
hotel_card: hotel_card,
|
|
320
|
-
badges: badges,
|
|
321
|
-
clear_location: clear_location,
|
|
322
|
-
clear_date: clear_date,
|
|
323
|
-
clear_guests: clear_guests
|
|
324
|
-
};
|
|
325
|
-
|
|
326
|
-
declare const translations: {
|
|
327
|
-
readonly de: {
|
|
328
|
-
button: {
|
|
329
|
-
order: string;
|
|
330
|
-
"order-navigation": string;
|
|
331
|
-
"order-hc": string;
|
|
332
|
-
"my-account": string;
|
|
333
|
-
search: string;
|
|
334
|
-
"back-to-top": string;
|
|
335
|
-
};
|
|
336
|
-
link: {
|
|
337
|
-
"member-benefits": string;
|
|
338
|
-
"view-all-hotels": string;
|
|
339
|
-
"search-by-map": string;
|
|
340
|
-
"search-by-region": string;
|
|
341
|
-
"search-by-experience": string;
|
|
342
|
-
"travel-inspiration": string;
|
|
343
|
-
"booking-tips-and-tricks": string;
|
|
344
|
-
home: string;
|
|
345
|
-
"all-hotel-deals": string;
|
|
346
|
-
"search-results": string;
|
|
347
|
-
};
|
|
348
|
-
general: {
|
|
349
|
-
"signed-out": string;
|
|
350
|
-
"room-price": string;
|
|
351
|
-
guarantee: string;
|
|
352
|
-
contact: string;
|
|
353
|
-
"breakfast-included": string;
|
|
354
|
-
"free-cancellation": string;
|
|
355
|
-
"suggested-destinations": string;
|
|
356
|
-
"when-months": string;
|
|
357
|
-
"hotel-deals-found": string;
|
|
358
|
-
"no-results": string;
|
|
359
|
-
"unavailable-for-selected-days": string;
|
|
360
|
-
"cant-accommodate-all": string;
|
|
361
|
-
"reset-destination": string;
|
|
362
|
-
};
|
|
363
|
-
label: {
|
|
364
|
-
"price-from": string;
|
|
365
|
-
"price-for": string;
|
|
366
|
-
"per-room-night": string;
|
|
367
|
-
new: string;
|
|
368
|
-
anytime: string;
|
|
369
|
-
anywhere: string;
|
|
370
|
-
dates: string;
|
|
371
|
-
flexible: string;
|
|
372
|
-
where: string;
|
|
373
|
-
when: string;
|
|
374
|
-
who: string;
|
|
375
|
-
nearby: string;
|
|
376
|
-
hotels: string;
|
|
377
|
-
filter: string;
|
|
378
|
-
sort: string;
|
|
379
|
-
map: string;
|
|
380
|
-
rating: string;
|
|
381
|
-
"rating-excellent": string;
|
|
382
|
-
"rating-very-good": string;
|
|
383
|
-
"rating-good": string;
|
|
384
|
-
"rating-fair": string;
|
|
385
|
-
"rating-none": string;
|
|
386
|
-
clear: string;
|
|
387
|
-
};
|
|
388
|
-
product: {
|
|
389
|
-
"6m": string;
|
|
390
|
-
"1y": string;
|
|
391
|
-
"2y": string;
|
|
392
|
-
"3y": string;
|
|
393
|
-
"price-6m": string;
|
|
394
|
-
"price-6m-disc": string;
|
|
395
|
-
"price-1y": string;
|
|
396
|
-
"price-1y-disc": string;
|
|
397
|
-
"price-2y": string;
|
|
398
|
-
"price-2y-disc": string;
|
|
399
|
-
"price-3y": string;
|
|
400
|
-
"price-3y-disc": string;
|
|
401
|
-
"price-gift": string;
|
|
402
|
-
"price-gift-disc": string;
|
|
403
|
-
};
|
|
404
|
-
subheadline: {
|
|
405
|
-
"your-hc": string;
|
|
406
|
-
"popular-hotels": string;
|
|
407
|
-
"no-results": string;
|
|
408
|
-
"sort-by": string;
|
|
409
|
-
};
|
|
410
|
-
form: {
|
|
411
|
-
guests: string;
|
|
412
|
-
guest: string;
|
|
413
|
-
adults: string;
|
|
414
|
-
children: string;
|
|
415
|
-
pet: string;
|
|
416
|
-
"age-of-child": string;
|
|
417
|
-
age: string;
|
|
418
|
-
"age-error": string;
|
|
419
|
-
};
|
|
420
|
-
filter: {
|
|
421
|
-
filters: string;
|
|
422
|
-
destination: string;
|
|
423
|
-
experience: string;
|
|
424
|
-
"show-all": string;
|
|
425
|
-
price: string;
|
|
426
|
-
discount: string;
|
|
427
|
-
services: string;
|
|
428
|
-
meals: string;
|
|
429
|
-
"hotel-category": string;
|
|
430
|
-
reviews: string;
|
|
431
|
-
mobility: string;
|
|
432
|
-
"wellness-spa": string;
|
|
433
|
-
"price-high-low": string;
|
|
434
|
-
"price-low-high": string;
|
|
435
|
-
"best-rating": string;
|
|
436
|
-
"most-popular": string;
|
|
437
|
-
"newest-hotels": string;
|
|
438
|
-
relevance: string;
|
|
439
|
-
selected: string;
|
|
440
|
-
"clear-all": string;
|
|
441
|
-
options: string;
|
|
442
|
-
"hotellerie-suisse": string;
|
|
443
|
-
trustyou: string;
|
|
444
|
-
"select-all": string;
|
|
445
|
-
reset: string;
|
|
446
|
-
"breakfast-included": string;
|
|
447
|
-
};
|
|
448
|
-
headline: {
|
|
449
|
-
"no-results": string;
|
|
450
|
-
};
|
|
451
|
-
meta_title: string;
|
|
452
|
-
meta_description: string;
|
|
453
|
-
title: string;
|
|
454
|
-
loading: string;
|
|
455
|
-
retry: string;
|
|
456
|
-
close_map: string;
|
|
457
|
-
seo: {
|
|
458
|
-
default_title: string;
|
|
459
|
-
location_title: string;
|
|
460
|
-
region_title: string;
|
|
461
|
-
experience_title: string;
|
|
462
|
-
default_description: string;
|
|
463
|
-
location_description: string;
|
|
464
|
-
};
|
|
465
|
-
modal: {
|
|
466
|
-
close_search: string;
|
|
467
|
-
placeholder_anywhere: string;
|
|
468
|
-
recent_searches: string;
|
|
469
|
-
remove_recent: string;
|
|
470
|
-
all_destinations: string;
|
|
471
|
-
};
|
|
472
|
-
map: {
|
|
473
|
-
open_search: string;
|
|
474
|
-
open_filters: string;
|
|
475
|
-
switch_to_list: string;
|
|
476
|
-
zoom_in: string;
|
|
477
|
-
zoom_out: string;
|
|
478
|
-
no_location_data: string;
|
|
479
|
-
hotels_missing_coordinates: string;
|
|
480
|
-
no_hotels_in_area: string;
|
|
481
|
-
};
|
|
482
|
-
view: {
|
|
483
|
-
list: string;
|
|
484
|
-
};
|
|
485
|
-
breadcrumb: {
|
|
486
|
-
properties_found: string;
|
|
487
|
-
properties_found_location: string;
|
|
488
|
-
};
|
|
489
|
-
aria: {
|
|
490
|
-
search_results_breadcrumb: string;
|
|
491
|
-
close: string;
|
|
492
|
-
previous_image: string;
|
|
493
|
-
next_image: string;
|
|
494
|
-
add_to_favorites: string;
|
|
495
|
-
remove_from_favorites: string;
|
|
496
|
-
list_view: string;
|
|
497
|
-
map_view: string;
|
|
498
|
-
};
|
|
499
|
-
breadcrumb_nav: {
|
|
500
|
-
home: string;
|
|
501
|
-
};
|
|
502
|
-
guest_selector: {
|
|
503
|
-
decrease_adults: string;
|
|
504
|
-
increase_adults: string;
|
|
505
|
-
decrease_children: string;
|
|
506
|
-
increase_children: string;
|
|
507
|
-
decrease_infants: string;
|
|
508
|
-
increase_infants: string;
|
|
509
|
-
toggle_infants: string;
|
|
510
|
-
};
|
|
511
|
-
search_form: {
|
|
512
|
-
location_placeholder: string;
|
|
513
|
-
distance_any: string;
|
|
514
|
-
distance_5: string;
|
|
515
|
-
distance_10: string;
|
|
516
|
-
distance_20: string;
|
|
517
|
-
distance_30: string;
|
|
518
|
-
distance_50: string;
|
|
519
|
-
searching: string;
|
|
520
|
-
reset_filters: string;
|
|
521
|
-
};
|
|
522
|
-
dropdown: {
|
|
523
|
-
hotels: string;
|
|
524
|
-
cities: string;
|
|
525
|
-
regions: string;
|
|
526
|
-
countries: string;
|
|
527
|
-
"no-results": string;
|
|
528
|
-
};
|
|
529
|
-
filters: {
|
|
530
|
-
show_filters: string;
|
|
531
|
-
open_filters: string;
|
|
532
|
-
filter_by: string;
|
|
533
|
-
hotel_rating: string;
|
|
534
|
-
show_results: string;
|
|
535
|
-
apply_filters: string;
|
|
536
|
-
close_filters: string;
|
|
537
|
-
view_in_map: string;
|
|
538
|
-
popular_filters: string;
|
|
539
|
-
destinations: string;
|
|
540
|
-
options_title: string;
|
|
541
|
-
options: {
|
|
542
|
-
instant_booking: string;
|
|
543
|
-
pets_allowed: string;
|
|
544
|
-
free_cancellation: string;
|
|
545
|
-
};
|
|
546
|
-
category: {
|
|
547
|
-
footer_prefix: string;
|
|
548
|
-
};
|
|
549
|
-
show_less: string;
|
|
550
|
-
selected: string;
|
|
551
|
-
clear_all: string;
|
|
552
|
-
};
|
|
553
|
-
date_selector: {
|
|
554
|
-
apply: string;
|
|
555
|
-
months_selected: string;
|
|
556
|
-
};
|
|
557
|
-
star_rating: {
|
|
558
|
-
"5_stars": string;
|
|
559
|
-
"4_stars": string;
|
|
560
|
-
"3_stars": string;
|
|
561
|
-
"2_stars": string;
|
|
562
|
-
not_classified: string;
|
|
563
|
-
swiss_lodge: string;
|
|
564
|
-
};
|
|
565
|
-
results: {
|
|
566
|
-
hotels_found: string;
|
|
567
|
-
load_more: string;
|
|
568
|
-
loading: string;
|
|
569
|
-
end_of_results: string;
|
|
570
|
-
no_results: string;
|
|
571
|
-
try_different_search: string;
|
|
572
|
-
unavailable_banner_title: string;
|
|
573
|
-
unavailable_banner_description: string;
|
|
574
|
-
};
|
|
575
|
-
no_results: {
|
|
576
|
-
title: string;
|
|
577
|
-
subtitle: string;
|
|
578
|
-
description: string;
|
|
579
|
-
description_with_filters: string;
|
|
580
|
-
clear_filters: string;
|
|
581
|
-
};
|
|
582
|
-
errors: {
|
|
583
|
-
search_failed: string;
|
|
584
|
-
load_more_failed: string;
|
|
585
|
-
};
|
|
586
|
-
error: {
|
|
587
|
-
title: string;
|
|
588
|
-
description: string;
|
|
589
|
-
retry: string;
|
|
590
|
-
};
|
|
591
|
-
pagination: {
|
|
592
|
-
label: string;
|
|
593
|
-
previous: string;
|
|
594
|
-
previous_short: string;
|
|
595
|
-
next: string;
|
|
596
|
-
next_short: string;
|
|
597
|
-
page: string;
|
|
598
|
-
};
|
|
599
|
-
hotel_card: {
|
|
600
|
-
rating: string;
|
|
601
|
-
price_from: string;
|
|
602
|
-
not_available: string;
|
|
603
|
-
};
|
|
604
|
-
badges: {
|
|
605
|
-
new: string;
|
|
606
|
-
};
|
|
607
|
-
};
|
|
608
|
-
readonly en: {
|
|
609
|
-
button: {
|
|
610
|
-
order: string;
|
|
611
|
-
"order-navigation": string;
|
|
612
|
-
"order-hc": string;
|
|
613
|
-
"my-account": string;
|
|
614
|
-
search: string;
|
|
615
|
-
"back-to-top": string;
|
|
616
|
-
};
|
|
617
|
-
link: {
|
|
618
|
-
"member-benefits": string;
|
|
619
|
-
"view-all-hotels": string;
|
|
620
|
-
"search-by-map": string;
|
|
621
|
-
"search-by-region": string;
|
|
622
|
-
"search-by-experience": string;
|
|
623
|
-
"travel-inspiration": string;
|
|
624
|
-
"booking-tips-and-tricks": string;
|
|
625
|
-
home: string;
|
|
626
|
-
"all-hotel-deals": string;
|
|
627
|
-
"search-results": string;
|
|
628
|
-
};
|
|
629
|
-
general: {
|
|
630
|
-
"signed-out": string;
|
|
631
|
-
"room-price": string;
|
|
632
|
-
guarantee: string;
|
|
633
|
-
contact: string;
|
|
634
|
-
"breakfast-included": string;
|
|
635
|
-
"free-cancellation": string;
|
|
636
|
-
"suggested-destinations": string;
|
|
637
|
-
"when-months": string;
|
|
638
|
-
"hotel-deals-found": string;
|
|
639
|
-
"no-results": string;
|
|
640
|
-
"unavailable-for-selected-days": string;
|
|
641
|
-
"cant-accommodate-all": string;
|
|
642
|
-
"reset-destination": string;
|
|
643
|
-
};
|
|
644
|
-
label: {
|
|
645
|
-
"price-from": string;
|
|
646
|
-
"price-for": string;
|
|
647
|
-
"per-room-night": string;
|
|
648
|
-
new: string;
|
|
649
|
-
anytime: string;
|
|
650
|
-
anywhere: string;
|
|
651
|
-
dates: string;
|
|
652
|
-
flexible: string;
|
|
653
|
-
where: string;
|
|
654
|
-
when: string;
|
|
655
|
-
who: string;
|
|
656
|
-
nearby: string;
|
|
657
|
-
hotels: string;
|
|
658
|
-
filter: string;
|
|
659
|
-
sort: string;
|
|
660
|
-
map: string;
|
|
661
|
-
rating: string;
|
|
662
|
-
"rating-excellent": string;
|
|
663
|
-
"rating-very-good": string;
|
|
664
|
-
"rating-good": string;
|
|
665
|
-
"rating-fair": string;
|
|
666
|
-
"rating-none": string;
|
|
667
|
-
clear: string;
|
|
668
|
-
};
|
|
669
|
-
product: {
|
|
670
|
-
"6m": string;
|
|
671
|
-
"1y": string;
|
|
672
|
-
"2y": string;
|
|
673
|
-
"3y": string;
|
|
674
|
-
"price-6m": string;
|
|
675
|
-
"price-6m-disc": string;
|
|
676
|
-
"price-1y": string;
|
|
677
|
-
"price-1y-disc": string;
|
|
678
|
-
"price-2y": string;
|
|
679
|
-
"price-2y-disc": string;
|
|
680
|
-
"price-3y": string;
|
|
681
|
-
"price-3y-disc": string;
|
|
682
|
-
"price-gift": string;
|
|
683
|
-
"price-gift-disc": string;
|
|
684
|
-
};
|
|
685
|
-
subheadline: {
|
|
686
|
-
"your-hc": string;
|
|
687
|
-
"popular-hotels": string;
|
|
688
|
-
"no-results": string;
|
|
689
|
-
"sort-by": string;
|
|
690
|
-
};
|
|
691
|
-
form: {
|
|
692
|
-
guests: string;
|
|
693
|
-
guest: string;
|
|
694
|
-
adults: string;
|
|
695
|
-
children: string;
|
|
696
|
-
pet: string;
|
|
697
|
-
"age-of-child": string;
|
|
698
|
-
age: string;
|
|
699
|
-
"age-error": string;
|
|
700
|
-
};
|
|
701
|
-
filter: {
|
|
702
|
-
filters: string;
|
|
703
|
-
destination: string;
|
|
704
|
-
experience: string;
|
|
705
|
-
"show-all": string;
|
|
706
|
-
price: string;
|
|
707
|
-
discount: string;
|
|
708
|
-
services: string;
|
|
709
|
-
meals: string;
|
|
710
|
-
"hotel-category": string;
|
|
711
|
-
reviews: string;
|
|
712
|
-
mobility: string;
|
|
713
|
-
"wellness-spa": string;
|
|
714
|
-
"price-high-low": string;
|
|
715
|
-
"price-low-high": string;
|
|
716
|
-
"best-rating": string;
|
|
717
|
-
"most-popular": string;
|
|
718
|
-
"newest-hotels": string;
|
|
719
|
-
relevance: string;
|
|
720
|
-
selected: string;
|
|
721
|
-
"clear-all": string;
|
|
722
|
-
options: string;
|
|
723
|
-
"hotellerie-suisse": string;
|
|
724
|
-
trustyou: string;
|
|
725
|
-
"select-all": string;
|
|
726
|
-
reset: string;
|
|
727
|
-
"breakfast-included": string;
|
|
728
|
-
};
|
|
729
|
-
headline: {
|
|
730
|
-
"no-results": string;
|
|
731
|
-
};
|
|
732
|
-
meta_title: string;
|
|
733
|
-
meta_description: string;
|
|
734
|
-
title: string;
|
|
735
|
-
loading: string;
|
|
736
|
-
retry: string;
|
|
737
|
-
close_map: string;
|
|
738
|
-
seo: {
|
|
739
|
-
default_title: string;
|
|
740
|
-
location_title: string;
|
|
741
|
-
region_title: string;
|
|
742
|
-
experience_title: string;
|
|
743
|
-
default_description: string;
|
|
744
|
-
location_description: string;
|
|
745
|
-
};
|
|
746
|
-
modal: {
|
|
747
|
-
close_search: string;
|
|
748
|
-
placeholder_anywhere: string;
|
|
749
|
-
recent_searches: string;
|
|
750
|
-
remove_recent: string;
|
|
751
|
-
all_destinations: string;
|
|
752
|
-
};
|
|
753
|
-
map: {
|
|
754
|
-
open_search: string;
|
|
755
|
-
open_filters: string;
|
|
756
|
-
switch_to_list: string;
|
|
757
|
-
zoom_in: string;
|
|
758
|
-
zoom_out: string;
|
|
759
|
-
no_location_data: string;
|
|
760
|
-
hotels_missing_coordinates: string;
|
|
761
|
-
no_hotels_in_area: string;
|
|
762
|
-
};
|
|
763
|
-
view: {
|
|
764
|
-
list: string;
|
|
765
|
-
};
|
|
766
|
-
breadcrumb: {
|
|
767
|
-
properties_found: string;
|
|
768
|
-
properties_found_location: string;
|
|
769
|
-
};
|
|
770
|
-
aria: {
|
|
771
|
-
search_results_breadcrumb: string;
|
|
772
|
-
close: string;
|
|
773
|
-
previous_image: string;
|
|
774
|
-
next_image: string;
|
|
775
|
-
add_to_favorites: string;
|
|
776
|
-
remove_from_favorites: string;
|
|
777
|
-
list_view: string;
|
|
778
|
-
map_view: string;
|
|
779
|
-
};
|
|
780
|
-
breadcrumb_nav: {
|
|
781
|
-
home: string;
|
|
782
|
-
};
|
|
783
|
-
guest_selector: {
|
|
784
|
-
adults_description: string;
|
|
785
|
-
children_description: string;
|
|
786
|
-
infants_description: string;
|
|
787
|
-
decrease_adults: string;
|
|
788
|
-
increase_adults: string;
|
|
789
|
-
decrease_children: string;
|
|
790
|
-
increase_children: string;
|
|
791
|
-
decrease_infants: string;
|
|
792
|
-
increase_infants: string;
|
|
793
|
-
toggle_infants: string;
|
|
794
|
-
};
|
|
795
|
-
search_form: {
|
|
796
|
-
location_placeholder: string;
|
|
797
|
-
distance_any: string;
|
|
798
|
-
distance_5: string;
|
|
799
|
-
distance_10: string;
|
|
800
|
-
distance_20: string;
|
|
801
|
-
distance_30: string;
|
|
802
|
-
distance_50: string;
|
|
803
|
-
searching: string;
|
|
804
|
-
reset_filters: string;
|
|
805
|
-
};
|
|
806
|
-
dropdown: {
|
|
807
|
-
hotels: string;
|
|
808
|
-
cities: string;
|
|
809
|
-
regions: string;
|
|
810
|
-
countries: string;
|
|
811
|
-
"no-results": string;
|
|
812
|
-
};
|
|
813
|
-
filters: {
|
|
814
|
-
show_filters: string;
|
|
815
|
-
open_filters: string;
|
|
816
|
-
filter_by: string;
|
|
817
|
-
hotel_rating: string;
|
|
818
|
-
show_results: string;
|
|
819
|
-
apply_filters: string;
|
|
820
|
-
close_filters: string;
|
|
821
|
-
view_in_map: string;
|
|
822
|
-
popular_filters: string;
|
|
823
|
-
show_less: string;
|
|
824
|
-
selected: string;
|
|
825
|
-
clear_all: string;
|
|
826
|
-
options: {
|
|
827
|
-
instant_booking: string;
|
|
828
|
-
pets_allowed: string;
|
|
829
|
-
free_cancellation: string;
|
|
830
|
-
};
|
|
831
|
-
};
|
|
832
|
-
date_selector: {
|
|
833
|
-
apply: string;
|
|
834
|
-
months_selected: string;
|
|
835
|
-
};
|
|
836
|
-
star_rating: {
|
|
837
|
-
"5_stars": string;
|
|
838
|
-
"4_stars": string;
|
|
839
|
-
"3_stars": string;
|
|
840
|
-
"2_stars": string;
|
|
841
|
-
not_classified: string;
|
|
842
|
-
swiss_lodge: string;
|
|
843
|
-
};
|
|
844
|
-
results: {
|
|
845
|
-
hotels_found: string;
|
|
846
|
-
load_more: string;
|
|
847
|
-
loading: string;
|
|
848
|
-
end_of_results: string;
|
|
849
|
-
no_results: string;
|
|
850
|
-
try_different_search: string;
|
|
851
|
-
unavailable_banner_title: string;
|
|
852
|
-
unavailable_banner_description: string;
|
|
853
|
-
};
|
|
854
|
-
errors: {
|
|
855
|
-
search_failed: string;
|
|
856
|
-
load_more_failed: string;
|
|
857
|
-
};
|
|
858
|
-
error: {
|
|
859
|
-
title: string;
|
|
860
|
-
description: string;
|
|
861
|
-
retry: string;
|
|
862
|
-
};
|
|
863
|
-
no_results: {
|
|
864
|
-
title: string;
|
|
865
|
-
description: string;
|
|
866
|
-
description_with_filters: string;
|
|
867
|
-
clear_filters: string;
|
|
868
|
-
};
|
|
869
|
-
pagination: {
|
|
870
|
-
label: string;
|
|
871
|
-
previous: string;
|
|
872
|
-
previous_short: string;
|
|
873
|
-
next: string;
|
|
874
|
-
next_short: string;
|
|
875
|
-
page: string;
|
|
876
|
-
};
|
|
877
|
-
hotel_card: {
|
|
878
|
-
rating: string;
|
|
879
|
-
price_from: string;
|
|
880
|
-
not_available: string;
|
|
881
|
-
};
|
|
882
|
-
badges: {
|
|
883
|
-
new: string;
|
|
884
|
-
};
|
|
885
|
-
clear_location: string;
|
|
886
|
-
clear_date: string;
|
|
887
|
-
clear_guests: string;
|
|
888
|
-
};
|
|
889
|
-
readonly fr: {
|
|
890
|
-
button: {
|
|
891
|
-
order: string;
|
|
892
|
-
"order-navigation": string;
|
|
893
|
-
"order-hc": string;
|
|
894
|
-
"my-account": string;
|
|
895
|
-
search: string;
|
|
896
|
-
"back-to-top": string;
|
|
897
|
-
};
|
|
898
|
-
link: {
|
|
899
|
-
"member-benefits": string;
|
|
900
|
-
"view-all-hotels": string;
|
|
901
|
-
"search-by-map": string;
|
|
902
|
-
"search-by-region": string;
|
|
903
|
-
"search-by-experience": string;
|
|
904
|
-
"travel-inspiration": string;
|
|
905
|
-
"booking-tips-and-tricks": string;
|
|
906
|
-
home: string;
|
|
907
|
-
"all-hotel-deals": string;
|
|
908
|
-
"search-results": string;
|
|
909
|
-
};
|
|
910
|
-
general: {
|
|
911
|
-
"signed-out": string;
|
|
912
|
-
"room-price": string;
|
|
913
|
-
guarantee: string;
|
|
914
|
-
contact: string;
|
|
915
|
-
"breakfast-included": string;
|
|
916
|
-
"free-cancellation": string;
|
|
917
|
-
"suggested-destinations": string;
|
|
918
|
-
"when-months": string;
|
|
919
|
-
"hotel-deals-found": string;
|
|
920
|
-
"no-results": string;
|
|
921
|
-
"unavailable-for-selected-days": string;
|
|
922
|
-
"cant-accommodate-all": string;
|
|
923
|
-
"reset-destination": string;
|
|
924
|
-
};
|
|
925
|
-
label: {
|
|
926
|
-
"price-from": string;
|
|
927
|
-
"price-for": string;
|
|
928
|
-
"per-room-night": string;
|
|
929
|
-
new: string;
|
|
930
|
-
anytime: string;
|
|
931
|
-
anywhere: string;
|
|
932
|
-
dates: string;
|
|
933
|
-
flexible: string;
|
|
934
|
-
where: string;
|
|
935
|
-
when: string;
|
|
936
|
-
who: string;
|
|
937
|
-
nearby: string;
|
|
938
|
-
hotels: string;
|
|
939
|
-
filter: string;
|
|
940
|
-
sort: string;
|
|
941
|
-
map: string;
|
|
942
|
-
rating: string;
|
|
943
|
-
"rating-excellent": string;
|
|
944
|
-
"rating-very-good": string;
|
|
945
|
-
"rating-good": string;
|
|
946
|
-
"rating-fair": string;
|
|
947
|
-
"rating-none": string;
|
|
948
|
-
clear: string;
|
|
949
|
-
};
|
|
950
|
-
product: {
|
|
951
|
-
"6m": string;
|
|
952
|
-
"1y": string;
|
|
953
|
-
"2y": string;
|
|
954
|
-
"3y": string;
|
|
955
|
-
"price-6m": string;
|
|
956
|
-
"price-6m-disc": string;
|
|
957
|
-
"price-1y": string;
|
|
958
|
-
"price-1y-disc": string;
|
|
959
|
-
"price-2y": string;
|
|
960
|
-
"price-2y-disc": string;
|
|
961
|
-
"price-3y": string;
|
|
962
|
-
"price-3y-disc": string;
|
|
963
|
-
"price-gift": string;
|
|
964
|
-
"price-gift-disc": string;
|
|
965
|
-
};
|
|
966
|
-
subheadline: {
|
|
967
|
-
"your-hc": string;
|
|
968
|
-
"popular-hotels": string;
|
|
969
|
-
"no-results": string;
|
|
970
|
-
"sort-by": string;
|
|
971
|
-
};
|
|
972
|
-
form: {
|
|
973
|
-
guests: string;
|
|
974
|
-
guest: string;
|
|
975
|
-
adults: string;
|
|
976
|
-
children: string;
|
|
977
|
-
pet: string;
|
|
978
|
-
"age-of-child": string;
|
|
979
|
-
age: string;
|
|
980
|
-
"age-error": string;
|
|
981
|
-
};
|
|
982
|
-
filter: {
|
|
983
|
-
filters: string;
|
|
984
|
-
destination: string;
|
|
985
|
-
experience: string;
|
|
986
|
-
"show-all": string;
|
|
987
|
-
price: string;
|
|
988
|
-
discount: string;
|
|
989
|
-
services: string;
|
|
990
|
-
meals: string;
|
|
991
|
-
"hotel-category": string;
|
|
992
|
-
reviews: string;
|
|
993
|
-
mobility: string;
|
|
994
|
-
"wellness-spa": string;
|
|
995
|
-
"price-high-low": string;
|
|
996
|
-
"price-low-high": string;
|
|
997
|
-
"best-rating": string;
|
|
998
|
-
"most-popular": string;
|
|
999
|
-
"newest-hotels": string;
|
|
1000
|
-
relevance: string;
|
|
1001
|
-
selected: string;
|
|
1002
|
-
"clear-all": string;
|
|
1003
|
-
options: string;
|
|
1004
|
-
"hotellerie-suisse": string;
|
|
1005
|
-
trustyou: string;
|
|
1006
|
-
"select-all": string;
|
|
1007
|
-
reset: string;
|
|
1008
|
-
"breakfast-included": string;
|
|
1009
|
-
};
|
|
1010
|
-
headline: {
|
|
1011
|
-
"no-results": string;
|
|
1012
|
-
};
|
|
1013
|
-
meta_title: string;
|
|
1014
|
-
meta_description: string;
|
|
1015
|
-
title: string;
|
|
1016
|
-
loading: string;
|
|
1017
|
-
retry: string;
|
|
1018
|
-
close_map: string;
|
|
1019
|
-
seo: {
|
|
1020
|
-
default_title: string;
|
|
1021
|
-
location_title: string;
|
|
1022
|
-
region_title: string;
|
|
1023
|
-
experience_title: string;
|
|
1024
|
-
default_description: string;
|
|
1025
|
-
location_description: string;
|
|
1026
|
-
};
|
|
1027
|
-
modal: {
|
|
1028
|
-
close_search: string;
|
|
1029
|
-
placeholder_anywhere: string;
|
|
1030
|
-
recent_searches: string;
|
|
1031
|
-
remove_recent: string;
|
|
1032
|
-
all_destinations: string;
|
|
1033
|
-
};
|
|
1034
|
-
map: {
|
|
1035
|
-
open_search: string;
|
|
1036
|
-
open_filters: string;
|
|
1037
|
-
switch_to_list: string;
|
|
1038
|
-
zoom_in: string;
|
|
1039
|
-
zoom_out: string;
|
|
1040
|
-
no_location_data: string;
|
|
1041
|
-
hotels_missing_coordinates: string;
|
|
1042
|
-
no_hotels_in_area: string;
|
|
1043
|
-
};
|
|
1044
|
-
view: {
|
|
1045
|
-
list: string;
|
|
1046
|
-
};
|
|
1047
|
-
breadcrumb: {
|
|
1048
|
-
properties_found: string;
|
|
1049
|
-
properties_found_location: string;
|
|
1050
|
-
};
|
|
1051
|
-
aria: {
|
|
1052
|
-
search_results_breadcrumb: string;
|
|
1053
|
-
close: string;
|
|
1054
|
-
previous_image: string;
|
|
1055
|
-
next_image: string;
|
|
1056
|
-
add_to_favorites: string;
|
|
1057
|
-
remove_from_favorites: string;
|
|
1058
|
-
list_view: string;
|
|
1059
|
-
map_view: string;
|
|
1060
|
-
};
|
|
1061
|
-
breadcrumb_nav: {
|
|
1062
|
-
home: string;
|
|
1063
|
-
};
|
|
1064
|
-
guest_selector: {
|
|
1065
|
-
decrease_adults: string;
|
|
1066
|
-
increase_adults: string;
|
|
1067
|
-
decrease_children: string;
|
|
1068
|
-
increase_children: string;
|
|
1069
|
-
decrease_infants: string;
|
|
1070
|
-
increase_infants: string;
|
|
1071
|
-
toggle_infants: string;
|
|
1072
|
-
};
|
|
1073
|
-
search_form: {
|
|
1074
|
-
location_placeholder: string;
|
|
1075
|
-
distance_any: string;
|
|
1076
|
-
distance_5: string;
|
|
1077
|
-
distance_10: string;
|
|
1078
|
-
distance_20: string;
|
|
1079
|
-
distance_30: string;
|
|
1080
|
-
distance_50: string;
|
|
1081
|
-
searching: string;
|
|
1082
|
-
reset_filters: string;
|
|
1083
|
-
};
|
|
1084
|
-
dropdown: {
|
|
1085
|
-
hotels: string;
|
|
1086
|
-
cities: string;
|
|
1087
|
-
regions: string;
|
|
1088
|
-
countries: string;
|
|
1089
|
-
"no-results": string;
|
|
1090
|
-
};
|
|
1091
|
-
filters: {
|
|
1092
|
-
show_filters: string;
|
|
1093
|
-
open_filters: string;
|
|
1094
|
-
filter_by: string;
|
|
1095
|
-
hotel_rating: string;
|
|
1096
|
-
show_results: string;
|
|
1097
|
-
apply_filters: string;
|
|
1098
|
-
close_filters: string;
|
|
1099
|
-
view_in_map: string;
|
|
1100
|
-
popular_filters: string;
|
|
1101
|
-
destinations: string;
|
|
1102
|
-
options_title: string;
|
|
1103
|
-
options: {
|
|
1104
|
-
instant_booking: string;
|
|
1105
|
-
pets_allowed: string;
|
|
1106
|
-
free_cancellation: string;
|
|
1107
|
-
};
|
|
1108
|
-
category: {
|
|
1109
|
-
footer_prefix: string;
|
|
1110
|
-
};
|
|
1111
|
-
show_less: string;
|
|
1112
|
-
selected: string;
|
|
1113
|
-
clear_all: string;
|
|
1114
|
-
};
|
|
1115
|
-
date_selector: {
|
|
1116
|
-
apply: string;
|
|
1117
|
-
months_selected: string;
|
|
1118
|
-
};
|
|
1119
|
-
star_rating: {
|
|
1120
|
-
"5_stars": string;
|
|
1121
|
-
"4_stars": string;
|
|
1122
|
-
"3_stars": string;
|
|
1123
|
-
"2_stars": string;
|
|
1124
|
-
not_classified: string;
|
|
1125
|
-
swiss_lodge: string;
|
|
1126
|
-
};
|
|
1127
|
-
results: {
|
|
1128
|
-
hotels_found: string;
|
|
1129
|
-
load_more: string;
|
|
1130
|
-
loading: string;
|
|
1131
|
-
end_of_results: string;
|
|
1132
|
-
no_results: string;
|
|
1133
|
-
try_different_search: string;
|
|
1134
|
-
unavailable_banner_title: string;
|
|
1135
|
-
unavailable_banner_description: string;
|
|
1136
|
-
};
|
|
1137
|
-
no_results: {
|
|
1138
|
-
title: string;
|
|
1139
|
-
subtitle: string;
|
|
1140
|
-
description: string;
|
|
1141
|
-
description_with_filters: string;
|
|
1142
|
-
clear_filters: string;
|
|
1143
|
-
};
|
|
1144
|
-
errors: {
|
|
1145
|
-
search_failed: string;
|
|
1146
|
-
load_more_failed: string;
|
|
1147
|
-
};
|
|
1148
|
-
error: {
|
|
1149
|
-
title: string;
|
|
1150
|
-
description: string;
|
|
1151
|
-
retry: string;
|
|
1152
|
-
};
|
|
1153
|
-
pagination: {
|
|
1154
|
-
label: string;
|
|
1155
|
-
previous: string;
|
|
1156
|
-
previous_short: string;
|
|
1157
|
-
next: string;
|
|
1158
|
-
next_short: string;
|
|
1159
|
-
page: string;
|
|
1160
|
-
};
|
|
1161
|
-
hotel_card: {
|
|
1162
|
-
rating: string;
|
|
1163
|
-
price_from: string;
|
|
1164
|
-
not_available: string;
|
|
1165
|
-
};
|
|
1166
|
-
badges: {
|
|
1167
|
-
new: string;
|
|
1168
|
-
};
|
|
1169
|
-
};
|
|
1170
|
-
readonly it: {
|
|
1171
|
-
button: {
|
|
1172
|
-
order: string;
|
|
1173
|
-
"order-navigation": string;
|
|
1174
|
-
"order-hc": string;
|
|
1175
|
-
"my-account": string;
|
|
1176
|
-
search: string;
|
|
1177
|
-
"back-to-top": string;
|
|
1178
|
-
};
|
|
1179
|
-
link: {
|
|
1180
|
-
"member-benefits": string;
|
|
1181
|
-
"view-all-hotels": string;
|
|
1182
|
-
"search-by-map": string;
|
|
1183
|
-
"search-by-region": string;
|
|
1184
|
-
"search-by-experience": string;
|
|
1185
|
-
"travel-inspiration": string;
|
|
1186
|
-
"booking-tips-and-tricks": string;
|
|
1187
|
-
home: string;
|
|
1188
|
-
"all-hotel-deals": string;
|
|
1189
|
-
"search-results": string;
|
|
1190
|
-
};
|
|
1191
|
-
general: {
|
|
1192
|
-
"signed-out": string;
|
|
1193
|
-
"room-price": string;
|
|
1194
|
-
guarantee: string;
|
|
1195
|
-
contact: string;
|
|
1196
|
-
"breakfast-included": string;
|
|
1197
|
-
"free-cancellation": string;
|
|
1198
|
-
"suggested-destinations": string;
|
|
1199
|
-
"when-months": string;
|
|
1200
|
-
"hotel-deals-found": string;
|
|
1201
|
-
"no-results": string;
|
|
1202
|
-
"unavailable-for-selected-days": string;
|
|
1203
|
-
"cant-accommodate-all": string;
|
|
1204
|
-
"reset-destination": string;
|
|
1205
|
-
};
|
|
1206
|
-
label: {
|
|
1207
|
-
"price-from": string;
|
|
1208
|
-
"price-for": string;
|
|
1209
|
-
"per-room-night": string;
|
|
1210
|
-
new: string;
|
|
1211
|
-
anytime: string;
|
|
1212
|
-
anywhere: string;
|
|
1213
|
-
dates: string;
|
|
1214
|
-
flexible: string;
|
|
1215
|
-
where: string;
|
|
1216
|
-
when: string;
|
|
1217
|
-
who: string;
|
|
1218
|
-
nearby: string;
|
|
1219
|
-
hotels: string;
|
|
1220
|
-
filter: string;
|
|
1221
|
-
sort: string;
|
|
1222
|
-
map: string;
|
|
1223
|
-
rating: string;
|
|
1224
|
-
"rating-excellent": string;
|
|
1225
|
-
"rating-very-good": string;
|
|
1226
|
-
"rating-good": string;
|
|
1227
|
-
"rating-fair": string;
|
|
1228
|
-
"rating-none": string;
|
|
1229
|
-
clear: string;
|
|
1230
|
-
};
|
|
1231
|
-
product: {
|
|
1232
|
-
"6m": string;
|
|
1233
|
-
"1y": string;
|
|
1234
|
-
"2y": string;
|
|
1235
|
-
"3y": string;
|
|
1236
|
-
"price-6m": string;
|
|
1237
|
-
"price-6m-disc": string;
|
|
1238
|
-
"price-1y": string;
|
|
1239
|
-
"price-1y-disc": string;
|
|
1240
|
-
"price-2y": string;
|
|
1241
|
-
"price-2y-disc": string;
|
|
1242
|
-
"price-3y": string;
|
|
1243
|
-
"price-3y-disc": string;
|
|
1244
|
-
"price-gift": string;
|
|
1245
|
-
"price-gift-disc": string;
|
|
1246
|
-
};
|
|
1247
|
-
subheadline: {
|
|
1248
|
-
"your-hc": string;
|
|
1249
|
-
"popular-hotels": string;
|
|
1250
|
-
"no-results": string;
|
|
1251
|
-
"sort-by": string;
|
|
1252
|
-
};
|
|
1253
|
-
form: {
|
|
1254
|
-
guests: string;
|
|
1255
|
-
guest: string;
|
|
1256
|
-
adults: string;
|
|
1257
|
-
children: string;
|
|
1258
|
-
pet: string;
|
|
1259
|
-
"age-of-child": string;
|
|
1260
|
-
age: string;
|
|
1261
|
-
"age-error": string;
|
|
1262
|
-
};
|
|
1263
|
-
filter: {
|
|
1264
|
-
filters: string;
|
|
1265
|
-
destination: string;
|
|
1266
|
-
experience: string;
|
|
1267
|
-
"show-all": string;
|
|
1268
|
-
price: string;
|
|
1269
|
-
discount: string;
|
|
1270
|
-
services: string;
|
|
1271
|
-
meals: string;
|
|
1272
|
-
"hotel-category": string;
|
|
1273
|
-
reviews: string;
|
|
1274
|
-
mobility: string;
|
|
1275
|
-
"wellness-spa": string;
|
|
1276
|
-
"price-high-low": string;
|
|
1277
|
-
"price-low-high": string;
|
|
1278
|
-
"best-rating": string;
|
|
1279
|
-
"most-popular": string;
|
|
1280
|
-
"newest-hotels": string;
|
|
1281
|
-
relevance: string;
|
|
1282
|
-
selected: string;
|
|
1283
|
-
"clear-all": string;
|
|
1284
|
-
options: string;
|
|
1285
|
-
"hotellerie-suisse": string;
|
|
1286
|
-
trustyou: string;
|
|
1287
|
-
"select-all": string;
|
|
1288
|
-
reset: string;
|
|
1289
|
-
"breakfast-included": string;
|
|
1290
|
-
};
|
|
1291
|
-
headline: {
|
|
1292
|
-
"no-results": string;
|
|
1293
|
-
};
|
|
1294
|
-
meta_title: string;
|
|
1295
|
-
meta_description: string;
|
|
1296
|
-
title: string;
|
|
1297
|
-
loading: string;
|
|
1298
|
-
retry: string;
|
|
1299
|
-
close_map: string;
|
|
1300
|
-
seo: {
|
|
1301
|
-
default_title: string;
|
|
1302
|
-
location_title: string;
|
|
1303
|
-
region_title: string;
|
|
1304
|
-
experience_title: string;
|
|
1305
|
-
default_description: string;
|
|
1306
|
-
location_description: string;
|
|
1307
|
-
};
|
|
1308
|
-
modal: {
|
|
1309
|
-
close_search: string;
|
|
1310
|
-
placeholder_anywhere: string;
|
|
1311
|
-
recent_searches: string;
|
|
1312
|
-
remove_recent: string;
|
|
1313
|
-
all_destinations: string;
|
|
1314
|
-
};
|
|
1315
|
-
map: {
|
|
1316
|
-
open_search: string;
|
|
1317
|
-
open_filters: string;
|
|
1318
|
-
switch_to_list: string;
|
|
1319
|
-
zoom_in: string;
|
|
1320
|
-
zoom_out: string;
|
|
1321
|
-
no_location_data: string;
|
|
1322
|
-
hotels_missing_coordinates: string;
|
|
1323
|
-
no_hotels_in_area: string;
|
|
1324
|
-
};
|
|
1325
|
-
view: {
|
|
1326
|
-
list: string;
|
|
1327
|
-
};
|
|
1328
|
-
breadcrumb: {
|
|
1329
|
-
properties_found: string;
|
|
1330
|
-
properties_found_location: string;
|
|
1331
|
-
};
|
|
1332
|
-
aria: {
|
|
1333
|
-
search_results_breadcrumb: string;
|
|
1334
|
-
close: string;
|
|
1335
|
-
previous_image: string;
|
|
1336
|
-
next_image: string;
|
|
1337
|
-
add_to_favorites: string;
|
|
1338
|
-
remove_from_favorites: string;
|
|
1339
|
-
list_view: string;
|
|
1340
|
-
map_view: string;
|
|
1341
|
-
};
|
|
1342
|
-
breadcrumb_nav: {
|
|
1343
|
-
home: string;
|
|
1344
|
-
};
|
|
1345
|
-
guest_selector: {
|
|
1346
|
-
decrease_adults: string;
|
|
1347
|
-
increase_adults: string;
|
|
1348
|
-
decrease_children: string;
|
|
1349
|
-
increase_children: string;
|
|
1350
|
-
decrease_infants: string;
|
|
1351
|
-
increase_infants: string;
|
|
1352
|
-
toggle_infants: string;
|
|
1353
|
-
};
|
|
1354
|
-
search_form: {
|
|
1355
|
-
location_placeholder: string;
|
|
1356
|
-
distance_any: string;
|
|
1357
|
-
distance_5: string;
|
|
1358
|
-
distance_10: string;
|
|
1359
|
-
distance_20: string;
|
|
1360
|
-
distance_30: string;
|
|
1361
|
-
distance_50: string;
|
|
1362
|
-
searching: string;
|
|
1363
|
-
reset_filters: string;
|
|
1364
|
-
};
|
|
1365
|
-
dropdown: {
|
|
1366
|
-
hotels: string;
|
|
1367
|
-
cities: string;
|
|
1368
|
-
regions: string;
|
|
1369
|
-
countries: string;
|
|
1370
|
-
"no-results": string;
|
|
1371
|
-
};
|
|
1372
|
-
filters: {
|
|
1373
|
-
show_filters: string;
|
|
1374
|
-
open_filters: string;
|
|
1375
|
-
filter_by: string;
|
|
1376
|
-
hotel_rating: string;
|
|
1377
|
-
show_results: string;
|
|
1378
|
-
apply_filters: string;
|
|
1379
|
-
close_filters: string;
|
|
1380
|
-
view_in_map: string;
|
|
1381
|
-
popular_filters: string;
|
|
1382
|
-
destinations: string;
|
|
1383
|
-
options_title: string;
|
|
1384
|
-
options: {
|
|
1385
|
-
instant_booking: string;
|
|
1386
|
-
pets_allowed: string;
|
|
1387
|
-
free_cancellation: string;
|
|
1388
|
-
};
|
|
1389
|
-
category: {
|
|
1390
|
-
footer_prefix: string;
|
|
1391
|
-
};
|
|
1392
|
-
show_less: string;
|
|
1393
|
-
selected: string;
|
|
1394
|
-
clear_all: string;
|
|
1395
|
-
};
|
|
1396
|
-
date_selector: {
|
|
1397
|
-
apply: string;
|
|
1398
|
-
months_selected: string;
|
|
1399
|
-
};
|
|
1400
|
-
star_rating: {
|
|
1401
|
-
"5_stars": string;
|
|
1402
|
-
"4_stars": string;
|
|
1403
|
-
"3_stars": string;
|
|
1404
|
-
"2_stars": string;
|
|
1405
|
-
not_classified: string;
|
|
1406
|
-
swiss_lodge: string;
|
|
1407
|
-
};
|
|
1408
|
-
results: {
|
|
1409
|
-
hotels_found: string;
|
|
1410
|
-
load_more: string;
|
|
1411
|
-
loading: string;
|
|
1412
|
-
end_of_results: string;
|
|
1413
|
-
no_results: string;
|
|
1414
|
-
try_different_search: string;
|
|
1415
|
-
unavailable_banner_title: string;
|
|
1416
|
-
unavailable_banner_description: string;
|
|
1417
|
-
};
|
|
1418
|
-
no_results: {
|
|
1419
|
-
title: string;
|
|
1420
|
-
subtitle: string;
|
|
1421
|
-
description: string;
|
|
1422
|
-
description_with_filters: string;
|
|
1423
|
-
clear_filters: string;
|
|
1424
|
-
};
|
|
1425
|
-
errors: {
|
|
1426
|
-
search_failed: string;
|
|
1427
|
-
load_more_failed: string;
|
|
1428
|
-
};
|
|
1429
|
-
error: {
|
|
1430
|
-
title: string;
|
|
1431
|
-
description: string;
|
|
1432
|
-
retry: string;
|
|
1433
|
-
};
|
|
1434
|
-
pagination: {
|
|
1435
|
-
label: string;
|
|
1436
|
-
previous: string;
|
|
1437
|
-
previous_short: string;
|
|
1438
|
-
next: string;
|
|
1439
|
-
next_short: string;
|
|
1440
|
-
page: string;
|
|
1441
|
-
};
|
|
1442
|
-
hotel_card: {
|
|
1443
|
-
rating: string;
|
|
1444
|
-
price_from: string;
|
|
1445
|
-
not_available: string;
|
|
1446
|
-
};
|
|
1447
|
-
badges: {
|
|
1448
|
-
new: string;
|
|
1449
|
-
};
|
|
1450
|
-
};
|
|
1451
|
-
};
|
|
1452
|
-
type Locale = keyof typeof translations;
|
|
1453
|
-
type TranslationKeys = typeof en;
|
|
1454
|
-
|
|
1455
|
-
/** Translation function type */
|
|
1456
|
-
type TranslateFunction$1 = (key: string, fallback?: string) => string;
|
|
1457
|
-
interface UIContextValue {
|
|
1458
|
-
/** Current locale (e.g., 'de', 'en', 'fr', 'it') */
|
|
1459
|
-
locale: Locale;
|
|
1460
|
-
/** Currency code (e.g., 'CHF', 'EUR') */
|
|
1461
|
-
currency: string;
|
|
1462
|
-
/** Whether the app is running on desktop (default: false for mobile-first) */
|
|
1463
|
-
isDesktop: boolean;
|
|
1464
|
-
/** Translation function - looks up keys from internal translations */
|
|
1465
|
-
t: TranslateFunction$1;
|
|
1466
|
-
}
|
|
1467
|
-
interface HotelCardUIProviderProps {
|
|
1468
|
-
/** Current locale */
|
|
1469
|
-
locale?: Locale;
|
|
1470
|
-
/** Currency code */
|
|
1471
|
-
currency?: string;
|
|
1472
|
-
/** Whether running on desktop */
|
|
1473
|
-
isDesktop?: boolean;
|
|
1474
|
-
/** Optional custom translation function (overrides internal translations) */
|
|
1475
|
-
t?: TranslateFunction$1;
|
|
1476
|
-
children: ReactNode;
|
|
1477
|
-
}
|
|
1478
|
-
/**
|
|
1479
|
-
* HotelCardUIProvider - Configure shared UI components
|
|
1480
|
-
*
|
|
1481
|
-
* Wrap your app with this provider to configure locale, currency, and responsive mode
|
|
1482
|
-
* for all @hotelcard/ui components.
|
|
1483
|
-
*
|
|
1484
|
-
* @example
|
|
1485
|
-
* ```tsx
|
|
1486
|
-
* import { HotelCardUIProvider } from '@hotelcard/ui';
|
|
1487
|
-
*
|
|
1488
|
-
* <HotelCardUIProvider locale="de" currency="CHF">
|
|
1489
|
-
* <App />
|
|
1490
|
-
* </HotelCardUIProvider>
|
|
1491
|
-
* ```
|
|
1492
|
-
*/
|
|
1493
|
-
declare const HotelCardUIProvider: React__default.FC<HotelCardUIProviderProps>;
|
|
1494
|
-
/**
|
|
1495
|
-
* Hook to access UI context values
|
|
1496
|
-
* Returns locale, currency, and isDesktop
|
|
1497
|
-
*/
|
|
1498
|
-
declare const useUIContext: () => UIContextValue;
|
|
1499
|
-
|
|
1500
|
-
interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
|
|
1501
|
-
/**
|
|
1502
|
-
* The visual style variant of the button
|
|
1503
|
-
* @default 'primary'
|
|
1504
|
-
*/
|
|
1505
|
-
variant?: 'primary' | 'secondary' | 'link';
|
|
1506
|
-
/**
|
|
1507
|
-
* The size of the button
|
|
1508
|
-
* @default 'medium'
|
|
1509
|
-
*/
|
|
1510
|
-
size?: 'small' | 'medium';
|
|
1511
|
-
/**
|
|
1512
|
-
* Icon to display on the left side of the button text
|
|
1513
|
-
*/
|
|
1514
|
-
leftIcon?: ReactNode;
|
|
1515
|
-
/**
|
|
1516
|
-
* Icon to display on the right side of the button text
|
|
1517
|
-
*/
|
|
1518
|
-
rightIcon?: ReactNode;
|
|
1519
|
-
/**
|
|
1520
|
-
* The content to display inside the button
|
|
1521
|
-
*/
|
|
1522
|
-
children?: ReactNode;
|
|
1523
|
-
/**
|
|
1524
|
-
* Whether the button is disabled
|
|
1525
|
-
* @default false
|
|
1526
|
-
*/
|
|
1527
|
-
disabled?: boolean;
|
|
1528
|
-
/**
|
|
1529
|
-
* Whether the button should be icon-only (no text, just icon)
|
|
1530
|
-
* @default false
|
|
1531
|
-
*/
|
|
1532
|
-
iconOnly?: boolean;
|
|
1533
|
-
}
|
|
1534
|
-
|
|
1535
|
-
declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1536
|
-
|
|
1537
|
-
interface BadgeProps {
|
|
1538
|
-
/**
|
|
1539
|
-
* The color of the badge
|
|
1540
|
-
* @default 'primary'
|
|
1541
|
-
*/
|
|
1542
|
-
color?: 'primary' | 'secondary' | 'neutral' | 'success' | 'warning';
|
|
1543
|
-
/**
|
|
1544
|
-
* The size of the badge
|
|
1545
|
-
* @default 'large'
|
|
1546
|
-
*/
|
|
1547
|
-
size?: 'small' | 'large';
|
|
1548
|
-
/**
|
|
1549
|
-
* The style variant of the badge
|
|
1550
|
-
* @default 'heavy'
|
|
1551
|
-
*/
|
|
1552
|
-
style?: 'heavy' | 'light';
|
|
1553
|
-
/**
|
|
1554
|
-
* Whether to display an icon (not implemented yet)
|
|
1555
|
-
*/
|
|
1556
|
-
icon?: boolean;
|
|
1557
|
-
/**
|
|
1558
|
-
* The content to display inside the badge
|
|
1559
|
-
*/
|
|
1560
|
-
children: ReactNode;
|
|
1561
|
-
/**
|
|
1562
|
-
* Additional CSS class names
|
|
1563
|
-
*/
|
|
1564
|
-
className?: string;
|
|
1565
|
-
}
|
|
1566
|
-
|
|
1567
|
-
declare const Badge: React.FC<BadgeProps>;
|
|
1568
|
-
|
|
1569
|
-
interface RatingProps {
|
|
1570
|
-
/**
|
|
1571
|
-
* Rating variant
|
|
1572
|
-
* @default 'stars'
|
|
1573
|
-
*/
|
|
1574
|
-
variant?: 'block' | 'result' | 'stars';
|
|
1575
|
-
/**
|
|
1576
|
-
* Rating value (0-5)
|
|
1577
|
-
*/
|
|
1578
|
-
value: number;
|
|
1579
|
-
/**
|
|
1580
|
-
* Maximum rating value
|
|
1581
|
-
* @default 5
|
|
1582
|
-
*/
|
|
1583
|
-
maxValue?: number;
|
|
1584
|
-
/**
|
|
1585
|
-
* Show numeric value
|
|
1586
|
-
* @default false
|
|
1587
|
-
*/
|
|
1588
|
-
showValue?: boolean;
|
|
1589
|
-
/**
|
|
1590
|
-
* Name/title text (for block variant)
|
|
1591
|
-
*/
|
|
1592
|
-
name?: string;
|
|
1593
|
-
/**
|
|
1594
|
-
* Date text (for block variant)
|
|
1595
|
-
*/
|
|
1596
|
-
date?: string;
|
|
1597
|
-
/**
|
|
1598
|
-
* Quote text (for block variant)
|
|
1599
|
-
*/
|
|
1600
|
-
quote?: string;
|
|
1601
|
-
/**
|
|
1602
|
-
* Size of the rating
|
|
1603
|
-
* @default 'medium'
|
|
1604
|
-
*/
|
|
1605
|
-
size?: 'small' | 'medium' | 'large';
|
|
1606
|
-
/**
|
|
1607
|
-
* Additional CSS class names
|
|
1608
|
-
*/
|
|
1609
|
-
className?: string;
|
|
1610
|
-
}
|
|
1611
|
-
|
|
1612
|
-
declare const Rating: React.FC<RatingProps>;
|
|
1613
|
-
|
|
1614
|
-
interface DividerProps {
|
|
1615
|
-
/** Optional label to display in the middle of the divider */
|
|
1616
|
-
label?: ReactNode;
|
|
1617
|
-
/** Orientation of the divider */
|
|
1618
|
-
orientation?: 'horizontal' | 'vertical';
|
|
1619
|
-
/** Additional CSS class names */
|
|
1620
|
-
className?: string;
|
|
1621
|
-
}
|
|
1622
|
-
|
|
1623
|
-
declare const Divider: React.FC<DividerProps>;
|
|
1624
|
-
|
|
1625
|
-
type ChipSize = 'small' | 'medium';
|
|
1626
|
-
type ChipState = 'idle' | 'active' | 'disabled';
|
|
1627
|
-
interface ChipProps {
|
|
1628
|
-
/** The label text displayed in the chip */
|
|
1629
|
-
label: string;
|
|
1630
|
-
/** Optional count/number displayed in a badge (for filter chips) */
|
|
1631
|
-
count?: number | string;
|
|
1632
|
-
/** Size variant */
|
|
1633
|
-
size?: ChipSize;
|
|
1634
|
-
/** State variant */
|
|
1635
|
-
state?: ChipState;
|
|
1636
|
-
/** Whether the chip is removable (shows X icon) */
|
|
1637
|
-
removable?: boolean;
|
|
1638
|
-
/** Click handler for the chip (used for selection/toggle) */
|
|
1639
|
-
onClick?: () => void;
|
|
1640
|
-
/** Handler called when remove button is clicked */
|
|
1641
|
-
onRemove?: () => void;
|
|
1642
|
-
/** Additional className for custom styling */
|
|
1643
|
-
className?: string;
|
|
1644
|
-
/** Disable the chip */
|
|
1645
|
-
disabled?: boolean;
|
|
1646
|
-
}
|
|
1647
|
-
|
|
1648
|
-
declare const Chip: React.FC<ChipProps>;
|
|
1649
|
-
|
|
1650
|
-
type CheckboxSize = 'small' | 'medium';
|
|
1651
|
-
interface CheckboxProps {
|
|
1652
|
-
/** Label text displayed next to checkbox */
|
|
1653
|
-
label?: string;
|
|
1654
|
-
/** Controlled checked state */
|
|
1655
|
-
checked?: boolean;
|
|
1656
|
-
/** Default checked state for uncontrolled usage */
|
|
1657
|
-
defaultChecked?: boolean;
|
|
1658
|
-
/** Callback when checked state changes */
|
|
1659
|
-
onChange?: (checked: boolean) => void;
|
|
1660
|
-
/** Disable the checkbox */
|
|
1661
|
-
disabled?: boolean;
|
|
1662
|
-
/** Show error state */
|
|
1663
|
-
error?: boolean;
|
|
1664
|
-
/** Input name attribute */
|
|
1665
|
-
name?: string;
|
|
1666
|
-
/** Input id attribute */
|
|
1667
|
-
id?: string;
|
|
1668
|
-
/** Additional className for custom styling */
|
|
1669
|
-
className?: string;
|
|
1670
|
-
/** Size variant */
|
|
1671
|
-
size?: CheckboxSize;
|
|
1672
|
-
}
|
|
1673
|
-
|
|
1674
|
-
declare const Checkbox: React.FC<CheckboxProps>;
|
|
1675
|
-
|
|
1676
|
-
interface RadioButtonProps {
|
|
1677
|
-
/** Whether the radio button is checked */
|
|
1678
|
-
checked: boolean;
|
|
1679
|
-
/** Callback fired when the radio button state changes */
|
|
1680
|
-
onChange: (checked: boolean) => void;
|
|
1681
|
-
/** The id attribute of the radio button (used to associate the label via htmlFor) */
|
|
1682
|
-
id?: string;
|
|
1683
|
-
/** The name attribute of the radio button (for grouping) */
|
|
1684
|
-
name?: string;
|
|
1685
|
-
/** The value attribute of the radio button */
|
|
1686
|
-
value?: string;
|
|
1687
|
-
/** Whether the radio button is disabled */
|
|
1688
|
-
disabled?: boolean;
|
|
1689
|
-
/** Additional CSS class names */
|
|
1690
|
-
className?: string;
|
|
1691
|
-
/** Label text for the radio button */
|
|
1692
|
-
label?: string;
|
|
1693
|
-
/** Autocomplete attribute */
|
|
1694
|
-
autoComplete?: string;
|
|
1695
|
-
}
|
|
1696
|
-
|
|
1697
|
-
declare const RadioButton: React__default.FC<RadioButtonProps>;
|
|
1698
|
-
|
|
1699
|
-
interface SectionHeaderProps {
|
|
1700
|
-
/** Title text for the section */
|
|
1701
|
-
title: string;
|
|
1702
|
-
/** Label for the "Show all" button (e.g., "Show all", "Alle anzeigen") */
|
|
1703
|
-
showAllLabel?: string;
|
|
1704
|
-
/** Click handler for the "Show all" button */
|
|
1705
|
-
onShowAllClick?: () => void;
|
|
1706
|
-
/** Additional className for custom styling */
|
|
1707
|
-
className?: string;
|
|
1708
|
-
}
|
|
1709
|
-
|
|
1710
|
-
declare const SectionHeader: React.FC<SectionHeaderProps>;
|
|
1711
|
-
|
|
1712
|
-
interface ModalProps {
|
|
1713
|
-
/** Whether the modal is open */
|
|
1714
|
-
isOpen: boolean;
|
|
1715
|
-
/** Callback when modal should close */
|
|
1716
|
-
onClose: () => void;
|
|
1717
|
-
/** Modal content */
|
|
1718
|
-
children: React.ReactNode;
|
|
1719
|
-
/** Maximum width of the modal */
|
|
1720
|
-
width?: string;
|
|
1721
|
-
/** Additional className for custom styling */
|
|
1722
|
-
className?: string;
|
|
1723
|
-
/** Whether to show the close button (default: true) */
|
|
1724
|
-
showCloseButton?: boolean;
|
|
1725
|
-
/** Whether clicking the backdrop closes the modal (default: false) */
|
|
1726
|
-
disableBackdropClick?: boolean;
|
|
1727
|
-
}
|
|
1728
|
-
|
|
1729
|
-
declare const Modal: React__default.FC<ModalProps>;
|
|
1730
|
-
|
|
1731
|
-
interface CardBadge {
|
|
1732
|
-
text: string;
|
|
1733
|
-
variant?: 'primary' | 'secondary';
|
|
1734
|
-
}
|
|
1735
|
-
interface CardRatingInfo {
|
|
1736
|
-
label: string;
|
|
1737
|
-
value: string | number;
|
|
1738
|
-
}
|
|
1739
|
-
interface CardProps {
|
|
1740
|
-
/** Image URL for the card */
|
|
1741
|
-
image?: string;
|
|
1742
|
-
/** Alt text for accessibility */
|
|
1743
|
-
imageAlt?: string;
|
|
1744
|
-
/** Main label/title text */
|
|
1745
|
-
label?: string;
|
|
1746
|
-
/** Price text */
|
|
1747
|
-
price?: string;
|
|
1748
|
-
/** Rating value (1-6, 6 = Swiss Lodge) */
|
|
1749
|
-
stars?: number;
|
|
1750
|
-
/** Superior hotel indicator */
|
|
1751
|
-
isSuperior?: boolean;
|
|
1752
|
-
/** Badge configuration */
|
|
1753
|
-
badge?: CardBadge;
|
|
1754
|
-
/** Click handler */
|
|
1755
|
-
onClick?: () => void;
|
|
1756
|
-
/** Additional CSS classes */
|
|
1757
|
-
className?: string;
|
|
1758
|
-
/** Card size variant - determines styling for desktop or mobile */
|
|
1759
|
-
variant?: 'desktop' | 'mobile';
|
|
1760
|
-
/** Whether to show rating area */
|
|
1761
|
-
hasRating?: boolean;
|
|
1762
|
-
/** Add padding around card */
|
|
1763
|
-
withPadding?: boolean;
|
|
1764
|
-
/** Fixed height (desktop only) */
|
|
1765
|
-
withHeight?: boolean;
|
|
1766
|
-
/** Rating info to display (e.g., { label: "Excellent", value: "4.5" }) */
|
|
1767
|
-
ratingInfo?: CardRatingInfo;
|
|
1768
|
-
/** Usage context for conditional styling */
|
|
1769
|
-
context?: 'hotel-deals' | string;
|
|
1770
|
-
/** Label for Swiss Lodge (stars = 6), e.g., "Swiss Lodge" */
|
|
1771
|
-
swissLodgeLabel?: string;
|
|
1772
|
-
}
|
|
1773
|
-
|
|
1774
|
-
declare const Card: React__default.FC<CardProps>;
|
|
1775
|
-
|
|
1776
|
-
interface DropdownOption {
|
|
1777
|
-
value: string;
|
|
1778
|
-
label: string;
|
|
1779
|
-
}
|
|
1780
|
-
interface DropdownProps {
|
|
1781
|
-
/** Available options */
|
|
1782
|
-
options?: DropdownOption[];
|
|
1783
|
-
/** Disable the dropdown */
|
|
1784
|
-
disabled?: boolean;
|
|
1785
|
-
/** Show error state */
|
|
1786
|
-
error?: boolean;
|
|
1787
|
-
/** Default selected value */
|
|
1788
|
-
defaultValue?: string;
|
|
1789
|
-
/** Controlled value */
|
|
1790
|
-
value?: string;
|
|
1791
|
-
/** Callback when selection changes */
|
|
1792
|
-
onChange?: (value: string) => void;
|
|
1793
|
-
/** Additional className for custom styling */
|
|
1794
|
-
className?: string;
|
|
1795
|
-
/** Input name attribute */
|
|
1796
|
-
name?: string;
|
|
1797
|
-
/** Input id attribute */
|
|
1798
|
-
id?: string;
|
|
1799
|
-
/** Placeholder text when no selection */
|
|
1800
|
-
placeholder?: string;
|
|
1801
|
-
}
|
|
1802
|
-
|
|
1803
|
-
declare const Dropdown: React__default.FC<DropdownProps>;
|
|
1804
|
-
|
|
1805
|
-
type InputType = 'text' | 'email' | 'password' | 'tel' | 'number' | 'search' | 'url' | 'date';
|
|
1806
|
-
interface InputProps {
|
|
1807
|
-
/** Label text above the input */
|
|
1808
|
-
label?: string;
|
|
1809
|
-
/** Placeholder text */
|
|
1810
|
-
placeholder?: string;
|
|
1811
|
-
/** Helper text below the input */
|
|
1812
|
-
helper?: string;
|
|
1813
|
-
/** Controlled value */
|
|
1814
|
-
value?: string;
|
|
1815
|
-
/** Default value for uncontrolled usage */
|
|
1816
|
-
defaultValue?: string;
|
|
1817
|
-
/** Callback when value changes */
|
|
1818
|
-
onChange?: (value: string) => void;
|
|
1819
|
-
/** Callback when input gains focus */
|
|
1820
|
-
onFocus?: () => void;
|
|
1821
|
-
/** Callback when input loses focus */
|
|
1822
|
-
onBlur?: () => void;
|
|
1823
|
-
/** Input type */
|
|
1824
|
-
type?: InputType;
|
|
1825
|
-
/** Show error state */
|
|
1826
|
-
error?: boolean;
|
|
1827
|
-
/** Disable the input */
|
|
1828
|
-
disabled?: boolean;
|
|
1829
|
-
/** Icon to show on the left side */
|
|
1830
|
-
leftIcon?: React.ReactNode;
|
|
1831
|
-
/** Icon or element to show on the right side */
|
|
1832
|
-
rightIcon?: React.ReactNode;
|
|
1833
|
-
/** Prefix text (e.g., currency symbol) */
|
|
1834
|
-
prefix?: string;
|
|
1835
|
-
/** Additional className for container */
|
|
1836
|
-
className?: string;
|
|
1837
|
-
/** Additional className for input element */
|
|
1838
|
-
inputClassName?: string;
|
|
1839
|
-
/** Additional className for wrapper */
|
|
1840
|
-
wrapperClassName?: string;
|
|
1841
|
-
/** Input name attribute */
|
|
1842
|
-
name?: string;
|
|
1843
|
-
/** Input id attribute */
|
|
1844
|
-
id?: string;
|
|
1845
|
-
/** Whether the input is required */
|
|
1846
|
-
required?: boolean;
|
|
1847
|
-
/** Autocomplete attribute */
|
|
1848
|
-
autoComplete?: string;
|
|
1849
|
-
/** Auto focus the input */
|
|
1850
|
-
autoFocus?: boolean;
|
|
1851
|
-
/** Make the input read-only */
|
|
1852
|
-
readOnly?: boolean;
|
|
1853
|
-
/** Additional input props */
|
|
1854
|
-
inputProps?: React.InputHTMLAttributes<HTMLInputElement>;
|
|
1855
|
-
}
|
|
1856
|
-
|
|
1857
|
-
declare const Input: React__default.FC<InputProps>;
|
|
1858
|
-
|
|
1859
|
-
interface BlockProps {
|
|
1860
|
-
/** Type of block to render */
|
|
1861
|
-
variant?: 'icon' | 'image';
|
|
1862
|
-
/** Icon or image to display */
|
|
1863
|
-
visual?: ReactNode;
|
|
1864
|
-
/** Label/title text */
|
|
1865
|
-
label: string;
|
|
1866
|
-
/** Description text (for icon variant) */
|
|
1867
|
-
description?: string;
|
|
1868
|
-
/** Style variant for icon blocks */
|
|
1869
|
-
style?: 'primary' | 'secondary';
|
|
1870
|
-
/** Click handler */
|
|
1871
|
-
onClick?: () => void;
|
|
1872
|
-
/** Whether to show arrow (for image variant) */
|
|
1873
|
-
showArrow?: boolean;
|
|
1874
|
-
/** Additional CSS class names */
|
|
1875
|
-
className?: string;
|
|
1876
|
-
}
|
|
1877
|
-
declare const Block: React.FC<BlockProps>;
|
|
1878
|
-
|
|
1879
|
-
interface ReviewCardProps {
|
|
1880
|
-
/** Reviewer's name */
|
|
1881
|
-
name: string;
|
|
1882
|
-
/** Review date */
|
|
1883
|
-
date: string;
|
|
1884
|
-
/** Rating value (1-5) */
|
|
1885
|
-
rating: number;
|
|
1886
|
-
/** Review text/quote */
|
|
1887
|
-
quote: string;
|
|
1888
|
-
/** Additional CSS classes */
|
|
1889
|
-
className?: string;
|
|
1890
|
-
}
|
|
1891
|
-
declare const ReviewCard: React.FC<ReviewCardProps>;
|
|
1892
|
-
|
|
1893
|
-
interface FAQItem {
|
|
1894
|
-
question: string;
|
|
1895
|
-
answer: string;
|
|
1896
|
-
}
|
|
1897
|
-
interface FAQProps {
|
|
1898
|
-
items: FAQItem[];
|
|
1899
|
-
defaultOpenIndex?: number | null;
|
|
1900
|
-
allowMultiple?: boolean;
|
|
1901
|
-
className?: string;
|
|
1902
|
-
}
|
|
1903
|
-
declare const FAQ: React.FC<FAQProps>;
|
|
1904
|
-
|
|
1905
|
-
interface BenefitItem {
|
|
1906
|
-
icon?: string;
|
|
1907
|
-
title: string;
|
|
1908
|
-
description?: string;
|
|
1909
|
-
}
|
|
1910
|
-
interface BenefitsProps {
|
|
1911
|
-
title?: string;
|
|
1912
|
-
subtitle?: string;
|
|
1913
|
-
benefits?: BenefitItem[];
|
|
1914
|
-
contactTitle?: string;
|
|
1915
|
-
contactDescription?: string;
|
|
1916
|
-
contactButtonText?: string;
|
|
1917
|
-
onContactClick?: () => void;
|
|
1918
|
-
className?: string;
|
|
1919
|
-
}
|
|
1920
|
-
declare const Benefits: React.FC<BenefitsProps>;
|
|
1921
|
-
|
|
1922
|
-
interface PinProps {
|
|
1923
|
-
/** Pin variant - 'price' shows currency/price, 'hotel' shows house icon */
|
|
1924
|
-
variant?: 'price' | 'hotel';
|
|
1925
|
-
/** Whether the hotel has been viewed (secondary style) */
|
|
1926
|
-
viewed?: boolean;
|
|
1927
|
-
/** Currency code to display */
|
|
1928
|
-
currency?: string;
|
|
1929
|
-
/** Price to display */
|
|
1930
|
-
price?: number | string;
|
|
1931
|
-
/** Whether to show the favorite (heart) icon */
|
|
1932
|
-
showFavorite?: boolean;
|
|
1933
|
-
/** Whether the pin is disabled */
|
|
1934
|
-
disabled?: boolean;
|
|
1935
|
-
/** Click handler */
|
|
1936
|
-
onClick?: () => void;
|
|
1937
|
-
/** Additional class name */
|
|
1938
|
-
className?: string;
|
|
1939
|
-
}
|
|
1940
|
-
/**
|
|
1941
|
-
* Pin Component
|
|
1942
|
-
*
|
|
1943
|
-
* Map marker pin with price or hotel icon variants.
|
|
1944
|
-
* Used for displaying hotel markers on maps.
|
|
1945
|
-
*
|
|
1946
|
-
* @example
|
|
1947
|
-
* // Price pin (default)
|
|
1948
|
-
* <Pin price={150} currency="CHF" showFavorite />
|
|
1949
|
-
*
|
|
1950
|
-
* // Viewed price pin (secondary style)
|
|
1951
|
-
* <Pin price={150} viewed showFavorite />
|
|
1952
|
-
*
|
|
1953
|
-
* // Hotel pin (for clusters)
|
|
1954
|
-
* <Pin variant="hotel" />
|
|
1955
|
-
*/
|
|
1956
|
-
declare const Pin: React__default.ForwardRefExoticComponent<PinProps & React__default.RefAttributes<HTMLButtonElement>>;
|
|
1957
|
-
|
|
1958
|
-
interface DateRange {
|
|
1959
|
-
start: string | null;
|
|
1960
|
-
end: string | null;
|
|
1961
|
-
}
|
|
1962
|
-
interface WhenContentProps {
|
|
1963
|
-
/** Initial date range */
|
|
1964
|
-
initialDateRange?: DateRange;
|
|
1965
|
-
/** Initial month filter selection */
|
|
1966
|
-
initialMonthFilter?: string[] | null;
|
|
1967
|
-
/** Called when date range changes */
|
|
1968
|
-
onChange?: (dateRange: DateRange | null) => void;
|
|
1969
|
-
/** Called when month filter changes */
|
|
1970
|
-
onMonthFilterChange?: (months: string[] | null) => void;
|
|
1971
|
-
/** Display variant: 'dropdown' for desktop, 'expanded' for mobile modal */
|
|
1972
|
-
variant?: 'dropdown' | 'expanded';
|
|
1973
|
-
/** Show apply button (desktop dropdown) */
|
|
1974
|
-
showApplyButton?: boolean;
|
|
1975
|
-
/** Called when apply is clicked */
|
|
1976
|
-
onApply?: () => void;
|
|
1977
|
-
/** Additional class name */
|
|
1978
|
-
className?: string;
|
|
1979
|
-
/** Override locale for date formatting (defaults to context locale) */
|
|
1980
|
-
locale?: string;
|
|
1981
|
-
}
|
|
1982
|
-
/**
|
|
1983
|
-
* WhenContent - Shared date/time selection UI
|
|
1984
|
-
*
|
|
1985
|
-
* Features:
|
|
1986
|
-
* - Segmented control (Dates/Flexible tabs)
|
|
1987
|
-
* - Calendar view for specific date range selection
|
|
1988
|
-
* - Month chips grid for flexible month selection
|
|
1989
|
-
* - "Anytime" option for no date filter
|
|
1990
|
-
*
|
|
1991
|
-
* Translations handled internally via UIContext.
|
|
1992
|
-
*/
|
|
1993
|
-
declare const WhenContent: React__default.FC<WhenContentProps>;
|
|
1994
|
-
|
|
1995
|
-
interface DateSelectorProps {
|
|
1996
|
-
initialDateRange?: DateRange;
|
|
1997
|
-
initialMonthFilter?: string[] | null;
|
|
1998
|
-
onChange?: (dateRange: DateRange | null) => void;
|
|
1999
|
-
onMonthFilterChange?: (months: string[] | null) => void;
|
|
2000
|
-
/** Called when dropdown closes - receives current values */
|
|
2001
|
-
onClose?: (dateRange: DateRange | null, monthFilter: string[] | null) => void;
|
|
2002
|
-
disabled?: boolean;
|
|
2003
|
-
className?: string;
|
|
2004
|
-
icon?: React__default.ReactNode;
|
|
2005
|
-
}
|
|
2006
|
-
/**
|
|
2007
|
-
* DateSelector - Date range and flexible month picker
|
|
2008
|
-
*
|
|
2009
|
-
* Features:
|
|
2010
|
-
* - Calendar for specific date range
|
|
2011
|
-
* - Month chips for flexible dates
|
|
2012
|
-
* - "Anytime" option
|
|
2013
|
-
* - Desktop: centered dropdown
|
|
2014
|
-
* - Mobile: bottom sheet
|
|
2015
|
-
*/
|
|
2016
|
-
declare const DateSelector: React__default.FC<DateSelectorProps>;
|
|
2017
|
-
|
|
2018
|
-
interface DualCalendarProps {
|
|
2019
|
-
startDate: string | null;
|
|
2020
|
-
endDate: string | null;
|
|
2021
|
-
onDateSelect: (date: string) => void;
|
|
2022
|
-
minDate?: string;
|
|
2023
|
-
locale?: string;
|
|
2024
|
-
}
|
|
2025
|
-
declare const DualCalendar: React__default.FC<DualCalendarProps>;
|
|
2026
|
-
|
|
2027
|
-
/**
|
|
2028
|
-
* Guest counts object
|
|
2029
|
-
*/
|
|
2030
|
-
interface GuestCounts {
|
|
2031
|
-
adults: number;
|
|
2032
|
-
children: number;
|
|
2033
|
-
childrenAges: Array<number | null>;
|
|
2034
|
-
}
|
|
2035
|
-
interface ChildAgeError {
|
|
2036
|
-
index: number;
|
|
2037
|
-
message: string;
|
|
2038
|
-
}
|
|
2039
|
-
interface GuestContentProps {
|
|
2040
|
-
/** Current guest counts */
|
|
2041
|
-
guests: GuestCounts;
|
|
2042
|
-
/** Called when guests change */
|
|
2043
|
-
onChange: (guests: GuestCounts) => void;
|
|
2044
|
-
/** Current pet filter value (0 or 1) */
|
|
2045
|
-
petFilter?: number;
|
|
2046
|
-
/** Called when pet filter changes */
|
|
2047
|
-
onPetChange?: (value: number) => void;
|
|
2048
|
-
/** Show pet toggle */
|
|
2049
|
-
showPetToggle?: boolean;
|
|
2050
|
-
/** Additional class name for container */
|
|
2051
|
-
className?: string;
|
|
2052
|
-
/** Validation errors for child ages */
|
|
2053
|
-
childAgeErrors?: ChildAgeError[];
|
|
2054
|
-
/** Called when an error is cleared (user selects an age) */
|
|
2055
|
-
onErrorClear?: (index: number) => void;
|
|
2056
|
-
}
|
|
2057
|
-
/**
|
|
2058
|
-
* GuestContent - Shared guest selection UI
|
|
2059
|
-
*
|
|
2060
|
-
* Used by both desktop GuestSelector dropdown and mobile SearchModal.
|
|
2061
|
-
* Contains adults counter, children counter with age dropdowns, and optional pet toggle.
|
|
2062
|
-
* Translations handled internally via UIContext.
|
|
2063
|
-
*/
|
|
2064
|
-
declare const GuestContent: React__default.FC<GuestContentProps>;
|
|
2065
|
-
|
|
2066
|
-
/**
|
|
2067
|
-
* HotelCard Component Types
|
|
2068
|
-
*
|
|
2069
|
-
* Shared hotel card for search results. Platform-agnostic design.
|
|
2070
|
-
* Translations handled internally via UIContext.
|
|
2071
|
-
*/
|
|
2072
|
-
/**
|
|
2073
|
-
* Hotel data structure for the card
|
|
2074
|
-
*/
|
|
2075
|
-
interface HotelCardHotel {
|
|
2076
|
-
id: string;
|
|
2077
|
-
name: string;
|
|
2078
|
-
slug: string;
|
|
2079
|
-
stars: number;
|
|
2080
|
-
isSuperior?: boolean;
|
|
2081
|
-
rating: number;
|
|
2082
|
-
location: string;
|
|
2083
|
-
images: string[];
|
|
2084
|
-
isFavorite: boolean;
|
|
2085
|
-
benefits: Array<{
|
|
2086
|
-
id: string;
|
|
2087
|
-
label: string;
|
|
2088
|
-
}>;
|
|
2089
|
-
isAvailable?: boolean;
|
|
2090
|
-
currency?: string;
|
|
2091
|
-
price: {
|
|
2092
|
-
current: number;
|
|
2093
|
-
original?: number;
|
|
2094
|
-
discount?: number;
|
|
2095
|
-
};
|
|
2096
|
-
usp?: string;
|
|
2097
|
-
badges?: string[];
|
|
2098
|
-
}
|
|
2099
|
-
interface HotelCardProps {
|
|
2100
|
-
/** Hotel data */
|
|
2101
|
-
hotel: HotelCardHotel;
|
|
2102
|
-
/** Called when favorite button is clicked */
|
|
2103
|
-
onFavoriteClick: () => void;
|
|
2104
|
-
/** Called when card content is clicked (for navigation) */
|
|
2105
|
-
onContentClick?: () => void;
|
|
2106
|
-
/** Additional class name */
|
|
2107
|
-
className?: string;
|
|
2108
|
-
}
|
|
2109
|
-
interface HotelCardImageProps {
|
|
2110
|
-
images: string[];
|
|
2111
|
-
hotelName: string;
|
|
2112
|
-
badges?: string[];
|
|
2113
|
-
isFavorite: boolean;
|
|
2114
|
-
onFavoriteClick: () => void;
|
|
2115
|
-
}
|
|
2116
|
-
interface HotelCardContentProps {
|
|
2117
|
-
name: string;
|
|
2118
|
-
stars: number;
|
|
2119
|
-
isSuperior?: boolean;
|
|
2120
|
-
rating: number;
|
|
2121
|
-
location: string;
|
|
2122
|
-
benefits: Array<{
|
|
2123
|
-
id: string;
|
|
2124
|
-
label: string;
|
|
2125
|
-
}>;
|
|
2126
|
-
price: {
|
|
2127
|
-
current: number;
|
|
2128
|
-
original?: number;
|
|
2129
|
-
discount?: number;
|
|
2130
|
-
};
|
|
2131
|
-
currency?: string;
|
|
2132
|
-
isAvailable?: boolean;
|
|
2133
|
-
usp?: string;
|
|
2134
|
-
onClick?: () => void;
|
|
2135
|
-
}
|
|
2136
|
-
|
|
2137
|
-
/**
|
|
2138
|
-
* HotelCard Component
|
|
2139
|
-
*
|
|
2140
|
-
* A presentational card component for displaying hotel information in search results.
|
|
2141
|
-
* Platform-agnostic - navigation and auth logic should be handled by consuming apps.
|
|
2142
|
-
* Translations handled internally via UIContext.
|
|
2143
|
-
*
|
|
2144
|
-
* @example
|
|
2145
|
-
* ```tsx
|
|
2146
|
-
* <HotelCard
|
|
2147
|
-
* hotel={hotelData}
|
|
2148
|
-
* onFavoriteClick={() => toggleFavorite(hotelData.id)}
|
|
2149
|
-
* onContentClick={() => navigate(`/hotel/${hotelData.slug}`)}
|
|
2150
|
-
* />
|
|
2151
|
-
* ```
|
|
2152
|
-
*/
|
|
2153
|
-
declare const HotelCard: React__default.FC<HotelCardProps>;
|
|
2154
|
-
|
|
2155
|
-
declare const HotelCardImage: React__default.FC<HotelCardImageProps>;
|
|
2156
|
-
|
|
2157
|
-
declare const HotelCardContent: React__default.FC<HotelCardContentProps>;
|
|
2158
|
-
|
|
2159
|
-
/**
|
|
2160
|
-
* FilterCheckboxItem - Reusable filter checkbox row with proper states
|
|
2161
|
-
*
|
|
2162
|
-
* States: idle, hover, active (checked), focused, disabled
|
|
2163
|
-
*/
|
|
2164
|
-
interface FilterCheckboxItemProps {
|
|
2165
|
-
/** Unique identifier for the checkbox */
|
|
2166
|
-
id?: string;
|
|
2167
|
-
/** Display label */
|
|
2168
|
-
label: React__default.ReactNode;
|
|
2169
|
-
/** Count to display on the right */
|
|
2170
|
-
count?: number | string;
|
|
2171
|
-
/** Whether the checkbox is checked */
|
|
2172
|
-
checked: boolean;
|
|
2173
|
-
/** Whether the item is disabled */
|
|
2174
|
-
disabled?: boolean;
|
|
2175
|
-
/** Change handler */
|
|
2176
|
-
onChange: () => void;
|
|
2177
|
-
/** Additional class name */
|
|
2178
|
-
className?: string;
|
|
2179
|
-
/** Analytics tracking name (used for data-track attribute) */
|
|
2180
|
-
trackName?: string;
|
|
2181
|
-
}
|
|
2182
|
-
declare const FilterCheckboxItem: React__default.FC<FilterCheckboxItemProps>;
|
|
2183
|
-
|
|
2184
|
-
/**
|
|
2185
|
-
* CollapsibleFilterSection - Wrapper for expandable/collapsible filter sections
|
|
2186
|
-
*
|
|
2187
|
-
* Features:
|
|
2188
|
-
* - Section header with title + chevron
|
|
2189
|
-
* - Collapse/expand animation
|
|
2190
|
-
* - Optional "Show all" link for long lists
|
|
2191
|
-
* - Default collapsed state configurable
|
|
2192
|
-
*/
|
|
2193
|
-
interface CollapsibleFilterSectionProps {
|
|
2194
|
-
title: string;
|
|
2195
|
-
children: React__default.ReactNode;
|
|
2196
|
-
defaultExpanded?: boolean;
|
|
2197
|
-
showAllText?: string;
|
|
2198
|
-
showLessText?: string;
|
|
2199
|
-
hasShowAll?: boolean;
|
|
2200
|
-
initialItemsToShow?: number;
|
|
2201
|
-
className?: string;
|
|
2202
|
-
}
|
|
2203
|
-
declare const CollapsibleFilterSection: React__default.FC<CollapsibleFilterSectionProps>;
|
|
2204
|
-
|
|
2205
|
-
interface PriceRangeFilterProps {
|
|
2206
|
-
minPrice: number;
|
|
2207
|
-
maxPrice: number;
|
|
2208
|
-
value: {
|
|
2209
|
-
min: number;
|
|
2210
|
-
max: number;
|
|
2211
|
-
};
|
|
2212
|
-
onChange: (value: {
|
|
2213
|
-
min: number;
|
|
2214
|
-
max: number;
|
|
2215
|
-
}) => void;
|
|
2216
|
-
/** Called only when user finishes selecting (debounced) */
|
|
2217
|
-
onApply?: (value: {
|
|
2218
|
-
min: number;
|
|
2219
|
-
max: number;
|
|
2220
|
-
}) => void;
|
|
2221
|
-
histogram?: number[];
|
|
2222
|
-
currency?: string;
|
|
2223
|
-
/** Called when user is actively dragging */
|
|
2224
|
-
onDragStart?: () => void;
|
|
2225
|
-
onDragEnd?: () => void;
|
|
2226
|
-
/** Debounce delay in milliseconds for onApply */
|
|
2227
|
-
debounceDelay?: number;
|
|
2228
|
-
}
|
|
2229
|
-
declare const PriceRangeFilter: React__default.FC<PriceRangeFilterProps>;
|
|
2230
|
-
|
|
2231
|
-
/**
|
|
2232
|
-
* HotelCategoryFilter - Checkbox list for hotel star ratings
|
|
2233
|
-
*
|
|
2234
|
-
* Options: 5★, 4★, 3★, 2★, Swiss Lodge, No category
|
|
2235
|
-
* Footer with HotellerieSuisse attribution
|
|
2236
|
-
*/
|
|
2237
|
-
interface CategoryOption {
|
|
2238
|
-
value: string;
|
|
2239
|
-
stars: number;
|
|
2240
|
-
label: string | null;
|
|
2241
|
-
}
|
|
2242
|
-
declare const CATEGORY_OPTIONS: CategoryOption[];
|
|
2243
|
-
interface HotelCategoryFilterProps {
|
|
2244
|
-
selected: string[];
|
|
2245
|
-
counts?: Record<string, number>;
|
|
2246
|
-
onChange: (values: string[]) => void;
|
|
2247
|
-
className?: string;
|
|
2248
|
-
}
|
|
2249
|
-
declare const HotelCategoryFilter: React__default.FC<HotelCategoryFilterProps>;
|
|
2250
|
-
|
|
2251
|
-
/**
|
|
2252
|
-
* ReviewsFilter - Checkbox list for filtering by review rating
|
|
2253
|
-
*
|
|
2254
|
-
* Options: Excellent (4.4+), Very Good (4.1-4.3), Good (3.8-4.0), Fair (3.5-3.7), No rating
|
|
2255
|
-
* Footer: TrustYou attribution
|
|
2256
|
-
*/
|
|
2257
|
-
interface ReviewOption {
|
|
2258
|
-
value: string;
|
|
2259
|
-
labelKey: string;
|
|
2260
|
-
range: string;
|
|
2261
|
-
}
|
|
2262
|
-
declare const REVIEW_OPTIONS: ReviewOption[];
|
|
2263
|
-
interface ReviewsFilterProps {
|
|
2264
|
-
selected: string[];
|
|
2265
|
-
counts?: Record<string, number>;
|
|
2266
|
-
onChange: (values: string[]) => void;
|
|
2267
|
-
className?: string;
|
|
2268
|
-
isPlaceSearchActive?: boolean;
|
|
2269
|
-
}
|
|
2270
|
-
declare const ReviewsFilter: React__default.FC<ReviewsFilterProps>;
|
|
2271
|
-
|
|
2272
|
-
/**
|
|
2273
|
-
* ExperienceFilter - Checkbox list for experience/theme types
|
|
2274
|
-
*
|
|
2275
|
-
* Options come from API with pre-translated names
|
|
2276
|
-
* Expandable with "Show all" if more than 5 options
|
|
2277
|
-
*/
|
|
2278
|
-
interface ThemeAggregation {
|
|
2279
|
-
id: number;
|
|
2280
|
-
name: string;
|
|
2281
|
-
count: number;
|
|
2282
|
-
}
|
|
2283
|
-
interface ExperienceFilterProps {
|
|
2284
|
-
selected: string[];
|
|
2285
|
-
/** Theme aggregations from API with pre-translated names */
|
|
2286
|
-
themes?: ThemeAggregation[];
|
|
2287
|
-
onChange: (values: string[]) => void;
|
|
2288
|
-
className?: string;
|
|
2289
|
-
}
|
|
2290
|
-
declare const ExperienceFilter: React__default.FC<ExperienceFilterProps>;
|
|
2291
|
-
|
|
2292
|
-
/**
|
|
2293
|
-
* RegionsFilter - Accordion-style destinations filter
|
|
2294
|
-
*
|
|
2295
|
-
* Features:
|
|
2296
|
-
* - Country rows are accordion headers (NO checkbox on country)
|
|
2297
|
-
* - Clicking country row expands/collapses accordion
|
|
2298
|
-
* - Sub-regions appear as checkbox list when country is expanded
|
|
2299
|
-
* - Mobile-friendly "Select All" / "Reset" actions
|
|
2300
|
-
*/
|
|
2301
|
-
interface RegionOption {
|
|
2302
|
-
value: string;
|
|
2303
|
-
label: string;
|
|
2304
|
-
count?: number;
|
|
2305
|
-
subRegions?: RegionOption[];
|
|
2306
|
-
}
|
|
2307
|
-
interface RegionsFilterProps {
|
|
2308
|
-
regions: RegionOption[];
|
|
2309
|
-
selected: string[];
|
|
2310
|
-
onChange: (values: string[]) => void;
|
|
2311
|
-
className?: string;
|
|
2312
|
-
isPlaceSearchActive?: boolean;
|
|
2313
|
-
}
|
|
2314
|
-
declare const RegionsFilter: React__default.FC<RegionsFilterProps>;
|
|
2315
|
-
|
|
2316
|
-
/**
|
|
2317
|
-
* CheckboxFilter - Generic checkbox list filter
|
|
2318
|
-
*
|
|
2319
|
-
* Used for: Meals, Transport, Wellness, and other dynamic filter options
|
|
2320
|
-
* Options come from API with pre-translated names
|
|
2321
|
-
*/
|
|
2322
|
-
interface FilterOption {
|
|
2323
|
-
id: number;
|
|
2324
|
-
key: string;
|
|
2325
|
-
name: string;
|
|
2326
|
-
}
|
|
2327
|
-
interface CheckboxFilterProps {
|
|
2328
|
-
selected: string[];
|
|
2329
|
-
counts?: Record<string, number>;
|
|
2330
|
-
/** Filter options from API with pre-translated names */
|
|
2331
|
-
options?: FilterOption[];
|
|
2332
|
-
onChange: (values: string[]) => void;
|
|
2333
|
-
className?: string;
|
|
2334
|
-
/** Prefix for track names (e.g., 'meals', 'transport', 'wellness') */
|
|
2335
|
-
trackPrefix?: string;
|
|
2336
|
-
}
|
|
2337
|
-
declare const CheckboxFilter: React__default.FC<CheckboxFilterProps>;
|
|
2338
|
-
declare const MealsFilter: (props: Omit<CheckboxFilterProps, "trackPrefix">) => react_jsx_runtime.JSX.Element;
|
|
2339
|
-
declare const TransportFilter: (props: Omit<CheckboxFilterProps, "trackPrefix">) => react_jsx_runtime.JSX.Element;
|
|
2340
|
-
declare const WellnessFilter: (props: Omit<CheckboxFilterProps, "trackPrefix">) => react_jsx_runtime.JSX.Element;
|
|
2341
|
-
|
|
2342
|
-
/**
|
|
2343
|
-
* SelectedFiltersRow - Shows active filters as removable chips
|
|
2344
|
-
*
|
|
2345
|
-
* Features:
|
|
2346
|
-
* - Horizontal wrapping flex layout
|
|
2347
|
-
* - Each chip uses Chip/Filter component (small size)
|
|
2348
|
-
* - "Clear all" link at end
|
|
2349
|
-
* - Hidden when no filters active
|
|
2350
|
-
*/
|
|
2351
|
-
interface SelectedFilter {
|
|
2352
|
-
id: string;
|
|
2353
|
-
label: string;
|
|
2354
|
-
type: string;
|
|
2355
|
-
value: string;
|
|
2356
|
-
}
|
|
2357
|
-
interface SelectedFiltersRowProps {
|
|
2358
|
-
filters: SelectedFilter[];
|
|
2359
|
-
onRemove: (filter: SelectedFilter) => void;
|
|
2360
|
-
onClearAll: () => void;
|
|
2361
|
-
className?: string;
|
|
2362
|
-
}
|
|
2363
|
-
declare const SelectedFiltersRow: React__default.FC<SelectedFiltersRowProps>;
|
|
2364
|
-
|
|
2365
|
-
interface HeartIconProps {
|
|
2366
|
-
filled?: boolean;
|
|
2367
|
-
className?: string;
|
|
2368
|
-
size?: number;
|
|
2369
|
-
}
|
|
2370
|
-
declare const HeartIcon: {
|
|
2371
|
-
({ filled, className, size }: HeartIconProps): react_jsx_runtime.JSX.Element;
|
|
2372
|
-
displayName: string;
|
|
2373
|
-
};
|
|
2374
|
-
|
|
2375
|
-
interface StarIconProps {
|
|
2376
|
-
filled?: boolean;
|
|
2377
|
-
className?: string;
|
|
2378
|
-
size?: number;
|
|
2379
|
-
}
|
|
2380
|
-
declare const StarIcon: {
|
|
2381
|
-
({ filled, className, size }: StarIconProps): react_jsx_runtime.JSX.Element;
|
|
2382
|
-
displayName: string;
|
|
2383
|
-
};
|
|
2384
|
-
|
|
2385
|
-
interface ChevronLeftIconProps {
|
|
2386
|
-
className?: string;
|
|
2387
|
-
size?: number;
|
|
2388
|
-
}
|
|
2389
|
-
declare const ChevronLeftIcon: {
|
|
2390
|
-
({ className, size }: ChevronLeftIconProps): react_jsx_runtime.JSX.Element;
|
|
2391
|
-
displayName: string;
|
|
2392
|
-
};
|
|
2393
|
-
|
|
2394
|
-
interface ChevronRightIconProps {
|
|
2395
|
-
className?: string;
|
|
2396
|
-
size?: number;
|
|
2397
|
-
}
|
|
2398
|
-
declare const ChevronRightIcon: {
|
|
2399
|
-
({ className, size }: ChevronRightIconProps): react_jsx_runtime.JSX.Element;
|
|
2400
|
-
displayName: string;
|
|
2401
|
-
};
|
|
2402
|
-
|
|
2403
|
-
interface PinIconProps {
|
|
2404
|
-
className?: string;
|
|
2405
|
-
size?: number;
|
|
2406
|
-
}
|
|
2407
|
-
declare const PinIcon: {
|
|
2408
|
-
({ className, size }: PinIconProps): react_jsx_runtime.JSX.Element;
|
|
2409
|
-
displayName: string;
|
|
2410
|
-
};
|
|
2411
|
-
|
|
2412
|
-
declare const useDebounce: <T>(value: T, delay: number) => T;
|
|
2413
|
-
|
|
2414
|
-
/**
|
|
2415
|
-
* useResponsive - Detect responsive breakpoints
|
|
2416
|
-
*
|
|
2417
|
-
* Automatically detects screen size and updates when window resizes.
|
|
2418
|
-
* Works without HotelCardUIProvider - uses window.innerWidth detection.
|
|
2419
|
-
*
|
|
2420
|
-
* Breakpoints:
|
|
2421
|
-
* - Desktop: >= 1024px
|
|
2422
|
-
* - Mobile: < 1024px
|
|
2423
|
-
*
|
|
2424
|
-
* @example
|
|
2425
|
-
* ```tsx
|
|
2426
|
-
* const { isDesktop } = useResponsive();
|
|
2427
|
-
*
|
|
2428
|
-
* return isDesktop ? <DesktopView /> : <MobileView />;
|
|
2429
|
-
* ```
|
|
2430
|
-
*/
|
|
2431
|
-
declare const useResponsive: () => {
|
|
2432
|
-
isDesktop: boolean;
|
|
2433
|
-
};
|
|
2434
|
-
|
|
2435
|
-
/**
|
|
2436
|
-
* useWindowData - Get locale and currency from UI context
|
|
2437
|
-
*
|
|
2438
|
-
* Returns locale and currency from the HotelCardUIProvider context.
|
|
2439
|
-
* Defaults: locale='de', currency='CHF'
|
|
2440
|
-
*
|
|
2441
|
-
* @example
|
|
2442
|
-
* ```tsx
|
|
2443
|
-
* const { locale, currency } = useWindowData();
|
|
2444
|
-
* ```
|
|
2445
|
-
*/
|
|
2446
|
-
declare const useWindowData: () => {
|
|
2447
|
-
locale: "de" | "en" | "fr" | "it";
|
|
2448
|
-
currency: string;
|
|
2449
|
-
};
|
|
2450
|
-
|
|
2451
|
-
type TranslateFunction = (key: string, options?: Record<string, unknown>, fallback?: string) => string;
|
|
2452
|
-
/**
|
|
2453
|
-
* useTranslation - Wrapper around react-i18next useTranslation
|
|
2454
|
-
*
|
|
2455
|
-
* Provides translation function for UI components.
|
|
2456
|
-
* Consuming apps must have react-i18next configured.
|
|
2457
|
-
*
|
|
2458
|
-
* @example
|
|
2459
|
-
* ```tsx
|
|
2460
|
-
* const { t } = useTranslation();
|
|
2461
|
-
* return <span>{t('search:label.dates')}</span>;
|
|
2462
|
-
* ```
|
|
2463
|
-
*/
|
|
2464
|
-
declare const useTranslation: (namespace?: string | string[]) => {
|
|
2465
|
-
t: TranslateFunction;
|
|
2466
|
-
i18n: i18next.i18n;
|
|
2467
|
-
};
|
|
2468
|
-
|
|
2469
|
-
declare const formatPrice: (amount: number, currency?: string, locale?: string) => string;
|
|
2470
|
-
|
|
2471
|
-
declare const formatDate: (date: string | Date, formatStr?: string, locale?: string) => string;
|
|
2472
|
-
declare const formatDateRange: (checkIn: string | Date, checkOut: string | Date, locale?: string) => string;
|
|
2473
|
-
|
|
2474
|
-
declare const calculateDiscount: (originalPrice: number, discountedPrice: number) => number;
|
|
2475
|
-
|
|
2476
|
-
interface Hotel {
|
|
2477
|
-
id: number;
|
|
2478
|
-
name: string;
|
|
2479
|
-
location: string;
|
|
2480
|
-
region?: string;
|
|
2481
|
-
country?: string;
|
|
2482
|
-
stars: number;
|
|
2483
|
-
rating?: number;
|
|
2484
|
-
reviewCount?: number;
|
|
2485
|
-
imageUrl: string;
|
|
2486
|
-
images?: string[];
|
|
2487
|
-
priceFrom: number;
|
|
2488
|
-
originalPrice?: number;
|
|
2489
|
-
currency: string;
|
|
2490
|
-
discountPercent?: number;
|
|
2491
|
-
isFavourited?: boolean;
|
|
2492
|
-
isNew?: boolean;
|
|
2493
|
-
benefits?: string[];
|
|
2494
|
-
}
|
|
2495
|
-
|
|
2496
|
-
interface Booking {
|
|
2497
|
-
id: number;
|
|
2498
|
-
confirmationNumber: string;
|
|
2499
|
-
status: 'confirmed' | 'cancelled' | 'completed';
|
|
2500
|
-
hotel: {
|
|
2501
|
-
id: number;
|
|
2502
|
-
name: string;
|
|
2503
|
-
location: string;
|
|
2504
|
-
imageUrl: string;
|
|
2505
|
-
};
|
|
2506
|
-
checkIn: string;
|
|
2507
|
-
checkOut: string;
|
|
2508
|
-
guests: number;
|
|
2509
|
-
roomType: string;
|
|
2510
|
-
totalPrice: number;
|
|
2511
|
-
currency: string;
|
|
2512
|
-
createdAt: string;
|
|
2513
|
-
}
|
|
2514
|
-
|
|
2515
|
-
interface Address {
|
|
2516
|
-
id?: number;
|
|
2517
|
-
line1: string;
|
|
2518
|
-
line2?: string;
|
|
2519
|
-
zip: string;
|
|
2520
|
-
city: string;
|
|
2521
|
-
countryCode: string;
|
|
2522
|
-
}
|
|
2523
|
-
interface Membership {
|
|
2524
|
-
cardNumber: string;
|
|
2525
|
-
validFrom: string;
|
|
2526
|
-
validUntil: string;
|
|
2527
|
-
}
|
|
2528
|
-
interface User {
|
|
2529
|
-
id: number;
|
|
2530
|
-
firstName: string;
|
|
2531
|
-
lastName: string;
|
|
2532
|
-
email: string;
|
|
2533
|
-
phone?: string;
|
|
2534
|
-
locale: string;
|
|
2535
|
-
currency: string;
|
|
2536
|
-
activeAddress?: Address;
|
|
2537
|
-
membership?: Membership;
|
|
2538
|
-
}
|
|
2539
|
-
|
|
2540
|
-
interface SearchParams {
|
|
2541
|
-
destination?: string;
|
|
2542
|
-
checkIn?: string;
|
|
2543
|
-
checkOut?: string;
|
|
2544
|
-
adults?: number;
|
|
2545
|
-
children?: number;
|
|
2546
|
-
flexibleDates?: boolean;
|
|
2547
|
-
flexibleMonth?: string;
|
|
2548
|
-
}
|
|
2549
|
-
interface SearchFilters {
|
|
2550
|
-
priceMin?: number;
|
|
2551
|
-
priceMax?: number;
|
|
2552
|
-
stars?: number[];
|
|
2553
|
-
rating?: number;
|
|
2554
|
-
amenities?: string[];
|
|
2555
|
-
experiences?: string[];
|
|
2556
|
-
regions?: string[];
|
|
2557
|
-
}
|
|
2558
|
-
|
|
2559
|
-
export { type Address, Badge, type BadgeProps, type BenefitItem, Benefits, type BenefitsProps, Block, type BlockProps, type Booking, Button, type ButtonProps, CATEGORY_OPTIONS, Card, type CardBadge, type CardProps, type CardRatingInfo, type CategoryOption, Checkbox, CheckboxFilter, type CheckboxFilterProps, type CheckboxProps, type CheckboxSize, ChevronLeftIcon, ChevronRightIcon, type ChildAgeError, Chip, type ChipProps, type ChipSize, type ChipState, CollapsibleFilterSection, type CollapsibleFilterSectionProps, type DateRange, DateSelector, type DateSelectorProps, Divider, type DividerProps, Dropdown, type DropdownOption, type DropdownProps, DualCalendar, ExperienceFilter, type ExperienceFilterProps, FAQ, type FAQItem, type FAQProps, FilterCheckboxItem, type FilterCheckboxItemProps, type FilterOption, GuestContent, type GuestContentProps, type GuestCounts, HeartIcon, type Hotel, HotelCard, HotelCardContent, type HotelCardContentProps, type HotelCardHotel, HotelCardImage, type HotelCardImageProps, type HotelCardProps, HotelCardUIProvider, type HotelCardUIProviderProps, HotelCategoryFilter, type HotelCategoryFilterProps, Input, type InputProps, type InputType, type Locale, MealsFilter, type Membership, Modal, type ModalProps, Pin, PinIcon, type PinProps, PriceRangeFilter, type PriceRangeFilterProps, REVIEW_OPTIONS, RadioButton, type RadioButtonProps, Rating, type RatingProps, type RegionOption, RegionsFilter, type RegionsFilterProps, ReviewCard, type ReviewCardProps, type ReviewOption, ReviewsFilter, type ReviewsFilterProps, type SearchFilters, type SearchParams, SectionHeader, type SectionHeaderProps, type SelectedFilter, SelectedFiltersRow, type SelectedFiltersRowProps, StarIcon, type ThemeAggregation, type TranslateFunction$1 as TranslateFunction, type TranslationKeys, TransportFilter, type UIContextValue, type User, WellnessFilter, WhenContent, type WhenContentProps, calculateDiscount, formatDate, formatDateRange, formatPrice, translations, useDebounce, useResponsive, useTranslation, useUIContext, useWindowData };
|