@tapcart/mobile-components 0.8.45 → 0.8.47

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.
@@ -1,7 +1,6 @@
1
1
  import { ReadonlyURLSearchParams } from "next/navigation";
2
- interface Product {
3
- handle: string;
4
- }
2
+ import { Product } from "app-studio-types";
3
+ import { SearchConfig } from "@tapcart/search-client";
5
4
  interface PageData {
6
5
  products: Product[];
7
6
  cursorBlob?: string;
@@ -18,6 +17,10 @@ interface UseInfiniteScrollProps {
18
17
  productLimit: number;
19
18
  threshold?: number;
20
19
  interval?: number;
20
+ integrations?: SearchConfig[];
21
+ customFetcher?: (...args: any[]) => Promise<any>;
22
+ customGetKey?: (pageIndex: number, previousPageData: any | null, ...args: any[]) => any;
23
+ getProduct: (handle?: string, id?: string) => Promise<Product | undefined>;
21
24
  }
22
25
  interface UseInfiniteScrollReturn {
23
26
  data: PageData[] | undefined;
@@ -33,6 +36,6 @@ interface UseInfiniteScrollReturn {
33
36
  }
34
37
  export declare const formatSearchParamsAsNextQueryVariables: (searchParams: ReadonlyURLSearchParams) => {};
35
38
  declare const constructURL: (apiURL: string) => string;
36
- declare const useInfiniteScroll: ({ initialData, queryVariables: queryVariableProps, direction, productLimit, threshold, interval, }: UseInfiniteScrollProps) => UseInfiniteScrollReturn;
39
+ declare const useInfiniteScroll: ({ initialData, queryVariables: queryVariableProps, direction, productLimit, threshold, interval, integrations, customFetcher, customGetKey, getProduct, }: UseInfiniteScrollProps) => UseInfiniteScrollReturn;
37
40
  export { useInfiniteScroll, constructURL };
38
41
  //# 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":"AAIA,OAAO,EAAE,uBAAuB,EAAmB,MAAM,iBAAiB,CAAA;AAG1E,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;IACd,cAAc,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;CACxC;AAOD,UAAU,sBAAsB;IAC9B,WAAW,EAAE,QAAQ,CAAA;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,SAAS,EAAE,UAAU,GAAG,YAAY,CAAA;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;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,uGAOpB,sBAAsB,KAAG,uBAmH3B,CAAA;AAED,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAA"}
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,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAEL,YAAY,EACb,MAAM,wBAAwB,CAAA;AAI/B,UAAU,QAAQ;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,GAAG,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;CACxC;AAED,UAAU,sBAAsB;IAC9B,WAAW,EAAE,QAAQ,CAAA;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,SAAS,EAAE,UAAU,GAAG,YAAY,CAAA;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,YAAY,EAAE,CAAA;IAC7B,aAAa,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAChD,YAAY,CAAC,EAAE,CACb,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,GAAG,GAAG,IAAI,EAC5B,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,GAAG,CAAA;IACR,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;CAC3E;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,8JAWpB,sBAAsB,KAAG,uBA8I3B,CAAA;AAED,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAA"}
@@ -13,6 +13,8 @@ import useSWRInfinite from "swr/infinite";
13
13
  import { useInView } from "react-intersection-observer";
14
14
  import { useSearchParams } from "next/navigation";
15
15
  import { throttle } from "lodash";
16
+ import { getSearchClientFromIntegrations, } from "@tapcart/search-client";
17
+ const searchClientMap = {};
16
18
  export const formatSearchParamsAsNextQueryVariables = (searchParams) => {
17
19
  const formattedParams = {};
18
20
  if (!searchParams)
@@ -42,19 +44,32 @@ const constructURL = (apiURL) => {
42
44
  return url.toString();
43
45
  };
44
46
  const useInfiniteScroll = ({ initialData, queryVariables: queryVariableProps, direction = "vertical", productLimit = Infinity, threshold = 0.01, interval = 33, // ~2 frames
45
- }) => {
46
- var _a, _b, _c, _d, _e;
47
+ integrations = [], customFetcher, customGetKey, getProduct, }) => {
48
+ var _a, _b, _c, _d, _e, _f;
47
49
  const searchParams = useSearchParams();
48
50
  const productCount = useRef(0);
51
+ const mapKey = JSON.stringify({ integrations, queryVariableProps });
52
+ let searchClient;
53
+ if (mapKey in searchClientMap) {
54
+ searchClient = searchClientMap[mapKey];
55
+ }
56
+ else {
57
+ searchClient = getSearchClientFromIntegrations({
58
+ configs: integrations,
59
+ queryParams: queryVariableProps,
60
+ getProduct,
61
+ });
62
+ searchClientMap[mapKey] = searchClient;
63
+ }
49
64
  const { ref, inView } = useInView({
50
65
  rootMargin: direction === "vertical" ? "600px" : "0px 420px 0px 0px",
51
66
  threshold: threshold,
52
67
  });
53
68
  const queryVariables = useMemo(() => {
54
69
  const formattedParams = formatSearchParamsAsNextQueryVariables(searchParams);
55
- return Object.assign(Object.assign({}, queryVariableProps), { searchParams: formattedParams });
70
+ return Object.assign(Object.assign({}, queryVariableProps), { searchParams: formattedParams, productCount: productCount });
56
71
  }, [queryVariableProps, searchParams]);
57
- const getKey = (pageIndex, previousPageData, queryVariables) => {
72
+ let getKey = (pageIndex, previousPageData, queryVariables) => {
58
73
  var _a;
59
74
  if (pageIndex === 0) {
60
75
  return Object.assign({}, queryVariables);
@@ -63,27 +78,37 @@ const useInfiniteScroll = ({ initialData, queryVariables: queryVariableProps, di
63
78
  return null;
64
79
  return Object.assign(Object.assign({}, queryVariables), { cursorBlob: previousPageData.pageData.cursorBlob });
65
80
  };
66
- const fetcher = (body) => __awaiter(void 0, void 0, void 0, function* () {
67
- var _f, _g;
81
+ if (customGetKey || (searchClient === null || searchClient === void 0 ? void 0 : searchClient.getKey)) {
82
+ getKey = customGetKey || searchClient.getKey;
83
+ }
84
+ let fetcher = (body) => __awaiter(void 0, void 0, void 0, function* () {
68
85
  const res = yield fetch(constructURL(initialData.apiURL), {
69
86
  method: "POST",
70
87
  body: JSON.stringify(body),
71
88
  });
72
89
  const data = yield res.json();
73
- productCount.current += (_g = (_f = data === null || data === void 0 ? void 0 : data.products) === null || _f === void 0 ? void 0 : _f.length) !== null && _g !== void 0 ? _g : 0;
74
90
  return data;
75
91
  });
92
+ if (customFetcher || (searchClient === null || searchClient === void 0 ? void 0 : searchClient.fetcher)) {
93
+ fetcher = customFetcher || searchClient.fetcher;
94
+ }
76
95
  const { data, error, size, setSize, isLoading, isValidating, } = useSWRInfinite((pageIndex, previousPageData) => getKey(pageIndex, previousPageData, queryVariables), fetcher, {
77
96
  revalidateFirstPage: false,
78
97
  initialSize: 1,
79
98
  });
99
+ productCount.current += (_c = (_b = (_a = data === null || data === void 0 ? void 0 : data[size - 1]) === null || _a === void 0 ? void 0 : _a.products) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
100
+ const hasMore = () => {
101
+ var _a, _b;
102
+ if (searchClient) {
103
+ return searchClient.getHasMore();
104
+ }
105
+ return (_b = (_a = data === null || data === void 0 ? void 0 : data[size - 1]) === null || _a === void 0 ? void 0 : _a.pageData) === null || _b === void 0 ? void 0 : _b.cursorBlob;
106
+ };
80
107
  const isLoadingInitialData = !data && !error;
81
108
  const isLoadingMore = isLoadingInitialData ||
82
109
  (size > 0 && data && typeof data[size - 1] === "undefined");
83
- 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;
84
- const isEndPointer = data
85
- ? !((_e = (_d = data[data.length - 1]) === null || _d === void 0 ? void 0 : _d.pageData) === null || _e === void 0 ? void 0 : _e.cursorBlob)
86
- : true;
110
+ const isEmpty = ((_f = (_e = (_d = data === null || data === void 0 ? void 0 : data[0]) === null || _d === void 0 ? void 0 : _d.products) === null || _e === void 0 ? void 0 : _e.length) !== null && _f !== void 0 ? _f : 0) === 0;
111
+ const isEndPointer = data ? !hasMore() : true;
87
112
  const isReachingEnd = isEmpty || isEndPointer;
88
113
  const isRefreshing = isValidating && data && data.length === size;
89
114
  const loadMore = useCallback(() => {
@@ -35,9 +35,7 @@ type TapcartImageBaseProps = {
35
35
  * @defaultValue `center`
36
36
  */
37
37
  crop?: Crop;
38
- data?: PartialDeep<ImageType, {
39
- recurseIntoArrays: true;
40
- }>;
38
+ data?: PartialDeep<ImageType>;
41
39
  /** A function that returns a URL string for an image.
42
40
  *
43
41
  * @remarks
@@ -1 +1 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../components/ui/image.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../components/ui/image.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"progress-bar.d.ts","sourceRoot":"","sources":["../../../components/ui/progress-bar.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,eAAe,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAA;IACpD;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE;QACjB,KAAK,EAAE,MAAM,CAAA;QACb,GAAG,EAAE,MAAM,CAAA;QAEX,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,SAAS,CAAC,EAAE;YACV,KAAK,CAAC,EAAE,MAAM,CAAA;YACd,QAAQ,CAAC,EAAE,MAAM,CAAA;YACjB,UAAU,CAAC,EAAE,MAAM,CAAA;SACpB,CAAA;QACD,WAAW,CAAC,EAAE;YACZ,eAAe,CAAC,EAAE,MAAM,CAAA;YACxB,IAAI,CAAC,EAAE,MAAM,CAAA;SACd,CAAA;QACD,cAAc,CAAC,EAAE,OAAO,CAAA;KACzB,CAAA;CACF;AAID,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA+M3C,CAAA;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"progress-bar.d.ts","sourceRoot":"","sources":["../../../components/ui/progress-bar.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGhD,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,eAAe,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAA;IACpD;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE;QACjB,KAAK,EAAE,MAAM,CAAA;QACb,GAAG,EAAE,MAAM,CAAA;QAEX,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,SAAS,CAAC,EAAE;YACV,KAAK,CAAC,EAAE,MAAM,CAAA;YACd,QAAQ,CAAC,EAAE,MAAM,CAAA;YACjB,UAAU,CAAC,EAAE,MAAM,CAAA;SACpB,CAAA;QACD,WAAW,CAAC,EAAE;YACZ,eAAe,CAAC,EAAE,MAAM,CAAA;YACxB,IAAI,CAAC,EAAE,MAAM,CAAA;SACd,CAAA;QACD,cAAc,CAAC,EAAE,OAAO,CAAA;KACzB,CAAA;CACF;AAID,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA8N3C,CAAA;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -1,13 +1,23 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useEffect, useState } from "react";
3
+ import React, { useEffect, useState } from "react";
4
4
  const NUM_MARKERS = 5;
5
5
  const ProgressBar = ({ progress, borderStyle, emptyColor, corners, fillColor, animationDuration = 300, animationEasing = "easeInOut", height = 8, milestoneMarkers, }) => {
6
6
  const [clampedProgress, setClampedProgress] = useState(0);
7
7
  const [animatedMarkers, setAnimatedMarkers] = useState([]);
8
8
  const [previousProgress, setPreviousProgress] = useState(0);
9
+ // Determine the number of markers to use
10
+ const markersCount = React.useMemo(() => {
11
+ if (milestoneMarkers &&
12
+ "start" in milestoneMarkers &&
13
+ "end" in milestoneMarkers &&
14
+ milestoneMarkers.end - milestoneMarkers.start < NUM_MARKERS) {
15
+ return milestoneMarkers.end - milestoneMarkers.start;
16
+ }
17
+ return NUM_MARKERS;
18
+ }, [milestoneMarkers]);
9
19
  // Calculate the spacing between markers
10
- const markerSpacing = 100 / NUM_MARKERS;
20
+ const markerSpacing = 100 / markersCount;
11
21
  // Set beginning/end padding to half the distance between other markers
12
22
  const beginningEndMarkerPadding = markerSpacing / 4;
13
23
  useEffect(() => {
@@ -59,22 +69,22 @@ const ProgressBar = ({ progress, borderStyle, emptyColor, corners, fillColor, an
59
69
  // Generate evenly spaced markers with evenly distributed values
60
70
  const positions = [];
61
71
  // Calculate the step between each marker value
62
- const valueStep = (end - start) / NUM_MARKERS;
63
- // Generate 11 markers (including start and end)
64
- for (let i = 0; i <= NUM_MARKERS; i++) {
72
+ const valueStep = (end - start) / markersCount;
73
+ // Generate markers (including start and end)
74
+ for (let i = 0; i <= markersCount; i++) {
65
75
  // Apply padding of half the marker spacing to the first and last markers
66
76
  let position;
67
77
  if (i === 0) {
68
78
  position = beginningEndMarkerPadding; // Half spacing padding from the start
69
79
  }
70
- else if (i === NUM_MARKERS) {
80
+ else if (i === markersCount) {
71
81
  position = 100 - beginningEndMarkerPadding; // Half spacing padding from the end
72
82
  }
73
83
  else {
74
84
  // Distribute the remaining markers evenly between the padded start and end
75
85
  position =
76
86
  beginningEndMarkerPadding +
77
- ((100 - 2 * beginningEndMarkerPadding) * i) / NUM_MARKERS;
87
+ ((100 - 2 * beginningEndMarkerPadding) * i) / markersCount;
78
88
  }
79
89
  const value = start + valueStep * i;
80
90
  positions.push({ value, position });
package/dist/styles.css CHANGED
@@ -2487,7 +2487,7 @@ body::-webkit-scrollbar {
2487
2487
  border-bottom-width: 0px;
2488
2488
  }
2489
2489
 
2490
- .placeholder-shown\:\!truncate:-moz-placeholder-shown {
2490
+ .placeholder-shown\:\!truncate:-moz-placeholder {
2491
2491
  overflow: hidden !important;
2492
2492
  text-overflow: ellipsis !important;
2493
2493
  white-space: nowrap !important;
@@ -2499,7 +2499,7 @@ body::-webkit-scrollbar {
2499
2499
  white-space: nowrap !important;
2500
2500
  }
2501
2501
 
2502
- .placeholder-shown\:p-4:-moz-placeholder-shown {
2502
+ .placeholder-shown\:p-4:-moz-placeholder {
2503
2503
  padding: 1rem;
2504
2504
  }
2505
2505
 
@@ -2507,7 +2507,7 @@ body::-webkit-scrollbar {
2507
2507
  padding: 1rem;
2508
2508
  }
2509
2509
 
2510
- .placeholder-shown\:text-textColors-secondaryColor:-moz-placeholder-shown {
2510
+ .placeholder-shown\:text-textColors-secondaryColor:-moz-placeholder {
2511
2511
  color: var(--textColors-secondaryColor, #727272ff);
2512
2512
  }
2513
2513
 
@@ -2683,7 +2683,7 @@ body::-webkit-scrollbar {
2683
2683
  --tw-ring-offset-color: #dc2626;
2684
2684
  }
2685
2685
 
2686
- .peer:-moz-placeholder-shown ~ .peer-placeholder-shown\:opacity-0 {
2686
+ .peer:-moz-placeholder ~ .peer-placeholder-shown\:opacity-0 {
2687
2687
  opacity: 0;
2688
2688
  }
2689
2689
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tapcart/mobile-components",
3
- "version": "0.8.45",
3
+ "version": "0.8.47",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "style": "dist/styles.css",
@@ -73,6 +73,7 @@
73
73
  "@tabler/icons-react": "^3.2.0",
74
74
  "@tanstack/react-virtual": "^3.13.6",
75
75
  "@tapcart/app-studio-sdk": "^2.0.0",
76
+ "@tapcart/search-client": "workspace:*",
76
77
  "apple-pay-button": "^1.1.7",
77
78
  "class-variance-authority": "^0.6.0",
78
79
  "clsx": "^1.2.1",