@burdenoff/microfe-adaptercloud 2026.625.2 → 2026.628.1

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 (153) hide show
  1. package/dist/adaptercloud/AdapterCloudRoot.js +65 -121
  2. package/dist/adaptercloud/AdapterCloudRoot.js.map +1 -1
  3. package/dist/adaptercloud/AdapterCloudRoutes.js +70 -182
  4. package/dist/adaptercloud/AdapterCloudRoutes.js.map +1 -1
  5. package/dist/adaptercloud/components/DataState.js +42 -0
  6. package/dist/adaptercloud/components/DataState.js.map +1 -0
  7. package/dist/adaptercloud/components/SeverityBadge.js +12 -0
  8. package/dist/adaptercloud/components/SeverityBadge.js.map +1 -0
  9. package/dist/adaptercloud/components/StatusBadge.js +43 -44
  10. package/dist/adaptercloud/components/StatusBadge.js.map +1 -1
  11. package/dist/adaptercloud/context/AdapterCloudContext.js +22 -30
  12. package/dist/adaptercloud/context/AdapterCloudContext.js.map +1 -1
  13. package/dist/adaptercloud/hooks/useAdapterCloudApi.js +397 -194
  14. package/dist/adaptercloud/hooks/useAdapterCloudApi.js.map +1 -1
  15. package/dist/adaptercloud/index.js +1 -0
  16. package/dist/adaptercloud/pages/OverviewPage.js +334 -0
  17. package/dist/adaptercloud/pages/OverviewPage.js.map +1 -0
  18. package/dist/adaptercloud/pages/adapters/AdapterDetailPage.js +187 -0
  19. package/dist/adaptercloud/pages/adapters/AdapterDetailPage.js.map +1 -0
  20. package/dist/adaptercloud/pages/adapters/AdapterFormPage.js +278 -0
  21. package/dist/adaptercloud/pages/adapters/AdapterFormPage.js.map +1 -0
  22. package/dist/adaptercloud/pages/adapters/AdaptersListPage.js +172 -0
  23. package/dist/adaptercloud/pages/adapters/AdaptersListPage.js.map +1 -0
  24. package/dist/adaptercloud/pages/connections/ConnectionDetailPage.js +247 -0
  25. package/dist/adaptercloud/pages/connections/ConnectionDetailPage.js.map +1 -0
  26. package/dist/adaptercloud/pages/connections/ConnectionFormPage.js +271 -0
  27. package/dist/adaptercloud/pages/connections/ConnectionFormPage.js.map +1 -0
  28. package/dist/adaptercloud/pages/connections/ConnectionsListPage.js +167 -0
  29. package/dist/adaptercloud/pages/connections/ConnectionsListPage.js.map +1 -0
  30. package/dist/adaptercloud/pages/costs/CostsPage.js +169 -0
  31. package/dist/adaptercloud/pages/costs/CostsPage.js.map +1 -0
  32. package/dist/adaptercloud/pages/drift/DriftListPage.js +132 -0
  33. package/dist/adaptercloud/pages/drift/DriftListPage.js.map +1 -0
  34. package/dist/adaptercloud/pages/policies/PoliciesListPage.js +171 -0
  35. package/dist/adaptercloud/pages/policies/PoliciesListPage.js.map +1 -0
  36. package/dist/adaptercloud/pages/policies/PolicyDetailPage.js +185 -0
  37. package/dist/adaptercloud/pages/policies/PolicyDetailPage.js.map +1 -0
  38. package/dist/adaptercloud/pages/policies/PolicyFormPage.js +215 -0
  39. package/dist/adaptercloud/pages/policies/PolicyFormPage.js.map +1 -0
  40. package/dist/adaptercloud/pages/resources/ResourceDetailPage.js +207 -0
  41. package/dist/adaptercloud/pages/resources/ResourceDetailPage.js.map +1 -0
  42. package/dist/adaptercloud/pages/resources/ResourcesListPage.js +182 -0
  43. package/dist/adaptercloud/pages/resources/ResourcesListPage.js.map +1 -0
  44. package/dist/adaptercloud/pages/sync-runs/SyncRunsListPage.js +196 -0
  45. package/dist/adaptercloud/pages/sync-runs/SyncRunsListPage.js.map +1 -0
  46. package/dist/adaptercloud/pages/violations/ViolationsListPage.js +258 -0
  47. package/dist/adaptercloud/pages/violations/ViolationsListPage.js.map +1 -0
  48. package/dist/adaptercloud/store/adaptercloudStore.js +1 -7
  49. package/dist/adaptercloud/store/adaptercloudStore.js.map +1 -1
  50. package/dist/adaptercloud/utils/domain.js +105 -0
  51. package/dist/adaptercloud/utils/domain.js.map +1 -0
  52. package/dist/adaptercloud/utils/formatters.js +1 -12
  53. package/dist/adaptercloud/utils/formatters.js.map +1 -1
  54. package/dist/index.js +5 -4
  55. package/package.json +1 -1
  56. package/dist/adaptercloud/components/InvestmentCard.js +0 -98
  57. package/dist/adaptercloud/components/InvestmentCard.js.map +0 -1
  58. package/dist/adaptercloud/components/RatingDisplay.js +0 -35
  59. package/dist/adaptercloud/components/RatingDisplay.js.map +0 -1
  60. package/dist/adaptercloud/mocks/data.js +0 -1517
  61. package/dist/adaptercloud/mocks/data.js.map +0 -1
  62. package/dist/adaptercloud/mocks/users.js +0 -34
  63. package/dist/adaptercloud/mocks/users.js.map +0 -1
  64. package/dist/adaptercloud/pages/HomePage.js +0 -934
  65. package/dist/adaptercloud/pages/HomePage.js.map +0 -1
  66. package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js +0 -653
  67. package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js.map +0 -1
  68. package/dist/adaptercloud/pages/admin/AdminDashboard.js +0 -665
  69. package/dist/adaptercloud/pages/admin/AdminDashboard.js.map +0 -1
  70. package/dist/adaptercloud/pages/admin/AdminFinancialPage.js +0 -426
  71. package/dist/adaptercloud/pages/admin/AdminFinancialPage.js.map +0 -1
  72. package/dist/adaptercloud/pages/admin/AdminOrdersPage.js +0 -665
  73. package/dist/adaptercloud/pages/admin/AdminOrdersPage.js.map +0 -1
  74. package/dist/adaptercloud/pages/admin/AdminProfilePage.js +0 -261
  75. package/dist/adaptercloud/pages/admin/AdminProfilePage.js.map +0 -1
  76. package/dist/adaptercloud/pages/admin/AdminSettingsPage.js +0 -663
  77. package/dist/adaptercloud/pages/admin/AdminSettingsPage.js.map +0 -1
  78. package/dist/adaptercloud/pages/admin/CartManagementPage.js +0 -874
  79. package/dist/adaptercloud/pages/admin/CartManagementPage.js.map +0 -1
  80. package/dist/adaptercloud/pages/admin/UserManagementPage.js +0 -898
  81. package/dist/adaptercloud/pages/admin/UserManagementPage.js.map +0 -1
  82. package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js +0 -840
  83. package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js.map +0 -1
  84. package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js +0 -714
  85. package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js.map +0 -1
  86. package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js +0 -788
  87. package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js.map +0 -1
  88. package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js +0 -888
  89. package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js.map +0 -1
  90. package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js +0 -634
  91. package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js.map +0 -1
  92. package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js +0 -907
  93. package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js.map +0 -1
  94. package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js +0 -875
  95. package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js.map +0 -1
  96. package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js +0 -827
  97. package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js.map +0 -1
  98. package/dist/adaptercloud/pages/common/HelpSupportPage.js +0 -1329
  99. package/dist/adaptercloud/pages/common/HelpSupportPage.js.map +0 -1
  100. package/dist/adaptercloud/pages/common/NotificationCenterPage.js +0 -671
  101. package/dist/adaptercloud/pages/common/NotificationCenterPage.js.map +0 -1
  102. package/dist/adaptercloud/pages/common/SettingsPage.js +0 -982
  103. package/dist/adaptercloud/pages/common/SettingsPage.js.map +0 -1
  104. package/dist/adaptercloud/pages/customer/BookingDetailsPage.js +0 -596
  105. package/dist/adaptercloud/pages/customer/BookingDetailsPage.js.map +0 -1
  106. package/dist/adaptercloud/pages/customer/CartDetailPage.js +0 -623
  107. package/dist/adaptercloud/pages/customer/CartDetailPage.js.map +0 -1
  108. package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js +0 -552
  109. package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js.map +0 -1
  110. package/dist/adaptercloud/pages/customer/CheckoutPage.js +0 -534
  111. package/dist/adaptercloud/pages/customer/CheckoutPage.js.map +0 -1
  112. package/dist/adaptercloud/pages/customer/CustomerDashboard.js +0 -525
  113. package/dist/adaptercloud/pages/customer/CustomerDashboard.js.map +0 -1
  114. package/dist/adaptercloud/pages/customer/CustomerProfilePage.js +0 -623
  115. package/dist/adaptercloud/pages/customer/CustomerProfilePage.js.map +0 -1
  116. package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js +0 -629
  117. package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js.map +0 -1
  118. package/dist/adaptercloud/pages/customer/FavoritesPage.js +0 -480
  119. package/dist/adaptercloud/pages/customer/FavoritesPage.js.map +0 -1
  120. package/dist/adaptercloud/pages/customer/OrderHistoryPage.js +0 -444
  121. package/dist/adaptercloud/pages/customer/OrderHistoryPage.js.map +0 -1
  122. package/dist/adaptercloud/pages/customer/OrderTrackingPage.js +0 -391
  123. package/dist/adaptercloud/pages/customer/OrderTrackingPage.js.map +0 -1
  124. package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js +0 -504
  125. package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js.map +0 -1
  126. package/dist/adaptercloud/pages/customer/ReviewsPage.js +0 -609
  127. package/dist/adaptercloud/pages/customer/ReviewsPage.js.map +0 -1
  128. package/dist/adaptercloud/pages/customer/SavedAddressesPage.js +0 -459
  129. package/dist/adaptercloud/pages/customer/SavedAddressesPage.js.map +0 -1
  130. package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js +0 -851
  131. package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js.map +0 -1
  132. package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js +0 -942
  133. package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js.map +0 -1
  134. package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js +0 -683
  135. package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js.map +0 -1
  136. package/dist/adaptercloud/pages/investor/InvestorDashboard.js +0 -452
  137. package/dist/adaptercloud/pages/investor/InvestorDashboard.js.map +0 -1
  138. package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js +0 -402
  139. package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js.map +0 -1
  140. package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js +0 -571
  141. package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js.map +0 -1
  142. package/dist/adaptercloud/pages/investor/InvestorProfilePage.js +0 -1067
  143. package/dist/adaptercloud/pages/investor/InvestorProfilePage.js.map +0 -1
  144. package/dist/adaptercloud/pages/worker/TaskDetailsPage.js +0 -526
  145. package/dist/adaptercloud/pages/worker/TaskDetailsPage.js.map +0 -1
  146. package/dist/adaptercloud/pages/worker/WorkerDashboard.js +0 -659
  147. package/dist/adaptercloud/pages/worker/WorkerDashboard.js.map +0 -1
  148. package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js +0 -678
  149. package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js.map +0 -1
  150. package/dist/adaptercloud/pages/worker/WorkerProfilePage.js +0 -689
  151. package/dist/adaptercloud/pages/worker/WorkerProfilePage.js.map +0 -1
  152. package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js +0 -582
  153. package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js.map +0 -1
@@ -1,504 +0,0 @@
1
- import { useAdapterCloud as e } from "../../context/AdapterCloudContext.js";
2
- import { cn as t } from "../../utils/cn.js";
3
- import { PageLayout as n } from "../../components/PageLayout.js";
4
- import { EmptyState as r } from "../../components/EmptyState.js";
5
- import { useState as i } from "react";
6
- import { Banknote as a, CheckCircle2 as o, CreditCard as s, Plus as c, Shield as l, ShoppingCart as u, Smartphone as d, Trash2 as f, Wallet as p, X as m } from "lucide-react";
7
- import { jsx as h, jsxs as g } from "react/jsx-runtime";
8
- import { EmphasisPanel as _ } from "@burdenoff/fe-libs/ui";
9
- //#region src/adaptercloud/pages/customer/PaymentMethodsPage.tsx
10
- var v = [
11
- {
12
- id: "pm-1",
13
- type: "upi",
14
- label: "Google Pay",
15
- detail: "priya@okaxis",
16
- icon: d,
17
- isDefault: !0
18
- },
19
- {
20
- id: "pm-2",
21
- type: "upi",
22
- label: "PhonePe",
23
- detail: "priya@ybl",
24
- icon: d,
25
- isDefault: !1
26
- },
27
- {
28
- id: "pm-3",
29
- type: "card",
30
- label: "HDFC Credit Card",
31
- detail: "**** **** **** 4242",
32
- icon: s,
33
- isDefault: !1
34
- },
35
- {
36
- id: "pm-4",
37
- type: "card",
38
- label: "SBI Debit Card",
39
- detail: "**** **** **** 8765",
40
- icon: s,
41
- isDefault: !1
42
- },
43
- {
44
- id: "pm-5",
45
- type: "wallet",
46
- label: "AdapterCloud Wallet",
47
- detail: "Balance: ₹ 1,250.00",
48
- icon: p,
49
- isDefault: !1
50
- }
51
- ];
52
- function y({ method: e, onRemove: n, onSetDefault: r }) {
53
- let i = e.icon;
54
- return /* @__PURE__ */ g("div", {
55
- className: t("flex items-center gap-4 rounded-lg border p-4", e.isDefault ? "border-foreground/30 bg-accent/50" : "border-border-subtle bg-bg-surface"),
56
- children: [
57
- /* @__PURE__ */ h("div", {
58
- className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-bg-sunken",
59
- children: /* @__PURE__ */ h(i, { className: "h-5 w-5 text-text-secondary" })
60
- }),
61
- /* @__PURE__ */ g("div", {
62
- className: "flex-1 min-w-0",
63
- children: [/* @__PURE__ */ g("div", {
64
- className: "flex items-center gap-2",
65
- children: [/* @__PURE__ */ h("p", {
66
- className: "text-sm font-medium text-text-primary",
67
- children: e.label
68
- }), e.isDefault && /* @__PURE__ */ g("span", {
69
- className: "inline-flex items-center gap-1 rounded-full bg-status-success-bg-subtle/10 px-2 py-0.5 text-[10px] font-medium text-status-success-text",
70
- children: [/* @__PURE__ */ h(o, { className: "h-3 w-3" }), "Default"]
71
- })]
72
- }), /* @__PURE__ */ h("p", {
73
- className: "mt-0.5 text-xs text-text-secondary font-mono",
74
- children: e.detail
75
- })]
76
- }),
77
- /* @__PURE__ */ g("div", {
78
- className: "flex items-center gap-1",
79
- children: [!e.isDefault && /* @__PURE__ */ h("button", {
80
- type: "button",
81
- onClick: () => r(e.id),
82
- title: "Set as default",
83
- className: "rounded-md px-2 py-1 text-xs text-text-secondary hover:bg-accent hover:text-text-primary transition-colors",
84
- children: "Set Default"
85
- }), /* @__PURE__ */ h("button", {
86
- type: "button",
87
- onClick: () => n(e.id),
88
- title: "Remove payment method",
89
- className: "rounded-md p-2 text-text-secondary hover:bg-status-error-bg/10 hover:text-status-error-text transition-colors",
90
- children: /* @__PURE__ */ h(f, { className: "h-4 w-4" })
91
- })]
92
- })
93
- ]
94
- });
95
- }
96
- function b() {
97
- let { navigateTo: f } = e(), [b, x] = i(v), [S, C] = i(!1), [w, T] = i("card"), [E, D] = i(null), [O, k] = i({
98
- cardNumber: "",
99
- expiry: "",
100
- cvv: "",
101
- nameOnCard: ""
102
- }), [A, j] = i({ upiId: "" }), [M, N] = i({
103
- walletProvider: "Paytm",
104
- mobile: ""
105
- }), P = (e) => {
106
- D(e), setTimeout(() => D(null), 3e3);
107
- }, F = () => {
108
- k({
109
- cardNumber: "",
110
- expiry: "",
111
- cvv: "",
112
- nameOnCard: ""
113
- }), j({ upiId: "" }), N({
114
- walletProvider: "Paytm",
115
- mobile: ""
116
- }), T("card");
117
- }, I = (e) => {
118
- x((t) => t.filter((t) => t.id !== e)), P("Payment method removed");
119
- }, L = (e) => {
120
- x((t) => t.map((t) => ({
121
- ...t,
122
- isDefault: t.id === e
123
- }))), P("Default payment method updated");
124
- }, R = () => {
125
- let e = "", t = "", n = s;
126
- if (w === "card") {
127
- if (!O.cardNumber.trim() || !O.expiry.trim() || !O.cvv.trim() || !O.nameOnCard.trim()) {
128
- alert("Please fill in all card fields.");
129
- return;
130
- }
131
- e = `${O.nameOnCard}'s Card`, t = `**** **** **** ${O.cardNumber.slice(-4)}`, n = s;
132
- } else if (w === "upi") {
133
- if (!A.upiId.trim()) {
134
- alert("Please enter a UPI ID.");
135
- return;
136
- }
137
- e = "UPI", t = A.upiId, n = d;
138
- } else {
139
- if (!M.mobile.trim()) {
140
- alert("Please enter mobile number.");
141
- return;
142
- }
143
- e = M.walletProvider, t = `Mobile: ${M.mobile}`, n = p;
144
- }
145
- let r = {
146
- id: `pm-${Date.now()}`,
147
- type: w,
148
- label: e,
149
- detail: t,
150
- icon: n,
151
- isDefault: !1
152
- };
153
- x((e) => [...e, r]), F(), C(!1), P("Payment method added successfully");
154
- }, z = {
155
- upi: b.filter((e) => e.type === "upi"),
156
- card: b.filter((e) => e.type === "card"),
157
- wallet: b.filter((e) => e.type === "wallet")
158
- };
159
- return /* @__PURE__ */ g(n, {
160
- title: "Payment Methods",
161
- description: "Manage your saved payment options",
162
- purpose: "Save the cards and UPI handles you pay with so checkout is one tap, not a re-type. Set a default for the fastest path, and remove anything you no longer use to keep your account tidy and secure.",
163
- actions: /* @__PURE__ */ g("button", {
164
- type: "button",
165
- onClick: () => C(!0),
166
- className: t("flex items-center gap-2 rounded-lg px-4 py-2 text-sm font-medium transition-opacity", "bg-foreground text-background hover:opacity-90"),
167
- children: [/* @__PURE__ */ h(c, { className: "h-4 w-4" }), "Add Method"]
168
- }),
169
- children: [
170
- E && /* @__PURE__ */ g("div", {
171
- className: "mb-4 rounded-lg border border-status-success-border/30 bg-status-success-bg-subtle/10 p-3 flex items-center gap-2",
172
- children: [/* @__PURE__ */ h(o, { className: "h-4 w-4 text-status-success-text shrink-0" }), /* @__PURE__ */ h("p", {
173
- className: "text-sm text-status-success-text",
174
- children: E
175
- })]
176
- }),
177
- /* @__PURE__ */ g(_, {
178
- className: "mb-6 flex items-start gap-3 p-4",
179
- children: [/* @__PURE__ */ h(l, {
180
- className: "h-5 w-5 shrink-0 text-status-success-text",
181
- "aria-hidden": "true"
182
- }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("h2", {
183
- className: "text-sm font-semibold text-text-primary",
184
- children: "Your payment details are safe"
185
- }), /* @__PURE__ */ h("p", {
186
- className: "mt-0.5 text-sm text-text-secondary",
187
- children: "Cards and UPI handles are stored securely and used only to speed up checkout. Set a default to skip a step every time you order."
188
- })] })]
189
- }),
190
- b.length > 0 ? /* @__PURE__ */ g("div", {
191
- className: "space-y-6",
192
- children: [
193
- z.upi.length > 0 && /* @__PURE__ */ g("section", { children: [/* @__PURE__ */ g("h3", {
194
- className: "text-sm font-semibold text-text-primary mb-3 flex items-center gap-2",
195
- children: [/* @__PURE__ */ h(d, { className: "h-4 w-4 text-text-secondary" }), "UPI"]
196
- }), /* @__PURE__ */ h("div", {
197
- className: "space-y-2",
198
- children: z.upi.map((e) => /* @__PURE__ */ h(y, {
199
- method: e,
200
- onRemove: I,
201
- onSetDefault: L
202
- }, e.id))
203
- })] }),
204
- z.card.length > 0 && /* @__PURE__ */ g("section", { children: [/* @__PURE__ */ g("h3", {
205
- className: "text-sm font-semibold text-text-primary mb-3 flex items-center gap-2",
206
- children: [/* @__PURE__ */ h(s, { className: "h-4 w-4 text-text-secondary" }), "Cards"]
207
- }), /* @__PURE__ */ h("div", {
208
- className: "space-y-2",
209
- children: z.card.map((e) => /* @__PURE__ */ h(y, {
210
- method: e,
211
- onRemove: I,
212
- onSetDefault: L
213
- }, e.id))
214
- })] }),
215
- z.wallet.length > 0 && /* @__PURE__ */ g("section", { children: [/* @__PURE__ */ g("h3", {
216
- className: "text-sm font-semibold text-text-primary mb-3 flex items-center gap-2",
217
- children: [/* @__PURE__ */ h(p, { className: "h-4 w-4 text-text-secondary" }), "Wallets"]
218
- }), /* @__PURE__ */ h("div", {
219
- className: "space-y-2",
220
- children: z.wallet.map((e) => /* @__PURE__ */ h(y, {
221
- method: e,
222
- onRemove: I,
223
- onSetDefault: L
224
- }, e.id))
225
- })] }),
226
- /* @__PURE__ */ g("div", {
227
- className: "flex items-start gap-3 rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop",
228
- children: [/* @__PURE__ */ h(l, { className: "mt-0.5 h-5 w-5 shrink-0 text-text-secondary" }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
229
- className: "text-sm font-medium text-text-primary",
230
- children: "Secure Payments"
231
- }), /* @__PURE__ */ h("p", {
232
- className: "mt-0.5 text-xs text-text-secondary",
233
- children: "Your payment information is encrypted and securely stored. We never share your financial details with third parties."
234
- })] })]
235
- })
236
- ]
237
- }) : /* @__PURE__ */ h(r, {
238
- illustration: "empty-generic",
239
- icon: /* @__PURE__ */ h(s, { className: "h-12 w-12" }),
240
- title: "No payment methods",
241
- description: "Add a payment method to make faster checkouts.",
242
- action: /* @__PURE__ */ h("button", {
243
- type: "button",
244
- onClick: () => C(!0),
245
- className: "rounded-lg bg-foreground px-4 py-2 text-sm font-medium text-background hover:opacity-90 transition-opacity",
246
- children: "Add Payment Method"
247
- })
248
- }),
249
- /* @__PURE__ */ g("div", {
250
- className: "mt-8",
251
- children: [/* @__PURE__ */ h("h2", {
252
- className: "text-base font-semibold text-text-primary mb-4",
253
- children: "Quick Pay Options"
254
- }), /* @__PURE__ */ g("div", {
255
- className: "grid grid-cols-1 sm:grid-cols-2 gap-4",
256
- children: [/* @__PURE__ */ g("div", {
257
- className: "rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop",
258
- children: [
259
- /* @__PURE__ */ g("div", {
260
- className: "flex items-center gap-3 mb-2",
261
- children: [/* @__PURE__ */ h("div", {
262
- className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-bg-sunken",
263
- children: /* @__PURE__ */ h(a, { className: "h-5 w-5 text-text-secondary" })
264
- }), /* @__PURE__ */ h("h3", {
265
- className: "text-sm font-semibold text-text-primary",
266
- children: "Cash on Delivery"
267
- })]
268
- }),
269
- /* @__PURE__ */ h("p", {
270
- className: "text-xs text-text-secondary mb-3",
271
- children: "Pay when you receive your order"
272
- }),
273
- /* @__PURE__ */ g("div", {
274
- className: "flex items-center gap-2 text-status-success-text",
275
- children: [/* @__PURE__ */ h(o, { className: "h-3.5 w-3.5 shrink-0" }), /* @__PURE__ */ h("span", {
276
- className: "text-xs",
277
- children: "Available for all orders"
278
- })]
279
- })
280
- ]
281
- }), /* @__PURE__ */ g("div", {
282
- className: "rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop",
283
- children: [
284
- /* @__PURE__ */ g("div", {
285
- className: "flex items-center gap-3 mb-2",
286
- children: [/* @__PURE__ */ h("div", {
287
- className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-bg-sunken",
288
- children: /* @__PURE__ */ h(u, { className: "h-5 w-5 text-text-secondary" })
289
- }), /* @__PURE__ */ h("h3", {
290
- className: "text-sm font-semibold text-text-primary",
291
- children: "Pay at Cart"
292
- })]
293
- }),
294
- /* @__PURE__ */ h("p", {
295
- className: "text-xs text-text-secondary mb-3",
296
- children: "Pay directly to the vendor"
297
- }),
298
- /* @__PURE__ */ g("div", {
299
- className: "flex items-center gap-2 text-status-success-text",
300
- children: [/* @__PURE__ */ h(o, { className: "h-3.5 w-3.5 shrink-0" }), /* @__PURE__ */ h("span", {
301
- className: "text-xs",
302
- children: "Supports all payment methods"
303
- })]
304
- })
305
- ]
306
- })]
307
- })]
308
- }),
309
- S && /* @__PURE__ */ h("div", {
310
- className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
311
- children: /* @__PURE__ */ h("div", {
312
- className: "w-full max-w-md max-h-[90vh] overflow-y-auto rounded-lg border border-border-subtle bg-bg-surface shadow-lg",
313
- children: /* @__PURE__ */ g("div", {
314
- className: "p-5",
315
- children: [
316
- /* @__PURE__ */ g("div", {
317
- className: "flex items-center justify-between mb-4",
318
- children: [/* @__PURE__ */ h("h2", {
319
- className: "text-lg font-semibold text-text-primary",
320
- children: "Add Payment Method"
321
- }), /* @__PURE__ */ h("button", {
322
- type: "button",
323
- onClick: () => {
324
- C(!1), F();
325
- },
326
- className: "rounded-md p-2 text-text-secondary hover:bg-accent hover:text-text-primary transition-colors",
327
- children: /* @__PURE__ */ h(m, { className: "h-4 w-4" })
328
- })]
329
- }),
330
- /* @__PURE__ */ h("p", {
331
- className: "text-sm text-text-secondary mb-5",
332
- children: "Choose a payment method to add to your account"
333
- }),
334
- /* @__PURE__ */ h("div", {
335
- className: "space-y-2 mb-5",
336
- children: [
337
- {
338
- value: "card",
339
- label: "Credit/Debit Card",
340
- sub: "Visa, Mastercard, Rupay",
341
- Icon: s
342
- },
343
- {
344
- value: "upi",
345
- label: "UPI",
346
- sub: "Google Pay, PhonePe, Paytm",
347
- Icon: d
348
- },
349
- {
350
- value: "wallet",
351
- label: "Wallet",
352
- sub: "Paytm, Amazon Pay, Mobikwik",
353
- Icon: p
354
- }
355
- ].map(({ value: e, label: n, sub: r, Icon: i }) => /* @__PURE__ */ g("label", {
356
- className: t("flex items-center gap-3 rounded-lg border p-3 cursor-pointer transition-colors", w === e ? "border-foreground bg-accent" : "border-border-subtle hover:bg-accent"),
357
- children: [
358
- /* @__PURE__ */ h("input", {
359
- type: "radio",
360
- name: "paymentType",
361
- value: e,
362
- checked: w === e,
363
- onChange: () => T(e),
364
- className: "h-4 w-4 shrink-0"
365
- }),
366
- /* @__PURE__ */ h(i, { className: "h-5 w-5 text-text-secondary shrink-0" }),
367
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
368
- className: "text-sm font-medium text-text-primary",
369
- children: n
370
- }), /* @__PURE__ */ h("p", {
371
- className: "text-xs text-text-secondary",
372
- children: r
373
- })] })
374
- ]
375
- }, e))
376
- }),
377
- w === "card" && /* @__PURE__ */ g("div", {
378
- className: "space-y-3",
379
- children: [
380
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
381
- className: "block text-sm font-medium text-text-primary mb-1",
382
- children: "Card Number"
383
- }), /* @__PURE__ */ h("input", {
384
- type: "text",
385
- placeholder: "1234 5678 9012 3456",
386
- value: O.cardNumber,
387
- onChange: (e) => k((t) => ({
388
- ...t,
389
- cardNumber: e.target.value
390
- })),
391
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
392
- })] }),
393
- /* @__PURE__ */ g("div", {
394
- className: "grid grid-cols-2 gap-3",
395
- children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
396
- className: "block text-sm font-medium text-text-primary mb-1",
397
- children: "Expiry Date"
398
- }), /* @__PURE__ */ h("input", {
399
- type: "text",
400
- placeholder: "MM/YY",
401
- value: O.expiry,
402
- onChange: (e) => k((t) => ({
403
- ...t,
404
- expiry: e.target.value
405
- })),
406
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
407
- })] }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
408
- className: "block text-sm font-medium text-text-primary mb-1",
409
- children: "CVV"
410
- }), /* @__PURE__ */ h("input", {
411
- type: "password",
412
- placeholder: "123",
413
- value: O.cvv,
414
- onChange: (e) => k((t) => ({
415
- ...t,
416
- cvv: e.target.value
417
- })),
418
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
419
- })] })]
420
- }),
421
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
422
- className: "block text-sm font-medium text-text-primary mb-1",
423
- children: "Name on Card"
424
- }), /* @__PURE__ */ h("input", {
425
- type: "text",
426
- placeholder: "John Doe",
427
- value: O.nameOnCard,
428
- onChange: (e) => k((t) => ({
429
- ...t,
430
- nameOnCard: e.target.value
431
- })),
432
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
433
- })] })
434
- ]
435
- }),
436
- w === "upi" && /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
437
- className: "block text-sm font-medium text-text-primary mb-1",
438
- children: "UPI ID"
439
- }), /* @__PURE__ */ h("input", {
440
- type: "text",
441
- placeholder: "yourname@paytm",
442
- value: A.upiId,
443
- onChange: (e) => j({ upiId: e.target.value }),
444
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
445
- })] }),
446
- w === "wallet" && /* @__PURE__ */ g("div", {
447
- className: "space-y-3",
448
- children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
449
- className: "block text-sm font-medium text-text-primary mb-1",
450
- children: "Select Wallet"
451
- }), /* @__PURE__ */ g("select", {
452
- value: M.walletProvider,
453
- onChange: (e) => N((t) => ({
454
- ...t,
455
- walletProvider: e.target.value
456
- })),
457
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]",
458
- children: [
459
- /* @__PURE__ */ h("option", { children: "Paytm" }),
460
- /* @__PURE__ */ h("option", { children: "Amazon Pay" }),
461
- /* @__PURE__ */ h("option", { children: "Mobikwik" }),
462
- /* @__PURE__ */ h("option", { children: "Freecharge" })
463
- ]
464
- })] }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
465
- className: "block text-sm font-medium text-text-primary mb-1",
466
- children: "Mobile Number"
467
- }), /* @__PURE__ */ h("input", {
468
- type: "tel",
469
- placeholder: "9876543210",
470
- value: M.mobile,
471
- onChange: (e) => N((t) => ({
472
- ...t,
473
- mobile: e.target.value
474
- })),
475
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
476
- })] })]
477
- }),
478
- /* @__PURE__ */ g("div", {
479
- className: "flex items-center gap-3 pt-5",
480
- children: [/* @__PURE__ */ h("button", {
481
- type: "button",
482
- onClick: R,
483
- className: "flex-1 rounded-lg bg-foreground px-4 py-2 text-sm font-medium text-background hover:opacity-90 transition-opacity",
484
- children: "Add Payment Method"
485
- }), /* @__PURE__ */ h("button", {
486
- type: "button",
487
- onClick: () => {
488
- C(!1), F();
489
- },
490
- className: "flex-1 rounded-lg border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
491
- children: "Cancel"
492
- })]
493
- })
494
- ]
495
- })
496
- })
497
- })
498
- ]
499
- });
500
- }
501
- //#endregion
502
- export { b as PaymentMethodsPage };
503
-
504
- //# sourceMappingURL=PaymentMethodsPage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PaymentMethodsPage.js","names":[],"sources":["../../../../src/adaptercloud/pages/customer/PaymentMethodsPage.tsx"],"sourcesContent":["/**\n * Payment Methods Page\n * @module adaptercloud/pages/customer\n *\n * Manage saved payment methods: UPI IDs, credit/debit cards, wallets.\n * Add Payment Method modal with type selection (Card/UPI/Wallet),\n * conditional forms, Quick Pay Options section (Cash on Delivery,\n * Pay at Cart), form state management, grouped display, security badge.\n */\n\nimport { useState } from'react';\nimport {\n CreditCard,\n Smartphone,\n Wallet,\n Plus,\n Trash2,\n CheckCircle2,\n Shield,\n X,\n Banknote,\n ShoppingCart,\n} from'lucide-react';\nimport { EmphasisPanel } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from'../../components/PageLayout';\nimport { EmptyState } from'../../components/EmptyState';\nimport { useAdapterCloud } from'../../context/AdapterCloudContext';\nimport { cn } from'../../utils/cn';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface PaymentMethod {\n id: string;\n type: 'upi' | 'card' | 'wallet';\n label: string;\n detail: string;\n icon: typeof CreditCard;\n isDefault: boolean;\n}\n\ninterface CardFormState {\n cardNumber: string;\n expiry: string;\n cvv: string;\n nameOnCard: string;\n}\n\ninterface UpiFormState {\n upiId: string;\n}\n\ninterface WalletFormState {\n walletProvider: string;\n mobile: string;\n}\n\n// ============================================================================\n// Mock Data\n// ============================================================================\n\nconst initialMethods: PaymentMethod[] = [\n {\n id: 'pm-1',\n type: 'upi',\n label: 'Google Pay',\n detail: 'priya@okaxis',\n icon: Smartphone,\n isDefault: true,\n },\n {\n id: 'pm-2',\n type: 'upi',\n label: 'PhonePe',\n detail: 'priya@ybl',\n icon: Smartphone,\n isDefault: false,\n },\n {\n id: 'pm-3',\n type: 'card',\n label: 'HDFC Credit Card',\n detail: '**** **** **** 4242',\n icon: CreditCard,\n isDefault: false,\n },\n {\n id: 'pm-4',\n type: 'card',\n label: 'SBI Debit Card',\n detail: '**** **** **** 8765',\n icon: CreditCard,\n isDefault: false,\n },\n {\n id: 'pm-5',\n type: 'wallet',\n label: 'AdapterCloud Wallet',\n detail: 'Balance: \\u20B9 1,250.00',\n icon: Wallet,\n isDefault: false,\n },\n];\n\n// ============================================================================\n// Payment Method Row\n// ============================================================================\n\nfunction PaymentMethodRow({\n method,\n onRemove,\n onSetDefault,\n}: {\n method: PaymentMethod;\n onRemove: (id: string) => void;\n onSetDefault: (id: string) => void;\n}) {\n const Icon = method.icon;\n\n return (\n <div\n className={cn(\n 'flex items-center gap-4 rounded-lg border p-4',\n method.isDefault ? 'border-foreground/30 bg-accent/50' : 'border-border-subtle bg-bg-surface'\n )}\n >\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-bg-sunken\">\n <Icon className=\"h-5 w-5 text-text-secondary\" />\n </div>\n\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <p className=\"text-sm font-medium text-text-primary\">{method.label}</p>\n {method.isDefault && (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-status-success-bg-subtle/10 px-2 py-0.5 text-[10px] font-medium text-status-success-text\">\n <CheckCircle2 className=\"h-3 w-3\" />\n Default\n </span>\n )}\n </div>\n <p className=\"mt-0.5 text-xs text-text-secondary font-mono\">{method.detail}</p>\n </div>\n\n <div className=\"flex items-center gap-1\">\n {!method.isDefault && (\n <button\n type=\"button\"\n onClick={() => onSetDefault(method.id)}\n title=\"Set as default\"\n className=\"rounded-md px-2 py-1 text-xs text-text-secondary hover:bg-accent hover:text-text-primary transition-colors\"\n >\n Set Default\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => onRemove(method.id)}\n title=\"Remove payment method\"\n className=\"rounded-md p-2 text-text-secondary hover:bg-status-error-bg/10 hover:text-status-error-text transition-colors\"\n >\n <Trash2 className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n );\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport function PaymentMethodsPage() {\n const { navigateTo } = useAdapterCloud();\n const [methods, setMethods] = useState<PaymentMethod[]>(initialMethods);\n const [showAddModal, setShowAddModal] = useState(false);\n const [selectedType, setSelectedType] = useState<'card' | 'upi' | 'wallet'>('card');\n const [statusMessage, setStatusMessage] = useState<string | null>(null);\n\n // Form states\n const [cardForm, setCardForm] = useState<CardFormState>({\n cardNumber: '',\n expiry: '',\n cvv: '',\n nameOnCard: '',\n });\n const [upiForm, setUpiForm] = useState<UpiFormState>({ upiId: '' });\n const [walletForm, setWalletForm] = useState<WalletFormState>({\n walletProvider: 'Paytm',\n mobile: '',\n });\n\n const showStatus = (msg: string) => {\n setStatusMessage(msg);\n setTimeout(() => setStatusMessage(null), 3000);\n };\n\n const resetForms = () => {\n setCardForm({ cardNumber: '', expiry: '', cvv: '', nameOnCard: '' });\n setUpiForm({ upiId: '' });\n setWalletForm({ walletProvider: 'Paytm', mobile: '' });\n setSelectedType('card');\n };\n\n const handleRemove = (id: string) => {\n setMethods((prev) => prev.filter((m) => m.id !== id));\n showStatus('Payment method removed');\n };\n\n const handleSetDefault = (id: string) => {\n setMethods((prev) => prev.map((m) => ({ ...m, isDefault: m.id === id })));\n showStatus('Default payment method updated');\n };\n\n const handleAddPaymentMethod = () => {\n let label = '';\n let detail = '';\n let icon = CreditCard;\n\n if (selectedType === 'card') {\n if (\n !cardForm.cardNumber.trim() ||\n !cardForm.expiry.trim() ||\n !cardForm.cvv.trim() ||\n !cardForm.nameOnCard.trim()\n ) {\n alert('Please fill in all card fields.');\n return;\n }\n label = `${cardForm.nameOnCard}'s Card`;\n detail = `**** **** **** ${cardForm.cardNumber.slice(-4)}`;\n icon = CreditCard;\n } else if (selectedType === 'upi') {\n if (!upiForm.upiId.trim()) {\n alert('Please enter a UPI ID.');\n return;\n }\n label = 'UPI';\n detail = upiForm.upiId;\n icon = Smartphone;\n } else {\n if (!walletForm.mobile.trim()) {\n alert('Please enter mobile number.');\n return;\n }\n label = walletForm.walletProvider;\n detail = `Mobile: ${walletForm.mobile}`;\n icon = Wallet;\n }\n\n const newMethod: PaymentMethod = {\n id: `pm-${Date.now()}`,\n type: selectedType,\n label,\n detail,\n icon,\n isDefault: false,\n };\n\n setMethods((prev) => [...prev, newMethod]);\n resetForms();\n setShowAddModal(false);\n showStatus('Payment method added successfully');\n };\n\n const grouped = {\n upi: methods.filter((m) => m.type === 'upi'),\n card: methods.filter((m) => m.type === 'card'),\n wallet: methods.filter((m) => m.type === 'wallet'),\n };\n\n return (\n <PageLayout\n title=\"Payment Methods\"\n description=\"Manage your saved payment options\"\n purpose=\"Save the cards and UPI handles you pay with so checkout is one tap, not a re-type. Set a default for the fastest path, and remove anything you no longer use to keep your account tidy and secure.\"\n actions={\n <button\n type=\"button\"\n onClick={() => setShowAddModal(true)}\n className={cn(\n 'flex items-center gap-2 rounded-lg px-4 py-2 text-sm font-medium transition-opacity',\n 'bg-foreground text-background hover:opacity-90'\n )}\n >\n <Plus className=\"h-4 w-4\" />\n Add Method\n </button>\n }\n >\n {/* Status message */}\n {statusMessage && (\n <div className=\"mb-4 rounded-lg border border-status-success-border/30 bg-status-success-bg-subtle/10 p-3 flex items-center gap-2\">\n <CheckCircle2 className=\"h-4 w-4 text-status-success-text shrink-0\" />\n <p className=\"text-sm text-status-success-text\">{statusMessage}</p>\n </div>\n )}\n\n {/* Secure-storage assurance (emphasis zone) */}\n <EmphasisPanel className=\"mb-6 flex items-start gap-3 p-4\">\n <Shield className=\"h-5 w-5 shrink-0 text-status-success-text\" aria-hidden=\"true\" />\n <div>\n <h2 className=\"text-sm font-semibold text-text-primary\">Your payment details are safe</h2>\n <p className=\"mt-0.5 text-sm text-text-secondary\">\n Cards and UPI handles are stored securely and used only to speed up checkout. Set a\n default to skip a step every time you order.\n </p>\n </div>\n </EmphasisPanel>\n\n {methods.length > 0 ? (\n <div className=\"space-y-6\">\n {/* UPI */}\n {grouped.upi.length > 0 && (\n <section>\n <h3 className=\"text-sm font-semibold text-text-primary mb-3 flex items-center gap-2\">\n <Smartphone className=\"h-4 w-4 text-text-secondary\" />\n UPI\n </h3>\n <div className=\"space-y-2\">\n {grouped.upi.map((method) => (\n <PaymentMethodRow\n key={method.id}\n method={method}\n onRemove={handleRemove}\n onSetDefault={handleSetDefault}\n />\n ))}\n </div>\n </section>\n )}\n\n {/* Cards */}\n {grouped.card.length > 0 && (\n <section>\n <h3 className=\"text-sm font-semibold text-text-primary mb-3 flex items-center gap-2\">\n <CreditCard className=\"h-4 w-4 text-text-secondary\" />\n Cards\n </h3>\n <div className=\"space-y-2\">\n {grouped.card.map((method) => (\n <PaymentMethodRow\n key={method.id}\n method={method}\n onRemove={handleRemove}\n onSetDefault={handleSetDefault}\n />\n ))}\n </div>\n </section>\n )}\n\n {/* Wallets */}\n {grouped.wallet.length > 0 && (\n <section>\n <h3 className=\"text-sm font-semibold text-text-primary mb-3 flex items-center gap-2\">\n <Wallet className=\"h-4 w-4 text-text-secondary\" />\n Wallets\n </h3>\n <div className=\"space-y-2\">\n {grouped.wallet.map((method) => (\n <PaymentMethodRow\n key={method.id}\n method={method}\n onRemove={handleRemove}\n onSetDefault={handleSetDefault}\n />\n ))}\n </div>\n </section>\n )}\n\n {/* Security note */}\n <div className=\"flex items-start gap-3 rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop\">\n <Shield className=\"mt-0.5 h-5 w-5 shrink-0 text-text-secondary\" />\n <div>\n <p className=\"text-sm font-medium text-text-primary\">Secure Payments</p>\n <p className=\"mt-0.5 text-xs text-text-secondary\">\n Your payment information is encrypted and securely stored. We never share your\n financial details with third parties.\n </p>\n </div>\n </div>\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-generic\"\n icon={<CreditCard className=\"h-12 w-12\" />}\n title=\"No payment methods\"\n description=\"Add a payment method to make faster checkouts.\"\n action={\n <button\n type=\"button\"\n onClick={() => setShowAddModal(true)}\n className=\"rounded-lg bg-foreground px-4 py-2 text-sm font-medium text-background hover:opacity-90 transition-opacity\"\n >\n Add Payment Method\n </button>\n }\n />\n )}\n\n {/* Quick Pay Options */}\n <div className=\"mt-8\">\n <h2 className=\"text-base font-semibold text-text-primary mb-4\">Quick Pay Options</h2>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop\">\n <div className=\"flex items-center gap-3 mb-2\">\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-bg-sunken\">\n <Banknote className=\"h-5 w-5 text-text-secondary\" />\n </div>\n <h3 className=\"text-sm font-semibold text-text-primary\">Cash on Delivery</h3>\n </div>\n <p className=\"text-xs text-text-secondary mb-3\">Pay when you receive your order</p>\n <div className=\"flex items-center gap-2 text-status-success-text\">\n <CheckCircle2 className=\"h-3.5 w-3.5 shrink-0\" />\n <span className=\"text-xs\">Available for all orders</span>\n </div>\n </div>\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop\">\n <div className=\"flex items-center gap-3 mb-2\">\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-bg-sunken\">\n <ShoppingCart className=\"h-5 w-5 text-text-secondary\" />\n </div>\n <h3 className=\"text-sm font-semibold text-text-primary\">Pay at Cart</h3>\n </div>\n <p className=\"text-xs text-text-secondary mb-3\">Pay directly to the vendor</p>\n <div className=\"flex items-center gap-2 text-status-success-text\">\n <CheckCircle2 className=\"h-3.5 w-3.5 shrink-0\" />\n <span className=\"text-xs\">Supports all payment methods</span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Add Payment Method Modal */}\n {showAddModal && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4\">\n <div className=\"w-full max-w-md max-h-[90vh] overflow-y-auto rounded-lg border border-border-subtle bg-bg-surface shadow-lg\">\n <div className=\"p-5\">\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <h2 className=\"text-lg font-semibold text-text-primary\">Add Payment Method</h2>\n <button\n type=\"button\"\n onClick={() => {\n setShowAddModal(false);\n resetForms();\n }}\n className=\"rounded-md p-2 text-text-secondary hover:bg-accent hover:text-text-primary transition-colors\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n <p className=\"text-sm text-text-secondary mb-5\">\n Choose a payment method to add to your account\n </p>\n\n {/* Type Selection */}\n <div className=\"space-y-2 mb-5\">\n {[\n {\n value: 'card' as const,\n label: 'Credit/Debit Card',\n sub: 'Visa, Mastercard, Rupay',\n Icon: CreditCard,\n },\n {\n value: 'upi' as const,\n label: 'UPI',\n sub: 'Google Pay, PhonePe, Paytm',\n Icon: Smartphone,\n },\n {\n value: 'wallet' as const,\n label: 'Wallet',\n sub: 'Paytm, Amazon Pay, Mobikwik',\n Icon: Wallet,\n },\n ].map(({ value, label, sub, Icon }) => (\n <label\n key={value}\n className={cn(\n 'flex items-center gap-3 rounded-lg border p-3 cursor-pointer transition-colors',\n selectedType === value\n ? 'border-foreground bg-accent'\n : 'border-border-subtle hover:bg-accent'\n )}\n >\n <input\n type=\"radio\"\n name=\"paymentType\"\n value={value}\n checked={selectedType === value}\n onChange={() => setSelectedType(value)}\n className=\"h-4 w-4 shrink-0\"\n />\n <Icon className=\"h-5 w-5 text-text-secondary shrink-0\" />\n <div>\n <p className=\"text-sm font-medium text-text-primary\">{label}</p>\n <p className=\"text-xs text-text-secondary\">{sub}</p>\n </div>\n </label>\n ))}\n </div>\n\n {/* Card Form */}\n {selectedType === 'card' && (\n <div className=\"space-y-3\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Card Number\n </label>\n <input\n type=\"text\"\n placeholder=\"1234 5678 9012 3456\"\n value={cardForm.cardNumber}\n onChange={(e) => setCardForm((p) => ({ ...p, cardNumber: e.target.value }))}\n className=\"w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n />\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Expiry Date\n </label>\n <input\n type=\"text\"\n placeholder=\"MM/YY\"\n value={cardForm.expiry}\n onChange={(e) => setCardForm((p) => ({ ...p, expiry: e.target.value }))}\n className=\"w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">CVV</label>\n <input\n type=\"password\"\n placeholder=\"123\"\n value={cardForm.cvv}\n onChange={(e) => setCardForm((p) => ({ ...p, cvv: e.target.value }))}\n className=\"w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n />\n </div>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Name on Card\n </label>\n <input\n type=\"text\"\n placeholder=\"John Doe\"\n value={cardForm.nameOnCard}\n onChange={(e) => setCardForm((p) => ({ ...p, nameOnCard: e.target.value }))}\n className=\"w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n />\n </div>\n </div>\n )}\n\n {/* UPI Form */}\n {selectedType === 'upi' && (\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">UPI ID</label>\n <input\n type=\"text\"\n placeholder=\"yourname@paytm\"\n value={upiForm.upiId}\n onChange={(e) => setUpiForm({ upiId: e.target.value })}\n className=\"w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n />\n </div>\n )}\n\n {/* Wallet Form */}\n {selectedType === 'wallet' && (\n <div className=\"space-y-3\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Select Wallet\n </label>\n <select\n value={walletForm.walletProvider}\n onChange={(e) =>\n setWalletForm((p) => ({ ...p, walletProvider: e.target.value }))\n }\n className=\"w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n >\n <option>Paytm</option>\n <option>Amazon Pay</option>\n <option>Mobikwik</option>\n <option>Freecharge</option>\n </select>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n Mobile Number\n </label>\n <input\n type=\"tel\"\n placeholder=\"9876543210\"\n value={walletForm.mobile}\n onChange={(e) => setWalletForm((p) => ({ ...p, mobile: e.target.value }))}\n className=\"w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n />\n </div>\n </div>\n )}\n\n {/* Actions */}\n <div className=\"flex items-center gap-3 pt-5\">\n <button\n type=\"button\"\n onClick={handleAddPaymentMethod}\n className=\"flex-1 rounded-lg bg-foreground px-4 py-2 text-sm font-medium text-background hover:opacity-90 transition-opacity\"\n >\n Add Payment Method\n </button>\n <button\n type=\"button\"\n onClick={() => {\n setShowAddModal(false);\n resetForms();\n }}\n className=\"flex-1 rounded-lg border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n Cancel\n </button>\n </div>\n </div>\n </div>\n </div>\n )}\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;;AA8DA,IAAM,IAAkC;CACtC;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,QAAQ;EACR,MAAM;EACN,WAAW;EACZ;CACD;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,QAAQ;EACR,MAAM;EACN,WAAW;EACZ;CACD;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,QAAQ;EACR,MAAM;EACN,WAAW;EACZ;CACD;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,QAAQ;EACR,MAAM;EACN,WAAW;EACZ;CACD;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,QAAQ;EACR,MAAM;EACN,WAAW;EACZ;CACF;AAMD,SAAS,EAAiB,EACxB,WACA,aACA,mBAKC;CACD,IAAM,IAAO,EAAO;AAEpB,QACE,kBAAC,OAAD;EACE,WAAW,EACT,iDACA,EAAO,YAAY,sCAAsC,qCAC1D;YAJH;GAME,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD,EAAM,WAAU,+BAAgC,CAAA;IAC5C,CAAA;GAEN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,KAAD;MAAG,WAAU;gBAAyC,EAAO;MAAU,CAAA,EACtE,EAAO,aACN,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CACE,kBAAC,GAAD,EAAc,WAAU,WAAY,CAAA,EAAA,UAE/B;QAEL;QACN,kBAAC,KAAD;KAAG,WAAU;eAAgD,EAAO;KAAW,CAAA,CAC3E;;GAEN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACG,CAAC,EAAO,aACP,kBAAC,UAAD;KACE,MAAK;KACL,eAAe,EAAa,EAAO,GAAG;KACtC,OAAM;KACN,WAAU;eACX;KAEQ,CAAA,EAEX,kBAAC,UAAD;KACE,MAAK;KACL,eAAe,EAAS,EAAO,GAAG;KAClC,OAAM;KACN,WAAU;eAEV,kBAAC,GAAD,EAAQ,WAAU,WAAY,CAAA;KACvB,CAAA,CACL;;GACF;;;AAQV,SAAgB,IAAqB;CACnC,IAAM,EAAE,kBAAe,GAAiB,EAClC,CAAC,GAAS,KAAc,EAA0B,EAAe,EACjE,CAAC,GAAc,KAAmB,EAAS,GAAM,EACjD,CAAC,GAAc,KAAmB,EAAoC,OAAO,EAC7E,CAAC,GAAe,KAAoB,EAAwB,KAAK,EAGjE,CAAC,GAAU,KAAe,EAAwB;EACtD,YAAY;EACZ,QAAQ;EACR,KAAK;EACL,YAAY;EACb,CAAC,EACI,CAAC,GAAS,KAAc,EAAuB,EAAE,OAAO,IAAI,CAAC,EAC7D,CAAC,GAAY,KAAiB,EAA0B;EAC5D,gBAAgB;EAChB,QAAQ;EACT,CAAC,EAEI,KAAc,MAAgB;AAElC,EADA,EAAiB,EAAI,EACrB,iBAAiB,EAAiB,KAAK,EAAE,IAAK;IAG1C,UAAmB;AAIvB,EAHA,EAAY;GAAE,YAAY;GAAI,QAAQ;GAAI,KAAK;GAAI,YAAY;GAAI,CAAC,EACpE,EAAW,EAAE,OAAO,IAAI,CAAC,EACzB,EAAc;GAAE,gBAAgB;GAAS,QAAQ;GAAI,CAAC,EACtD,EAAgB,OAAO;IAGnB,KAAgB,MAAe;AAEnC,EADA,GAAY,MAAS,EAAK,QAAQ,MAAM,EAAE,OAAO,EAAG,CAAC,EACrD,EAAW,yBAAyB;IAGhC,KAAoB,MAAe;AAEvC,EADA,GAAY,MAAS,EAAK,KAAK,OAAO;GAAE,GAAG;GAAG,WAAW,EAAE,OAAO;GAAI,EAAE,CAAC,EACzE,EAAW,iCAAiC;IAGxC,UAA+B;EACnC,IAAI,IAAQ,IACR,IAAS,IACT,IAAO;AAEX,MAAI,MAAiB,QAAQ;AAC3B,OACE,CAAC,EAAS,WAAW,MAAM,IAC3B,CAAC,EAAS,OAAO,MAAM,IACvB,CAAC,EAAS,IAAI,MAAM,IACpB,CAAC,EAAS,WAAW,MAAM,EAC3B;AACA,UAAM,kCAAkC;AACxC;;AAIF,GAFA,IAAQ,GAAG,EAAS,WAAW,UAC/B,IAAS,kBAAkB,EAAS,WAAW,MAAM,GAAG,IACxD,IAAO;aACE,MAAiB,OAAO;AACjC,OAAI,CAAC,EAAQ,MAAM,MAAM,EAAE;AACzB,UAAM,yBAAyB;AAC/B;;AAIF,GAFA,IAAQ,OACR,IAAS,EAAQ,OACjB,IAAO;SACF;AACL,OAAI,CAAC,EAAW,OAAO,MAAM,EAAE;AAC7B,UAAM,8BAA8B;AACpC;;AAIF,GAFA,IAAQ,EAAW,gBACnB,IAAS,WAAW,EAAW,UAC/B,IAAO;;EAGT,IAAM,IAA2B;GAC/B,IAAI,MAAM,KAAK,KAAK;GACpB,MAAM;GACN;GACA;GACA;GACA,WAAW;GACZ;AAKD,EAHA,GAAY,MAAS,CAAC,GAAG,GAAM,EAAU,CAAC,EAC1C,GAAY,EACZ,EAAgB,GAAM,EACtB,EAAW,oCAAoC;IAG3C,IAAU;EACd,KAAK,EAAQ,QAAQ,MAAM,EAAE,SAAS,MAAM;EAC5C,MAAM,EAAQ,QAAQ,MAAM,EAAE,SAAS,OAAO;EAC9C,QAAQ,EAAQ,QAAQ,MAAM,EAAE,SAAS,SAAS;EACnD;AAED,QACE,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;EACZ,SAAQ;EACR,SACE,kBAAC,UAAD;GACE,MAAK;GACL,eAAe,EAAgB,GAAK;GACpC,WAAW,EACT,uFACA,iDACD;aANH,CAQE,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA,EAAA,aAErB;;YAfb;GAmBG,KACC,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD,EAAc,WAAU,6CAA8C,CAAA,EACtE,kBAAC,KAAD;KAAG,WAAU;eAAoC;KAAkB,CAAA,CAC/D;;GAIR,kBAAC,GAAD;IAAe,WAAU;cAAzB,CACE,kBAAC,GAAD;KAAQ,WAAU;KAA4C,eAAY;KAAS,CAAA,EACnF,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;KAAI,WAAU;eAA0C;KAAkC,CAAA,EAC1F,kBAAC,KAAD;KAAG,WAAU;eAAqC;KAG9C,CAAA,CACA,EAAA,CAAA,CACQ;;GAEf,EAAQ,SAAS,IAChB,kBAAC,OAAD;IAAK,WAAU;cAAf;KAEG,EAAQ,IAAI,SAAS,KACpB,kBAAC,WAAD,EAAA,UAAA,CACE,kBAAC,MAAD;MAAI,WAAU;gBAAd,CACE,kBAAC,GAAD,EAAY,WAAU,+BAAgC,CAAA,EAAA,MAEnD;SACL,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAQ,IAAI,KAAK,MAChB,kBAAC,GAAD;OAEU;OACR,UAAU;OACV,cAAc;OACd,EAJK,EAAO,GAIZ,CACF;MACE,CAAA,CACE,EAAA,CAAA;KAIX,EAAQ,KAAK,SAAS,KACrB,kBAAC,WAAD,EAAA,UAAA,CACE,kBAAC,MAAD;MAAI,WAAU;gBAAd,CACE,kBAAC,GAAD,EAAY,WAAU,+BAAgC,CAAA,EAAA,QAEnD;SACL,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAQ,KAAK,KAAK,MACjB,kBAAC,GAAD;OAEU;OACR,UAAU;OACV,cAAc;OACd,EAJK,EAAO,GAIZ,CACF;MACE,CAAA,CACE,EAAA,CAAA;KAIX,EAAQ,OAAO,SAAS,KACvB,kBAAC,WAAD,EAAA,UAAA,CACE,kBAAC,MAAD;MAAI,WAAU;gBAAd,CACE,kBAAC,GAAD,EAAQ,WAAU,+BAAgC,CAAA,EAAA,UAE/C;SACL,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAQ,OAAO,KAAK,MACnB,kBAAC,GAAD;OAEU;OACR,UAAU;OACV,cAAc;OACd,EAJK,EAAO,GAIZ,CACF;MACE,CAAA,CACE,EAAA,CAAA;KAIZ,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD,EAAQ,WAAU,+CAAgD,CAAA,EAClE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;OAAG,WAAU;iBAAwC;OAAmB,CAAA,EACxE,kBAAC,KAAD;OAAG,WAAU;iBAAqC;OAG9C,CAAA,CACA,EAAA,CAAA,CACF;;KACF;QAEN,kBAAC,GAAD;IACE,cAAa;IACb,MAAM,kBAAC,GAAD,EAAY,WAAU,aAAc,CAAA;IAC1C,OAAM;IACN,aAAY;IACZ,QACE,kBAAC,UAAD;KACE,MAAK;KACL,eAAe,EAAgB,GAAK;KACpC,WAAU;eACX;KAEQ,CAAA;IAEX,CAAA;GAIJ,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,MAAD;KAAI,WAAU;eAAiD;KAAsB,CAAA,EACrF,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,OAAD;SAAK,WAAU;mBACb,kBAAC,GAAD,EAAU,WAAU,+BAAgC,CAAA;SAChD,CAAA,EACN,kBAAC,MAAD;SAAI,WAAU;mBAA0C;SAAqB,CAAA,CACzE;;OACN,kBAAC,KAAD;QAAG,WAAU;kBAAmC;QAAmC,CAAA;OACnF,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,GAAD,EAAc,WAAU,wBAAyB,CAAA,EACjD,kBAAC,QAAD;SAAM,WAAU;mBAAU;SAA+B,CAAA,CACrD;;OACF;SACN,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,OAAD;SAAK,WAAU;mBACb,kBAAC,GAAD,EAAc,WAAU,+BAAgC,CAAA;SACpD,CAAA,EACN,kBAAC,MAAD;SAAI,WAAU;mBAA0C;SAAgB,CAAA,CACpE;;OACN,kBAAC,KAAD;QAAG,WAAU;kBAAmC;QAA8B,CAAA;OAC9E,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,GAAD,EAAc,WAAU,wBAAyB,CAAA,EACjD,kBAAC,QAAD;SAAM,WAAU;mBAAU;SAAmC,CAAA,CACzD;;OACF;QACF;OACF;;GAGL,KACC,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,OAAD;MAAK,WAAU;gBAAf;OAEE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,MAAD;SAAI,WAAU;mBAA0C;SAAuB,CAAA,EAC/E,kBAAC,UAAD;SACE,MAAK;SACL,eAAe;AAEb,UADA,EAAgB,GAAM,EACtB,GAAY;;SAEd,WAAU;mBAEV,kBAAC,GAAD,EAAG,WAAU,WAAY,CAAA;SAClB,CAAA,CACL;;OACN,kBAAC,KAAD;QAAG,WAAU;kBAAmC;QAE5C,CAAA;OAGJ,kBAAC,OAAD;QAAK,WAAU;kBACZ;SACC;UACE,OAAO;UACP,OAAO;UACP,KAAK;UACL,MAAM;UACP;SACD;UACE,OAAO;UACP,OAAO;UACP,KAAK;UACL,MAAM;UACP;SACD;UACE,OAAO;UACP,OAAO;UACP,KAAK;UACL,MAAM;UACP;SACF,CAAC,KAAK,EAAE,UAAO,UAAO,QAAK,cAC1B,kBAAC,SAAD;SAEE,WAAW,EACT,kFACA,MAAiB,IACb,gCACA,uCACL;mBAPH;UASE,kBAAC,SAAD;WACE,MAAK;WACL,MAAK;WACE;WACP,SAAS,MAAiB;WAC1B,gBAAgB,EAAgB,EAAM;WACtC,WAAU;WACV,CAAA;UACF,kBAAC,GAAD,EAAM,WAAU,wCAAyC,CAAA;UACzD,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;WAAG,WAAU;qBAAyC;WAAU,CAAA,EAChE,kBAAC,KAAD;WAAG,WAAU;qBAA+B;WAAQ,CAAA,CAChD,EAAA,CAAA;UACA;WArBD,EAqBC,CACR;QACE,CAAA;OAGL,MAAiB,UAChB,kBAAC,OAAD;QAAK,WAAU;kBAAf;SACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;UAAO,WAAU;oBAAmD;UAE5D,CAAA,EACR,kBAAC,SAAD;UACE,MAAK;UACL,aAAY;UACZ,OAAO,EAAS;UAChB,WAAW,MAAM,GAAa,OAAO;WAAE,GAAG;WAAG,YAAY,EAAE,OAAO;WAAO,EAAE;UAC3E,WAAU;UACV,CAAA,CACE,EAAA,CAAA;SACN,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;WAAO,WAAU;qBAAmD;WAE5D,CAAA,EACR,kBAAC,SAAD;WACE,MAAK;WACL,aAAY;WACZ,OAAO,EAAS;WAChB,WAAW,MAAM,GAAa,OAAO;YAAE,GAAG;YAAG,QAAQ,EAAE,OAAO;YAAO,EAAE;WACvE,WAAU;WACV,CAAA,CACE,EAAA,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;WAAO,WAAU;qBAAmD;WAAW,CAAA,EAC/E,kBAAC,SAAD;WACE,MAAK;WACL,aAAY;WACZ,OAAO,EAAS;WAChB,WAAW,MAAM,GAAa,OAAO;YAAE,GAAG;YAAG,KAAK,EAAE,OAAO;YAAO,EAAE;WACpE,WAAU;WACV,CAAA,CACE,EAAA,CAAA,CACF;;SACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;UAAO,WAAU;oBAAmD;UAE5D,CAAA,EACR,kBAAC,SAAD;UACE,MAAK;UACL,aAAY;UACZ,OAAO,EAAS;UAChB,WAAW,MAAM,GAAa,OAAO;WAAE,GAAG;WAAG,YAAY,EAAE,OAAO;WAAO,EAAE;UAC3E,WAAU;UACV,CAAA,CACE,EAAA,CAAA;SACF;;OAIP,MAAiB,SAChB,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;QAAO,WAAU;kBAAmD;QAAc,CAAA,EAClF,kBAAC,SAAD;QACE,MAAK;QACL,aAAY;QACZ,OAAO,EAAQ;QACf,WAAW,MAAM,EAAW,EAAE,OAAO,EAAE,OAAO,OAAO,CAAC;QACtD,WAAU;QACV,CAAA,CACE,EAAA,CAAA;OAIP,MAAiB,YAChB,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;SAAO,WAAU;mBAAmD;SAE5D,CAAA,EACR,kBAAC,UAAD;SACE,OAAO,EAAW;SAClB,WAAW,MACT,GAAe,OAAO;UAAE,GAAG;UAAG,gBAAgB,EAAE,OAAO;UAAO,EAAE;SAElE,WAAU;mBALZ;UAOE,kBAAC,UAAD,EAAA,UAAQ,SAAc,CAAA;UACtB,kBAAC,UAAD,EAAA,UAAQ,cAAmB,CAAA;UAC3B,kBAAC,UAAD,EAAA,UAAQ,YAAiB,CAAA;UACzB,kBAAC,UAAD,EAAA,UAAQ,cAAmB,CAAA;UACpB;WACL,EAAA,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;SAAO,WAAU;mBAAmD;SAE5D,CAAA,EACR,kBAAC,SAAD;SACE,MAAK;SACL,aAAY;SACZ,OAAO,EAAW;SAClB,WAAW,MAAM,GAAe,OAAO;UAAE,GAAG;UAAG,QAAQ,EAAE,OAAO;UAAO,EAAE;SACzE,WAAU;SACV,CAAA,CACE,EAAA,CAAA,CACF;;OAIR,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,UAAD;SACE,MAAK;SACL,SAAS;SACT,WAAU;mBACX;SAEQ,CAAA,EACT,kBAAC,UAAD;SACE,MAAK;SACL,eAAe;AAEb,UADA,EAAgB,GAAM,EACtB,GAAY;;SAEd,WAAU;mBACX;SAEQ,CAAA,CACL;;OACF;;KACF,CAAA;IACF,CAAA;GAEG"}