@tapcart/mobile-components 0.4.6 → 0.4.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.
- package/dist/components/hooks/use-infinite-scroll.d.ts +3 -1
- package/dist/components/hooks/use-infinite-scroll.d.ts.map +1 -1
- package/dist/components/hooks/use-infinite-scroll.js +43 -72
- package/dist/components/ui/drawer.d.ts.map +1 -1
- package/dist/components/ui/drawer.js +2 -1
- package/dist/components/ui/product-card.d.ts.map +1 -1
- package/dist/components/ui/product-card.js +8 -6
- package/dist/components/ui/skeleton.d.ts +1 -1
- package/dist/components/ui/skeleton.d.ts.map +1 -1
- package/dist/components/ui/skeleton.js +6 -5
- package/dist/components/ui/slider.js +1 -1
- package/dist/styles.css +192 -622
- package/package.json +16 -16
- package/dist/components/ui/input.d.ts +0 -17
- package/dist/components/ui/input.d.ts.map +0 -1
- package/dist/components/ui/input.js +0 -35
- package/dist/components/ui/product-grid.d.ts +0 -15
- package/dist/components/ui/product-grid.d.ts.map +0 -1
- package/dist/components/ui/product-grid.js +0 -22
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ReadonlyURLSearchParams } from "next/navigation";
|
|
1
2
|
interface Product {
|
|
2
3
|
handle: string;
|
|
3
4
|
}
|
|
@@ -23,7 +24,8 @@ interface UseInfiniteScrollReturn {
|
|
|
23
24
|
isLoading: boolean;
|
|
24
25
|
isValidating: boolean;
|
|
25
26
|
}
|
|
26
|
-
declare const
|
|
27
|
+
export declare const formatSearchParamsAsNextQueryVariables: (searchParams: ReadonlyURLSearchParams) => {};
|
|
28
|
+
declare const constructURL: (apiURL: string) => string;
|
|
27
29
|
declare const useInfiniteScroll: ({ initialData, queryVariables: queryVariableProps, }: UseInfiniteScrollProps) => UseInfiniteScrollReturn;
|
|
28
30
|
export { useInfiniteScroll, constructURL };
|
|
29
31
|
//# sourceMappingURL=use-infinite-scroll.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-infinite-scroll.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-infinite-scroll.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-infinite-scroll.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-infinite-scroll.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAmB,MAAM,iBAAiB,CAAA;AAE1E,UAAU,OAAO;IACf,MAAM,EAAE,MAAM,CAAA;CAEf;AAED,UAAU,QAAQ;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,GAAG,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf;AAOD,UAAU,sBAAsB;IAC9B,WAAW,EAAE,QAAQ,CAAA;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACpC;AAED,UAAU,uBAAuB;IAC/B,IAAI,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAA;IAC5B,KAAK,EAAE,GAAG,CAAA;IACV,oBAAoB,EAAE,OAAO,CAAA;IAC7B,aAAa,EAAE,OAAO,GAAG,SAAS,CAAA;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,OAAO,CAAA;IACtB,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAA;IAChD,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,eAAO,MAAM,sCAAsC,iBACnC,uBAAuB,OAsBtC,CAAA;AAED,QAAA,MAAM,YAAY,WAAY,MAAM,WAGnC,CAAA;AAED,QAAA,MAAM,iBAAiB,yDAGpB,sBAAsB,KAAG,uBA4F3B,CAAA;AAED,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -3,94 +3,65 @@ import { useCallback, useEffect, useMemo } from "react";
|
|
|
3
3
|
import useSWRInfinite from "swr/infinite";
|
|
4
4
|
import { useInView } from "react-intersection-observer";
|
|
5
5
|
import { useSearchParams } from "next/navigation";
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
filtersArray === null || filtersArray === void 0 ? void 0 : filtersArray.forEach((filter) => {
|
|
18
|
-
selectedTags.set(filter, true);
|
|
19
|
-
});
|
|
20
|
-
const matchingFilters = (filtersList, selectedTags) => {
|
|
21
|
-
return filtersList.filter((filter) => {
|
|
22
|
-
if (!(filter === null || filter === void 0 ? void 0 : filter.tag))
|
|
23
|
-
return false;
|
|
24
|
-
const parsedFilter = filter.tag;
|
|
25
|
-
return selectedTags.has(parsedFilter);
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
const searchFilters = (filtersData === null || filtersData === void 0 ? void 0 : filtersData.map((category) => {
|
|
29
|
-
const filterList = category.filters;
|
|
30
|
-
const matchingFiltersList = matchingFilters(filterList, selectedTags);
|
|
31
|
-
return Object.assign(Object.assign({}, category), { filters: matchingFiltersList });
|
|
32
|
-
})) || [];
|
|
33
|
-
return {
|
|
34
|
-
searchFilters,
|
|
35
|
-
filtersData,
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
const constructURL = (params, apiURL) => {
|
|
39
|
-
const url = new URL(apiURL);
|
|
40
|
-
Object.keys(params).forEach((key) => {
|
|
41
|
-
const value = params[key];
|
|
42
|
-
if (value !== undefined && value !== null) {
|
|
43
|
-
if (typeof value === "string") {
|
|
44
|
-
url.searchParams.append(key, value);
|
|
6
|
+
export const formatSearchParamsAsNextQueryVariables = (searchParams) => {
|
|
7
|
+
const formattedParams = {};
|
|
8
|
+
if (!searchParams)
|
|
9
|
+
return formattedParams;
|
|
10
|
+
searchParams.forEach((value, key) => {
|
|
11
|
+
//@ts-expect-error
|
|
12
|
+
if (formattedParams[key]) {
|
|
13
|
+
//@ts-expect-error
|
|
14
|
+
if (Array.isArray(formattedParams[key])) {
|
|
15
|
+
//@ts-expect-error
|
|
16
|
+
formattedParams[key].push(value);
|
|
45
17
|
}
|
|
46
18
|
else {
|
|
47
|
-
|
|
19
|
+
//@ts-expect-error
|
|
20
|
+
formattedParams[key] = [formattedParams[key], value];
|
|
48
21
|
}
|
|
49
22
|
}
|
|
23
|
+
else {
|
|
24
|
+
//@ts-expect-error
|
|
25
|
+
formattedParams[key] = value;
|
|
26
|
+
}
|
|
50
27
|
});
|
|
51
|
-
return
|
|
28
|
+
return formattedParams;
|
|
52
29
|
};
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return constructURL(queryVariables, apiURL);
|
|
57
|
-
if (!previousPageData || !((_a = previousPageData.pageData) === null || _a === void 0 ? void 0 : _a.cursorBlob))
|
|
58
|
-
return null;
|
|
59
|
-
return constructURL(Object.assign(Object.assign({}, queryVariables), { cursorBlob: previousPageData.pageData.cursorBlob }), apiURL);
|
|
30
|
+
const constructURL = (apiURL) => {
|
|
31
|
+
const url = new URL(apiURL);
|
|
32
|
+
return url.toString();
|
|
60
33
|
};
|
|
61
34
|
const useInfiniteScroll = ({ initialData, queryVariables: queryVariableProps, }) => {
|
|
62
|
-
var _a, _b, _c, _d;
|
|
35
|
+
var _a, _b, _c, _d, _e;
|
|
63
36
|
const searchParams = useSearchParams();
|
|
64
|
-
const sortStateFromParam = useCallback(() => {
|
|
65
|
-
return (searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("sort"))
|
|
66
|
-
? parseSort(searchParams.get("sort"))
|
|
67
|
-
: // we need to default to the sort option from the query variables so that the initial sort is correct
|
|
68
|
-
queryVariableProps.sortOption;
|
|
69
|
-
}, [queryVariableProps.sortOption, searchParams]);
|
|
70
|
-
const selectedFilters = (searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("filters")) || "[]";
|
|
71
|
-
const queryVariables = useMemo(() => {
|
|
72
|
-
return Object.assign(Object.assign({}, queryVariableProps), { sortOption: sortStateFromParam(), filterCategories: reconcileFilters({
|
|
73
|
-
selectedFilters,
|
|
74
|
-
filtersData: initialData.filtersData,
|
|
75
|
-
}).searchFilters });
|
|
76
|
-
}, [
|
|
77
|
-
initialData.filtersData,
|
|
78
|
-
queryVariableProps,
|
|
79
|
-
selectedFilters,
|
|
80
|
-
sortStateFromParam,
|
|
81
|
-
]);
|
|
82
37
|
const { ref, inView } = useInView({ rootMargin: "600px" }); // controls how early the next page loads
|
|
83
|
-
const
|
|
84
|
-
|
|
38
|
+
const queryVariables = useMemo(() => {
|
|
39
|
+
const formattedParams = formatSearchParamsAsNextQueryVariables(searchParams);
|
|
40
|
+
return Object.assign(Object.assign({}, queryVariableProps), { searchParams: formattedParams });
|
|
41
|
+
}, [queryVariableProps, searchParams]);
|
|
42
|
+
const getKey = (pageIndex, previousPageData, queryVariables) => {
|
|
43
|
+
var _a;
|
|
44
|
+
if (pageIndex === 0) {
|
|
45
|
+
return Object.assign({}, queryVariables);
|
|
46
|
+
}
|
|
47
|
+
if (!previousPageData || !((_a = previousPageData.pageData) === null || _a === void 0 ? void 0 : _a.cursorBlob))
|
|
48
|
+
return null;
|
|
49
|
+
return Object.assign(Object.assign({}, queryVariables), { cursorBlob: previousPageData.pageData.cursorBlob });
|
|
50
|
+
};
|
|
51
|
+
const fetcher = (body) => fetch(constructURL(initialData.apiURL), {
|
|
52
|
+
method: "POST",
|
|
53
|
+
body: JSON.stringify(body),
|
|
54
|
+
}).then((res) => res.json());
|
|
55
|
+
const { data, error, size, setSize, isLoading, isValidating, } = useSWRInfinite((pageIndex, previousPageData) => getKey(pageIndex, previousPageData, queryVariables), fetcher, {
|
|
85
56
|
revalidateFirstPage: false,
|
|
86
57
|
initialSize: 1,
|
|
87
58
|
});
|
|
88
59
|
const isLoadingInitialData = !data && !error;
|
|
89
60
|
const isLoadingMore = isLoadingInitialData ||
|
|
90
61
|
(size > 0 && data && typeof data[size - 1] === "undefined");
|
|
91
|
-
const isEmpty = ((_b = (_a = data === null || data === void 0 ? void 0 : data[0]) === null || _a === void 0 ? void 0 : _a.products) === null || _b === void 0 ? void 0 : _b.length) === 0;
|
|
62
|
+
const isEmpty = ((_c = (_b = (_a = data === null || data === void 0 ? void 0 : data[0]) === null || _a === void 0 ? void 0 : _a.products) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) === 0;
|
|
92
63
|
const isEndPointer = data
|
|
93
|
-
? !((
|
|
64
|
+
? !((_e = (_d = data[data.length - 1]) === null || _d === void 0 ? void 0 : _d.pageData) === null || _e === void 0 ? void 0 : _e.cursorBlob)
|
|
94
65
|
: true;
|
|
95
66
|
const isReachingEnd = isEmpty || isEndPointer;
|
|
96
67
|
const isRefreshing = isValidating && data && data.length === size;
|
|
@@ -113,7 +84,7 @@ const useInfiniteScroll = ({ initialData, queryVariables: queryVariableProps, })
|
|
|
113
84
|
isReachingEnd,
|
|
114
85
|
ref,
|
|
115
86
|
products: data ? data === null || data === void 0 ? void 0 : data.flatMap((page) => page === null || page === void 0 ? void 0 : page.products) : [],
|
|
116
|
-
isLoading:
|
|
87
|
+
isLoading: isLoading,
|
|
117
88
|
isValidating,
|
|
118
89
|
};
|
|
119
90
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../../components/ui/drawer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,MAAM,CAAA;AAIhD,QAAA,MAAM,aAAa,+HAA0B,CAAA;AAE7C,QAAA,MAAM,YAAY,8DAAyB,CAAA;AAE3C,QAAA,MAAM,WAAW,6HAAwB,CAAA;AAEzC,KAAK,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;AAEpE,QAAA,MAAM,MAAM;0CAAyC,WAAW;;CAE/D,CAAA;AAGD,QAAA,MAAM,aAAa;;
|
|
1
|
+
{"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../../components/ui/drawer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,MAAM,CAAA;AAIhD,QAAA,MAAM,aAAa,+HAA0B,CAAA;AAE7C,QAAA,MAAM,YAAY,8DAAyB,CAAA;AAE3C,QAAA,MAAM,WAAW,6HAAwB,CAAA;AAEzC,KAAK,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;AAEpE,QAAA,MAAM,MAAM;0CAAyC,WAAW;;CAE/D,CAAA;AAGD,QAAA,MAAM,aAAa;;wCAejB,CAAA;AAGF,QAAA,MAAM,iBAAiB;;;;;;wCA0CtB,CAAA;AA0BD,QAAA,MAAM,YAAY;8BAGf,MAAM,cAAc,CAAC,cAAc,CAAC;;CAQtC,CAAA;AAGD,QAAA,MAAM,iBAAiB,+LASrB,CAAA;AAGF,KAAK,iBAAiB,GAAG;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;CACjD,CAAA;AAED,QAAA,MAAM,YAAY,0DAKf,iBAAiB,4CAoBnB,CAAA;AAED,QAAA,MAAM,aAAa;cAA8B,MAAM,SAAS;6CAE/D,CAAA;AAED,OAAO,EACL,MAAM,EACN,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,YAAY,GACb,CAAA"}
|
|
@@ -25,7 +25,8 @@ const Drawer = (_a) => {
|
|
|
25
25
|
Drawer.displayName = "Drawer";
|
|
26
26
|
const DrawerOverlay = React.forwardRef((_a, ref) => {
|
|
27
27
|
var { className, backdropHexColor = "#000000" } = _a, props = __rest(_a, ["className", "backdropHexColor"]);
|
|
28
|
-
|
|
28
|
+
const style = { backgroundColor: `${backdropHexColor}CC` };
|
|
29
|
+
return (_jsx(DrawerPrimitive.Overlay, Object.assign({ style: style, ref: ref, className: cn(`fixed inset-0 z-50`, className) }, props)));
|
|
29
30
|
});
|
|
30
31
|
DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
|
|
31
32
|
const DrawerContentBase = React.forwardRef((_a, ref) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-card.d.ts","sourceRoot":"","sources":["../../../components/ui/product-card.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"product-card.d.ts","sourceRoot":"","sources":["../../../components/ui/product-card.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAG1C,KAAK,MAAM,GAAG;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE;QACb,OAAO,EAAE,OAAO,CAAA;QAChB,YAAY,EAAE,MAAM,CAAA;QACpB,iBAAiB,EAAE,OAAO,CAAA;KAC3B,CAAA;IACD,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,OAAO,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;QAChB,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAA;KAClD,CAAA;IACD,YAAY,CAAC,EAAE;QACb,OAAO,EAAE,OAAO,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,OAAO,CAAA;QAClB,aAAa,EAAE,MAAM,CAAA;QACrB,QAAQ,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,OAAO,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,OAAO,CAAA;QAClB,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,aAAa,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,UAAU,EACN,UAAU,GACV,WAAW,GACX,aAAa,GACb,cAAc,GACd,sBAAsB,CAAA;QAC1B,cAAc,EAAE,OAAO,CAAA;QACvB,YAAY,EAAE,MAAM,CAAA;QACpB,IAAI,EAAE;YACJ,IAAI,EAAE,UAAU,CAAA;YAChB,GAAG,EAAE,QAAQ,CAAA;YACb,OAAO,CAAC,EAAE,MAAM,CAAA;SACjB,CAAA;KACF,CAAA;CACF,CAAA;AAED,KAAK,SAAS,GAAG;IACf,kBAAkB,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;IAC/C,YAAY,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;IAC7C,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,CAAA;AAMD,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;IACD,gBAAgB,EAAE;QAChB,GAAG,EAAE;YACH,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;YACtB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;YACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;SACzB,CAAA;KACF,CAAA;IACD,KAAK,EAAE;QACL,aAAa,EAAE;YACb,WAAW,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;YAClC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAA;SACxB,CAAA;KACF,CAAA;CACF,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,CAChB,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAC1C,OAAO,EAAE,OAAO,KACb,IAAI,CAAA;IACT,UAAU,CAAC,EAAE,CACX,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAC1C,OAAO,EAAE,OAAO,KACb,IAAI,CAAA;IACT,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AA8HD,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAoU3C,CAAA;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -134,7 +134,7 @@ const productCardFavoriteVariants = cva("absolute ", {
|
|
|
134
134
|
},
|
|
135
135
|
});
|
|
136
136
|
const ProductCard = ({ config, tapcartData, product, isLoading, favorited, onFavoriteClick, onQuickAdd, openProduct, className, }) => {
|
|
137
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17
|
|
137
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17;
|
|
138
138
|
const { variants, images, title, tags } = product;
|
|
139
139
|
// Select the variant that has the lowest price that is available or just the lowest price if none are available
|
|
140
140
|
let searchVariants = variants.filter((variant) => variant.available);
|
|
@@ -232,15 +232,17 @@ const ProductCard = ({ config, tapcartData, product, isLoading, favorited, onFav
|
|
|
232
232
|
"text-right": ((_2 = config.productTitle) === null || _2 === void 0 ? void 0 : _2.textAlignment) === "right",
|
|
233
233
|
}, {
|
|
234
234
|
"text-center": ((_3 = config.productTitle) === null || _3 === void 0 ? void 0 : _3.textAlignment) === "center",
|
|
235
|
-
}, {
|
|
235
|
+
}, {
|
|
236
|
+
"line-clamp-2 whitespace-normal overflow-hidden text-ellipsis": (_4 = config.productTitle) === null || _4 === void 0 ? void 0 : _4.wrapText,
|
|
237
|
+
}, "text-textColors-productTitle"), style: { fontSize: (_5 = config.productTitle) === null || _5 === void 0 ? void 0 : _5.fontSize } }, { children: title })) }))), _jsxs("div", Object.assign({ className: cn("flex flex-row w-full gap-2 mt-1 justify-end", { "justify-start": ((_6 = config.price) === null || _6 === void 0 ? void 0 : _6.textAlignment) === "left" }, { "justify-end": ((_7 = config.price) === null || _7 === void 0 ? void 0 : _7.textAlignment) === "right" }, { "justify-center": ((_8 = config.price) === null || _8 === void 0 ? void 0 : _8.textAlignment) === "center" }) }, { children: [((_9 = config.price) === null || _9 === void 0 ? void 0 : _9.enabled) && (_jsx(Price, { price: parseFloat(variant.price.amount), isSale: !!variant.compareAtPrice &&
|
|
236
238
|
variant.compareAtPrice &&
|
|
237
|
-
parseFloat((
|
|
239
|
+
parseFloat((_10 = variant.compareAtPrice) === null || _10 === void 0 ? void 0 : _10.amount) >
|
|
238
240
|
parseFloat(variant.price.amount), compareAtPrice: variant.compareAtPrice &&
|
|
239
|
-
parseFloat((
|
|
241
|
+
parseFloat((_11 = variant.compareAtPrice) === null || _11 === void 0 ? void 0 : _11.amount), currency: tapcartData.currency.code, locale: tapcartData.currency.locale, fontSize: (_12 = config.price) === null || _12 === void 0 ? void 0 : _12.fontSize })), ((_13 = config.favoritesIcon) === null || _13 === void 0 ? void 0 : _13.enabled) &&
|
|
240
242
|
config.favoritesIcon.layoutType === "below-image-on-right" && (_jsx("div", Object.assign({ className: "w-8 h-8 flex items-center justify-center" }, { children: _jsx(Favorite, { selected: favorited, onClick: (e) => {
|
|
241
243
|
onFavoriteClick === null || onFavoriteClick === void 0 ? void 0 : onFavoriteClick(e, product);
|
|
242
|
-
}, size: "small", icon: ((
|
|
243
|
-
? (
|
|
244
|
+
}, size: "small", icon: ((_15 = (_14 = config.favoritesIcon) === null || _14 === void 0 ? void 0 : _14.icon) === null || _15 === void 0 ? void 0 : _15.type) === "internal"
|
|
245
|
+
? (_17 = (_16 = config.favoritesIcon) === null || _16 === void 0 ? void 0 : _16.icon) === null || _17 === void 0 ? void 0 : _17.url
|
|
244
246
|
: undefined }) })))] }))] }))] })) })));
|
|
245
247
|
};
|
|
246
248
|
export { ProductCard };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
declare const skeletonVariants: (props?: ({
|
|
4
|
-
variant?: "
|
|
4
|
+
variant?: "circle" | "line" | "rectangular" | null | undefined;
|
|
5
5
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
6
6
|
export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof skeletonVariants> {
|
|
7
7
|
height?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../../components/ui/skeleton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGjE,QAAA,MAAM,gBAAgB;;mFAYrB,CAAA;AAED,MAAM,WAAW,aACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,YAAY,CAAC,OAAO,gBAAgB,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,OAAO,EACP,MAAM,EACN,KAAK,EACL,YAAgB,EAChB,GAAG,KAAK,EACT,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../../components/ui/skeleton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGjE,QAAA,MAAM,gBAAgB;;mFAYrB,CAAA;AAED,MAAM,WAAW,aACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,YAAY,CAAC,OAAO,gBAAgB,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,OAAO,EACP,MAAM,EACN,KAAK,EACL,YAAgB,EAChB,GAAG,KAAK,EACT,EAAE,aAAa,2CAaf;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
|
@@ -24,10 +24,11 @@ const skeletonVariants = cva("animate-pulse flex bg-stateColors-skeleton rounded
|
|
|
24
24
|
});
|
|
25
25
|
function Skeleton(_a) {
|
|
26
26
|
var { className, variant, height, width, borderRadius = 4 } = _a, props = __rest(_a, ["className", "variant", "height", "width", "borderRadius"]);
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
const style = {
|
|
28
|
+
width: width,
|
|
29
|
+
height: height,
|
|
30
|
+
borderRadius: variant === "rectangular" ? borderRadius : "",
|
|
31
|
+
};
|
|
32
|
+
return (_jsx("div", Object.assign({ className: cn(skeletonVariants({ variant }), className), style: style }, props)));
|
|
32
33
|
}
|
|
33
34
|
export { Skeleton };
|
|
@@ -14,7 +14,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
14
14
|
import * as React from "react";
|
|
15
15
|
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
16
16
|
import { cn } from "../../lib/utils";
|
|
17
|
-
import { Input } from "./Input";
|
|
17
|
+
import { Input } from "./Input/index";
|
|
18
18
|
const Slider = React.forwardRef((_a, ref) => {
|
|
19
19
|
var { className, max, min = 0, step = 1, defaultValue, value, onChange } = _a,
|
|
20
20
|
// doubleValue = false,
|