@admin-layout/tailwind-travel-pro 12.0.16-alpha.7

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.
Files changed (113) hide show
  1. package/LICENSE +21 -0
  2. package/lib/components/CardList.d.ts +61 -0
  3. package/lib/components/CardList.d.ts.map +1 -0
  4. package/lib/components/CardList.js +43 -0
  5. package/lib/components/CardList.js.map +1 -0
  6. package/lib/components/CategoriesTypeList.d.ts +29 -0
  7. package/lib/components/CategoriesTypeList.d.ts.map +1 -0
  8. package/lib/components/CategoriesTypeList.js +139 -0
  9. package/lib/components/CategoriesTypeList.js.map +1 -0
  10. package/lib/components/LazyLoadingGoogleMarker.d.ts +83 -0
  11. package/lib/components/LazyLoadingGoogleMarker.d.ts.map +1 -0
  12. package/lib/components/LazyLoadingGoogleMarker.js +107 -0
  13. package/lib/components/LazyLoadingGoogleMarker.js.map +1 -0
  14. package/lib/components/Pagination.d.ts +6 -0
  15. package/lib/components/Pagination.d.ts.map +1 -0
  16. package/lib/components/Pagination.js +56 -0
  17. package/lib/components/Pagination.js.map +1 -0
  18. package/lib/components/ParamSearchResultContainer.d.ts +99 -0
  19. package/lib/components/ParamSearchResultContainer.d.ts.map +1 -0
  20. package/lib/components/ParamSearchResultContainer.js +120 -0
  21. package/lib/components/ParamSearchResultContainer.js.map +1 -0
  22. package/lib/components/PropertyCard.d.ts +24 -0
  23. package/lib/components/PropertyCard.d.ts.map +1 -0
  24. package/lib/components/PropertyCard.js +423 -0
  25. package/lib/components/PropertyCard.js.map +1 -0
  26. package/lib/components/PropertyCardOnMap.d.ts +10 -0
  27. package/lib/components/PropertyCardOnMap.d.ts.map +1 -0
  28. package/lib/components/PropertyCardOnMap.js +108 -0
  29. package/lib/components/PropertyCardOnMap.js.map +1 -0
  30. package/lib/components/VehicleCard/PricePopover.d.ts +8 -0
  31. package/lib/components/VehicleCard/PricePopover.d.ts.map +1 -0
  32. package/lib/components/VehicleCard/PricePopover.js +98 -0
  33. package/lib/components/VehicleCard/PricePopover.js.map +1 -0
  34. package/lib/components/VehicleCard/VehicleBadge.d.ts +7 -0
  35. package/lib/components/VehicleCard/VehicleBadge.d.ts.map +1 -0
  36. package/lib/components/VehicleCard/VehicleFeature.d.ts +9 -0
  37. package/lib/components/VehicleCard/VehicleFeature.d.ts.map +1 -0
  38. package/lib/components/VehicleCard/VehicleFeature.js +22 -0
  39. package/lib/components/VehicleCard/VehicleFeature.js.map +1 -0
  40. package/lib/components/VehicleCard/types.d.ts +59 -0
  41. package/lib/components/VehicleCard/types.d.ts.map +1 -0
  42. package/lib/components/VehicleCard.d.ts +15 -0
  43. package/lib/components/VehicleCard.d.ts.map +1 -0
  44. package/lib/components/VehicleCard.js +166 -0
  45. package/lib/components/VehicleCard.js.map +1 -0
  46. package/lib/components/VehicleCardList.d.ts +14 -0
  47. package/lib/components/VehicleCardList.d.ts.map +1 -0
  48. package/lib/components/VehicleCardList.js +38 -0
  49. package/lib/components/VehicleCardList.js.map +1 -0
  50. package/lib/components/VehicleParamSearchResultContainer.d.ts +90 -0
  51. package/lib/components/VehicleParamSearchResultContainer.d.ts.map +1 -0
  52. package/lib/components/icons/LocationIcon.d.ts +7 -0
  53. package/lib/components/icons/LocationIcon.d.ts.map +1 -0
  54. package/lib/components/icons/LocationIcon.js +18 -0
  55. package/lib/components/icons/LocationIcon.js.map +1 -0
  56. package/lib/components/icons/index.d.ts +2 -0
  57. package/lib/components/icons/index.d.ts.map +1 -0
  58. package/lib/components/index.d.ts +10 -0
  59. package/lib/components/index.d.ts.map +1 -0
  60. package/lib/config/analytics-config.d.ts +59 -0
  61. package/lib/config/analytics-config.d.ts.map +1 -0
  62. package/lib/config/constants.d.ts +7 -0
  63. package/lib/config/constants.d.ts.map +1 -0
  64. package/lib/config/constants.js +6 -0
  65. package/lib/config/constants.js.map +1 -0
  66. package/lib/config/env-config.d.ts +19 -0
  67. package/lib/config/env-config.d.ts.map +1 -0
  68. package/lib/config/env-config.js +70 -0
  69. package/lib/config/env-config.js.map +1 -0
  70. package/lib/config/index.d.ts +3 -0
  71. package/lib/config/index.d.ts.map +1 -0
  72. package/lib/hooks/index.d.ts +2 -0
  73. package/lib/hooks/index.d.ts.map +1 -0
  74. package/lib/hooks/use-get-current-lat-long.d.ts +18 -0
  75. package/lib/hooks/use-get-current-lat-long.d.ts.map +1 -0
  76. package/lib/hooks/use-get-current-lat-long.js +29 -0
  77. package/lib/hooks/use-get-current-lat-long.js.map +1 -0
  78. package/lib/hooks/useWindowSize.d.ts +5 -0
  79. package/lib/hooks/useWindowSize.d.ts.map +1 -0
  80. package/lib/hooks/useWindowSize.js +20 -0
  81. package/lib/hooks/useWindowSize.js.map +1 -0
  82. package/lib/index.d.ts +4 -0
  83. package/lib/index.d.ts.map +1 -0
  84. package/lib/index.js +1 -0
  85. package/lib/index.js.map +1 -0
  86. package/lib/interfaces/travel.d.ts +6 -0
  87. package/lib/interfaces/travel.d.ts.map +1 -0
  88. package/lib/interfaces/travel.js +6 -0
  89. package/lib/interfaces/travel.js.map +1 -0
  90. package/lib/middlewares/airbnbDatasourcesMiddleware.d.ts +6 -0
  91. package/lib/middlewares/airbnbDatasourcesMiddleware.d.ts.map +1 -0
  92. package/lib/middlewares/airbnbDatasourcesMiddleware.js +121 -0
  93. package/lib/middlewares/airbnbDatasourcesMiddleware.js.map +1 -0
  94. package/lib/middlewares/bookingCarRentalMiddleware.d.ts +6 -0
  95. package/lib/middlewares/bookingCarRentalMiddleware.d.ts.map +1 -0
  96. package/lib/middlewares/bookingCarRentalMiddleware.js +109 -0
  97. package/lib/middlewares/bookingCarRentalMiddleware.js.map +1 -0
  98. package/lib/middlewares/bookingDatasourcesMiddleware.d.ts +7 -0
  99. package/lib/middlewares/bookingDatasourcesMiddleware.d.ts.map +1 -0
  100. package/lib/middlewares/bookingDatasourcesMiddleware.js +137 -0
  101. package/lib/middlewares/bookingDatasourcesMiddleware.js.map +1 -0
  102. package/lib/middlewares/datasourcesMiddleware.d.ts +6 -0
  103. package/lib/middlewares/datasourcesMiddleware.d.ts.map +1 -0
  104. package/lib/middlewares/datasourcesMiddleware.js +29 -0
  105. package/lib/middlewares/datasourcesMiddleware.js.map +1 -0
  106. package/lib/middlewares/index.d.ts +6 -0
  107. package/lib/middlewares/index.d.ts.map +1 -0
  108. package/lib/middlewares/pricelineDatasourcesMiddleware.d.ts +7 -0
  109. package/lib/middlewares/pricelineDatasourcesMiddleware.d.ts.map +1 -0
  110. package/lib/middlewares/pricelineDatasourcesMiddleware.js +95 -0
  111. package/lib/middlewares/pricelineDatasourcesMiddleware.js.map +1 -0
  112. package/lib/routes.json +1 -0
  113. package/package.json +49 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2017 CDMBase LLC.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,61 @@
1
+ import React from 'react';
2
+ interface IBaseItem {
3
+ id: string;
4
+ title: string;
5
+ types: string[];
6
+ name: string;
7
+ description?: string;
8
+ introduction?: string;
9
+ address: any;
10
+ location: string;
11
+ images: any;
12
+ thumbnailUrl?: string;
13
+ thumbnailAlt?: string;
14
+ verificationDocuments?: any;
15
+ info?: any;
16
+ user: any;
17
+ status?: any;
18
+ errors?: any;
19
+ preferences?: any;
20
+ orgName?: string;
21
+ serviceConfiguration?: any;
22
+ totalReview?: number;
23
+ totalStar?: number;
24
+ reviews?: any;
25
+ comments?: any;
26
+ userLikes?: any;
27
+ calendarEvents?: any[];
28
+ isUserLike?: boolean;
29
+ formattedPrice?: number;
30
+ timeZone: string;
31
+ createdAt: any;
32
+ updatedAt?: any;
33
+ stats?: any;
34
+ guideBookId?: string;
35
+ guestSharing?: any;
36
+ }
37
+ type CardListProps = {
38
+ items?: IBaseItem[];
39
+ setFocus: (index: number) => void;
40
+ setBlur: (index: number) => void;
41
+ handleLike: (index: number) => void;
42
+ likeBtnLoading: boolean;
43
+ categoryTypes: any[];
44
+ extraIcons?: any;
45
+ className?: string;
46
+ customCardComponent?: (props: {
47
+ item: IBaseItem;
48
+ index: number;
49
+ setFocus: () => void;
50
+ setBlur: (index: number) => void;
51
+ handleLike: (index: number) => void;
52
+ likeBtnLoading: boolean;
53
+ categoryTypes: any[];
54
+ extraIcons?: any;
55
+ authenticated: boolean;
56
+ }) => React.ReactNode;
57
+ emptyMessage?: string;
58
+ };
59
+ export declare const CardList: React.FC<CardListProps>;
60
+ export {};
61
+ //# sourceMappingURL=CardList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardList.d.ts","sourceRoot":"","sources":["../../src/components/CardList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,UAAU,SAAS;IACf,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,GAAG,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,GAAG,CAAC;IAC5B,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,GAAG,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,cAAc,CAAC,EAAE,GAAG,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,GAAG,CAAC;CACtB;AAYD,KAAK,aAAa,GAAG;IACjB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,GAAG,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,SAAS,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,IAAI,CAAC;QACrB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACjC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACpC,cAAc,EAAE,OAAO,CAAC;QACxB,aAAa,EAAE,GAAG,EAAE,CAAC;QACrB,UAAU,CAAC,EAAE,GAAG,CAAC;QACjB,aAAa,EAAE,OAAO,CAAC;KAC1B,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAuC5C,CAAC"}
@@ -0,0 +1,43 @@
1
+ import {jsx}from'react/jsx-runtime';import {useTranslation}from'react-i18next';import {isEmpty}from'lodash-es';import {isUserAuthenticated}from'@adminide-stack/user-auth0-client';const CardList = props => {
2
+ const {
3
+ setBlur,
4
+ setFocus,
5
+ items,
6
+ handleLike,
7
+ likeBtnLoading,
8
+ categoryTypes,
9
+ extraIcons,
10
+ className = '',
11
+ customCardComponent,
12
+ emptyMessage = 'No items found'
13
+ } = props;
14
+ const {
15
+ t
16
+ } = useTranslation();
17
+ const {
18
+ authenticated
19
+ } = isUserAuthenticated();
20
+ if (isEmpty(items)) {
21
+ return jsx("div", {
22
+ className: "text-base text-foreground",
23
+ children: emptyMessage
24
+ });
25
+ }
26
+ return jsx("div", {
27
+ className: `flex flex-wrap justify-evenly ${className}`,
28
+ children: items?.map((item, index) => jsx("div", {
29
+ className: "max-w-[100%] mb-4",
30
+ children: customCardComponent?.({
31
+ item,
32
+ index,
33
+ setFocus: () => setFocus(index),
34
+ setBlur,
35
+ handleLike,
36
+ likeBtnLoading,
37
+ categoryTypes,
38
+ extraIcons,
39
+ authenticated
40
+ })
41
+ }, index))
42
+ });
43
+ };export{CardList};//# sourceMappingURL=CardList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardList.js","sources":["../../src/components/CardList.tsx"],"sourcesContent":[null],"names":[],"mappings":"mLA0Ea,MAAA,QAAQ,GAA4B,KAAC,IAAS;QACjD;AAYN,IAAA;AACA,IAAA,QAAQ;AAER,IAAA,KAAW;AACP,IAAA,UAAA;IACJ,cAAC;IAED,aACS;;gBAKW,EAAK;AACL,IAAA,mBAAA;gBACA,GAAO;;;;oBAIG,EAAA;;AAEb,IAAA;AAKrB,GAAE,GAAA,mBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,29 @@
1
+ import { Splide } from '@cdmbase/react-splide';
2
+ import '@splidejs/react-splide/css';
3
+ import React from 'react';
4
+ export interface ICategoryType<TTypename, TCategory, TName> {
5
+ __typename?: TTypename;
6
+ id: string;
7
+ description: string | null;
8
+ category: TCategory;
9
+ name: TName;
10
+ icon?: string | null;
11
+ imageKey?: string | null;
12
+ thumbnailUrl?: string | null;
13
+ }
14
+ export interface ICategoriesTypeListProps<TTypename, TCategory, TName> {
15
+ isExplorerView?: boolean;
16
+ categories: ICategoryType<TTypename, TCategory, TName>[];
17
+ initialCategory: ICategoryType<TTypename, TCategory, TName>;
18
+ boxColor: (categoryId: string) => string;
19
+ iconColor: (categoryId: string) => string;
20
+ badgeTitle?: string;
21
+ extraIcons: string[];
22
+ aria_label: string;
23
+ splideRef?: React.RefObject<Splide>;
24
+ isNewBadge: (categoryId: string) => boolean;
25
+ handleSearchClick: (cateItem: string, item: any, isExplorerView?: boolean) => void;
26
+ activeCategory?: string;
27
+ }
28
+ export declare const CategoriesTypeList: <TTypename, TCategory, TName>({ boxColor, iconColor, badgeTitle, extraIcons, categories, initialCategory, aria_label, isExplorerView, splideRef, isNewBadge, handleSearchClick, activeCategory, }: ICategoriesTypeListProps<TTypename, TCategory, TName>) => import("react/jsx-runtime").JSX.Element;
29
+ //# sourceMappingURL=CategoriesTypeList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategoriesTypeList.d.ts","sourceRoot":"","sources":["../../src/components/CategoriesTypeList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA2C,MAAM,uBAAuB,CAAC;AACxF,OAAO,4BAA4B,CAAC;AACpC,OAAO,KAAoD,MAAM,OAAO,CAAC;AAKzE,MAAM,WAAW,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK;IACtD,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK;IACjE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IACzD,eAAe,EAAE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5D,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACpC,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AA2GD,eAAO,MAAM,kBAAkB,GAAI,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,qKAa7D,wBAAwB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,4CA6DvD,CAAC"}
@@ -0,0 +1,139 @@
1
+ import {jsxs,jsx}from'react/jsx-runtime';import {Splide,SplideSlide}from'@cdmbase/react-splide';import'@splidejs/react-splide/css';import React,{useCallback,useMemo,useState,useEffect}from'react';import {useTranslation}from'react-i18next';import {renderDynamicIcon}from'@admin-layout/tailwind-design-pro/lib/helpers/DynamicIcon.js';import {useWindowSize}from'../hooks/useWindowSize.js';// Helper function to merge arrays
2
+ const mergeArrays = (arr1, arr2, keyToMapIcons) => {
3
+ const iconMap = new Map(arr2.map(icon => [icon.split('.').pop(), icon]));
4
+ return arr1.filter(item => iconMap.has(item[keyToMapIcons])).map(item => ({
5
+ ...item,
6
+ icon: iconMap.get(item[keyToMapIcons])
7
+ }));
8
+ };
9
+ // Create a memoized category item component
10
+ function CategoryItemComponent({
11
+ category,
12
+ boxColor,
13
+ size,
14
+ t,
15
+ isNewBadge,
16
+ badgeTitle,
17
+ handleSearchClick,
18
+ isExplorerView,
19
+ isActive
20
+ }) {
21
+ // Prevent multiple click propagation
22
+ const handleClick = useCallback(e => {
23
+ e.preventDefault();
24
+ e.stopPropagation();
25
+ handleSearchClick(category.id, category, isExplorerView);
26
+ }, [category, handleSearchClick, isExplorerView]);
27
+ // Compute the current color values
28
+ const currentBoxColor = isActive ? boxColor(category.id) : '#4A5568';
29
+ // Determine font size based on screen width
30
+ const fontSize = useMemo(() => {
31
+ if (size.width > 1200) return '16px';
32
+ if (size.width > 768) return '15px';
33
+ if (size.width > 480) return '14px';
34
+ return '12px';
35
+ }, [size.width]);
36
+ // Determine icon size based on screen width
37
+ const iconSize = useMemo(() => ({
38
+ w: size.width > 1200 ? '2vw' : '3vw',
39
+ h: size.height > 1200 ? '2vw' : '3vw'
40
+ }), [size.width, size.height]);
41
+ return jsxs("div", {
42
+ className: `flex flex-col items-center justify-center cursor-pointer relative font-bold ${isActive ? 'text-primary' : 'text-muted-foreground'}`,
43
+ style: {
44
+ fontSize
45
+ },
46
+ onClick: handleClick,
47
+ children: [renderDynamicIcon({
48
+ name: category.icon,
49
+ style: {
50
+ iconColor: currentBoxColor,
51
+ ...iconSize
52
+ }
53
+ }), jsx("div", {
54
+ className: "text-center",
55
+ children: t(category.description)
56
+ }), isNewBadge(category.id) && jsx("div", {
57
+ className: "absolute top-0 right-0 bg-primary text-primary-foreground rounded-themed text-xs p-1",
58
+ children: badgeTitle
59
+ })]
60
+ });
61
+ }
62
+ // Use React.memo with a custom comparison function
63
+ const CategoryItem = React.memo(CategoryItemComponent, (prevProps, nextProps) => {
64
+ if (prevProps.category.id !== nextProps.category.id) return false;
65
+ if (prevProps.isActive !== nextProps.isActive) return false;
66
+ if (prevProps.boxColor(prevProps.category.id) !== nextProps.boxColor(nextProps.category.id)) return false;
67
+ return true;
68
+ });
69
+ const CategoriesTypeList = ({
70
+ boxColor,
71
+ iconColor,
72
+ badgeTitle,
73
+ extraIcons,
74
+ categories,
75
+ initialCategory,
76
+ aria_label,
77
+ isExplorerView,
78
+ splideRef,
79
+ isNewBadge,
80
+ handleSearchClick,
81
+ activeCategory
82
+ }) => {
83
+ const size = useWindowSize();
84
+ const {
85
+ t
86
+ } = useTranslation(['property-types', 'common']);
87
+ // Track the currently active category ID internally
88
+ const [activeCategoryId, setActiveCategoryId] = useState(() => activeCategory || initialCategory.id);
89
+ // Update internal state when activeCategory prop changes
90
+ useEffect(() => {
91
+ setActiveCategoryId(activeCategory || initialCategory.id);
92
+ }, [activeCategory, initialCategory.id]);
93
+ // Memoize the merged array
94
+ const mappedArr = useMemo(() => mergeArrays([initialCategory, ...categories], extraIcons, 'icon'), [initialCategory, categories, extraIcons]);
95
+ // Splide options
96
+ const splideOptions = useMemo(() => ({
97
+ type: 'slide',
98
+ drag: 'free',
99
+ perPage: 9,
100
+ perMove: 1,
101
+ wheel: true,
102
+ releaseWheel: true,
103
+ pagination: false,
104
+ speed: 500,
105
+ wheelSleep: 300,
106
+ breakpoints: {
107
+ 1024: {
108
+ perPage: 9
109
+ },
110
+ 600: {
111
+ perPage: 5
112
+ },
113
+ 480: {
114
+ perPage: 3
115
+ }
116
+ }
117
+ }), []);
118
+ return jsx("div", {
119
+ className: "w-full relative",
120
+ children: jsx(Splide, {
121
+ ref: splideRef,
122
+ "aria-label": aria_label,
123
+ options: splideOptions,
124
+ children: mappedArr.map(d => jsx(SplideSlide, {
125
+ children: jsx(CategoryItem, {
126
+ category: d,
127
+ boxColor: boxColor,
128
+ size: size,
129
+ t: t,
130
+ isNewBadge: isNewBadge,
131
+ badgeTitle: badgeTitle,
132
+ handleSearchClick: handleSearchClick,
133
+ isExplorerView: isExplorerView,
134
+ isActive: d.id === activeCategoryId
135
+ }, `category_${d.id}`)
136
+ }, `button_${d.id}`))
137
+ })
138
+ });
139
+ };export{CategoriesTypeList};//# sourceMappingURL=CategoriesTypeList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategoriesTypeList.js","sources":["../../src/components/CategoriesTypeList.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import { ReactElement } from 'react';
2
+ export interface IProperty {
3
+ id: string;
4
+ title: string;
5
+ types: string[];
6
+ name: string;
7
+ description?: string;
8
+ introduction?: string;
9
+ address: any;
10
+ location: string;
11
+ images: any;
12
+ thumbnailUrl?: string;
13
+ thumbnailAlt?: string;
14
+ verificationDocuments?: any;
15
+ info?: any;
16
+ user: any;
17
+ status?: any;
18
+ errors?: any;
19
+ preferences?: any;
20
+ orgName?: string;
21
+ serviceConfiguration?: any;
22
+ totalReview?: number;
23
+ totalStar?: number;
24
+ reviews?: any;
25
+ comments?: any;
26
+ userLikes?: any;
27
+ calendarEvents?: any[];
28
+ isUserLike?: boolean;
29
+ formattedPrice?: number;
30
+ timeZone: string;
31
+ createdAt: any;
32
+ updatedAt?: any;
33
+ stats?: any;
34
+ guideBookId?: string;
35
+ guestSharing?: any;
36
+ }
37
+ export interface IAirbnbProperty {
38
+ id: string;
39
+ title: string;
40
+ types: string[];
41
+ name: string;
42
+ description?: string;
43
+ introduction?: string;
44
+ address: any;
45
+ location: string;
46
+ images: any;
47
+ thumbnailUrl?: string;
48
+ thumbnailAlt?: string;
49
+ verificationDocuments?: any;
50
+ info?: any;
51
+ user: any;
52
+ status?: any;
53
+ errors?: any;
54
+ preferences?: any;
55
+ orgName?: string;
56
+ serviceConfiguration?: any;
57
+ totalReview?: number;
58
+ totalStar?: number;
59
+ reviews?: any;
60
+ comments?: any;
61
+ userLikes?: any;
62
+ calendarEvents?: any[];
63
+ isUserLike?: boolean;
64
+ formattedPrice?: number;
65
+ timeZone: string;
66
+ createdAt: any;
67
+ updatedAt?: any;
68
+ stats?: any;
69
+ guideBookId?: string;
70
+ guestSharing?: any;
71
+ }
72
+ interface ILazyLoadingGoogleMarkerProps {
73
+ property: IProperty | IAirbnbProperty;
74
+ isHighlighted: boolean;
75
+ showPrices: boolean;
76
+ isActiveMarker: boolean;
77
+ propertyTypes: any;
78
+ onMarkerClick: () => void;
79
+ onInfoBoxClose: () => void;
80
+ }
81
+ export declare const LazyLoadingGoogleMarker: (props: ILazyLoadingGoogleMarkerProps) => ReactElement;
82
+ export {};
83
+ //# sourceMappingURL=LazyLoadingGoogleMarker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LazyLoadingGoogleMarker.d.ts","sourceRoot":"","sources":["../../src/components/LazyLoadingGoogleMarker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import {jsx,jsxs}from'react/jsx-runtime';import React,{useState,useEffect}from'react';import {PropertyCardOnMap}from'./PropertyCardOnMap.js';import ReactDOMServer from'react-dom/server';import*as path from'@pubngo-stack/icons/lib/rifi-maps/index.js';import*as airbnbPath from'@pubngo-stack/icons/lib/airbnb/airbnbIcons-maps/index.js';import {AdvancedMarker}from'@vis.gl/react-google-maps';const getSvgMapIcon = (types, propertyTypes) => {
2
+ if (!types || types.length === 0) {
3
+ return 'data:image/svg+xml;charset=UTF-8,';
4
+ }
5
+ const icon = propertyTypes.find(item => item.id === types[0])?.icon || '';
6
+ return types.length > 1 ? `${icon}MultiType` : icon;
7
+ };
8
+ const pricesMarker = (price, isHighlighted) => {
9
+ const backgroundColor = isHighlighted ? 'rgb(0, 0, 0)' : 'rgb(255,255,255)';
10
+ const textColor = isHighlighted ? 'rgb(255, 255, 255)' : 'rgb(0, 0, 0)';
11
+ const borderRadius = isHighlighted ? '20' : '15';
12
+ const svgString = `<svg width="84" height="55" viewBox="0 0 84 55" fill="none" xmlns="http://www.w3.org/2000/svg">
13
+ <g filter="url(#filter0_dd_7163_1572)">
14
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M25 1C13.9543 1 5 9.95431 5 21C5 32.0457 13.9543 41 25 41H39.2222L42 46L44.7778 41H59C70.0457 41 79 32.0457 79 21C79 9.95431 70.0457 1 59 1H25Z" fill="${backgroundColor}"/>
15
+ </g>
16
+
17
+
18
+ <text x="42" y="26" font-family="Arial" font-size="14" text-anchor="middle" font-weight="bold" fill="${textColor}">${price || ''}</text>
19
+ <defs>
20
+ <filter id="filter0_dd_7163_1572" x="0" y="0" width="84" height="55" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
21
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
22
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
23
+ <feMorphology radius="${borderRadius}" operator="erode" in="SourceAlpha" result="effect1_dropShadow_7163_1572"/>
24
+ <feOffset dy="2"/>
25
+ <feGaussianBlur stdDeviation="2"/>
26
+ <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06 0"/>
27
+ <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_7163_1572"/>
28
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
29
+ <feMorphology radius="1" operator="erode" in="SourceAlpha" result="effect2_dropShadow_7163_1572"/>
30
+ <feOffset dy="4"/>
31
+ <feGaussianBlur stdDeviation="3"/>
32
+ <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/>
33
+ <feBlend mode="normal" in2="effect1_dropShadow_7163_1572" result="effect2_dropShadow_7163_1572"/>
34
+ <feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow_7163_1572" result="shape"/>
35
+ </filter>
36
+ </defs>
37
+ </svg>`;
38
+ return 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svgString);
39
+ };
40
+ const svgToMarkerIcon = async (types, isHighlighted, propertyTypes) => {
41
+ const resultantIcon = getSvgMapIcon(types, propertyTypes);
42
+ let iconPath = resultantIcon.toLowerCase().startsWith('airbnb') ? isHighlighted ? airbnbPath[`${resultantIcon}Dark`] : airbnbPath[`${resultantIcon}Light`] : isHighlighted ? path[`${resultantIcon}Dark`] : path[`${resultantIcon}Light`];
43
+ // New logic to handle the case when iconPath is not found
44
+ if (!iconPath) {
45
+ iconPath = isHighlighted ? airbnbPath['AirbnbApartmentDark'] : airbnbPath['AirbnbApartmentLight'];
46
+ }
47
+ if (typeof iconPath !== 'function') return 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(iconPath);
48
+ const svg = ReactDOMServer.renderToString(iconPath({
49
+ width: '50px',
50
+ height: '50px'
51
+ }));
52
+ return 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg);
53
+ };
54
+ const getMapMarkerIcons = async (room, showPrices, isHighlighted, propertyTypes) => {
55
+ return showPrices ? pricesMarker(room?.preferences?.property?.pricing?.price?.price_breakdown?.details?.summary?.totalBeforeDiscount, isHighlighted) : await svgToMarkerIcon(room.types, isHighlighted, propertyTypes);
56
+ };
57
+ const MarkerImage = React.memo(({
58
+ src,
59
+ showPrices
60
+ }) => jsx("img", {
61
+ src: src,
62
+ alt: "Property Marker",
63
+ className: showPrices ? 'w-[84px] h-[40px]' : 'w-[90px] h-[60px]'
64
+ }));
65
+ const LazyLoadingGoogleMarker = props => {
66
+ const {
67
+ property,
68
+ isHighlighted,
69
+ showPrices,
70
+ isActiveMarker,
71
+ onInfoBoxClose,
72
+ onMarkerClick,
73
+ propertyTypes
74
+ } = props;
75
+ const [mapIcon, setMapIcon] = useState('');
76
+ useEffect(() => {
77
+ (async () => {
78
+ const icon = await getMapMarkerIcons(property, showPrices, isHighlighted, propertyTypes);
79
+ setMapIcon(icon);
80
+ })();
81
+ }, [isHighlighted, showPrices]);
82
+ if (!property) {
83
+ return;
84
+ }
85
+ return jsx(AdvancedMarker, {
86
+ position: {
87
+ lat: property.address.latitude_around,
88
+ lng: property.address.longitude_around
89
+ },
90
+ title: property.name,
91
+ onClick: onMarkerClick,
92
+ zIndex: isHighlighted ? 999 : 1,
93
+ children: jsxs("div", {
94
+ className: "relative cursor-pointer transform -translate-x-1/2 -translate-y-1/2",
95
+ children: [mapIcon && jsx(MarkerImage, {
96
+ src: mapIcon,
97
+ showPrices: showPrices
98
+ }), isActiveMarker && jsx("div", {
99
+ className: "absolute bottom-0 left-1/2 transform -translate-x-1/2 bg-white p-2.5 rounded-2xl z-[1000] w-[300px] shadow-[0_12px_24px_0_rgba(0,0,0,0.1),_0_2px_8px_0_rgba(0,0,0,0.05)]",
100
+ children: jsx(PropertyCardOnMap, {
101
+ room: property,
102
+ isSaved: false
103
+ })
104
+ })]
105
+ })
106
+ });
107
+ };export{LazyLoadingGoogleMarker};//# sourceMappingURL=LazyLoadingGoogleMarker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LazyLoadingGoogleMarker.js","sources":["../../src/components/LazyLoadingGoogleMarker.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const Pagination: ({ currentPage, totalPages, onPageChange }: {
2
+ currentPage: any;
3
+ totalPages: any;
4
+ onPageChange: any;
5
+ }) => import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=Pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../src/components/Pagination.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,GAAI;;;;CAAyC,4CAiEnE,CAAC"}
@@ -0,0 +1,56 @@
1
+ import {jsx}from'react/jsx-runtime';import {TailwindUiButton}from'@admin-layout/tailwind-ui';const Pagination = ({
2
+ currentPage,
3
+ totalPages,
4
+ onPageChange
5
+ }) => {
6
+ const renderPageNumbers = () => {
7
+ const pageNumbers = [];
8
+ const maxPagesToShow = 4; // Number of pages to show in the middle
9
+ // Helper function to add page button
10
+ const addPageButton = pageNum => jsx(TailwindUiButton, {
11
+ variant: currentPage === pageNum ? 'primary' : 'outline',
12
+ size: "small",
13
+ onClick: () => onPageChange(pageNum),
14
+ className: `mx-2 ${currentPage === pageNum ? 'themed-button' : 'border-border text-foreground hover:bg-muted'}`,
15
+ children: pageNum
16
+ }, pageNum);
17
+ // Add first page
18
+ pageNumbers.push(addPageButton(1));
19
+ // Add ellipsis if needed
20
+ if (currentPage > maxPagesToShow) {
21
+ pageNumbers.push(jsx(TailwindUiButton, {
22
+ variant: "ghost",
23
+ size: "small",
24
+ disabled: true,
25
+ className: "mx-2 text-muted-foreground",
26
+ children: "..."
27
+ }, "ellipsis-start"));
28
+ }
29
+ // Calculate start and end page numbers
30
+ const startPage = Math.max(2, currentPage - 1);
31
+ const endPage = Math.min(totalPages - 1, currentPage + 2);
32
+ // Add middle page numbers
33
+ for (let i = startPage; i <= endPage; i++) {
34
+ pageNumbers.push(addPageButton(i));
35
+ }
36
+ // Add ellipsis if needed
37
+ if (endPage < totalPages - 1) {
38
+ pageNumbers.push(jsx(TailwindUiButton, {
39
+ variant: "ghost",
40
+ size: "small",
41
+ disabled: true,
42
+ className: "mx-2 text-muted-foreground",
43
+ children: "..."
44
+ }, "ellipsis-end"));
45
+ }
46
+ // Add last page
47
+ if (totalPages > 1) {
48
+ pageNumbers.push(addPageButton(totalPages));
49
+ }
50
+ return pageNumbers;
51
+ };
52
+ return jsx("div", {
53
+ className: "flex justify-center items-center mt-8",
54
+ children: renderPageNumbers()
55
+ });
56
+ };export{Pagination};//# sourceMappingURL=Pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pagination.js","sources":["../../src/components/Pagination.tsx"],"sourcesContent":[null],"names":["_jsx","Button"],"mappings":"6FAGO,MAAM,UAAU,GAAG,CAAC;aACjB;YACI;AACN,EAAA;;AAGA,EAAA,MAAA,iBAAmB,GAAA,MAAI;UAcN,WAAA,GAAA,EAAA;UACN,cAAK,GAAC,CAAA,CAAA;;AAGjB,IAAA,MAAA,aAAe,GAAG,OAAc,IAAAA,GAAA,CAAEC,gBAAC,EAAA;aACpB,EAAA,gBACP,UAEI,SAAA,GAAQ,SACR;UAOX,EAAA,OAAA;aAEsC,EAAA,MAAA,YAAA,CAAA,OAAA,CAAA;AACvC,MAAA,SAAe,EAAA,CAAA,KAAA,EAAA,WAAa,KAAa,OAAA,GAAA,eAAM,GAAA,8CAAA,CAAA,CAAA;AAC/C,MAAA,QAAM,EAAO;cAEa,CAAA;AAC1B;eACe,CAAA,IAAA,CAAA,aAAM,CAAA,CAAA,CAAA,CAAA;;QAGrB,WAAyB,GAAA,cAAA,EAAA;AACzB,MAAA,gBAAc,CAAAD,GAAA,CAAAC,gBAAa,EAAC;eACb,EAAA,OAAC;QAKhB,IAAC,EAAA,OAAA;QAED,QAAgB,EAAA,IAAA;AAChB,QAAA,SAAc,EAAA,4BAAO;gBACN,EAAA;SACd,gBAAA,CAAA,CAAA;AAED;AACJ;IAEA,MAAO,SAAA,GAAA,YAAc,WAAC,GAAA,CAAA,CAAA;AAC1B,IAAE,MAAA,OAAA,GAAA,IAAA,CAAA,GAAA,CAAA,UAAA,GAAA,CAAA,EAAA,WAAA,GAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}