@instockng/storefront-ui 1.0.86 → 1.0.88

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 (272) hide show
  1. package/dist/components/CartUpsellScreen.d.ts +12 -0
  2. package/dist/components/CartUpsellScreen.d.ts.map +1 -0
  3. package/dist/components/QuantitySelector.d.ts +10 -0
  4. package/dist/components/QuantitySelector.d.ts.map +1 -0
  5. package/dist/components/ShoppingCart.d.ts.map +1 -1
  6. package/dist/index.d.ts +6 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.mjs +115 -109
  9. package/dist/index10.mjs +5 -5
  10. package/dist/index101.mjs +1 -1
  11. package/dist/index102.mjs +3 -3
  12. package/dist/index104.mjs +34 -2
  13. package/dist/index105.mjs +43 -2
  14. package/dist/index106.mjs +2 -28
  15. package/dist/index107.mjs +2 -18
  16. package/dist/index108.mjs +26 -213
  17. package/dist/index109.mjs +13 -175
  18. package/dist/index11.mjs +4 -4
  19. package/dist/index110.mjs +210 -17
  20. package/dist/index111.mjs +174 -17
  21. package/dist/index112.mjs +14 -25
  22. package/dist/index113.mjs +17 -150
  23. package/dist/index114.mjs +26 -13
  24. package/dist/index115.mjs +149 -24
  25. package/dist/index116.mjs +13 -77
  26. package/dist/index117.mjs +20 -27
  27. package/dist/index118.mjs +76 -137
  28. package/dist/index119.mjs +33 -50
  29. package/dist/index12.mjs +3 -3
  30. package/dist/index120.mjs +141 -19
  31. package/dist/index121.mjs +50 -22
  32. package/dist/index122.mjs +14 -14
  33. package/dist/index123.mjs +20 -18
  34. package/dist/index124.mjs +16 -14
  35. package/dist/index125.mjs +17 -14
  36. package/dist/index126.mjs +12 -12
  37. package/dist/index127.mjs +15 -58
  38. package/dist/index128.mjs +14 -11
  39. package/dist/index129.mjs +56 -30
  40. package/dist/index13.mjs +1 -1
  41. package/dist/index130.mjs +9 -15
  42. package/dist/index131.mjs +31 -26
  43. package/dist/index132.mjs +13 -16
  44. package/dist/index133.mjs +26 -11
  45. package/dist/index134.mjs +18 -12
  46. package/dist/index135.mjs +12 -40
  47. package/dist/index136.mjs +14 -16
  48. package/dist/index137.mjs +42 -263
  49. package/dist/index138.mjs +15 -62
  50. package/dist/index139.mjs +267 -7
  51. package/dist/index14.mjs +157 -194
  52. package/dist/index140.mjs +70 -2
  53. package/dist/index141.mjs +8 -2
  54. package/dist/index142.mjs +2 -33
  55. package/dist/index143.mjs +2 -2
  56. package/dist/index144.mjs +32 -20
  57. package/dist/index145.mjs +2 -56
  58. package/dist/index146.mjs +18 -26
  59. package/dist/index147.mjs +55 -6
  60. package/dist/index148.mjs +28 -51
  61. package/dist/index149.mjs +7 -6
  62. package/dist/index15.mjs +218 -94
  63. package/dist/index150.mjs +51 -11
  64. package/dist/index151.mjs +5 -6
  65. package/dist/index152.mjs +12 -28
  66. package/dist/index153.mjs +7 -2
  67. package/dist/index154.mjs +27 -69
  68. package/dist/index155.mjs +2 -167
  69. package/dist/index156.mjs +70 -2
  70. package/dist/index157.mjs +167 -2
  71. package/dist/index159.mjs +2 -2
  72. package/dist/index16.mjs +99 -733
  73. package/dist/index160.mjs +2 -18
  74. package/dist/index161.mjs +11 -25
  75. package/dist/index162.mjs +26 -32
  76. package/dist/index163.mjs +32 -12
  77. package/dist/index164.mjs +9 -9
  78. package/dist/index165.mjs +18 -2
  79. package/dist/index166.mjs +2 -20
  80. package/dist/index167.mjs +13 -39
  81. package/dist/index168.mjs +46 -2
  82. package/dist/index169.mjs +2 -30
  83. package/dist/index17.mjs +94 -56
  84. package/dist/index170.mjs +23 -11
  85. package/dist/index171.mjs +18 -2
  86. package/dist/index172.mjs +2 -2
  87. package/dist/index173.mjs +2 -2
  88. package/dist/index174.mjs +2 -2
  89. package/dist/index175.mjs +2 -72
  90. package/dist/index176.mjs +72 -2
  91. package/dist/index177.mjs +2 -53
  92. package/dist/index178.mjs +53 -2
  93. package/dist/index179.mjs +2 -36
  94. package/dist/index18.mjs +749 -62
  95. package/dist/index180.mjs +30 -146
  96. package/dist/index181.mjs +152 -2
  97. package/dist/index182.mjs +2 -2
  98. package/dist/index183.mjs +2 -19
  99. package/dist/index184.mjs +19 -2
  100. package/dist/index185.mjs +2 -2
  101. package/dist/index186.mjs +2 -26
  102. package/dist/index187.mjs +26 -2
  103. package/dist/index188.mjs +2 -2
  104. package/dist/index189.mjs +2 -24
  105. package/dist/index19.mjs +50 -14
  106. package/dist/index190.mjs +17 -16
  107. package/dist/index191.mjs +23 -2
  108. package/dist/index193.mjs +2 -2
  109. package/dist/index194.mjs +2 -23
  110. package/dist/index195.mjs +23 -2
  111. package/dist/index196.mjs +2 -23
  112. package/dist/index197.mjs +23 -2
  113. package/dist/index198.mjs +2 -2
  114. package/dist/index2.mjs +2 -2
  115. package/dist/index20.mjs +62 -109
  116. package/dist/index200.mjs +2 -23
  117. package/dist/index201.mjs +23 -2
  118. package/dist/index202.mjs +2 -23
  119. package/dist/index203.mjs +23 -2
  120. package/dist/index204.mjs +2 -2
  121. package/dist/index205.mjs +2 -2
  122. package/dist/index207.mjs +2 -2
  123. package/dist/index208.mjs +2 -2
  124. package/dist/index209.mjs +2 -2
  125. package/dist/index21.mjs +23 -41
  126. package/dist/index210.mjs +2 -2
  127. package/dist/index211.mjs +2 -127
  128. package/dist/index212.mjs +127 -2
  129. package/dist/index213.mjs +2 -74
  130. package/dist/index214.mjs +60 -60
  131. package/dist/index215.mjs +73 -30
  132. package/dist/index216.mjs +2 -11
  133. package/dist/index217.mjs +30 -3
  134. package/dist/index218.mjs +10 -3
  135. package/dist/index219.mjs +4 -13
  136. package/dist/index22.mjs +109 -42
  137. package/dist/index220.mjs +4 -7
  138. package/dist/index221.mjs +13 -12
  139. package/dist/index222.mjs +7 -5
  140. package/dist/index223.mjs +12 -33
  141. package/dist/index224.mjs +5 -31
  142. package/dist/index225.mjs +32 -27
  143. package/dist/index226.mjs +28 -58
  144. package/dist/index227.mjs +28 -2
  145. package/dist/index228.mjs +61 -2
  146. package/dist/index229.mjs +2 -2
  147. package/dist/index23.mjs +42 -71
  148. package/dist/index230.mjs +2 -2
  149. package/dist/index231.mjs +2 -2
  150. package/dist/index232.mjs +2 -2
  151. package/dist/index233.mjs +2 -108
  152. package/dist/index234.mjs +2 -2
  153. package/dist/index235.mjs +108 -2
  154. package/dist/index236.mjs +2 -2
  155. package/dist/index237.mjs +2 -2
  156. package/dist/index238.mjs +36 -243
  157. package/dist/index24.mjs +41 -31
  158. package/dist/index240.mjs +2 -33
  159. package/dist/index241.mjs +2 -65
  160. package/dist/index242.mjs +2 -25
  161. package/dist/index243.mjs +244 -2
  162. package/dist/index244.mjs +2 -37
  163. package/dist/index245.mjs +33 -2
  164. package/dist/index246.mjs +65 -2
  165. package/dist/index247.mjs +25 -2
  166. package/dist/index25.mjs +86 -6
  167. package/dist/index250.mjs +2 -2
  168. package/dist/index251.mjs +2 -2
  169. package/dist/index252.mjs +2 -2
  170. package/dist/index254.mjs +2 -2
  171. package/dist/index255.mjs +2 -4
  172. package/dist/index256.mjs +2 -2
  173. package/dist/index257.mjs +4 -2
  174. package/dist/index258.mjs +2 -2
  175. package/dist/index259.mjs +2 -2
  176. package/dist/index26.mjs +27 -17
  177. package/dist/index260.mjs +3 -2
  178. package/dist/index261.mjs +2 -18
  179. package/dist/index262.mjs +2 -47
  180. package/dist/index263.mjs +17 -2
  181. package/dist/index264.mjs +13 -2
  182. package/dist/index265.mjs +6 -2
  183. package/dist/index266.mjs +30 -91
  184. package/dist/index267.mjs +2 -3
  185. package/dist/index268.mjs +2 -2
  186. package/dist/index269.mjs +18 -2
  187. package/dist/index27.mjs +6 -34
  188. package/dist/index270.mjs +46 -16
  189. package/dist/index271.mjs +2 -13
  190. package/dist/index272.mjs +2 -6
  191. package/dist/index273.mjs +2 -30
  192. package/dist/index274.mjs +2 -2
  193. package/dist/index275.mjs +91 -2
  194. package/dist/index276.mjs +2 -2
  195. package/dist/index277.mjs +2 -2
  196. package/dist/index278.mjs +5 -0
  197. package/dist/index279.mjs +5 -0
  198. package/dist/index28.mjs +19 -37
  199. package/dist/index29.mjs +36 -114
  200. package/dist/index3.mjs +5 -5
  201. package/dist/index30.mjs +30 -21
  202. package/dist/index31.mjs +113 -9
  203. package/dist/index32.mjs +27 -7
  204. package/dist/index33.mjs +11 -116
  205. package/dist/index34.mjs +11 -25
  206. package/dist/index35.mjs +116 -81
  207. package/dist/index36.mjs +24 -111
  208. package/dist/index37.mjs +81 -11
  209. package/dist/index38.mjs +104 -27
  210. package/dist/index39.mjs +8 -25
  211. package/dist/index4.mjs +1 -1
  212. package/dist/index40.mjs +32 -8
  213. package/dist/index41.mjs +26 -121
  214. package/dist/index42.mjs +9 -387
  215. package/dist/index43.mjs +116 -18
  216. package/dist/index44.mjs +387 -30
  217. package/dist/index45.mjs +24 -6
  218. package/dist/index46.mjs +30 -1431
  219. package/dist/index47.mjs +6 -69
  220. package/dist/index48.mjs +1433 -2
  221. package/dist/index49.mjs +68 -58
  222. package/dist/index5.mjs +1 -1
  223. package/dist/index50.mjs +2 -51
  224. package/dist/index51.mjs +60 -33
  225. package/dist/index52.mjs +49 -13
  226. package/dist/index53.mjs +32 -2262
  227. package/dist/index54.mjs +15 -36
  228. package/dist/index55.mjs +2261 -42
  229. package/dist/index56.mjs +36 -99
  230. package/dist/index57.mjs +43 -80
  231. package/dist/index58.mjs +99 -19
  232. package/dist/index59.mjs +52 -100
  233. package/dist/index6.mjs +1 -1
  234. package/dist/index60.mjs +13 -119
  235. package/dist/index61.mjs +102 -52
  236. package/dist/index62.mjs +86 -74
  237. package/dist/index63.mjs +52 -80
  238. package/dist/index64.mjs +110 -17
  239. package/dist/index65.mjs +79 -67
  240. package/dist/index66.mjs +17 -78
  241. package/dist/index67.mjs +71 -39
  242. package/dist/index68.mjs +65 -46
  243. package/dist/index69.mjs +45 -117
  244. package/dist/index7.mjs +6 -6
  245. package/dist/index70.mjs +60 -22
  246. package/dist/index71.mjs +131 -149
  247. package/dist/index72.mjs +5 -2
  248. package/dist/index73.mjs +21 -20
  249. package/dist/index74.mjs +152 -4
  250. package/dist/index75.mjs +21 -73
  251. package/dist/index76.mjs +2 -15
  252. package/dist/index77.mjs +68 -56
  253. package/dist/index78.mjs +15 -34
  254. package/dist/index79.mjs +58 -38
  255. package/dist/index8.mjs +4 -4
  256. package/dist/index82.mjs +35 -35
  257. package/dist/index83.mjs +1 -1
  258. package/dist/index84.mjs +2 -2
  259. package/dist/index85.mjs +2 -2
  260. package/dist/index89.mjs +5 -5
  261. package/dist/index9.mjs +3 -3
  262. package/dist/index91.mjs +3 -3
  263. package/dist/lib/utils.d.ts +3 -0
  264. package/dist/lib/utils.d.ts.map +1 -1
  265. package/dist/styles.css +1 -1
  266. package/package.json +1 -1
  267. package/src/components/CartUpsellScreen.stories.tsx +166 -0
  268. package/src/components/CartUpsellScreen.tsx +196 -0
  269. package/src/components/QuantitySelector.tsx +245 -0
  270. package/src/components/ShoppingCart.tsx +57 -11
  271. package/src/index.ts +8 -1
  272. package/src/lib/utils.ts +24 -0
package/dist/index14.mjs CHANGED
@@ -1,203 +1,166 @@
1
1
  'use client';
2
- import { jsxs as a, Fragment as E, jsx as e } from "react/jsx-runtime";
3
- import { useState as $, useEffect as A } from "react";
4
- import { useCart as G } from "./index3.mjs";
5
- import { CartItem as J } from "./index13.mjs";
6
- import { DiscountCodeInput as K } from "./index15.mjs";
7
- import { Checkout as O } from "./index16.mjs";
8
- import { RecommendedProducts as Q } from "./index11.mjs";
9
- import { Button as F } from "./index17.mjs";
10
- import { X as U, Loader2 as V, Package as f } from "lucide-react";
11
- import { cn as c, formatCurrency as d } from "./index23.mjs";
12
- import { useHideBodyOverflow as W } from "./index45.mjs";
13
- function oe({
14
- isOpen: s,
15
- onClose: i,
16
- onCheckout: m,
17
- onContinueShopping: h,
18
- onPurchaseSuccess: p,
19
- className: R,
20
- showDiscountCode: I = !0,
21
- showContinueShopping: L = !0,
22
- checkoutButtonText: z = "Complete Purchase",
23
- continueShoppingText: Y = "Continue Shopping",
24
- checkoutButtonClassName: T,
25
- continueShoppingButtonClassName: B,
26
- disableCheckout: D = !1,
27
- emptyMessage: M = "Your cart is empty"
28
- }) {
29
- var x, y, b, N, v, w;
30
- const { cart: t, isLoading: l, error: o, trackCheckoutInitiated: S } = G(), [q, u] = $(!1);
31
- W(s), A(() => {
32
- const r = (n) => {
33
- n.key === "Escape" && s && i();
34
- };
35
- return window.addEventListener("keydown", r), () => window.removeEventListener("keydown", r);
36
- }, [s, i]);
37
- const H = ((x = t == null ? void 0 : t.pricing) == null ? void 0 : x.subtotal) || 0, g = ((y = t == null ? void 0 : t.pricing.discount) == null ? void 0 : y.amount) || 0, P = () => {
38
- S(), u(!0), m == null || m();
39
- }, X = () => {
40
- h == null || h(), i();
41
- };
42
- return /* @__PURE__ */ a(E, { children: [
43
- /* @__PURE__ */ e(
44
- "div",
45
- {
46
- className: c(
47
- "fixed inset-0 z-40 bg-black/50 transition-opacity duration-300",
48
- s ? "opacity-100" : "pointer-events-none opacity-0"
2
+ import { jsxs as a, jsx as t } from "react/jsx-runtime";
3
+ import { useState as w } from "react";
4
+ import { BadgeCheck as C } from "lucide-react";
5
+ import { cn as o, formatCurrency as g, calculateDiscountedPrice as u, getDiscountPercent as f } from "./index25.mjs";
6
+ const S = ({
7
+ qty: l,
8
+ selectedVariant: i,
9
+ quantity: s,
10
+ onQuantityChange: c,
11
+ effectivePrice: n,
12
+ quantityDiscounts: r,
13
+ showBestValue: d = !1
14
+ }) => {
15
+ const e = !!i;
16
+ return /* @__PURE__ */ a(
17
+ "div",
18
+ {
19
+ onClick: () => e && c(l),
20
+ className: o(
21
+ "border-2 rounded-xl transition-all flex items-center justify-center p-3",
22
+ e ? s === l ? "border-green-500 bg-green-50 shadow-md cursor-pointer hover:scale-105" : "border-gray-200 bg-white hover:border-gray-300 cursor-pointer hover:scale-105" : "border-gray-300 bg-gray-100 cursor-not-allowed opacity-50",
23
+ d && e && "relative"
24
+ ),
25
+ children: [
26
+ d && e && /* @__PURE__ */ t("div", { className: "absolute -top-3 left-1/2 transform -translate-x-1/2", children: /* @__PURE__ */ t("div", { className: "bg-orange-500 text-white text-xs px-3 py-1 rounded-full font-semibold whitespace-nowrap", children: "Best Value" }) }),
27
+ /* @__PURE__ */ a("div", { className: "text-center", children: [
28
+ /* @__PURE__ */ a("div", { className: o("text-lg font-bold", e ? "text-gray-900" : "text-gray-500"), children: [
29
+ "BUY ",
30
+ l
31
+ ] }),
32
+ l > 1 && /* @__PURE__ */ t("div", { className: o(
33
+ "text-sm font-bold inline-block bg-[#F54927] text-white px-1 rounded-full line-through mb-1",
34
+ e ? "text-gray-500" : "text-gray-400"
35
+ ), children: g(n * l) }),
36
+ /* @__PURE__ */ t("div", { className: o("text-lg md:text-2xl font-bold", e ? "text-green-600" : "text-gray-400"), children: g(u(n, l, r)) }),
37
+ l > 1 && e ? /* @__PURE__ */ a("div", { className: "bg-orange-500 text-white text-sm px-2 py-1 rounded-md font-semibold mb-2", children: [
38
+ "Save ",
39
+ f(l, r),
40
+ "%"
41
+ ] }) : e ? null : /* @__PURE__ */ t("div", { className: "text-xs text-red-500 mt-1", children: "Out of Stock" })
42
+ ] })
43
+ ]
44
+ }
45
+ );
46
+ }, j = ({
47
+ selectedVariant: l,
48
+ quantity: i,
49
+ onQuantityChange: s,
50
+ effectivePrice: c,
51
+ quantityDiscounts: n
52
+ }) => {
53
+ const [r, d] = w(2), e = !!l, b = i === r, p = (h) => {
54
+ h.stopPropagation();
55
+ const x = r + 1;
56
+ d(x), e && s(x);
57
+ }, y = (h) => {
58
+ if (h.stopPropagation(), r > 2) {
59
+ const x = r - 1;
60
+ d(x), e && s(x);
61
+ }
62
+ }, v = () => {
63
+ e && s(r);
64
+ }, m = f(r, n), N = u(c, r, n);
65
+ return /* @__PURE__ */ a(
66
+ "div",
67
+ {
68
+ onClick: v,
69
+ className: o(
70
+ "border-2 rounded-xl transition-all flex flex-col items-center justify-center p-3 relative",
71
+ e ? b ? "border-green-500 bg-green-50 shadow-md cursor-pointer hover:scale-105" : "border-gray-200 bg-white hover:border-gray-300 cursor-pointer hover:scale-105" : "border-gray-300 bg-gray-100 cursor-not-allowed opacity-50"
72
+ ),
73
+ children: [
74
+ /* @__PURE__ */ t(
75
+ "button",
76
+ {
77
+ onClick: y,
78
+ disabled: !e || r <= 2,
79
+ className: o(
80
+ "absolute left-2 top-1/2 -translate-y-1/2 w-8 h-8 rounded-full flex items-center justify-center text-lg font-bold transition-colors",
81
+ !e || r <= 2 ? "bg-gray-200 text-gray-400 cursor-not-allowed" : "bg-gray-300 text-gray-700 hover:bg-gray-400"
82
+ ),
83
+ children: "-"
84
+ }
49
85
  ),
50
- onClick: i,
51
- "aria-hidden": "true"
52
- }
53
- ),
54
- /* @__PURE__ */ e(
55
- "div",
56
- {
57
- className: c(
58
- "fixed right-0 top-0 z-50 h-full w-full bg-white shadow-2xl transition-transform duration-300 ease-in-out sm:w-[480px]",
59
- s ? "translate-x-0" : "translate-x-full",
60
- R
86
+ /* @__PURE__ */ t(
87
+ "button",
88
+ {
89
+ onClick: p,
90
+ disabled: !e,
91
+ className: o(
92
+ "absolute right-2 top-1/2 -translate-y-1/2 w-8 h-8 rounded-full flex items-center justify-center text-lg font-bold transition-colors",
93
+ e ? "bg-gray-300 text-gray-700 hover:bg-gray-400" : "bg-gray-200 text-gray-400 cursor-not-allowed"
94
+ ),
95
+ children: "+"
96
+ }
61
97
  ),
62
- children: /* @__PURE__ */ a("div", { className: "flex h-full flex-col", children: [
63
- /* @__PURE__ */ e("div", { className: "border-b border-gray-300 px-4 py-2", children: /* @__PURE__ */ a("div", { className: "flex items-center justify-between", children: [
64
- /* @__PURE__ */ a("div", { className: "flex items-center gap-2", children: [
65
- /* @__PURE__ */ e("div", { className: "bg-accent-500 text-white px-2 py-1 rounded-full text-sm aspect-square flex items-center justify-center w-8 h-8", children: (b = t == null ? void 0 : t.items) == null ? void 0 : b.length }),
66
- /* @__PURE__ */ e("h2", { className: "text-lg font-medium", children: "Your Cart" })
67
- ] }),
68
- /* @__PURE__ */ e(
69
- "button",
70
- {
71
- onClick: i,
72
- className: "rounded-full p-2 transition-colors hover:bg-gray-100",
73
- "aria-label": "Close cart",
74
- children: /* @__PURE__ */ e(U, { className: "h-6 w-6" })
75
- }
76
- )
77
- ] }) }),
78
- !l && !o && t && t.items && t.items.length > 0 && ((N = t.brand) == null ? void 0 : N.freeShippingThreshold) && /* @__PURE__ */ e("div", { className: "bg-gray-50 px-4 py-3 border-b border-gray-200", children: (() => {
79
- var j;
80
- const r = t.brand.freeShippingThreshold, n = ((j = t.pricing) == null ? void 0 : j.subtotal) || 0, k = Math.max(0, r - n), Z = Math.min(100, n / r * 100), C = k <= 0;
81
- return /* @__PURE__ */ a("div", { className: "space-y-2", children: [
82
- /* @__PURE__ */ e("p", { className: "text-sm font-bold text-center", children: C ? /* @__PURE__ */ e("span", { className: "text-green-600", children: "You've unlocked FREE delivery! 🎉" }) : /* @__PURE__ */ a("span", { children: [
83
- "You're ",
84
- /* @__PURE__ */ e("span", { className: "text-red-500", children: d(k) }),
85
- " away from FREE delivery"
86
- ] }) }),
87
- /* @__PURE__ */ e("div", { className: "h-2 w-full bg-gray-200 rounded-full overflow-hidden", children: /* @__PURE__ */ e(
88
- "div",
89
- {
90
- className: c(
91
- "h-full transition-all duration-500 ease-out",
92
- C ? "bg-green-500" : "bg-red-500"
93
- ),
94
- style: { width: `${Z}%` }
95
- }
96
- ) })
97
- ] });
98
- })() }),
99
- l && /* @__PURE__ */ e("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ a("div", { className: "text-center", children: [
100
- /* @__PURE__ */ e(V, { className: "mx-auto mb-4 h-12 w-12 animate-spin text-accent-500" }),
101
- /* @__PURE__ */ e("p", { className: "text-gray-600", children: "Loading cart..." })
102
- ] }) }),
103
- o && !l && /* @__PURE__ */ e("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ a("div", { className: "text-center", children: [
104
- /* @__PURE__ */ e(f, { className: "mx-auto mb-4 h-12 w-12 text-red-600" }),
105
- /* @__PURE__ */ e("p", { className: "text-red-600", children: "Failed to load cart. Please try again." })
106
- ] }) }),
107
- !l && !o && (!t || !t.items || t.items.length === 0) && /* @__PURE__ */ e("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ a("div", { className: "text-center", children: [
108
- /* @__PURE__ */ e(f, { className: "mx-auto mb-4 h-12 w-12 text-gray-400" }),
109
- /* @__PURE__ */ e("p", { className: "text-gray-600", children: M })
110
- ] }) }),
111
- !l && !o && t && t.items && t.items.length > 0 && /* @__PURE__ */ a(E, { children: [
112
- /* @__PURE__ */ a("div", { className: "flex-1 overflow-y-auto", children: [
113
- /* @__PURE__ */ e("div", { className: "space-y-4 p-4", children: t.items.map((r, n) => /* @__PURE__ */ a("div", { children: [
114
- /* @__PURE__ */ e(
115
- J,
116
- {
117
- item: r
118
- }
119
- ),
120
- /* @__PURE__ */ e("hr", { className: "border-gray-200 mt-2" })
121
- ] }, r.id)) }),
122
- I && /* @__PURE__ */ e("div", { className: "px-4 pb-4", children: /* @__PURE__ */ e(K, {}) })
98
+ /* @__PURE__ */ a("div", { className: "text-center w-full", children: [
99
+ /* @__PURE__ */ a("div", { className: o("text-lg font-bold", e ? "text-gray-900" : "text-gray-500"), children: [
100
+ "BUY ",
101
+ r
102
+ ] }),
103
+ /* @__PURE__ */ a("div", { className: "flex items-center justify-center gap-2", children: [
104
+ r > 1 && !!m && /* @__PURE__ */ t("div", { className: o(
105
+ "text-base md:text-lg font-bold line-through",
106
+ e ? "text-[#DC143C]" : "text-gray-400"
107
+ ), children: g(c * r) }),
108
+ /* @__PURE__ */ t("div", { className: o("text-lg md:text-2xl font-bold", e ? "text-green-600" : "text-gray-400"), children: g(N) })
109
+ ] }),
110
+ r > 1 && e ? !!m && /* @__PURE__ */ a("div", { className: "absolute top-[-30px] right-0 2xl:right-[-30px] h-[60px] w-[60px] flex items-center justify-center", children: [
111
+ /* @__PURE__ */ a("span", { className: "text-white font-bold z-[5] relative leading-4", children: [
112
+ m,
113
+ "%",
114
+ /* @__PURE__ */ t("br", {}),
115
+ "off"
123
116
  ] }),
124
- /* @__PURE__ */ e(Q, { limit: 6, className: "border-t border-gray-200" }),
125
- /* @__PURE__ */ a("div", { className: "border-t border-gray-300 bg-white", children: [
126
- /* @__PURE__ */ a("div", { className: " text-base", children: [
127
- /* @__PURE__ */ a("div", { className: "px-4 py-2 space-y-2", children: [
128
- /* @__PURE__ */ a("div", { className: "flex justify-between", children: [
129
- /* @__PURE__ */ e("span", { className: "text-gray-600", children: "Subtotal" }),
130
- /* @__PURE__ */ e("span", { className: "font-semibold", children: d(H) })
131
- ] }),
132
- g > 0 && /* @__PURE__ */ a("div", { className: "flex justify-between text-green-600", children: [
133
- /* @__PURE__ */ e("span", { children: "Discount" }),
134
- /* @__PURE__ */ a("span", { className: "font-semibold", children: [
135
- "-",
136
- d(g)
137
- ] })
138
- ] }),
139
- /* @__PURE__ */ a("div", { className: "flex justify-between", children: [
140
- /* @__PURE__ */ e("span", { className: "text-gray-600", children: "Shipping" }),
141
- /* @__PURE__ */ e("span", { className: "font-semibold", children: t.deliveryZone ? ((v = t.pricing) == null ? void 0 : v.deliveryCharge) === 0 ? /* @__PURE__ */ e("span", { className: "text-green-600", children: "Free" }) : d(((w = t.pricing) == null ? void 0 : w.deliveryCharge) ?? 0) : /* @__PURE__ */ e("span", { className: "text-gray-400 text-xs font-normal", children: "Calculated at checkout" }) })
142
- ] })
143
- ] }),
144
- /* @__PURE__ */ a("div", { className: "flex justify-between p-4 border-t border-gray-300 text-lg", children: [
145
- /* @__PURE__ */ e("span", { className: "font-bold", children: "Total" }),
146
- /* @__PURE__ */ e("span", { className: "font-bold", children: d(t.pricing.total) })
147
- ] })
148
- ] }),
149
- /* @__PURE__ */ a("div", { className: "px-4 py-2 space-y-2 pt-0", children: [
150
- /* @__PURE__ */ a(
151
- F,
152
- {
153
- onClick: P,
154
- disabled: D || t.items.length === 0,
155
- className: c("w-full bg-accent-500 text-white hover:bg-accent-600", T),
156
- size: "lg",
157
- children: [
158
- /* @__PURE__ */ e(f, { className: "h-5 w-5" }),
159
- z
160
- ]
161
- }
162
- ),
163
- L && /* @__PURE__ */ e(
164
- F,
165
- {
166
- onClick: X,
167
- variant: "outline",
168
- className: c("w-full border-gray-300 text-gray-600 hover:bg-gray-100", B),
169
- size: "lg",
170
- children: Y
171
- }
172
- )
173
- ] })
174
- ] })
175
- ] })
117
+ /* @__PURE__ */ t(C, { className: "animate-spin-slow w-full h-full z-[2] inset-0 absolute fill-accent-500 text-accent-500" })
118
+ ] }) : e ? null : /* @__PURE__ */ t("div", { className: "text-xs text-red-500 mt-1", children: "Out of Stock" })
176
119
  ] })
177
- }
178
- ),
179
- /* @__PURE__ */ e(
180
- O,
181
- {
182
- isOpen: q,
183
- onSuccess: (r) => {
184
- p == null || p(r), i();
185
- },
186
- onClose: () => u(!1),
187
- refundPolicy: {
188
- title: "🤔 Curious about Refunds?",
189
- policies: [
190
- "2 day return window from delivery date",
191
- "Items must be unused and in original packaging",
192
- "Refunds processed as soon as item is received",
193
- "Refunds issued to original payment method",
194
- "Contact hello@instock.ng to initiate a refund"
195
- ]
196
- }
197
- }
198
- )
120
+ ]
121
+ }
122
+ );
123
+ };
124
+ function P({
125
+ selectedVariant: l,
126
+ quantity: i,
127
+ onQuantityChange: s,
128
+ effectivePrice: c,
129
+ quantityDiscounts: n
130
+ }) {
131
+ return /* @__PURE__ */ a("div", { className: "flex flex-col space-y-2", children: [
132
+ /* @__PURE__ */ t("span", { className: "text-sm font-medium", children: "Choose Quantity:" }),
133
+ /* @__PURE__ */ a("div", { className: "relative", children: [
134
+ !l && /* @__PURE__ */ t("div", { className: "absolute inset-0 bg-white/80 z-10 rounded-xl flex items-center justify-center", children: /* @__PURE__ */ a("div", { className: "text-center p-4", children: [
135
+ /* @__PURE__ */ t("div", { className: "text-lg font-semibold text-gray-700 mb-2", children: "Select a variant first" }),
136
+ /* @__PURE__ */ t("div", { className: "text-sm text-gray-500", children: "Choose a product variant above to see quantity options" })
137
+ ] }) }),
138
+ /* @__PURE__ */ a("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-3", children: [
139
+ /* @__PURE__ */ t(
140
+ S,
141
+ {
142
+ qty: 1,
143
+ selectedVariant: l,
144
+ quantity: i,
145
+ onQuantityChange: s,
146
+ effectivePrice: c,
147
+ quantityDiscounts: n
148
+ }
149
+ ),
150
+ /* @__PURE__ */ t(
151
+ j,
152
+ {
153
+ selectedVariant: l,
154
+ quantity: i,
155
+ onQuantityChange: s,
156
+ effectivePrice: c,
157
+ quantityDiscounts: n
158
+ }
159
+ )
160
+ ] })
161
+ ] })
199
162
  ] });
200
163
  }
201
164
  export {
202
- oe as ShoppingCart
165
+ P as QuantitySelector
203
166
  };
package/dist/index140.mjs CHANGED
@@ -1,5 +1,73 @@
1
1
  'use client';
2
- var e = {};
2
+ import { __exports as n } from "./index211.mjs";
3
+ import { __require as c } from "./index212.mjs";
4
+ var u;
5
+ function y() {
6
+ return u ? n : (u = 1, function(a) {
7
+ Object.defineProperty(a, "__esModule", {
8
+ value: !0
9
+ }), Object.defineProperty(a, "BloomFilter", {
10
+ enumerable: !0,
11
+ get: function() {
12
+ return i;
13
+ }
14
+ });
15
+ function l(o) {
16
+ let t = 0;
17
+ for (let e = 0; e < o.length; e++) {
18
+ const r = o.charCodeAt(e);
19
+ t = Math.imul(t ^ r, 1540483477), t ^= t >>> 13, t = Math.imul(t, 1540483477);
20
+ }
21
+ return t >>> 0;
22
+ }
23
+ const s = 1e-4;
24
+ class i {
25
+ static from(t, e) {
26
+ e === void 0 && (e = s);
27
+ const r = new i(t.length, e);
28
+ for (const h of t)
29
+ r.add(h);
30
+ return r;
31
+ }
32
+ export() {
33
+ const t = {
34
+ numItems: this.numItems,
35
+ errorRate: this.errorRate,
36
+ numBits: this.numBits,
37
+ numHashes: this.numHashes,
38
+ bitArray: this.bitArray
39
+ };
40
+ if (process.env.NEXT_RUNTIME === "nodejs" && this.errorRate < s) {
41
+ const e = JSON.stringify(t), r = c().sync(e);
42
+ r > 1024 && console.warn("Creating filter with error rate less than 0.1% (0.001) can increase the size dramatically proceed with caution. Received error rate " + this.errorRate + " resulted in size " + e.length + " bytes, " + r + " bytes (gzip)");
43
+ }
44
+ return t;
45
+ }
46
+ import(t) {
47
+ this.numItems = t.numItems, this.errorRate = t.errorRate, this.numBits = t.numBits, this.numHashes = t.numHashes, this.bitArray = t.bitArray;
48
+ }
49
+ add(t) {
50
+ this.getHashValues(t).forEach((r) => {
51
+ this.bitArray[r] = 1;
52
+ });
53
+ }
54
+ contains(t) {
55
+ return this.getHashValues(t).every((r) => this.bitArray[r]);
56
+ }
57
+ getHashValues(t) {
58
+ const e = [];
59
+ for (let r = 1; r <= this.numHashes; r++) {
60
+ const h = l("" + t + r) % this.numBits;
61
+ e.push(h);
62
+ }
63
+ return e;
64
+ }
65
+ constructor(t, e = s) {
66
+ this.numItems = t, this.errorRate = e, this.numBits = Math.ceil(-(t * Math.log(e)) / (Math.log(2) * Math.log(2))), this.numHashes = Math.ceil(this.numBits / t * Math.log(2)), this.bitArray = new Array(this.numBits).fill(0);
67
+ }
68
+ }
69
+ }(n), n);
70
+ }
3
71
  export {
4
- e as __exports
72
+ y as __require
5
73
  };
package/dist/index141.mjs CHANGED
@@ -1,5 +1,11 @@
1
1
  'use client';
2
- var r = {};
2
+ import { __module as e } from "./index213.mjs";
3
+ import { __require as o } from "./index214.mjs";
4
+ import { __require as t } from "./index215.mjs";
5
+ var r;
6
+ function p() {
7
+ return r ? e.exports : (r = 1, process.env.NODE_ENV === "production" ? e.exports = o() : e.exports = t(), e.exports);
8
+ }
3
9
  export {
4
- r as __exports
10
+ p as __require
5
11
  };
package/dist/index142.mjs CHANGED
@@ -1,36 +1,5 @@
1
1
  'use client';
2
- import { __exports as r } from "./index156.mjs";
3
- var c;
4
- function b() {
5
- return c ? r : (c = 1, function(n) {
6
- Object.defineProperty(n, "__esModule", {
7
- value: !0
8
- });
9
- function u(e, t) {
10
- for (var i in t) Object.defineProperty(e, i, {
11
- enumerable: !0,
12
- get: t[i]
13
- });
14
- }
15
- u(n, {
16
- getObjectClassLabel: function() {
17
- return o;
18
- },
19
- isPlainObject: function() {
20
- return s;
21
- }
22
- });
23
- function o(e) {
24
- return Object.prototype.toString.call(e);
25
- }
26
- function s(e) {
27
- if (o(e) !== "[object Object]")
28
- return !1;
29
- const t = Object.getPrototypeOf(e);
30
- return t === null || t.hasOwnProperty("isPrototypeOf");
31
- }
32
- }(r), r);
33
- }
2
+ var e = {};
34
3
  export {
35
- b as __require
4
+ e as __exports
36
5
  };
package/dist/index143.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- var e = { exports: {} };
2
+ var r = {};
3
3
  export {
4
- e as __module
4
+ r as __exports
5
5
  };
package/dist/index144.mjs CHANGED
@@ -1,24 +1,36 @@
1
1
  'use client';
2
- import f from "./index87.mjs";
3
- import d from "./index215.mjs";
4
- function l(e) {
5
- return encodeURIComponent(e).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+");
6
- }
7
- function m(e, c, i) {
8
- if (!c)
9
- return e;
10
- const t = i && i.encode || l;
11
- f.isFunction(i) && (i = {
12
- serialize: i
13
- });
14
- const r = i && i.serialize;
15
- let n;
16
- if (r ? n = r(c, i) : n = f.isURLSearchParams(c) ? c.toString() : new d(c, i).toString(t), n) {
17
- const a = e.indexOf("#");
18
- a !== -1 && (e = e.slice(0, a)), e += (e.indexOf("?") === -1 ? "?" : "&") + n;
19
- }
20
- return e;
2
+ import { __exports as r } from "./index216.mjs";
3
+ var c;
4
+ function b() {
5
+ return c ? r : (c = 1, function(n) {
6
+ Object.defineProperty(n, "__esModule", {
7
+ value: !0
8
+ });
9
+ function u(e, t) {
10
+ for (var i in t) Object.defineProperty(e, i, {
11
+ enumerable: !0,
12
+ get: t[i]
13
+ });
14
+ }
15
+ u(n, {
16
+ getObjectClassLabel: function() {
17
+ return o;
18
+ },
19
+ isPlainObject: function() {
20
+ return s;
21
+ }
22
+ });
23
+ function o(e) {
24
+ return Object.prototype.toString.call(e);
25
+ }
26
+ function s(e) {
27
+ if (o(e) !== "[object Object]")
28
+ return !1;
29
+ const t = Object.getPrototypeOf(e);
30
+ return t === null || t.hasOwnProperty("isPrototypeOf");
31
+ }
32
+ }(r), r);
21
33
  }
22
34
  export {
23
- m as default
35
+ b as __require
24
36
  };
package/dist/index145.mjs CHANGED
@@ -1,59 +1,5 @@
1
1
  'use client';
2
- import n from "./index87.mjs";
3
- class a {
4
- constructor() {
5
- this.handlers = [];
6
- }
7
- /**
8
- * Add a new interceptor to the stack
9
- *
10
- * @param {Function} fulfilled The function to handle `then` for a `Promise`
11
- * @param {Function} rejected The function to handle `reject` for a `Promise`
12
- *
13
- * @return {Number} An ID used to remove interceptor later
14
- */
15
- use(s, h, r) {
16
- return this.handlers.push({
17
- fulfilled: s,
18
- rejected: h,
19
- synchronous: r ? r.synchronous : !1,
20
- runWhen: r ? r.runWhen : null
21
- }), this.handlers.length - 1;
22
- }
23
- /**
24
- * Remove an interceptor from the stack
25
- *
26
- * @param {Number} id The ID that was returned by `use`
27
- *
28
- * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise
29
- */
30
- eject(s) {
31
- this.handlers[s] && (this.handlers[s] = null);
32
- }
33
- /**
34
- * Clear all interceptors from the stack
35
- *
36
- * @returns {void}
37
- */
38
- clear() {
39
- this.handlers && (this.handlers = []);
40
- }
41
- /**
42
- * Iterate over all the registered interceptors
43
- *
44
- * This method is particularly useful for skipping over any
45
- * interceptors that may have become `null` calling `eject`.
46
- *
47
- * @param {Function} fn The function to call for each interceptor
48
- *
49
- * @returns {void}
50
- */
51
- forEach(s) {
52
- n.forEach(this.handlers, function(r) {
53
- r !== null && s(r);
54
- });
55
- }
56
- }
2
+ var e = { exports: {} };
57
3
  export {
58
- a as default
4
+ e as __module
59
5
  };