@tapcart/mobile-components 0.7.21 → 0.7.23

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 (49) hide show
  1. package/dist/components/ui/drawer.d.ts.map +1 -1
  2. package/dist/components/ui/drawer.js +7 -1
  3. package/dist/components/ui/scroll-area.d.ts +1 -0
  4. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  5. package/dist/components/ui/scroll-area.js +2 -2
  6. package/dist/styles.css +3 -0
  7. package/package.json +1 -1
  8. package/dist/components/contexts/translationContext.d.ts +0 -9
  9. package/dist/components/contexts/translationContext.d.ts.map +0 -1
  10. package/dist/components/contexts/translationContext.js +0 -5
  11. package/dist/components/hooks/use-destination.d.ts +0 -23
  12. package/dist/components/hooks/use-destination.d.ts.map +0 -1
  13. package/dist/components/hooks/use-destination.js +0 -13
  14. package/dist/components/hooks/use-tap.d.ts +0 -8
  15. package/dist/components/hooks/use-tap.d.ts.map +0 -1
  16. package/dist/components/hooks/use-tap.js +0 -100
  17. package/dist/components/ui/use-tap.d.ts +0 -8
  18. package/dist/components/ui/use-tap.d.ts.map +0 -1
  19. package/dist/components/ui/use-tap.js +0 -100
  20. package/dist/components/ui/video copy.d.ts +0 -18
  21. package/dist/components/ui/video copy.d.ts.map +0 -1
  22. package/dist/components/ui/video copy.js +0 -70
  23. package/dist/components/ui/video.v2.d.ts +0 -18
  24. package/dist/components/ui/video.v2.d.ts.map +0 -1
  25. package/dist/components/ui/video.v2.js +0 -70
  26. package/dist/index copy.d.ts +0 -59
  27. package/dist/index copy.d.ts.map +0 -1
  28. package/dist/index copy.js +0 -59
  29. package/dist/lib/utils/destination.d.ts +0 -17
  30. package/dist/lib/utils/destination.d.ts.map +0 -1
  31. package/dist/lib/utils/destination.js +0 -15
  32. package/dist/lib/utils/id.d.ts +0 -5
  33. package/dist/lib/utils/id.d.ts.map +0 -1
  34. package/dist/lib/utils/id.js +0 -29
  35. package/dist/lib/utils/index.d.ts +0 -18
  36. package/dist/lib/utils/index.d.ts.map +0 -1
  37. package/dist/lib/utils/index.js +0 -55
  38. package/dist/lib/utils/misc.d.ts +0 -1
  39. package/dist/lib/utils/misc.d.ts.map +0 -1
  40. package/dist/lib/utils/misc.js +0 -1
  41. package/dist/lib/utils/style.d.ts +0 -154
  42. package/dist/lib/utils/style.d.ts.map +0 -1
  43. package/dist/lib/utils/style.js +0 -148
  44. package/dist/lib/utils.deprecated.d.ts +0 -181
  45. package/dist/lib/utils.deprecated.d.ts.map +0 -1
  46. package/dist/lib/utils.deprecated.js +0 -222
  47. package/dist/v2.d.ts +0 -59
  48. package/dist/v2.d.ts.map +0 -1
  49. package/dist/v2.js +0 -59
@@ -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;AAKhD,KAAK,kBAAkB,GAAG,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG;IACnE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,YAAY,CAAC,EAAE,WAAW,CAAA;CAC3B,CAAA;AAED,KAAK,gBAAgB,GAAG,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG;IACjE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,QAAA,MAAM,aAAa,8BAA0D,CAAA;AAG7E,QAAA,MAAM,YAAY;iCAAgC,iBAAiB;;CAMlE,CAAA;AAGD,QAAA,MAAM,WAAW,4BAAsD,CAAA;AAGvE,KAAK,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG;IACrE,YAAY,CAAC,EAAE,WAAW,CAAA;CAC3B,CAAA;AAED,QAAA,MAAM,MAAM;0CAAyC,WAAW;;CAS/D,CAAA;AAOD,QAAA,MAAM,aAAa;;wCAYlB,CAAA;AAUD,QAAA,MAAM,iBAAiB;;;;;wCAyCtB,CAAA;AA0BD,QAAA,MAAM,YAAY;8BAGf,MAAM,cAAc,CAAC,cAAc,CAAC;;CAQtC,CAAA;AAGD,QAAA,MAAM,iBAAiB,qLASrB,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,4CA8BnB,CAAA;AAED,QAAA,MAAM,aAAa,sCAIhB,MAAM,cAAc,CAAC,cAAc,CAAC,4CAMtC,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"}
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;AAKhD,KAAK,kBAAkB,GAAG,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG;IACnE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,YAAY,CAAC,EAAE,WAAW,CAAA;CAC3B,CAAA;AAED,KAAK,gBAAgB,GAAG,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG;IACjE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,QAAA,MAAM,aAAa,8BAA0D,CAAA;AAG7E,QAAA,MAAM,YAAY;iCAAgC,iBAAiB;;CAgBlE,CAAA;AAGD,QAAA,MAAM,WAAW,4BAAsD,CAAA;AAGvE,KAAK,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG;IACrE,YAAY,CAAC,EAAE,WAAW,CAAA;CAC3B,CAAA;AAED,QAAA,MAAM,MAAM;0CAAyC,WAAW;;CAS/D,CAAA;AAOD,QAAA,MAAM,aAAa;;wCAYlB,CAAA;AAUD,QAAA,MAAM,iBAAiB;;;;;wCAyCtB,CAAA;AA0BD,QAAA,MAAM,YAAY;8BAGf,MAAM,cAAc,CAAC,cAAc,CAAC;;CAQtC,CAAA;AAGD,QAAA,MAAM,iBAAiB,qLASrB,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,4CA8BnB,CAAA;AAED,QAAA,MAAM,aAAa,sCAIhB,MAAM,cAAc,CAAC,cAAc,CAAC,4CAMtC,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"}
@@ -19,10 +19,16 @@ import ReactDOM from "react-dom";
19
19
  const DrawerTrigger = DrawerPrimitive.Trigger;
20
20
  DrawerTrigger.displayName = "DrawerTrigger";
21
21
  const DrawerPortal = ({ children, containerRef }) => {
22
- console.log("CONTAINER REF", containerRef);
22
+ // If ref is passed, render the children into the ref container
23
23
  if (containerRef) {
24
24
  return ReactDOM.createPortal(children, containerRef);
25
25
  }
26
+ // If no ref is passed, attempt to look for the dashboard specific block container.
27
+ // This will only be valid within the CMS Dashboard.
28
+ const dashboardContainer = document.querySelector("#_tcDashboard-BlockPhonePreview");
29
+ if (dashboardContainer) {
30
+ return ReactDOM.createPortal(children, dashboardContainer);
31
+ }
26
32
  return _jsx(DrawerPrimitive.Portal, { children: children });
27
33
  };
28
34
  DrawerPortal.displayName = "DrawerPortal";
@@ -3,6 +3,7 @@ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
3
3
  type Orientation = "horizontal" | "vertical";
4
4
  declare const ScrollArea: React.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
5
5
  wrapperClass?: string | undefined;
6
+ wrapperStyle?: React.CSSProperties | undefined;
6
7
  scrollbar: boolean;
7
8
  } & React.RefAttributes<HTMLDivElement>>;
8
9
  declare const ScrollBar: React.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaScrollbarProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-area.d.ts","sourceRoot":"","sources":["../../../components/ui/scroll-area.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAA;AAIlE,KAAK,WAAW,GAAG,YAAY,GAAG,UAAU,CAAA;AAE5C,QAAA,MAAM,UAAU;;eAID,OAAO;wCAcpB,CAAA;AAGF,QAAA,MAAM,SAAS;;wCAuBb,CAAA;AAGF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"scroll-area.d.ts","sourceRoot":"","sources":["../../../components/ui/scroll-area.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAA;AAIlE,KAAK,WAAW,GAAG,YAAY,GAAG,UAAU,CAAA;AAE5C,QAAA,MAAM,UAAU;;;eAKD,OAAO;wCA4BrB,CAAA;AAGD,QAAA,MAAM,SAAS;;wCAuBb,CAAA;AAGF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAA"}
@@ -15,8 +15,8 @@ import * as React from "react";
15
15
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
16
16
  import { cn } from "../../lib/utils";
17
17
  const ScrollArea = React.forwardRef((_a, ref) => {
18
- var { className, wrapperClass, scrollbar = true, children } = _a, props = __rest(_a, ["className", "wrapperClass", "scrollbar", "children"]);
19
- return (_jsxs(ScrollAreaPrimitive.Root, Object.assign({ ref: ref, className: cn("relative overflow-hidden", className) }, props, { children: [_jsx(ScrollAreaPrimitive.Viewport, Object.assign({ className: "h-full w-full rounded-[inherit]" }, { children: _jsx("div", Object.assign({ className: cn("flex w-max", wrapperClass) }, { children: children })) })), _jsx(ScrollBar, { className: scrollbar ? "" : "hidden" }), _jsx(ScrollAreaPrimitive.Corner, {})] })));
18
+ var { className, wrapperClass, wrapperStyle, scrollbar = true, children } = _a, props = __rest(_a, ["className", "wrapperClass", "wrapperStyle", "scrollbar", "children"]);
19
+ return (_jsxs(ScrollAreaPrimitive.Root, Object.assign({ ref: ref, className: cn("relative overflow-hidden", className) }, props, { children: [_jsx(ScrollAreaPrimitive.Viewport, Object.assign({ className: "h-full w-full rounded-[inherit]" }, { children: _jsx("div", Object.assign({ className: cn("flex w-max", wrapperClass), style: wrapperStyle }, { children: children })) })), _jsx(ScrollBar, { className: scrollbar ? "" : "hidden" }), _jsx(ScrollAreaPrimitive.Corner, {})] })));
20
20
  });
21
21
  ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
22
22
  const ScrollBar = React.forwardRef((_a, ref) => {
package/dist/styles.css CHANGED
@@ -847,6 +847,9 @@ video {
847
847
  .mr-4 {
848
848
  margin-right: 1rem;
849
849
  }
850
+ .mr-8 {
851
+ margin-right: 2rem;
852
+ }
850
853
  .mt-0 {
851
854
  margin-top: 0px;
852
855
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tapcart/mobile-components",
3
- "version": "0.7.21",
3
+ "version": "0.7.23",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "style": "dist/styles.css",
@@ -1,9 +0,0 @@
1
- import React from "react";
2
- type TranslationMap = Record<string, string>;
3
- export declare const TranslationProvider: ({ translations, children, }: {
4
- translations: TranslationMap;
5
- children: React.ReactNode;
6
- }) => import("react/jsx-runtime").JSX.Element;
7
- export declare const useTranslation: () => TranslationMap;
8
- export {};
9
- //# sourceMappingURL=translationContext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"translationContext.d.ts","sourceRoot":"","sources":["../../../components/contexts/translationContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAA;AAExD,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAI5C,eAAO,MAAM,mBAAmB;kBAIhB,cAAc;cAClB,MAAM,SAAS;6CAK1B,CAAA;AAED,eAAO,MAAM,cAAc,sBAAuC,CAAA"}
@@ -1,5 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createContext, useContext } from "react";
3
- const TranslationContext = createContext({});
4
- export const TranslationProvider = ({ translations, children, }) => (_jsx(TranslationContext.Provider, Object.assign({ value: translations }, { children: children })));
5
- export const useTranslation = () => useContext(TranslationContext);
@@ -1,23 +0,0 @@
1
- type OpenProductFn = (arg: {
2
- productId: string;
3
- }) => void;
4
- type OpenCollectionFn = (arg: {
5
- collectionId: string;
6
- }) => void;
7
- type OpenScreenFn = (arg: {
8
- destination: {
9
- type: "internal" | "web";
10
- url: string;
11
- };
12
- }) => void;
13
- type DestinationType = "product" | "collection" | "url" | "app-screen";
14
- interface UseDestinationProps {
15
- openProduct: OpenProductFn;
16
- openCollection: OpenCollectionFn;
17
- openScreen: OpenScreenFn;
18
- type: DestinationType;
19
- location: string;
20
- }
21
- export declare const useDestination: ({ openProduct, openCollection, openScreen, type, location, }: UseDestinationProps) => (() => void);
22
- export {};
23
- //# sourceMappingURL=use-destination.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-destination.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-destination.ts"],"names":[],"mappings":"AAEA,KAAK,aAAa,GAAG,CAAC,GAAG,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAA;AACzD,KAAK,gBAAgB,GAAG,CAAC,GAAG,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAA;AAC/D,KAAK,YAAY,GAAG,CAAC,GAAG,EAAE;IACxB,WAAW,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,KAAK,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CACvD,KAAK,IAAI,CAAA;AAEV,KAAK,eAAe,GAAG,SAAS,GAAG,YAAY,GAAG,KAAK,GAAG,YAAY,CAAA;AAEtE,UAAU,mBAAmB;IAC3B,WAAW,EAAE,aAAa,CAAA;IAC1B,cAAc,EAAE,gBAAgB,CAAA;IAChC,UAAU,EAAE,YAAY,CAAA;IACxB,IAAI,EAAE,eAAe,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,cAAc,iEAMxB,mBAAmB,KAAG,CAAC,MAAM,IAAI,CAYnC,CAAA"}
@@ -1,13 +0,0 @@
1
- "use client";
2
- export const useDestination = ({ openProduct, openCollection, openScreen, type, location, }) => {
3
- switch (type) {
4
- case "product":
5
- return () => openProduct({ productId: location });
6
- case "collection":
7
- return () => openCollection({ collectionId: location });
8
- case "url":
9
- return () => openScreen({ destination: { type: "web", url: location } });
10
- case "app-screen":
11
- return () => openScreen({ destination: { type: "internal", url: location } });
12
- }
13
- };
@@ -1,8 +0,0 @@
1
- import React from "react";
2
- declare const useTap: (tapThreshold?: number) => {
3
- onTap: (handler: (event: any) => void) => (event: any) => void;
4
- isPressed: boolean;
5
- ref: React.MutableRefObject<null>;
6
- };
7
- export { useTap };
8
- //# sourceMappingURL=use-tap.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-tap.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-tap.ts"],"names":[],"mappings":"AACA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAuFvE,QAAA,MAAM,MAAM;6BAuBkC,GAAG,KAAK,IAAI,aACvC,GAAG;;;CAerB,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -1,100 +0,0 @@
1
- "use client";
2
- import { useState, useEffect, useCallback, useRef } from "react";
3
- // Shared manager for all instances of the hook
4
- const tapManager = (() => {
5
- const elements = new Map();
6
- let isListening = false;
7
- const startListening = () => {
8
- if (isListening)
9
- return;
10
- const handleTouchStart = (e) => {
11
- const touch = e.touches[0];
12
- elements.forEach((data, el) => {
13
- if (el.contains(touch.target)) {
14
- data.touchStarted = true;
15
- data.touchMoved = false;
16
- data.startPosition = { x: touch.clientX, y: touch.clientY };
17
- // Don't set isPressed here, wait to determine if it's a tap or drag
18
- }
19
- });
20
- };
21
- const handleTouchMove = (e) => {
22
- const touch = e.touches[0];
23
- elements.forEach((data, el) => {
24
- if (data.touchStarted) {
25
- const deltaX = Math.abs(touch.clientX - data.startPosition.x);
26
- const deltaY = Math.abs(touch.clientY - data.startPosition.y);
27
- if (deltaX > data.tapThreshold || deltaY > data.tapThreshold) {
28
- data.touchMoved = true;
29
- data.setIsPressed(false);
30
- }
31
- }
32
- });
33
- };
34
- const handleTouchEnd = () => {
35
- elements.forEach((data) => {
36
- if (data.touchStarted) {
37
- data.touchStarted = false;
38
- if (!data.touchMoved) {
39
- // It's a tap, set isPressed briefly
40
- data.setIsPressed(true);
41
- setTimeout(() => data.setIsPressed(false), 100);
42
- }
43
- }
44
- });
45
- };
46
- document.addEventListener("touchstart", (e) => handleTouchStart(e), { passive: true });
47
- document.addEventListener("touchmove", (e) => handleTouchMove(e), { passive: true });
48
- document.addEventListener("touchend", () => handleTouchEnd(), {
49
- passive: true,
50
- });
51
- isListening = true;
52
- };
53
- return {
54
- register: (el, data) => {
55
- elements.set(el, data);
56
- startListening();
57
- },
58
- unregister: (el) => {
59
- elements.delete(el);
60
- },
61
- elements,
62
- };
63
- })();
64
- const useTap = (tapThreshold = 10) => {
65
- const [isPressed, setIsPressed] = useState(false);
66
- const elementRef = useRef(null);
67
- useEffect(() => {
68
- const element = elementRef.current;
69
- if (!element)
70
- return;
71
- const data = {
72
- touchStarted: false,
73
- touchMoved: false,
74
- startPosition: { x: 0, y: 0 },
75
- setIsPressed,
76
- tapThreshold,
77
- };
78
- tapManager.register(element, data);
79
- return () => {
80
- tapManager.unregister(element);
81
- };
82
- }, [tapThreshold]);
83
- const onTap = useCallback((handler) => {
84
- return (event) => {
85
- const data = tapManager.elements.get(elementRef.current);
86
- if (!data)
87
- return;
88
- if (event.type === "touchend" && !data.touchMoved) {
89
- handler(event);
90
- }
91
- else if (event.type === "click" && !data.touchStarted) {
92
- handler(event);
93
- setIsPressed(true);
94
- setTimeout(() => setIsPressed(false), 100);
95
- }
96
- };
97
- }, []);
98
- return { onTap, isPressed, ref: elementRef };
99
- };
100
- export { useTap };
@@ -1,8 +0,0 @@
1
- import React from "react";
2
- declare const useTap: (tapThreshold?: number) => {
3
- onTap: (handler: (event: any) => void) => (event: any) => void;
4
- isPressed: boolean;
5
- ref: React.MutableRefObject<null>;
6
- };
7
- export { useTap };
8
- //# sourceMappingURL=use-tap.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-tap.d.ts","sourceRoot":"","sources":["../../../components/ui/use-tap.ts"],"names":[],"mappings":"AACA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAuFvE,QAAA,MAAM,MAAM;6BAuBkC,GAAG,KAAK,IAAI,aACvC,GAAG;;;CAerB,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -1,100 +0,0 @@
1
- "use client";
2
- import { useState, useEffect, useCallback, useRef } from "react";
3
- // Shared manager for all instances of the hook
4
- const tapManager = (() => {
5
- const elements = new Map();
6
- let isListening = false;
7
- const startListening = () => {
8
- if (isListening)
9
- return;
10
- const handleTouchStart = (e) => {
11
- const touch = e.touches[0];
12
- elements.forEach((data, el) => {
13
- if (el.contains(touch.target)) {
14
- data.touchStarted = true;
15
- data.touchMoved = false;
16
- data.startPosition = { x: touch.clientX, y: touch.clientY };
17
- // Don't set isPressed here, wait to determine if it's a tap or drag
18
- }
19
- });
20
- };
21
- const handleTouchMove = (e) => {
22
- const touch = e.touches[0];
23
- elements.forEach((data, el) => {
24
- if (data.touchStarted) {
25
- const deltaX = Math.abs(touch.clientX - data.startPosition.x);
26
- const deltaY = Math.abs(touch.clientY - data.startPosition.y);
27
- if (deltaX > data.tapThreshold || deltaY > data.tapThreshold) {
28
- data.touchMoved = true;
29
- data.setIsPressed(false);
30
- }
31
- }
32
- });
33
- };
34
- const handleTouchEnd = () => {
35
- elements.forEach((data) => {
36
- if (data.touchStarted) {
37
- data.touchStarted = false;
38
- if (!data.touchMoved) {
39
- // It's a tap, set isPressed briefly
40
- data.setIsPressed(true);
41
- setTimeout(() => data.setIsPressed(false), 100);
42
- }
43
- }
44
- });
45
- };
46
- document.addEventListener("touchstart", (e) => handleTouchStart(e), { passive: true });
47
- document.addEventListener("touchmove", (e) => handleTouchMove(e), { passive: true });
48
- document.addEventListener("touchend", () => handleTouchEnd(), {
49
- passive: true,
50
- });
51
- isListening = true;
52
- };
53
- return {
54
- register: (el, data) => {
55
- elements.set(el, data);
56
- startListening();
57
- },
58
- unregister: (el) => {
59
- elements.delete(el);
60
- },
61
- elements,
62
- };
63
- })();
64
- const useTap = (tapThreshold = 10) => {
65
- const [isPressed, setIsPressed] = useState(false);
66
- const elementRef = useRef(null);
67
- useEffect(() => {
68
- const element = elementRef.current;
69
- if (!element)
70
- return;
71
- const data = {
72
- touchStarted: false,
73
- touchMoved: false,
74
- startPosition: { x: 0, y: 0 },
75
- setIsPressed,
76
- tapThreshold,
77
- };
78
- tapManager.register(element, data);
79
- return () => {
80
- tapManager.unregister(element);
81
- };
82
- }, [tapThreshold]);
83
- const onTap = useCallback((handler) => {
84
- return (event) => {
85
- const data = tapManager.elements.get(elementRef.current);
86
- if (!data)
87
- return;
88
- if (event.type === "touchend" && !data.touchMoved) {
89
- handler(event);
90
- }
91
- else if (event.type === "click" && !data.touchStarted) {
92
- handler(event);
93
- setIsPressed(true);
94
- setTimeout(() => setIsPressed(false), 100);
95
- }
96
- };
97
- }, []);
98
- return { onTap, isPressed, ref: elementRef };
99
- };
100
- export { useTap };
@@ -1,18 +0,0 @@
1
- import * as React from "react";
2
- type VideoAttributes = {
3
- enabled: boolean;
4
- aspectRatio: string;
5
- videoFit: "fill" | "fit";
6
- overlayOpacity: number;
7
- autoplay: boolean;
8
- videoSound: boolean;
9
- };
10
- interface VideoProps extends React.VideoHTMLAttributes<HTMLVideoElement> {
11
- src: string;
12
- videoAttributes: VideoAttributes;
13
- naturalAspectRatio?: string;
14
- className?: string;
15
- }
16
- declare const Video: ({ src, videoAttributes, naturalAspectRatio, className, ...props }: VideoProps) => import("react/jsx-runtime").JSX.Element;
17
- export { Video };
18
- //# sourceMappingURL=video%20copy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"video copy.d.ts","sourceRoot":"","sources":["../../../components/ui/video copy.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,UAAU,UAAW,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;IACtE,GAAG,EAAE,MAAM,CAAA;IACX,eAAe,EAAE,eAAe,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,QAAA,MAAM,KAAK,sEAMR,UAAU,4CA0DZ,CAAA;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -1,70 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __rest = (this && this.__rest) || function (s, e) {
11
- var t = {};
12
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
13
- t[p] = s[p];
14
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
15
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
16
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
17
- t[p[i]] = s[p[i]];
18
- }
19
- return t;
20
- };
21
- import { jsx as _jsx } from "react/jsx-runtime";
22
- import * as React from "react";
23
- import { cn } from "../../lib/utils";
24
- const videoVariants = {
25
- base: "w-full",
26
- fit: {
27
- cover: "object-cover",
28
- contain: "object-contain",
29
- },
30
- };
31
- const Video = (_a) => {
32
- var { src, videoAttributes, naturalAspectRatio = "1/1", className } = _a, props = __rest(_a, ["src", "videoAttributes", "naturalAspectRatio", "className"]);
33
- const videoRef = React.useRef(null);
34
- React.useEffect(() => {
35
- const video = videoRef.current;
36
- if (!video)
37
- return;
38
- // Handle autoplay with sound restrictions
39
- const setupVideo = () => __awaiter(void 0, void 0, void 0, function* () {
40
- try {
41
- if (videoAttributes.autoplay) {
42
- // Always start muted to ensure autoplay works
43
- video.muted = true;
44
- yield video.play();
45
- // If sound is enabled, unmute after autoplay starts
46
- if (videoAttributes.videoSound) {
47
- video.muted = false;
48
- }
49
- }
50
- }
51
- catch (error) {
52
- console.error("Error setting up video:", error);
53
- // Fallback to showing controls if autoplay fails
54
- if (video) {
55
- video.controls = true;
56
- }
57
- }
58
- });
59
- setupVideo();
60
- }, [videoAttributes.autoplay, videoAttributes.videoSound]);
61
- const videoStyle = {
62
- aspectRatio: videoAttributes.enabled && videoAttributes.aspectRatio !== "auto"
63
- ? videoAttributes.aspectRatio.replace(":", "/")
64
- : naturalAspectRatio.replace(":", "/"),
65
- };
66
- return (_jsx("video", Object.assign({ ref: videoRef, className: cn(videoVariants.base, videoAttributes.videoFit === "fill"
67
- ? videoVariants.fit.cover
68
- : videoVariants.fit.contain, className), style: videoStyle, preload: "metadata", playsInline: true, loop: videoAttributes.enabled, controls: videoAttributes.enabled && !videoAttributes.autoplay, src: src }, props)));
69
- };
70
- export { Video };
@@ -1,18 +0,0 @@
1
- import * as React from "react";
2
- type VideoAttributes = {
3
- enabled: boolean;
4
- aspectRatio: string;
5
- videoFit: "fill" | "fit";
6
- overlayOpacity: number;
7
- autoplay: boolean;
8
- videoSound: boolean;
9
- };
10
- interface VideoProps extends React.VideoHTMLAttributes<HTMLVideoElement> {
11
- src: string;
12
- videoAttributes: VideoAttributes;
13
- naturalAspectRatio?: string;
14
- className?: string;
15
- }
16
- declare const Video: ({ src, videoAttributes, naturalAspectRatio, className, ...props }: VideoProps) => import("react/jsx-runtime").JSX.Element;
17
- export { Video as VideoV2 };
18
- //# sourceMappingURL=video.v2.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"video.v2.d.ts","sourceRoot":"","sources":["../../../components/ui/video.v2.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,UAAU,UAAW,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;IACtE,GAAG,EAAE,MAAM,CAAA;IACX,eAAe,EAAE,eAAe,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,QAAA,MAAM,KAAK,sEAMR,UAAU,4CA0DZ,CAAA;AAED,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,CAAA"}
@@ -1,70 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __rest = (this && this.__rest) || function (s, e) {
11
- var t = {};
12
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
13
- t[p] = s[p];
14
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
15
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
16
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
17
- t[p[i]] = s[p[i]];
18
- }
19
- return t;
20
- };
21
- import { jsx as _jsx } from "react/jsx-runtime";
22
- import * as React from "react";
23
- import { cn } from "../../lib/utils";
24
- const videoVariants = {
25
- base: "w-full",
26
- fit: {
27
- cover: "object-cover",
28
- contain: "object-contain",
29
- },
30
- };
31
- const Video = (_a) => {
32
- var { src, videoAttributes, naturalAspectRatio = "1/1", className } = _a, props = __rest(_a, ["src", "videoAttributes", "naturalAspectRatio", "className"]);
33
- const videoRef = React.useRef(null);
34
- React.useEffect(() => {
35
- const video = videoRef.current;
36
- if (!video)
37
- return;
38
- // Handle autoplay with sound restrictions
39
- const setupVideo = () => __awaiter(void 0, void 0, void 0, function* () {
40
- try {
41
- if (videoAttributes.autoplay) {
42
- // Always start muted to ensure autoplay works
43
- video.muted = true;
44
- yield video.play();
45
- // If sound is enabled, unmute after autoplay starts
46
- if (videoAttributes.videoSound) {
47
- video.muted = false;
48
- }
49
- }
50
- }
51
- catch (error) {
52
- console.error("Error setting up video:", error);
53
- // Fallback to showing controls if autoplay fails
54
- if (video) {
55
- video.controls = true;
56
- }
57
- }
58
- });
59
- setupVideo();
60
- }, [videoAttributes.autoplay, videoAttributes.videoSound]);
61
- const videoStyle = {
62
- aspectRatio: videoAttributes.enabled && videoAttributes.aspectRatio !== "auto"
63
- ? videoAttributes.aspectRatio.replace(":", "/")
64
- : naturalAspectRatio.replace(":", "/"),
65
- };
66
- return (_jsx("video", Object.assign({ ref: videoRef, className: cn(videoVariants.base, videoAttributes.videoFit === "fill"
67
- ? videoVariants.fit.cover
68
- : videoVariants.fit.contain, className), style: videoStyle, preload: "metadata", playsInline: true, loop: videoAttributes.enabled, controls: videoAttributes.enabled && !videoAttributes.autoplay, src: src }, props)));
69
- };
70
- export { Video as VideoV2 };
@@ -1,59 +0,0 @@
1
- export { cn, cva, getColor, getBackgroundAndPaddingStyle, getBorderSidesStyle, getTextStyle, getVerticalAlignmentStyle, getBackgroundAndSpacingStyle, getIdFromGid, productGidFromId, variantGidFromId, getPaddingStyle, getVerticalAlignment, mapFlexToAlignment, formatRelativeTime, stringRatioToInt, getOverlayStyle, getDestinationHandler, createCollectionImageMap, } from "./lib/utils";
2
- export * from "./components/hooks/use-collection";
3
- export * from "./components/hooks/use-infinite-scroll";
4
- export * from "./components/hooks/use-recommendations";
5
- export * from "./components/hooks/use-products";
6
- export * from "./components/hooks/use-scroll-direction";
7
- export * from "./components/hooks/use-sort-filter";
8
- export * from "./components/hooks/use-product-options";
9
- export * from "./components/hooks/use-shop";
10
- export * from "./components/hooks/use-tap";
11
- export * from "./components/ui/accordion";
12
- export * from "./components/ui/aspect-ratio";
13
- export * from "./components/ui/badge";
14
- export * from "./components/ui/button";
15
- export * from "./components/ui/carousel";
16
- export * from "./components/ui/checkbox";
17
- export * from "./components/ui/chip";
18
- export * from "./components/ui/color-swatch";
19
- export * from "./components/ui/container";
20
- export * from "./components/ui/drawer";
21
- export * from "./components/ui/dropdown";
22
- export * from "./components/ui/empty-message";
23
- export * from "./components/ui/favorite";
24
- export * from "./components/ui/grid";
25
- export * from "./components/ui/icon";
26
- export * from "./components/ui/image";
27
- export * from "./components/ui/Input/input";
28
- export * from "./components/ui/label";
29
- export * from "./components/ui/line-item-text-icons";
30
- export * from "./components/ui/money";
31
- export * from "./components/ui/price";
32
- export * from "./components/ui/product-card";
33
- export * from "./components/ui/quantity-picker";
34
- export * from "./components/ui/radio-group";
35
- export * from "./components/ui/scroll-area";
36
- export * from "./components/ui/selectors";
37
- export * from "./components/ui/separator";
38
- export * from "./components/ui/skeleton";
39
- export * from "./components/ui/slider";
40
- export * from "./components/ui/subscription";
41
- export * from "./components/ui/switch";
42
- export * from "./components/ui/tabs";
43
- export * from "./components/ui/text";
44
- export * from "./components/ui/textarea";
45
- export * from "./components/ui/toast";
46
- export * from "./components/ui/toaster";
47
- export * from "./components/ui/toggle-group";
48
- export * from "./components/ui/toggle";
49
- export * from "./components/ui/use-toast";
50
- export * from "./components/ui/video";
51
- export * from "./components/ui/video.v2";
52
- export * from "./components/ui/wishlist";
53
- export * from "./components/ui/wishlist-select";
54
- export * from "./components/hooks/use-shop";
55
- export * from "./components/libs/sort-filter/search-integration";
56
- export * from "./components/hooks/use-reviews";
57
- export * from "./components/ui/subcollection-tabs";
58
- export * from "./components/libs/sort-filter/search-integration";
59
- //# sourceMappingURL=index%20copy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index copy.d.ts","sourceRoot":"","sources":["../index copy.ts"],"names":[],"mappings":"AACA,OAAO,EACL,EAAE,EACF,GAAG,EACH,QAAQ,EACR,4BAA4B,EAC5B,mBAAmB,EACnB,YAAY,EACZ,yBAAyB,EACzB,4BAA4B,EAC5B,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,aAAa,CAAA;AACpB,cAAc,mCAAmC,CAAA;AACjD,cAAc,wCAAwC,CAAA;AACtD,cAAc,wCAAwC,CAAA;AACtD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yCAAyC,CAAA;AACvD,cAAc,oCAAoC,CAAA;AAClD,cAAc,wCAAwC,CAAA;AACtD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,uBAAuB,CAAA;AACrC,cAAc,sCAAsC,CAAA;AACpD,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kDAAkD,CAAA;AAChE,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oCAAoC,CAAA;AAClD,cAAc,kDAAkD,CAAA"}