@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/index12.mjs CHANGED
@@ -1,134 +1,199 @@
1
1
  'use client';
2
- import { jsx as i, jsxs as s, Fragment as f } from "react/jsx-runtime";
3
- import "./index28.mjs";
4
- import { useGetCartRecommendations as U } from "./index40.mjs";
2
+ import { jsxs as a, jsx as t, Fragment as C } from "react/jsx-runtime";
3
+ import { useState as f, useRef as V } from "react";
4
+ import { ChevronLeft as U, ChevronRight as z } from "lucide-react";
5
+ import { Switch as G } from "./index51.mjs";
6
+ import { Badge as T } from "./index26.mjs";
7
+ import { cn as P, formatCurrency as k } from "./index30.mjs";
8
+ import { VariantPickerModal as _ } from "./index14.mjs";
9
+ import "./index31.mjs";
5
10
  import "@tanstack/react-query";
11
+ import { useGetProductAddOns as $ } from "./index45.mjs";
6
12
  import { useCart as q } from "./index3.mjs";
7
- import { cn as p, formatCurrency as z } from "./index27.mjs";
8
- import { Button as B } from "./index21.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 "./index13.mjs";
12
- function _({
13
- limit: P,
14
- className: C
13
+ function le({
14
+ slug: g,
15
+ products: x,
16
+ onToggle: u,
17
+ selectedProductIds: A,
18
+ onProductClick: H,
19
+ className: p,
20
+ title: j = "Popular add-ons",
21
+ limit: D = 6
15
22
  }) {
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));
23
+ const { cart: s, addItem: v, removeItem: I } = q(), { data: M, isLoading: N } = $(g || "", D, {
24
+ enabled: !!g && !x
25
+ }), c = x || M || [], W = A || c.filter((e) => s == null ? void 0 : s.items.some(
26
+ (n) => e.variants.some((r) => r.id === n.variant.id)
27
+ )).map((e) => e.id), [y, m] = f(null), [B, b] = f(!1), F = async (e, n) => {
28
+ if (u) {
29
+ u(e, n);
30
+ return;
38
31
  }
39
- }, T = (e) => {
40
- if (e.variants.length > 1) {
32
+ if (n && e.variants.length > 1) {
41
33
  m(e);
42
34
  return;
43
35
  }
44
- const t = e.variants[0];
45
- t && N(e, t);
46
- }, S = async (e, t) => {
47
- w(!0);
36
+ const r = e.variants[0];
37
+ if (r)
38
+ if (n)
39
+ await v(
40
+ e.slug,
41
+ e.name,
42
+ r.price,
43
+ r.sku,
44
+ 1
45
+ );
46
+ else {
47
+ const l = s == null ? void 0 : s.items.find(
48
+ (i) => e.variants.some((d) => d.id === i.variant.id)
49
+ );
50
+ l && await I(l.id);
51
+ }
52
+ }, S = async (e, n) => {
53
+ b(!0);
48
54
  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);
55
+ await v(
56
+ e.slug,
57
+ e.name,
58
+ n.price,
59
+ n.sku,
60
+ 1
61
+ ), m(null);
51
62
  } finally {
52
- w(!1);
63
+ b(!1);
64
+ }
65
+ }, o = V(null), [L, O] = f(0), E = () => {
66
+ if (o.current) {
67
+ const { scrollLeft: e, scrollWidth: n, clientWidth: r } = o.current, l = e / (n - r);
68
+ O(l || 0);
69
+ }
70
+ }, w = (e) => {
71
+ if (o.current) {
72
+ const { clientWidth: n } = o.current, r = n * 0.9;
73
+ o.current.scrollBy({
74
+ left: e === "left" ? -r : r,
75
+ behavior: "smooth"
76
+ });
53
77
  }
54
78
  };
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(
79
+ return (!c || c.length === 0) && !N ? null : N ? /* @__PURE__ */ a("div", { className: P("w-full py-8 space-y-4 animate-pulse", p), style: { maxWidth: "calc(100vw - calc(var(--spacing) * 7))" }, children: [
80
+ /* @__PURE__ */ t("div", { className: "h-4 w-32 bg-gray-200 rounded px-1 mb-6" }),
81
+ /* @__PURE__ */ a("div", { className: "flex gap-4 overflow-x-hidden", children: [
82
+ /* @__PURE__ */ t("div", { className: "min-w-[90%] h-[90px] bg-gray-100 rounded-[2rem]" }),
83
+ /* @__PURE__ */ t("div", { className: "min-w-[90%] h-[90px] bg-gray-100 rounded-[2rem]" })
84
+ ] })
85
+ ] }) : /* @__PURE__ */ a(C, { children: [
86
+ /* @__PURE__ */ a("div", { className: p, children: [
87
+ /* @__PURE__ */ t("div", { className: "px-1 mb-3", children: /* @__PURE__ */ t("h3", { className: "text-lg font-bold tracking-tight text-gray-900", children: j }) }),
88
+ /* @__PURE__ */ t("div", { className: "relative", children: /* @__PURE__ */ t(
89
+ "div",
90
+ {
91
+ ref: o,
92
+ onScroll: E,
93
+ className: "flex gap-4 overflow-x-auto scrollbar-hide snap-x snap-mandatory px-1",
94
+ style: { scrollbarWidth: "none", msOverflowStyle: "none", maxWidth: "calc(100vw - calc(var(--spacing) * 7))" },
95
+ children: c.map((e) => {
96
+ const n = W.includes(e.id), r = e.variants[0], l = (r == null ? void 0 : r.price) || 0, i = e.compareAtPrice || r.compareAtPrice, d = i && i > l, R = d ? Math.round((i - l) / i * 100) : 0;
97
+ return /* @__PURE__ */ a(
98
+ "div",
99
+ {
100
+ className: "relative flex min-w-[90%] md:min-w-[420px] snap-start items-center gap-4 rounded-xl bg-[#EBEBEB] p-3 transition-all",
101
+ children: [
102
+ /* @__PURE__ */ a(
103
+ "a",
104
+ {
105
+ href: `/product/${e.slug}`,
106
+ className: "flex flex-1 items-center gap-4 min-w-0",
107
+ children: [
108
+ /* @__PURE__ */ t("div", { className: "h-16 w-16 flex-shrink-0 overflow-hidden rounded-xl bg-white/40 flex items-center justify-center", children: e.thumbnailUrl ? /* @__PURE__ */ t(
109
+ "img",
110
+ {
111
+ src: e.thumbnailUrl,
112
+ alt: e.name,
113
+ className: "h-full w-full object-cover",
114
+ loading: "lazy"
115
+ }
116
+ ) : /* @__PURE__ */ t("div", { className: "flex h-full w-full items-center justify-center text-[10px] text-gray-400", children: "No Img" }) }),
117
+ /* @__PURE__ */ a("div", { className: "flex flex-1 flex-col justify-center min-w-0", children: [
118
+ /* @__PURE__ */ t("h4", { className: "text-md font-bold text-[#333] truncate pr-2", title: e.name, children: e.name }),
119
+ e.addonDescription && /* @__PURE__ */ t("p", { className: "text-[11px] text-gray-500 line-clamp-3 italic mb-1", children: e.addonDescription }),
120
+ /* @__PURE__ */ a("div", { className: "flex items-center gap-2 mt-1", children: [
121
+ /* @__PURE__ */ t("span", { className: "text-md font-bold text-[#333]", children: k(l) }),
122
+ d && /* @__PURE__ */ a(C, { children: [
123
+ /* @__PURE__ */ t("span", { className: "text-sm text-[#DC143C] line-through", children: k(i) }),
124
+ /* @__PURE__ */ a(T, { className: "bg-[#DC143C]/10 hover:bg-[#DC143C]/20 text-[#DC143C] border-none text-[10px] font-bold px-2 py-0.5 rounded-lg uppercase tracking-tight", children: [
125
+ R,
126
+ "% OFF"
127
+ ] })
128
+ ] })
129
+ ] })
130
+ ] })
131
+ ]
132
+ }
133
+ ),
134
+ /* @__PURE__ */ t("div", { className: "pl-2", onClick: (h) => h.stopPropagation(), children: /* @__PURE__ */ t(
135
+ G,
136
+ {
137
+ checked: n,
138
+ onCheckedChange: (h) => F(e, h),
139
+ className: "scale-125"
140
+ }
141
+ ) })
142
+ ]
143
+ },
144
+ e.id
145
+ );
146
+ })
147
+ }
148
+ ) }),
149
+ /* @__PURE__ */ a("div", { className: "flex items-center justify-between px-2 mt-2", children: [
150
+ /* @__PURE__ */ t("div", { className: "flex gap-1.5 focus:outline-none", children: Array.from({ length: Math.min(c.length, 6) }).map((e, n) => {
151
+ const r = Math.round(L * (Math.min(c.length, 6) - 1)) === n;
152
+ return /* @__PURE__ */ t(
65
153
  "div",
66
154
  {
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
- }
155
+ className: P(
156
+ "h-2 w-2 rounded-full transition-all duration-300",
157
+ r ? "bg-gray-600 scale-110" : "bg-gray-300"
112
158
  )
113
159
  },
114
- e.id
160
+ n
115
161
  );
116
- }),
117
- /* @__PURE__ */ i("div", { className: "flex-shrink-0 w-1" })
118
- ] }) })
162
+ }) }),
163
+ /* @__PURE__ */ a("div", { className: "flex gap-4", children: [
164
+ /* @__PURE__ */ t(
165
+ "button",
166
+ {
167
+ onClick: () => w("left"),
168
+ className: "text-gray-400 hover:text-gray-900 transition-colors",
169
+ "aria-label": "Previous",
170
+ children: /* @__PURE__ */ t(U, { className: "h-6 w-6 stroke-[2.5px]" })
171
+ }
172
+ ),
173
+ /* @__PURE__ */ t(
174
+ "button",
175
+ {
176
+ onClick: () => w("right"),
177
+ className: "text-gray-400 hover:text-gray-900 transition-colors",
178
+ "aria-label": "Next",
179
+ children: /* @__PURE__ */ t(z, { className: "h-6 w-6 stroke-[2.5px]" })
180
+ }
181
+ )
182
+ ] })
183
+ ] })
119
184
  ] }),
120
- /* @__PURE__ */ i(
121
- H,
185
+ /* @__PURE__ */ t(
186
+ _,
122
187
  {
123
- isOpen: !!v,
188
+ isOpen: !!y,
124
189
  onClose: () => m(null),
125
- product: v,
190
+ product: y,
126
191
  onConfirm: S,
127
- isLoading: M
192
+ isLoading: B
128
193
  }
129
194
  )
130
195
  ] });
131
196
  }
132
197
  export {
133
- _ as RecommendedProducts
198
+ le as ProductAddOns
134
199
  };
package/dist/index120.mjs CHANGED
@@ -1,23 +1,26 @@
1
1
  'use client';
2
2
  import { __exports as t } from "./index180.mjs";
3
- import { __require as c } from "./index181.mjs";
4
3
  var i;
5
- function p() {
6
- return i ? t : (i = 1, function(r) {
7
- Object.defineProperty(r, "__esModule", {
4
+ function s() {
5
+ return i ? t : (i = 1, function(o) {
6
+ Object.defineProperty(o, "__esModule", {
8
7
  value: !0
9
- }), Object.defineProperty(r, "isDynamicRoute", {
8
+ }), Object.defineProperty(o, "normalizeLocalePath", {
10
9
  enumerable: !0,
11
10
  get: function() {
12
11
  return u;
13
12
  }
14
13
  });
15
- const n = c(), o = /\/\[[^/]+?\](?=\/|$)/;
16
- function u(e) {
17
- return (0, n.isInterceptionRouteAppPath)(e) && (e = (0, n.extractInterceptionRouteInformation)(e).interceptedRoute), o.test(e);
14
+ function u(r, l) {
15
+ let a;
16
+ const e = r.split("/");
17
+ return (l || []).some((n) => e[1] && e[1].toLowerCase() === n.toLowerCase() ? (a = n, e.splice(1, 1), r = e.join("/") || "/", !0) : !1), {
18
+ pathname: r,
19
+ detectedLocale: a
20
+ };
18
21
  }
19
22
  }(t), t);
20
23
  }
21
24
  export {
22
- p as __require
25
+ s as __require
23
26
  };
package/dist/index121.mjs CHANGED
@@ -1,34 +1,36 @@
1
1
  'use client';
2
- import { __exports as i } from "./index182.mjs";
3
- import { __require as U } from "./index119.mjs";
4
- import { __require as _ } from "./index183.mjs";
5
- var s;
6
- function q() {
7
- return s ? i : (s = 1, function(n) {
8
- Object.defineProperty(n, "__esModule", {
2
+ import { __exports as u } from "./index181.mjs";
3
+ var f;
4
+ function m() {
5
+ return f ? u : (f = 1, function(i) {
6
+ Object.defineProperty(i, "__esModule", {
9
7
  value: !0
10
- }), Object.defineProperty(n, "parseRelativeUrl", {
8
+ }), Object.defineProperty(i, "default", {
11
9
  enumerable: !0,
12
10
  get: function() {
13
- return f;
11
+ return o;
14
12
  }
15
13
  });
16
- const u = U(), l = _();
17
- function f(e, o, r) {
18
- r === void 0 && (r = !0);
19
- const t = new URL(typeof window > "u" ? "http://n" : (0, u.getLocationOrigin)()), c = o ? new URL(o, t) : e.startsWith(".") ? new URL(typeof window > "u" ? "http://n" : window.location.href) : t, { pathname: d, searchParams: h, search: v, hash: p, href: w, origin: a } = new URL(e, c);
20
- if (a !== t.origin)
21
- throw new Error("invariant: invalid relative URL, router received " + e);
14
+ function o() {
15
+ const t = /* @__PURE__ */ Object.create(null);
22
16
  return {
23
- pathname: d,
24
- query: r ? (0, l.searchParamsToUrlQuery)(h) : void 0,
25
- search: v,
26
- hash: p,
27
- href: w.slice(a.length)
17
+ on(e, r) {
18
+ (t[e] || (t[e] = [])).push(r);
19
+ },
20
+ off(e, r) {
21
+ t[e] && t[e].splice(t[e].indexOf(r) >>> 0, 1);
22
+ },
23
+ emit(e) {
24
+ for (var r = arguments.length, a = new Array(r > 1 ? r - 1 : 0), n = 1; n < r; n++)
25
+ a[n - 1] = arguments[n];
26
+ (t[e] || []).slice().map((c) => {
27
+ c(...a);
28
+ });
29
+ }
28
30
  };
29
31
  }
30
- }(i), i);
32
+ }(u), u);
31
33
  }
32
34
  export {
33
- q as __require
35
+ m as __require
34
36
  };
package/dist/index122.mjs CHANGED
@@ -1,87 +1,159 @@
1
1
  'use client';
2
- import { __exports as f } from "./index184.mjs";
3
- import { __require as z } from "./index185.mjs";
4
- import { __require as A } from "./index186.mjs";
5
- import { __require as F } from "./index113.mjs";
6
- import { __require as O } from "./index117.mjs";
7
- import { __require as U } from "./index130.mjs";
8
- import { __require as B } from "./index121.mjs";
9
- var k;
10
- function X() {
11
- return k ? f : (k = 1, function(h) {
12
- Object.defineProperty(h, "__esModule", {
2
+ import { __exports as a } from "./index182.mjs";
3
+ var g;
4
+ function j() {
5
+ return g ? a : (g = 1, function(u) {
6
+ Object.defineProperty(u, "__esModule", {
13
7
  value: !0
14
- }), Object.defineProperty(h, "default", {
15
- enumerable: !0,
16
- get: function() {
17
- return j;
8
+ });
9
+ function m(e, r) {
10
+ for (var t in r) Object.defineProperty(e, t, {
11
+ enumerable: !0,
12
+ get: r[t]
13
+ });
14
+ }
15
+ m(u, {
16
+ DecodeError: function() {
17
+ return S;
18
+ },
19
+ MiddlewareNotFoundError: function() {
20
+ return b;
21
+ },
22
+ MissingStaticPage: function() {
23
+ return v;
24
+ },
25
+ NormalizeError: function() {
26
+ return I;
27
+ },
28
+ PageNotFoundError: function() {
29
+ return O;
30
+ },
31
+ SP: function() {
32
+ return d;
33
+ },
34
+ ST: function() {
35
+ return w;
36
+ },
37
+ WEB_VITALS: function() {
38
+ return p;
39
+ },
40
+ execOnce: function() {
41
+ return E;
42
+ },
43
+ getDisplayName: function() {
44
+ return s;
45
+ },
46
+ getLocationOrigin: function() {
47
+ return c;
48
+ },
49
+ getURL: function() {
50
+ return P;
51
+ },
52
+ isAbsoluteUrl: function() {
53
+ return N;
54
+ },
55
+ isResSent: function() {
56
+ return f;
57
+ },
58
+ loadGetInitialProps: function() {
59
+ return l;
60
+ },
61
+ normalizeRepeatedSlashes: function() {
62
+ return y;
63
+ },
64
+ stringifyError: function() {
65
+ return L;
18
66
  }
19
67
  });
20
- const y = z(), p = A(), _ = F(), d = O(), v = U(), T = B();
21
- function j(o, m, a, q, g, R) {
22
- let r = !1, P = !1, l = (0, T.parseRelativeUrl)(o), i = (0, _.removeTrailingSlash)((0, d.normalizeLocalePath)((0, v.removeBasePath)(l.pathname), R).pathname), t;
23
- const c = (e) => {
24
- let u = (0, y.getPathMatch)(e.source + (process.env.__NEXT_TRAILING_SLASH ? "(/)?" : ""), {
25
- removeUnnamedParams: !0,
26
- strict: !0
27
- })(l.pathname);
28
- if ((e.has || e.missing) && u) {
29
- const n = (0, p.matchHas)({
30
- headers: {
31
- host: document.location.hostname,
32
- "user-agent": navigator.userAgent
33
- },
34
- cookies: document.cookie.split("; ").reduce((b, D) => {
35
- const [L, ...S] = D.split("=");
36
- return b[L] = S.join("="), b;
37
- }, {})
38
- }, l.query, e.has, e.missing);
39
- n ? Object.assign(u, n) : u = !1;
40
- }
41
- if (u) {
42
- if (!e.destination)
43
- return P = !0, !0;
44
- const n = (0, p.prepareDestination)({
45
- appendParamsToQuery: !0,
46
- destination: e.destination,
47
- params: u,
48
- query: q
49
- });
50
- if (l = n.parsedDestination, o = n.newUrl, Object.assign(q, n.parsedDestination.query), i = (0, _.removeTrailingSlash)((0, d.normalizeLocalePath)((0, v.removeBasePath)(o), R).pathname), m.includes(i))
51
- return r = !0, t = i, !0;
52
- if (t = g(i), t !== o && m.includes(t))
53
- return r = !0, !0;
54
- }
68
+ const p = [
69
+ "CLS",
70
+ "FCP",
71
+ "FID",
72
+ "INP",
73
+ "LCP",
74
+ "TTFB"
75
+ ];
76
+ function E(e) {
77
+ let r = !1, t;
78
+ return function() {
79
+ for (var i = arguments.length, n = new Array(i), o = 0; o < i; o++)
80
+ n[o] = arguments[o];
81
+ return r || (r = !0, t = e(...n)), t;
55
82
  };
56
- let s = !1;
57
- for (let e = 0; e < a.beforeFiles.length; e++)
58
- c(a.beforeFiles[e]);
59
- if (r = m.includes(i), !r) {
60
- if (!s) {
61
- for (let e = 0; e < a.afterFiles.length; e++)
62
- if (c(a.afterFiles[e])) {
63
- s = !0;
64
- break;
65
- }
66
- }
67
- if (s || (t = g(i), r = m.includes(t), s = r), !s) {
68
- for (let e = 0; e < a.fallback.length; e++)
69
- if (c(a.fallback[e])) {
70
- s = !0;
71
- break;
72
- }
83
+ }
84
+ const h = /^[a-zA-Z][a-zA-Z\d+\-.]*?:/, N = (e) => h.test(e);
85
+ function c() {
86
+ const { protocol: e, hostname: r, port: t } = window.location;
87
+ return e + "//" + r + (t ? ":" + t : "");
88
+ }
89
+ function P() {
90
+ const { href: e } = window.location, r = c();
91
+ return e.substring(r.length);
92
+ }
93
+ function s(e) {
94
+ return typeof e == "string" ? e : e.displayName || e.name || "Unknown";
95
+ }
96
+ function f(e) {
97
+ return e.finished || e.headersSent;
98
+ }
99
+ function y(e) {
100
+ const r = e.split("?");
101
+ return r[0].replace(/\\/g, "/").replace(/\/\/+/g, "/") + (r[1] ? "?" + r.slice(1).join("?") : "");
102
+ }
103
+ async function l(e, r) {
104
+ if (process.env.NODE_ENV !== "production") {
105
+ var t;
106
+ if ((t = e.prototype) != null && t.getInitialProps) {
107
+ const o = '"' + s(e) + '.getInitialProps()" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.';
108
+ throw new Error(o);
73
109
  }
74
110
  }
75
- return {
76
- asPath: o,
77
- parsedAs: l,
78
- matchedPage: r,
79
- resolvedHref: t,
80
- externalDest: P
81
- };
111
+ const i = r.res || r.ctx && r.ctx.res;
112
+ if (!e.getInitialProps)
113
+ return r.ctx && r.Component ? {
114
+ pageProps: await l(r.Component, r.ctx)
115
+ } : {};
116
+ const n = await e.getInitialProps(r);
117
+ if (i && f(i))
118
+ return n;
119
+ if (!n) {
120
+ const o = '"' + s(e) + '.getInitialProps()" should resolve to an object. But found "' + n + '" instead.';
121
+ throw new Error(o);
122
+ }
123
+ return process.env.NODE_ENV !== "production" && Object.keys(n).length === 0 && !r.ctx && console.warn("" + s(e) + " returned an empty object from `getInitialProps`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps"), n;
124
+ }
125
+ const d = typeof performance < "u", w = d && [
126
+ "mark",
127
+ "measure",
128
+ "getEntriesByName"
129
+ ].every((e) => typeof performance[e] == "function");
130
+ class S extends Error {
131
+ }
132
+ class I extends Error {
133
+ }
134
+ class O extends Error {
135
+ constructor(r) {
136
+ super(), this.code = "ENOENT", this.name = "PageNotFoundError", this.message = "Cannot find module for page: " + r;
137
+ }
138
+ }
139
+ class v extends Error {
140
+ constructor(r, t) {
141
+ super(), this.message = "Failed to load static file for page: " + r + " " + t;
142
+ }
143
+ }
144
+ class b extends Error {
145
+ constructor() {
146
+ super(), this.code = "ENOENT", this.message = "Cannot find the middleware module";
147
+ }
148
+ }
149
+ function L(e) {
150
+ return JSON.stringify({
151
+ message: e.message,
152
+ stack: e.stack
153
+ });
82
154
  }
83
- }(f), f);
155
+ }(a), a);
84
156
  }
85
157
  export {
86
- X as __require
158
+ j as __require
87
159
  };