@hotelcard/ui 0.0.12 → 0.0.15
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/README.md +164 -54
- package/dist/index.cjs +1150 -370
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +381 -146
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +741 -79
- package/dist/index.d.ts +741 -79
- package/dist/index.js +1149 -372
- package/dist/index.js.map +1 -1
- package/package.json +15 -4
package/dist/index.d.cts
CHANGED
|
@@ -3,21 +3,662 @@ import React__default, { ReactNode, ButtonHTMLAttributes } from 'react';
|
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
import * as i18next from 'i18next';
|
|
5
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
|
+
};
|
|
65
|
+
var product = {
|
|
66
|
+
"6m": "6-month subscription",
|
|
67
|
+
"1y": "1-year subscription",
|
|
68
|
+
"2y": "2-year subscription",
|
|
69
|
+
"3y": "3-year subscription",
|
|
70
|
+
"price-6m": "79.-",
|
|
71
|
+
"price-6m-disc": "59.-",
|
|
72
|
+
"price-1y": "99.-",
|
|
73
|
+
"price-1y-disc": "79.-",
|
|
74
|
+
"price-2y": "198.-",
|
|
75
|
+
"price-2y-disc": "173.-",
|
|
76
|
+
"price-3y": "297.-",
|
|
77
|
+
"price-3y-disc": "247.-",
|
|
78
|
+
"price-gift": "99.-",
|
|
79
|
+
"price-gift-disc": "59.-"
|
|
80
|
+
};
|
|
81
|
+
var subheadline = {
|
|
82
|
+
"your-hc": "Your HotelCard",
|
|
83
|
+
"popular-hotels": "Popular hotel deals",
|
|
84
|
+
"no-results": "Explore different destinations, change your dates, or remove some filters.",
|
|
85
|
+
"sort-by": "Sort by"
|
|
86
|
+
};
|
|
87
|
+
var form = {
|
|
88
|
+
guests: "guests",
|
|
89
|
+
guest: "guest",
|
|
90
|
+
adults: "Adults",
|
|
91
|
+
children: "Children",
|
|
92
|
+
pet: "Pet",
|
|
93
|
+
"age-of-child": "Child’s age",
|
|
94
|
+
age: "Age",
|
|
95
|
+
"age-error": "Please select age"
|
|
96
|
+
};
|
|
97
|
+
var filter = {
|
|
98
|
+
filters: "Filters",
|
|
99
|
+
destination: "Destination",
|
|
100
|
+
experience: "Experience",
|
|
101
|
+
"show-all": "Show all",
|
|
102
|
+
price: "Price",
|
|
103
|
+
discount: "Discount",
|
|
104
|
+
services: "Services",
|
|
105
|
+
meals: "Meals",
|
|
106
|
+
"hotel-category": "Hotel category",
|
|
107
|
+
reviews: "Reviews",
|
|
108
|
+
mobility: "Mobility",
|
|
109
|
+
"wellness-spa": "Wellness & Spa",
|
|
110
|
+
"price-high-low": "Price high to low",
|
|
111
|
+
"price-low-high": "Price low to high",
|
|
112
|
+
"best-rating": "Best guest rating",
|
|
113
|
+
"most-popular": "Most popular",
|
|
114
|
+
"newest-hotels": "Newest",
|
|
115
|
+
relevance: "Relevance",
|
|
116
|
+
selected: "Selected",
|
|
117
|
+
"clear-all": "Clear all",
|
|
118
|
+
options: "Options",
|
|
119
|
+
"hotellerie-suisse": "Classification HotellerieSuisse",
|
|
120
|
+
trustyou: "Reviews from travelers on TrustYou®",
|
|
121
|
+
"select-all": "Select all",
|
|
122
|
+
reset: "Reset",
|
|
123
|
+
"breakfast-included": "Breakfast included"
|
|
124
|
+
};
|
|
125
|
+
var headline = {
|
|
126
|
+
"no-results": "No stays match your search right now"
|
|
127
|
+
};
|
|
128
|
+
var en = {
|
|
129
|
+
button: button,
|
|
130
|
+
link: link,
|
|
131
|
+
general: general,
|
|
132
|
+
label: label,
|
|
133
|
+
product: product,
|
|
134
|
+
subheadline: subheadline,
|
|
135
|
+
form: form,
|
|
136
|
+
filter: filter,
|
|
137
|
+
headline: headline
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
declare const translations: {
|
|
141
|
+
readonly de: {
|
|
142
|
+
button: {
|
|
143
|
+
order: string;
|
|
144
|
+
"order-navigation": string;
|
|
145
|
+
"order-hc": string;
|
|
146
|
+
"my-account": string;
|
|
147
|
+
search: string;
|
|
148
|
+
"back-to-top": string;
|
|
149
|
+
};
|
|
150
|
+
link: {
|
|
151
|
+
"member-benefits": string;
|
|
152
|
+
"view-all-hotels": string;
|
|
153
|
+
"search-by-map": string;
|
|
154
|
+
"search-by-region": string;
|
|
155
|
+
"search-by-experience": string;
|
|
156
|
+
"travel-inspiration": string;
|
|
157
|
+
"booking-tips-and-tricks": string;
|
|
158
|
+
home: string;
|
|
159
|
+
"all-hotel-deals": string;
|
|
160
|
+
"search-results": string;
|
|
161
|
+
};
|
|
162
|
+
general: {
|
|
163
|
+
"signed-out": string;
|
|
164
|
+
"room-price": string;
|
|
165
|
+
guarantee: string;
|
|
166
|
+
contact: string;
|
|
167
|
+
"breakfast-included": string;
|
|
168
|
+
"free-cancellation": string;
|
|
169
|
+
"suggested-destinations": string;
|
|
170
|
+
"when-months": string;
|
|
171
|
+
"hotel-deals-found": string;
|
|
172
|
+
"no-results": string;
|
|
173
|
+
"unavailable-for-selected-days": string;
|
|
174
|
+
"cant-accommodate-all": string;
|
|
175
|
+
"reset-destination": string;
|
|
176
|
+
};
|
|
177
|
+
label: {
|
|
178
|
+
"price-from": string;
|
|
179
|
+
"price-for": string;
|
|
180
|
+
"per-room-night": string;
|
|
181
|
+
new: string;
|
|
182
|
+
anytime: string;
|
|
183
|
+
anywhere: string;
|
|
184
|
+
dates: string;
|
|
185
|
+
flexible: string;
|
|
186
|
+
where: string;
|
|
187
|
+
when: string;
|
|
188
|
+
who: string;
|
|
189
|
+
nearby: string;
|
|
190
|
+
hotels: string;
|
|
191
|
+
filter: string;
|
|
192
|
+
sort: string;
|
|
193
|
+
map: string;
|
|
194
|
+
rating: string;
|
|
195
|
+
"rating-excellent": string;
|
|
196
|
+
"rating-very-good": string;
|
|
197
|
+
"rating-good": string;
|
|
198
|
+
"rating-fair": string;
|
|
199
|
+
"rating-none": string;
|
|
200
|
+
};
|
|
201
|
+
product: {
|
|
202
|
+
"6m": string;
|
|
203
|
+
"1y": string;
|
|
204
|
+
"2y": string;
|
|
205
|
+
"3y": string;
|
|
206
|
+
"price-6m": string;
|
|
207
|
+
"price-6m-disc": string;
|
|
208
|
+
"price-1y": string;
|
|
209
|
+
"price-1y-disc": string;
|
|
210
|
+
"price-2y": string;
|
|
211
|
+
"price-2y-disc": string;
|
|
212
|
+
"price-3y": string;
|
|
213
|
+
"price-3y-disc": string;
|
|
214
|
+
"price-gift": string;
|
|
215
|
+
"price-gift-disc": string;
|
|
216
|
+
};
|
|
217
|
+
subheadline: {
|
|
218
|
+
"your-hc": string;
|
|
219
|
+
"popular-hotels": string;
|
|
220
|
+
"no-results": string;
|
|
221
|
+
"sort-by": string;
|
|
222
|
+
};
|
|
223
|
+
form: {
|
|
224
|
+
guests: string;
|
|
225
|
+
guest: string;
|
|
226
|
+
adults: string;
|
|
227
|
+
children: string;
|
|
228
|
+
pet: string;
|
|
229
|
+
"age-of-child": string;
|
|
230
|
+
age: string;
|
|
231
|
+
"age-error": string;
|
|
232
|
+
};
|
|
233
|
+
filter: {
|
|
234
|
+
filters: string;
|
|
235
|
+
destination: string;
|
|
236
|
+
experience: string;
|
|
237
|
+
"show-all": string;
|
|
238
|
+
price: string;
|
|
239
|
+
discount: string;
|
|
240
|
+
services: string;
|
|
241
|
+
meals: string;
|
|
242
|
+
"hotel-category": string;
|
|
243
|
+
reviews: string;
|
|
244
|
+
mobility: string;
|
|
245
|
+
"wellness-spa": string;
|
|
246
|
+
"price-high-low": string;
|
|
247
|
+
"price-low-high": string;
|
|
248
|
+
"best-rating": string;
|
|
249
|
+
"most-popular": string;
|
|
250
|
+
"newest-hotels": string;
|
|
251
|
+
relevance: string;
|
|
252
|
+
selected: string;
|
|
253
|
+
"clear-all": string;
|
|
254
|
+
options: string;
|
|
255
|
+
"hotellerie-suisse": string;
|
|
256
|
+
trustyou: string;
|
|
257
|
+
"select-all": string;
|
|
258
|
+
reset: string;
|
|
259
|
+
"breakfast-included": string;
|
|
260
|
+
};
|
|
261
|
+
headline: {
|
|
262
|
+
"no-results": string;
|
|
263
|
+
};
|
|
264
|
+
};
|
|
265
|
+
readonly en: {
|
|
266
|
+
button: {
|
|
267
|
+
order: string;
|
|
268
|
+
"order-navigation": string;
|
|
269
|
+
"order-hc": string;
|
|
270
|
+
"my-account": string;
|
|
271
|
+
search: string;
|
|
272
|
+
"back-to-top": string;
|
|
273
|
+
};
|
|
274
|
+
link: {
|
|
275
|
+
"member-benefits": string;
|
|
276
|
+
"view-all-hotels": string;
|
|
277
|
+
"search-by-map": string;
|
|
278
|
+
"search-by-region": string;
|
|
279
|
+
"search-by-experience": string;
|
|
280
|
+
"travel-inspiration": string;
|
|
281
|
+
"booking-tips-and-tricks": string;
|
|
282
|
+
home: string;
|
|
283
|
+
"all-hotel-deals": string;
|
|
284
|
+
"search-results": string;
|
|
285
|
+
};
|
|
286
|
+
general: {
|
|
287
|
+
"signed-out": string;
|
|
288
|
+
"room-price": string;
|
|
289
|
+
guarantee: string;
|
|
290
|
+
contact: string;
|
|
291
|
+
"breakfast-included": string;
|
|
292
|
+
"free-cancellation": string;
|
|
293
|
+
"suggested-destinations": string;
|
|
294
|
+
"when-months": string;
|
|
295
|
+
"hotel-deals-found": string;
|
|
296
|
+
"no-results": string;
|
|
297
|
+
"unavailable-for-selected-days": string;
|
|
298
|
+
"cant-accommodate-all": string;
|
|
299
|
+
"reset-destination": string;
|
|
300
|
+
};
|
|
301
|
+
label: {
|
|
302
|
+
"price-from": string;
|
|
303
|
+
"price-for": string;
|
|
304
|
+
"per-room-night": string;
|
|
305
|
+
new: string;
|
|
306
|
+
anytime: string;
|
|
307
|
+
anywhere: string;
|
|
308
|
+
dates: string;
|
|
309
|
+
flexible: string;
|
|
310
|
+
where: string;
|
|
311
|
+
when: string;
|
|
312
|
+
who: string;
|
|
313
|
+
nearby: string;
|
|
314
|
+
hotels: string;
|
|
315
|
+
filter: string;
|
|
316
|
+
sort: string;
|
|
317
|
+
map: string;
|
|
318
|
+
rating: string;
|
|
319
|
+
"rating-excellent": string;
|
|
320
|
+
"rating-very-good": string;
|
|
321
|
+
"rating-good": string;
|
|
322
|
+
"rating-fair": string;
|
|
323
|
+
"rating-none": string;
|
|
324
|
+
};
|
|
325
|
+
product: {
|
|
326
|
+
"6m": string;
|
|
327
|
+
"1y": string;
|
|
328
|
+
"2y": string;
|
|
329
|
+
"3y": string;
|
|
330
|
+
"price-6m": string;
|
|
331
|
+
"price-6m-disc": string;
|
|
332
|
+
"price-1y": string;
|
|
333
|
+
"price-1y-disc": string;
|
|
334
|
+
"price-2y": string;
|
|
335
|
+
"price-2y-disc": string;
|
|
336
|
+
"price-3y": string;
|
|
337
|
+
"price-3y-disc": string;
|
|
338
|
+
"price-gift": string;
|
|
339
|
+
"price-gift-disc": string;
|
|
340
|
+
};
|
|
341
|
+
subheadline: {
|
|
342
|
+
"your-hc": string;
|
|
343
|
+
"popular-hotels": string;
|
|
344
|
+
"no-results": string;
|
|
345
|
+
"sort-by": string;
|
|
346
|
+
};
|
|
347
|
+
form: {
|
|
348
|
+
guests: string;
|
|
349
|
+
guest: string;
|
|
350
|
+
adults: string;
|
|
351
|
+
children: string;
|
|
352
|
+
pet: string;
|
|
353
|
+
"age-of-child": string;
|
|
354
|
+
age: string;
|
|
355
|
+
"age-error": string;
|
|
356
|
+
};
|
|
357
|
+
filter: {
|
|
358
|
+
filters: string;
|
|
359
|
+
destination: string;
|
|
360
|
+
experience: string;
|
|
361
|
+
"show-all": string;
|
|
362
|
+
price: string;
|
|
363
|
+
discount: string;
|
|
364
|
+
services: string;
|
|
365
|
+
meals: string;
|
|
366
|
+
"hotel-category": string;
|
|
367
|
+
reviews: string;
|
|
368
|
+
mobility: string;
|
|
369
|
+
"wellness-spa": string;
|
|
370
|
+
"price-high-low": string;
|
|
371
|
+
"price-low-high": string;
|
|
372
|
+
"best-rating": string;
|
|
373
|
+
"most-popular": string;
|
|
374
|
+
"newest-hotels": string;
|
|
375
|
+
relevance: string;
|
|
376
|
+
selected: string;
|
|
377
|
+
"clear-all": string;
|
|
378
|
+
options: string;
|
|
379
|
+
"hotellerie-suisse": string;
|
|
380
|
+
trustyou: string;
|
|
381
|
+
"select-all": string;
|
|
382
|
+
reset: string;
|
|
383
|
+
"breakfast-included": string;
|
|
384
|
+
};
|
|
385
|
+
headline: {
|
|
386
|
+
"no-results": string;
|
|
387
|
+
};
|
|
388
|
+
};
|
|
389
|
+
readonly fr: {
|
|
390
|
+
button: {
|
|
391
|
+
order: string;
|
|
392
|
+
"order-navigation": string;
|
|
393
|
+
"order-hc": string;
|
|
394
|
+
"my-account": string;
|
|
395
|
+
search: string;
|
|
396
|
+
"back-to-top": string;
|
|
397
|
+
};
|
|
398
|
+
link: {
|
|
399
|
+
"member-benefits": string;
|
|
400
|
+
"view-all-hotels": string;
|
|
401
|
+
"search-by-map": string;
|
|
402
|
+
"search-by-region": string;
|
|
403
|
+
"search-by-experience": string;
|
|
404
|
+
"travel-inspiration": string;
|
|
405
|
+
"booking-tips-and-tricks": string;
|
|
406
|
+
home: string;
|
|
407
|
+
"all-hotel-deals": string;
|
|
408
|
+
"search-results": string;
|
|
409
|
+
};
|
|
410
|
+
general: {
|
|
411
|
+
"signed-out": string;
|
|
412
|
+
"room-price": string;
|
|
413
|
+
guarantee: string;
|
|
414
|
+
contact: string;
|
|
415
|
+
"breakfast-included": string;
|
|
416
|
+
"free-cancellation": string;
|
|
417
|
+
"suggested-destinations": string;
|
|
418
|
+
"when-months": string;
|
|
419
|
+
"hotel-deals-found": string;
|
|
420
|
+
"no-results": string;
|
|
421
|
+
"unavailable-for-selected-days": string;
|
|
422
|
+
"cant-accommodate-all": string;
|
|
423
|
+
"reset-destination": string;
|
|
424
|
+
};
|
|
425
|
+
label: {
|
|
426
|
+
"price-from": string;
|
|
427
|
+
"price-for": string;
|
|
428
|
+
"per-room-night": string;
|
|
429
|
+
new: string;
|
|
430
|
+
anytime: string;
|
|
431
|
+
anywhere: string;
|
|
432
|
+
dates: string;
|
|
433
|
+
flexible: string;
|
|
434
|
+
where: string;
|
|
435
|
+
when: string;
|
|
436
|
+
who: string;
|
|
437
|
+
nearby: string;
|
|
438
|
+
hotels: string;
|
|
439
|
+
filter: string;
|
|
440
|
+
sort: string;
|
|
441
|
+
map: string;
|
|
442
|
+
rating: string;
|
|
443
|
+
"rating-excellent": string;
|
|
444
|
+
"rating-very-good": string;
|
|
445
|
+
"rating-good": string;
|
|
446
|
+
"rating-fair": string;
|
|
447
|
+
"rating-none": string;
|
|
448
|
+
};
|
|
449
|
+
product: {
|
|
450
|
+
"6m": string;
|
|
451
|
+
"1y": string;
|
|
452
|
+
"2y": string;
|
|
453
|
+
"3y": string;
|
|
454
|
+
"price-6m": string;
|
|
455
|
+
"price-6m-disc": string;
|
|
456
|
+
"price-1y": string;
|
|
457
|
+
"price-1y-disc": string;
|
|
458
|
+
"price-2y": string;
|
|
459
|
+
"price-2y-disc": string;
|
|
460
|
+
"price-3y": string;
|
|
461
|
+
"price-3y-disc": string;
|
|
462
|
+
"price-gift": string;
|
|
463
|
+
"price-gift-disc": string;
|
|
464
|
+
};
|
|
465
|
+
subheadline: {
|
|
466
|
+
"your-hc": string;
|
|
467
|
+
"popular-hotels": string;
|
|
468
|
+
"no-results": string;
|
|
469
|
+
"sort-by": string;
|
|
470
|
+
};
|
|
471
|
+
form: {
|
|
472
|
+
guests: string;
|
|
473
|
+
guest: string;
|
|
474
|
+
adults: string;
|
|
475
|
+
children: string;
|
|
476
|
+
pet: string;
|
|
477
|
+
"age-of-child": string;
|
|
478
|
+
age: string;
|
|
479
|
+
"age-error": string;
|
|
480
|
+
};
|
|
481
|
+
filter: {
|
|
482
|
+
filters: string;
|
|
483
|
+
destination: string;
|
|
484
|
+
experience: string;
|
|
485
|
+
"show-all": string;
|
|
486
|
+
price: string;
|
|
487
|
+
discount: string;
|
|
488
|
+
services: string;
|
|
489
|
+
meals: string;
|
|
490
|
+
"hotel-category": string;
|
|
491
|
+
reviews: string;
|
|
492
|
+
mobility: string;
|
|
493
|
+
"wellness-spa": string;
|
|
494
|
+
"price-high-low": string;
|
|
495
|
+
"price-low-high": string;
|
|
496
|
+
"best-rating": string;
|
|
497
|
+
"most-popular": string;
|
|
498
|
+
"newest-hotels": string;
|
|
499
|
+
relevance: string;
|
|
500
|
+
selected: string;
|
|
501
|
+
"clear-all": string;
|
|
502
|
+
options: string;
|
|
503
|
+
"hotellerie-suisse": string;
|
|
504
|
+
trustyou: string;
|
|
505
|
+
"select-all": string;
|
|
506
|
+
reset: string;
|
|
507
|
+
"breakfast-included": string;
|
|
508
|
+
};
|
|
509
|
+
headline: {
|
|
510
|
+
"no-results": string;
|
|
511
|
+
};
|
|
512
|
+
};
|
|
513
|
+
readonly it: {
|
|
514
|
+
button: {
|
|
515
|
+
order: string;
|
|
516
|
+
"order-navigation": string;
|
|
517
|
+
"order-hc": string;
|
|
518
|
+
"my-account": string;
|
|
519
|
+
search: string;
|
|
520
|
+
"back-to-top": string;
|
|
521
|
+
};
|
|
522
|
+
link: {
|
|
523
|
+
"member-benefits": string;
|
|
524
|
+
"view-all-hotels": string;
|
|
525
|
+
"search-by-map": string;
|
|
526
|
+
"search-by-region": string;
|
|
527
|
+
"search-by-experience": string;
|
|
528
|
+
"travel-inspiration": string;
|
|
529
|
+
"booking-tips-and-tricks": string;
|
|
530
|
+
home: string;
|
|
531
|
+
"all-hotel-deals": string;
|
|
532
|
+
"search-results": string;
|
|
533
|
+
};
|
|
534
|
+
general: {
|
|
535
|
+
"signed-out": string;
|
|
536
|
+
"room-price": string;
|
|
537
|
+
guarantee: string;
|
|
538
|
+
contact: string;
|
|
539
|
+
"breakfast-included": string;
|
|
540
|
+
"free-cancellation": string;
|
|
541
|
+
"suggested-destinations": string;
|
|
542
|
+
"when-months": string;
|
|
543
|
+
"hotel-deals-found": string;
|
|
544
|
+
"no-results": string;
|
|
545
|
+
"unavailable-for-selected-days": string;
|
|
546
|
+
"cant-accommodate-all": string;
|
|
547
|
+
"reset-destination": string;
|
|
548
|
+
};
|
|
549
|
+
label: {
|
|
550
|
+
"price-from": string;
|
|
551
|
+
"price-for": string;
|
|
552
|
+
"per-room-night": string;
|
|
553
|
+
new: string;
|
|
554
|
+
anytime: string;
|
|
555
|
+
anywhere: string;
|
|
556
|
+
dates: string;
|
|
557
|
+
flexible: string;
|
|
558
|
+
where: string;
|
|
559
|
+
when: string;
|
|
560
|
+
who: string;
|
|
561
|
+
nearby: string;
|
|
562
|
+
hotels: string;
|
|
563
|
+
filter: string;
|
|
564
|
+
sort: string;
|
|
565
|
+
map: string;
|
|
566
|
+
rating: string;
|
|
567
|
+
"rating-excellent": string;
|
|
568
|
+
"rating-very-good": string;
|
|
569
|
+
"rating-good": string;
|
|
570
|
+
"rating-fair": string;
|
|
571
|
+
"rating-none": string;
|
|
572
|
+
};
|
|
573
|
+
product: {
|
|
574
|
+
"6m": string;
|
|
575
|
+
"1y": string;
|
|
576
|
+
"2y": string;
|
|
577
|
+
"3y": string;
|
|
578
|
+
"price-6m": string;
|
|
579
|
+
"price-6m-disc": string;
|
|
580
|
+
"price-1y": string;
|
|
581
|
+
"price-1y-disc": string;
|
|
582
|
+
"price-2y": string;
|
|
583
|
+
"price-2y-disc": string;
|
|
584
|
+
"price-3y": string;
|
|
585
|
+
"price-3y-disc": string;
|
|
586
|
+
"price-gift": string;
|
|
587
|
+
"price-gift-disc": string;
|
|
588
|
+
};
|
|
589
|
+
subheadline: {
|
|
590
|
+
"your-hc": string;
|
|
591
|
+
"popular-hotels": string;
|
|
592
|
+
"no-results": string;
|
|
593
|
+
"sort-by": string;
|
|
594
|
+
};
|
|
595
|
+
form: {
|
|
596
|
+
guests: string;
|
|
597
|
+
guest: string;
|
|
598
|
+
adults: string;
|
|
599
|
+
children: string;
|
|
600
|
+
pet: string;
|
|
601
|
+
"age-of-child": string;
|
|
602
|
+
age: string;
|
|
603
|
+
"age-error": string;
|
|
604
|
+
};
|
|
605
|
+
filter: {
|
|
606
|
+
filters: string;
|
|
607
|
+
destination: string;
|
|
608
|
+
experience: string;
|
|
609
|
+
"show-all": string;
|
|
610
|
+
price: string;
|
|
611
|
+
discount: string;
|
|
612
|
+
services: string;
|
|
613
|
+
meals: string;
|
|
614
|
+
"hotel-category": string;
|
|
615
|
+
reviews: string;
|
|
616
|
+
mobility: string;
|
|
617
|
+
"wellness-spa": string;
|
|
618
|
+
"price-high-low": string;
|
|
619
|
+
"price-low-high": string;
|
|
620
|
+
"best-rating": string;
|
|
621
|
+
"most-popular": string;
|
|
622
|
+
"newest-hotels": string;
|
|
623
|
+
relevance: string;
|
|
624
|
+
selected: string;
|
|
625
|
+
"clear-all": string;
|
|
626
|
+
options: string;
|
|
627
|
+
"hotellerie-suisse": string;
|
|
628
|
+
trustyou: string;
|
|
629
|
+
"select-all": string;
|
|
630
|
+
reset: string;
|
|
631
|
+
"breakfast-included": string;
|
|
632
|
+
};
|
|
633
|
+
headline: {
|
|
634
|
+
"no-results": string;
|
|
635
|
+
};
|
|
636
|
+
};
|
|
637
|
+
};
|
|
638
|
+
type Locale = keyof typeof translations;
|
|
639
|
+
type TranslationKeys = typeof en;
|
|
640
|
+
|
|
641
|
+
/** Translation function type */
|
|
642
|
+
type TranslateFunction$1 = (key: string, fallback?: string) => string;
|
|
6
643
|
interface UIContextValue {
|
|
7
644
|
/** Current locale (e.g., 'de', 'en', 'fr', 'it') */
|
|
8
|
-
locale:
|
|
645
|
+
locale: Locale;
|
|
9
646
|
/** Currency code (e.g., 'CHF', 'EUR') */
|
|
10
647
|
currency: string;
|
|
11
648
|
/** Whether the app is running on desktop (default: false for mobile-first) */
|
|
12
649
|
isDesktop: boolean;
|
|
650
|
+
/** Translation function - looks up keys from internal translations */
|
|
651
|
+
t: TranslateFunction$1;
|
|
13
652
|
}
|
|
14
653
|
interface HotelCardUIProviderProps {
|
|
15
654
|
/** Current locale */
|
|
16
|
-
locale?:
|
|
655
|
+
locale?: Locale;
|
|
17
656
|
/** Currency code */
|
|
18
657
|
currency?: string;
|
|
19
658
|
/** Whether running on desktop */
|
|
20
659
|
isDesktop?: boolean;
|
|
660
|
+
/** Optional custom translation function (overrides internal translations) */
|
|
661
|
+
t?: TranslateFunction$1;
|
|
21
662
|
children: ReactNode;
|
|
22
663
|
}
|
|
23
664
|
/**
|
|
@@ -318,35 +959,6 @@ interface CardProps {
|
|
|
318
959
|
|
|
319
960
|
declare const Card: React__default.FC<CardProps>;
|
|
320
961
|
|
|
321
|
-
interface CompactCardBadge {
|
|
322
|
-
text: string;
|
|
323
|
-
variant?: 'primary' | 'secondary';
|
|
324
|
-
}
|
|
325
|
-
interface CompactCardProps {
|
|
326
|
-
/** Image URL for the card */
|
|
327
|
-
image?: string;
|
|
328
|
-
/** Alt text for accessibility */
|
|
329
|
-
imageAlt?: string;
|
|
330
|
-
/** Main label/title text */
|
|
331
|
-
label?: string;
|
|
332
|
-
/** Price text */
|
|
333
|
-
price?: string;
|
|
334
|
-
/** Rating value (1-6, 6 = Swiss Lodge) */
|
|
335
|
-
stars?: number;
|
|
336
|
-
/** Superior hotel indicator */
|
|
337
|
-
isSuperior?: boolean;
|
|
338
|
-
/** Badge configuration */
|
|
339
|
-
badge?: CompactCardBadge;
|
|
340
|
-
/** Click handler */
|
|
341
|
-
onClick?: () => void;
|
|
342
|
-
/** Additional CSS classes */
|
|
343
|
-
className?: string;
|
|
344
|
-
/** Label for Swiss Lodge (rating = 6), e.g., "Swiss Lodge" */
|
|
345
|
-
swissLodgeLabel?: string;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
declare const CompactCard: React__default.FC<CompactCardProps>;
|
|
349
|
-
|
|
350
962
|
interface DropdownOption {
|
|
351
963
|
value: string;
|
|
352
964
|
label: string;
|
|
@@ -533,20 +1145,6 @@ interface DateRange {
|
|
|
533
1145
|
start: string | null;
|
|
534
1146
|
end: string | null;
|
|
535
1147
|
}
|
|
536
|
-
interface WhenContentLabels {
|
|
537
|
-
/** "When" section title (expanded variant only) */
|
|
538
|
-
when?: string;
|
|
539
|
-
/** "Dates" tab label */
|
|
540
|
-
dates?: string;
|
|
541
|
-
/** "Flexible" tab label */
|
|
542
|
-
flexible?: string;
|
|
543
|
-
/** "Apply" button label */
|
|
544
|
-
apply?: string;
|
|
545
|
-
/** "Select months" heading */
|
|
546
|
-
selectMonths?: string;
|
|
547
|
-
/** "Anytime" button label */
|
|
548
|
-
anytime?: string;
|
|
549
|
-
}
|
|
550
1148
|
interface WhenContentProps {
|
|
551
1149
|
/** Initial date range */
|
|
552
1150
|
initialDateRange?: DateRange;
|
|
@@ -564,8 +1162,6 @@ interface WhenContentProps {
|
|
|
564
1162
|
onApply?: () => void;
|
|
565
1163
|
/** Additional class name */
|
|
566
1164
|
className?: string;
|
|
567
|
-
/** Labels for all text content - consuming app provides translations */
|
|
568
|
-
labels?: WhenContentLabels;
|
|
569
1165
|
/** Override locale for date formatting (defaults to context locale) */
|
|
570
1166
|
locale?: string;
|
|
571
1167
|
}
|
|
@@ -577,6 +1173,8 @@ interface WhenContentProps {
|
|
|
577
1173
|
* - Calendar view for specific date range selection
|
|
578
1174
|
* - Month chips grid for flexible month selection
|
|
579
1175
|
* - "Anytime" option for no date filter
|
|
1176
|
+
*
|
|
1177
|
+
* Translations handled internally via UIContext.
|
|
580
1178
|
*/
|
|
581
1179
|
declare const WhenContent: React__default.FC<WhenContentProps>;
|
|
582
1180
|
|
|
@@ -624,32 +1222,6 @@ interface ChildAgeError {
|
|
|
624
1222
|
index: number;
|
|
625
1223
|
message: string;
|
|
626
1224
|
}
|
|
627
|
-
/**
|
|
628
|
-
* Labels for GuestContent component
|
|
629
|
-
* All text is passed as props - consuming apps provide translations
|
|
630
|
-
*/
|
|
631
|
-
interface GuestContentLabels {
|
|
632
|
-
/** Label for adults row (e.g., "Adults") */
|
|
633
|
-
adults?: string;
|
|
634
|
-
/** Label for children row (e.g., "Children") */
|
|
635
|
-
children?: string;
|
|
636
|
-
/** Label for pet toggle (e.g., "Pet") */
|
|
637
|
-
pet?: string;
|
|
638
|
-
/** Label for child age dropdown (e.g., "Age of child") */
|
|
639
|
-
ageOfChild?: string;
|
|
640
|
-
/** Placeholder for age dropdown (e.g., "Age") */
|
|
641
|
-
age?: string;
|
|
642
|
-
/** Aria label for decrease adults button */
|
|
643
|
-
decreaseAdults?: string;
|
|
644
|
-
/** Aria label for increase adults button */
|
|
645
|
-
increaseAdults?: string;
|
|
646
|
-
/** Aria label for decrease children button */
|
|
647
|
-
decreaseChildren?: string;
|
|
648
|
-
/** Aria label for increase children button */
|
|
649
|
-
increaseChildren?: string;
|
|
650
|
-
/** Aria label for pet toggle */
|
|
651
|
-
togglePets?: string;
|
|
652
|
-
}
|
|
653
1225
|
interface GuestContentProps {
|
|
654
1226
|
/** Current guest counts */
|
|
655
1227
|
guests: GuestCounts;
|
|
@@ -667,19 +1239,109 @@ interface GuestContentProps {
|
|
|
667
1239
|
childAgeErrors?: ChildAgeError[];
|
|
668
1240
|
/** Called when an error is cleared (user selects an age) */
|
|
669
1241
|
onErrorClear?: (index: number) => void;
|
|
670
|
-
/** Labels for all text content */
|
|
671
|
-
labels?: GuestContentLabels;
|
|
672
1242
|
}
|
|
673
1243
|
/**
|
|
674
1244
|
* GuestContent - Shared guest selection UI
|
|
675
1245
|
*
|
|
676
1246
|
* Used by both desktop GuestSelector dropdown and mobile SearchModal.
|
|
677
1247
|
* Contains adults counter, children counter with age dropdowns, and optional pet toggle.
|
|
678
|
-
*
|
|
679
|
-
* All text labels are passed as props - consuming apps provide translations.
|
|
1248
|
+
* Translations handled internally via UIContext.
|
|
680
1249
|
*/
|
|
681
1250
|
declare const GuestContent: React__default.FC<GuestContentProps>;
|
|
682
1251
|
|
|
1252
|
+
/**
|
|
1253
|
+
* HotelCard Component Types
|
|
1254
|
+
*
|
|
1255
|
+
* Shared hotel card for search results. Platform-agnostic design.
|
|
1256
|
+
* Translations handled internally via UIContext.
|
|
1257
|
+
*/
|
|
1258
|
+
/**
|
|
1259
|
+
* Hotel data structure for the card
|
|
1260
|
+
*/
|
|
1261
|
+
interface HotelCardHotel {
|
|
1262
|
+
id: string;
|
|
1263
|
+
name: string;
|
|
1264
|
+
slug: string;
|
|
1265
|
+
stars: number;
|
|
1266
|
+
isSuperior?: boolean;
|
|
1267
|
+
rating: number;
|
|
1268
|
+
location: string;
|
|
1269
|
+
images: string[];
|
|
1270
|
+
isFavorite: boolean;
|
|
1271
|
+
benefits: Array<{
|
|
1272
|
+
id: string;
|
|
1273
|
+
label: string;
|
|
1274
|
+
}>;
|
|
1275
|
+
isAvailable?: boolean;
|
|
1276
|
+
currency?: string;
|
|
1277
|
+
price: {
|
|
1278
|
+
current: number;
|
|
1279
|
+
original?: number;
|
|
1280
|
+
discount?: number;
|
|
1281
|
+
};
|
|
1282
|
+
usp?: string;
|
|
1283
|
+
badges?: string[];
|
|
1284
|
+
}
|
|
1285
|
+
interface HotelCardProps {
|
|
1286
|
+
/** Hotel data */
|
|
1287
|
+
hotel: HotelCardHotel;
|
|
1288
|
+
/** Called when favorite button is clicked */
|
|
1289
|
+
onFavoriteClick: () => void;
|
|
1290
|
+
/** Called when card content is clicked (for navigation) */
|
|
1291
|
+
onContentClick?: () => void;
|
|
1292
|
+
/** Additional class name */
|
|
1293
|
+
className?: string;
|
|
1294
|
+
}
|
|
1295
|
+
interface HotelCardImageProps {
|
|
1296
|
+
images: string[];
|
|
1297
|
+
hotelName: string;
|
|
1298
|
+
badges?: string[];
|
|
1299
|
+
isFavorite: boolean;
|
|
1300
|
+
onFavoriteClick: () => void;
|
|
1301
|
+
}
|
|
1302
|
+
interface HotelCardContentProps {
|
|
1303
|
+
name: string;
|
|
1304
|
+
stars: number;
|
|
1305
|
+
isSuperior?: boolean;
|
|
1306
|
+
rating: number;
|
|
1307
|
+
location: string;
|
|
1308
|
+
benefits: Array<{
|
|
1309
|
+
id: string;
|
|
1310
|
+
label: string;
|
|
1311
|
+
}>;
|
|
1312
|
+
price: {
|
|
1313
|
+
current: number;
|
|
1314
|
+
original?: number;
|
|
1315
|
+
discount?: number;
|
|
1316
|
+
};
|
|
1317
|
+
currency?: string;
|
|
1318
|
+
isAvailable?: boolean;
|
|
1319
|
+
usp?: string;
|
|
1320
|
+
onClick?: () => void;
|
|
1321
|
+
}
|
|
1322
|
+
|
|
1323
|
+
/**
|
|
1324
|
+
* HotelCard Component
|
|
1325
|
+
*
|
|
1326
|
+
* A presentational card component for displaying hotel information in search results.
|
|
1327
|
+
* Platform-agnostic - navigation and auth logic should be handled by consuming apps.
|
|
1328
|
+
* Translations handled internally via UIContext.
|
|
1329
|
+
*
|
|
1330
|
+
* @example
|
|
1331
|
+
* ```tsx
|
|
1332
|
+
* <HotelCard
|
|
1333
|
+
* hotel={hotelData}
|
|
1334
|
+
* onFavoriteClick={() => toggleFavorite(hotelData.id)}
|
|
1335
|
+
* onContentClick={() => navigate(`/hotel/${hotelData.slug}`)}
|
|
1336
|
+
* />
|
|
1337
|
+
* ```
|
|
1338
|
+
*/
|
|
1339
|
+
declare const HotelCard: React__default.FC<HotelCardProps>;
|
|
1340
|
+
|
|
1341
|
+
declare const HotelCardImage: React__default.FC<HotelCardImageProps>;
|
|
1342
|
+
|
|
1343
|
+
declare const HotelCardContent: React__default.FC<HotelCardContentProps>;
|
|
1344
|
+
|
|
683
1345
|
interface HeartIconProps {
|
|
684
1346
|
filled?: boolean;
|
|
685
1347
|
className?: string;
|
|
@@ -762,7 +1424,7 @@ declare const useResponsive: () => {
|
|
|
762
1424
|
* ```
|
|
763
1425
|
*/
|
|
764
1426
|
declare const useWindowData: () => {
|
|
765
|
-
locale:
|
|
1427
|
+
locale: "de" | "en" | "fr" | "it";
|
|
766
1428
|
currency: string;
|
|
767
1429
|
};
|
|
768
1430
|
|
|
@@ -874,4 +1536,4 @@ interface SearchFilters {
|
|
|
874
1536
|
regions?: string[];
|
|
875
1537
|
}
|
|
876
1538
|
|
|
877
|
-
export { type Address, Badge, type BadgeProps, type BenefitItem, Benefits, type BenefitsProps, Block, type BlockProps, type Booking, Button, type ButtonProps, Card, type CardBadge, type CardProps, type CardRatingInfo, Checkbox, type CheckboxProps, type CheckboxSize, ChevronLeftIcon, ChevronRightIcon, type ChildAgeError, Chip, type ChipProps, type ChipSize, type ChipState,
|
|
1539
|
+
export { type Address, Badge, type BadgeProps, type BenefitItem, Benefits, type BenefitsProps, Block, type BlockProps, type Booking, Button, type ButtonProps, Card, type CardBadge, type CardProps, type CardRatingInfo, Checkbox, type CheckboxProps, type CheckboxSize, ChevronLeftIcon, ChevronRightIcon, type ChildAgeError, Chip, type ChipProps, type ChipSize, type ChipState, type DateRange, DateSelector, type DateSelectorProps, Divider, type DividerProps, Dropdown, type DropdownOption, type DropdownProps, DualCalendar, FAQ, type FAQItem, type FAQProps, GuestContent, type GuestContentProps, type GuestCounts, HeartIcon, type Hotel, HotelCard, HotelCardContent, type HotelCardContentProps, type HotelCardHotel, HotelCardImage, type HotelCardImageProps, type HotelCardProps, HotelCardUIProvider, type HotelCardUIProviderProps, Input, type InputProps, type InputType, type Locale, type Membership, Modal, type ModalProps, Pin, PinIcon, type PinProps, RadioButton, type RadioButtonProps, Rating, type RatingProps, ReviewCard, type ReviewCardProps, type SearchFilters, type SearchParams, SectionHeader, type SectionHeaderProps, StarIcon, type TranslateFunction$1 as TranslateFunction, type TranslationKeys, type UIContextValue, type User, WhenContent, type WhenContentProps, calculateDiscount, formatDate, formatDateRange, formatPrice, translations, useDebounce, useResponsive, useTranslation, useUIContext, useWindowData };
|