@tapcart/mobile-components 0.11.0 → 0.11.2

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 +1 @@
1
- {"version":3,"file":"use-block-conditional-rendering.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-block-conditional-rendering.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,YAAY,EAGb,MAAM,kBAAkB,CAAA;AAczB,eAAO,MAAM,4BAA4B,WAC/B;IACN,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,GAAG,CAAA;IACpB,iBAAiB,EAAE,GAAG,CAAA;CACvB,UACO,YAAY;;;CA8NrB,CAAA"}
1
+ {"version":3,"file":"use-block-conditional-rendering.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-block-conditional-rendering.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,YAAY,EAGb,MAAM,kBAAkB,CAAA;AAczB,eAAO,MAAM,4BAA4B,WAC/B;IACN,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,GAAG,CAAA;IACpB,iBAAiB,EAAE,GAAG,CAAA;CACvB,UACO,YAAY;;;CAqPrB,CAAA"}
@@ -16,12 +16,10 @@ import { useCollection } from "./use-collection";
16
16
  import { useSearchParams } from "next/navigation";
17
17
  import { gidFromId, countNumberOfTagsInState, getEnvState, shouldShowBlock, evaluateConditions, } from "../../lib/utils";
18
18
  export const useBlockConditionalRendering = (_props, _block) => {
19
- var _a, _b, _c, _d, _e;
20
- const _f = ((_a = _block === null || _block === void 0 ? void 0 : _block.visibilityConditions) === null || _a === void 0 ? void 0 : _a.conditions) || {}, { enabled: conditionalsV1IsEnabled = false, exclude: isInverse = false } = _f, restOfProps = __rest(_f, ["enabled", "exclude"]);
19
+ var _a, _b, _c, _d, _e, _f;
20
+ const _g = ((_a = _block === null || _block === void 0 ? void 0 : _block.visibilityConditions) === null || _a === void 0 ? void 0 : _a.conditions) || {}, { enabled: conditionalsV1IsEnabled = false, exclude: isInverse = false } = _g, restOfProps = __rest(_g, ["enabled", "exclude"]);
21
21
  const { _version = 1, conditions, enabled: conditionalsV2IsEnabled = false, } = (_block === null || _block === void 0 ? void 0 : _block.visibilityConditions) || {};
22
- if (!conditionalsV1IsEnabled && !conditionalsV2IsEnabled) {
23
- return { shouldShow: true, isLoading: false };
24
- }
22
+ const isConditionalsEnabled = conditionalsV1IsEnabled || conditionalsV2IsEnabled;
25
23
  const blockState = restOfProps;
26
24
  const { appId = "", apiUrl = "", deviceVariables, customerVariables } = _props;
27
25
  const searchParams = useSearchParams();
@@ -29,6 +27,7 @@ export const useBlockConditionalRendering = (_props, _block) => {
29
27
  const [language = "en", country = "US"] = ((_b = deviceVariables === null || deviceVariables === void 0 ? void 0 : deviceVariables.locale) === null || _b === void 0 ? void 0 : _b.split("_")) || [];
30
28
  const { id: deviceId = "" } = deviceVariables || {};
31
29
  const productId = (_c = searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("productId")) !== null && _c !== void 0 ? _c : undefined;
30
+ const productHandle = (_d = searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("productHandle")) !== null && _d !== void 0 ? _d : undefined;
32
31
  const location = {
33
32
  country,
34
33
  language,
@@ -36,6 +35,9 @@ export const useBlockConditionalRendering = (_props, _block) => {
36
35
  };
37
36
  const productMetafieldsQuery = useMemo(() => {
38
37
  var _a;
38
+ if (!isConditionalsEnabled) {
39
+ return [];
40
+ }
39
41
  if (conditionalsV1IsEnabled && (blockState === null || blockState === void 0 ? void 0 : blockState.productMetafield)) {
40
42
  return blockState.productMetafield;
41
43
  }
@@ -60,20 +62,26 @@ export const useBlockConditionalRendering = (_props, _block) => {
60
62
  conditionalsV1IsEnabled,
61
63
  conditionalsV2IsEnabled,
62
64
  _block === null || _block === void 0 ? void 0 : _block.visibilityConditions,
65
+ isConditionalsEnabled,
63
66
  ]);
64
- // Fetch product if productId is present
65
- const { products, error: useProductsError, isLoading: isProductsLoading, } = useProducts({
66
- productIds: productId !== undefined ? [gidFromId(productId)] : [],
67
- baseURL: apiUrl,
68
- productHandles: [],
69
- metafields: productMetafieldsQuery,
70
- queryVariables: {
71
- language,
72
- country,
73
- },
74
- });
67
+ const shouldFetchProduct = isConditionalsEnabled && (productId || productHandle);
68
+ const { products, error: useProductsError, isLoading: isProductsLoading, } = useProducts(shouldFetchProduct
69
+ ? {
70
+ productIds: productId ? [gidFromId(productId)] : [],
71
+ baseURL: apiUrl,
72
+ productHandles: productHandle ? [productHandle] : [],
73
+ metafields: productMetafieldsQuery,
74
+ queryVariables: {
75
+ language,
76
+ country,
77
+ },
78
+ }
79
+ : null);
75
80
  const blockCollectionMetafields = useMemo(() => {
76
81
  var _a;
82
+ if (!isConditionalsEnabled) {
83
+ return [];
84
+ }
77
85
  if (conditionalsV1IsEnabled && (blockState === null || blockState === void 0 ? void 0 : blockState.collectionMetafield)) {
78
86
  return blockState.collectionMetafield;
79
87
  }
@@ -98,35 +106,47 @@ export const useBlockConditionalRendering = (_props, _block) => {
98
106
  conditionalsV1IsEnabled,
99
107
  conditionalsV2IsEnabled,
100
108
  _block === null || _block === void 0 ? void 0 : _block.visibilityConditions,
109
+ isConditionalsEnabled,
101
110
  ]);
102
- const collectionMetafieldsQuery = useMemo(() => blockCollectionMetafields.map((item) => {
103
- // these are the fields used in the query.
104
- return {
105
- namespace: item.namespace,
106
- key: item.key,
107
- };
108
- }), [blockCollectionMetafields]);
109
- const memoizedMetafields = useMemo(() => collectionMetafieldsQuery
110
- ? collectionMetafieldsQuery
111
+ const collectionMetafieldsQuery = useMemo(() => {
112
+ if (!blockCollectionMetafields.length) {
113
+ return [];
114
+ }
115
+ return blockCollectionMetafields.map((item) => {
116
+ // these are the fields used in the query.
117
+ return {
118
+ namespace: item.namespace,
119
+ key: item.key,
120
+ };
121
+ });
122
+ }, [blockCollectionMetafields]);
123
+ const memoizedMetafields = useMemo(() => {
124
+ if (!isConditionalsEnabled || !collectionMetafieldsQuery.length) {
125
+ return undefined;
126
+ }
127
+ return collectionMetafieldsQuery
111
128
  .map((m) => `${m.namespace}.${m.key}`)
112
- .join(",")
113
- : undefined, [collectionMetafieldsQuery]);
114
- const collectionId = (_d = searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("collectionId")) !== null && _d !== void 0 ? _d : undefined;
115
- const collectionHandle = (_e = searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("collectionHandle")) !== null && _e !== void 0 ? _e : undefined;
129
+ .join(",");
130
+ }, [collectionMetafieldsQuery, isConditionalsEnabled]);
131
+ const collectionId = (_e = searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("collectionId")) !== null && _e !== void 0 ? _e : undefined;
132
+ const collectionHandle = (_f = searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("collectionHandle")) !== null && _f !== void 0 ? _f : undefined;
133
+ const shouldFetchCollection = isConditionalsEnabled && (collectionId || collectionHandle);
116
134
  const { specificCollection = {}, error: useCollectionError, loading: isCollectionLoading, } = useCollection({
117
135
  appId,
118
136
  apiUrl,
119
- collectionId,
120
- collectionHandle,
137
+ collectionId: shouldFetchCollection ? collectionId : undefined,
138
+ collectionHandle: shouldFetchCollection ? collectionHandle : undefined,
121
139
  language: location === null || location === void 0 ? void 0 : location.language,
122
- metafields: memoizedMetafields,
140
+ metafields: shouldFetchCollection ? memoizedMetafields : undefined,
123
141
  });
124
142
  const isLoading = isProductsLoading || isCollectionLoading;
125
143
  if (useProductsError || useCollectionError) {
126
144
  console.error("Unable to load products in conditional block rendering hook: ", useProductsError !== null && useProductsError !== void 0 ? useProductsError : useCollectionError);
127
145
  }
146
+ if (!isConditionalsEnabled) {
147
+ return { shouldShow: true, isLoading: false };
148
+ }
128
149
  let shouldShow = true;
129
- const blockConditionalsIsEnabled = conditionalsV1IsEnabled || conditionalsV2IsEnabled;
130
150
  const blockHasTags = countNumberOfTagsInState(blockState) > 0;
131
151
  const product = products.length === 1 ? products[0] : undefined;
132
152
  const envState = getEnvState({
@@ -150,7 +170,7 @@ export const useBlockConditionalRendering = (_props, _block) => {
150
170
  return evaluateConditions(conditions, envState);
151
171
  };
152
172
  try {
153
- if (blockConditionalsIsEnabled) {
173
+ if (isConditionalsEnabled) {
154
174
  switch (_version) {
155
175
  case 2:
156
176
  shouldShow = evaluateV2Conditions();
@@ -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;AAE1E,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAE5D,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;IAE9B,YAAY,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAGxC,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAGpC,SAAS,CAAC,EAAE,UAAU,GAAG,YAAY,CAAA;IACrC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,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;CACT;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,oBAAoB,EAAE,GAAG,EAAE,CAAA;IAC3B,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,kJAepB,sBAAsB,KAAG,uBAkO3B,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,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAE5D,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;IAE9B,YAAY,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAGxC,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAGpC,SAAS,CAAC,EAAE,UAAU,GAAG,YAAY,CAAA;IACrC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,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;CACT;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,oBAAoB,EAAE,GAAG,EAAE,CAAA;IAC3B,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,kJAepB,sBAAsB,KAAG,uBAmP3B,CAAA;AAED,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAA"}
@@ -65,12 +65,22 @@ customFetcher, customGetKey, }) => {
65
65
  return Boolean((searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("collectionId")) ||
66
66
  (searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("collectionHandle")) ||
67
67
  handle ||
68
- id);
69
- }, [searchParams, handle, id]);
68
+ id ||
69
+ (queryVariableProps === null || queryVariableProps === void 0 ? void 0 : queryVariableProps.collectionId) ||
70
+ (queryVariableProps === null || queryVariableProps === void 0 ? void 0 : queryVariableProps.collectionHandle));
71
+ }, [
72
+ searchParams,
73
+ handle,
74
+ id,
75
+ queryVariableProps === null || queryVariableProps === void 0 ? void 0 : queryVariableProps.collectionId,
76
+ queryVariableProps === null || queryVariableProps === void 0 ? void 0 : queryVariableProps.collectionHandle,
77
+ ]);
70
78
  const hasQuery = useMemo(() => {
71
- return Boolean(searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("searchQuery")) || query;
72
- }, [searchParams, query]);
73
- const shouldSkipSearchClientFetch = usingSearchClient && !hasCollection && !hasQuery;
79
+ return (Boolean(searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("searchQuery")) ||
80
+ query ||
81
+ (queryVariableProps === null || queryVariableProps === void 0 ? void 0 : queryVariableProps.searchQuery));
82
+ }, [searchParams, query, queryVariableProps === null || queryVariableProps === void 0 ? void 0 : queryVariableProps.searchQuery]);
83
+ const shouldSkipFetch = !hasCollection && !hasQuery;
74
84
  // Search client approach - getKey and fetcher
75
85
  const searchClientGetKey = useMemo(() => customGetKey || (searchClient === null || searchClient === void 0 ? void 0 : searchClient.getKey), [customGetKey, searchClient === null || searchClient === void 0 ? void 0 : searchClient.getKey]);
76
86
  const searchClientFetcher = useMemo(() => customFetcher || (searchClient === null || searchClient === void 0 ? void 0 : searchClient.fetcher), [customFetcher, searchClient === null || searchClient === void 0 ? void 0 : searchClient.fetcher]);
@@ -106,17 +116,17 @@ customFetcher, customGetKey, }) => {
106
116
  // Determine which approach to use
107
117
  const getKey = usingSearchClient
108
118
  ? (pageIndex, previousPageData) => {
109
- if (shouldSkipSearchClientFetch)
110
- return null;
111
119
  if (!searchClientGetKey)
112
120
  return null;
113
121
  return searchClientGetKey(pageIndex, previousPageData);
114
122
  }
115
- : (pageIndex, previousPageData) => (customGetKey || apiGetKey)(pageIndex, previousPageData, queryVariables !== null && queryVariables !== void 0 ? queryVariables : {});
123
+ : (pageIndex, previousPageData) => {
124
+ return (customGetKey || apiGetKey)(pageIndex, previousPageData, queryVariables !== null && queryVariables !== void 0 ? queryVariables : {});
125
+ };
116
126
  const fetcher = usingSearchClient
117
127
  ? (...args) => __awaiter(void 0, void 0, void 0, function* () {
118
128
  var _h, _j;
119
- if (shouldSkipSearchClientFetch)
129
+ if (shouldSkipFetch)
120
130
  return null;
121
131
  if (!searchClientFetcher)
122
132
  return null;
@@ -124,7 +134,12 @@ customFetcher, customGetKey, }) => {
124
134
  productCount.current += (_j = (_h = result === null || result === void 0 ? void 0 : result.products) === null || _h === void 0 ? void 0 : _h.length) !== null && _j !== void 0 ? _j : 0;
125
135
  return result;
126
136
  })
127
- : customFetcher || apiFetcher;
137
+ : (...args) => __awaiter(void 0, void 0, void 0, function* () {
138
+ if (shouldSkipFetch)
139
+ return null;
140
+ const effectiveFetcher = customFetcher || apiFetcher;
141
+ return effectiveFetcher(...args);
142
+ });
128
143
  const { data, error, size, setSize, isLoading, isValidating, mutate, } = useSWRInfinite(getKey, fetcher, {
129
144
  revalidateFirstPage: false,
130
145
  initialSize: 1,
@@ -190,7 +205,7 @@ customFetcher, customGetKey, }) => {
190
205
  return data.map((page) => { var _a; return (_a = page === null || page === void 0 ? void 0 : page.integrationResponse) !== null && _a !== void 0 ? _a : null; });
191
206
  }, [data, usingSearchClient]);
192
207
  // Elegant conditional overrides when skipping
193
- const applySkip = (value, override) => shouldSkipSearchClientFetch ? override : value;
208
+ const applySkip = useCallback((value, override) => (shouldSkipFetch ? override : value), [shouldSkipFetch]);
194
209
  return useMemo(() => ({
195
210
  data,
196
211
  error,
@@ -215,7 +230,7 @@ customFetcher, customGetKey, }) => {
215
230
  integrationResponses,
216
231
  isLoading,
217
232
  isValidating,
218
- shouldSkipSearchClientFetch,
233
+ applySkip,
219
234
  ]);
220
235
  };
221
236
  export { useInfiniteScroll, constructURL };
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ export interface LoadingSpinnerProps {
3
+ iconColor?: string;
4
+ size?: number;
5
+ opacity?: number;
6
+ show?: boolean;
7
+ showBackground?: boolean;
8
+ className?: string;
9
+ style?: React.CSSProperties;
10
+ }
11
+ export declare const LoadingSpinner: ({ iconColor, size, opacity, show, showBackground, className, style, }: LoadingSpinnerProps) => import("react/jsx-runtime").JSX.Element | null;
12
+ //# sourceMappingURL=loading-spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading-spinner.d.ts","sourceRoot":"","sources":["../../../components/ui/loading-spinner.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC5B;AAED,eAAO,MAAM,cAAc,0EAQxB,mBAAmB,mDAkDrB,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../../lib/utils";
3
+ import React from "react";
4
+ export const LoadingSpinner = ({ iconColor = "#000000", size = 16, opacity = 0.7, show = false, showBackground = false, className, style, }) => {
5
+ const [showLoadingSpinner, setShowLoadingSpinner] = React.useState(show);
6
+ const [isAnimatingOut, setIsAnimatingOut] = React.useState(false);
7
+ React.useEffect(() => {
8
+ if (!show) {
9
+ setIsAnimatingOut(true);
10
+ setTimeout(() => {
11
+ setShowLoadingSpinner(false);
12
+ setIsAnimatingOut(false);
13
+ }, 300); // Match animation duration
14
+ }
15
+ else {
16
+ setShowLoadingSpinner(true);
17
+ setIsAnimatingOut(false);
18
+ }
19
+ }, [show]);
20
+ if (!showLoadingSpinner)
21
+ return null;
22
+ return (_jsx("div", Object.assign({ className: cn("absolute inset-0 flex items-center justify-center z-20", isAnimatingOut ? "animate-fadeOut" : "animate-fadeIn", {
23
+ "bg-white bg-opacity-70 rounded-full": showBackground,
24
+ }, className), style: style }, { children: _jsx("svg", Object.assign({ width: `${size}pt`, height: `${size}pt`, viewBox: "0 0 100 100", xmlns: "http://www.w3.org/2000/svg", className: "animate-spin m-2", style: { opacity } }, { children: _jsxs("g", Object.assign({ fill: iconColor }, { children: [_jsx("path", { d: "m49.105 0c-2.8555 0-5.1719 2.3164-5.1719 5.1719v17.242c0 2.8555 2.3164 5.1719 5.1719 5.1719s5.1758-2.3164 5.1758-5.1719v-17.242c0-2.8555-2.3203-5.1719-5.1758-5.1719z" }), _jsx("path", { d: "m49.105 72.414c-2.8555 0-5.1719 2.3164-5.1719 5.1719v17.242c0 2.8555 2.3164 5.1719 5.1719 5.1719s5.1719-2.3164 5.1719-5.1719v-17.242c0.003906-2.8555-2.3164-5.1719-5.1719-5.1719z" }), _jsx("path", { d: "m28.691 31.727l-14.93-8.6211c-2.4766-1.4258-5.6367-0.57812-7.0664 1.8945-1.4258 2.4766-0.58203 5.6406 1.8945 7.0703l14.93 8.6211c2.4727 1.4258 5.6367 0.57812 7.0664-1.8984 1.4297-2.4727 0.57812-5.6367-1.8945-7.0664z" }), _jsx("path", { d: "m91.402 67.934l-14.93-8.6211c-2.4727-1.4258-5.6367-0.57812-7.0664 1.8945-1.4258 2.4766-0.57812 5.6406 1.8945 7.0703l14.93 8.6211c2.4766 1.4258 5.6406 0.57812 7.0703-1.8984 1.4219-2.4727 0.57422-5.6367-1.8984-7.0664z" }), _jsx("path", { d: "m23.52 59.312l-14.93 8.6211c-2.4727 1.4258-3.3203 4.5938-1.8945 7.0664 1.4258 2.4727 4.5938 3.3281 7.0664 1.8945l14.93-8.6172c2.4727-1.4258 3.3203-4.5938 1.8945-7.0703-1.4258-2.4727-4.5938-3.3203-7.0664-1.8945z" }), _jsx("path", { d: "m76.477 40.691l14.93-8.6211c2.4766-1.4297 3.3242-4.5977 1.8945-7.0742-1.4258-2.4727-4.5938-3.3203-7.0703-1.8906l-14.93 8.6211c-2.4727 1.4258-3.3203 4.5898-1.8945 7.0664 1.4297 2.4805 4.5977 3.3281 7.0703 1.8984z" })] })) })) })));
25
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../../../components/ui/money.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEjE,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,QAAA,MAAM,aAAa,gGAMjB,CAAA;AAEF,MAAM,WAAW,UACf,SAAQ,SAAS,EACf,YAAY,CAAC,OAAO,aAAa,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC7B;AAED,iBAAS,KAAK,CAAC,EACb,KAAK,EACL,MAAM,EACN,QAAQ,EACR,aAAqB,EACrB,MAAM,EACN,GAAG,KAAK,EACT,EAAE,UAAU,2CA6BZ;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../../../components/ui/money.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGjE,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,QAAA,MAAM,aAAa,gGAMjB,CAAA;AAEF,MAAM,WAAW,UACf,SAAQ,SAAS,EACf,YAAY,CAAC,OAAO,aAAa,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC7B;AAED,iBAAS,KAAK,CAAC,EACb,KAAK,EACL,MAAM,EACN,QAAQ,EACR,aAAqB,EACrB,MAAM,EACN,GAAG,KAAK,EACT,EAAE,UAAU,2CAgCZ;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  var __rest = (this && this.__rest) || function (s, e) {
2
3
  var t = {};
3
4
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -12,6 +13,7 @@ var __rest = (this && this.__rest) || function (s, e) {
12
13
  import { jsx as _jsx } from "react/jsx-runtime";
13
14
  import * as React from "react";
14
15
  import { cva } from "class-variance-authority";
16
+ import { usePathname } from "next/navigation";
15
17
  const moneyVariants = cva("", {
16
18
  variants: {},
17
19
  defaultVariants: {
@@ -21,7 +23,10 @@ const moneyVariants = cva("", {
21
23
  });
22
24
  function Money(_a) {
23
25
  var { price, locale, currency, hideZeroCents = false, styles } = _a, props = __rest(_a, ["price", "locale", "currency", "hideZeroCents", "styles"]);
24
- let language = locale;
26
+ // Only use routeLocale if it contains a hyphen (e.g., "en-US")
27
+ const routeLocale = usePathname().split("/").pop();
28
+ const isValidLocale = routeLocale && routeLocale.includes("-");
29
+ let language = isValidLocale ? routeLocale : locale;
25
30
  // Fix for when we want to format in USD in english
26
31
  // but language only contains two letter region
27
32
  if (currency === "USD" && !(locale === null || locale === void 0 ? void 0 : locale.includes("-"))) {
package/dist/index.d.ts CHANGED
@@ -43,6 +43,7 @@ export * from "./components/ui/Input/input";
43
43
  export * from "./components/ui/label";
44
44
  export * from "./components/ui/line-item-text-icons";
45
45
  export * from "./components/ui/loading-dots";
46
+ export * from "./components/ui/loading-spinner";
46
47
  export * from "./components/ui/money";
47
48
  export * from "./components/ui/portal";
48
49
  export * from "./components/ui/price";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -43,6 +43,7 @@ export * from "./components/ui/Input/input";
43
43
  export * from "./components/ui/label";
44
44
  export * from "./components/ui/line-item-text-icons";
45
45
  export * from "./components/ui/loading-dots";
46
+ export * from "./components/ui/loading-spinner";
46
47
  export * from "./components/ui/money";
47
48
  export * from "./components/ui/portal";
48
49
  export * from "./components/ui/price";
package/dist/styles.css CHANGED
@@ -778,9 +778,6 @@ video {
778
778
  .top-\[50\%\] {
779
779
  top: 50%;
780
780
  }
781
- .z-0 {
782
- z-index: 0;
783
- }
784
781
  .z-10 {
785
782
  z-index: 10;
786
783
  }
@@ -889,9 +886,6 @@ video {
889
886
  .ml-2 {
890
887
  margin-left: 0.5rem;
891
888
  }
892
- .ml-4 {
893
- margin-left: 1rem;
894
- }
895
889
  .ml-auto {
896
890
  margin-left: auto;
897
891
  }
@@ -973,9 +967,6 @@ video {
973
967
  .hidden {
974
968
  display: none;
975
969
  }
976
- .aspect-\[2\/3\] {
977
- aspect-ratio: 2/3;
978
- }
979
970
  .aspect-productImages {
980
971
  aspect-ratio: var(--productImage-aspectRatio);
981
972
  }
@@ -1115,9 +1106,6 @@ video {
1115
1106
  .w-1\/2 {
1116
1107
  width: 50%;
1117
1108
  }
1118
- .w-1\/3 {
1119
- width: 33.333333%;
1120
- }
1121
1109
  .w-1\/4 {
1122
1110
  width: 25%;
1123
1111
  }
@@ -1142,9 +1130,6 @@ video {
1142
1130
  .w-2\/3 {
1143
1131
  width: 66.666667%;
1144
1132
  }
1145
- .w-2\/5 {
1146
- width: 40%;
1147
- }
1148
1133
  .w-20 {
1149
1134
  width: 5rem;
1150
1135
  }
@@ -2376,6 +2361,10 @@ video {
2376
2361
  --tw-drop-shadow: drop-shadow(0 3px 1px 0 rgba(0,0,0,1));
2377
2362
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2378
2363
  }
2364
+ .grayscale {
2365
+ --tw-grayscale: grayscale(100%);
2366
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2367
+ }
2379
2368
  .filter {
2380
2369
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2381
2370
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tapcart/mobile-components",
3
- "version": "0.11.0",
3
+ "version": "0.11.2",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "style": "dist/styles.css",