@hotelcard/ui 0.0.19 → 0.0.21

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.js CHANGED
@@ -60,7 +60,8 @@ var de_default = {
60
60
  "rating-very-good": "Sehr gut",
61
61
  "rating-good": "Gut",
62
62
  "rating-fair": "Ansprechend",
63
- "rating-none": "Keine Bewertung"
63
+ "rating-none": "Keine Bewertung",
64
+ clear: "L\xF6schen"
64
65
  },
65
66
  product: {
66
67
  "6m": "6-Monatsabo",
@@ -113,7 +114,7 @@ var de_default = {
113
114
  "most-popular": "Beliebt",
114
115
  "newest-hotels": "Neueste",
115
116
  relevance: "Relevanz",
116
- selected: "String value",
117
+ selected: "Ausgew\xE4hlt:",
117
118
  "clear-all": "Alles l\xF6schen",
118
119
  options: "Leistungen",
119
120
  "hotellerie-suisse": "Klassifikation HotellerieSuisse",
@@ -124,6 +125,162 @@ var de_default = {
124
125
  },
125
126
  headline: {
126
127
  "no-results": "Zurzeit entsprechen keine Aufenthalte Ihrer Suche"
128
+ },
129
+ meta_title: "Hotels suchen - HotelCard",
130
+ meta_description: "Suchen Sie nach Hotels nach Stadt, Region oder Hotelname",
131
+ title: "Suche",
132
+ loading: "Hotels werden geladen...",
133
+ retry: "Erneut versuchen",
134
+ close_map: "Karte schlie\xDFen",
135
+ seo: {
136
+ default_title: "Hoteldeals suchen - HotelCard",
137
+ location_title: "Hotels in {{location}}",
138
+ region_title: "Hotels in {{region}}",
139
+ experience_title: "{{experience}} Hotels",
140
+ default_description: "Entdecken Sie {{count}} Hotels mit exklusiven HotelCard-Rabatten.",
141
+ location_description: "Finden Sie {{count}} Hotels in {{location}} mit exklusiven Rabatten von bis zu 50%."
142
+ },
143
+ modal: {
144
+ close_search: "Suche schlie\xDFen",
145
+ placeholder_anywhere: "\xDCberall",
146
+ recent_searches: "Letzte Suchen",
147
+ remove_recent: "Aus letzten Suchen entfernen",
148
+ all_destinations: "Alle Reiseziele"
149
+ },
150
+ map: {
151
+ open_search: "Suche \xF6ffnen",
152
+ open_filters: "Filter \xF6ffnen",
153
+ switch_to_list: "Zur Listenansicht wechseln",
154
+ zoom_in: "Vergr\xF6\xDFern",
155
+ zoom_out: "Verkleinern",
156
+ no_location_data: "Keine Hotels mit Standortdaten verf\xFCgbar",
157
+ hotels_missing_coordinates: "{{count}} Hotels gefunden, aber Koordinaten fehlen",
158
+ no_hotels_in_area: "Keine Hotels in diesem Gebiet gefunden"
159
+ },
160
+ view: {
161
+ list: "Liste"
162
+ },
163
+ breadcrumb: {
164
+ properties_found: "{{count}} Unterk\xFCnfte gefunden",
165
+ properties_found_location: "{{location}}: {{count}} Unterk\xFCnfte gefunden"
166
+ },
167
+ aria: {
168
+ search_results_breadcrumb: "Suchergebnisse",
169
+ close: "Schlie\xDFen",
170
+ previous_image: "Vorheriges Bild",
171
+ next_image: "N\xE4chstes Bild",
172
+ add_to_favorites: "Zu Favoriten hinzuf\xFCgen",
173
+ remove_from_favorites: "Aus Favoriten entfernen",
174
+ list_view: "Zur Listenansicht wechseln",
175
+ map_view: "Zur Kartenansicht wechseln"
176
+ },
177
+ breadcrumb_nav: {
178
+ home: "Startseite"
179
+ },
180
+ guest_selector: {
181
+ decrease_adults: "Erwachsene verringern",
182
+ increase_adults: "Erwachsene erh\xF6hen",
183
+ decrease_children: "Kinder verringern",
184
+ increase_children: "Kinder erh\xF6hen",
185
+ decrease_infants: "Kleinkinder verringern",
186
+ increase_infants: "Kleinkinder erh\xF6hen",
187
+ toggle_infants: "Haustiere umschalten"
188
+ },
189
+ search_form: {
190
+ location_placeholder: "Hotels, St\xE4dte, Regionen suchen...",
191
+ distance_any: "- km",
192
+ distance_5: "+ 5 km",
193
+ distance_10: "+ 10 km",
194
+ distance_20: "+ 20 km",
195
+ distance_30: "+ 30 km",
196
+ distance_50: "+ 50 km",
197
+ searching: "Suche l\xE4uft...",
198
+ reset_filters: "Filter zur\xFCcksetzen"
199
+ },
200
+ dropdown: {
201
+ hotels: "Hotels",
202
+ cities: "St\xE4dte",
203
+ regions: "Regionen",
204
+ countries: "L\xE4nder",
205
+ "no-results": "Keine Ergebnisse gefunden"
206
+ },
207
+ filters: {
208
+ show_filters: "Filter anzeigen",
209
+ open_filters: "Filter \xF6ffnen",
210
+ filter_by: "Filtern nach:",
211
+ hotel_rating: "Hotelbewertung",
212
+ show_results: "{{count}} Ergebnisse anzeigen",
213
+ apply_filters: "Filter anwenden",
214
+ close_filters: "Filter schlie\xDFen",
215
+ view_in_map: "Auf der Karte anzeigen",
216
+ popular_filters: "Beliebte Filter",
217
+ destinations: "Reiseziele",
218
+ options_title: "Optionen",
219
+ options: {
220
+ instant_booking: "Sofort buchbar",
221
+ pets_allowed: "Haustiere erlaubt",
222
+ free_cancellation: "Kostenlose Stornierung"
223
+ },
224
+ category: {
225
+ footer_prefix: "Hotelklassifikation gem\xE4ss "
226
+ },
227
+ show_less: "Weniger anzeigen",
228
+ selected: "Ausgew\xE4hlt",
229
+ clear_all: "Alle l\xF6schen"
230
+ },
231
+ date_selector: {
232
+ apply: "Anwenden",
233
+ months_selected: "{{count}} Monate"
234
+ },
235
+ star_rating: {
236
+ "5_stars": "5 Sterne",
237
+ "4_stars": "4 Sterne",
238
+ "3_stars": "3 Sterne",
239
+ "2_stars": "2 Sterne",
240
+ not_classified: "Nicht klassifiziert",
241
+ swiss_lodge: "Swiss Lodge"
242
+ },
243
+ results: {
244
+ hotels_found: "{{count}} Hotels gefunden",
245
+ load_more: "Mehr laden",
246
+ loading: "Laden...",
247
+ end_of_results: "Sie haben das Ende der Ergebnisse erreicht",
248
+ no_results: "Keine Hotels gefunden",
249
+ try_different_search: "Versuchen Sie, Ihre Suchkriterien anzupassen",
250
+ unavailable_banner_title: "Weitere Hotels, die Sie interessieren k\xF6nnten",
251
+ unavailable_banner_description: "Diese Hotels haben derzeit keine Verf\xFCgbarkeit, die Ihren Suchkriterien entspricht."
252
+ },
253
+ no_results: {
254
+ title: "Derzeit sind keine Unterk\xFCnfte verf\xFCgbar, die Ihren Suchkriterien entsprechen.",
255
+ subtitle: "Versuchen Sie, Ihre Suchkriterien anzupassen oder die Filter zur\xFCckzusetzen",
256
+ description: "Entdecken Sie verschiedene Reiseziele, \xE4ndern Sie Ihre Reisedaten oder entfernen Sie einige Filter.",
257
+ description_with_filters: "Entdecken Sie verschiedene Reiseziele, \xE4ndern Sie Ihre Reisedaten oder entfernen Sie einige Filter.",
258
+ clear_filters: "Filter zur\xFCcksetzen"
259
+ },
260
+ errors: {
261
+ search_failed: "Suche fehlgeschlagen",
262
+ load_more_failed: "Weitere Hotels konnten nicht geladen werden"
263
+ },
264
+ error: {
265
+ title: "Etwas ist schiefgelaufen",
266
+ description: "Die Hotels konnten nicht geladen werden. Bitte versuchen Sie es erneut.",
267
+ retry: "Erneut versuchen"
268
+ },
269
+ pagination: {
270
+ label: "Seitennavigation",
271
+ previous: "Vorherige Seite",
272
+ previous_short: "Zur\xFCck",
273
+ next: "N\xE4chste Seite",
274
+ next_short: "Weiter",
275
+ page: "Seite {{page}}"
276
+ },
277
+ hotel_card: {
278
+ rating: "Bewertung",
279
+ price_from: "pro Zimmer & Nacht ab",
280
+ not_available: "Nicht verf\xFCgbar f\xFCr Ihre Suchkriterien"
281
+ },
282
+ badges: {
283
+ new: "Neu"
127
284
  }
128
285
  };
129
286
 
@@ -186,7 +343,8 @@ var en_default = {
186
343
  "rating-very-good": "Very good",
187
344
  "rating-good": "Good",
188
345
  "rating-fair": "Fair",
189
- "rating-none": "No rating"
346
+ "rating-none": "No rating",
347
+ clear: "Clear"
190
348
  },
191
349
  product: {
192
350
  "6m": "6-month subscription",
@@ -239,7 +397,7 @@ var en_default = {
239
397
  "most-popular": "Most popular",
240
398
  "newest-hotels": "Newest",
241
399
  relevance: "Relevance",
242
- selected: "Selected",
400
+ selected: "Selected:",
243
401
  "clear-all": "Clear all",
244
402
  options: "Options",
245
403
  "hotellerie-suisse": "Classification HotellerieSuisse",
@@ -250,7 +408,163 @@ var en_default = {
250
408
  },
251
409
  headline: {
252
410
  "no-results": "No stays match your search right now"
253
- }
411
+ },
412
+ meta_title: "Search Hotels - HotelCard",
413
+ meta_description: "Search for hotels by city, region, or hotel name",
414
+ title: "Search",
415
+ loading: "Loading hotels...",
416
+ retry: "Retry",
417
+ close_map: "Close map",
418
+ seo: {
419
+ default_title: "Search Hotel Deals - HotelCard",
420
+ location_title: "Hotels in {{location}}",
421
+ region_title: "Hotels in {{region}}",
422
+ experience_title: "{{experience}} Hotels",
423
+ default_description: "Discover {{count}} hotels with exclusive HotelCard discounts.",
424
+ location_description: "Find {{count}} hotels in {{location}} with exclusive discounts up to 50% off."
425
+ },
426
+ modal: {
427
+ close_search: "Close search",
428
+ placeholder_anywhere: "Anywhere",
429
+ recent_searches: "Recent searches",
430
+ remove_recent: "Remove from recent searches",
431
+ all_destinations: "All destinations"
432
+ },
433
+ map: {
434
+ open_search: "Open search",
435
+ open_filters: "Open filters",
436
+ switch_to_list: "Switch to list view",
437
+ zoom_in: "Zoom in",
438
+ zoom_out: "Zoom out",
439
+ no_location_data: "No hotels with location data available",
440
+ hotels_missing_coordinates: "{{count}} hotels found but missing coordinates",
441
+ no_hotels_in_area: "No hotels found in this area"
442
+ },
443
+ view: {
444
+ list: "List"
445
+ },
446
+ breadcrumb: {
447
+ properties_found: "{{count}} properties found",
448
+ properties_found_location: "{{location}}: {{count}} properties found"
449
+ },
450
+ aria: {
451
+ search_results_breadcrumb: "Search results",
452
+ close: "Close",
453
+ previous_image: "Previous image",
454
+ next_image: "Next image",
455
+ add_to_favorites: "Add to favorites",
456
+ remove_from_favorites: "Remove from favorites",
457
+ list_view: "Switch to list view",
458
+ map_view: "Switch to map view"
459
+ },
460
+ breadcrumb_nav: {
461
+ home: "Home"
462
+ },
463
+ guest_selector: {
464
+ adults_description: "Ages 13 or above",
465
+ children_description: "Ages 2-12",
466
+ infants_description: "Under 2",
467
+ decrease_adults: "Decrease adults",
468
+ increase_adults: "Increase adults",
469
+ decrease_children: "Decrease children",
470
+ increase_children: "Increase children",
471
+ decrease_infants: "Decrease infants",
472
+ increase_infants: "Increase infants",
473
+ toggle_infants: "Toggle pet"
474
+ },
475
+ search_form: {
476
+ location_placeholder: "Search for hotels, cities, regions...",
477
+ distance_any: "- km",
478
+ distance_5: "+ 5 km",
479
+ distance_10: "+ 10 km",
480
+ distance_20: "+ 20 km",
481
+ distance_30: "+ 30 km",
482
+ distance_50: "+ 50 km",
483
+ searching: "Searching...",
484
+ reset_filters: "Reset"
485
+ },
486
+ dropdown: {
487
+ hotels: "Hotels",
488
+ cities: "Cities",
489
+ regions: "Regions",
490
+ countries: "Countries",
491
+ "no-results": "No results found"
492
+ },
493
+ filters: {
494
+ show_filters: "Show filters",
495
+ open_filters: "Open filters",
496
+ filter_by: "Filter by:",
497
+ hotel_rating: "Hotel rating",
498
+ show_results: "Show {{count}} results",
499
+ apply_filters: "Apply filters",
500
+ close_filters: "Close filters",
501
+ view_in_map: "View in a Map",
502
+ popular_filters: "Popular filters",
503
+ show_less: "Show less",
504
+ selected: "Selected",
505
+ clear_all: "Clear all",
506
+ options: {
507
+ instant_booking: "Immediately bookable",
508
+ pets_allowed: "Pets allowed",
509
+ free_cancellation: "Free cancellation"
510
+ }
511
+ },
512
+ date_selector: {
513
+ apply: "Apply",
514
+ months_selected: "{{count}} months"
515
+ },
516
+ star_rating: {
517
+ "5_stars": "5 stars",
518
+ "4_stars": "4 stars",
519
+ "3_stars": "3 stars",
520
+ "2_stars": "2 stars",
521
+ not_classified: "Not classified",
522
+ swiss_lodge: "Swiss Lodge"
523
+ },
524
+ results: {
525
+ hotels_found: "{{count}} hotels found",
526
+ load_more: "Load more",
527
+ loading: "Loading...",
528
+ end_of_results: "You've reached the end of results",
529
+ no_results: "No hotels found",
530
+ try_different_search: "Try adjusting your search criteria",
531
+ unavailable_banner_title: "More hotels that might interest you",
532
+ unavailable_banner_description: "These hotels don't currently have availability matching your search criteria."
533
+ },
534
+ errors: {
535
+ search_failed: "Search failed",
536
+ load_more_failed: "Failed to load more hotels"
537
+ },
538
+ error: {
539
+ title: "Something went wrong",
540
+ description: "We couldn't load the hotels. Please try again.",
541
+ retry: "Try again"
542
+ },
543
+ no_results: {
544
+ title: "No stays match your search right now.",
545
+ description: "Explore different destinations, change your dates, or remove some filters.",
546
+ description_with_filters: "Explore different destinations, change your dates, or remove some filters.",
547
+ clear_filters: "Clear all filters"
548
+ },
549
+ pagination: {
550
+ label: "Pagination",
551
+ previous: "Previous page",
552
+ previous_short: "Previous",
553
+ next: "Next page",
554
+ next_short: "Next",
555
+ page: "Page {{page}}"
556
+ },
557
+ hotel_card: {
558
+ rating: "Rating",
559
+ price_from: "per room & night from",
560
+ not_available: "Not available for your search criteria"
561
+ },
562
+ badges: {
563
+ new: "New"
564
+ },
565
+ clear_location: "Clear location",
566
+ clear_date: "Clear date",
567
+ clear_guests: "Clear guests"
254
568
  };
255
569
 
256
570
  // src/locales/fr.json
@@ -312,7 +626,8 @@ var fr_default = {
312
626
  "rating-very-good": "Tr\xE8s bien",
313
627
  "rating-good": "Bien",
314
628
  "rating-fair": "Moyen",
315
- "rating-none": "Aucune notation"
629
+ "rating-none": "Aucune notation",
630
+ clear: "Effacer"
316
631
  },
317
632
  product: {
318
633
  "6m": "Abonnement de 6 mois",
@@ -365,7 +680,7 @@ var fr_default = {
365
680
  "most-popular": "Plus populaires",
366
681
  "newest-hotels": "Plus r\xE9cents",
367
682
  relevance: "Pertinence",
368
- selected: "String value",
683
+ selected: "S\xE9lectionn\xE9:",
369
684
  "clear-all": "Tout effacer",
370
685
  options: "Services",
371
686
  "hotellerie-suisse": "Classification HotellerieSuisse",
@@ -376,6 +691,162 @@ var fr_default = {
376
691
  },
377
692
  headline: {
378
693
  "no-results": "Aucun s\xE9jour ne correspond \xE0 votre recherche pour le moment"
694
+ },
695
+ meta_title: "Rechercher des h\xF4tels - HotelCard",
696
+ meta_description: "Recherchez des h\xF4tels par ville, r\xE9gion ou nom d'h\xF4tel",
697
+ title: "Recherche",
698
+ loading: "Chargement des h\xF4tels...",
699
+ retry: "R\xE9essayer",
700
+ close_map: "Fermer la carte",
701
+ seo: {
702
+ default_title: "Rechercher des offres d'h\xF4tels - HotelCard",
703
+ location_title: "H\xF4tels \xE0 {{location}}",
704
+ region_title: "H\xF4tels en {{region}}",
705
+ experience_title: "H\xF4tels {{experience}}",
706
+ default_description: "D\xE9couvrez {{count}} h\xF4tels avec des r\xE9ductions exclusives HotelCard.",
707
+ location_description: "Trouvez {{count}} h\xF4tels \xE0 {{location}} avec des r\xE9ductions exclusives jusqu'\xE0 50%."
708
+ },
709
+ modal: {
710
+ close_search: "Fermer la recherche",
711
+ placeholder_anywhere: "Partout",
712
+ recent_searches: "Recherches r\xE9centes",
713
+ remove_recent: "Supprimer des recherches r\xE9centes",
714
+ all_destinations: "Toutes les destinations"
715
+ },
716
+ map: {
717
+ open_search: "Ouvrir la recherche",
718
+ open_filters: "Ouvrir les filtres",
719
+ switch_to_list: "Passer \xE0 la vue liste",
720
+ zoom_in: "Agrandir",
721
+ zoom_out: "R\xE9duire",
722
+ no_location_data: "Aucun h\xF4tel avec donn\xE9es de localisation",
723
+ hotels_missing_coordinates: "{{count}} h\xF4tels trouv\xE9s mais coordonn\xE9es manquantes",
724
+ no_hotels_in_area: "Aucun h\xF4tel trouv\xE9 dans cette zone"
725
+ },
726
+ view: {
727
+ list: "Liste"
728
+ },
729
+ breadcrumb: {
730
+ properties_found: "{{count}} h\xE9bergements trouv\xE9s",
731
+ properties_found_location: "{{location}}: {{count}} h\xE9bergements trouv\xE9s"
732
+ },
733
+ aria: {
734
+ search_results_breadcrumb: "R\xE9sultats de la recherche",
735
+ close: "Fermer",
736
+ previous_image: "Image pr\xE9c\xE9dente",
737
+ next_image: "Image suivante",
738
+ add_to_favorites: "Ajouter aux favoris",
739
+ remove_from_favorites: "Retirer des favoris",
740
+ list_view: "Passer \xE0 la vue liste",
741
+ map_view: "Passer \xE0 la vue carte"
742
+ },
743
+ breadcrumb_nav: {
744
+ home: "Accueil"
745
+ },
746
+ guest_selector: {
747
+ decrease_adults: "Diminuer les adultes",
748
+ increase_adults: "Augmenter les adultes",
749
+ decrease_children: "Diminuer les enfants",
750
+ increase_children: "Augmenter les enfants",
751
+ decrease_infants: "Diminuer les b\xE9b\xE9s",
752
+ increase_infants: "Augmenter les b\xE9b\xE9s",
753
+ toggle_infants: "Basculer les animaux"
754
+ },
755
+ search_form: {
756
+ location_placeholder: "Rechercher des h\xF4tels, villes, r\xE9gions...",
757
+ distance_any: "- km",
758
+ distance_5: "+ 5 km",
759
+ distance_10: "+ 10 km",
760
+ distance_20: "+ 20 km",
761
+ distance_30: "+ 30 km",
762
+ distance_50: "+ 50 km",
763
+ searching: "Recherche en cours...",
764
+ reset_filters: "R\xE9initialiser les filtres"
765
+ },
766
+ dropdown: {
767
+ hotels: "H\xF4tels",
768
+ cities: "Villes",
769
+ regions: "R\xE9gions",
770
+ countries: "Pays",
771
+ "no-results": "Aucun r\xE9sultat trouv\xE9"
772
+ },
773
+ filters: {
774
+ show_filters: "Afficher les filtres",
775
+ open_filters: "Ouvrir les filtres",
776
+ filter_by: "Filtrer par:",
777
+ hotel_rating: "Classement de l'h\xF4tel",
778
+ show_results: "Afficher {{count}} r\xE9sultats",
779
+ apply_filters: "Appliquer les filtres",
780
+ close_filters: "Fermer les filtres",
781
+ view_in_map: "Voir sur la carte",
782
+ popular_filters: "Filtres populaires",
783
+ destinations: "Destinations",
784
+ options_title: "Options",
785
+ options: {
786
+ instant_booking: "R\xE9servation imm\xE9diate",
787
+ pets_allowed: "Animaux accept\xE9s",
788
+ free_cancellation: "Annulation gratuite"
789
+ },
790
+ category: {
791
+ footer_prefix: "Classification h\xF4teli\xE8re selon "
792
+ },
793
+ show_less: "Afficher moins",
794
+ selected: "S\xE9lectionn\xE9",
795
+ clear_all: "Tout effacer"
796
+ },
797
+ date_selector: {
798
+ apply: "Appliquer",
799
+ months_selected: "{{count}} mois"
800
+ },
801
+ star_rating: {
802
+ "5_stars": "5 \xE9toiles",
803
+ "4_stars": "4 \xE9toiles",
804
+ "3_stars": "3 \xE9toiles",
805
+ "2_stars": "2 \xE9toiles",
806
+ not_classified: "Non class\xE9",
807
+ swiss_lodge: "Swiss Lodge"
808
+ },
809
+ results: {
810
+ hotels_found: "{{count}} h\xF4tels trouv\xE9s",
811
+ load_more: "Charger plus",
812
+ loading: "Chargement...",
813
+ end_of_results: "Vous avez atteint la fin des r\xE9sultats",
814
+ no_results: "Aucun h\xF4tel trouv\xE9",
815
+ try_different_search: "Essayez d'ajuster vos crit\xE8res de recherche",
816
+ unavailable_banner_title: "D'autres h\xF4tels qui pourraient vous int\xE9resser",
817
+ unavailable_banner_description: "Ces h\xF4tels n'ont actuellement pas de disponibilit\xE9 correspondant \xE0 vos crit\xE8res de recherche."
818
+ },
819
+ no_results: {
820
+ title: "Aucun h\xE9bergement ne correspond \xE0 votre recherche pour le moment.",
821
+ subtitle: "Essayez d'ajuster vos crit\xE8res de recherche ou r\xE9initialisez les filtres",
822
+ description: "Explorez diff\xE9rentes destinations, modifiez vos dates ou supprimez certains filtres.",
823
+ description_with_filters: "Explorez diff\xE9rentes destinations, modifiez vos dates ou supprimez certains filtres.",
824
+ clear_filters: "R\xE9initialiser les filtres"
825
+ },
826
+ errors: {
827
+ search_failed: "La recherche a \xE9chou\xE9",
828
+ load_more_failed: "Impossible de charger plus d'h\xF4tels"
829
+ },
830
+ error: {
831
+ title: "Une erreur s'est produite",
832
+ description: "Les h\xF4tels n'ont pas pu \xEAtre charg\xE9s. Veuillez r\xE9essayer.",
833
+ retry: "R\xE9essayer"
834
+ },
835
+ pagination: {
836
+ label: "Pagination",
837
+ previous: "Page pr\xE9c\xE9dente",
838
+ previous_short: "Pr\xE9c\xE9dent",
839
+ next: "Page suivante",
840
+ next_short: "Suivant",
841
+ page: "Page {{page}}"
842
+ },
843
+ hotel_card: {
844
+ rating: "Note",
845
+ price_from: "par chambre & nuit d\xE8s",
846
+ not_available: "Non disponible selon vos crit\xE8res de recherche"
847
+ },
848
+ badges: {
849
+ new: "Nouveau"
379
850
  }
380
851
  };
381
852
 
@@ -438,7 +909,8 @@ var it_default = {
438
909
  "rating-very-good": "Ottimo",
439
910
  "rating-good": "Buono",
440
911
  "rating-fair": "Sufficiente",
441
- "rating-none": "Nessun voto"
912
+ "rating-none": "Nessun voto",
913
+ clear: "Cancella"
442
914
  },
443
915
  product: {
444
916
  "6m": "Abbonamento di 6 mesi",
@@ -491,7 +963,7 @@ var it_default = {
491
963
  "most-popular": "Pi\xF9 popolari",
492
964
  "newest-hotels": "Pi\xF9 recenti",
493
965
  relevance: "Rilevanza",
494
- selected: "String value",
966
+ selected: "Selezionato:",
495
967
  "clear-all": "Cancella tutto",
496
968
  options: "Servizi",
497
969
  "hotellerie-suisse": "Classificazione HotellerieSuisse",
@@ -502,6 +974,162 @@ var it_default = {
502
974
  },
503
975
  headline: {
504
976
  "no-results": "Al momento nessun soggiorno corrisponde alla tua ricerca"
977
+ },
978
+ meta_title: "Cerca Hotel - HotelCard",
979
+ meta_description: "Cerca hotel per citt\xE0, regione o nome dell'hotel",
980
+ title: "Ricerca",
981
+ loading: "Caricamento hotel...",
982
+ retry: "Riprova",
983
+ close_map: "Chiudi mappa",
984
+ seo: {
985
+ default_title: "Cerca offerte hotel - HotelCard",
986
+ location_title: "Hotel a {{location}}",
987
+ region_title: "Hotel in {{region}}",
988
+ experience_title: "Hotel {{experience}}",
989
+ default_description: "Scopri {{count}} hotel con sconti esclusivi HotelCard.",
990
+ location_description: "Trova {{count}} hotel a {{location}} con sconti esclusivi fino al 50%."
991
+ },
992
+ modal: {
993
+ close_search: "Chiudi ricerca",
994
+ placeholder_anywhere: "Ovunque",
995
+ recent_searches: "Ricerche recenti",
996
+ remove_recent: "Rimuovi dalle ricerche recenti",
997
+ all_destinations: "Tutte le destinazioni"
998
+ },
999
+ map: {
1000
+ open_search: "Apri ricerca",
1001
+ open_filters: "Apri filtri",
1002
+ switch_to_list: "Passa alla vista elenco",
1003
+ zoom_in: "Ingrandisci",
1004
+ zoom_out: "Riduci",
1005
+ no_location_data: "Nessun hotel con dati di posizione",
1006
+ hotels_missing_coordinates: "{{count}} hotel trovati ma coordinate mancanti",
1007
+ no_hotels_in_area: "Nessun hotel trovato in questa zona"
1008
+ },
1009
+ view: {
1010
+ list: "Lista"
1011
+ },
1012
+ breadcrumb: {
1013
+ properties_found: "{{count}} strutture trovate",
1014
+ properties_found_location: "{{location}}: {{count}} strutture trovate"
1015
+ },
1016
+ aria: {
1017
+ search_results_breadcrumb: "Risultati della ricerca",
1018
+ close: "Chiudi",
1019
+ previous_image: "Immagine precedente",
1020
+ next_image: "Immagine successiva",
1021
+ add_to_favorites: "Aggiungi ai preferiti",
1022
+ remove_from_favorites: "Rimuovi dai preferiti",
1023
+ list_view: "Passa alla vista elenco",
1024
+ map_view: "Passa alla vista mappa"
1025
+ },
1026
+ breadcrumb_nav: {
1027
+ home: "Home"
1028
+ },
1029
+ guest_selector: {
1030
+ decrease_adults: "Diminuisci adulti",
1031
+ increase_adults: "Aumenta adulti",
1032
+ decrease_children: "Diminuisci bambini",
1033
+ increase_children: "Aumenta bambini",
1034
+ decrease_infants: "Diminuisci neonati",
1035
+ increase_infants: "Aumenta neonati",
1036
+ toggle_infants: "Attiva/disattiva animali"
1037
+ },
1038
+ search_form: {
1039
+ location_placeholder: "Cerca hotel, citt\xE0, regioni...",
1040
+ distance_any: "- km",
1041
+ distance_5: "+ 5 km",
1042
+ distance_10: "+ 10 km",
1043
+ distance_20: "+ 20 km",
1044
+ distance_30: "+ 30 km",
1045
+ distance_50: "+ 50 km",
1046
+ searching: "Ricerca in corso...",
1047
+ reset_filters: "Ripristina filtri"
1048
+ },
1049
+ dropdown: {
1050
+ hotels: "Hotel",
1051
+ cities: "Citt\xE0",
1052
+ regions: "Regioni",
1053
+ countries: "Paesi",
1054
+ "no-results": "Nessun risultato trovato"
1055
+ },
1056
+ filters: {
1057
+ show_filters: "Mostra filtri",
1058
+ open_filters: "Apri filtri",
1059
+ filter_by: "Filtra per:",
1060
+ hotel_rating: "Categoria hotel",
1061
+ show_results: "Mostra {{count}} risultati",
1062
+ apply_filters: "Applica filtri",
1063
+ close_filters: "Chiudi filtri",
1064
+ view_in_map: "Visualizza sulla mappa",
1065
+ popular_filters: "Filtri popolari",
1066
+ destinations: "Destinazioni",
1067
+ options_title: "Opzioni",
1068
+ options: {
1069
+ instant_booking: "Prenotazione immediata",
1070
+ pets_allowed: "Animali ammessi",
1071
+ free_cancellation: "Cancellazione gratuita"
1072
+ },
1073
+ category: {
1074
+ footer_prefix: "Classificazione alberghiera secondo "
1075
+ },
1076
+ show_less: "Mostra meno",
1077
+ selected: "Selezionato",
1078
+ clear_all: "Cancella tutto"
1079
+ },
1080
+ date_selector: {
1081
+ apply: "Applica",
1082
+ months_selected: "{{count}} mesi"
1083
+ },
1084
+ star_rating: {
1085
+ "5_stars": "5 stelle",
1086
+ "4_stars": "4 stelle",
1087
+ "3_stars": "3 stelle",
1088
+ "2_stars": "2 stelle",
1089
+ not_classified: "Non classificato",
1090
+ swiss_lodge: "Swiss Lodge"
1091
+ },
1092
+ results: {
1093
+ hotels_found: "{{count}} hotel trovati",
1094
+ load_more: "Carica altri",
1095
+ loading: "Caricamento...",
1096
+ end_of_results: "Hai raggiunto la fine dei risultati",
1097
+ no_results: "Nessun hotel trovato",
1098
+ try_different_search: "Prova a modificare i criteri di ricerca",
1099
+ unavailable_banner_title: "Altri hotel che potrebbero interessarti",
1100
+ unavailable_banner_description: "Questi hotel non hanno attualmente disponibilit\xE0 corrispondente ai tuoi criteri di ricerca."
1101
+ },
1102
+ no_results: {
1103
+ title: "Al momento non ci sono alloggi che corrispondono ai criteri di ricerca.",
1104
+ subtitle: "Prova a modificare i criteri di ricerca o ripristina i filtri",
1105
+ description: "Esplora diverse destinazioni, modifica le date o rimuovi alcuni filtri.",
1106
+ description_with_filters: "Esplora diverse destinazioni, modifica le date o rimuovi alcuni filtri.",
1107
+ clear_filters: "Ripristina filtri"
1108
+ },
1109
+ errors: {
1110
+ search_failed: "Ricerca fallita",
1111
+ load_more_failed: "Impossibile caricare altri hotel"
1112
+ },
1113
+ error: {
1114
+ title: "Qualcosa \xE8 andato storto",
1115
+ description: "Non \xE8 stato possibile caricare gli hotel. Riprova.",
1116
+ retry: "Riprova"
1117
+ },
1118
+ pagination: {
1119
+ label: "Paginazione",
1120
+ previous: "Pagina precedente",
1121
+ previous_short: "Precedente",
1122
+ next: "Pagina successiva",
1123
+ next_short: "Successivo",
1124
+ page: "Pagina {{page}}"
1125
+ },
1126
+ hotel_card: {
1127
+ rating: "Valutazione",
1128
+ price_from: "per camera e notte da",
1129
+ not_available: "Non disponibile per i tuoi criteri di ricerca"
1130
+ },
1131
+ badges: {
1132
+ new: "Nuovo"
505
1133
  }
506
1134
  };
507
1135
 
@@ -3759,482 +4387,9 @@ var SelectedFiltersRow = ({
3759
4387
  ] }) });
3760
4388
  };
3761
4389
 
3762
- // src/components/Filters/FilterPanel.tsx
3763
- import { useState as useState15, useEffect as useEffect10, useRef as useRef8, useCallback as useCallback2 } from "react";
3764
-
3765
- // src/components/Filters/FilterPanel.module.css
3766
- var FilterPanel_default = {};
3767
-
3768
- // src/components/Filters/FilterPanel.tsx
3769
- import { jsx as jsx35, jsxs as jsxs33 } from "react/jsx-runtime";
3770
- var DISCOUNT_OPTIONS = [
3771
- { value: "50", label: "50%" },
3772
- { value: "30", label: "30%" },
3773
- { value: "10", label: "10%" }
3774
- ];
3775
- var OPTIONS_FILTER = [
3776
- { value: "instant_booking", labelKey: "filter.instant-booking" }
3777
- ];
3778
- var FilterPanel = ({
3779
- onFilterChange,
3780
- className = "",
3781
- isLoading = false,
3782
- priceHistogram,
3783
- minPrice = 50,
3784
- maxPrice = 500,
3785
- regions = [],
3786
- discountCounts = {},
3787
- optionsCounts = {},
3788
- categoryCounts = {},
3789
- themes = [],
3790
- mealsCounts = {},
3791
- reviewsCounts = {},
3792
- transportCounts = {},
3793
- wellnessCounts = {},
3794
- servicesCounts = {},
3795
- filterOptions,
3796
- selectedDiscounts: externalDiscounts,
3797
- selectedOptions: externalOptions,
3798
- selectedExperiences: externalExperiences,
3799
- selectedRegions: externalRegions,
3800
- selectedCategories: externalCategories,
3801
- selectedMeals: externalMeals,
3802
- selectedReviews: externalReviews,
3803
- selectedTransport: externalTransport,
3804
- selectedWellness: externalWellness,
3805
- selectedServices: externalServices,
3806
- selectedPriceRange: externalPriceRange
3807
- }) => {
3808
- const { t, currency } = useUIContext();
3809
- const hasInitialLoadRef = useRef8(false);
3810
- if (!hasInitialLoadRef.current) {
3811
- if (regions.length > 0 || priceHistogram && priceHistogram.length > 0 || Object.keys(discountCounts).length > 0 || Object.keys(categoryCounts).length > 0) {
3812
- hasInitialLoadRef.current = true;
3813
- }
3814
- }
3815
- const [priceMin, setPriceMin] = useState15(externalPriceRange?.min ?? minPrice);
3816
- const [priceMax, setPriceMax] = useState15(externalPriceRange?.max ?? maxPrice);
3817
- const [selectedRegions, setSelectedRegions] = useState15(externalRegions ?? []);
3818
- const [selectedDiscounts, setSelectedDiscounts] = useState15(externalDiscounts ?? []);
3819
- const [selectedOptions, setSelectedOptions] = useState15(externalOptions ?? []);
3820
- const [selectedCategories, setSelectedCategories] = useState15(externalCategories ?? []);
3821
- const [selectedExperiences, setSelectedExperiences] = useState15(externalExperiences ?? []);
3822
- const [selectedMeals, setSelectedMeals] = useState15(externalMeals ?? []);
3823
- const [selectedReviews, setSelectedReviews] = useState15(externalReviews ?? []);
3824
- const [selectedTransport, setSelectedTransport] = useState15(externalTransport ?? []);
3825
- const [selectedWellness, setSelectedWellness] = useState15(externalWellness ?? []);
3826
- const [selectedServices, setSelectedServices] = useState15(externalServices ?? []);
3827
- useEffect10(() => {
3828
- if (externalPriceRange) {
3829
- setPriceMin(externalPriceRange.min);
3830
- setPriceMax(externalPriceRange.max);
3831
- } else {
3832
- setPriceMin(minPrice);
3833
- setPriceMax(maxPrice);
3834
- }
3835
- }, [externalPriceRange, minPrice, maxPrice]);
3836
- useEffect10(() => {
3837
- if (externalDiscounts !== void 0) setSelectedDiscounts(externalDiscounts);
3838
- }, [externalDiscounts]);
3839
- useEffect10(() => {
3840
- if (externalOptions !== void 0) setSelectedOptions(externalOptions);
3841
- }, [externalOptions]);
3842
- useEffect10(() => {
3843
- if (externalExperiences !== void 0) setSelectedExperiences(externalExperiences);
3844
- }, [externalExperiences]);
3845
- useEffect10(() => {
3846
- if (externalRegions !== void 0) setSelectedRegions(externalRegions);
3847
- }, [externalRegions]);
3848
- useEffect10(() => {
3849
- if (externalCategories !== void 0) setSelectedCategories(externalCategories);
3850
- }, [externalCategories]);
3851
- useEffect10(() => {
3852
- if (externalMeals !== void 0) setSelectedMeals(externalMeals);
3853
- }, [externalMeals]);
3854
- useEffect10(() => {
3855
- if (externalReviews !== void 0) setSelectedReviews(externalReviews);
3856
- }, [externalReviews]);
3857
- useEffect10(() => {
3858
- if (externalTransport !== void 0) setSelectedTransport(externalTransport);
3859
- }, [externalTransport]);
3860
- useEffect10(() => {
3861
- if (externalWellness !== void 0) setSelectedWellness(externalWellness);
3862
- }, [externalWellness]);
3863
- useEffect10(() => {
3864
- if (externalServices !== void 0) setSelectedServices(externalServices);
3865
- }, [externalServices]);
3866
- const handlePriceChange = (value) => {
3867
- setPriceMin(value.min);
3868
- setPriceMax(value.max);
3869
- };
3870
- const handlePriceSearch = useCallback2(async (range) => {
3871
- await onFilterChange?.({ priceRange: range });
3872
- }, [onFilterChange]);
3873
- const debouncedFetch = useDebounce(handlePriceSearch, 500);
3874
- const handlePriceApply = (range) => {
3875
- debouncedFetch(range);
3876
- };
3877
- const handleDiscountToggle = (discountValue) => {
3878
- setSelectedDiscounts((prev) => {
3879
- const newDiscounts = prev.includes(discountValue) ? prev.filter((d) => d !== discountValue) : [...prev, discountValue];
3880
- onFilterChange?.({ discounts: newDiscounts });
3881
- return newDiscounts;
3882
- });
3883
- };
3884
- const handleOptionToggle = (optionValue) => {
3885
- setSelectedOptions((prev) => {
3886
- const newOptions = prev.includes(optionValue) ? prev.filter((o) => o !== optionValue) : [...prev, optionValue];
3887
- onFilterChange?.({ options: newOptions });
3888
- return newOptions;
3889
- });
3890
- };
3891
- const handleServicesChange = (values) => {
3892
- setSelectedServices(values);
3893
- onFilterChange?.({ services: values });
3894
- };
3895
- const handleRegionsChange = (values) => {
3896
- setSelectedRegions(values);
3897
- onFilterChange?.({ regions: values });
3898
- };
3899
- const handleExperienceChange = (values) => {
3900
- setSelectedExperiences(values);
3901
- onFilterChange?.({ experiences: values });
3902
- };
3903
- const handleCategoriesChange = (values) => {
3904
- setSelectedCategories(values);
3905
- onFilterChange?.({ categories: values });
3906
- };
3907
- const handleMealsChange = (values) => {
3908
- setSelectedMeals(values);
3909
- onFilterChange?.({ meals: values });
3910
- };
3911
- const handleReviewsChange = (values) => {
3912
- setSelectedReviews(values);
3913
- onFilterChange?.({ ratings: values });
3914
- };
3915
- const handleTransportChange = (values) => {
3916
- setSelectedTransport(values);
3917
- onFilterChange?.({ transport: values });
3918
- };
3919
- const handleWellnessChange = (values) => {
3920
- setSelectedWellness(values);
3921
- onFilterChange?.({ wellness: values });
3922
- };
3923
- return /* @__PURE__ */ jsx35("aside", { className: `${FilterPanel_default.filterPanel} ${className}`, children: /* @__PURE__ */ jsxs33("div", { className: FilterPanel_default.content, children: [
3924
- /* @__PURE__ */ jsx35(
3925
- CollapsibleFilterSection,
3926
- {
3927
- title: t("filter.destination", "Destination"),
3928
- defaultExpanded: true,
3929
- children: /* @__PURE__ */ jsx35(
3930
- RegionsFilter,
3931
- {
3932
- regions,
3933
- selected: selectedRegions,
3934
- onChange: handleRegionsChange
3935
- }
3936
- )
3937
- }
3938
- ),
3939
- /* @__PURE__ */ jsx35(
3940
- CollapsibleFilterSection,
3941
- {
3942
- title: t("filter.experience", "Experience"),
3943
- defaultExpanded: selectedExperiences.length > 0,
3944
- children: /* @__PURE__ */ jsx35(
3945
- ExperienceFilter,
3946
- {
3947
- selected: selectedExperiences,
3948
- themes,
3949
- onChange: handleExperienceChange
3950
- }
3951
- )
3952
- }
3953
- ),
3954
- /* @__PURE__ */ jsx35(
3955
- CollapsibleFilterSection,
3956
- {
3957
- title: t("filter.price", "Price"),
3958
- defaultExpanded: true,
3959
- children: /* @__PURE__ */ jsx35(
3960
- PriceRangeFilter,
3961
- {
3962
- minPrice,
3963
- maxPrice,
3964
- value: { min: priceMin, max: priceMax },
3965
- onChange: handlePriceChange,
3966
- onApply: handlePriceApply,
3967
- histogram: priceHistogram,
3968
- currency
3969
- }
3970
- )
3971
- }
3972
- ),
3973
- /* @__PURE__ */ jsx35(
3974
- CollapsibleFilterSection,
3975
- {
3976
- title: t("filter.discount", "Discount"),
3977
- defaultExpanded: true,
3978
- children: /* @__PURE__ */ jsx35("div", { className: FilterPanel_default.discountList, children: DISCOUNT_OPTIONS.map((option) => {
3979
- const count = discountCounts[option.value];
3980
- const isDisabled = count === 0 && !selectedDiscounts.includes(option.value);
3981
- return /* @__PURE__ */ jsx35(
3982
- FilterCheckboxItem,
3983
- {
3984
- id: `discount-${option.value}`,
3985
- label: option.label,
3986
- count,
3987
- checked: selectedDiscounts.includes(option.value),
3988
- disabled: isDisabled,
3989
- onChange: () => handleDiscountToggle(option.value)
3990
- },
3991
- option.value
3992
- );
3993
- }) })
3994
- }
3995
- ),
3996
- /* @__PURE__ */ jsx35(
3997
- CollapsibleFilterSection,
3998
- {
3999
- title: t("filter.options", "Options"),
4000
- defaultExpanded: selectedOptions.length > 0 || selectedServices.length > 0,
4001
- children: /* @__PURE__ */ jsxs33("div", { className: FilterPanel_default.discountList, children: [
4002
- OPTIONS_FILTER.map((option) => {
4003
- const count = optionsCounts[option.value];
4004
- const isDisabled = count === 0 && !selectedOptions.includes(option.value);
4005
- return /* @__PURE__ */ jsx35(
4006
- FilterCheckboxItem,
4007
- {
4008
- id: `option-${option.value}`,
4009
- label: t(option.labelKey, "Instantly bookable"),
4010
- count,
4011
- checked: selectedOptions.includes(option.value),
4012
- disabled: isDisabled,
4013
- onChange: () => handleOptionToggle(option.value)
4014
- },
4015
- option.value
4016
- );
4017
- }),
4018
- filterOptions?.services?.map((option) => {
4019
- const count = servicesCounts[option.key];
4020
- const isDisabled = count === 0 && !selectedServices.includes(option.key);
4021
- return /* @__PURE__ */ jsx35(
4022
- FilterCheckboxItem,
4023
- {
4024
- id: `service-${option.key}`,
4025
- label: option.name,
4026
- count,
4027
- checked: selectedServices.includes(option.key),
4028
- disabled: isDisabled,
4029
- onChange: () => handleServicesChange(
4030
- selectedServices.includes(option.key) ? selectedServices.filter((v) => v !== option.key) : [...selectedServices, option.key]
4031
- )
4032
- },
4033
- option.key
4034
- );
4035
- })
4036
- ] })
4037
- }
4038
- ),
4039
- filterOptions?.meals && filterOptions.meals.length > 0 && /* @__PURE__ */ jsx35(
4040
- CollapsibleFilterSection,
4041
- {
4042
- title: t("filter.meals", "Meals"),
4043
- defaultExpanded: selectedMeals.length > 0,
4044
- children: /* @__PURE__ */ jsx35(
4045
- MealsFilter,
4046
- {
4047
- selected: selectedMeals,
4048
- counts: mealsCounts,
4049
- options: filterOptions.meals,
4050
- onChange: handleMealsChange
4051
- }
4052
- )
4053
- }
4054
- ),
4055
- /* @__PURE__ */ jsx35(
4056
- CollapsibleFilterSection,
4057
- {
4058
- title: t("filter.hotel-category", "Hotel category"),
4059
- defaultExpanded: true,
4060
- children: /* @__PURE__ */ jsx35(
4061
- HotelCategoryFilter,
4062
- {
4063
- selected: selectedCategories,
4064
- counts: categoryCounts,
4065
- onChange: handleCategoriesChange
4066
- }
4067
- )
4068
- }
4069
- ),
4070
- /* @__PURE__ */ jsx35(
4071
- CollapsibleFilterSection,
4072
- {
4073
- title: t("filter.reviews", "Reviews"),
4074
- defaultExpanded: selectedReviews.length > 0,
4075
- children: /* @__PURE__ */ jsx35(
4076
- ReviewsFilter,
4077
- {
4078
- selected: selectedReviews,
4079
- counts: reviewsCounts,
4080
- onChange: handleReviewsChange
4081
- }
4082
- )
4083
- }
4084
- ),
4085
- filterOptions?.transport && filterOptions.transport.length > 0 && /* @__PURE__ */ jsx35(
4086
- CollapsibleFilterSection,
4087
- {
4088
- title: t("filter.mobility", "Mobility"),
4089
- defaultExpanded: selectedTransport.length > 0,
4090
- children: /* @__PURE__ */ jsx35(
4091
- TransportFilter,
4092
- {
4093
- selected: selectedTransport,
4094
- counts: transportCounts,
4095
- options: filterOptions.transport,
4096
- onChange: handleTransportChange
4097
- }
4098
- )
4099
- }
4100
- ),
4101
- filterOptions?.wellness && filterOptions.wellness.length > 0 && /* @__PURE__ */ jsx35(
4102
- CollapsibleFilterSection,
4103
- {
4104
- title: t("filter.wellness-spa", "Wellness & Spa"),
4105
- defaultExpanded: selectedWellness.length > 0,
4106
- children: /* @__PURE__ */ jsx35(
4107
- WellnessFilter,
4108
- {
4109
- selected: selectedWellness,
4110
- counts: wellnessCounts,
4111
- options: filterOptions.wellness,
4112
- onChange: handleWellnessChange
4113
- }
4114
- )
4115
- }
4116
- )
4117
- ] }) });
4118
- };
4119
-
4120
- // src/components/Filters/FilterModal.tsx
4121
- import { useEffect as useEffect11 } from "react";
4122
-
4123
- // src/components/Filters/FilterModal.module.css
4124
- var FilterModal_default = {};
4125
-
4126
- // src/components/Filters/FilterModal.tsx
4127
- import { jsx as jsx36, jsxs as jsxs34 } from "react/jsx-runtime";
4128
- var CloseIcon3 = () => /* @__PURE__ */ jsx36("svg", { xmlns: "http://www.w3.org/2000/svg", width: "15", height: "15", viewBox: "0 0 15 15", fill: "none", children: /* @__PURE__ */ jsx36("path", { d: "M0.275391 1.59961C-0.0917969 1.23242 -0.0917969 0.638672 0.275391 0.275391C0.642578 -0.0878906 1.23633 -0.0917969 1.59961 0.275391L7.49805 6.17383L13.3965 0.275391C13.7637 -0.0917969 14.3574 -0.0917969 14.7207 0.275391C15.084 0.642578 15.0879 1.23633 14.7207 1.59961L8.82226 7.49805L14.7207 13.3965C15.0879 13.7637 15.0879 14.3574 14.7207 14.7207C14.3535 15.084 13.7598 15.0879 13.3965 14.7207L7.49805 8.82226L1.59961 14.7207C1.23242 15.0879 0.638672 15.0879 0.275391 14.7207C-0.0878906 14.3535 -0.0917969 13.7598 0.275391 13.3965L6.17383 7.49805L0.275391 1.59961Z", fill: "#1F2937" }) });
4129
- var FilterModal = ({
4130
- isOpen,
4131
- onClose,
4132
- resultCount = 0,
4133
- selectedFilters = [],
4134
- onRemoveFilter,
4135
- onClearAllFilters,
4136
- onFilterChange,
4137
- selectedDiscounts = [],
4138
- selectedOptions = [],
4139
- selectedCategories = [],
4140
- selectedExperiences = [],
4141
- selectedRegions = [],
4142
- selectedMeals = [],
4143
- selectedWellness = [],
4144
- selectedServices = [],
4145
- selectedTransport = [],
4146
- selectedReviews = [],
4147
- selectedPriceRange,
4148
- minPrice = 0,
4149
- maxPrice = 500,
4150
- regions = [],
4151
- ...filterPanelProps
4152
- }) => {
4153
- const { t } = useUIContext();
4154
- const hasSelectedFilters = selectedFilters.length > 0;
4155
- useEffect11(() => {
4156
- if (isOpen) {
4157
- document.body.style.overflow = "hidden";
4158
- return () => {
4159
- document.body.style.overflow = "";
4160
- };
4161
- }
4162
- }, [isOpen]);
4163
- if (!isOpen) return null;
4164
- return /* @__PURE__ */ jsx36("div", { className: FilterModal_default.overlay, children: /* @__PURE__ */ jsxs34("div", { className: FilterModal_default.modal, children: [
4165
- /* @__PURE__ */ jsxs34("div", { className: FilterModal_default.header, children: [
4166
- /* @__PURE__ */ jsx36("h2", { className: FilterModal_default.title, children: t("filter.filters", "Filters") }),
4167
- /* @__PURE__ */ jsx36(
4168
- Button,
4169
- {
4170
- variant: "secondary",
4171
- size: "small",
4172
- iconOnly: true,
4173
- onClick: onClose,
4174
- "aria-label": t("filter.close", "Close"),
4175
- children: /* @__PURE__ */ jsx36(CloseIcon3, {})
4176
- }
4177
- )
4178
- ] }),
4179
- /* @__PURE__ */ jsxs34("div", { className: FilterModal_default.content, children: [
4180
- selectedFilters.length > 0 && onRemoveFilter && onClearAllFilters && /* @__PURE__ */ jsx36("div", { className: FilterModal_default.selectedFilters, children: /* @__PURE__ */ jsx36(
4181
- SelectedFiltersRow,
4182
- {
4183
- filters: selectedFilters,
4184
- onRemove: onRemoveFilter,
4185
- onClearAll: onClearAllFilters
4186
- }
4187
- ) }),
4188
- /* @__PURE__ */ jsx36(
4189
- FilterPanel,
4190
- {
4191
- ...filterPanelProps,
4192
- onFilterChange,
4193
- selectedDiscounts,
4194
- selectedOptions,
4195
- selectedCategories,
4196
- selectedExperiences,
4197
- selectedRegions,
4198
- selectedMeals,
4199
- selectedWellness,
4200
- selectedServices,
4201
- selectedTransport,
4202
- selectedReviews,
4203
- selectedPriceRange,
4204
- minPrice,
4205
- maxPrice,
4206
- regions,
4207
- className: FilterModal_default.filterPanel
4208
- }
4209
- )
4210
- ] }),
4211
- /* @__PURE__ */ jsxs34("div", { className: FilterModal_default.footer, children: [
4212
- onClearAllFilters && /* @__PURE__ */ jsx36(
4213
- Button,
4214
- {
4215
- variant: "link",
4216
- className: FilterModal_default.footerLink,
4217
- onClick: onClearAllFilters,
4218
- disabled: !hasSelectedFilters,
4219
- children: t("filter.clear-all", "Clear all")
4220
- }
4221
- ),
4222
- /* @__PURE__ */ jsx36(
4223
- Button,
4224
- {
4225
- variant: "primary",
4226
- size: "medium",
4227
- onClick: onClose,
4228
- children: t("filter.show-results", "Show {count} results").replace("{count}", String(resultCount))
4229
- }
4230
- )
4231
- ] })
4232
- ] }) });
4233
- };
4234
-
4235
4390
  // src/components/icons/HeartIcon.tsx
4236
- import { jsx as jsx37 } from "react/jsx-runtime";
4237
- var HeartIcon3 = ({ filled = false, className = "", size = 24 }) => /* @__PURE__ */ jsx37(
4391
+ import { jsx as jsx35 } from "react/jsx-runtime";
4392
+ var HeartIcon3 = ({ filled = false, className = "", size = 24 }) => /* @__PURE__ */ jsx35(
4238
4393
  "svg",
4239
4394
  {
4240
4395
  width: size,
@@ -4246,14 +4401,14 @@ var HeartIcon3 = ({ filled = false, className = "", size = 24 }) => /* @__PURE__
4246
4401
  strokeWidth: 2,
4247
4402
  strokeLinecap: "round",
4248
4403
  strokeLinejoin: "round",
4249
- children: /* @__PURE__ */ jsx37("path", { d: "M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z" })
4404
+ children: /* @__PURE__ */ jsx35("path", { d: "M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z" })
4250
4405
  }
4251
4406
  );
4252
4407
  HeartIcon3.displayName = "HeartIcon";
4253
4408
 
4254
4409
  // src/components/icons/StarIcon.tsx
4255
- import { jsx as jsx38, jsxs as jsxs35 } from "react/jsx-runtime";
4256
- var StarIcon4 = ({ filled = true, className = "", size = 9 }) => /* @__PURE__ */ jsxs35(
4410
+ import { jsx as jsx36, jsxs as jsxs33 } from "react/jsx-runtime";
4411
+ var StarIcon4 = ({ filled = true, className = "", size = 9 }) => /* @__PURE__ */ jsxs33(
4257
4412
  "svg",
4258
4413
  {
4259
4414
  xmlns: "http://www.w3.org/2000/svg",
@@ -4263,22 +4418,22 @@ var StarIcon4 = ({ filled = true, className = "", size = 9 }) => /* @__PURE__ */
4263
4418
  fill: "none",
4264
4419
  className,
4265
4420
  children: [
4266
- /* @__PURE__ */ jsx38("g", { clipPath: "url(#clip0_star_icon)", children: /* @__PURE__ */ jsx38(
4421
+ /* @__PURE__ */ jsx36("g", { clipPath: "url(#clip0_star_icon)", children: /* @__PURE__ */ jsx36(
4267
4422
  "path",
4268
4423
  {
4269
4424
  d: "M4.80018 0.366577C4.93104 0.366577 5.05173 0.440968 5.11135 0.557659L6.18011 2.66102L8.50521 3.03152C8.63462 3.05194 8.74222 3.14383 8.78294 3.26927C8.82365 3.39472 8.79021 3.53183 8.6986 3.62518L7.03366 5.29533L7.40155 7.6277C7.42191 7.75752 7.3681 7.88879 7.26195 7.9661C7.15581 8.04341 7.01476 8.05508 6.89843 7.99528L4.80018 6.92463L2.70192 7.99528C2.58559 8.05508 2.44454 8.04341 2.33839 7.9661C2.23225 7.88879 2.17844 7.75898 2.1988 7.6277L2.56523 5.29533L0.901751 3.62518C0.808689 3.53183 0.776699 3.39472 0.817413 3.26927C0.858128 3.14383 0.964277 3.05194 1.09515 3.03152L3.42024 2.66102L4.49045 0.557659C4.55007 0.440968 4.67076 0.366577 4.80163 0.366577H4.80018Z",
4270
4425
  fill: filled ? "#1F2937" : "#D1D5DB"
4271
4426
  }
4272
4427
  ) }),
4273
- /* @__PURE__ */ jsx38("defs", { children: /* @__PURE__ */ jsx38("clipPath", { id: "clip0_star_icon", children: /* @__PURE__ */ jsx38("rect", { width: "8", height: "8", fill: "white", transform: "translate(0.800049 0.199951)" }) }) })
4428
+ /* @__PURE__ */ jsx36("defs", { children: /* @__PURE__ */ jsx36("clipPath", { id: "clip0_star_icon", children: /* @__PURE__ */ jsx36("rect", { width: "8", height: "8", fill: "white", transform: "translate(0.800049 0.199951)" }) }) })
4274
4429
  ]
4275
4430
  }
4276
4431
  );
4277
4432
  StarIcon4.displayName = "StarIcon";
4278
4433
 
4279
4434
  // src/components/icons/ChevronLeftIcon.tsx
4280
- import { jsx as jsx39 } from "react/jsx-runtime";
4281
- var ChevronLeftIcon = ({ className = "", size = 20 }) => /* @__PURE__ */ jsx39(
4435
+ import { jsx as jsx37 } from "react/jsx-runtime";
4436
+ var ChevronLeftIcon = ({ className = "", size = 20 }) => /* @__PURE__ */ jsx37(
4282
4437
  "svg",
4283
4438
  {
4284
4439
  xmlns: "http://www.w3.org/2000/svg",
@@ -4291,14 +4446,14 @@ var ChevronLeftIcon = ({ className = "", size = 20 }) => /* @__PURE__ */ jsx39(
4291
4446
  strokeLinecap: "round",
4292
4447
  strokeLinejoin: "round",
4293
4448
  className,
4294
- children: /* @__PURE__ */ jsx39("polyline", { points: "15 18 9 12 15 6" })
4449
+ children: /* @__PURE__ */ jsx37("polyline", { points: "15 18 9 12 15 6" })
4295
4450
  }
4296
4451
  );
4297
4452
  ChevronLeftIcon.displayName = "ChevronLeftIcon";
4298
4453
 
4299
4454
  // src/components/icons/ChevronRightIcon.tsx
4300
- import { jsx as jsx40 } from "react/jsx-runtime";
4301
- var ChevronRightIcon2 = ({ className = "", size = 20 }) => /* @__PURE__ */ jsx40(
4455
+ import { jsx as jsx38 } from "react/jsx-runtime";
4456
+ var ChevronRightIcon2 = ({ className = "", size = 20 }) => /* @__PURE__ */ jsx38(
4302
4457
  "svg",
4303
4458
  {
4304
4459
  xmlns: "http://www.w3.org/2000/svg",
@@ -4311,14 +4466,14 @@ var ChevronRightIcon2 = ({ className = "", size = 20 }) => /* @__PURE__ */ jsx40
4311
4466
  strokeLinecap: "round",
4312
4467
  strokeLinejoin: "round",
4313
4468
  className,
4314
- children: /* @__PURE__ */ jsx40("polyline", { points: "9 18 15 12 9 6" })
4469
+ children: /* @__PURE__ */ jsx38("polyline", { points: "9 18 15 12 9 6" })
4315
4470
  }
4316
4471
  );
4317
4472
  ChevronRightIcon2.displayName = "ChevronRightIcon";
4318
4473
 
4319
4474
  // src/components/icons/PinIcon.tsx
4320
- import { jsx as jsx41, jsxs as jsxs36 } from "react/jsx-runtime";
4321
- var PinIcon2 = ({ className = "", size = 16 }) => /* @__PURE__ */ jsxs36(
4475
+ import { jsx as jsx39, jsxs as jsxs34 } from "react/jsx-runtime";
4476
+ var PinIcon2 = ({ className = "", size = 16 }) => /* @__PURE__ */ jsxs34(
4322
4477
  "svg",
4323
4478
  {
4324
4479
  xmlns: "http://www.w3.org/2000/svg",
@@ -4328,7 +4483,7 @@ var PinIcon2 = ({ className = "", size = 16 }) => /* @__PURE__ */ jsxs36(
4328
4483
  fill: "none",
4329
4484
  className,
4330
4485
  children: [
4331
- /* @__PURE__ */ jsx41(
4486
+ /* @__PURE__ */ jsx39(
4332
4487
  "path",
4333
4488
  {
4334
4489
  fillRule: "evenodd",
@@ -4337,7 +4492,7 @@ var PinIcon2 = ({ className = "", size = 16 }) => /* @__PURE__ */ jsxs36(
4337
4492
  fill: "currentColor"
4338
4493
  }
4339
4494
  ),
4340
- /* @__PURE__ */ jsx41(
4495
+ /* @__PURE__ */ jsx39(
4341
4496
  "path",
4342
4497
  {
4343
4498
  fillRule: "evenodd",
@@ -4400,8 +4555,6 @@ export {
4400
4555
  ExperienceFilter,
4401
4556
  FAQ,
4402
4557
  FilterCheckboxItem,
4403
- FilterModal,
4404
- FilterPanel,
4405
4558
  GuestContent,
4406
4559
  HeartIcon3 as HeartIcon,
4407
4560
  HotelCard,