@instockng/storefront-ui 1.0.107 → 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 (250) hide show
  1. package/dist/components/AssistantDrawer.d.ts +1 -3
  2. package/dist/components/AssistantDrawer.d.ts.map +1 -1
  3. package/dist/contexts/AssistantContext.d.ts +19 -0
  4. package/dist/contexts/AssistantContext.d.ts.map +1 -0
  5. package/dist/index.d.ts +1 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.mjs +56 -56
  8. package/dist/index10.mjs +103 -73
  9. package/dist/index100.mjs +52 -7
  10. package/dist/index101.mjs +5 -74
  11. package/dist/index102.mjs +4 -3
  12. package/dist/index103.mjs +179 -2
  13. package/dist/index104.mjs +49 -79
  14. package/dist/index105.mjs +68 -53
  15. package/dist/index106.mjs +2 -6
  16. package/dist/index107.mjs +5 -4
  17. package/dist/index108.mjs +1123 -168
  18. package/dist/index109.mjs +20 -53
  19. package/dist/index11.mjs +73 -189
  20. package/dist/index110.mjs +55 -69
  21. package/dist/index111.mjs +33 -2
  22. package/dist/index112.mjs +2 -37
  23. package/dist/index113.mjs +2 -43
  24. package/dist/index115.mjs +1 -1
  25. package/dist/index116.mjs +1 -1
  26. package/dist/index117.mjs +8 -8
  27. package/dist/index118.mjs +6 -6
  28. package/dist/index119.mjs +3 -3
  29. package/dist/index12.mjs +171 -106
  30. package/dist/index120.mjs +1 -1
  31. package/dist/index121.mjs +1 -1
  32. package/dist/index122.mjs +1 -1
  33. package/dist/index123.mjs +2 -2
  34. package/dist/index124.mjs +2 -2
  35. package/dist/index125.mjs +3 -3
  36. package/dist/index126.mjs +1 -1
  37. package/dist/index127.mjs +3 -3
  38. package/dist/index128.mjs +2 -2
  39. package/dist/index129.mjs +2 -2
  40. package/dist/index13.mjs +127 -98
  41. package/dist/index130.mjs +1 -1
  42. package/dist/index131.mjs +3 -3
  43. package/dist/index132.mjs +1 -1
  44. package/dist/index133.mjs +1 -1
  45. package/dist/index134.mjs +3 -3
  46. package/dist/index135.mjs +2 -2
  47. package/dist/index136.mjs +4 -4
  48. package/dist/index137.mjs +1 -1
  49. package/dist/index138.mjs +3 -3
  50. package/dist/index139.mjs +4 -4
  51. package/dist/index14.mjs +94 -90
  52. package/dist/index140.mjs +1 -1
  53. package/dist/index141.mjs +1 -1
  54. package/dist/index142.mjs +1 -1
  55. package/dist/index143.mjs +1 -1
  56. package/dist/index144.mjs +1 -1
  57. package/dist/index145.mjs +1 -1
  58. package/dist/index146.mjs +1 -1
  59. package/dist/index147.mjs +2 -2
  60. package/dist/index148.mjs +3 -3
  61. package/dist/index15.mjs +84 -149
  62. package/dist/index151.mjs +1 -1
  63. package/dist/index153.mjs +2 -2
  64. package/dist/index154.mjs +1 -1
  65. package/dist/index155.mjs +6 -6
  66. package/dist/index156.mjs +2 -2
  67. package/dist/index157.mjs +2 -2
  68. package/dist/index159.mjs +2 -2
  69. package/dist/index16.mjs +157 -203
  70. package/dist/index160.mjs +2 -2
  71. package/dist/index161.mjs +1 -1
  72. package/dist/index163.mjs +8 -8
  73. package/dist/index164.mjs +8 -8
  74. package/dist/index165.mjs +2 -2
  75. package/dist/index167.mjs +2 -2
  76. package/dist/index168.mjs +2 -18
  77. package/dist/index169.mjs +11 -25
  78. package/dist/index17.mjs +197 -106
  79. package/dist/index170.mjs +26 -32
  80. package/dist/index171.mjs +32 -12
  81. package/dist/index172.mjs +9 -9
  82. package/dist/index173.mjs +18 -2
  83. package/dist/index174.mjs +2 -20
  84. package/dist/index175.mjs +13 -39
  85. package/dist/index176.mjs +46 -2
  86. package/dist/index177.mjs +2 -30
  87. package/dist/index178.mjs +24 -12
  88. package/dist/index179.mjs +18 -2
  89. package/dist/index18.mjs +96 -129
  90. package/dist/index180.mjs +2 -2
  91. package/dist/index181.mjs +2 -2
  92. package/dist/index182.mjs +2 -2
  93. package/dist/index183.mjs +2 -72
  94. package/dist/index184.mjs +72 -2
  95. package/dist/index185.mjs +2 -53
  96. package/dist/index186.mjs +53 -2
  97. package/dist/index187.mjs +2 -36
  98. package/dist/index188.mjs +30 -146
  99. package/dist/index189.mjs +152 -2
  100. package/dist/index19.mjs +140 -87
  101. package/dist/index190.mjs +2 -2
  102. package/dist/index191.mjs +2 -19
  103. package/dist/index192.mjs +19 -2
  104. package/dist/index193.mjs +2 -2
  105. package/dist/index194.mjs +2 -26
  106. package/dist/index195.mjs +26 -2
  107. package/dist/index196.mjs +2 -2
  108. package/dist/index197.mjs +2 -24
  109. package/dist/index198.mjs +17 -16
  110. package/dist/index199.mjs +23 -2
  111. package/dist/index2.mjs +29 -15
  112. package/dist/index20.mjs +82 -708
  113. package/dist/index201.mjs +2 -2
  114. package/dist/index202.mjs +2 -23
  115. package/dist/index203.mjs +23 -2
  116. package/dist/index204.mjs +2 -23
  117. package/dist/index205.mjs +23 -2
  118. package/dist/index206.mjs +2 -2
  119. package/dist/index208.mjs +2 -23
  120. package/dist/index209.mjs +23 -2
  121. package/dist/index21.mjs +688 -229
  122. package/dist/index210.mjs +2 -23
  123. package/dist/index211.mjs +23 -2
  124. package/dist/index212.mjs +2 -2
  125. package/dist/index213.mjs +2 -2
  126. package/dist/index215.mjs +2 -2
  127. package/dist/index216.mjs +2 -2
  128. package/dist/index217.mjs +2 -2
  129. package/dist/index218.mjs +2 -2
  130. package/dist/index219.mjs +2 -127
  131. package/dist/index22.mjs +260 -42
  132. package/dist/index220.mjs +127 -2
  133. package/dist/index221.mjs +2 -74
  134. package/dist/index222.mjs +59 -59
  135. package/dist/index223.mjs +74 -2
  136. package/dist/index224.mjs +30 -12
  137. package/dist/index225.mjs +11 -7
  138. package/dist/index226.mjs +3 -11
  139. package/dist/index227.mjs +3 -4
  140. package/dist/index228.mjs +13 -33
  141. package/dist/index229.mjs +7 -31
  142. package/dist/index23.mjs +42 -21
  143. package/dist/index230.mjs +11 -27
  144. package/dist/index231.mjs +5 -61
  145. package/dist/index232.mjs +33 -31
  146. package/dist/index233.mjs +31 -11
  147. package/dist/index234.mjs +28 -4
  148. package/dist/index235.mjs +61 -4
  149. package/dist/index236.mjs +2 -2
  150. package/dist/index237.mjs +108 -2
  151. package/dist/index238.mjs +2 -2
  152. package/dist/index239.mjs +2 -2
  153. package/dist/index240.mjs +2 -2
  154. package/dist/index241.mjs +2 -2
  155. package/dist/index242.mjs +2 -2
  156. package/dist/index243.mjs +2 -2
  157. package/dist/index244.mjs +2 -108
  158. package/dist/index245.mjs +2 -2
  159. package/dist/index247.mjs +3 -3
  160. package/dist/index250.mjs +1 -1
  161. package/dist/index252.mjs +2 -2
  162. package/dist/index253.mjs +1 -1
  163. package/dist/index254.mjs +2 -2
  164. package/dist/index262.mjs +2 -2
  165. package/dist/index263.mjs +2 -4
  166. package/dist/index264.mjs +4 -2
  167. package/dist/index265.mjs +2 -2
  168. package/dist/index266.mjs +2 -2
  169. package/dist/index267.mjs +3 -2
  170. package/dist/index268.mjs +2 -2
  171. package/dist/index269.mjs +2 -18
  172. package/dist/index270.mjs +16 -46
  173. package/dist/index271.mjs +13 -2
  174. package/dist/index272.mjs +6 -2
  175. package/dist/index273.mjs +30 -2
  176. package/dist/index275.mjs +2 -91
  177. package/dist/index276.mjs +18 -2
  178. package/dist/index277.mjs +47 -3
  179. package/dist/index278.mjs +2 -2
  180. package/dist/index279.mjs +2 -2
  181. package/dist/index280.mjs +2 -17
  182. package/dist/index281.mjs +2 -13
  183. package/dist/index282.mjs +91 -6
  184. package/dist/index283.mjs +2 -30
  185. package/dist/index3.mjs +3 -3
  186. package/dist/index4.mjs +34 -101
  187. package/dist/index43.mjs +1 -1
  188. package/dist/index44.mjs +1 -1
  189. package/dist/index45.mjs +1 -1
  190. package/dist/index46.mjs +1 -1
  191. package/dist/index47.mjs +1 -1
  192. package/dist/index48.mjs +2 -2
  193. package/dist/index5.mjs +92 -102
  194. package/dist/index50.mjs +2 -2
  195. package/dist/index54.mjs +3 -3
  196. package/dist/index58.mjs +1 -1
  197. package/dist/index6.mjs +111 -15
  198. package/dist/index63.mjs +17 -17
  199. package/dist/index64.mjs +2 -2
  200. package/dist/index65.mjs +1 -1
  201. package/dist/index66.mjs +1 -1
  202. package/dist/index67.mjs +1 -1
  203. package/dist/index68.mjs +1 -1
  204. package/dist/index69.mjs +1 -1
  205. package/dist/index7.mjs +15 -195
  206. package/dist/index70.mjs +1 -1
  207. package/dist/index71.mjs +1 -1
  208. package/dist/index72.mjs +1 -1
  209. package/dist/index73.mjs +1 -1
  210. package/dist/index74.mjs +1 -1
  211. package/dist/index75.mjs +1 -1
  212. package/dist/index76.mjs +1 -1
  213. package/dist/index77.mjs +1 -1
  214. package/dist/index78.mjs +1 -1
  215. package/dist/index79.mjs +4 -23
  216. package/dist/index8.mjs +135 -189
  217. package/dist/index80.mjs +24 -2
  218. package/dist/index81.mjs +2 -153
  219. package/dist/index82.mjs +149 -19
  220. package/dist/index83.mjs +21 -73
  221. package/dist/index84.mjs +74 -14
  222. package/dist/index85.mjs +14 -62
  223. package/dist/index86.mjs +62 -4
  224. package/dist/index87.mjs +37 -2
  225. package/dist/index88.mjs +42 -5
  226. package/dist/index89.mjs +230 -1129
  227. package/dist/index9.mjs +240 -99
  228. package/dist/index90.mjs +5 -19
  229. package/dist/index91.mjs +127 -48
  230. package/dist/index92.mjs +67 -32
  231. package/dist/index93.mjs +87 -2
  232. package/dist/index94.mjs +23 -229
  233. package/dist/index95.mjs +8 -5
  234. package/dist/index96.mjs +66 -125
  235. package/dist/index97.mjs +3 -67
  236. package/dist/index98.mjs +2 -87
  237. package/dist/index99.mjs +78 -24
  238. package/dist/providers/StorefrontProvider.d.ts +3 -1
  239. package/dist/providers/StorefrontProvider.d.ts.map +1 -1
  240. package/dist/styles.css +1 -1
  241. package/package.json +1 -1
  242. package/src/components/AssistantDrawer.stories.tsx +0 -50
  243. package/src/components/AssistantDrawer.tsx +4 -8
  244. package/src/contexts/AssistantContext.tsx +62 -0
  245. package/src/index.ts +3 -2
  246. package/src/providers/StorefrontProvider.tsx +17 -2
  247. package/dist/components/SearchAssistantTrigger.d.ts +0 -12
  248. package/dist/components/SearchAssistantTrigger.d.ts.map +0 -1
  249. package/src/components/SearchAssistantTrigger.stories.tsx +0 -35
  250. package/src/components/SearchAssistantTrigger.tsx +0 -41
package/dist/index13.mjs CHANGED
@@ -1,105 +1,134 @@
1
1
  'use client';
2
- import { jsx as i, jsxs as n, Fragment as d } from "react/jsx-runtime";
3
- import { useState as u } from "react";
4
- import { Modal as k } from "./index27.mjs";
5
- import { Button as C } from "./index24.mjs";
6
- import { formatCurrency as s, cn as S } from "./index30.mjs";
7
- import { Package as U, Loader2 as j, ShoppingCart as I } from "lucide-react";
8
- function F({
9
- isOpen: b,
10
- onClose: g,
11
- product: e,
12
- onConfirm: y,
13
- isLoading: m = !1,
14
- discountPercent: r
2
+ import { jsx as i, jsxs as s, Fragment as f } from "react/jsx-runtime";
3
+ import "./index31.mjs";
4
+ import { useGetCartRecommendations as U } from "./index43.mjs";
5
+ import "@tanstack/react-query";
6
+ import { useCart as q } from "./index3.mjs";
7
+ import { cn as p, formatCurrency as z } from "./index30.mjs";
8
+ import { Button as B } from "./index24.mjs";
9
+ import { Loader2 as b, Package as D, ShoppingCart as E } from "lucide-react";
10
+ import { useState as r, useEffect as G } from "react";
11
+ import { VariantPickerModal as H } from "./index14.mjs";
12
+ function _({
13
+ limit: P,
14
+ className: C
15
15
  }) {
16
- var h, o;
17
- const [x, N] = u(null), v = ((h = e == null ? void 0 : e.variants.find((l) => !l.availability || l.availability.available)) == null ? void 0 : h.id) || ((o = e == null ? void 0 : e.variants[0]) == null ? void 0 : o.id) || null, c = x || v, a = e == null ? void 0 : e.variants.find((l) => l.id === c), p = () => {
18
- e && a && y(e, a);
16
+ const { cart: o, addItem: k } = q(), { data: c, isLoading: I, error: A } = U(o == null ? void 0 : o.id, P), [j, h] = r([]), [F, u] = r([]), [V, g] = r([]), [L, x] = r([]), [v, m] = r(null), [M, w] = r(!1);
17
+ if (G(() => {
18
+ x([]), u([]), g([]);
19
+ }, [c]), !o)
20
+ return null;
21
+ if (I)
22
+ return /* @__PURE__ */ i("div", { className: "py-6", children: /* @__PURE__ */ i("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ i(b, { className: "h-6 w-6 animate-spin text-accent-500" }) }) });
23
+ const a = c == null ? void 0 : c.filter(
24
+ (e) => !L.includes(e.id)
25
+ );
26
+ if (A || !a || a.length === 0)
27
+ return null;
28
+ const N = async (e, t) => {
29
+ h((n) => [...n, e.id]);
30
+ try {
31
+ await k(e.slug, e.name, t.price, t.sku, 1), u((n) => [...n, e.id]), setTimeout(() => {
32
+ g((n) => [...n, e.id]);
33
+ }, 500), setTimeout(() => {
34
+ x((n) => [...n, e.id]);
35
+ }, 1e3);
36
+ } finally {
37
+ h((n) => n.filter((l) => l !== e.id));
38
+ }
39
+ }, T = (e) => {
40
+ if (e.variants.length > 1) {
41
+ m(e);
42
+ return;
43
+ }
44
+ const t = e.variants[0];
45
+ t && N(e, t);
46
+ }, S = async (e, t) => {
47
+ w(!0);
48
+ try {
49
+ const n = a.find((d) => d.id === e.id), l = n == null ? void 0 : n.variants.find((d) => d.id === t.id);
50
+ n && l && await N(n, l), m(null);
51
+ } finally {
52
+ w(!1);
53
+ }
19
54
  };
20
- return e ? /* @__PURE__ */ i(
21
- k,
22
- {
23
- isOpen: b,
24
- onClose: g,
25
- title: "Select Option",
26
- size: "sm",
27
- footer: /* @__PURE__ */ i(
28
- C,
29
- {
30
- onClick: p,
31
- disabled: !a || m || (a == null ? void 0 : a.availability) && !a.availability.available,
32
- className: "w-full bg-accent-500 hover:bg-accent-600 text-white",
33
- size: "lg",
34
- children: m ? /* @__PURE__ */ n(d, { children: [
35
- /* @__PURE__ */ i(j, { className: "h-4 w-4 animate-spin mr-2" }),
36
- "Adding..."
37
- ] }) : /* @__PURE__ */ n(d, { children: [
38
- /* @__PURE__ */ i(I, { className: "h-4 w-4 mr-2" }),
39
- "Add to Cart - ",
40
- a && (r ? /* @__PURE__ */ n("span", { children: [
41
- /* @__PURE__ */ i("span", { className: "line-through opacity-60 mr-1", children: s(a.price) }),
42
- s(Math.round(a.price * (1 - r / 100)))
43
- ] }) : s(a.price))
44
- ] })
45
- }
46
- ),
47
- children: /* @__PURE__ */ n("div", { className: "space-y-4", children: [
48
- /* @__PURE__ */ n("div", { className: "flex gap-4", children: [
49
- /* @__PURE__ */ i("div", { className: "w-20 h-20 flex-shrink-0 rounded-lg overflow-hidden bg-gray-100", children: a != null && a.thumbnailUrl || e.thumbnailUrl ? /* @__PURE__ */ i(
50
- "img",
55
+ return /* @__PURE__ */ s(f, { children: [
56
+ /* @__PURE__ */ s("div", { className: p("pt-2", C), children: [
57
+ /* @__PURE__ */ i("div", { className: "mb-2 px-4", children: /* @__PURE__ */ i("h3", { className: "text-lg font-semibold text-gray-900", children: "Frequently bought together" }) }),
58
+ /* @__PURE__ */ i("div", { className: "overflow-x-auto", children: /* @__PURE__ */ s("div", { className: "flex gap-4 pb-2 transition-all duration-500", children: [
59
+ /* @__PURE__ */ i("div", { className: "flex-shrink-0 w-1" }),
60
+ a == null ? void 0 : a.map((e) => {
61
+ const t = e.variants[0];
62
+ if (!t) return null;
63
+ const n = j.includes(e.id), l = F.includes(e.id), d = V.includes(e.id);
64
+ return /* @__PURE__ */ i(
65
+ "div",
51
66
  {
52
- src: (a == null ? void 0 : a.thumbnailUrl) || e.thumbnailUrl || "",
53
- alt: (a == null ? void 0 : a.name) || e.name,
54
- className: "w-full h-full object-cover"
55
- }
56
- ) : /* @__PURE__ */ i("div", { className: "w-full h-full flex items-center justify-center", children: /* @__PURE__ */ i(U, { className: "h-8 w-8 text-gray-300" }) }) }),
57
- /* @__PURE__ */ n("div", { className: "flex-1", children: [
58
- /* @__PURE__ */ i("h3", { className: "font-semibold text-gray-900", children: e.name }),
59
- /* @__PURE__ */ n("p", { className: "text-sm text-gray-500 mt-1", children: [
60
- e.variants.length,
61
- " options available"
62
- ] })
63
- ] })
64
- ] }),
65
- /* @__PURE__ */ n("div", { className: "space-y-2", children: [
66
- /* @__PURE__ */ i("p", { className: "text-sm font-medium text-gray-700", children: "Choose an option:" }),
67
- /* @__PURE__ */ i("div", { className: "flex flex-wrap gap-2", children: e.variants.map((l) => {
68
- const w = l.id === c, t = l.availability && !l.availability.available, f = l.thumbnailUrl || e.thumbnailUrl;
69
- return /* @__PURE__ */ n(
70
- "button",
71
- {
72
- onClick: () => !t && N(l.id),
73
- disabled: !!t,
74
- className: S(
75
- "flex items-center gap-2 px-3 py-2 rounded-full text-sm font-medium border-2 transition-all",
76
- t ? "border-gray-200 bg-gray-50 text-gray-400 cursor-not-allowed opacity-60" : w ? "border-accent-500 bg-accent-50 text-accent-700" : "border-gray-200 bg-white text-gray-700 hover:border-gray-300"
77
- ),
78
- children: [
79
- f && /* @__PURE__ */ i(
80
- "img",
81
- {
82
- src: f,
83
- alt: l.name || "Variant",
84
- className: "w-6 h-6 rounded-full object-cover flex-shrink-0"
85
- }
86
- ),
87
- l.name || "Default",
88
- " - ",
89
- t ? /* @__PURE__ */ i("span", { className: "text-gray-400", children: "Sold out" }) : r ? /* @__PURE__ */ n("span", { children: [
90
- /* @__PURE__ */ i("span", { className: "line-through opacity-60 mr-1", children: s(l.price) }),
91
- s(Math.round(l.price * (1 - r / 100)))
92
- ] }) : s(l.price)
93
- ]
94
- },
95
- l.id
96
- );
97
- }) })
98
- ] })
99
- ] })
100
- }
101
- ) : null;
67
+ className: p(
68
+ "flex flex-row flex-shrink-0 w-64 h-24 bg-white border border-gray-300 rounded-lg overflow-hidden transition-all duration-500",
69
+ l && "opacity-0 blur-sm scale-95 pointer-events-none",
70
+ d && "w-0 h-0 mr-[-1rem] overflow-hidden"
71
+ ),
72
+ children: /* @__PURE__ */ s(
73
+ "a",
74
+ {
75
+ href: `/product/${e.slug}`,
76
+ className: "flex flex-row flex-1 hover:bg-gray-50 transition-colors",
77
+ children: [
78
+ /* @__PURE__ */ i("div", { className: "relative w-20 h-full flex-shrink-0 bg-gray-100", children: e.thumbnailUrl ? /* @__PURE__ */ i(
79
+ "img",
80
+ {
81
+ src: e.thumbnailUrl,
82
+ alt: e.name,
83
+ className: "w-full h-full object-cover"
84
+ }
85
+ ) : /* @__PURE__ */ i("div", { className: "w-full h-full flex items-center justify-center", children: /* @__PURE__ */ i(D, { className: "h-8 w-8 text-gray-300" }) }) }),
86
+ /* @__PURE__ */ s("div", { className: "p-2 flex flex-col flex-1 justify-between", children: [
87
+ /* @__PURE__ */ s("div", { children: [
88
+ /* @__PURE__ */ i("h4", { className: "text-xs font-medium text-gray-900 line-clamp-2 leading-tight", children: e.name }),
89
+ /* @__PURE__ */ i("p", { className: "text-xs font-semibold text-accent-600 mt-0.5", children: z(t.price) })
90
+ ] }),
91
+ /* @__PURE__ */ i(
92
+ B,
93
+ {
94
+ size: "sm",
95
+ onClick: (y) => {
96
+ y.preventDefault(), y.stopPropagation(), T(e);
97
+ },
98
+ disabled: n,
99
+ className: "w-full bg-accent-500 hover:bg-accent-600 text-white text-xs h-6 mt-1",
100
+ children: n ? /* @__PURE__ */ s(f, { children: [
101
+ /* @__PURE__ */ i(b, { className: "h-3 w-3 animate-spin" }),
102
+ "Adding..."
103
+ ] }) : /* @__PURE__ */ s(f, { children: [
104
+ /* @__PURE__ */ i(E, { className: "h-3 w-3" }),
105
+ "Add"
106
+ ] })
107
+ }
108
+ )
109
+ ] })
110
+ ]
111
+ }
112
+ )
113
+ },
114
+ e.id
115
+ );
116
+ }),
117
+ /* @__PURE__ */ i("div", { className: "flex-shrink-0 w-1" })
118
+ ] }) })
119
+ ] }),
120
+ /* @__PURE__ */ i(
121
+ H,
122
+ {
123
+ isOpen: !!v,
124
+ onClose: () => m(null),
125
+ product: v,
126
+ onConfirm: S,
127
+ isLoading: M
128
+ }
129
+ )
130
+ ] });
102
131
  }
103
132
  export {
104
- F as VariantPickerModal
133
+ _ as RecommendedProducts
105
134
  };
package/dist/index130.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { __exports as u } from "./index195.mjs";
2
+ import { __exports as u } from "./index196.mjs";
3
3
  var a;
4
4
  function f() {
5
5
  return a ? u : (a = 1, function(s) {
package/dist/index131.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use client';
2
- import { __module as a } from "./index196.mjs";
3
- import { __require as f } from "./index197.mjs";
4
- import { __require as c } from "./index198.mjs";
2
+ import { __module as a } from "./index197.mjs";
3
+ import { __require as f } from "./index198.mjs";
4
+ import { __require as c } from "./index199.mjs";
5
5
  var i;
6
6
  function g() {
7
7
  return i ? a.exports : (i = 1, function(o, e) {
package/dist/index132.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { __module as o } from "./index199.mjs";
2
+ import { __module as o } from "./index200.mjs";
3
3
  import { __require as d } from "./index130.mjs";
4
4
  var f;
5
5
  function m() {
package/dist/index133.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { __module as r } from "./index200.mjs";
2
+ import { __module as r } from "./index201.mjs";
3
3
  import { __require as o } from "./index135.mjs";
4
4
  var a;
5
5
  function l() {
package/dist/index134.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use client';
2
- import { __module as a } from "./index201.mjs";
3
- import { __require as _ } from "./index202.mjs";
4
- import { __require as l } from "./index197.mjs";
2
+ import { __module as a } from "./index202.mjs";
3
+ import { __require as _ } from "./index203.mjs";
4
+ import { __require as l } from "./index198.mjs";
5
5
  var t;
6
6
  function h() {
7
7
  return t ? a.exports : (t = 1, function(u, e) {
package/dist/index135.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use client';
2
- import { __module as t } from "./index203.mjs";
3
- import { __require as s } from "./index204.mjs";
2
+ import { __module as t } from "./index204.mjs";
3
+ import { __require as s } from "./index205.mjs";
4
4
  var a;
5
5
  function _() {
6
6
  return a ? t.exports : (a = 1, function(u, e) {
package/dist/index136.mjs CHANGED
@@ -1,12 +1,12 @@
1
1
  'use client';
2
- import { __module as n } from "./index205.mjs";
3
- import { __require as H } from "./index185.mjs";
2
+ import { __module as n } from "./index206.mjs";
3
+ import { __require as H } from "./index186.mjs";
4
4
  import { __require as L } from "./index128.mjs";
5
5
  import { __require as j } from "./index143.mjs";
6
6
  import { __require as O } from "./index122.mjs";
7
- import { __require as S } from "./index197.mjs";
7
+ import { __require as S } from "./index198.mjs";
8
8
  import { __require as w } from "./index141.mjs";
9
- import { __require as M } from "./index177.mjs";
9
+ import { __require as M } from "./index178.mjs";
10
10
  import { __require as A } from "./index144.mjs";
11
11
  var p;
12
12
  function $() {
package/dist/index137.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { __exports as r } from "./index206.mjs";
2
+ import { __exports as r } from "./index207.mjs";
3
3
  var i;
4
4
  function n() {
5
5
  return i ? r : (i = 1, function(t) {
package/dist/index138.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { __exports as l } from "./index207.mjs";
2
+ import { __exports as l } from "./index208.mjs";
3
3
  import { __require as _ } from "./index120.mjs";
4
- import { __require as v } from "./index208.mjs";
5
- import { __require as q } from "./index204.mjs";
4
+ import { __require as v } from "./index209.mjs";
5
+ import { __require as q } from "./index205.mjs";
6
6
  var s;
7
7
  function N() {
8
8
  return s ? l : (s = 1, function(h) {
package/dist/index139.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  'use client';
2
- import { __exports as r } from "./index209.mjs";
2
+ import { __exports as r } from "./index210.mjs";
3
3
  import { __require as m } from "./index116.mjs";
4
- import { __require as f } from "./index202.mjs";
5
- import { __require as h } from "./index210.mjs";
6
- import { __require as s } from "./index198.mjs";
4
+ import { __require as f } from "./index203.mjs";
5
+ import { __require as h } from "./index211.mjs";
6
+ import { __require as s } from "./index199.mjs";
7
7
  var n;
8
8
  function q() {
9
9
  return n ? r : (n = 1, function(t) {
package/dist/index14.mjs CHANGED
@@ -1,101 +1,105 @@
1
1
  'use client';
2
- import { jsxs as t, jsx as a } from "react/jsx-runtime";
3
- import { Package as g, Trash2 as p } from "lucide-react";
4
- import { cn as N, formatCurrency as h } from "./index30.mjs";
5
- import { useCart as w } from "./index3.mjs";
6
- import { useState as f, useCallback as y } from "react";
7
- function U({
8
- item: e,
9
- className: b,
10
- disabled: r = !1
2
+ import { jsx as i, jsxs as n, Fragment as d } from "react/jsx-runtime";
3
+ import { useState as u } from "react";
4
+ import { Modal as k } from "./index27.mjs";
5
+ import { Button as C } from "./index24.mjs";
6
+ import { formatCurrency as s, cn as S } from "./index30.mjs";
7
+ import { Package as U, Loader2 as j, ShoppingCart as I } from "lucide-react";
8
+ function F({
9
+ isOpen: b,
10
+ onClose: g,
11
+ product: e,
12
+ onConfirm: y,
13
+ isLoading: m = !1,
14
+ discountPercent: r
11
15
  }) {
12
- const [i, n] = f(!1), [s, c] = f(!1), { removeItem: o, updateItem: d } = w(), m = y(async (l) => {
13
- if (!(l <= 0)) {
14
- c(!0);
15
- try {
16
- await d(e.id, l);
17
- } catch (v) {
18
- console.error("Failed to update item quantity:", v);
19
- }
20
- c(!1);
21
- }
22
- }, [e.id, d]), x = y(async () => {
23
- n(!0);
24
- try {
25
- await o(e.id);
26
- } catch (l) {
27
- console.error("Failed to remove item:", l);
28
- }
29
- n(!1);
30
- }, [e.id, o]), u = e.variant.thumbnailUrl ?? e.variant.product.thumbnailUrl;
31
- return /* @__PURE__ */ t(
32
- "div",
16
+ var h, o;
17
+ const [x, N] = u(null), v = ((h = e == null ? void 0 : e.variants.find((l) => !l.availability || l.availability.available)) == null ? void 0 : h.id) || ((o = e == null ? void 0 : e.variants[0]) == null ? void 0 : o.id) || null, c = x || v, a = e == null ? void 0 : e.variants.find((l) => l.id === c), p = () => {
18
+ e && a && y(e, a);
19
+ };
20
+ return e ? /* @__PURE__ */ i(
21
+ k,
33
22
  {
34
- className: N(
35
- "flex gap-3 transition-opacity",
36
- (r || i || s) && "opacity-50",
37
- b
23
+ isOpen: b,
24
+ onClose: g,
25
+ title: "Select Option",
26
+ size: "sm",
27
+ footer: /* @__PURE__ */ i(
28
+ C,
29
+ {
30
+ onClick: p,
31
+ disabled: !a || m || (a == null ? void 0 : a.availability) && !a.availability.available,
32
+ className: "w-full bg-accent-500 hover:bg-accent-600 text-white",
33
+ size: "lg",
34
+ children: m ? /* @__PURE__ */ n(d, { children: [
35
+ /* @__PURE__ */ i(j, { className: "h-4 w-4 animate-spin mr-2" }),
36
+ "Adding..."
37
+ ] }) : /* @__PURE__ */ n(d, { children: [
38
+ /* @__PURE__ */ i(I, { className: "h-4 w-4 mr-2" }),
39
+ "Add to Cart - ",
40
+ a && (r ? /* @__PURE__ */ n("span", { children: [
41
+ /* @__PURE__ */ i("span", { className: "line-through opacity-60 mr-1", children: s(a.price) }),
42
+ s(Math.round(a.price * (1 - r / 100)))
43
+ ] }) : s(a.price))
44
+ ] })
45
+ }
38
46
  ),
39
- children: [
40
- /* @__PURE__ */ a("div", { className: "h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-gray-100", children: u ? /* @__PURE__ */ a(
41
- "img",
42
- {
43
- src: u,
44
- alt: e.variant.product.name,
45
- className: "h-full w-full object-cover"
46
- }
47
- ) : /* @__PURE__ */ a("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ a(g, { className: "h-6 w-6 text-gray-400" }) }) }),
48
- /* @__PURE__ */ t("div", { className: "flex flex-1 flex-col justify-between py-1", children: [
49
- /* @__PURE__ */ a("div", { children: /* @__PURE__ */ t("div", { className: "flex items-start justify-between gap-2", children: [
50
- /* @__PURE__ */ t("div", { className: "flex-1", children: [
51
- /* @__PURE__ */ a("h3", { className: "text-base font-semibold leading-tight", children: e.variant.product.name }),
52
- e.variant.name && /* @__PURE__ */ a("p", { className: "mt-0.5 text-sm text-gray-600", children: e.variant.name })
53
- ] }),
54
- /* @__PURE__ */ a(
55
- "button",
56
- {
57
- onClick: x,
58
- disabled: r || i,
59
- className: "text-gray-400 hover:text-red-600 disabled:cursor-not-allowed disabled:opacity-50",
60
- "aria-label": "Remove item",
61
- children: /* @__PURE__ */ a(p, { className: "h-5 w-5" })
62
- }
63
- )
64
- ] }) }),
65
- /* @__PURE__ */ t("div", { className: "flex items-center justify-between mt-2", children: [
66
- /* @__PURE__ */ t("div", { className: "inline-flex items-center overflow-hidden rounded-full bg-gray-200 text-gray-700", children: [
67
- /* @__PURE__ */ a(
68
- "button",
69
- {
70
- "aria-label": "Decrease quantity",
71
- onClick: () => m(e.quantity - 1),
72
- disabled: r || e.quantity <= 1 || s,
73
- className: "flex h-8 w-8 items-center justify-center transition-colors hover:bg-gray-300 disabled:cursor-not-allowed disabled:opacity-50",
74
- children: "−"
75
- }
76
- ),
77
- /* @__PURE__ */ a("span", { className: "px-3 text-base font-medium select-none", children: e.quantity }),
78
- /* @__PURE__ */ a(
79
- "button",
80
- {
81
- "aria-label": "Increase quantity",
82
- onClick: () => m(e.quantity + 1),
83
- disabled: r || s,
84
- className: "flex h-8 w-8 items-center justify-center transition-colors hover:bg-gray-300 disabled:cursor-not-allowed disabled:opacity-50",
85
- children: "+"
86
- }
87
- )
88
- ] }),
89
- /* @__PURE__ */ t("div", { className: "text-right", children: [
90
- /* @__PURE__ */ a("p", { className: "text-base font-medium", children: h(e.subtotal) }),
91
- e.basePrice !== e.finalPrice && /* @__PURE__ */ a("p", { className: "text-xs text-[#DC143C] line-through", children: h(e.basePrice * e.quantity) })
47
+ children: /* @__PURE__ */ n("div", { className: "space-y-4", children: [
48
+ /* @__PURE__ */ n("div", { className: "flex gap-4", children: [
49
+ /* @__PURE__ */ i("div", { className: "w-20 h-20 flex-shrink-0 rounded-lg overflow-hidden bg-gray-100", children: a != null && a.thumbnailUrl || e.thumbnailUrl ? /* @__PURE__ */ i(
50
+ "img",
51
+ {
52
+ src: (a == null ? void 0 : a.thumbnailUrl) || e.thumbnailUrl || "",
53
+ alt: (a == null ? void 0 : a.name) || e.name,
54
+ className: "w-full h-full object-cover"
55
+ }
56
+ ) : /* @__PURE__ */ i("div", { className: "w-full h-full flex items-center justify-center", children: /* @__PURE__ */ i(U, { className: "h-8 w-8 text-gray-300" }) }) }),
57
+ /* @__PURE__ */ n("div", { className: "flex-1", children: [
58
+ /* @__PURE__ */ i("h3", { className: "font-semibold text-gray-900", children: e.name }),
59
+ /* @__PURE__ */ n("p", { className: "text-sm text-gray-500 mt-1", children: [
60
+ e.variants.length,
61
+ " options available"
92
62
  ] })
93
63
  ] })
64
+ ] }),
65
+ /* @__PURE__ */ n("div", { className: "space-y-2", children: [
66
+ /* @__PURE__ */ i("p", { className: "text-sm font-medium text-gray-700", children: "Choose an option:" }),
67
+ /* @__PURE__ */ i("div", { className: "flex flex-wrap gap-2", children: e.variants.map((l) => {
68
+ const w = l.id === c, t = l.availability && !l.availability.available, f = l.thumbnailUrl || e.thumbnailUrl;
69
+ return /* @__PURE__ */ n(
70
+ "button",
71
+ {
72
+ onClick: () => !t && N(l.id),
73
+ disabled: !!t,
74
+ className: S(
75
+ "flex items-center gap-2 px-3 py-2 rounded-full text-sm font-medium border-2 transition-all",
76
+ t ? "border-gray-200 bg-gray-50 text-gray-400 cursor-not-allowed opacity-60" : w ? "border-accent-500 bg-accent-50 text-accent-700" : "border-gray-200 bg-white text-gray-700 hover:border-gray-300"
77
+ ),
78
+ children: [
79
+ f && /* @__PURE__ */ i(
80
+ "img",
81
+ {
82
+ src: f,
83
+ alt: l.name || "Variant",
84
+ className: "w-6 h-6 rounded-full object-cover flex-shrink-0"
85
+ }
86
+ ),
87
+ l.name || "Default",
88
+ " - ",
89
+ t ? /* @__PURE__ */ i("span", { className: "text-gray-400", children: "Sold out" }) : r ? /* @__PURE__ */ n("span", { children: [
90
+ /* @__PURE__ */ i("span", { className: "line-through opacity-60 mr-1", children: s(l.price) }),
91
+ s(Math.round(l.price * (1 - r / 100)))
92
+ ] }) : s(l.price)
93
+ ]
94
+ },
95
+ l.id
96
+ );
97
+ }) })
94
98
  ] })
95
- ]
99
+ ] })
96
100
  }
97
- );
101
+ ) : null;
98
102
  }
99
103
  export {
100
- U as CartItem
104
+ F as VariantPickerModal
101
105
  };
package/dist/index140.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { __exports as o } from "./index211.mjs";
2
+ import { __exports as o } from "./index212.mjs";
3
3
  var c;
4
4
  function p() {
5
5
  return c ? o : (c = 1, function(a) {
package/dist/index141.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { __exports as r } from "./index212.mjs";
2
+ import { __exports as r } from "./index213.mjs";
3
3
  import { __require as c } from "./index122.mjs";
4
4
  import { __require as l } from "./index135.mjs";
5
5
  var n;
package/dist/index142.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { __exports as e } from "./index213.mjs";
2
+ import { __exports as e } from "./index214.mjs";
3
3
  var t;
4
4
  function u() {
5
5
  return t ? e : (t = 1, function(o) {
package/dist/index143.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { __exports as r } from "./index214.mjs";
2
+ import { __exports as r } from "./index215.mjs";
3
3
  var u;
4
4
  function m() {
5
5
  return u ? r : (u = 1, function(t) {
package/dist/index144.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { __exports as u } from "./index215.mjs";
2
+ import { __exports as u } from "./index216.mjs";
3
3
  import { __require as A } from "./index126.mjs";
4
4
  import { __require as x } from "./index127.mjs";
5
5
  var d;
package/dist/index145.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { __exports as t } from "./index216.mjs";
2
+ import { __exports as t } from "./index217.mjs";
3
3
  var n;
4
4
  function i() {
5
5
  return n ? t : (n = 1, function(o) {
package/dist/index146.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { __exports as t } from "./index217.mjs";
2
+ import { __exports as t } from "./index218.mjs";
3
3
  var o;
4
4
  function Re() {
5
5
  return o ? t : (o = 1, function(n) {
package/dist/index147.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use client';
2
- import { __exports as n } from "./index218.mjs";
3
- import { __require as c } from "./index219.mjs";
2
+ import { __exports as n } from "./index219.mjs";
3
+ import { __require as c } from "./index220.mjs";
4
4
  var u;
5
5
  function y() {
6
6
  return u ? n : (u = 1, function(a) {
package/dist/index148.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use client';
2
- import { __module as e } from "./index220.mjs";
3
- import { __require as o } from "./index221.mjs";
4
- import { __require as t } from "./index222.mjs";
2
+ import { __module as e } from "./index221.mjs";
3
+ import { __require as o } from "./index222.mjs";
4
+ import { __require as t } from "./index223.mjs";
5
5
  var r;
6
6
  function p() {
7
7
  return r ? e.exports : (r = 1, process.env.NODE_ENV === "production" ? e.exports = o() : e.exports = t(), e.exports);