@instockng/storefront-ui 1.0.18 → 1.0.19

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 (292) hide show
  1. package/dist/components/OrderConfirmation.d.ts +1 -1
  2. package/dist/components/OrderConfirmation.d.ts.map +1 -1
  3. package/dist/components/ShoppingCart.d.ts.map +1 -1
  4. package/dist/contexts/CartContext.d.ts +2 -2
  5. package/dist/contexts/CartContext.d.ts.map +1 -1
  6. package/dist/fetchers.d.ts +19 -0
  7. package/dist/fetchers.d.ts.map +1 -0
  8. package/dist/hooks/usePageTracking.d.ts +40 -0
  9. package/dist/hooks/usePageTracking.d.ts.map +1 -0
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.mjs +101 -92
  13. package/dist/index10.mjs +149 -624
  14. package/dist/index100.mjs +22 -33
  15. package/dist/index101.mjs +22 -30
  16. package/dist/index102.mjs +32 -27
  17. package/dist/index103.mjs +152 -57
  18. package/dist/index104.mjs +20 -3
  19. package/dist/index105.mjs +31 -2
  20. package/dist/index106.mjs +84 -2
  21. package/dist/index107.mjs +37 -16
  22. package/dist/index108.mjs +144 -12
  23. package/dist/index109.mjs +55 -6
  24. package/dist/index11.mjs +94 -56
  25. package/dist/index110.mjs +23 -30
  26. package/dist/index111.mjs +30 -0
  27. package/dist/index112.mjs +26 -0
  28. package/dist/index113.mjs +28 -0
  29. package/dist/index114.mjs +24 -0
  30. package/dist/index115.mjs +25 -0
  31. package/dist/index116.mjs +24 -0
  32. package/dist/index117.mjs +68 -0
  33. package/dist/index118.mjs +21 -0
  34. package/dist/index119.mjs +42 -0
  35. package/dist/index12.mjs +645 -62
  36. package/dist/index120.mjs +27 -0
  37. package/dist/index121.mjs +37 -0
  38. package/dist/index122.mjs +30 -0
  39. package/dist/index123.mjs +22 -0
  40. package/dist/index124.mjs +24 -0
  41. package/dist/index125.mjs +50 -0
  42. package/dist/index126.mjs +26 -0
  43. package/dist/index127.mjs +271 -0
  44. package/dist/index128.mjs +73 -0
  45. package/dist/index129.mjs +11 -0
  46. package/dist/index13.mjs +50 -14
  47. package/dist/index130.mjs +5 -0
  48. package/dist/index131.mjs +5 -0
  49. package/dist/index132.mjs +36 -0
  50. package/dist/index133.mjs +5 -0
  51. package/dist/index134.mjs +24 -0
  52. package/dist/index135.mjs +59 -0
  53. package/dist/index136.mjs +32 -0
  54. package/dist/index137.mjs +10 -0
  55. package/dist/index138.mjs +55 -0
  56. package/dist/index139.mjs +9 -0
  57. package/dist/index14.mjs +62 -115
  58. package/dist/index140.mjs +15 -0
  59. package/dist/index141.mjs +10 -0
  60. package/dist/index142.mjs +31 -0
  61. package/dist/index143.mjs +5 -0
  62. package/dist/index144.mjs +73 -0
  63. package/dist/index145.mjs +170 -0
  64. package/dist/index146.mjs +5 -0
  65. package/dist/index147.mjs +5 -0
  66. package/dist/index148.mjs +5 -0
  67. package/dist/index149.mjs +21 -0
  68. package/dist/index15.mjs +23 -41
  69. package/dist/index150.mjs +35 -0
  70. package/dist/index151.mjs +41 -0
  71. package/dist/index152.mjs +21 -0
  72. package/dist/index153.mjs +21 -0
  73. package/dist/index154.mjs +5 -0
  74. package/dist/index155.mjs +23 -0
  75. package/dist/index156.mjs +49 -0
  76. package/dist/index157.mjs +5 -0
  77. package/dist/index158.mjs +33 -0
  78. package/dist/index159.mjs +21 -0
  79. package/dist/index16.mjs +115 -42
  80. package/dist/index160.mjs +5 -0
  81. package/dist/index161.mjs +5 -0
  82. package/dist/index162.mjs +5 -0
  83. package/dist/index163.mjs +5 -0
  84. package/dist/index164.mjs +75 -0
  85. package/dist/index165.mjs +5 -0
  86. package/dist/index166.mjs +56 -0
  87. package/dist/index167.mjs +5 -0
  88. package/dist/index168.mjs +39 -0
  89. package/dist/index169.mjs +155 -0
  90. package/dist/index17.mjs +42 -42
  91. package/dist/index170.mjs +5 -0
  92. package/dist/index171.mjs +5 -0
  93. package/dist/index172.mjs +22 -0
  94. package/dist/index173.mjs +5 -0
  95. package/dist/index174.mjs +5 -0
  96. package/dist/index175.mjs +29 -0
  97. package/dist/index176.mjs +5 -0
  98. package/dist/index177.mjs +5 -0
  99. package/dist/index178.mjs +27 -0
  100. package/dist/index179.mjs +26 -0
  101. package/dist/index18.mjs +41 -31
  102. package/dist/index180.mjs +5 -0
  103. package/dist/index181.mjs +5 -0
  104. package/dist/index182.mjs +5 -0
  105. package/dist/index183.mjs +26 -0
  106. package/dist/index184.mjs +5 -0
  107. package/dist/index185.mjs +26 -0
  108. package/dist/index186.mjs +5 -0
  109. package/dist/index187.mjs +5 -0
  110. package/dist/index188.mjs +5 -0
  111. package/dist/index189.mjs +26 -0
  112. package/dist/index19.mjs +40 -7
  113. package/dist/index190.mjs +5 -0
  114. package/dist/index191.mjs +26 -0
  115. package/dist/index192.mjs +5 -0
  116. package/dist/index193.mjs +5 -0
  117. package/dist/index194.mjs +5 -0
  118. package/dist/index195.mjs +5 -0
  119. package/dist/index196.mjs +5 -0
  120. package/dist/index197.mjs +5 -0
  121. package/dist/index198.mjs +5 -0
  122. package/dist/index199.mjs +5 -0
  123. package/dist/index2.mjs +31 -12
  124. package/dist/index20.mjs +27 -17
  125. package/dist/index200.mjs +130 -0
  126. package/dist/index201.mjs +5 -0
  127. package/dist/index202.mjs +77 -0
  128. package/dist/index203.mjs +77 -0
  129. package/dist/index204.mjs +5 -0
  130. package/dist/index205.mjs +5 -0
  131. package/dist/index206.mjs +111 -0
  132. package/dist/index207.mjs +5 -0
  133. package/dist/index208.mjs +5 -0
  134. package/dist/index209.mjs +5 -0
  135. package/dist/index21.mjs +6 -29
  136. package/dist/index210.mjs +5 -0
  137. package/dist/index211.mjs +5 -0
  138. package/dist/index212.mjs +5 -0
  139. package/dist/index213.mjs +5 -0
  140. package/dist/index214.mjs +5 -0
  141. package/dist/index215.mjs +5 -0
  142. package/dist/index216.mjs +40 -0
  143. package/dist/index217.mjs +5 -0
  144. package/dist/index218.mjs +5 -0
  145. package/dist/index219.mjs +5 -0
  146. package/dist/index22.mjs +20 -18
  147. package/dist/index220.mjs +247 -0
  148. package/dist/index221.mjs +5 -0
  149. package/dist/index222.mjs +36 -0
  150. package/dist/index223.mjs +68 -0
  151. package/dist/index224.mjs +28 -0
  152. package/dist/index225.mjs +5 -0
  153. package/dist/index226.mjs +5 -0
  154. package/dist/index227.mjs +5 -0
  155. package/dist/index228.mjs +5 -0
  156. package/dist/index229.mjs +5 -0
  157. package/dist/index23.mjs +32 -87
  158. package/dist/index230.mjs +5 -0
  159. package/dist/index231.mjs +5 -0
  160. package/dist/index232.mjs +5 -0
  161. package/dist/index233.mjs +7 -0
  162. package/dist/index234.mjs +5 -0
  163. package/dist/index235.mjs +5 -0
  164. package/dist/index236.mjs +34 -0
  165. package/dist/index237.mjs +14 -0
  166. package/dist/index238.mjs +7 -0
  167. package/dist/index239.mjs +7 -0
  168. package/dist/index24.mjs +12 -12
  169. package/dist/index240.mjs +16 -0
  170. package/dist/index241.mjs +10 -0
  171. package/dist/index242.mjs +15 -0
  172. package/dist/index243.mjs +8 -0
  173. package/dist/index244.mjs +36 -0
  174. package/dist/index245.mjs +34 -0
  175. package/dist/index246.mjs +31 -0
  176. package/dist/index247.mjs +64 -0
  177. package/dist/index248.mjs +5 -0
  178. package/dist/index249.mjs +5 -0
  179. package/dist/index25.mjs +85 -8
  180. package/dist/index250.mjs +21 -0
  181. package/dist/index251.mjs +50 -0
  182. package/dist/index252.mjs +5 -0
  183. package/dist/index253.mjs +5 -0
  184. package/dist/index254.mjs +5 -0
  185. package/dist/index255.mjs +5 -0
  186. package/dist/index256.mjs +94 -0
  187. package/dist/index257.mjs +5 -0
  188. package/dist/index258.mjs +6 -0
  189. package/dist/index259.mjs +5 -0
  190. package/dist/index26.mjs +20 -97
  191. package/dist/index260.mjs +5 -0
  192. package/dist/index261.mjs +20 -0
  193. package/dist/index262.mjs +16 -0
  194. package/dist/index263.mjs +9 -0
  195. package/dist/index264.mjs +33 -0
  196. package/dist/index265.mjs +5 -0
  197. package/dist/index266.mjs +5 -0
  198. package/dist/index267.mjs +5 -0
  199. package/dist/index27.mjs +11 -18
  200. package/dist/index28.mjs +11 -65
  201. package/dist/index29.mjs +94 -89
  202. package/dist/index3.mjs +117 -97
  203. package/dist/index30.mjs +20 -19
  204. package/dist/index31.mjs +65 -19
  205. package/dist/index32.mjs +93 -8
  206. package/dist/index33.mjs +18 -1432
  207. package/dist/index34.mjs +19 -2
  208. package/dist/index35.mjs +10 -56
  209. package/dist/index36.mjs +9 -49
  210. package/dist/index37.mjs +103 -33
  211. package/dist/index38.mjs +24 -14
  212. package/dist/index39.mjs +1411 -2241
  213. package/dist/index4.mjs +82 -197
  214. package/dist/index40.mjs +2 -36
  215. package/dist/index41.mjs +56 -43
  216. package/dist/index42.mjs +50 -98
  217. package/dist/index43.mjs +33 -97
  218. package/dist/index44.mjs +13 -79
  219. package/dist/index45.mjs +2255 -69
  220. package/dist/index46.mjs +36 -95
  221. package/dist/index47.mjs +43 -80
  222. package/dist/index48.mjs +99 -79
  223. package/dist/index49.mjs +93 -15
  224. package/dist/index5.mjs +15 -108
  225. package/dist/index50.mjs +77 -14
  226. package/dist/index51.mjs +58 -44
  227. package/dist/index52.mjs +63 -93
  228. package/dist/index53.mjs +51 -99
  229. package/dist/index54.mjs +78 -4
  230. package/dist/index55.mjs +18 -22
  231. package/dist/index56.mjs +17 -74
  232. package/dist/index57.mjs +63 -15
  233. package/dist/index58.mjs +121 -59
  234. package/dist/index59.mjs +129 -34
  235. package/dist/index6.mjs +190 -73
  236. package/dist/index60.mjs +22 -41
  237. package/dist/index61.mjs +148 -230
  238. package/dist/index62.mjs +2 -6
  239. package/dist/index63.mjs +21 -132
  240. package/dist/index64.mjs +73 -66
  241. package/dist/index65.mjs +14 -86
  242. package/dist/index66.mjs +59 -25
  243. package/dist/index67.mjs +4 -8
  244. package/dist/index68.mjs +2 -75
  245. package/dist/index69.mjs +5 -3
  246. package/dist/index7.mjs +97 -85
  247. package/dist/index70.mjs +1134 -2
  248. package/dist/index71.mjs +19 -82
  249. package/dist/index72.mjs +54 -53
  250. package/dist/index73.mjs +32 -5
  251. package/dist/index74.mjs +2 -5
  252. package/dist/index75.mjs +2 -179
  253. package/dist/index76.mjs +230 -48
  254. package/dist/index77.mjs +6 -69
  255. package/dist/index78.mjs +133 -3
  256. package/dist/index79.mjs +68 -2
  257. package/dist/index8.mjs +78 -162
  258. package/dist/index80.mjs +85 -19
  259. package/dist/index81.mjs +26 -53
  260. package/dist/index82.mjs +8 -28
  261. package/dist/index83.mjs +74 -6
  262. package/dist/index84.mjs +3 -51
  263. package/dist/index85.mjs +2 -6
  264. package/dist/index86.mjs +81 -10
  265. package/dist/index87.mjs +53 -6
  266. package/dist/index88.mjs +5 -27
  267. package/dist/index89.mjs +5 -2
  268. package/dist/index9.mjs +90 -90
  269. package/dist/index90.mjs +175 -66
  270. package/dist/index91.mjs +49 -163
  271. package/dist/index92.mjs +68 -30
  272. package/dist/index93.mjs +34 -11
  273. package/dist/index94.mjs +42 -3
  274. package/dist/index95.mjs +2 -4
  275. package/dist/index96.mjs +28 -13
  276. package/dist/index97.mjs +18 -7
  277. package/dist/index98.mjs +214 -11
  278. package/dist/index99.mjs +179 -4
  279. package/dist/providers/MetaPixelProvider.d.ts +98 -0
  280. package/dist/providers/MetaPixelProvider.d.ts.map +1 -0
  281. package/dist/providers/StorefrontProvider.d.ts +1 -0
  282. package/dist/providers/StorefrontProvider.d.ts.map +1 -1
  283. package/dist/styles.css +1 -1
  284. package/package.json +5 -4
  285. package/src/components/OrderConfirmation.tsx +0 -2
  286. package/src/components/ShoppingCart.tsx +12 -1
  287. package/src/contexts/CartContext.tsx +30 -5
  288. package/src/fetchers.ts +33 -0
  289. package/src/hooks/usePageTracking.ts +72 -0
  290. package/src/index.ts +5 -0
  291. package/src/providers/MetaPixelProvider.tsx +236 -0
  292. package/src/providers/StorefrontProvider.tsx +29 -3
package/dist/index10.mjs CHANGED
@@ -1,648 +1,173 @@
1
1
  'use client';
2
- import { jsxs as a, jsx as e, Fragment as pe } from "react/jsx-runtime";
3
- import { useState as N, useEffect as q, useMemo as re, useCallback as ve } from "react";
4
- import { object as $, string as y, ValidationError as Ne } from "./index33.mjs";
5
- import "./index18.mjs";
6
- import "@tanstack/react-query";
7
- import { useGetDeliveryZones as ge } from "./index32.mjs";
8
- import { useCart as be } from "./index3.mjs";
9
- import { Modal as ae } from "./index14.mjs";
10
- import { FormInput as P } from "./index15.mjs";
11
- import { FormSelect as se } from "./index16.mjs";
12
- import { Button as L } from "./index11.mjs";
13
- import { Loader2 as R, ChevronLeft as xe, ChevronRight as we, CheckCircle as Ce, Package as Pe, Mail as ke, Phone as Me, Zap as qe, Banknote as Ie, ChevronDown as Ze } from "lucide-react";
14
- import { formatCurrency as k, cn as w } from "./index17.mjs";
15
- import je from "./index34.mjs";
16
- import { usePaystackPayment as Se } from "./index35.mjs";
17
- const ze = (d) => d.replace(/\D/g, ""), Fe = $({
18
- firstName: y().required("First name is required").min(2, "First name must be at least 2 characters").max(50, "First name must be less than 50 characters"),
19
- lastName: y().required("Last name is required").min(2, "Last name must be at least 2 characters").max(50, "Last name must be less than 50 characters"),
20
- email: y().required("Email is required").email("Please enter a valid email address"),
21
- phone: y().required("Phone number is required").test("nigerian-phone", "Please enter a valid Nigerian phone number (e.g. 0812 564 8668)", (d) => {
22
- if (!d) return !1;
23
- const M = ze(d);
24
- return [
25
- /^0[789]\d{9}$/
26
- // 0xxxxxxxxx (11 digits total)
27
- ].some((f) => f.test(M));
28
- })
29
- }), Le = $({
30
- address: y().required("Street address is required").min(10, "Please provide a complete address"),
31
- city: y().required("City is required").min(3, "City name must be at least 3 characters"),
32
- state: y().required("State is required").test("not-empty", "State is required", (d) => !!d && d.trim() !== ""),
33
- deliveryZoneId: y().required("Delivery zone is required").test("not-empty", "Delivery zone is required", (d) => !!d && d.trim() !== "")
34
- }), Be = $({
35
- paymentMethod: y().oneOf(["cod", "online"], "Please select a payment method").required("Payment method is required")
36
- });
37
- function Ee({
38
- isOpen: d,
39
- onClose: M,
40
- initialData: l,
41
- onSuccess: f,
42
- onError: c,
43
- submitButtonText: ne = "Place Order",
44
- refundPolicy: I
2
+ import { jsxs as a, Fragment as N, jsx as e } from "react/jsx-runtime";
3
+ import { useState as X, useEffect as b } from "react";
4
+ import { useCart as Z } from "./index3.mjs";
5
+ import { CartItem as A } from "./index9.mjs";
6
+ import { DiscountCodeInput as G } from "./index11.mjs";
7
+ import { Checkout as H } from "./index12.mjs";
8
+ import { Button as v } from "./index13.mjs";
9
+ import { X as J, Loader2 as K, Package as f } from "lucide-react";
10
+ import { cn as n, formatCurrency as d } from "./index19.mjs";
11
+ import { useMetaPixel as Q } from "./index4.mjs";
12
+ function se({
13
+ isOpen: i,
14
+ onClose: r,
15
+ onCheckout: o,
16
+ onContinueShopping: m,
17
+ className: w,
18
+ showDiscountCode: k = !0,
19
+ checkoutButtonText: j = "Checkout",
20
+ continueShoppingText: C = "Continue Shopping",
21
+ checkoutButtonClassName: E,
22
+ continueShoppingButtonClassName: L,
23
+ disableCheckout: z = !1,
24
+ emptyMessage: I = "Your cart is empty"
45
25
  }) {
46
- var J, Q, U, X, E, D, ee, te;
47
- const le = "pk_live_dfb74efb5f74d2acbc253d5ca396ab9015ef0fa7", [o, p] = N("customer"), [Z, de] = N(void 0), [g, G] = N(void 0), [u, B] = N(null), { refetch: K, isLoading: O, cart: s, updateCartMutation: T, checkoutMutation: ie, clearAndCreateNewCart: V } = be(), Y = Se({
48
- publicKey: le,
49
- onSuccess: async (t) => {
50
- try {
51
- const n = await C.mutateAsync({
52
- firstName: r.firstName,
53
- lastName: r.lastName,
54
- email: r.email,
55
- phone: r.phone,
56
- address: r.address,
57
- city: r.city,
58
- deliveryZoneId: g || r.deliveryZoneId,
59
- paymentMethod: r.paymentMethod,
60
- paystackReference: t.reference
61
- });
62
- if ("error" in n) {
63
- const i = n.error;
64
- c == null || c(new Error((i == null ? void 0 : i.message) || "Checkout failed"));
65
- return;
66
- }
67
- B(n), V(), f == null || f(n.id);
68
- } catch (n) {
69
- c == null || c(n);
70
- }
71
- },
72
- onClose: () => {
73
- console.log("Payment popup closed by user");
74
- }
75
- });
76
- q(() => {
77
- d && K();
78
- }, [d, K]);
79
- const { data: b } = ge(((J = s == null ? void 0 : s.brand) == null ? void 0 : J.id) || "", {
80
- enabled: !!((Q = s == null ? void 0 : s.brand) != null && Q.id)
81
- }), h = re(() => b == null ? void 0 : b.find((t) => t.id === Z), [b, Z]), C = ie;
82
- q(() => {
83
- d || (B(null), p("customer"), C.reset());
84
- }, [d]);
85
- const [r, _] = N({
86
- firstName: (l == null ? void 0 : l.firstName) || "",
87
- lastName: (l == null ? void 0 : l.lastName) || "",
88
- email: (l == null ? void 0 : l.email) || "",
89
- phone: (l == null ? void 0 : l.phone) || "",
90
- address: (l == null ? void 0 : l.address) || "",
91
- city: (l == null ? void 0 : l.city) || "",
92
- deliveryZoneId: (l == null ? void 0 : l.deliveryZoneId) || "",
93
- paymentMethod: (l == null ? void 0 : l.paymentMethod) || "online",
94
- notes: (l == null ? void 0 : l.notes) || ""
95
- });
96
- q(() => {
97
- d && p("customer");
98
- }, [d]);
99
- const [H, W] = N(!1);
100
- q(() => {
101
- d && s && !l && !H && (_((t) => {
102
- var n;
103
- return {
104
- ...t,
105
- firstName: s.customerFirstName || t.firstName,
106
- lastName: s.customerLastName || t.lastName,
107
- email: s.customerEmail || t.email,
108
- phone: s.customerPhone || t.phone,
109
- deliveryZoneId: ((n = s.deliveryZone) == null ? void 0 : n.id) || t.deliveryZoneId
110
- };
111
- }), W(!0)), d || W(!1);
112
- }, [d, s, l, H]), q(() => {
113
- if (g) {
114
- const t = h == null ? void 0 : h.zones.find((n) => n.id === g);
115
- t && _((n) => ({
116
- ...n,
117
- paymentMethod: t.allowOnline ? "online" : "cod"
118
- }));
119
- }
120
- }, [g, h]);
121
- const [m, j] = N({}), [A, ce] = N(!1), v = (t) => {
122
- const { name: n, value: i } = t.target;
123
- _((x) => ({ ...x, [n]: i })), m[n] && j((x) => ({ ...x, [n]: void 0 }));
124
- }, S = ve(
125
- (t) => {
126
- const n = r[t];
127
- if (!n) return;
128
- const i = {};
129
- t === "firstName" ? i.customerFirstName = n : t === "lastName" ? i.customerLastName = n : t === "email" ? i.customerEmail = n : t === "phone" && (i.customerPhone = n), T.mutate(i);
130
- },
131
- [r, T]
132
- ), z = (t) => {
133
- const n = {};
134
- try {
135
- if (t === "customer")
136
- Fe.validateSync(r, { abortEarly: !1 });
137
- else if (t === "delivery") {
138
- const i = {
139
- address: r.address,
140
- city: r.city,
141
- state: Z || r.state || "",
142
- deliveryZoneId: g || r.deliveryZoneId || ""
143
- };
144
- Le.validateSync(i, { abortEarly: !1 });
145
- } else t === "payment" && Be.validateSync(r, { abortEarly: !1 });
146
- } catch (i) {
147
- i instanceof Ne && i.inner.forEach((x) => {
148
- x.path && (n[x.path] = x.message);
149
- });
150
- }
151
- return j(n), Object.keys(n).length === 0;
152
- }, oe = () => {
153
- z(o) && (o === "customer" ? p("delivery") : o === "delivery" && p("payment"));
154
- }, me = () => {
155
- o === "payment" ? p("delivery") : o === "delivery" && p("customer");
156
- }, ue = async () => {
157
- if (!z("customer")) {
158
- p("customer");
159
- return;
26
+ var x, y, g;
27
+ const { cart: t, isLoading: c, error: h } = Z(), { trackInitiateCheckout: P } = Q(), [S, u] = X(!1);
28
+ b(() => (i ? document.body.style.overflow = "hidden" : document.body.style.overflow = "", () => {
29
+ document.body.style.overflow = "";
30
+ }), [i]), b(() => {
31
+ const s = (l) => {
32
+ l.key === "Escape" && i && r();
33
+ };
34
+ return window.addEventListener("keydown", s), () => window.removeEventListener("keydown", s);
35
+ }, [i, r]);
36
+ const q = ((x = t == null ? void 0 : t.pricing) == null ? void 0 : x.subtotal) || 0, p = ((y = t == null ? void 0 : t.pricing.discount) == null ? void 0 : y.amount) || 0, D = () => {
37
+ var s, l;
38
+ if (t) {
39
+ const T = ((s = t.items) == null ? void 0 : s.reduce((B, M) => B + M.quantity, 0)) || 0, Y = ((l = t.pricing) == null ? void 0 : l.total) || 0;
40
+ P(Y, T);
160
41
  }
161
- if (!z("delivery")) {
162
- p("delivery");
163
- return;
164
- }
165
- if (z("payment")) {
166
- if (r.paymentMethod === "online") {
167
- if (!Y.isLoaded) {
168
- c == null || c(new Error("Payment system is loading. Please try again."));
169
- return;
170
- }
171
- const t = Math.round(s.pricing.total * 100);
172
- Y.initializePayment({
173
- email: r.email || (s == null ? void 0 : s.customerEmail) || "customer@example.com",
174
- amount: t,
175
- currency: "NGN",
176
- metadata: {
177
- cartId: s == null ? void 0 : s.id,
178
- custom_fields: [
179
- {
180
- display_name: "Customer Name",
181
- variable_name: "customer_name",
182
- value: `${r.firstName} ${r.lastName}`
183
- },
184
- {
185
- display_name: "Phone Number",
186
- variable_name: "phone_number",
187
- value: r.phone
188
- }
189
- ]
190
- }
191
- });
192
- return;
193
- }
194
- try {
195
- const t = await C.mutateAsync({
196
- firstName: r.firstName,
197
- lastName: r.lastName,
198
- email: r.email,
199
- phone: r.phone,
200
- address: r.address,
201
- city: r.city,
202
- deliveryZoneId: g || r.deliveryZoneId,
203
- paymentMethod: r.paymentMethod
204
- });
205
- if ("error" in t) {
206
- const n = t.error;
207
- c == null || c(new Error((n == null ? void 0 : n.message) || "Checkout failed"));
208
- return;
209
- }
210
- B(t), V(), f == null || f(t.id);
211
- } catch (t) {
212
- c == null || c(t);
42
+ u(!0), o == null || o();
43
+ }, F = () => {
44
+ m == null || m(), r();
45
+ };
46
+ return /* @__PURE__ */ a(N, { children: [
47
+ /* @__PURE__ */ e(
48
+ "div",
49
+ {
50
+ className: n(
51
+ "fixed inset-0 z-40 bg-black/50 transition-opacity duration-300",
52
+ i ? "opacity-100" : "pointer-events-none opacity-0"
53
+ ),
54
+ onClick: r,
55
+ "aria-hidden": "true"
213
56
  }
214
- }
215
- }, he = {
216
- customer: "Customer Information",
217
- delivery: "Delivery Address",
218
- payment: "Payment Method"
219
- }, ye = re(() => he[o], [o]), fe = /* @__PURE__ */ a("div", { className: "space-y-3", children: [
220
- (o === "payment" || o === "delivery") && ((U = s == null ? void 0 : s.pricing) == null ? void 0 : U.total) && /* @__PURE__ */ a("div", { className: "text-sm text-black relative", children: [
221
- O && /* @__PURE__ */ e("div", { className: "absolute flex items-center justify-center inset-0 bg-white opacity-50", children: /* @__PURE__ */ e(R, { className: "animate-spin text-accent-500" }) }),
222
- /* @__PURE__ */ a("div", { className: "flex items-center justify-between font-medium", children: [
223
- /* @__PURE__ */ e("span", { children: "Subtotal" }),
224
- /* @__PURE__ */ e("span", { children: k(((X = s == null ? void 0 : s.pricing) == null ? void 0 : X.subtotal) ?? 0) })
225
- ] }),
226
- s.pricing.discount && /* @__PURE__ */ a("div", { className: "flex items-center justify-between font-medium", children: [
227
- /* @__PURE__ */ e("span", { children: "Discount" }),
228
- /* @__PURE__ */ a("span", { className: "text-green-600", children: [
229
- "-",
230
- k(((D = (E = s == null ? void 0 : s.pricing) == null ? void 0 : E.discount) == null ? void 0 : D.amount) ?? 0)
231
- ] })
232
- ] }),
233
- /* @__PURE__ */ a("div", { className: "flex items-center justify-between font-medium", children: [
234
- /* @__PURE__ */ e("span", { children: "Delivery Fee" }),
235
- /* @__PURE__ */ e("span", { children: k(((ee = s == null ? void 0 : s.pricing) == null ? void 0 : ee.deliveryCharge) ?? 0) })
236
- ] }),
237
- /* @__PURE__ */ e("hr", { className: "border-gray-200 my-2" }),
238
- /* @__PURE__ */ a("div", { className: "flex items-center justify-between font-medium", children: [
239
- /* @__PURE__ */ e("span", { children: "Total" }),
240
- /* @__PURE__ */ e("span", { children: k(((te = s == null ? void 0 : s.pricing) == null ? void 0 : te.total) ?? 0) })
241
- ] })
242
- ] }),
243
- /* @__PURE__ */ a("div", { className: "flex gap-3", children: [
244
- o !== "customer" && /* @__PURE__ */ a(
245
- L,
246
- {
247
- type: "button",
248
- variant: "outline",
249
- onClick: me,
250
- className: "flex-1 border-gray-400",
251
- size: "lg",
252
- children: [
253
- /* @__PURE__ */ e(xe, { className: "mr-2 h-4 w-4" }),
254
- "Back"
255
- ]
256
- }
257
- ),
258
- o !== "payment" ? /* @__PURE__ */ a(
259
- L,
260
- {
261
- type: "button",
262
- onClick: oe,
263
- className: "flex-1 bg-accent-500 text-white hover:bg-accent-600",
264
- size: "lg",
265
- children: [
266
- "Next",
267
- /* @__PURE__ */ e(we, { className: "ml-2 h-4 w-4" })
268
- ]
269
- }
270
- ) : /* @__PURE__ */ e(
271
- L,
272
- {
273
- type: "button",
274
- onClick: ue,
275
- disabled: C.isPending,
276
- className: "flex-1 bg-accent-500 text-white hover:bg-accent-600",
277
- size: "lg",
278
- children: C.isPending ? /* @__PURE__ */ a(pe, { children: [
279
- /* @__PURE__ */ e(R, { className: "mr-2 h-4 w-4 animate-spin" }),
280
- "Processing..."
281
- ] }) : ne
282
- }
283
- )
284
- ] }),
285
- C.isError && /* @__PURE__ */ e("div", { className: "rounded-lg bg-red-50 p-3 text-sm text-red-600", children: "Failed to place order. Please check your information and try again." })
286
- ] }), F = (t) => !(s != null && s.availablePaymentMethods.includes(t));
287
- return u ? /* @__PURE__ */ e(
288
- ae,
289
- {
290
- isOpen: d,
291
- onClose: M,
292
- title: "Order Placed Successfully!",
293
- footer: /* @__PURE__ */ e(
294
- L,
295
- {
296
- onClick: M,
297
- className: "w-full bg-accent-500 text-white hover:bg-accent-600",
298
- size: "lg",
299
- children: "Close"
300
- }
301
- ),
302
- size: "lg",
303
- contentClassName: "p-6",
304
- children: /* @__PURE__ */ a("div", { className: "text-center space-y-6", children: [
305
- /* @__PURE__ */ e("div", { className: "flex justify-center", children: /* @__PURE__ */ e("div", { className: "w-20 h-20 bg-green-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ e(Ce, { className: "h-12 w-12 text-green-600" }) }) }),
306
- /* @__PURE__ */ a("div", { className: "space-y-2", children: [
307
- /* @__PURE__ */ e("h3", { className: "text-2xl font-bold text-gray-900", children: "Thank You!" }),
308
- /* @__PURE__ */ e("p", { className: "text-gray-600", children: "Your order has been placed successfully." })
309
- ] }),
310
- /* @__PURE__ */ a("div", { className: "bg-gray-50 rounded-lg p-6 space-y-4", children: [
311
- /* @__PURE__ */ a("div", { className: "flex items-center justify-center space-x-2 text-gray-700", children: [
312
- /* @__PURE__ */ e(Pe, { className: "h-5 w-5" }),
313
- /* @__PURE__ */ a("span", { className: "font-medium", children: [
314
- "Order #",
315
- u.orderNumber
316
- ] })
317
- ] }),
318
- /* @__PURE__ */ a("div", { className: "border-t border-gray-200 pt-4 space-y-3", children: [
319
- /* @__PURE__ */ a("div", { className: "flex justify-between text-sm", children: [
320
- /* @__PURE__ */ e("span", { className: "text-gray-600", children: "Customer" }),
321
- /* @__PURE__ */ a("span", { className: "font-medium text-gray-900", children: [
322
- u.firstName,
323
- " ",
324
- u.lastName
325
- ] })
57
+ ),
58
+ /* @__PURE__ */ e(
59
+ "div",
60
+ {
61
+ className: n(
62
+ "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]",
63
+ i ? "translate-x-0" : "translate-x-full",
64
+ w
65
+ ),
66
+ children: /* @__PURE__ */ a("div", { className: "flex h-full flex-col", children: [
67
+ /* @__PURE__ */ e("div", { className: "border-b border-gray-300 px-4 py-2", children: /* @__PURE__ */ a("div", { className: "flex items-center justify-between", children: [
68
+ /* @__PURE__ */ a("div", { className: "flex items-center gap-2", children: [
69
+ /* @__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: (g = t == null ? void 0 : t.items) == null ? void 0 : g.length }),
70
+ /* @__PURE__ */ e("h2", { className: "text-lg font-medium", children: "Your Cart" })
326
71
  ] }),
327
- /* @__PURE__ */ a("div", { className: "flex justify-between text-sm", children: [
328
- /* @__PURE__ */ e("span", { className: "text-gray-600", children: "Phone" }),
329
- /* @__PURE__ */ e("span", { className: "font-medium text-gray-900", children: u.phone })
330
- ] }),
331
- u.email && /* @__PURE__ */ a("div", { className: "flex justify-between text-sm", children: [
332
- /* @__PURE__ */ e("span", { className: "text-gray-600", children: "Email" }),
333
- /* @__PURE__ */ e("span", { className: "font-medium text-gray-900", children: u.email })
334
- ] }),
335
- /* @__PURE__ */ a("div", { className: "flex justify-between text-sm", children: [
336
- /* @__PURE__ */ e("span", { className: "text-gray-600", children: "Payment Method" }),
337
- /* @__PURE__ */ e("span", { className: "font-medium text-gray-900", children: u.paymentMethod === "cod" ? "Cash on Delivery" : "Online Payment" })
338
- ] }),
339
- /* @__PURE__ */ a("div", { className: "flex justify-between text-sm", children: [
340
- /* @__PURE__ */ e("span", { className: "text-gray-600", children: "Total" }),
341
- /* @__PURE__ */ e("span", { className: "font-bold text-gray-900", children: k(u.totalPrice) })
342
- ] })
343
- ] })
344
- ] }),
345
- /* @__PURE__ */ e("div", { className: "bg-blue-50 rounded-lg p-4", children: /* @__PURE__ */ a("p", { className: "text-sm text-blue-900", children: [
346
- /* @__PURE__ */ e("span", { className: "font-semibold", children: "We'll be in touch shortly!" }),
347
- /* @__PURE__ */ e("br", {}),
348
- "Our team will contact you soon to arrange delivery and confirm your order details."
349
- ] }) })
350
- ] })
351
- }
352
- ) : /* @__PURE__ */ e(
353
- ae,
354
- {
355
- isOpen: d,
356
- onClose: M,
357
- title: ye,
358
- footer: fe,
359
- size: "lg",
360
- contentClassName: "p-0",
361
- children: O ? /* @__PURE__ */ e("div", { className: "flex items-center justify-center min-h-[300px]", children: /* @__PURE__ */ e(R, { className: "h-8 w-8 animate-spin text-gray-600" }) }) : /* @__PURE__ */ e("div", { className: "w-full overflow-hidden", children: /* @__PURE__ */ e("div", { className: "relative w-full", children: /* @__PURE__ */ a(
362
- "div",
363
- {
364
- className: w(
365
- "flex transition-transform duration-300 ease-in-out w-full",
366
- o === "customer" && "translate-x-0",
367
- o === "delivery" && "-translate-x-full",
368
- o === "payment" && "-translate-x-[200%]"
369
- ),
370
- children: [
371
- /* @__PURE__ */ e("div", { className: "w-full min-w-full flex-shrink-0 p-4", children: /* @__PURE__ */ e("div", { className: "space-y-4", children: /* @__PURE__ */ a("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
372
- /* @__PURE__ */ e(
373
- P,
374
- {
375
- label: "First Name",
376
- type: "text",
377
- name: "firstName",
378
- value: r.firstName,
379
- onChange: v,
380
- onBlur: () => S("firstName"),
381
- error: m.firstName,
382
- autoCorrect: "off",
383
- required: !0
384
- }
385
- ),
386
- /* @__PURE__ */ e(
387
- P,
388
- {
389
- label: "Last Name",
390
- type: "text",
391
- name: "lastName",
392
- value: r.lastName,
393
- onChange: v,
394
- onBlur: () => S("lastName"),
395
- error: m.lastName,
396
- autoCorrect: "off",
397
- required: !0
398
- }
399
- ),
400
- /* @__PURE__ */ e(
401
- P,
402
- {
403
- label: "Email",
404
- type: "email",
405
- name: "email",
406
- value: r.email,
407
- onChange: v,
408
- onBlur: () => S("email"),
409
- error: m.email,
410
- icon: /* @__PURE__ */ e(ke, { size: 16 }),
411
- autoCorrect: "off",
412
- required: !0
413
- }
414
- ),
415
- /* @__PURE__ */ e(
416
- P,
417
- {
418
- label: "Phone Number",
419
- type: "tel",
420
- name: "phone",
421
- value: r.phone,
422
- onChange: v,
423
- onBlur: () => S("phone"),
424
- placeholder: "e.g. 08012345678",
425
- maxLength: 18,
426
- error: m.phone,
427
- icon: /* @__PURE__ */ e(Me, { size: 16 }),
428
- autoCorrect: "off",
429
- required: !0,
430
- className: "font-semibold"
431
- }
432
- )
433
- ] }) }) }),
434
- /* @__PURE__ */ e("div", { className: "w-full min-w-full flex-shrink-0 p-4", children: /* @__PURE__ */ a("div", { className: "space-y-4", children: [
435
- /* @__PURE__ */ e(
436
- P,
437
- {
438
- label: "Street Address",
439
- type: "text",
440
- name: "address",
441
- value: r.address,
442
- onChange: v,
443
- error: m.address,
444
- autoCorrect: "off",
445
- required: !0
446
- }
447
- ),
448
- /* @__PURE__ */ a("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
72
+ /* @__PURE__ */ e(
73
+ "button",
74
+ {
75
+ onClick: r,
76
+ className: "rounded-full p-2 transition-colors hover:bg-gray-100",
77
+ "aria-label": "Close cart",
78
+ children: /* @__PURE__ */ e(J, { className: "h-6 w-6" })
79
+ }
80
+ )
81
+ ] }) }),
82
+ c && /* @__PURE__ */ e("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ a("div", { className: "text-center", children: [
83
+ /* @__PURE__ */ e(K, { className: "mx-auto mb-4 h-12 w-12 animate-spin text-accent-500" }),
84
+ /* @__PURE__ */ e("p", { className: "text-gray-600", children: "Loading cart..." })
85
+ ] }) }),
86
+ h && !c && /* @__PURE__ */ e("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ a("div", { className: "text-center", children: [
87
+ /* @__PURE__ */ e(f, { className: "mx-auto mb-4 h-12 w-12 text-red-600" }),
88
+ /* @__PURE__ */ e("p", { className: "text-red-600", children: "Failed to load cart. Please try again." })
89
+ ] }) }),
90
+ !c && !h && (!t || !t.items || t.items.length === 0) && /* @__PURE__ */ e("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ a("div", { className: "text-center", children: [
91
+ /* @__PURE__ */ e(f, { className: "mx-auto mb-4 h-12 w-12 text-gray-400" }),
92
+ /* @__PURE__ */ e("p", { className: "text-gray-600", children: I })
93
+ ] }) }),
94
+ !c && !h && t && t.items && t.items.length > 0 && /* @__PURE__ */ a(N, { children: [
95
+ /* @__PURE__ */ a("div", { className: "flex-1 overflow-y-auto p-4", children: [
96
+ /* @__PURE__ */ e("div", { className: "space-y-4", children: t.items.map((s, l) => /* @__PURE__ */ a("div", { children: [
449
97
  /* @__PURE__ */ e(
450
- P,
98
+ A,
451
99
  {
452
- label: "Area",
453
- type: "text",
454
- name: "city",
455
- value: r.city,
456
- onChange: v,
457
- error: m.city,
458
- autoCorrect: "off",
459
- required: !0
100
+ item: s
460
101
  }
461
102
  ),
462
- /* @__PURE__ */ a(
463
- se,
464
- {
465
- label: "State",
466
- name: "state",
467
- value: Z || "",
468
- onChange: (t) => {
469
- G("");
470
- const n = t.target.value;
471
- de(n || void 0), m.state && j((i) => ({ ...i, state: void 0 }));
472
- },
473
- error: m.state,
474
- required: !0,
475
- children: [
476
- /* @__PURE__ */ e("option", { disabled: !0, value: "", children: "Select State" }),
477
- b == null ? void 0 : b.map((t) => /* @__PURE__ */ e("option", { value: t.id, children: t.name }, t.id))
478
- ]
479
- }
480
- ),
481
- /* @__PURE__ */ a(
482
- se,
483
- {
484
- label: "Delivery Zone",
485
- value: g || "",
486
- onChange: (t) => {
487
- const n = t.target.value;
488
- G(n || void 0), m.deliveryZoneId && j((i) => ({ ...i, deliveryZoneId: void 0 })), n && T.mutate({ deliveryZoneId: n });
489
- },
490
- disabled: !h,
491
- error: m.deliveryZoneId,
492
- required: !0,
493
- children: [
494
- /* @__PURE__ */ e("option", { disabled: !0, value: "", children: h ? "Select Delivery Zone" : "Select State First" }),
495
- h == null ? void 0 : h.zones.map((t) => /* @__PURE__ */ a("option", { value: t.id, children: [
496
- t.name,
497
- " (",
498
- k(t.deliveryCost),
499
- ")"
500
- ] }, t.id))
501
- ]
502
- }
503
- )
504
- ] })
505
- ] }) }),
506
- /* @__PURE__ */ e("div", { className: "w-full min-w-full flex-shrink-0 p-4", children: /* @__PURE__ */ a("div", { className: "space-y-6", children: [
507
- /* @__PURE__ */ a("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4", children: [
508
- /* @__PURE__ */ e("div", { className: "relative", children: /* @__PURE__ */ a(
509
- "label",
510
- {
511
- className: w(
512
- "flex items-center justify-center relative p-4 border-2 rounded-xl cursor-pointer transition-all duration-200",
513
- r.paymentMethod === "online" ? "border-accent-500 bg-accent-50" : "border-gray-200 hover:border-gray-300",
514
- F("online") && "opacity-50 cursor-not-allowed"
515
- ),
516
- children: [
517
- /* @__PURE__ */ e(
518
- "input",
519
- {
520
- type: "radio",
521
- name: "paymentMethod",
522
- value: "online",
523
- disabled: F("online"),
524
- checked: r.paymentMethod === "online",
525
- onChange: v,
526
- className: "sr-only"
527
- }
528
- ),
529
- /* @__PURE__ */ a("div", { className: "flex flex-col items-center text-center space-y-3", children: [
530
- /* @__PURE__ */ e(
531
- "div",
532
- {
533
- className: w(
534
- "p-3 rounded-full",
535
- r.paymentMethod === "online" ? "bg-accent-100 text-accent-600" : "bg-gray-100 text-gray-600"
536
- ),
537
- children: /* @__PURE__ */ e(qe, { size: 24 })
538
- }
539
- ),
540
- /* @__PURE__ */ a("div", { children: [
541
- /* @__PURE__ */ e("div", { className: "font-semibold text-gray-900", children: "Pay Online" }),
542
- /* @__PURE__ */ e("div", { className: "text-sm text-gray-500 mt-1", children: "Bank transfer" }),
543
- /* @__PURE__ */ e(
544
- "img",
545
- {
546
- src: je,
547
- alt: "Paystack",
548
- className: "h-4 w-auto mt-2 mx-auto"
549
- }
550
- )
551
- ] })
552
- ] }),
553
- r.paymentMethod === "online" && /* @__PURE__ */ e("div", { className: "absolute top-2 right-2", children: /* @__PURE__ */ e("div", { className: "w-5 h-5 bg-accent-600 rounded-full flex items-center justify-center", children: /* @__PURE__ */ e("div", { className: "w-2 h-2 bg-white rounded-full" }) }) })
554
- ]
555
- }
556
- ) }),
557
- /* @__PURE__ */ a(
558
- "label",
559
- {
560
- className: w(
561
- "flex items-center justify-center relative p-4 border-2 rounded-xl cursor-pointer transition-all duration-200",
562
- r.paymentMethod === "cod" ? "border-accent-500 bg-accent-50" : "border-gray-200 hover:border-gray-300",
563
- F("cod") && "opacity-50 cursor-not-allowed"
564
- ),
565
- children: [
566
- /* @__PURE__ */ e(
567
- "input",
568
- {
569
- type: "radio",
570
- name: "paymentMethod",
571
- value: "cod",
572
- disabled: F("cod"),
573
- checked: r.paymentMethod === "cod",
574
- onChange: v,
575
- className: "sr-only"
576
- }
577
- ),
578
- /* @__PURE__ */ a("div", { className: "flex flex-col items-center text-center space-y-3", children: [
579
- /* @__PURE__ */ e(
580
- "div",
581
- {
582
- className: w(
583
- "p-3 rounded-full",
584
- r.paymentMethod === "cod" ? "bg-accent-100 text-accent-600" : "bg-gray-100 text-gray-600"
585
- ),
586
- children: /* @__PURE__ */ e(Ie, { size: 24 })
587
- }
588
- ),
589
- /* @__PURE__ */ a("div", { children: [
590
- /* @__PURE__ */ e("div", { className: "font-semibold text-gray-900", children: "Pay on Delivery" }),
591
- /* @__PURE__ */ e("div", { className: "text-sm text-gray-500 mt-1", children: "Cash when item arrives" })
592
- ] })
593
- ] }),
594
- r.paymentMethod === "cod" && /* @__PURE__ */ e("div", { className: "absolute top-2 right-2", children: /* @__PURE__ */ e("div", { className: "w-5 h-5 bg-accent-600 rounded-full flex items-center justify-center", children: /* @__PURE__ */ e("div", { className: "w-2 h-2 bg-white rounded-full" }) }) })
595
- ]
596
- }
597
- )
103
+ l < t.items.length - 1 && /* @__PURE__ */ e("hr", { className: "border-gray-200 mt-2" })
104
+ ] }, s.id)) }),
105
+ k && /* @__PURE__ */ e("div", { className: "mt-6", children: /* @__PURE__ */ e(G, {}) })
106
+ ] }),
107
+ /* @__PURE__ */ a("div", { className: "border-t border-gray-300 bg-white", children: [
108
+ /* @__PURE__ */ a("div", { className: " text-base", children: [
109
+ /* @__PURE__ */ a("div", { className: "p-4 space-y-2", children: [
110
+ /* @__PURE__ */ a("div", { className: "flex justify-between", children: [
111
+ /* @__PURE__ */ e("span", { className: "text-gray-600", children: "Subtotal" }),
112
+ /* @__PURE__ */ e("span", { className: "font-semibold", children: d(q) })
113
+ ] }),
114
+ p > 0 && /* @__PURE__ */ a("div", { className: "flex justify-between text-green-600", children: [
115
+ /* @__PURE__ */ e("span", { children: "Discount" }),
116
+ /* @__PURE__ */ a("span", { className: "font-semibold", children: [
117
+ "-",
118
+ d(p)
119
+ ] })
120
+ ] }),
121
+ /* @__PURE__ */ a("div", { className: "flex justify-between", children: [
122
+ /* @__PURE__ */ e("span", { className: "text-gray-600", children: "Shipping" }),
123
+ /* @__PURE__ */ e("span", { className: "font-semibold", children: t.pricing && t.deliveryZone ? d(t.pricing.deliveryCharge) : "-" })
124
+ ] })
125
+ ] }),
126
+ /* @__PURE__ */ a("div", { className: "flex justify-between p-4 border-t border-gray-300 text-lg", children: [
127
+ /* @__PURE__ */ e("span", { className: "font-bold", children: "Total" }),
128
+ /* @__PURE__ */ e("span", { className: "font-bold", children: d(t.pricing.total) })
129
+ ] })
598
130
  ] }),
599
- m.paymentMethod && /* @__PURE__ */ e("p", { className: "text-red-600 text-sm", children: m.paymentMethod }),
600
- I && /* @__PURE__ */ a("div", { className: "border border-gray-200 rounded-lg", children: [
131
+ /* @__PURE__ */ a("div", { className: "p-4 space-y-2", children: [
601
132
  /* @__PURE__ */ a(
602
- "button",
133
+ v,
603
134
  {
604
- type: "button",
605
- onClick: () => ce(!A),
606
- className: "overflow-hidden w-full flex items-center overflow-hidden rounded-lg rounded-b-none justify-between p-4 text-left hover:bg-gray-50 transition-colors",
135
+ onClick: D,
136
+ disabled: z || t.items.length === 0,
137
+ className: n("w-full bg-accent-500 text-white hover:bg-accent-600", E),
138
+ size: "lg",
607
139
  children: [
608
- /* @__PURE__ */ e("span", { className: "text-sm font-medium text-gray-700", children: I.title || "🤔 Curious about Refunds?" }),
609
- /* @__PURE__ */ e(
610
- Ze,
611
- {
612
- size: 16,
613
- className: w(
614
- "transform transition-transform duration-200 text-gray-500",
615
- A && "rotate-180"
616
- )
617
- }
618
- )
140
+ /* @__PURE__ */ e(f, { className: "h-5 w-5" }),
141
+ j
619
142
  ]
620
143
  }
621
144
  ),
622
145
  /* @__PURE__ */ e(
623
- "div",
146
+ v,
624
147
  {
625
- className: w(
626
- "overflow-hidden transition-all duration-300 ease-in-out",
627
- A ? "max-h-96 opacity-100" : "max-h-0 opacity-0"
628
- ),
629
- children: /* @__PURE__ */ e("div", { className: "px-4 pb-4 border-t border-gray-100", children: /* @__PURE__ */ e("div", { className: "text-sm text-gray-600 space-y-3 pt-4", children: I.policies && /* @__PURE__ */ a("div", { children: [
630
- /* @__PURE__ */ e("h4", { className: "font-bold text-gray-800 mb-2", children: "Our Refund Policy" }),
631
- /* @__PURE__ */ e("ul", { className: "space-y-1 ml-4", children: I.policies.map((t, n) => /* @__PURE__ */ a("li", { className: "flex items-start", children: [
632
- /* @__PURE__ */ e("span", { className: "text-green-600 mr-2", children: "✓" }),
633
- /* @__PURE__ */ e("span", { children: t })
634
- ] }, n)) })
635
- ] }) }) })
148
+ onClick: F,
149
+ variant: "outline",
150
+ className: n("w-full border-gray-300 text-gray-600 hover:bg-gray-100", L),
151
+ size: "lg",
152
+ children: C
636
153
  }
637
154
  )
638
155
  ] })
639
- ] }) })
640
- ]
641
- }
642
- ) }) })
643
- }
644
- );
156
+ ] })
157
+ ] })
158
+ ] })
159
+ }
160
+ ),
161
+ /* @__PURE__ */ e(
162
+ H,
163
+ {
164
+ isOpen: S,
165
+ onSuccess: () => r(),
166
+ onClose: () => u(!1)
167
+ }
168
+ )
169
+ ] });
645
170
  }
646
171
  export {
647
- Ee as Checkout
172
+ se as ShoppingCart
648
173
  };