@hotelcard/ui 0.0.18 → 0.0.20

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.
package/dist/index.cjs CHANGED
@@ -49,8 +49,6 @@ __export(index_exports, {
49
49
  ExperienceFilter: () => ExperienceFilter,
50
50
  FAQ: () => FAQ,
51
51
  FilterCheckboxItem: () => FilterCheckboxItem,
52
- FilterModal: () => FilterModal,
53
- FilterPanel: () => FilterPanel,
54
52
  GuestContent: () => GuestContent,
55
53
  HeartIcon: () => HeartIcon3,
56
54
  HotelCard: () => HotelCard,
@@ -151,7 +149,8 @@ var de_default = {
151
149
  "rating-very-good": "Sehr gut",
152
150
  "rating-good": "Gut",
153
151
  "rating-fair": "Ansprechend",
154
- "rating-none": "Keine Bewertung"
152
+ "rating-none": "Keine Bewertung",
153
+ clear: "L\xF6schen"
155
154
  },
156
155
  product: {
157
156
  "6m": "6-Monatsabo",
@@ -204,7 +203,7 @@ var de_default = {
204
203
  "most-popular": "Beliebt",
205
204
  "newest-hotels": "Neueste",
206
205
  relevance: "Relevanz",
207
- selected: "String value",
206
+ selected: "Ausgew\xE4hlt:",
208
207
  "clear-all": "Alles l\xF6schen",
209
208
  options: "Leistungen",
210
209
  "hotellerie-suisse": "Klassifikation HotellerieSuisse",
@@ -215,6 +214,162 @@ var de_default = {
215
214
  },
216
215
  headline: {
217
216
  "no-results": "Zurzeit entsprechen keine Aufenthalte Ihrer Suche"
217
+ },
218
+ meta_title: "Hotels suchen - HotelCard",
219
+ meta_description: "Suchen Sie nach Hotels nach Stadt, Region oder Hotelname",
220
+ title: "Suche",
221
+ loading: "Hotels werden geladen...",
222
+ retry: "Erneut versuchen",
223
+ close_map: "Karte schlie\xDFen",
224
+ seo: {
225
+ default_title: "Hoteldeals suchen - HotelCard",
226
+ location_title: "Hotels in {{location}}",
227
+ region_title: "Hotels in {{region}}",
228
+ experience_title: "{{experience}} Hotels",
229
+ default_description: "Entdecken Sie {{count}} Hotels mit exklusiven HotelCard-Rabatten.",
230
+ location_description: "Finden Sie {{count}} Hotels in {{location}} mit exklusiven Rabatten von bis zu 50%."
231
+ },
232
+ modal: {
233
+ close_search: "Suche schlie\xDFen",
234
+ placeholder_anywhere: "\xDCberall",
235
+ recent_searches: "Letzte Suchen",
236
+ remove_recent: "Aus letzten Suchen entfernen",
237
+ all_destinations: "Alle Reiseziele"
238
+ },
239
+ map: {
240
+ open_search: "Suche \xF6ffnen",
241
+ open_filters: "Filter \xF6ffnen",
242
+ switch_to_list: "Zur Listenansicht wechseln",
243
+ zoom_in: "Vergr\xF6\xDFern",
244
+ zoom_out: "Verkleinern",
245
+ no_location_data: "Keine Hotels mit Standortdaten verf\xFCgbar",
246
+ hotels_missing_coordinates: "{{count}} Hotels gefunden, aber Koordinaten fehlen",
247
+ no_hotels_in_area: "Keine Hotels in diesem Gebiet gefunden"
248
+ },
249
+ view: {
250
+ list: "Liste"
251
+ },
252
+ breadcrumb: {
253
+ properties_found: "{{count}} Unterk\xFCnfte gefunden",
254
+ properties_found_location: "{{location}}: {{count}} Unterk\xFCnfte gefunden"
255
+ },
256
+ aria: {
257
+ search_results_breadcrumb: "Suchergebnisse",
258
+ close: "Schlie\xDFen",
259
+ previous_image: "Vorheriges Bild",
260
+ next_image: "N\xE4chstes Bild",
261
+ add_to_favorites: "Zu Favoriten hinzuf\xFCgen",
262
+ remove_from_favorites: "Aus Favoriten entfernen",
263
+ list_view: "Zur Listenansicht wechseln",
264
+ map_view: "Zur Kartenansicht wechseln"
265
+ },
266
+ breadcrumb_nav: {
267
+ home: "Startseite"
268
+ },
269
+ guest_selector: {
270
+ decrease_adults: "Erwachsene verringern",
271
+ increase_adults: "Erwachsene erh\xF6hen",
272
+ decrease_children: "Kinder verringern",
273
+ increase_children: "Kinder erh\xF6hen",
274
+ decrease_infants: "Kleinkinder verringern",
275
+ increase_infants: "Kleinkinder erh\xF6hen",
276
+ toggle_infants: "Haustiere umschalten"
277
+ },
278
+ search_form: {
279
+ location_placeholder: "Hotels, St\xE4dte, Regionen suchen...",
280
+ distance_any: "- km",
281
+ distance_5: "+ 5 km",
282
+ distance_10: "+ 10 km",
283
+ distance_20: "+ 20 km",
284
+ distance_30: "+ 30 km",
285
+ distance_50: "+ 50 km",
286
+ searching: "Suche l\xE4uft...",
287
+ reset_filters: "Filter zur\xFCcksetzen"
288
+ },
289
+ dropdown: {
290
+ hotels: "Hotels",
291
+ cities: "St\xE4dte",
292
+ regions: "Regionen",
293
+ countries: "L\xE4nder",
294
+ "no-results": "Keine Ergebnisse gefunden"
295
+ },
296
+ filters: {
297
+ show_filters: "Filter anzeigen",
298
+ open_filters: "Filter \xF6ffnen",
299
+ filter_by: "Filtern nach:",
300
+ hotel_rating: "Hotelbewertung",
301
+ show_results: "{{count}} Ergebnisse anzeigen",
302
+ apply_filters: "Filter anwenden",
303
+ close_filters: "Filter schlie\xDFen",
304
+ view_in_map: "Auf der Karte anzeigen",
305
+ popular_filters: "Beliebte Filter",
306
+ destinations: "Reiseziele",
307
+ options_title: "Optionen",
308
+ options: {
309
+ instant_booking: "Sofort buchbar",
310
+ pets_allowed: "Haustiere erlaubt",
311
+ free_cancellation: "Kostenlose Stornierung"
312
+ },
313
+ category: {
314
+ footer_prefix: "Hotelklassifikation gem\xE4ss "
315
+ },
316
+ show_less: "Weniger anzeigen",
317
+ selected: "Ausgew\xE4hlt",
318
+ clear_all: "Alle l\xF6schen"
319
+ },
320
+ date_selector: {
321
+ apply: "Anwenden",
322
+ months_selected: "{{count}} Monate"
323
+ },
324
+ star_rating: {
325
+ "5_stars": "5 Sterne",
326
+ "4_stars": "4 Sterne",
327
+ "3_stars": "3 Sterne",
328
+ "2_stars": "2 Sterne",
329
+ not_classified: "Nicht klassifiziert",
330
+ swiss_lodge: "Swiss Lodge"
331
+ },
332
+ results: {
333
+ hotels_found: "{{count}} Hotels gefunden",
334
+ load_more: "Mehr laden",
335
+ loading: "Laden...",
336
+ end_of_results: "Sie haben das Ende der Ergebnisse erreicht",
337
+ no_results: "Keine Hotels gefunden",
338
+ try_different_search: "Versuchen Sie, Ihre Suchkriterien anzupassen",
339
+ unavailable_banner_title: "Weitere Hotels, die Sie interessieren k\xF6nnten",
340
+ unavailable_banner_description: "Diese Hotels haben derzeit keine Verf\xFCgbarkeit, die Ihren Suchkriterien entspricht."
341
+ },
342
+ no_results: {
343
+ title: "Derzeit sind keine Unterk\xFCnfte verf\xFCgbar, die Ihren Suchkriterien entsprechen.",
344
+ subtitle: "Versuchen Sie, Ihre Suchkriterien anzupassen oder die Filter zur\xFCckzusetzen",
345
+ description: "Entdecken Sie verschiedene Reiseziele, \xE4ndern Sie Ihre Reisedaten oder entfernen Sie einige Filter.",
346
+ description_with_filters: "Entdecken Sie verschiedene Reiseziele, \xE4ndern Sie Ihre Reisedaten oder entfernen Sie einige Filter.",
347
+ clear_filters: "Filter zur\xFCcksetzen"
348
+ },
349
+ errors: {
350
+ search_failed: "Suche fehlgeschlagen",
351
+ load_more_failed: "Weitere Hotels konnten nicht geladen werden"
352
+ },
353
+ error: {
354
+ title: "Etwas ist schiefgelaufen",
355
+ description: "Die Hotels konnten nicht geladen werden. Bitte versuchen Sie es erneut.",
356
+ retry: "Erneut versuchen"
357
+ },
358
+ pagination: {
359
+ label: "Seitennavigation",
360
+ previous: "Vorherige Seite",
361
+ previous_short: "Zur\xFCck",
362
+ next: "N\xE4chste Seite",
363
+ next_short: "Weiter",
364
+ page: "Seite {{page}}"
365
+ },
366
+ hotel_card: {
367
+ rating: "Bewertung",
368
+ price_from: "pro Zimmer & Nacht ab",
369
+ not_available: "Nicht verf\xFCgbar f\xFCr Ihre Suchkriterien"
370
+ },
371
+ badges: {
372
+ new: "Neu"
218
373
  }
219
374
  };
220
375
 
@@ -277,7 +432,8 @@ var en_default = {
277
432
  "rating-very-good": "Very good",
278
433
  "rating-good": "Good",
279
434
  "rating-fair": "Fair",
280
- "rating-none": "No rating"
435
+ "rating-none": "No rating",
436
+ clear: "Clear"
281
437
  },
282
438
  product: {
283
439
  "6m": "6-month subscription",
@@ -330,7 +486,7 @@ var en_default = {
330
486
  "most-popular": "Most popular",
331
487
  "newest-hotels": "Newest",
332
488
  relevance: "Relevance",
333
- selected: "Selected",
489
+ selected: "Selected:",
334
490
  "clear-all": "Clear all",
335
491
  options: "Options",
336
492
  "hotellerie-suisse": "Classification HotellerieSuisse",
@@ -341,7 +497,163 @@ var en_default = {
341
497
  },
342
498
  headline: {
343
499
  "no-results": "No stays match your search right now"
344
- }
500
+ },
501
+ meta_title: "Search Hotels - HotelCard",
502
+ meta_description: "Search for hotels by city, region, or hotel name",
503
+ title: "Search",
504
+ loading: "Loading hotels...",
505
+ retry: "Retry",
506
+ close_map: "Close map",
507
+ seo: {
508
+ default_title: "Search Hotel Deals - HotelCard",
509
+ location_title: "Hotels in {{location}}",
510
+ region_title: "Hotels in {{region}}",
511
+ experience_title: "{{experience}} Hotels",
512
+ default_description: "Discover {{count}} hotels with exclusive HotelCard discounts.",
513
+ location_description: "Find {{count}} hotels in {{location}} with exclusive discounts up to 50% off."
514
+ },
515
+ modal: {
516
+ close_search: "Close search",
517
+ placeholder_anywhere: "Anywhere",
518
+ recent_searches: "Recent searches",
519
+ remove_recent: "Remove from recent searches",
520
+ all_destinations: "All destinations"
521
+ },
522
+ map: {
523
+ open_search: "Open search",
524
+ open_filters: "Open filters",
525
+ switch_to_list: "Switch to list view",
526
+ zoom_in: "Zoom in",
527
+ zoom_out: "Zoom out",
528
+ no_location_data: "No hotels with location data available",
529
+ hotels_missing_coordinates: "{{count}} hotels found but missing coordinates",
530
+ no_hotels_in_area: "No hotels found in this area"
531
+ },
532
+ view: {
533
+ list: "List"
534
+ },
535
+ breadcrumb: {
536
+ properties_found: "{{count}} properties found",
537
+ properties_found_location: "{{location}}: {{count}} properties found"
538
+ },
539
+ aria: {
540
+ search_results_breadcrumb: "Search results",
541
+ close: "Close",
542
+ previous_image: "Previous image",
543
+ next_image: "Next image",
544
+ add_to_favorites: "Add to favorites",
545
+ remove_from_favorites: "Remove from favorites",
546
+ list_view: "Switch to list view",
547
+ map_view: "Switch to map view"
548
+ },
549
+ breadcrumb_nav: {
550
+ home: "Home"
551
+ },
552
+ guest_selector: {
553
+ adults_description: "Ages 13 or above",
554
+ children_description: "Ages 2-12",
555
+ infants_description: "Under 2",
556
+ decrease_adults: "Decrease adults",
557
+ increase_adults: "Increase adults",
558
+ decrease_children: "Decrease children",
559
+ increase_children: "Increase children",
560
+ decrease_infants: "Decrease infants",
561
+ increase_infants: "Increase infants",
562
+ toggle_infants: "Toggle pet"
563
+ },
564
+ search_form: {
565
+ location_placeholder: "Search for hotels, cities, regions...",
566
+ distance_any: "- km",
567
+ distance_5: "+ 5 km",
568
+ distance_10: "+ 10 km",
569
+ distance_20: "+ 20 km",
570
+ distance_30: "+ 30 km",
571
+ distance_50: "+ 50 km",
572
+ searching: "Searching...",
573
+ reset_filters: "Reset"
574
+ },
575
+ dropdown: {
576
+ hotels: "Hotels",
577
+ cities: "Cities",
578
+ regions: "Regions",
579
+ countries: "Countries",
580
+ "no-results": "No results found"
581
+ },
582
+ filters: {
583
+ show_filters: "Show filters",
584
+ open_filters: "Open filters",
585
+ filter_by: "Filter by:",
586
+ hotel_rating: "Hotel rating",
587
+ show_results: "Show {{count}} results",
588
+ apply_filters: "Apply filters",
589
+ close_filters: "Close filters",
590
+ view_in_map: "View in a Map",
591
+ popular_filters: "Popular filters",
592
+ show_less: "Show less",
593
+ selected: "Selected",
594
+ clear_all: "Clear all",
595
+ options: {
596
+ instant_booking: "Immediately bookable",
597
+ pets_allowed: "Pets allowed",
598
+ free_cancellation: "Free cancellation"
599
+ }
600
+ },
601
+ date_selector: {
602
+ apply: "Apply",
603
+ months_selected: "{{count}} months"
604
+ },
605
+ star_rating: {
606
+ "5_stars": "5 stars",
607
+ "4_stars": "4 stars",
608
+ "3_stars": "3 stars",
609
+ "2_stars": "2 stars",
610
+ not_classified: "Not classified",
611
+ swiss_lodge: "Swiss Lodge"
612
+ },
613
+ results: {
614
+ hotels_found: "{{count}} hotels found",
615
+ load_more: "Load more",
616
+ loading: "Loading...",
617
+ end_of_results: "You've reached the end of results",
618
+ no_results: "No hotels found",
619
+ try_different_search: "Try adjusting your search criteria",
620
+ unavailable_banner_title: "More hotels that might interest you",
621
+ unavailable_banner_description: "These hotels don't currently have availability matching your search criteria."
622
+ },
623
+ errors: {
624
+ search_failed: "Search failed",
625
+ load_more_failed: "Failed to load more hotels"
626
+ },
627
+ error: {
628
+ title: "Something went wrong",
629
+ description: "We couldn't load the hotels. Please try again.",
630
+ retry: "Try again"
631
+ },
632
+ no_results: {
633
+ title: "No stays match your search right now.",
634
+ description: "Explore different destinations, change your dates, or remove some filters.",
635
+ description_with_filters: "Explore different destinations, change your dates, or remove some filters.",
636
+ clear_filters: "Clear all filters"
637
+ },
638
+ pagination: {
639
+ label: "Pagination",
640
+ previous: "Previous page",
641
+ previous_short: "Previous",
642
+ next: "Next page",
643
+ next_short: "Next",
644
+ page: "Page {{page}}"
645
+ },
646
+ hotel_card: {
647
+ rating: "Rating",
648
+ price_from: "per room & night from",
649
+ not_available: "Not available for your search criteria"
650
+ },
651
+ badges: {
652
+ new: "New"
653
+ },
654
+ clear_location: "Clear location",
655
+ clear_date: "Clear date",
656
+ clear_guests: "Clear guests"
345
657
  };
346
658
 
347
659
  // src/locales/fr.json
@@ -403,7 +715,8 @@ var fr_default = {
403
715
  "rating-very-good": "Tr\xE8s bien",
404
716
  "rating-good": "Bien",
405
717
  "rating-fair": "Moyen",
406
- "rating-none": "Aucune notation"
718
+ "rating-none": "Aucune notation",
719
+ clear: "Effacer"
407
720
  },
408
721
  product: {
409
722
  "6m": "Abonnement de 6 mois",
@@ -456,7 +769,7 @@ var fr_default = {
456
769
  "most-popular": "Plus populaires",
457
770
  "newest-hotels": "Plus r\xE9cents",
458
771
  relevance: "Pertinence",
459
- selected: "String value",
772
+ selected: "S\xE9lectionn\xE9:",
460
773
  "clear-all": "Tout effacer",
461
774
  options: "Services",
462
775
  "hotellerie-suisse": "Classification HotellerieSuisse",
@@ -467,6 +780,162 @@ var fr_default = {
467
780
  },
468
781
  headline: {
469
782
  "no-results": "Aucun s\xE9jour ne correspond \xE0 votre recherche pour le moment"
783
+ },
784
+ meta_title: "Rechercher des h\xF4tels - HotelCard",
785
+ meta_description: "Recherchez des h\xF4tels par ville, r\xE9gion ou nom d'h\xF4tel",
786
+ title: "Recherche",
787
+ loading: "Chargement des h\xF4tels...",
788
+ retry: "R\xE9essayer",
789
+ close_map: "Fermer la carte",
790
+ seo: {
791
+ default_title: "Rechercher des offres d'h\xF4tels - HotelCard",
792
+ location_title: "H\xF4tels \xE0 {{location}}",
793
+ region_title: "H\xF4tels en {{region}}",
794
+ experience_title: "H\xF4tels {{experience}}",
795
+ default_description: "D\xE9couvrez {{count}} h\xF4tels avec des r\xE9ductions exclusives HotelCard.",
796
+ location_description: "Trouvez {{count}} h\xF4tels \xE0 {{location}} avec des r\xE9ductions exclusives jusqu'\xE0 50%."
797
+ },
798
+ modal: {
799
+ close_search: "Fermer la recherche",
800
+ placeholder_anywhere: "Partout",
801
+ recent_searches: "Recherches r\xE9centes",
802
+ remove_recent: "Supprimer des recherches r\xE9centes",
803
+ all_destinations: "Toutes les destinations"
804
+ },
805
+ map: {
806
+ open_search: "Ouvrir la recherche",
807
+ open_filters: "Ouvrir les filtres",
808
+ switch_to_list: "Passer \xE0 la vue liste",
809
+ zoom_in: "Agrandir",
810
+ zoom_out: "R\xE9duire",
811
+ no_location_data: "Aucun h\xF4tel avec donn\xE9es de localisation",
812
+ hotels_missing_coordinates: "{{count}} h\xF4tels trouv\xE9s mais coordonn\xE9es manquantes",
813
+ no_hotels_in_area: "Aucun h\xF4tel trouv\xE9 dans cette zone"
814
+ },
815
+ view: {
816
+ list: "Liste"
817
+ },
818
+ breadcrumb: {
819
+ properties_found: "{{count}} h\xE9bergements trouv\xE9s",
820
+ properties_found_location: "{{location}}: {{count}} h\xE9bergements trouv\xE9s"
821
+ },
822
+ aria: {
823
+ search_results_breadcrumb: "R\xE9sultats de la recherche",
824
+ close: "Fermer",
825
+ previous_image: "Image pr\xE9c\xE9dente",
826
+ next_image: "Image suivante",
827
+ add_to_favorites: "Ajouter aux favoris",
828
+ remove_from_favorites: "Retirer des favoris",
829
+ list_view: "Passer \xE0 la vue liste",
830
+ map_view: "Passer \xE0 la vue carte"
831
+ },
832
+ breadcrumb_nav: {
833
+ home: "Accueil"
834
+ },
835
+ guest_selector: {
836
+ decrease_adults: "Diminuer les adultes",
837
+ increase_adults: "Augmenter les adultes",
838
+ decrease_children: "Diminuer les enfants",
839
+ increase_children: "Augmenter les enfants",
840
+ decrease_infants: "Diminuer les b\xE9b\xE9s",
841
+ increase_infants: "Augmenter les b\xE9b\xE9s",
842
+ toggle_infants: "Basculer les animaux"
843
+ },
844
+ search_form: {
845
+ location_placeholder: "Rechercher des h\xF4tels, villes, r\xE9gions...",
846
+ distance_any: "- km",
847
+ distance_5: "+ 5 km",
848
+ distance_10: "+ 10 km",
849
+ distance_20: "+ 20 km",
850
+ distance_30: "+ 30 km",
851
+ distance_50: "+ 50 km",
852
+ searching: "Recherche en cours...",
853
+ reset_filters: "R\xE9initialiser les filtres"
854
+ },
855
+ dropdown: {
856
+ hotels: "H\xF4tels",
857
+ cities: "Villes",
858
+ regions: "R\xE9gions",
859
+ countries: "Pays",
860
+ "no-results": "Aucun r\xE9sultat trouv\xE9"
861
+ },
862
+ filters: {
863
+ show_filters: "Afficher les filtres",
864
+ open_filters: "Ouvrir les filtres",
865
+ filter_by: "Filtrer par:",
866
+ hotel_rating: "Classement de l'h\xF4tel",
867
+ show_results: "Afficher {{count}} r\xE9sultats",
868
+ apply_filters: "Appliquer les filtres",
869
+ close_filters: "Fermer les filtres",
870
+ view_in_map: "Voir sur la carte",
871
+ popular_filters: "Filtres populaires",
872
+ destinations: "Destinations",
873
+ options_title: "Options",
874
+ options: {
875
+ instant_booking: "R\xE9servation imm\xE9diate",
876
+ pets_allowed: "Animaux accept\xE9s",
877
+ free_cancellation: "Annulation gratuite"
878
+ },
879
+ category: {
880
+ footer_prefix: "Classification h\xF4teli\xE8re selon "
881
+ },
882
+ show_less: "Afficher moins",
883
+ selected: "S\xE9lectionn\xE9",
884
+ clear_all: "Tout effacer"
885
+ },
886
+ date_selector: {
887
+ apply: "Appliquer",
888
+ months_selected: "{{count}} mois"
889
+ },
890
+ star_rating: {
891
+ "5_stars": "5 \xE9toiles",
892
+ "4_stars": "4 \xE9toiles",
893
+ "3_stars": "3 \xE9toiles",
894
+ "2_stars": "2 \xE9toiles",
895
+ not_classified: "Non class\xE9",
896
+ swiss_lodge: "Swiss Lodge"
897
+ },
898
+ results: {
899
+ hotels_found: "{{count}} h\xF4tels trouv\xE9s",
900
+ load_more: "Charger plus",
901
+ loading: "Chargement...",
902
+ end_of_results: "Vous avez atteint la fin des r\xE9sultats",
903
+ no_results: "Aucun h\xF4tel trouv\xE9",
904
+ try_different_search: "Essayez d'ajuster vos crit\xE8res de recherche",
905
+ unavailable_banner_title: "D'autres h\xF4tels qui pourraient vous int\xE9resser",
906
+ unavailable_banner_description: "Ces h\xF4tels n'ont actuellement pas de disponibilit\xE9 correspondant \xE0 vos crit\xE8res de recherche."
907
+ },
908
+ no_results: {
909
+ title: "Aucun h\xE9bergement ne correspond \xE0 votre recherche pour le moment.",
910
+ subtitle: "Essayez d'ajuster vos crit\xE8res de recherche ou r\xE9initialisez les filtres",
911
+ description: "Explorez diff\xE9rentes destinations, modifiez vos dates ou supprimez certains filtres.",
912
+ description_with_filters: "Explorez diff\xE9rentes destinations, modifiez vos dates ou supprimez certains filtres.",
913
+ clear_filters: "R\xE9initialiser les filtres"
914
+ },
915
+ errors: {
916
+ search_failed: "La recherche a \xE9chou\xE9",
917
+ load_more_failed: "Impossible de charger plus d'h\xF4tels"
918
+ },
919
+ error: {
920
+ title: "Une erreur s'est produite",
921
+ description: "Les h\xF4tels n'ont pas pu \xEAtre charg\xE9s. Veuillez r\xE9essayer.",
922
+ retry: "R\xE9essayer"
923
+ },
924
+ pagination: {
925
+ label: "Pagination",
926
+ previous: "Page pr\xE9c\xE9dente",
927
+ previous_short: "Pr\xE9c\xE9dent",
928
+ next: "Page suivante",
929
+ next_short: "Suivant",
930
+ page: "Page {{page}}"
931
+ },
932
+ hotel_card: {
933
+ rating: "Note",
934
+ price_from: "par chambre & nuit d\xE8s",
935
+ not_available: "Non disponible selon vos crit\xE8res de recherche"
936
+ },
937
+ badges: {
938
+ new: "Nouveau"
470
939
  }
471
940
  };
472
941
 
@@ -529,7 +998,8 @@ var it_default = {
529
998
  "rating-very-good": "Ottimo",
530
999
  "rating-good": "Buono",
531
1000
  "rating-fair": "Sufficiente",
532
- "rating-none": "Nessun voto"
1001
+ "rating-none": "Nessun voto",
1002
+ clear: "Cancella"
533
1003
  },
534
1004
  product: {
535
1005
  "6m": "Abbonamento di 6 mesi",
@@ -582,7 +1052,7 @@ var it_default = {
582
1052
  "most-popular": "Pi\xF9 popolari",
583
1053
  "newest-hotels": "Pi\xF9 recenti",
584
1054
  relevance: "Rilevanza",
585
- selected: "String value",
1055
+ selected: "Selezionato:",
586
1056
  "clear-all": "Cancella tutto",
587
1057
  options: "Servizi",
588
1058
  "hotellerie-suisse": "Classificazione HotellerieSuisse",
@@ -593,6 +1063,162 @@ var it_default = {
593
1063
  },
594
1064
  headline: {
595
1065
  "no-results": "Al momento nessun soggiorno corrisponde alla tua ricerca"
1066
+ },
1067
+ meta_title: "Cerca Hotel - HotelCard",
1068
+ meta_description: "Cerca hotel per citt\xE0, regione o nome dell'hotel",
1069
+ title: "Ricerca",
1070
+ loading: "Caricamento hotel...",
1071
+ retry: "Riprova",
1072
+ close_map: "Chiudi mappa",
1073
+ seo: {
1074
+ default_title: "Cerca offerte hotel - HotelCard",
1075
+ location_title: "Hotel a {{location}}",
1076
+ region_title: "Hotel in {{region}}",
1077
+ experience_title: "Hotel {{experience}}",
1078
+ default_description: "Scopri {{count}} hotel con sconti esclusivi HotelCard.",
1079
+ location_description: "Trova {{count}} hotel a {{location}} con sconti esclusivi fino al 50%."
1080
+ },
1081
+ modal: {
1082
+ close_search: "Chiudi ricerca",
1083
+ placeholder_anywhere: "Ovunque",
1084
+ recent_searches: "Ricerche recenti",
1085
+ remove_recent: "Rimuovi dalle ricerche recenti",
1086
+ all_destinations: "Tutte le destinazioni"
1087
+ },
1088
+ map: {
1089
+ open_search: "Apri ricerca",
1090
+ open_filters: "Apri filtri",
1091
+ switch_to_list: "Passa alla vista elenco",
1092
+ zoom_in: "Ingrandisci",
1093
+ zoom_out: "Riduci",
1094
+ no_location_data: "Nessun hotel con dati di posizione",
1095
+ hotels_missing_coordinates: "{{count}} hotel trovati ma coordinate mancanti",
1096
+ no_hotels_in_area: "Nessun hotel trovato in questa zona"
1097
+ },
1098
+ view: {
1099
+ list: "Lista"
1100
+ },
1101
+ breadcrumb: {
1102
+ properties_found: "{{count}} strutture trovate",
1103
+ properties_found_location: "{{location}}: {{count}} strutture trovate"
1104
+ },
1105
+ aria: {
1106
+ search_results_breadcrumb: "Risultati della ricerca",
1107
+ close: "Chiudi",
1108
+ previous_image: "Immagine precedente",
1109
+ next_image: "Immagine successiva",
1110
+ add_to_favorites: "Aggiungi ai preferiti",
1111
+ remove_from_favorites: "Rimuovi dai preferiti",
1112
+ list_view: "Passa alla vista elenco",
1113
+ map_view: "Passa alla vista mappa"
1114
+ },
1115
+ breadcrumb_nav: {
1116
+ home: "Home"
1117
+ },
1118
+ guest_selector: {
1119
+ decrease_adults: "Diminuisci adulti",
1120
+ increase_adults: "Aumenta adulti",
1121
+ decrease_children: "Diminuisci bambini",
1122
+ increase_children: "Aumenta bambini",
1123
+ decrease_infants: "Diminuisci neonati",
1124
+ increase_infants: "Aumenta neonati",
1125
+ toggle_infants: "Attiva/disattiva animali"
1126
+ },
1127
+ search_form: {
1128
+ location_placeholder: "Cerca hotel, citt\xE0, regioni...",
1129
+ distance_any: "- km",
1130
+ distance_5: "+ 5 km",
1131
+ distance_10: "+ 10 km",
1132
+ distance_20: "+ 20 km",
1133
+ distance_30: "+ 30 km",
1134
+ distance_50: "+ 50 km",
1135
+ searching: "Ricerca in corso...",
1136
+ reset_filters: "Ripristina filtri"
1137
+ },
1138
+ dropdown: {
1139
+ hotels: "Hotel",
1140
+ cities: "Citt\xE0",
1141
+ regions: "Regioni",
1142
+ countries: "Paesi",
1143
+ "no-results": "Nessun risultato trovato"
1144
+ },
1145
+ filters: {
1146
+ show_filters: "Mostra filtri",
1147
+ open_filters: "Apri filtri",
1148
+ filter_by: "Filtra per:",
1149
+ hotel_rating: "Categoria hotel",
1150
+ show_results: "Mostra {{count}} risultati",
1151
+ apply_filters: "Applica filtri",
1152
+ close_filters: "Chiudi filtri",
1153
+ view_in_map: "Visualizza sulla mappa",
1154
+ popular_filters: "Filtri popolari",
1155
+ destinations: "Destinazioni",
1156
+ options_title: "Opzioni",
1157
+ options: {
1158
+ instant_booking: "Prenotazione immediata",
1159
+ pets_allowed: "Animali ammessi",
1160
+ free_cancellation: "Cancellazione gratuita"
1161
+ },
1162
+ category: {
1163
+ footer_prefix: "Classificazione alberghiera secondo "
1164
+ },
1165
+ show_less: "Mostra meno",
1166
+ selected: "Selezionato",
1167
+ clear_all: "Cancella tutto"
1168
+ },
1169
+ date_selector: {
1170
+ apply: "Applica",
1171
+ months_selected: "{{count}} mesi"
1172
+ },
1173
+ star_rating: {
1174
+ "5_stars": "5 stelle",
1175
+ "4_stars": "4 stelle",
1176
+ "3_stars": "3 stelle",
1177
+ "2_stars": "2 stelle",
1178
+ not_classified: "Non classificato",
1179
+ swiss_lodge: "Swiss Lodge"
1180
+ },
1181
+ results: {
1182
+ hotels_found: "{{count}} hotel trovati",
1183
+ load_more: "Carica altri",
1184
+ loading: "Caricamento...",
1185
+ end_of_results: "Hai raggiunto la fine dei risultati",
1186
+ no_results: "Nessun hotel trovato",
1187
+ try_different_search: "Prova a modificare i criteri di ricerca",
1188
+ unavailable_banner_title: "Altri hotel che potrebbero interessarti",
1189
+ unavailable_banner_description: "Questi hotel non hanno attualmente disponibilit\xE0 corrispondente ai tuoi criteri di ricerca."
1190
+ },
1191
+ no_results: {
1192
+ title: "Al momento non ci sono alloggi che corrispondono ai criteri di ricerca.",
1193
+ subtitle: "Prova a modificare i criteri di ricerca o ripristina i filtri",
1194
+ description: "Esplora diverse destinazioni, modifica le date o rimuovi alcuni filtri.",
1195
+ description_with_filters: "Esplora diverse destinazioni, modifica le date o rimuovi alcuni filtri.",
1196
+ clear_filters: "Ripristina filtri"
1197
+ },
1198
+ errors: {
1199
+ search_failed: "Ricerca fallita",
1200
+ load_more_failed: "Impossibile caricare altri hotel"
1201
+ },
1202
+ error: {
1203
+ title: "Qualcosa \xE8 andato storto",
1204
+ description: "Non \xE8 stato possibile caricare gli hotel. Riprova.",
1205
+ retry: "Riprova"
1206
+ },
1207
+ pagination: {
1208
+ label: "Paginazione",
1209
+ previous: "Pagina precedente",
1210
+ previous_short: "Precedente",
1211
+ next: "Pagina successiva",
1212
+ next_short: "Successivo",
1213
+ page: "Pagina {{page}}"
1214
+ },
1215
+ hotel_card: {
1216
+ rating: "Valutazione",
1217
+ price_from: "per camera e notte da",
1218
+ not_available: "Non disponibile per i tuoi criteri di ricerca"
1219
+ },
1220
+ badges: {
1221
+ new: "Nuovo"
596
1222
  }
597
1223
  };
598
1224
 
@@ -3850,482 +4476,9 @@ var SelectedFiltersRow = ({
3850
4476
  ] }) });
3851
4477
  };
3852
4478
 
3853
- // src/components/Filters/FilterPanel.tsx
3854
- var import_react19 = require("react");
3855
-
3856
- // src/components/Filters/FilterPanel.module.css
3857
- var FilterPanel_default = {};
3858
-
3859
- // src/components/Filters/FilterPanel.tsx
3860
- var import_jsx_runtime35 = require("react/jsx-runtime");
3861
- var DISCOUNT_OPTIONS = [
3862
- { value: "50", label: "50%" },
3863
- { value: "30", label: "30%" },
3864
- { value: "10", label: "10%" }
3865
- ];
3866
- var OPTIONS_FILTER = [
3867
- { value: "instant_booking", labelKey: "filter.instant-booking" }
3868
- ];
3869
- var FilterPanel = ({
3870
- onFilterChange,
3871
- className = "",
3872
- isLoading = false,
3873
- priceHistogram,
3874
- minPrice = 50,
3875
- maxPrice = 500,
3876
- regions = [],
3877
- discountCounts = {},
3878
- optionsCounts = {},
3879
- categoryCounts = {},
3880
- themes = [],
3881
- mealsCounts = {},
3882
- reviewsCounts = {},
3883
- transportCounts = {},
3884
- wellnessCounts = {},
3885
- servicesCounts = {},
3886
- filterOptions,
3887
- selectedDiscounts: externalDiscounts,
3888
- selectedOptions: externalOptions,
3889
- selectedExperiences: externalExperiences,
3890
- selectedRegions: externalRegions,
3891
- selectedCategories: externalCategories,
3892
- selectedMeals: externalMeals,
3893
- selectedReviews: externalReviews,
3894
- selectedTransport: externalTransport,
3895
- selectedWellness: externalWellness,
3896
- selectedServices: externalServices,
3897
- selectedPriceRange: externalPriceRange
3898
- }) => {
3899
- const { t, currency } = useUIContext();
3900
- const hasInitialLoadRef = (0, import_react19.useRef)(false);
3901
- if (!hasInitialLoadRef.current) {
3902
- if (regions.length > 0 || priceHistogram && priceHistogram.length > 0 || Object.keys(discountCounts).length > 0 || Object.keys(categoryCounts).length > 0) {
3903
- hasInitialLoadRef.current = true;
3904
- }
3905
- }
3906
- const [priceMin, setPriceMin] = (0, import_react19.useState)(externalPriceRange?.min ?? minPrice);
3907
- const [priceMax, setPriceMax] = (0, import_react19.useState)(externalPriceRange?.max ?? maxPrice);
3908
- const [selectedRegions, setSelectedRegions] = (0, import_react19.useState)(externalRegions ?? []);
3909
- const [selectedDiscounts, setSelectedDiscounts] = (0, import_react19.useState)(externalDiscounts ?? []);
3910
- const [selectedOptions, setSelectedOptions] = (0, import_react19.useState)(externalOptions ?? []);
3911
- const [selectedCategories, setSelectedCategories] = (0, import_react19.useState)(externalCategories ?? []);
3912
- const [selectedExperiences, setSelectedExperiences] = (0, import_react19.useState)(externalExperiences ?? []);
3913
- const [selectedMeals, setSelectedMeals] = (0, import_react19.useState)(externalMeals ?? []);
3914
- const [selectedReviews, setSelectedReviews] = (0, import_react19.useState)(externalReviews ?? []);
3915
- const [selectedTransport, setSelectedTransport] = (0, import_react19.useState)(externalTransport ?? []);
3916
- const [selectedWellness, setSelectedWellness] = (0, import_react19.useState)(externalWellness ?? []);
3917
- const [selectedServices, setSelectedServices] = (0, import_react19.useState)(externalServices ?? []);
3918
- (0, import_react19.useEffect)(() => {
3919
- if (externalPriceRange) {
3920
- setPriceMin(externalPriceRange.min);
3921
- setPriceMax(externalPriceRange.max);
3922
- } else {
3923
- setPriceMin(minPrice);
3924
- setPriceMax(maxPrice);
3925
- }
3926
- }, [externalPriceRange, minPrice, maxPrice]);
3927
- (0, import_react19.useEffect)(() => {
3928
- if (externalDiscounts !== void 0) setSelectedDiscounts(externalDiscounts);
3929
- }, [externalDiscounts]);
3930
- (0, import_react19.useEffect)(() => {
3931
- if (externalOptions !== void 0) setSelectedOptions(externalOptions);
3932
- }, [externalOptions]);
3933
- (0, import_react19.useEffect)(() => {
3934
- if (externalExperiences !== void 0) setSelectedExperiences(externalExperiences);
3935
- }, [externalExperiences]);
3936
- (0, import_react19.useEffect)(() => {
3937
- if (externalRegions !== void 0) setSelectedRegions(externalRegions);
3938
- }, [externalRegions]);
3939
- (0, import_react19.useEffect)(() => {
3940
- if (externalCategories !== void 0) setSelectedCategories(externalCategories);
3941
- }, [externalCategories]);
3942
- (0, import_react19.useEffect)(() => {
3943
- if (externalMeals !== void 0) setSelectedMeals(externalMeals);
3944
- }, [externalMeals]);
3945
- (0, import_react19.useEffect)(() => {
3946
- if (externalReviews !== void 0) setSelectedReviews(externalReviews);
3947
- }, [externalReviews]);
3948
- (0, import_react19.useEffect)(() => {
3949
- if (externalTransport !== void 0) setSelectedTransport(externalTransport);
3950
- }, [externalTransport]);
3951
- (0, import_react19.useEffect)(() => {
3952
- if (externalWellness !== void 0) setSelectedWellness(externalWellness);
3953
- }, [externalWellness]);
3954
- (0, import_react19.useEffect)(() => {
3955
- if (externalServices !== void 0) setSelectedServices(externalServices);
3956
- }, [externalServices]);
3957
- const handlePriceChange = (value) => {
3958
- setPriceMin(value.min);
3959
- setPriceMax(value.max);
3960
- };
3961
- const handlePriceSearch = (0, import_react19.useCallback)(async (range) => {
3962
- await onFilterChange?.({ priceRange: range });
3963
- }, [onFilterChange]);
3964
- const debouncedFetch = useDebounce(handlePriceSearch, 500);
3965
- const handlePriceApply = (range) => {
3966
- debouncedFetch(range);
3967
- };
3968
- const handleDiscountToggle = (discountValue) => {
3969
- setSelectedDiscounts((prev) => {
3970
- const newDiscounts = prev.includes(discountValue) ? prev.filter((d) => d !== discountValue) : [...prev, discountValue];
3971
- onFilterChange?.({ discounts: newDiscounts });
3972
- return newDiscounts;
3973
- });
3974
- };
3975
- const handleOptionToggle = (optionValue) => {
3976
- setSelectedOptions((prev) => {
3977
- const newOptions = prev.includes(optionValue) ? prev.filter((o) => o !== optionValue) : [...prev, optionValue];
3978
- onFilterChange?.({ options: newOptions });
3979
- return newOptions;
3980
- });
3981
- };
3982
- const handleServicesChange = (values) => {
3983
- setSelectedServices(values);
3984
- onFilterChange?.({ services: values });
3985
- };
3986
- const handleRegionsChange = (values) => {
3987
- setSelectedRegions(values);
3988
- onFilterChange?.({ regions: values });
3989
- };
3990
- const handleExperienceChange = (values) => {
3991
- setSelectedExperiences(values);
3992
- onFilterChange?.({ experiences: values });
3993
- };
3994
- const handleCategoriesChange = (values) => {
3995
- setSelectedCategories(values);
3996
- onFilterChange?.({ categories: values });
3997
- };
3998
- const handleMealsChange = (values) => {
3999
- setSelectedMeals(values);
4000
- onFilterChange?.({ meals: values });
4001
- };
4002
- const handleReviewsChange = (values) => {
4003
- setSelectedReviews(values);
4004
- onFilterChange?.({ ratings: values });
4005
- };
4006
- const handleTransportChange = (values) => {
4007
- setSelectedTransport(values);
4008
- onFilterChange?.({ transport: values });
4009
- };
4010
- const handleWellnessChange = (values) => {
4011
- setSelectedWellness(values);
4012
- onFilterChange?.({ wellness: values });
4013
- };
4014
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("aside", { className: `${FilterPanel_default.filterPanel} ${className}`, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: FilterPanel_default.content, children: [
4015
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4016
- CollapsibleFilterSection,
4017
- {
4018
- title: t("filter.destination", "Destination"),
4019
- defaultExpanded: true,
4020
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4021
- RegionsFilter,
4022
- {
4023
- regions,
4024
- selected: selectedRegions,
4025
- onChange: handleRegionsChange
4026
- }
4027
- )
4028
- }
4029
- ),
4030
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4031
- CollapsibleFilterSection,
4032
- {
4033
- title: t("filter.experience", "Experience"),
4034
- defaultExpanded: selectedExperiences.length > 0,
4035
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4036
- ExperienceFilter,
4037
- {
4038
- selected: selectedExperiences,
4039
- themes,
4040
- onChange: handleExperienceChange
4041
- }
4042
- )
4043
- }
4044
- ),
4045
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4046
- CollapsibleFilterSection,
4047
- {
4048
- title: t("filter.price", "Price"),
4049
- defaultExpanded: true,
4050
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4051
- PriceRangeFilter,
4052
- {
4053
- minPrice,
4054
- maxPrice,
4055
- value: { min: priceMin, max: priceMax },
4056
- onChange: handlePriceChange,
4057
- onApply: handlePriceApply,
4058
- histogram: priceHistogram,
4059
- currency
4060
- }
4061
- )
4062
- }
4063
- ),
4064
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4065
- CollapsibleFilterSection,
4066
- {
4067
- title: t("filter.discount", "Discount"),
4068
- defaultExpanded: true,
4069
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: FilterPanel_default.discountList, children: DISCOUNT_OPTIONS.map((option) => {
4070
- const count = discountCounts[option.value];
4071
- const isDisabled = count === 0 && !selectedDiscounts.includes(option.value);
4072
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4073
- FilterCheckboxItem,
4074
- {
4075
- id: `discount-${option.value}`,
4076
- label: option.label,
4077
- count,
4078
- checked: selectedDiscounts.includes(option.value),
4079
- disabled: isDisabled,
4080
- onChange: () => handleDiscountToggle(option.value)
4081
- },
4082
- option.value
4083
- );
4084
- }) })
4085
- }
4086
- ),
4087
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4088
- CollapsibleFilterSection,
4089
- {
4090
- title: t("filter.options", "Options"),
4091
- defaultExpanded: selectedOptions.length > 0 || selectedServices.length > 0,
4092
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: FilterPanel_default.discountList, children: [
4093
- OPTIONS_FILTER.map((option) => {
4094
- const count = optionsCounts[option.value];
4095
- const isDisabled = count === 0 && !selectedOptions.includes(option.value);
4096
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4097
- FilterCheckboxItem,
4098
- {
4099
- id: `option-${option.value}`,
4100
- label: t(option.labelKey, "Instantly bookable"),
4101
- count,
4102
- checked: selectedOptions.includes(option.value),
4103
- disabled: isDisabled,
4104
- onChange: () => handleOptionToggle(option.value)
4105
- },
4106
- option.value
4107
- );
4108
- }),
4109
- filterOptions?.services?.map((option) => {
4110
- const count = servicesCounts[option.key];
4111
- const isDisabled = count === 0 && !selectedServices.includes(option.key);
4112
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4113
- FilterCheckboxItem,
4114
- {
4115
- id: `service-${option.key}`,
4116
- label: option.name,
4117
- count,
4118
- checked: selectedServices.includes(option.key),
4119
- disabled: isDisabled,
4120
- onChange: () => handleServicesChange(
4121
- selectedServices.includes(option.key) ? selectedServices.filter((v) => v !== option.key) : [...selectedServices, option.key]
4122
- )
4123
- },
4124
- option.key
4125
- );
4126
- })
4127
- ] })
4128
- }
4129
- ),
4130
- filterOptions?.meals && filterOptions.meals.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4131
- CollapsibleFilterSection,
4132
- {
4133
- title: t("filter.meals", "Meals"),
4134
- defaultExpanded: selectedMeals.length > 0,
4135
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4136
- MealsFilter,
4137
- {
4138
- selected: selectedMeals,
4139
- counts: mealsCounts,
4140
- options: filterOptions.meals,
4141
- onChange: handleMealsChange
4142
- }
4143
- )
4144
- }
4145
- ),
4146
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4147
- CollapsibleFilterSection,
4148
- {
4149
- title: t("filter.hotel-category", "Hotel category"),
4150
- defaultExpanded: true,
4151
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4152
- HotelCategoryFilter,
4153
- {
4154
- selected: selectedCategories,
4155
- counts: categoryCounts,
4156
- onChange: handleCategoriesChange
4157
- }
4158
- )
4159
- }
4160
- ),
4161
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4162
- CollapsibleFilterSection,
4163
- {
4164
- title: t("filter.reviews", "Reviews"),
4165
- defaultExpanded: selectedReviews.length > 0,
4166
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4167
- ReviewsFilter,
4168
- {
4169
- selected: selectedReviews,
4170
- counts: reviewsCounts,
4171
- onChange: handleReviewsChange
4172
- }
4173
- )
4174
- }
4175
- ),
4176
- filterOptions?.transport && filterOptions.transport.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4177
- CollapsibleFilterSection,
4178
- {
4179
- title: t("filter.mobility", "Mobility"),
4180
- defaultExpanded: selectedTransport.length > 0,
4181
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4182
- TransportFilter,
4183
- {
4184
- selected: selectedTransport,
4185
- counts: transportCounts,
4186
- options: filterOptions.transport,
4187
- onChange: handleTransportChange
4188
- }
4189
- )
4190
- }
4191
- ),
4192
- filterOptions?.wellness && filterOptions.wellness.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4193
- CollapsibleFilterSection,
4194
- {
4195
- title: t("filter.wellness-spa", "Wellness & Spa"),
4196
- defaultExpanded: selectedWellness.length > 0,
4197
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4198
- WellnessFilter,
4199
- {
4200
- selected: selectedWellness,
4201
- counts: wellnessCounts,
4202
- options: filterOptions.wellness,
4203
- onChange: handleWellnessChange
4204
- }
4205
- )
4206
- }
4207
- )
4208
- ] }) });
4209
- };
4210
-
4211
- // src/components/Filters/FilterModal.tsx
4212
- var import_react20 = require("react");
4213
-
4214
- // src/components/Filters/FilterModal.module.css
4215
- var FilterModal_default = {};
4216
-
4217
- // src/components/Filters/FilterModal.tsx
4218
- var import_jsx_runtime36 = require("react/jsx-runtime");
4219
- var CloseIcon3 = () => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "15", height: "15", viewBox: "0 0 15 15", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("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" }) });
4220
- var FilterModal = ({
4221
- isOpen,
4222
- onClose,
4223
- resultCount = 0,
4224
- selectedFilters = [],
4225
- onRemoveFilter,
4226
- onClearAllFilters,
4227
- onFilterChange,
4228
- selectedDiscounts = [],
4229
- selectedOptions = [],
4230
- selectedCategories = [],
4231
- selectedExperiences = [],
4232
- selectedRegions = [],
4233
- selectedMeals = [],
4234
- selectedWellness = [],
4235
- selectedServices = [],
4236
- selectedTransport = [],
4237
- selectedReviews = [],
4238
- selectedPriceRange,
4239
- minPrice = 0,
4240
- maxPrice = 500,
4241
- regions = [],
4242
- ...filterPanelProps
4243
- }) => {
4244
- const { t } = useUIContext();
4245
- const hasSelectedFilters = selectedFilters.length > 0;
4246
- (0, import_react20.useEffect)(() => {
4247
- if (isOpen) {
4248
- document.body.style.overflow = "hidden";
4249
- return () => {
4250
- document.body.style.overflow = "";
4251
- };
4252
- }
4253
- }, [isOpen]);
4254
- if (!isOpen) return null;
4255
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: FilterModal_default.overlay, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: FilterModal_default.modal, children: [
4256
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: FilterModal_default.header, children: [
4257
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("h2", { className: FilterModal_default.title, children: t("filter.filters", "Filters") }),
4258
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4259
- Button,
4260
- {
4261
- variant: "secondary",
4262
- size: "small",
4263
- iconOnly: true,
4264
- onClick: onClose,
4265
- "aria-label": t("filter.close", "Close"),
4266
- children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(CloseIcon3, {})
4267
- }
4268
- )
4269
- ] }),
4270
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: FilterModal_default.content, children: [
4271
- selectedFilters.length > 0 && onRemoveFilter && onClearAllFilters && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: FilterModal_default.selectedFilters, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4272
- SelectedFiltersRow,
4273
- {
4274
- filters: selectedFilters,
4275
- onRemove: onRemoveFilter,
4276
- onClearAll: onClearAllFilters
4277
- }
4278
- ) }),
4279
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4280
- FilterPanel,
4281
- {
4282
- ...filterPanelProps,
4283
- onFilterChange,
4284
- selectedDiscounts,
4285
- selectedOptions,
4286
- selectedCategories,
4287
- selectedExperiences,
4288
- selectedRegions,
4289
- selectedMeals,
4290
- selectedWellness,
4291
- selectedServices,
4292
- selectedTransport,
4293
- selectedReviews,
4294
- selectedPriceRange,
4295
- minPrice,
4296
- maxPrice,
4297
- regions,
4298
- className: FilterModal_default.filterPanel
4299
- }
4300
- )
4301
- ] }),
4302
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: FilterModal_default.footer, children: [
4303
- onClearAllFilters && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4304
- Button,
4305
- {
4306
- variant: "link",
4307
- className: FilterModal_default.footerLink,
4308
- onClick: onClearAllFilters,
4309
- disabled: !hasSelectedFilters,
4310
- children: t("filter.clear-all", "Clear all")
4311
- }
4312
- ),
4313
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4314
- Button,
4315
- {
4316
- variant: "primary",
4317
- size: "medium",
4318
- onClick: onClose,
4319
- children: t("filter.show-results", "Show {count} results").replace("{count}", String(resultCount))
4320
- }
4321
- )
4322
- ] })
4323
- ] }) });
4324
- };
4325
-
4326
4479
  // src/components/icons/HeartIcon.tsx
4327
- var import_jsx_runtime37 = require("react/jsx-runtime");
4328
- var HeartIcon3 = ({ filled = false, className = "", size = 24 }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
4480
+ var import_jsx_runtime35 = require("react/jsx-runtime");
4481
+ var HeartIcon3 = ({ filled = false, className = "", size = 24 }) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4329
4482
  "svg",
4330
4483
  {
4331
4484
  width: size,
@@ -4337,14 +4490,14 @@ var HeartIcon3 = ({ filled = false, className = "", size = 24 }) => /* @__PURE__
4337
4490
  strokeWidth: 2,
4338
4491
  strokeLinecap: "round",
4339
4492
  strokeLinejoin: "round",
4340
- children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("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" })
4493
+ children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("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" })
4341
4494
  }
4342
4495
  );
4343
4496
  HeartIcon3.displayName = "HeartIcon";
4344
4497
 
4345
4498
  // src/components/icons/StarIcon.tsx
4346
- var import_jsx_runtime38 = require("react/jsx-runtime");
4347
- var StarIcon4 = ({ filled = true, className = "", size = 9 }) => /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
4499
+ var import_jsx_runtime36 = require("react/jsx-runtime");
4500
+ var StarIcon4 = ({ filled = true, className = "", size = 9 }) => /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
4348
4501
  "svg",
4349
4502
  {
4350
4503
  xmlns: "http://www.w3.org/2000/svg",
@@ -4354,22 +4507,22 @@ var StarIcon4 = ({ filled = true, className = "", size = 9 }) => /* @__PURE__ */
4354
4507
  fill: "none",
4355
4508
  className,
4356
4509
  children: [
4357
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("g", { clipPath: "url(#clip0_star_icon)", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4510
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("g", { clipPath: "url(#clip0_star_icon)", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4358
4511
  "path",
4359
4512
  {
4360
4513
  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",
4361
4514
  fill: filled ? "#1F2937" : "#D1D5DB"
4362
4515
  }
4363
4516
  ) }),
4364
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("clipPath", { id: "clip0_star_icon", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("rect", { width: "8", height: "8", fill: "white", transform: "translate(0.800049 0.199951)" }) }) })
4517
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("clipPath", { id: "clip0_star_icon", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("rect", { width: "8", height: "8", fill: "white", transform: "translate(0.800049 0.199951)" }) }) })
4365
4518
  ]
4366
4519
  }
4367
4520
  );
4368
4521
  StarIcon4.displayName = "StarIcon";
4369
4522
 
4370
4523
  // src/components/icons/ChevronLeftIcon.tsx
4371
- var import_jsx_runtime39 = require("react/jsx-runtime");
4372
- var ChevronLeftIcon = ({ className = "", size = 20 }) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
4524
+ var import_jsx_runtime37 = require("react/jsx-runtime");
4525
+ var ChevronLeftIcon = ({ className = "", size = 20 }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
4373
4526
  "svg",
4374
4527
  {
4375
4528
  xmlns: "http://www.w3.org/2000/svg",
@@ -4382,14 +4535,14 @@ var ChevronLeftIcon = ({ className = "", size = 20 }) => /* @__PURE__ */ (0, imp
4382
4535
  strokeLinecap: "round",
4383
4536
  strokeLinejoin: "round",
4384
4537
  className,
4385
- children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("polyline", { points: "15 18 9 12 15 6" })
4538
+ children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("polyline", { points: "15 18 9 12 15 6" })
4386
4539
  }
4387
4540
  );
4388
4541
  ChevronLeftIcon.displayName = "ChevronLeftIcon";
4389
4542
 
4390
4543
  // src/components/icons/ChevronRightIcon.tsx
4391
- var import_jsx_runtime40 = require("react/jsx-runtime");
4392
- var ChevronRightIcon2 = ({ className = "", size = 20 }) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
4544
+ var import_jsx_runtime38 = require("react/jsx-runtime");
4545
+ var ChevronRightIcon2 = ({ className = "", size = 20 }) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4393
4546
  "svg",
4394
4547
  {
4395
4548
  xmlns: "http://www.w3.org/2000/svg",
@@ -4402,14 +4555,14 @@ var ChevronRightIcon2 = ({ className = "", size = 20 }) => /* @__PURE__ */ (0, i
4402
4555
  strokeLinecap: "round",
4403
4556
  strokeLinejoin: "round",
4404
4557
  className,
4405
- children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("polyline", { points: "9 18 15 12 9 6" })
4558
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("polyline", { points: "9 18 15 12 9 6" })
4406
4559
  }
4407
4560
  );
4408
4561
  ChevronRightIcon2.displayName = "ChevronRightIcon";
4409
4562
 
4410
4563
  // src/components/icons/PinIcon.tsx
4411
- var import_jsx_runtime41 = require("react/jsx-runtime");
4412
- var PinIcon2 = ({ className = "", size = 16 }) => /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
4564
+ var import_jsx_runtime39 = require("react/jsx-runtime");
4565
+ var PinIcon2 = ({ className = "", size = 16 }) => /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
4413
4566
  "svg",
4414
4567
  {
4415
4568
  xmlns: "http://www.w3.org/2000/svg",
@@ -4419,7 +4572,7 @@ var PinIcon2 = ({ className = "", size = 16 }) => /* @__PURE__ */ (0, import_jsx
4419
4572
  fill: "none",
4420
4573
  className,
4421
4574
  children: [
4422
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
4575
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
4423
4576
  "path",
4424
4577
  {
4425
4578
  fillRule: "evenodd",
@@ -4428,7 +4581,7 @@ var PinIcon2 = ({ className = "", size = 16 }) => /* @__PURE__ */ (0, import_jsx
4428
4581
  fill: "currentColor"
4429
4582
  }
4430
4583
  ),
4431
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
4584
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
4432
4585
  "path",
4433
4586
  {
4434
4587
  fillRule: "evenodd",
@@ -4492,8 +4645,6 @@ var calculateDiscount = (originalPrice, discountedPrice) => {
4492
4645
  ExperienceFilter,
4493
4646
  FAQ,
4494
4647
  FilterCheckboxItem,
4495
- FilterModal,
4496
- FilterPanel,
4497
4648
  GuestContent,
4498
4649
  HeartIcon,
4499
4650
  HotelCard,