@tapcart/mobile-components 0.7.21 → 0.7.22

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 (48) 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/input.d.ts +17 -0
  4. package/dist/components/ui/input.d.ts.map +1 -0
  5. package/dist/components/ui/input.js +35 -0
  6. package/dist/components/ui/product-grid.d.ts +15 -0
  7. package/dist/components/ui/product-grid.d.ts.map +1 -0
  8. package/dist/components/ui/product-grid.js +22 -0
  9. package/package.json +18 -18
  10. package/dist/components/contexts/translationContext.d.ts +0 -9
  11. package/dist/components/contexts/translationContext.d.ts.map +0 -1
  12. package/dist/components/contexts/translationContext.js +0 -5
  13. package/dist/components/hooks/use-destination.d.ts +0 -23
  14. package/dist/components/hooks/use-destination.d.ts.map +0 -1
  15. package/dist/components/hooks/use-destination.js +0 -13
  16. package/dist/components/ui/use-tap.d.ts +0 -8
  17. package/dist/components/ui/use-tap.d.ts.map +0 -1
  18. package/dist/components/ui/use-tap.js +0 -100
  19. package/dist/components/ui/video copy.d.ts +0 -18
  20. package/dist/components/ui/video copy.d.ts.map +0 -1
  21. package/dist/components/ui/video copy.js +0 -70
  22. package/dist/components/ui/video.v2.d.ts +0 -18
  23. package/dist/components/ui/video.v2.d.ts.map +0 -1
  24. package/dist/components/ui/video.v2.js +0 -70
  25. package/dist/index copy.d.ts +0 -59
  26. package/dist/index copy.d.ts.map +0 -1
  27. package/dist/index copy.js +0 -59
  28. package/dist/lib/utils/destination.d.ts +0 -17
  29. package/dist/lib/utils/destination.d.ts.map +0 -1
  30. package/dist/lib/utils/destination.js +0 -15
  31. package/dist/lib/utils/id.d.ts +0 -5
  32. package/dist/lib/utils/id.d.ts.map +0 -1
  33. package/dist/lib/utils/id.js +0 -29
  34. package/dist/lib/utils/index.d.ts +0 -18
  35. package/dist/lib/utils/index.d.ts.map +0 -1
  36. package/dist/lib/utils/index.js +0 -55
  37. package/dist/lib/utils/misc.d.ts +0 -1
  38. package/dist/lib/utils/misc.d.ts.map +0 -1
  39. package/dist/lib/utils/misc.js +0 -1
  40. package/dist/lib/utils/style.d.ts +0 -154
  41. package/dist/lib/utils/style.d.ts.map +0 -1
  42. package/dist/lib/utils/style.js +0 -148
  43. package/dist/lib/utils.deprecated.d.ts +0 -181
  44. package/dist/lib/utils.deprecated.d.ts.map +0 -1
  45. package/dist/lib/utils.deprecated.js +0 -222
  46. package/dist/v2.d.ts +0 -59
  47. package/dist/v2.d.ts.map +0 -1
  48. 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";
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const inputVariants: (props?: ({
4
+ error?: boolean | null | undefined;
5
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
6
+ export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "onChange">, VariantProps<typeof inputVariants> {
7
+ id: string;
8
+ label?: string;
9
+ icon?: string;
10
+ asChild?: boolean;
11
+ value: string;
12
+ placeholder: string;
13
+ onChange: (_: string) => void;
14
+ }
15
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
16
+ export { Input };
17
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../components/ui/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,aAAa;;mFAalB,CAAA;AAED,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,EACnE,YAAY,CAAC,OAAO,aAAa,CAAC;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9B;AAED,QAAA,MAAM,KAAK,qFAkDV,CAAA;AAGD,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,35 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import * as React from "react";
14
+ import { Slot } from "@radix-ui/react-slot";
15
+ import { cva } from "class-variance-authority";
16
+ import { cn } from "../../lib/utils";
17
+ import { Icon } from "./icon";
18
+ const inputVariants = cva("flex h-14 w-full rounded border border-coreColors-dividingLines bg-coreColors-inputBackground px-4 pt-5 pb-2 placeholder-shown:p-4 text-textColors-primaryColor text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-textColors-secondaryColor focus-visible:outline-none focus-visible:ring-0 disabled:cursor-not-allowed disabled:opacity-50 focus:border-coreColors-brandColorPrimary peer data-[icon=true]:pr-10", {
19
+ variants: {
20
+ error: {
21
+ true: "border-stateColors-error text-stateColors-error placeholder:text-stateColors-error focus:border-stateColors-error [&+label]:text-stateColors-error",
22
+ false: "",
23
+ },
24
+ },
25
+ defaultVariants: {
26
+ error: false,
27
+ },
28
+ });
29
+ const Input = React.forwardRef((_a, ref) => {
30
+ var { className, error = false, id, type, label, icon, asChild, value, placeholder, onChange } = _a, props = __rest(_a, ["className", "error", "id", "type", "label", "icon", "asChild", "value", "placeholder", "onChange"]);
31
+ const Comp = asChild ? Slot : "div";
32
+ return (_jsxs(Comp, Object.assign({ className: "relative group" }, { children: [_jsx("input", Object.assign({ placeholder: placeholder, value: value, onChange: (e) => onChange(e.target.value), id: id, type: type, className: cn(inputVariants({ error }), className), "data-icon": !!icon, ref: ref }, props)), label ? (_jsx("label", Object.assign({ htmlFor: id, className: "absolute text-[10px] text-textColors-secondaryColor group-active:text-coreColors-brandColorPrimary top-2 z-10 h-4 origin-[0] start-4 opacity-100 peer-placeholder-shown:opacity-0" }, { children: label }))) : null, icon ? (_jsx(Icon, { name: icon, "data-error": error, size: "sm", className: "absolute w-5 aspect-square fill-current text-textColors-secondaryColor top-[18px] z-10 origin-[0] end-4 peer-pr-8 icon data-[error=true]:text-stateColors-error" })) : null] })));
33
+ });
34
+ Input.displayName = "Input";
35
+ export { Input };
@@ -0,0 +1,15 @@
1
+ type Product = any;
2
+ interface PageData {
3
+ products: Product[];
4
+ cursorBlob?: string;
5
+ filtersData: any;
6
+ }
7
+ interface ProductGridItemsProps {
8
+ initialData: PageData;
9
+ loadMoreProducts: (params: any) => Promise<PageData>;
10
+ queryVariables: Record<string, any>;
11
+ config: Record<string, any>;
12
+ }
13
+ declare function ProductGrid({ loadMoreProducts, initialData, queryVariables, config, }: ProductGridItemsProps): import("react/jsx-runtime").JSX.Element;
14
+ export { ProductGrid };
15
+ //# sourceMappingURL=product-grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-grid.d.ts","sourceRoot":"","sources":["../../../components/ui/product-grid.tsx"],"names":[],"mappings":"AAkBA,KAAK,OAAO,GAAG,GAAG,CAAA;AAClB,UAAU,QAAQ;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,GAAG,CAAA;CACjB;AAED,UAAU,qBAAqB;IAC7B,WAAW,EAAE,QAAQ,CAAA;IACrB,gBAAgB,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IACpD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC5B;AAED,iBAAS,WAAW,CAAC,EACnB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,MAAM,GACP,EAAE,qBAAqB,2CAmCvB;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useInfiniteScroll } from "../hooks/use-infinite-scroll";
4
+ import { ProductCard } from "./product-card";
5
+ const Loader = () => (_jsx("div", Object.assign({ className: "grid-cols-2 lg:grid-cols-3" }, { children: Array(4)
6
+ .fill(0)
7
+ .map((_, index) => (_jsx("div", { className: "aspect-[2/3] animate-pulse bg-neutral-100 dark:bg-neutral-900" }, index))) })));
8
+ function ProductGrid({ loadMoreProducts, initialData, queryVariables, config, }) {
9
+ const { data, error, isLoadingInitialData, isLoadingMore, isEmpty, isReachingEnd, ref, products, } = useInfiniteScroll({
10
+ initialData,
11
+ loadMoreProducts,
12
+ queryVariables,
13
+ });
14
+ if (error)
15
+ return _jsx("div", { children: "Failed to load data" });
16
+ if (isLoadingInitialData)
17
+ return _jsx(Loader, {});
18
+ return (_jsxs(_Fragment, { children: [_jsx("div", Object.assign({ className: "grid-cols-2 lg:grid-cols-3" }, { children: products.map((product, i) => (_jsx(ProductCard, {
19
+ // @ts-expect-error
20
+ product: product, config: config, isLoading: false }, product.handle))) })), isLoadingMore ? _jsx(Loader, {}) : _jsx("div", { ref: ref })] }));
21
+ }
22
+ export { ProductGrid };
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.22",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "style": "dist/styles.css",
@@ -11,18 +11,6 @@
11
11
  "license": "SEE LICENSE IN LICENSE.md",
12
12
  "author": "Tapcart Inc.",
13
13
  "homepage": "https://tapcart.com",
14
- "scripts": {
15
- "lint": "eslint \"**/*.ts*\"",
16
- "ui:add": "pnpm dlx shadcn-ui@latest add",
17
- "build:styles": "postcss styles/globals.css -o dist/styles.css",
18
- "build:ts": "tsc -p tsconfig.json && tsc-alias",
19
- "build": "pnpm run build:ts && pnpm run build:styles",
20
- "dev:ts": "tsc -w -p tsconfig.json",
21
- "dev:styles": "npx tailwindcss -i styles/globals.css -o dist/styles.css --watch",
22
- "dev": "concurrently \"pnpm run dev:ts\" \"pnpm run dev:styles\"",
23
- "test": "jest",
24
- "test:watch": "jest --watch"
25
- },
26
14
  "peerDependencies": {
27
15
  "react": "^17.0.2 || ^18.0.0",
28
16
  "react-dom": "^17.0.2 || ^18.0.0"
@@ -32,19 +20,19 @@
32
20
  "@types/lodash": "4.17.5",
33
21
  "@types/react": "^18.2.0",
34
22
  "@types/react-dom": "^18.2.0",
35
- "app-studio-types": "workspace:*",
36
23
  "autoprefixer": "^10.4.14",
37
24
  "chokidar-cli": "^3.0.0",
38
25
  "concurrently": "^8.2.2",
39
26
  "eslint": "^7.32.0",
40
- "eslint-config-custom": "workspace:*",
41
27
  "jest": "^29.7.0",
42
28
  "postcss": "^8.4.24",
43
29
  "tailwindcss": "^3.3.2",
44
30
  "ts-jest": "^29.2.5",
45
31
  "tsc-alias": "^1.8.10",
46
- "tsconfig": "workspace:*",
47
- "typescript": "^4.5.2"
32
+ "typescript": "^4.5.2",
33
+ "tsconfig": "0.0.0",
34
+ "eslint-config-custom": "0.0.0",
35
+ "app-studio-types": "0.0.5"
48
36
  },
49
37
  "dependencies": {
50
38
  "@radix-ui/react-accordion": "^1.1.2",
@@ -81,5 +69,17 @@
81
69
  "tailwind-merge": "^1.13.2",
82
70
  "tailwindcss-animate": "^1.0.6",
83
71
  "vaul": "0.9.1"
72
+ },
73
+ "scripts": {
74
+ "lint": "eslint \"**/*.ts*\"",
75
+ "ui:add": "pnpm dlx shadcn-ui@latest add",
76
+ "build:styles": "postcss styles/globals.css -o dist/styles.css",
77
+ "build:ts": "tsc -p tsconfig.json && tsc-alias",
78
+ "build": "pnpm run build:ts && pnpm run build:styles",
79
+ "dev:ts": "tsc -w -p tsconfig.json",
80
+ "dev:styles": "npx tailwindcss -i styles/globals.css -o dist/styles.css --watch",
81
+ "dev": "concurrently \"pnpm run dev:ts\" \"pnpm run dev:styles\"",
82
+ "test": "jest",
83
+ "test:watch": "jest --watch"
84
84
  }
85
- }
85
+ }
@@ -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/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"}