@tapcart/mobile-components 0.5.9 → 0.6.1

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.
@@ -0,0 +1,9 @@
1
+ import { ProductVariant } from "app-studio-types";
2
+ type SelectedOptions = Record<string, string>;
3
+ export declare function useProductOptions(variants: ProductVariant[] | undefined | null): {
4
+ selectedOptions: SelectedOptions;
5
+ handleSelect: (optionName: string, optionValue: string) => void;
6
+ selectedVariant: ProductVariant | undefined;
7
+ };
8
+ export {};
9
+ //# sourceMappingURL=use-product-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-product-options.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-product-options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAE7C,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,cAAc,EAAE,GAAG,SAAS,GAAG,IAAI;;+BAyCX,MAAM,eAAe,MAAM,KAAG,IAAI;;EAwBrE"}
@@ -0,0 +1,44 @@
1
+ "use client";
2
+ import { useState, useEffect, useMemo } from "react";
3
+ export function useProductOptions(variants) {
4
+ const safeVariants = useMemo(() => variants || [], [variants]);
5
+ const getCheapestProductFromVariants = useMemo(() => {
6
+ return () => {
7
+ if (!safeVariants.length)
8
+ return null;
9
+ const availableVariants = safeVariants.filter((variant) => variant.availableForSale);
10
+ const activeVariants = availableVariants.length
11
+ ? availableVariants
12
+ : safeVariants;
13
+ return activeVariants.reduce((lowest, current) => {
14
+ return current.price.amount < lowest.price.amount ? current : lowest;
15
+ });
16
+ };
17
+ }, [safeVariants]);
18
+ const initializeSelectedOptions = useMemo(() => {
19
+ return () => {
20
+ const lowestPriceVariant = getCheapestProductFromVariants();
21
+ if (lowestPriceVariant) {
22
+ const selectedOptions = {};
23
+ lowestPriceVariant.selectedOptions.forEach((option) => {
24
+ selectedOptions[option.name] = option.value;
25
+ });
26
+ return selectedOptions;
27
+ }
28
+ return {};
29
+ };
30
+ }, [getCheapestProductFromVariants]);
31
+ const [selectedOptions, setSelectedOptions] = useState(initializeSelectedOptions());
32
+ const handleSelect = (optionName, optionValue) => {
33
+ setSelectedOptions((prevOptions) => (Object.assign(Object.assign({}, prevOptions), { [optionName]: optionValue })));
34
+ };
35
+ useEffect(() => {
36
+ setSelectedOptions(initializeSelectedOptions());
37
+ }, [safeVariants, initializeSelectedOptions]);
38
+ const selectedVariant = useMemo(() => safeVariants.find((v) => v.selectedOptions.every((o) => selectedOptions[o.name] === o.value)), [safeVariants, selectedOptions]);
39
+ return {
40
+ selectedOptions,
41
+ handleSelect,
42
+ selectedVariant,
43
+ };
44
+ }
@@ -0,0 +1,15 @@
1
+ import { Collection, Product } from "app-studio-types";
2
+ interface UseRecommendationProps {
3
+ queryVariables: Record<string, any>;
4
+ apiURL: string;
5
+ }
6
+ interface UseRecommendationReturn {
7
+ products: Product[];
8
+ collections: Collection[];
9
+ searches: string[];
10
+ isLoading: boolean;
11
+ error: any;
12
+ }
13
+ declare const useRecommendations: ({ queryVariables, apiURL }: UseRecommendationProps) => UseRecommendationReturn;
14
+ export { useRecommendations };
15
+ //# sourceMappingURL=use-recommendations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-recommendations.d.ts","sourceRoot":"","sources":["../../../components/hooks/use-recommendations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAKtD,UAAU,sBAAsB;IAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,MAAM,EAAE,MAAM,CAAA;CACf;AAED,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,GAAG,CAAA;CACX;AAOD,QAAA,MAAM,kBAAkB,+BAGrB,sBAAsB,KAAG,uBAsC3B,CAAA;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import { useSearchParams } from "next/navigation";
3
+ import useSWR from "swr";
4
+ const constructURL = (apiURL) => {
5
+ const url = new URL(apiURL);
6
+ return url.toString();
7
+ };
8
+ const useRecommendations = ({ queryVariables, apiURL }) => {
9
+ const searchParams = useSearchParams();
10
+ const recommendation = searchParams.get('recommendation');
11
+ const shouldFetch = recommendation && recommendation.trim().length > 0;
12
+ //To remove when pageState data is available to block tempaltes
13
+ const fetcher = (body) => fetch(constructURL(apiURL), {
14
+ method: "POST",
15
+ body: JSON.stringify(body),
16
+ }).then((res) => res.json());
17
+ const { data, error, isLoading } = useSWR(shouldFetch
18
+ ? {
19
+ appId: queryVariables.appId,
20
+ query: recommendation,
21
+ language: queryVariables.language,
22
+ }
23
+ : null, fetcher, {
24
+ revalidateOnFocus: false,
25
+ revalidateOnReconnect: false,
26
+ });
27
+ return {
28
+ products: data === null || data === void 0 ? void 0 : data.products,
29
+ collections: data === null || data === void 0 ? void 0 : data.collections,
30
+ searches: data === null || data === void 0 ? void 0 : data.searches,
31
+ isLoading: isLoading,
32
+ error: error
33
+ };
34
+ };
35
+ export { useRecommendations };
@@ -1 +1 @@
1
- {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../components/ui/icon.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAEL,eAAe,EAkChB,MAAM,qBAAqB,CAAA;AAI5B,QAAA,MAAM,YAAY;;;mFAgBjB,CAAA;AAsDD,MAAM,WAAW,SACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,EACzD,YAAY,CAAC,OAAO,YAAY,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AA8CD,iBAAS,IAAI,CAAC,EACZ,SAAS,EACT,IAAI,EACJ,IAAW,EACX,KAAK,EACL,SAAS,EACT,WAAW,EACX,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,2CAgBX;AAED,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../components/ui/icon.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAEL,eAAe,EA6EhB,MAAM,qBAAqB,CAAA;AAI5B,QAAA,MAAM,YAAY;;;mFAgBjB,CAAA;AAwGD,MAAM,WAAW,SACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,EACzD,YAAY,CAAC,OAAO,YAAY,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AA8CD,iBAAS,IAAI,CAAC,EACZ,SAAS,EACT,IAAI,EACJ,IAAW,EACX,KAAK,EACL,SAAS,EACT,WAAW,EACX,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,2CAgBX;AAED,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,CAAA"}
@@ -13,7 +13,7 @@ var __rest = (this && this.__rest) || function (s, e) {
13
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
14
  import { ReactSVG } from "react-svg";
15
15
  import { cva } from "class-variance-authority";
16
- import { IconUpload, IconPencilMinus, IconPlus, IconMinus, IconAdjustmentsAlt, IconArrowsSort, IconAlertCircle, IconCircleX, IconInfoCircle, IconCheck, IconSquareOff, IconMapPin, IconRepeat, IconSquare, IconSquareCheck, IconChevronUp, IconChevronRight, IconEyeOff, IconSquareX, IconCircle, IconChevronDown, IconHeartFilled, IconCurrencyDollar, IconX, IconCircleOff, IconCircleDotFilled, IconMoodSad, IconSquareXFilled, IconTrash, IconLoader2, IconColumns1, IconColumns2, IconColumns3, IconSearch, IconShoppingCartOff, } from "@tabler/icons-react";
16
+ import { IconUpload, IconPencilMinus, IconPlus, IconMinus, IconAdjustmentsAlt, IconArrowsSort, IconAlertCircle, IconCircleX, IconInfoCircle, IconCheck, IconSquareOff, IconMapPin, IconRepeat, IconSquare, IconSquareCheck, IconChevronUp, IconChevronRight, IconEyeOff, IconSquareX, IconCircle, IconChevronDown, IconHeartFilled, IconCurrencyDollar, IconX, IconCircleOff, IconCircleDotFilled, IconMoodSad, IconSquareXFilled, IconTrash, IconLoader2, IconColumns1, IconColumns2, IconColumns3, IconSearch, IconShoppingCartOff, IconBolt, IconStar, IconUser, IconBell, IconShoppingBag, IconBottle, IconRosetteDiscountCheck, IconAlignLeft, IconCheese, IconBaselineDensityMedium, IconBrandInstagram, IconListSearch, IconMail, IconMessage2, IconShirt, IconLayoutGrid, IconRosetteDiscount, IconShoe, IconTag, IconWorld, IconLifebuoy, IconDots, IconHanger, IconNotes, IconToolsKitchen2, IconPackage, IconBookmark, IconBuildingStore, IconEyeglass2, IconGift, IconLicense, IconMessage, IconSpeakerphone, IconShoppingCart, IconReceipt2, IconFilePencil, IconPhoto, IconAppWindow, IconBoxMultiple, IconMilk, IconDeviceWatch, IconDeviceIpadHeart, IconMap2, } from "@tabler/icons-react";
17
17
  import { cn, iconColorVariantClasses } from "../../lib/utils";
18
18
  const iconVariants = cva("inline-flex items-center justify-center text-sm font-medium focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background", {
19
19
  variants: {
@@ -62,7 +62,57 @@ const icons = {
62
62
  circle: IconCircle,
63
63
  "chevron-down": IconChevronDown,
64
64
  "heart-filled": IconHeartFilled,
65
+ "menu-icon-about": IconBuildingStore,
66
+ "menu-icon-account": IconUser,
67
+ "menu-icon-alerts": IconBell,
68
+ "menu-icon-bag": IconShoppingBag,
69
+ "menu-icon-blog": IconAppWindow,
70
+ // "menu-icon-banana":
71
+ "menu-icon-bookmark": IconBookmark,
72
+ "menu-icon-beer": IconBottle,
73
+ "menu-icon-cards": IconBoxMultiple,
74
+ "menu-icon-cart": IconShoppingCart,
75
+ "menu-icon-carton": IconMilk,
76
+ "menu-icon-check": IconRosetteDiscountCheck,
77
+ "menu-icon-cheese": IconCheese,
78
+ "menu-icon-contact": IconMessage,
79
+ "menu-icon-delivery": IconPackage,
80
+ // "menu-icon-dresser": ,
81
+ "menu-icon-fork": IconToolsKitchen2,
82
+ "menu-icon-fullhamburger": IconBaselineDensityMedium,
83
+ "menu-icon-glasses": IconEyeglass2,
84
+ "menu-icon-globe": IconWorld,
85
+ "menu-icon-grid": IconLayoutGrid,
86
+ "menu-icon-hanger": IconHanger,
87
+ "menu-icon-hamburger": IconAlignLeft,
88
+ "menu-icon-handcart": IconShoppingBag,
65
89
  "menu-icon-heart": IconHeartFilled,
90
+ "menu-icon-info": IconInfoCircle,
91
+ "menu-icon-instagram": IconBrandInstagram,
92
+ "menu-icon-lightning": IconBolt,
93
+ "menu-icon-lookbook": IconDeviceIpadHeart,
94
+ "menu-icon-locator": IconMap2,
95
+ "menu-icon-mail": IconMail,
96
+ "menu-icon-more": IconDots,
97
+ "menu-icon-message": IconMessage2,
98
+ "menu-icon-package": IconGift,
99
+ "menu-icon-page": IconNotes,
100
+ "menu-icon-paper": IconLicense,
101
+ "menu-icon-photos": IconPhoto,
102
+ "menu-icon-sale": IconRosetteDiscount,
103
+ "menu-icon-scroll": IconLicense,
104
+ // "menu-icon-shirt": ,
105
+ // "menu-icon-shorts": ,
106
+ "menu-icon-shoes": IconShoe,
107
+ "menu-icon-speaker": IconSpeakerphone,
108
+ "menu-icon-star": IconStar,
109
+ "menu-icon-search": IconListSearch,
110
+ "menu-icon-support": IconLifebuoy,
111
+ "menu-icon-tag": IconTag,
112
+ "menu-icon-term receipt": IconReceipt2,
113
+ "menu-icon-tshirt": IconShirt,
114
+ "menu-icon-write": IconFilePencil,
115
+ "menu-icon-watch": IconDeviceWatch,
66
116
  upload: IconUpload,
67
117
  "currency-dollar": IconCurrencyDollar,
68
118
  x: IconX,
@@ -1 +1 @@
1
- {"version":3,"file":"price.d.ts","sourceRoot":"","sources":["../../../components/ui/price.tsx"],"names":[],"mappings":"AAIA,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,EAAE,CAAC;CAClD;AAED,iBAAS,KAAK,CAAC,EACb,KAAK,EACL,SAAS,EACT,WAAmB,EACnB,MAAc,EACd,cAAc,EACd,kBAAkB,EAClB,QAAgB,EAChB,MAAgB,EAChB,QAAa,EACb,aAAkB,GACnB,EAAE,UAAU,2CAiEZ;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"price.d.ts","sourceRoot":"","sources":["../../../components/ui/price.tsx"],"names":[],"mappings":"AAIA,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,EAAE,CAAC;CAClD;AAED,iBAAS,KAAK,CAAC,EACb,KAAK,EACL,SAAS,EACT,WAAmB,EACnB,MAAc,EACd,cAAc,EACd,kBAAkB,EAClB,QAAgB,EAChB,MAAgB,EAChB,QAAa,EACb,aAAkB,GACnB,EAAE,UAAU,2CA6DZ;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -6,10 +6,7 @@ function Price({ price, priceHigh, priceRanges = false, isSale = false, compareA
6
6
  const Spacer = () => (_jsx("span", { children: " - " }));
7
7
  const ProductPrice = () => {
8
8
  const colorClass = isSale ? 'text-textColors-salePriceText' : 'text-textColors-priceText';
9
- return (_jsxs(Text, Object.assign({ className: `${colorClass} flex-shrink-0`, style: { fontSize: `${fontSize}px` } }, { children: [_jsx("div", { className: cn("flex flex-wrap gap-2", {
10
- "ml-auto": textAlignment === 'right',
11
- "mr-auto": textAlignment === 'center',
12
- }) }), _jsxs("span", Object.assign({ className: "flex-grow min-w-[fit-content]" }, { children: [_jsx(Money, { price: price, currency: currency, locale: locale }), priceRanges && priceHigh !== undefined && _jsx(Spacer, {}), priceRanges && priceHigh !== undefined && (_jsx(Money, { price: priceHigh, currency: currency, locale: locale }))] }))] })));
9
+ return (_jsx(Text, Object.assign({ className: `${colorClass} flex-shrink-0`, style: { fontSize: `${fontSize}px` } }, { children: _jsxs("span", Object.assign({ className: "flex-grow min-w-[fit-content]" }, { children: [_jsx(Money, { price: price, currency: currency, locale: locale }), priceRanges && priceHigh !== undefined && _jsx(Spacer, {}), priceRanges && priceHigh !== undefined && (_jsx(Money, { price: priceHigh, currency: currency, locale: locale }))] })) })));
13
10
  };
14
11
  const StrikeThroughPrice = () => {
15
12
  if (!isSale || !compareAtPrice)
@@ -1 +1 @@
1
- {"version":3,"file":"product-card.d.ts","sourceRoot":"","sources":["../../../components/ui/product-card.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"product-card.d.ts","sourceRoot":"","sources":["../../../components/ui/product-card.tsx"],"names":[],"mappings":"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"}
@@ -135,7 +135,7 @@ const productCardFavoriteVariants = cva("absolute ", {
135
135
  },
136
136
  });
137
137
  const ProductCard = ({ config, tapcartData, product, isLoading, favorited, onFavoriteClick, onQuickAdd, openProduct, className, }) => {
138
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23;
138
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24;
139
139
  const { variants, images, title, tags } = product;
140
140
  // Select the variant that has the lowest price that is available or just the lowest price if none are available
141
141
  let searchVariants = variants.filter((variant) => variant.available);
@@ -219,32 +219,32 @@ const ProductCard = ({ config, tapcartData, product, isLoading, favorited, onFav
219
219
  onFavoriteClick === null || onFavoriteClick === void 0 ? void 0 : onFavoriteClick(e, product);
220
220
  }, icon: ((_q = (_p = config.favoritesIcon) === null || _p === void 0 ? void 0 : _p.icon) === null || _q === void 0 ? void 0 : _q.type) === "internal"
221
221
  ? (_s = (_r = config.favoritesIcon) === null || _r === void 0 ? void 0 : _r.icon) === null || _s === void 0 ? void 0 : _s.url
222
- : undefined, layoutType: (_t = config.favoritesIcon) === null || _t === void 0 ? void 0 : _t.layoutType, showBackground: (_u = config.favoritesIcon) === null || _u === void 0 ? void 0 : _u.showBackground }))] }))), ((_v = config.quickAdd) === null || _v === void 0 ? void 0 : _v.enabled) && (_jsx(Button, Object.assign({ className: "outline-0", style: {
222
+ : undefined, layoutType: (_t = config.favoritesIcon) === null || _t === void 0 ? void 0 : _t.layoutType, showBackground: (_u = config.favoritesIcon) === null || _u === void 0 ? void 0 : _u.showBackground, cornerRadius: (_v = config.favoritesIcon) === null || _v === void 0 ? void 0 : _v.cornerRadius }))] }))), ((_w = config.quickAdd) === null || _w === void 0 ? void 0 : _w.enabled) && (_jsx(Button, Object.assign({ className: "outline-0", style: {
223
223
  borderBottomLeftRadius: `${config.quickAdd.cornerRadius}px`,
224
224
  borderBottomRightRadius: `${config.quickAdd.cornerRadius}px`,
225
- }, labelClassName: cn("outline-0 w-full", { uppercase: (_w = config.quickAdd) === null || _w === void 0 ? void 0 : _w.uppercase }, { "text-left": ((_x = config.quickAdd) === null || _x === void 0 ? void 0 : _x.textAlignment) === "left" }, { "text-right": ((_y = config.quickAdd) === null || _y === void 0 ? void 0 : _y.textAlignment) === "right" }, { "text-center": ((_z = config.quickAdd) === null || _z === void 0 ? void 0 : _z.textAlignment) === "center" }), labelStyle: { fontSize: (_0 = config.quickAdd) === null || _0 === void 0 ? void 0 : _0.fontSize }, variant: "quickadd", size: "default", disabled: product.availableForSale === false, onClick: (e) => {
225
+ }, labelClassName: cn("outline-0 w-full", { uppercase: (_x = config.quickAdd) === null || _x === void 0 ? void 0 : _x.uppercase }, { "text-left": ((_y = config.quickAdd) === null || _y === void 0 ? void 0 : _y.textAlignment) === "left" }, { "text-right": ((_z = config.quickAdd) === null || _z === void 0 ? void 0 : _z.textAlignment) === "right" }, { "text-center": ((_0 = config.quickAdd) === null || _0 === void 0 ? void 0 : _0.textAlignment) === "center" }), labelStyle: { fontSize: (_1 = config.quickAdd) === null || _1 === void 0 ? void 0 : _1.fontSize }, variant: "quickadd", size: "default", disabled: product.availableForSale === false, onClick: (e) => {
226
226
  e.stopPropagation();
227
227
  onQuickAdd === null || onQuickAdd === void 0 ? void 0 : onQuickAdd(e, product);
228
228
  } }, { children: _jsxs("div", Object.assign({ className: "flex items-center justify-center gap-2" }, { children: [_jsx(Icon, { name: product.availableForSale ? "plus" : "shopping-cart-off", size: "xs" }), product.availableForSale ? "Quick Add" : "Sold Out"] })) }))), _jsxs("div", Object.assign({ className: "w-full flex-col justify-start items-start gap-0 inline-flex" }, { children: [belowBadge && (_jsx("div", Object.assign({ className: cn("mt-2 w-full flex justify-start", {
229
229
  "justify-end": belowBadge.horizontalPosition === "end",
230
- }) }, { children: _jsx(Badge, Object.assign({ size: "plp-layout", alignment: belowBadge.horizontalPosition, icon: belowBadge.image, className: cn("truncate", { rounded: belowBadge.cornerRadius === "rounded" }, { "rounded-none": belowBadge.cornerRadius === "square" }) }, { children: belowBadge.text })) }))), ((_1 = config.productTitle) === null || _1 === void 0 ? void 0 : _1.enabled) && (_jsx("div", Object.assign({ className: "mt-2 w-full" }, { children: _jsx(Text, Object.assign({ type: "body-secondary", className: cn({ uppercase: (_2 = config.productTitle) === null || _2 === void 0 ? void 0 : _2.uppercase }, {
231
- "text-left": ((_3 = config.productTitle) === null || _3 === void 0 ? void 0 : _3.textAlignment) === "left",
230
+ }) }, { children: _jsx(Badge, Object.assign({ size: "plp-layout", alignment: belowBadge.horizontalPosition, icon: belowBadge.image, className: cn("truncate", { rounded: belowBadge.cornerRadius === "rounded" }, { "rounded-none": belowBadge.cornerRadius === "square" }) }, { children: belowBadge.text })) }))), ((_2 = config.productTitle) === null || _2 === void 0 ? void 0 : _2.enabled) && (_jsx("div", Object.assign({ className: "mt-2 w-full" }, { children: _jsx(Text, Object.assign({ type: "body-secondary", className: cn({ uppercase: (_3 = config.productTitle) === null || _3 === void 0 ? void 0 : _3.uppercase }, {
231
+ "text-left": ((_4 = config.productTitle) === null || _4 === void 0 ? void 0 : _4.textAlignment) === "left",
232
232
  }, {
233
- "text-right": ((_4 = config.productTitle) === null || _4 === void 0 ? void 0 : _4.textAlignment) === "right",
233
+ "text-right": ((_5 = config.productTitle) === null || _5 === void 0 ? void 0 : _5.textAlignment) === "right",
234
234
  }, {
235
- "text-center": ((_5 = config.productTitle) === null || _5 === void 0 ? void 0 : _5.textAlignment) === "center",
235
+ "text-center": ((_6 = config.productTitle) === null || _6 === void 0 ? void 0 : _6.textAlignment) === "center",
236
236
  }, {
237
- "line-clamp-2": (_6 = config.productTitle) === null || _6 === void 0 ? void 0 : _6.wrapText,
238
- "line-clamp-1": !((_7 = config.productTitle) === null || _7 === void 0 ? void 0 : _7.wrapText),
239
- }, "text-textColors-productTitle"), style: { fontSize: (_8 = config.productTitle) === null || _8 === void 0 ? void 0 : _8.fontSize } }, { children: title })) }))), _jsxs("div", Object.assign({ className: cn("flex flex-row w-full gap-2 mt-1 justify-end items-center", { "justify-start": ((_9 = config.price) === null || _9 === void 0 ? void 0 : _9.textAlignment) === "left" }, { "justify-end": ((_10 = config.price) === null || _10 === void 0 ? void 0 : _10.textAlignment) === "right" }, { "justify-center": ((_11 = config.price) === null || _11 === void 0 ? void 0 : _11.textAlignment) === "center" }) }, { children: [((_12 = config.price) === null || _12 === void 0 ? void 0 : _12.enabled) && (_jsx(Price, { price: parseFloat(variant.price.amount), isSale: !!variant.compareAtPrice &&
237
+ "line-clamp-2": (_7 = config.productTitle) === null || _7 === void 0 ? void 0 : _7.wrapText,
238
+ "line-clamp-1": !((_8 = config.productTitle) === null || _8 === void 0 ? void 0 : _8.wrapText),
239
+ }, "text-textColors-productTitle"), style: { fontSize: (_9 = config.productTitle) === null || _9 === void 0 ? void 0 : _9.fontSize } }, { children: title })) }))), _jsxs("div", Object.assign({ className: cn("flex flex-row w-full gap-2 mt-1 justify-end items-center", { "justify-start": ((_10 = config.price) === null || _10 === void 0 ? void 0 : _10.textAlignment) === "left" }, { "justify-end": ((_11 = config.price) === null || _11 === void 0 ? void 0 : _11.textAlignment) === "right" }, { "justify-center": ((_12 = config.price) === null || _12 === void 0 ? void 0 : _12.textAlignment) === "center" }) }, { children: [((_13 = config.price) === null || _13 === void 0 ? void 0 : _13.enabled) && (_jsx(Price, { price: parseFloat(variant.price.amount), isSale: !!variant.compareAtPrice &&
240
240
  variant.compareAtPrice &&
241
- parseFloat((_13 = variant.compareAtPrice) === null || _13 === void 0 ? void 0 : _13.amount) >
241
+ parseFloat((_14 = variant.compareAtPrice) === null || _14 === void 0 ? void 0 : _14.amount) >
242
242
  parseFloat(variant.price.amount), compareAtPrice: variant.compareAtPrice &&
243
- parseFloat((_14 = variant.compareAtPrice) === null || _14 === void 0 ? void 0 : _14.amount), currency: tapcartData.currency.code, locale: tapcartData.currency.locale, fontSize: (_15 = config.price) === null || _15 === void 0 ? void 0 : _15.fontSize })), ((_16 = config.favoritesIcon) === null || _16 === void 0 ? void 0 : _16.enabled) &&
243
+ parseFloat((_15 = variant.compareAtPrice) === null || _15 === void 0 ? void 0 : _15.amount), currency: tapcartData.currency.code, locale: tapcartData.currency.locale, fontSize: (_16 = config.price) === null || _16 === void 0 ? void 0 : _16.fontSize })), ((_17 = config.favoritesIcon) === null || _17 === void 0 ? void 0 : _17.enabled) &&
244
244
  config.favoritesIcon.layoutType === "below-image-on-right" && (_jsx("div", Object.assign({ className: "w-8 h-8 flex items-center justify-center" }, { children: _jsx(Favorite, { selected: favorited, onClick: (e) => {
245
245
  onFavoriteClick === null || onFavoriteClick === void 0 ? void 0 : onFavoriteClick(e, product);
246
- }, size: "small", icon: ((_18 = (_17 = config.favoritesIcon) === null || _17 === void 0 ? void 0 : _17.icon) === null || _18 === void 0 ? void 0 : _18.type) === "internal"
247
- ? (_20 = (_19 = config.favoritesIcon) === null || _19 === void 0 ? void 0 : _19.icon) === null || _20 === void 0 ? void 0 : _20.url
248
- : undefined, cornerRadius: (_21 = config.favoritesIcon) === null || _21 === void 0 ? void 0 : _21.cornerRadius, layoutType: (_22 = config.favoritesIcon) === null || _22 === void 0 ? void 0 : _22.layoutType, showBackground: (_23 = config.favoritesIcon) === null || _23 === void 0 ? void 0 : _23.showBackground }) })))] }))] }))] })) })));
246
+ }, size: "small", icon: ((_19 = (_18 = config.favoritesIcon) === null || _18 === void 0 ? void 0 : _18.icon) === null || _19 === void 0 ? void 0 : _19.type) === "internal"
247
+ ? (_21 = (_20 = config.favoritesIcon) === null || _20 === void 0 ? void 0 : _20.icon) === null || _21 === void 0 ? void 0 : _21.url
248
+ : undefined, cornerRadius: (_22 = config.favoritesIcon) === null || _22 === void 0 ? void 0 : _22.cornerRadius, layoutType: (_23 = config.favoritesIcon) === null || _23 === void 0 ? void 0 : _23.layoutType, showBackground: (_24 = config.favoritesIcon) === null || _24 === void 0 ? void 0 : _24.showBackground }) })))] }))] }))] })) })));
249
249
  };
250
250
  export { ProductCard };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export { cn, cva, getColor } from "./lib/utils";
2
2
  export * from "./components/hooks/use-infinite-scroll";
3
+ export * from "./components/hooks/use-recommendations";
4
+ export * from "./components/hooks/use-products";
3
5
  export * from "./components/hooks/use-products";
4
6
  export * from "./components/hooks/use-scroll-direction";
5
7
  export * from "./components/ui/accordion";
@@ -43,4 +45,5 @@ export * from "./components/ui/toggle";
43
45
  export * from "./components/ui/use-toast";
44
46
  export * from "./components/ui/video";
45
47
  export * from "./components/ui/wishlist";
48
+ export * from "./components/hooks/use-product-options";
46
49
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yCAAyC,CAAA;AACvD,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,wCAAwC,CAAA;AACtD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yCAAyC,CAAA;AACvD,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,wCAAwC,CAAA"}
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  // component exports
2
2
  export { cn, cva, getColor } from "./lib/utils";
3
3
  export * from "./components/hooks/use-infinite-scroll";
4
+ export * from "./components/hooks/use-recommendations";
5
+ export * from "./components/hooks/use-products";
4
6
  export * from "./components/hooks/use-products";
5
7
  export * from "./components/hooks/use-scroll-direction";
6
8
  export * from "./components/ui/accordion";
@@ -44,3 +46,4 @@ export * from "./components/ui/toggle";
44
46
  export * from "./components/ui/use-toast";
45
47
  export * from "./components/ui/video";
46
48
  export * from "./components/ui/wishlist";
49
+ export * from "./components/hooks/use-product-options";
package/dist/styles.css CHANGED
@@ -701,6 +701,9 @@ video {
701
701
  .bottom-2 {
702
702
  bottom: 0.5rem;
703
703
  }
704
+ .bottom-6 {
705
+ bottom: 1.5rem;
706
+ }
704
707
  .bottom-\[18px\] {
705
708
  bottom: 18px;
706
709
  }
@@ -719,6 +722,9 @@ video {
719
722
  .left-2 {
720
723
  left: 0.5rem;
721
724
  }
725
+ .left-6 {
726
+ left: 1.5rem;
727
+ }
722
728
  .left-\[50\%\] {
723
729
  left: 50%;
724
730
  }
@@ -770,6 +776,9 @@ video {
770
776
  .row-start-1 {
771
777
  grid-row-start: 1;
772
778
  }
779
+ .m-2 {
780
+ margin: 0.5rem;
781
+ }
773
782
  .mx-1 {
774
783
  margin-left: 0.25rem;
775
784
  margin-right: 0.25rem;
@@ -814,14 +823,14 @@ video {
814
823
  .ml-2 {
815
824
  margin-left: 0.5rem;
816
825
  }
817
- .ml-auto {
818
- margin-left: auto;
826
+ .ml-4 {
827
+ margin-left: 1rem;
819
828
  }
820
829
  .mr-2 {
821
830
  margin-right: 0.5rem;
822
831
  }
823
- .mr-auto {
824
- margin-right: auto;
832
+ .mr-4 {
833
+ margin-right: 1rem;
825
834
  }
826
835
  .mt-1 {
827
836
  margin-top: 0.25rem;
@@ -922,6 +931,9 @@ video {
922
931
  .h-\[1px\] {
923
932
  height: 1px;
924
933
  }
934
+ .h-\[200px\] {
935
+ height: 200px;
936
+ }
925
937
  .h-\[22px\] {
926
938
  height: 22px;
927
939
  }
@@ -1000,9 +1012,15 @@ video {
1000
1012
  .w-\[22px\] {
1001
1013
  width: 22px;
1002
1014
  }
1015
+ .w-\[327px\] {
1016
+ width: 327px;
1017
+ }
1003
1018
  .w-\[40px\] {
1004
1019
  width: 40px;
1005
1020
  }
1021
+ .w-\[69px\] {
1022
+ width: 69px;
1023
+ }
1006
1024
  .w-auto {
1007
1025
  width: auto;
1008
1026
  }
@@ -1016,6 +1034,9 @@ video {
1016
1034
  .min-w-0 {
1017
1035
  min-width: 0px;
1018
1036
  }
1037
+ .min-w-\[148px\] {
1038
+ min-width: 148px;
1039
+ }
1019
1040
  .min-w-\[8rem\] {
1020
1041
  min-width: 8rem;
1021
1042
  }
@@ -1169,6 +1190,9 @@ video {
1169
1190
  .items-start {
1170
1191
  align-items: flex-start;
1171
1192
  }
1193
+ .items-end {
1194
+ align-items: flex-end;
1195
+ }
1172
1196
  .items-center {
1173
1197
  align-items: center;
1174
1198
  }
@@ -1193,9 +1217,15 @@ video {
1193
1217
  .gap-2 {
1194
1218
  gap: 0.5rem;
1195
1219
  }
1220
+ .gap-2\.5 {
1221
+ gap: 0.625rem;
1222
+ }
1196
1223
  .gap-4 {
1197
1224
  gap: 1rem;
1198
1225
  }
1226
+ .gap-\[7px\] {
1227
+ gap: 7px;
1228
+ }
1199
1229
  .gap-x-2 {
1200
1230
  -moz-column-gap: 0.5rem;
1201
1231
  column-gap: 0.5rem;
@@ -1215,6 +1245,11 @@ video {
1215
1245
  margin-right: calc(0.25rem * var(--tw-space-x-reverse));
1216
1246
  margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));
1217
1247
  }
1248
+ .space-x-2 > :not([hidden]) ~ :not([hidden]) {
1249
+ --tw-space-x-reverse: 0;
1250
+ margin-right: calc(0.5rem * var(--tw-space-x-reverse));
1251
+ margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
1252
+ }
1218
1253
  .space-x-4 > :not([hidden]) ~ :not([hidden]) {
1219
1254
  --tw-space-x-reverse: 0;
1220
1255
  margin-right: calc(1rem * var(--tw-space-x-reverse));
@@ -1339,12 +1374,19 @@ video {
1339
1374
  .border-t {
1340
1375
  border-top-width: 1px;
1341
1376
  }
1377
+ .border-t-\[1px\] {
1378
+ border-top-width: 1px;
1379
+ }
1342
1380
  .border-none {
1343
1381
  border-style: none;
1344
1382
  }
1345
1383
  .\!border-stateColors-error {
1346
1384
  border-color: var(--stateColors-error) !important;
1347
1385
  }
1386
+ .border-\[\#E3E3E3\] {
1387
+ --tw-border-opacity: 1;
1388
+ border-color: rgb(227 227 227 / var(--tw-border-opacity));
1389
+ }
1348
1390
  .border-black {
1349
1391
  --tw-border-opacity: 1;
1350
1392
  border-color: rgb(0 0 0 / var(--tw-border-opacity));
@@ -1418,6 +1460,10 @@ video {
1418
1460
  .bg-coreColors-pageColor {
1419
1461
  background-color: var(--coreColors-pageColor);
1420
1462
  }
1463
+ .bg-gray-100 {
1464
+ --tw-bg-opacity: 1;
1465
+ background-color: rgb(243 244 246 / var(--tw-bg-opacity));
1466
+ }
1421
1467
  .bg-gray-300 {
1422
1468
  --tw-bg-opacity: 1;
1423
1469
  background-color: rgb(209 213 219 / var(--tw-bg-opacity));
@@ -1490,6 +1536,14 @@ video {
1490
1536
  .p-\[1px\] {
1491
1537
  padding: 1px;
1492
1538
  }
1539
+ .\!px-0 {
1540
+ padding-left: 0px !important;
1541
+ padding-right: 0px !important;
1542
+ }
1543
+ .px-0 {
1544
+ padding-left: 0px;
1545
+ padding-right: 0px;
1546
+ }
1493
1547
  .px-1 {
1494
1548
  padding-left: 0.25rem;
1495
1549
  padding-right: 0.25rem;
@@ -1556,6 +1610,9 @@ video {
1556
1610
  .pl-2 {
1557
1611
  padding-left: 0.5rem;
1558
1612
  }
1613
+ .pl-3 {
1614
+ padding-left: 0.75rem;
1615
+ }
1559
1616
  .pl-4 {
1560
1617
  padding-left: 1rem;
1561
1618
  }
@@ -1571,6 +1628,9 @@ video {
1571
1628
  .pr-4 {
1572
1629
  padding-right: 1rem;
1573
1630
  }
1631
+ .pr-6 {
1632
+ padding-right: 1.5rem;
1633
+ }
1574
1634
  .pt-0 {
1575
1635
  padding-top: 0px;
1576
1636
  }
@@ -1630,6 +1690,10 @@ video {
1630
1690
  .text-\[23px\] {
1631
1691
  font-size: 23px;
1632
1692
  }
1693
+ .text-base {
1694
+ font-size: 1rem;
1695
+ line-height: 1.5rem;
1696
+ }
1633
1697
  .text-lg {
1634
1698
  font-size: 1.125rem;
1635
1699
  line-height: 1.75rem;
@@ -1672,6 +1736,9 @@ video {
1672
1736
  .leading-none {
1673
1737
  line-height: 1;
1674
1738
  }
1739
+ .leading-tight {
1740
+ line-height: 1.25;
1741
+ }
1675
1742
  .text-\[\#727272\] {
1676
1743
  --tw-text-opacity: 1;
1677
1744
  color: rgb(114 114 114 / var(--tw-text-opacity));
@@ -1764,6 +1831,10 @@ video {
1764
1831
  .text-foreground\/50 {
1765
1832
  color: hsl(var(--foreground) / 0.5);
1766
1833
  }
1834
+ .text-gray-700 {
1835
+ --tw-text-opacity: 1;
1836
+ color: rgb(55 65 81 / var(--tw-text-opacity));
1837
+ }
1767
1838
  .text-muted-foreground {
1768
1839
  color: hsl(var(--muted-foreground));
1769
1840
  }
@@ -1818,6 +1889,10 @@ video {
1818
1889
  .text-textColors-strikethroughPriceText {
1819
1890
  color: var(--textColors-strikethroughPriceText);
1820
1891
  }
1892
+ .text-white {
1893
+ --tw-text-opacity: 1;
1894
+ color: rgb(255 255 255 / var(--tw-text-opacity));
1895
+ }
1821
1896
  .line-through {
1822
1897
  text-decoration-line: line-through;
1823
1898
  }
@@ -1848,6 +1923,11 @@ video {
1848
1923
  --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
1849
1924
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
1850
1925
  }
1926
+ .shadow-none {
1927
+ --tw-shadow: 0 0 #0000;
1928
+ --tw-shadow-colored: 0 0 #0000;
1929
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
1930
+ }
1851
1931
  .shadow-primary {
1852
1932
  --tw-shadow: calc(var(--buttonColors-primaryShadowEnabled) * 0px) calc(var(--buttonColors-primaryShadowEnabled) * 5px) calc(var(--buttonColors-primaryShadowEnabled) * 25px) calc(var(--buttonColors-primaryShadowEnabled)* 0px) rgb(0, 0, 0, 0.10);;
1853
1933
  --tw-shadow-colored: calc(var(--buttonColors-primaryShadowEnabled) * 0px) calc(var(--buttonColors-primaryShadowEnabled) * 5px) calc(var(--buttonColors-primaryShadowEnabled) * 25px) calc(var(--buttonColors-primaryShadowEnabled)* 0px) rgb(0, 0, 0, 0.10);;
@@ -1910,6 +1990,13 @@ video {
1910
1990
  .filter {
1911
1991
  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);
1912
1992
  }
1993
+ .transition {
1994
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
1995
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
1996
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
1997
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
1998
+ transition-duration: 150ms;
1999
+ }
1913
2000
  .transition-all {
1914
2001
  transition-property: all;
1915
2002
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
@@ -2053,6 +2140,11 @@ body::-webkit-scrollbar {
2053
2140
  border-color: var(--stateColors-error) !important;
2054
2141
  }
2055
2142
 
2143
+ .focus-within\:border-black:focus-within {
2144
+ --tw-border-opacity: 1;
2145
+ border-color: rgb(0 0 0 / var(--tw-border-opacity));
2146
+ }
2147
+
2056
2148
  .focus-within\:border-coreColors-brandColorPrimary:focus-within {
2057
2149
  border-color: var(--coreColors-brandColorPrimary);
2058
2150
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tapcart/mobile-components",
3
- "version": "0.5.9",
3
+ "version": "0.6.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "style": "dist/styles.css",