@instockng/storefront-ui 1.0.106 → 1.0.108

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 (298) hide show
  1. package/dist/components/AssistantDrawer.d.ts +22 -0
  2. package/dist/components/AssistantDrawer.d.ts.map +1 -0
  3. package/dist/components/ProductAssistantChips.d.ts +13 -0
  4. package/dist/components/ProductAssistantChips.d.ts.map +1 -0
  5. package/dist/contexts/AssistantContext.d.ts +19 -0
  6. package/dist/contexts/AssistantContext.d.ts.map +1 -0
  7. package/dist/index.d.ts +5 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.mjs +144 -138
  10. package/dist/index10.mjs +103 -73
  11. package/dist/index100.mjs +53 -68
  12. package/dist/index101.mjs +6 -37
  13. package/dist/index102.mjs +4 -42
  14. package/dist/index103.mjs +179 -2
  15. package/dist/index104.mjs +53 -6
  16. package/dist/index105.mjs +69 -1134
  17. package/dist/index106.mjs +2 -20
  18. package/dist/index107.mjs +5 -54
  19. package/dist/index108.mjs +1126 -25
  20. package/dist/index109.mjs +20 -2
  21. package/dist/index11.mjs +74 -190
  22. package/dist/index110.mjs +55 -2
  23. package/dist/index111.mjs +33 -2
  24. package/dist/index112.mjs +2 -28
  25. package/dist/index113.mjs +2 -18
  26. package/dist/index114.mjs +2 -215
  27. package/dist/index115.mjs +26 -178
  28. package/dist/index116.mjs +10 -14
  29. package/dist/index117.mjs +209 -17
  30. package/dist/index118.mjs +173 -26
  31. package/dist/index119.mjs +17 -151
  32. package/dist/index12.mjs +172 -107
  33. package/dist/index120.mjs +12 -9
  34. package/dist/index121.mjs +24 -22
  35. package/dist/index122.mjs +148 -76
  36. package/dist/index123.mjs +13 -31
  37. package/dist/index124.mjs +24 -138
  38. package/dist/index125.mjs +78 -49
  39. package/dist/index126.mjs +32 -17
  40. package/dist/index127.mjs +139 -21
  41. package/dist/index128.mjs +51 -19
  42. package/dist/index129.mjs +16 -18
  43. package/dist/index13.mjs +127 -98
  44. package/dist/index130.mjs +18 -12
  45. package/dist/index131.mjs +15 -14
  46. package/dist/index132.mjs +17 -13
  47. package/dist/index133.mjs +14 -58
  48. package/dist/index134.mjs +15 -11
  49. package/dist/index135.mjs +14 -32
  50. package/dist/index136.mjs +57 -16
  51. package/dist/index137.mjs +11 -27
  52. package/dist/index138.mjs +31 -19
  53. package/dist/index139.mjs +17 -12
  54. package/dist/index14.mjs +94 -90
  55. package/dist/index140.mjs +27 -14
  56. package/dist/index141.mjs +20 -40
  57. package/dist/index142.mjs +11 -15
  58. package/dist/index143.mjs +17 -264
  59. package/dist/index144.mjs +40 -63
  60. package/dist/index145.mjs +22 -7
  61. package/dist/index146.mjs +268 -2
  62. package/dist/index147.mjs +70 -2
  63. package/dist/index148.mjs +7 -32
  64. package/dist/index149.mjs +2 -2
  65. package/dist/index15.mjs +84 -149
  66. package/dist/index150.mjs +2 -21
  67. package/dist/index151.mjs +31 -54
  68. package/dist/index152.mjs +2 -29
  69. package/dist/index153.mjs +20 -6
  70. package/dist/index154.mjs +53 -49
  71. package/dist/index155.mjs +29 -6
  72. package/dist/index156.mjs +6 -11
  73. package/dist/index157.mjs +49 -4
  74. package/dist/index158.mjs +5 -27
  75. package/dist/index159.mjs +12 -2
  76. package/dist/index16.mjs +157 -203
  77. package/dist/index160.mjs +6 -69
  78. package/dist/index161.mjs +27 -166
  79. package/dist/index162.mjs +2 -2
  80. package/dist/index163.mjs +70 -2
  81. package/dist/index164.mjs +167 -2
  82. package/dist/index165.mjs +2 -2
  83. package/dist/index166.mjs +2 -18
  84. package/dist/index167.mjs +2 -32
  85. package/dist/index168.mjs +2 -38
  86. package/dist/index169.mjs +11 -11
  87. package/dist/index17.mjs +198 -107
  88. package/dist/index170.mjs +25 -11
  89. package/dist/index171.mjs +38 -2
  90. package/dist/index172.mjs +11 -13
  91. package/dist/index173.mjs +11 -39
  92. package/dist/index174.mjs +2 -2
  93. package/dist/index175.mjs +15 -25
  94. package/dist/index176.mjs +39 -11
  95. package/dist/index178.mjs +30 -2
  96. package/dist/index179.mjs +18 -2
  97. package/dist/index18.mjs +97 -130
  98. package/dist/index181.mjs +2 -72
  99. package/dist/index182.mjs +2 -2
  100. package/dist/index183.mjs +2 -53
  101. package/dist/index184.mjs +72 -2
  102. package/dist/index185.mjs +2 -36
  103. package/dist/index186.mjs +38 -137
  104. package/dist/index187.mjs +2 -2
  105. package/dist/index188.mjs +36 -2
  106. package/dist/index189.mjs +147 -14
  107. package/dist/index19.mjs +140 -87
  108. package/dist/index191.mjs +2 -2
  109. package/dist/index192.mjs +10 -17
  110. package/dist/index193.mjs +2 -2
  111. package/dist/index194.mjs +2 -2
  112. package/dist/index195.mjs +18 -16
  113. package/dist/index196.mjs +2 -23
  114. package/dist/index197.mjs +2 -2
  115. package/dist/index198.mjs +24 -2
  116. package/dist/index199.mjs +23 -2
  117. package/dist/index2.mjs +30 -16
  118. package/dist/index20.mjs +82 -708
  119. package/dist/index200.mjs +2 -23
  120. package/dist/index201.mjs +2 -2
  121. package/dist/index202.mjs +2 -23
  122. package/dist/index203.mjs +23 -2
  123. package/dist/index204.mjs +2 -2
  124. package/dist/index205.mjs +23 -2
  125. package/dist/index206.mjs +2 -23
  126. package/dist/index207.mjs +2 -2
  127. package/dist/index208.mjs +2 -23
  128. package/dist/index209.mjs +23 -2
  129. package/dist/index21.mjs +718 -54
  130. package/dist/index210.mjs +2 -2
  131. package/dist/index211.mjs +23 -2
  132. package/dist/index212.mjs +2 -2
  133. package/dist/index213.mjs +2 -2
  134. package/dist/index215.mjs +2 -2
  135. package/dist/index216.mjs +2 -2
  136. package/dist/index217.mjs +2 -127
  137. package/dist/index218.mjs +2 -2
  138. package/dist/index219.mjs +2 -74
  139. package/dist/index22.mjs +263 -62
  140. package/dist/index220.mjs +123 -70
  141. package/dist/index221.mjs +2 -13
  142. package/dist/index222.mjs +74 -7
  143. package/dist/index223.mjs +73 -30
  144. package/dist/index224.mjs +30 -10
  145. package/dist/index225.mjs +10 -3
  146. package/dist/index226.mjs +3 -3
  147. package/dist/index227.mjs +3 -11
  148. package/dist/index228.mjs +13 -5
  149. package/dist/index229.mjs +7 -33
  150. package/dist/index23.mjs +44 -23
  151. package/dist/index230.mjs +11 -30
  152. package/dist/index231.mjs +5 -28
  153. package/dist/index232.mjs +33 -61
  154. package/dist/index233.mjs +31 -2
  155. package/dist/index234.mjs +28 -2
  156. package/dist/index235.mjs +61 -2
  157. package/dist/index236.mjs +2 -2
  158. package/dist/index237.mjs +108 -2
  159. package/dist/index238.mjs +2 -2
  160. package/dist/index239.mjs +2 -2
  161. package/dist/index24.mjs +55 -104
  162. package/dist/index240.mjs +2 -2
  163. package/dist/index241.mjs +2 -108
  164. package/dist/index242.mjs +2 -2
  165. package/dist/index244.mjs +2 -37
  166. package/dist/index245.mjs +2 -2
  167. package/dist/index246.mjs +2 -244
  168. package/dist/index247.mjs +37 -2
  169. package/dist/index248.mjs +2 -33
  170. package/dist/index249.mjs +2 -65
  171. package/dist/index25.mjs +62 -42
  172. package/dist/index250.mjs +243 -24
  173. package/dist/index251.mjs +2 -2
  174. package/dist/index252.mjs +33 -2
  175. package/dist/index253.mjs +65 -2
  176. package/dist/index254.mjs +25 -2
  177. package/dist/index255.mjs +2 -2
  178. package/dist/index256.mjs +2 -2
  179. package/dist/index257.mjs +2 -2
  180. package/dist/index259.mjs +2 -2
  181. package/dist/index26.mjs +22 -40
  182. package/dist/index260.mjs +2 -2
  183. package/dist/index261.mjs +2 -4
  184. package/dist/index262.mjs +2 -2
  185. package/dist/index263.mjs +2 -2
  186. package/dist/index264.mjs +4 -3
  187. package/dist/index265.mjs +2 -2
  188. package/dist/index266.mjs +2 -2
  189. package/dist/index267.mjs +3 -17
  190. package/dist/index268.mjs +2 -13
  191. package/dist/index269.mjs +2 -6
  192. package/dist/index27.mjs +107 -87
  193. package/dist/index270.mjs +17 -30
  194. package/dist/index271.mjs +13 -2
  195. package/dist/index272.mjs +6 -2
  196. package/dist/index273.mjs +29 -17
  197. package/dist/index274.mjs +2 -47
  198. package/dist/index275.mjs +2 -2
  199. package/dist/index276.mjs +18 -2
  200. package/dist/index277.mjs +47 -2
  201. package/dist/index278.mjs +2 -2
  202. package/dist/index279.mjs +2 -91
  203. package/dist/index28.mjs +42 -32
  204. package/dist/index280.mjs +2 -2
  205. package/dist/index282.mjs +91 -2
  206. package/dist/index283.mjs +2 -2
  207. package/dist/index284.mjs +5 -0
  208. package/dist/index285.mjs +5 -0
  209. package/dist/index286.mjs +5 -0
  210. package/dist/index29.mjs +42 -9
  211. package/dist/index3.mjs +7 -7
  212. package/dist/index30.mjs +84 -17
  213. package/dist/index31.mjs +29 -35
  214. package/dist/index32.mjs +8 -39
  215. package/dist/index33.mjs +21 -125
  216. package/dist/index34.mjs +35 -46
  217. package/dist/index35.mjs +38 -9
  218. package/dist/index36.mjs +121 -6
  219. package/dist/index37.mjs +49 -123
  220. package/dist/index38.mjs +11 -28
  221. package/dist/index39.mjs +11 -91
  222. package/dist/index4.mjs +34 -101
  223. package/dist/index40.mjs +121 -123
  224. package/dist/index41.mjs +28 -11
  225. package/dist/index42.mjs +91 -35
  226. package/dist/index43.mjs +116 -37
  227. package/dist/index44.mjs +9 -9
  228. package/dist/index45.mjs +33 -121
  229. package/dist/index46.mjs +42 -385
  230. package/dist/index47.mjs +10 -24
  231. package/dist/index48.mjs +122 -31
  232. package/dist/index49.mjs +388 -27
  233. package/dist/index5.mjs +92 -102
  234. package/dist/index50.mjs +24 -6
  235. package/dist/index51.mjs +30 -1431
  236. package/dist/index52.mjs +26 -68
  237. package/dist/index53.mjs +7 -2
  238. package/dist/index54.mjs +1425 -52
  239. package/dist/index55.mjs +69 -50
  240. package/dist/index56.mjs +2 -33
  241. package/dist/index57.mjs +59 -14
  242. package/dist/index58.mjs +47 -2259
  243. package/dist/index59.mjs +33 -36
  244. package/dist/index6.mjs +111 -15
  245. package/dist/index60.mjs +14 -43
  246. package/dist/index61.mjs +2256 -96
  247. package/dist/index62.mjs +36 -81
  248. package/dist/index63.mjs +43 -18
  249. package/dist/index64.mjs +102 -128
  250. package/dist/index65.mjs +45 -89
  251. package/dist/index66.mjs +15 -75
  252. package/dist/index67.mjs +84 -130
  253. package/dist/index68.mjs +84 -66
  254. package/dist/index69.mjs +69 -26
  255. package/dist/index7.mjs +15 -195
  256. package/dist/index70.mjs +138 -58
  257. package/dist/index71.mjs +82 -56
  258. package/dist/index72.mjs +28 -55
  259. package/dist/index73.mjs +79 -46
  260. package/dist/index74.mjs +58 -112
  261. package/dist/index75.mjs +47 -54
  262. package/dist/index76.mjs +60 -22
  263. package/dist/index77.mjs +135 -2
  264. package/dist/index78.mjs +68 -21
  265. package/dist/index79.mjs +4 -152
  266. package/dist/index8.mjs +136 -190
  267. package/dist/index80.mjs +23 -4
  268. package/dist/index81.mjs +2 -75
  269. package/dist/index82.mjs +153 -15
  270. package/dist/index83.mjs +21 -61
  271. package/dist/index84.mjs +69 -229
  272. package/dist/index85.mjs +15 -6
  273. package/dist/index86.mjs +55 -126
  274. package/dist/index87.mjs +33 -64
  275. package/dist/index88.mjs +40 -84
  276. package/dist/index89.mjs +229 -23
  277. package/dist/index9.mjs +240 -99
  278. package/dist/index90.mjs +5 -8
  279. package/dist/index91.mjs +125 -66
  280. package/dist/index92.mjs +67 -3
  281. package/dist/index93.mjs +87 -2
  282. package/dist/index94.mjs +24 -78
  283. package/dist/index95.mjs +7 -52
  284. package/dist/index96.mjs +74 -5
  285. package/dist/index97.mjs +3 -4
  286. package/dist/index98.mjs +2 -179
  287. package/dist/index99.mjs +79 -49
  288. package/dist/providers/StorefrontProvider.d.ts +3 -1
  289. package/dist/providers/StorefrontProvider.d.ts.map +1 -1
  290. package/dist/styles.css +1 -1
  291. package/package.json +1 -1
  292. package/src/components/AssistantDrawer.stories.tsx +90 -0
  293. package/src/components/AssistantDrawer.tsx +426 -0
  294. package/src/components/ProductAssistantChips.stories.tsx +42 -0
  295. package/src/components/ProductAssistantChips.tsx +64 -0
  296. package/src/contexts/AssistantContext.tsx +62 -0
  297. package/src/index.ts +11 -0
  298. package/src/providers/StorefrontProvider.tsx +17 -2
package/dist/index16.mjs CHANGED
@@ -1,212 +1,166 @@
1
1
  'use client';
2
- import { jsxs as s, Fragment as E, jsx as e } from "react/jsx-runtime";
3
- import { useState as b, useEffect as F } from "react";
4
- import "./index28.mjs";
5
- import { useGetCartRecommendations as V, useGetCartUpsellAddons as W } from "./index40.mjs";
6
- import "@tanstack/react-query";
7
- import { useCart as _ } from "./index3.mjs";
8
- import { CartItem as $ } from "./index14.mjs";
9
- import { DiscountCodeInput as O } from "./index19.mjs";
10
- import { Checkout as ee } from "./index20.mjs";
11
- import { RecommendedProducts as te } from "./index12.mjs";
12
- import { CartUpsellScreen as se } from "./index17.mjs";
13
- import { AddOnsDiscountScreen as ae } from "./index18.mjs";
14
- import { FreeShippingProgress as ie } from "./index49.mjs";
15
- import { Button as L } from "./index21.mjs";
16
- import { ArrowLeft as le, X as re, Loader2 as ne, Package as v } from "lucide-react";
17
- import { cn as p, formatCurrency as u } from "./index27.mjs";
18
- import { useHideBodyOverflow as de } from "./index50.mjs";
19
- function Se({
20
- isOpen: i,
21
- onClose: n,
22
- onCheckout: g,
23
- onContinueShopping: x,
24
- onPurchaseSuccess: y,
25
- className: U,
26
- showDiscountCode: I = !0,
27
- showContinueShopping: z = !0,
28
- checkoutButtonText: B = "Complete Purchase",
29
- continueShoppingText: R = "Continue Shopping",
30
- checkoutButtonClassName: N,
31
- continueShoppingButtonClassName: Y,
32
- disableCheckout: G = !1,
33
- emptyMessage: P = "Your cart is empty"
34
- }) {
35
- var k, C, j, A, S;
36
- const { cart: t, isLoading: d, error: o, trackCheckoutInitiated: q } = _(), { data: m } = V(t == null ? void 0 : t.id, 100), { data: ce } = W(t == null ? void 0 : t.id), [H, f] = b(!1), [l, c] = b(!1), [a, h] = b(!1);
37
- de(i), F(() => {
38
- i || (c(!1), h(!1));
39
- }, [i]), F(() => {
40
- const r = (D) => {
41
- D.key === "Escape" && i && n();
42
- };
43
- return window.addEventListener("keydown", r), () => window.removeEventListener("keydown", r);
44
- }, [i, n]);
45
- const T = ((k = t == null ? void 0 : t.pricing) == null ? void 0 : k.subtotal) || 0, w = ((C = t == null ? void 0 : t.pricing.discount) == null ? void 0 : C.amount) || 0, X = () => {
46
- q(), m && m.length > 0 ? c(!0) : f(!0), g == null || g();
47
- }, Z = () => {
48
- c(!1), f(!0);
49
- }, J = () => {
50
- h(!1), f(!0);
51
- }, K = () => {
52
- c(!1);
53
- }, M = () => {
54
- m && m.length > 0 ? (h(!1), c(!0)) : h(!1);
55
- }, Q = () => {
56
- x == null || x(), n();
57
- };
58
- return /* @__PURE__ */ s(E, { children: [
59
- /* @__PURE__ */ e(
60
- "div",
61
- {
62
- className: p(
63
- "fixed inset-0 z-40 bg-black/50 transition-opacity duration-300",
64
- i ? "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 "./index30.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
+ }
65
85
  ),
66
- onClick: n,
67
- "aria-hidden": "true"
68
- }
69
- ),
70
- /* @__PURE__ */ e(
71
- "div",
72
- {
73
- className: p(
74
- "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]",
75
- i ? "translate-x-0" : "translate-x-full",
76
- U
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
+ }
77
97
  ),
78
- children: /* @__PURE__ */ s("div", { className: "flex h-full flex-col", children: [
79
- /* @__PURE__ */ e("div", { className: "border-b border-gray-300 px-4 py-2", children: /* @__PURE__ */ s("div", { className: "flex items-center justify-between", children: [
80
- l || a ? /* @__PURE__ */ s("div", { className: "flex items-center gap-2", children: [
81
- /* @__PURE__ */ e(
82
- "button",
83
- {
84
- onClick: a ? M : K,
85
- className: "rounded-full p-2 transition-colors hover:bg-gray-100",
86
- "aria-label": "Back",
87
- children: /* @__PURE__ */ e(le, { className: "h-5 w-5" })
88
- }
89
- ),
90
- /* @__PURE__ */ e("h2", { className: "text-lg font-medium", children: a ? "Exclusive deals for you" : "Before you go..." })
91
- ] }) : /* @__PURE__ */ s("div", { className: "flex items-center gap-2", children: [
92
- /* @__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: (j = t == null ? void 0 : t.items) == null ? void 0 : j.length }),
93
- /* @__PURE__ */ e("h2", { className: "text-lg font-medium", children: "Your Cart" })
94
- ] }),
95
- /* @__PURE__ */ e(
96
- "button",
97
- {
98
- onClick: n,
99
- className: "rounded-full p-2 transition-colors hover:bg-gray-100",
100
- "aria-label": "Close cart",
101
- children: /* @__PURE__ */ e(re, { className: "h-6 w-6" })
102
- }
103
- )
104
- ] }) }),
105
- l && /* @__PURE__ */ e(se, { onSkip: Z, limit: 100, checkoutButtonClassName: N }),
106
- a && /* @__PURE__ */ e(ae, { onSkip: J, checkoutButtonClassName: N }),
107
- !l && !a && !d && !o && t && t.items && t.items.length > 0 && /* @__PURE__ */ e(ie, {}),
108
- !l && !a && d && /* @__PURE__ */ e("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ s("div", { className: "text-center", children: [
109
- /* @__PURE__ */ e(ne, { className: "mx-auto mb-4 h-12 w-12 animate-spin text-accent-500" }),
110
- /* @__PURE__ */ e("p", { className: "text-gray-600", children: "Loading cart..." })
111
- ] }) }),
112
- !l && !a && o && !d && /* @__PURE__ */ e("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ s("div", { className: "text-center", children: [
113
- /* @__PURE__ */ e(v, { className: "mx-auto mb-4 h-12 w-12 text-red-600" }),
114
- /* @__PURE__ */ e("p", { className: "text-red-600", children: "Failed to load cart. Please try again." })
115
- ] }) }),
116
- !l && !a && !d && !o && (!t || !t.items || t.items.length === 0) && /* @__PURE__ */ e("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ s("div", { className: "text-center", children: [
117
- /* @__PURE__ */ e(v, { className: "mx-auto mb-4 h-12 w-12 text-gray-400" }),
118
- /* @__PURE__ */ e("p", { className: "text-gray-600", children: P })
119
- ] }) }),
120
- !l && !a && !d && !o && t && t.items && t.items.length > 0 && /* @__PURE__ */ s(E, { children: [
121
- /* @__PURE__ */ s("div", { className: "flex-1 overflow-y-auto", children: [
122
- /* @__PURE__ */ e("div", { className: "space-y-4 p-4", children: t.items.map((r, D) => /* @__PURE__ */ s("div", { children: [
123
- /* @__PURE__ */ e(
124
- $,
125
- {
126
- item: r
127
- }
128
- ),
129
- /* @__PURE__ */ e("hr", { className: "border-gray-200 mt-2" })
130
- ] }, r.id)) }),
131
- I && /* @__PURE__ */ e("div", { className: "px-4 pb-4", children: /* @__PURE__ */ e(O, {}) })
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"
132
116
  ] }),
133
- /* @__PURE__ */ e(te, { limit: 6, className: "border-t border-gray-200" }),
134
- /* @__PURE__ */ s("div", { className: "border-t border-gray-300 bg-white", children: [
135
- /* @__PURE__ */ s("div", { className: " text-base", children: [
136
- /* @__PURE__ */ s("div", { className: "px-4 py-2 space-y-2", children: [
137
- /* @__PURE__ */ s("div", { className: "flex justify-between", children: [
138
- /* @__PURE__ */ e("span", { className: "text-gray-600", children: "Subtotal" }),
139
- /* @__PURE__ */ e("span", { className: "font-semibold", children: u(T) })
140
- ] }),
141
- w > 0 && /* @__PURE__ */ s("div", { className: "flex justify-between text-green-600", children: [
142
- /* @__PURE__ */ e("span", { children: "Discount" }),
143
- /* @__PURE__ */ s("span", { className: "font-semibold", children: [
144
- "-",
145
- u(w)
146
- ] })
147
- ] }),
148
- /* @__PURE__ */ s("div", { className: "flex justify-between", children: [
149
- /* @__PURE__ */ e("span", { className: "text-gray-600", children: "Shipping" }),
150
- /* @__PURE__ */ e("span", { className: "font-semibold", children: t.deliveryZone ? ((A = t.pricing) == null ? void 0 : A.deliveryCharge) === 0 ? /* @__PURE__ */ e("span", { className: "text-green-600", children: "Free" }) : u(((S = t.pricing) == null ? void 0 : S.deliveryCharge) ?? 0) : /* @__PURE__ */ e("span", { className: "text-gray-400 text-xs font-normal", children: "Calculated at checkout" }) })
151
- ] })
152
- ] }),
153
- /* @__PURE__ */ s("div", { className: "flex justify-between p-4 border-t border-gray-300 text-lg", children: [
154
- /* @__PURE__ */ e("span", { className: "font-bold", children: "Total" }),
155
- /* @__PURE__ */ e("span", { className: "font-bold", children: u(t.pricing.total) })
156
- ] })
157
- ] }),
158
- /* @__PURE__ */ s("div", { className: "px-4 py-2 space-y-2 pt-0", children: [
159
- /* @__PURE__ */ s(
160
- L,
161
- {
162
- onClick: X,
163
- disabled: G || t.items.length === 0,
164
- className: p("w-full bg-accent-500 text-white hover:bg-accent-600", N),
165
- size: "lg",
166
- children: [
167
- /* @__PURE__ */ e(v, { className: "h-5 w-5" }),
168
- B
169
- ]
170
- }
171
- ),
172
- z && /* @__PURE__ */ e(
173
- L,
174
- {
175
- onClick: Q,
176
- variant: "outline",
177
- className: p("w-full border-gray-300 text-gray-600 hover:bg-gray-100", Y),
178
- size: "lg",
179
- children: R
180
- }
181
- )
182
- ] })
183
- ] })
184
- ] })
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" })
185
119
  ] })
186
- }
187
- ),
188
- /* @__PURE__ */ e(
189
- ee,
190
- {
191
- isOpen: H,
192
- onSuccess: (r) => {
193
- y == null || y(r), n();
194
- },
195
- onClose: () => f(!1),
196
- refundPolicy: {
197
- title: "Yes we offer refunds!",
198
- policies: [
199
- "2 day return window from delivery date",
200
- "Items must be unused and in original packaging",
201
- "Refunds processed as soon as item is received",
202
- "Refunds issued to original payment method",
203
- "Contact hello@instock.ng to initiate a refund"
204
- ]
205
- }
206
- }
207
- )
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
+ ] })
208
162
  ] });
209
163
  }
210
164
  export {
211
- Se as ShoppingCart
165
+ P as QuantitySelector
212
166
  };
package/dist/index160.mjs CHANGED
@@ -1,73 +1,10 @@
1
1
  'use client';
2
- import H from "./index84.mjs";
3
- import D from "./index227.mjs";
4
- import L from "./index155.mjs";
5
- import n from "./index95.mjs";
6
- import y from "./index90.mjs";
7
- import O from "./index228.mjs";
8
- import U from "./index157.mjs";
9
- import q from "./index98.mjs";
10
- import { progressEventReducer as A } from "./index229.mjs";
11
- import v from "./index230.mjs";
12
- const N = typeof XMLHttpRequest < "u", Q = N && function(s) {
13
- return new Promise(function(C, i) {
14
- const t = v(s);
15
- let E = t.data;
16
- const T = q.from(t.headers).normalize();
17
- let { responseType: d, onUploadProgress: R, onDownloadProgress: h } = t, l, g, w, u, f;
18
- function x() {
19
- u && u(), f && f(), t.cancelToken && t.cancelToken.unsubscribe(l), t.signal && t.signal.removeEventListener("abort", l);
20
- }
21
- let e = new XMLHttpRequest();
22
- e.open(t.method.toUpperCase(), t.url, !0), e.timeout = t.timeout;
23
- function b() {
24
- if (!e)
25
- return;
26
- const o = q.from(
27
- "getAllResponseHeaders" in e && e.getAllResponseHeaders()
28
- ), a = {
29
- data: !d || d === "text" || d === "json" ? e.responseText : e.response,
30
- status: e.status,
31
- statusText: e.statusText,
32
- headers: o,
33
- config: s,
34
- request: e
35
- };
36
- D(function(c) {
37
- C(c), x();
38
- }, function(c) {
39
- i(c), x();
40
- }, a), e = null;
41
- }
42
- "onloadend" in e ? e.onloadend = b : e.onreadystatechange = function() {
43
- !e || e.readyState !== 4 || e.status === 0 && !(e.responseURL && e.responseURL.indexOf("file:") === 0) || setTimeout(b);
44
- }, e.onabort = function() {
45
- e && (i(new n("Request aborted", n.ECONNABORTED, s, e)), e = null);
46
- }, e.onerror = function(r) {
47
- const a = r && r.message ? r.message : "Network Error", p = new n(a, n.ERR_NETWORK, s, e);
48
- p.event = r || null, i(p), e = null;
49
- }, e.ontimeout = function() {
50
- let r = t.timeout ? "timeout of " + t.timeout + "ms exceeded" : "timeout exceeded";
51
- const a = t.transitional || L;
52
- t.timeoutErrorMessage && (r = t.timeoutErrorMessage), i(new n(
53
- r,
54
- a.clarifyTimeoutError ? n.ETIMEDOUT : n.ECONNABORTED,
55
- s,
56
- e
57
- )), e = null;
58
- }, E === void 0 && T.setContentType(null), "setRequestHeader" in e && H.forEach(T.toJSON(), function(r, a) {
59
- e.setRequestHeader(a, r);
60
- }), H.isUndefined(t.withCredentials) || (e.withCredentials = !!t.withCredentials), d && d !== "json" && (e.responseType = t.responseType), h && ([w, f] = A(h, !0), e.addEventListener("progress", w)), R && e.upload && ([g, u] = A(R), e.upload.addEventListener("progress", g), e.upload.addEventListener("loadend", u)), (t.cancelToken || t.signal) && (l = (o) => {
61
- e && (i(!o || o.type ? new y(null, s, e) : o), e.abort(), e = null);
62
- }, t.cancelToken && t.cancelToken.subscribe(l), t.signal && (t.signal.aborted ? l() : t.signal.addEventListener("abort", l)));
63
- const m = O(t.url);
64
- if (m && U.protocols.indexOf(m) === -1) {
65
- i(new n("Unsupported protocol " + m + ":", n.ERR_BAD_REQUEST, s));
66
- return;
67
- }
68
- e.send(E || null);
69
- });
2
+ import o from "./index228.mjs";
3
+ import * as t from "./index229.mjs";
4
+ const m = {
5
+ ...t,
6
+ ...o
70
7
  };
71
8
  export {
72
- Q as default
9
+ m as default
73
10
  };