@instockng/storefront-ui 1.0.90 → 1.0.91

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